我的代码中有许多与此相似的行:
echo Yii::t('forms','Would you like to create a new item?');
我想在附近超链接"创建一个新项目",作为一个例子。
以下是我考虑过的一些替代方案:
将网址拆分为2个已翻译的字符串,并以超链接包围:
echo Yii::t('forms','Would you like to').' <a href="/new_item">'.Yii::t('forms','create a new item').'</a>?';
使用占位符,如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>?';
这可能是一种更简单的方法,但我一直无法找到首选方法......构建包含网址的翻译字符串的最佳方法是什么?
答案 0 :(得分:7)
我建议你这个解决方案:
echo Yii::t(
'forms',
'Would you like to {link:create}create a new item{/link}?',
array(
'{link:create}'=>'<a href="/new_item">',
'{/link}'=>'</a>',
)
);
如果您想要id
,class
,onclick
以及a
标记中的更多内容,您可以做到这一点。所以翻译字符串清晰
请注意create
中的{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>',
)
);
答案 1 :(得分:5)
链接可能具有不同的位置(开头,中间或结尾),并根据目标语言在翻译后的字符串中添加标签。因此,您应该仅为url使用占位符:
echo Yii::t(
'forms',
'Would you like to <a href="{url}">create a new item</a>?',
array('{url}' => '/new_item')
);
答案 2 :(得分:1)
如果您有动态uri,请使用以下内容:
echo Yii::t(
'forms',
'Would you like to <a href=":url">create a new item?</a>',
array(':url'=>'/new_item')
);
或者:
echo Yii::t(
'forms',
'Would you like to <a href="/new_item">create a new item?</a>',
);
或者,如果要传递除网址之外的其他动态属性,请使用以下命令:
echo Yii::t(
'forms',
'Would you like to <a :linkAttr>create a new item?</a>',
array('linkAttr'=>'href="/new_item" id="link-id" class="link-class"')
);
答案 3 :(得分:1)
我认为这是一个更好的解决方案:
equivalence
此解决方案的优点