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

ews*_*001 3 yii

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

echo Yii::t('forms','Would you like to create a new item?');
Run Code Online (Sandbox Code Playgroud)

作为一个例子,我想在"创建一个新项目"周围进行超链接.

以下是我考虑过的一些替代方案:

  1. 将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)
  2. 使用占位符,如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的翻译字符串的最佳方法是什么?

Nab*_*.Z. 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>',
    )
);
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)


gal*_*han 5

链接可以具有不同的放置(开始,中间或结尾),并且根据目标语言在翻译的字符串中标记.因此,您应该仅为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)

  • 数组('{url}' =&gt; '/new_item') 必须是数组('url' =&gt; '/new_item') (3认同)