149. interpolation
分享给更多人
中等难度 -通过 / -执行
在你的项目中有支持过i18n吗?
拿i18next 来举例。通常情况下会将key和翻译维护在别的地方。比如这样:
{ "evaluation": "BFE.dev is {{evaluation}}"}
然后在需要的地方,指定key以及需要的data即可得到想要的字符串。
t('evaluation', {evaluation: 'fantastic'});// "BFE.dev is fantastic"
好了,请完成一个类似的t()函数,并满足如下条件
1. 以{{
和}}
做区分
说明的更简单的话,就是说遇到新的{{
的时候,直到下一个}}
之前的字符串都将作为属性名。
其他的情况不当做关键字而是普通字符处理。
t('BFE.dev is {{{evaluation}', {evaluation: 'fantastic'});// "BFE.dev is {{{evaluation}"t('BFE.dev is {{{evaluation}}}', {'{evaluation': 'fantastic'});// "BFE.dev is fantastic}"t('BFE.dev is {{evalu ation}}', {'evalu ation': 'fantastic'});// "BFE.dev is fantastic"
2. 为传入data或者属性不存在的时候设为空字符串。
t('BFE.dev is {{evaluation}}');// "BFE.dev is "