Yii:如何使用translate Yii::t()和超链接
我的代码中有许多类似的行:Yii:如何使用translate Yii::t()和超链接,yii,Yii,我的代码中有许多类似的行: echo Yii::t('forms','Would you like to create a new item?'); 例如,我想在“创建一个新项目”附近建立超链接 以下是我考虑过的一些备选方案: 将URL拆分为两个翻译字符串,并用超链接包围: echo Yii::t('forms','Would you like to').' <a href="/new_item">'.Yii::t('forms','create a new item').'<
echo Yii::t('forms','Would you like to create a new item?');
例如,我想在“创建一个新项目”附近建立超链接
以下是我考虑过的一些备选方案:
echo Yii::t('forms','Would you like to').' <a href="/new_item">'.Yii::t('forms','create a new item').'</a>?';
echo Yii::t('forms','will you like');
echo Yii::t('forms','you want{url}create a new item',array('{url}'=>“?”;
可能有一种更简单的方法可以做到这一点,但我一直无法找到首选的方法…构建包含URL的翻译字符串的最佳方法是什么?链接可能有不同的位置(开头、中间或结尾)和标签。因此,您应该仅对url使用占位符:
echo Yii::t(
'forms',
'Would you like to <a href="{url}">create a new item</a>?',
array('{url}' => '/new_item')
);
echo Yii::t(
"表格",,
“你愿意吗?”,
数组('{url}'=>'/new_item')
);
如果您有动态uri,请使用以下命令:
echo Yii::t(
'forms',
'Would you like to <a href=":url">create a new item?</a>',
array(':url'=>'/new_item')
);
echo Yii::t(
"表格",,
“你愿意吗?”,
数组(':url'=>'/new_item')
);
或:
echo Yii::t(
"表格",,
“你愿意吗?”,
);
或者,如果要传递url以外的其他动态属性,请使用以下命令:
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"')
);
echo Yii::t(
"表格",,
'是否要创建新项目?',
数组('linkAttr'=>'href=“/new_item”id=“link id”class=“link class””)
);
我向您建议以下解决方案:
echo Yii::t(
'forms',
'Would you like to {link:create}create a new item{/link}?',
array(
'{link:create}'=>'<a href="/new_item">',
'{/link}'=>'</a>',
)
);
echo Yii::t(
'forms',
'Would you like to {action}?'
[
'action' => Html::a(
Yii::t('forms', 'create a new item'),
['controller/action']
)
]
);
我认为这是一个更好的解决方案:
echo Yii::t(
'forms',
'Would you like to {link:create}create a new item{/link}?',
array(
'{link:create}'=>'<a href="/new_item">',
'{/link}'=>'</a>',
)
);
echo Yii::t(
'forms',
'Would you like to {action}?'
[
'action' => Html::a(
Yii::t('forms', 'create a new item'),
['controller/action']
)
]
);
此解决方案的好处
- 您可以使用帮助程序生成链接
- 您可以在不修改翻译的情况下修改html代码
- 无论谁做翻译都不需要知道任何关于html的知识,他们也不能弄乱html代码
是否会被Yii:t()去掉函数?@ews2001不,它们不会被剥离。你必须包括例如“你愿意吗?”=>“你愿意吗?”。@Tip:我发现通过检查yii框架核心翻译消息文件来学习类似的翻译技巧非常有用。@Nimir是的,没错。不同的语言可能对文件的位置和文本有非常不同的需求链接,因此这是实现极大灵活性的唯一方法array(“{url}=>”/new_item”)必须是array('url'=>“/new_item'))我不建议这样做,因为您不能将特定于某个主题的id
,class
,onclick
,放在a
标记中。我建议您使用此解决方案:如果您只关心url,您可以使用我的解决方案,但如果您想传递其他属性,这是一种比您提到的更简单的方法ed是:echo Yii::t('forms','you like to create a new item?',array('linkAttr'=>'href=“/new_item”id=“link id”class=“link class=”link class“));
这种方法也有缺点-将一个短语拆分为两个单独的翻译字符串会使翻译更加困难。
echo Yii::t(
'forms',
'Would you like to {action}?'
[
'action' => Html::a(
Yii::t('forms', 'create a new item'),
['controller/action']
)
]
);