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

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 に答える