2016-09-25 17 views
0
私は config/params.phpを以下している

paramsは:Yii2翻訳は/

<?php 
$siteName = Yii::t('app','Site Name'); //previously, this value had been placed directly in the array just a try to make it available to the translation 
return [ 
    'adminEmail' => '[email protected]', 
    'siteName' => $siteName, 
    'textToPrint' => null, 
    'meta-description' => $siteName, 
]; 

Site Nameが既にある@app/messages/ar/app.phpで翻訳を持つメッセージを、翻訳がウェブサイト上で正常に動作しています。しかし

、私は次のようにメインのレイアウトにメタタグの記述を使用しよう:

<meta name="description" content="<?= Yii::$app->params['meta-description'] ?>" /> 

私はYii::$app->params['meta-description']に値を設定しているのであれば、任意のビューで、それはでプリントアウトする必要がありますそれに対して供給された値がないときは、config/params.phpで定義された初期値を出力しなければなりません。

問題は、初期値が翻訳なしで印刷されることです。私は2つの質問がある

<meta name="description" content="<?= Yii::t('app',Yii::$app->params['meta-description']) ?>" /> 

により、上記溶液に:これは、問題は、次のようなメインレイアウトで文字列を翻訳することにより解決することができるである文字列がで翻訳されていなかったのはなぜ

  1. config/params.php
  2. 多くの未翻訳文字列(私の場合、ビュー内で値Yii::$app->params['meta-description']を無効にすることにした場合)を使用すると、パフォーマンスに問題がありますか?

答えて

0

回答:

  1. config/params.phpファイルには、メインアプリケーションの初期化前にメイン設定と合併しますので。翻訳には\yii\i18n\I18Nコンポーネントが使用されます。

  2. Yii2::t()は重い方法ではありません。しかし、パフォーマンスに問題がある場合は、このメソッドをオーバーライドして、既存の文字列に対してのみYii:$app->getI18n()->translate()を実行するか、この値をキャッシュ可能にすることができます。

+1

1:言い換えれば、 'params.php'ファイルは翻訳機能よりも早くアクティブになります。 :) –

関連する問題