149. interpolation
シェアしよう
少し工夫が必要 - accepted / - tried
i18nを対応したことありますか?
i18next を例にしよう。普通の場合は、キーとラベルの管理は別れている。このように:
{ "evaluation": "BFE.dev is {{evaluation}}"}
必要な場所で、キーを指定してデータを渡せば欲しい文字列が得られる。
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 "