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 "

始终思考更好的解决办法

(2)
(58)