我的代码中有许多与此类似的行:
echo Yii::t('forms','Would you like to create a new item?');
Run Code Online (Sandbox Code Playgroud)
作为一个例子,我想在"创建一个新项目"周围进行超链接.
以下是我考虑过的一些替代方案:
将URL拆分为2个翻译的字符串,由超链接包围:
echo Yii::t('forms','Would you like to').' <a href="/new_item">'.Yii::t('forms','create a new item').'</a>?';
Run Code Online (Sandbox Code Playgroud)使用占位符,如Yii文档中所述(http://www.yiiframework.com/doc/guide/1.1/en/topics.i18n虽然未给出超链接作为显式示例):
echo Yii::t('forms','Would you like to {url}create a new item',array('{url}'=>"<a href='/new_item'>")).'</a>?';
Run Code Online (Sandbox Code Playgroud)这可能是一种更简单的方法,但我一直无法找到首选方法......构建包含URL的翻译字符串的最佳方法是什么?
我建议你这个解决方案:
echo Yii::t(
'forms',
'Would you like to {link:create}create a new item{/link}?',
array(
'{link:create}'=>'<a href="/new_item">',
'{/link}'=>'</a>',
)
);
Run Code Online (Sandbox Code Playgroud)
好处是,如果你想放id,class,onclick和更多的东西a标签,你可以做到这一点.所以翻译字符串清晰.
请注意,createin {link:create}只是指向超链接字符串的理想字符串.
另一个高级样本:
echo Yii::t(
'forms',
'Would you like to {link:create}create a new item{/link}? And you can {link:delete}delete the item{/link}.',
array(
'{link:create}'=>'<a href="/new_item" class="button">',
'{link:delete}'=>'<a href="#" id="item-21" onclick="delete(21);">',
'{/link}'=>'</a>',
)
);
Run Code Online (Sandbox Code Playgroud)
链接可以具有不同的放置(开始,中间或结尾),并且根据目标语言在翻译的字符串中标记.因此,您应该仅为url使用占位符:
echo Yii::t(
'forms',
'Would you like to <a href="{url}">create a new item</a>?',
array('{url}' => '/new_item')
);
Run Code Online (Sandbox Code Playgroud)