Yii:如何使用translate Yii::t()和超链接

vd2z7a6w  于 2022-11-09  发布在  其他
关注(0)|答案(4)|浏览(194)

我的代码中有许多类似的行:

echo Yii::t('forms','Would you like to create a new item?');

在这里我想在“创建一个新项目”周围建立一个超链接。
以下是我考虑过的一些替代方案:
1.将URL拆分为2个翻译后的字符串,由超链接包围:

echo Yii::t('forms','Would you like to').' <a href="/new_item">'.Yii::t('forms','create a new item').'</a>?';

1.使用占位符,如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>?';

可能有一种更简单的方法可以做到这一点,但我一直无法找到首选的方法...构建包含URL的翻译字符串的最佳方法是什么?

q3qa4bjr

q3qa4bjr1#

我建议你这样解决:

echo Yii::t(
    'forms', 
    'Would you like to {link:create}create a new item{/link}?',
    array(
        '{link:create}'=>'<a href="/new_item">',
        '{/link}'=>'</a>',
    )
);

好处是如果你想把idclassonclick和更多的任何东西在a标签你可以这样做。所以翻译字符串在清除。
注意,{link:create}中的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>',
    )
);
t2a7ltrp

t2a7ltrp2#

根据目标语言的不同,链接在翻译后的字符串中可能会有不同的位置(开头、中间或结尾)和标签。因此,您应该只对URL使用占位符:

echo Yii::t(
  'forms', 
  'Would you like to <a href="{url}">create a new item</a>?', 
  array('{url}' => '/new_item')
);
dgiusagp

dgiusagp3#

如果您有动态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>',
);

或者,如果您要传递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"')
);
b5lpy0ml

b5lpy0ml4#

我认为这是一个更好的解决办法:

echo Yii::t(
    'forms',
    'Would you like to {action}?'
    [
        'action' => Html::a(
            Yii::t('forms', 'create a new item'),
            ['controller/action']
        )
    ]
);

此解决方案的优点

  • 您可以使用帮助器生成链接
  • 你可以修改你的html代码而不修改翻译
  • 不管是谁来做翻译,都不需要知道任何关于html的知识,他们也不能把html代码弄乱。

相关问题