4

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

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>?';
    
  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>?';
    

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

4

4 回答 4

8

我建议你这个解决方案:

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您可以这样做。所以翻译字符串是清晰的。 请注意,in只是一个指向超链接字符串的理想字符串。onclicka
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>',
    )
);
于 2014-03-13T13:00:20.050 回答
5

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

echo Yii::t(
  'forms', 
  'Would you like to <a href="{url}">create a new item</a>?', 
  array('{url}' => '/new_item')
);
于 2012-09-12T03:03:44.933 回答
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>',
);

或者,如果您想传递 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"')
);
于 2013-04-18T08:59:14.000 回答
1

我认为这是一个更好的解决方案:

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

此解决方案的好处

  • 您可以使用助手来生成您的链接
  • 您可以在不修改翻译的情况下修改您的 html 代码
  • 做翻译的人不需要知道任何关于 html 的知识,也不会弄乱 html 代码。
于 2019-08-26T10:59:54.510 回答