まあ、私はあなたに私がしたことだけに基づいて私の視点を与えることができます。
は、翻訳に動作するような場所にあり、静的なコンテンツをお届けします
- のYii から国際化とメッセージシステムで管理非動的な文字列、。
- 翻訳されたルートをブートストラップされたクラスで動的に処理します。これにより、アプリケーションの構築時にこのルートを構築できます。
- 'title_en、title_es'のような翻訳をサポートする列を持つテーブルと、翻訳する必要があるテーブルを操作します。実際にあなたの管理インターフェースでは、yandexのようなものを使用して、このフィールドにコンテンツを翻訳するのに役立ちます。
今私は説明します:
を国際化Message Translationは、モデルをあなたのビュー内の文字列を翻訳上、およびブートストラップクラスのようないくつかの例に基づいています。
メッセージPHPファイルに保存されている文字列を翻訳する例として、Yii::t('app/main', 'Your name is {0}'
を使用します。
あなたが発言を翻訳すると、言語を変更したときに/ articlesや/ articulosのようなルートを使用するように、ルートを翻訳したいと思うでしょう。 この目的のために、あなたはBootstrapInterfaceを実装し、あなたのアプリをブートストラップするプロセスから呼び出されるクラスを構築したいと思っています。
これは設定例です。私はこの
namespace app\base;
use Yii;
use yii\base\BootstrapInterface;
class settings implements BootstrapInterface {
public function __construct() { }
public function bootstrap($app) {
/// Dynamic translated routes
$t_articles = Yii::t('app/route', 'articles');
$app->getUrlManager()->addRules([
'/'.$t_articles => '/articles',
], false);
}
}
のために使用し、«つまり、あなたの設定ファイルにクラスをブートストラップすることを忘れないでくださいPHPあなたのアプリを呼び出すときに、あなたを引くことができ
CREATE TABLE articles (
id INT,
title_en VARCHAR(20),
title_es VARCHAR(20)
);
:あなたのような翻訳されたテキストをサポートしてテーブルを作成したい場合があり、データベースからテキストを翻訳するweb.php»
'bootstrap' => [
'log',
'app\base\settings',
],
そして最後にアクション(のみの簡単な例)で、次のようなものを使用してデータ:
$articles = ArticlesA::find()->where(['id' => 1])->one();
$lang = $this->module->language;
return $thi
、S->レンダリング( 'インデックス'、[ '記事' => $記事を、 'LANG' => $ LANG]) ;
またはビュー内:
<p class="lead"><?=$articles['title_'.$lang]?></p>
私は、これは私が私のアプリを翻訳されている方法を説明したいと考えています。
このリンクを参照してくださいhttp://stackoverflow.com/questions/32831288/yii2-translation-does-not-work – vishuB
@vishubその答えは動的コンテンツを処理しません。 – TheStoryCoder
私はyii2-translate-managerを使用していますが、うまくいきますが、動的コンテンツは扱いません。 – TheStoryCoder