16

次のチェックリストを実行しました。

  1. 形式 domain.lang.loader を考慮して作成された翻訳ファイル
  2. クリアされたキャッシュ
  3. 言語カタログがキャッシュフォルダーに作成されていることを確認しました

私のtwigテンプレートファイルでは、

{{ 'message'|trans }}

決して翻訳しません。

翻訳を機能させるには、次にどこを見ればよいですか?

私が使用しているDoctrine Translatable Extensionが何らかの競合を引き起こす可能性はありますか?

4

8 に答える 8

7

翻訳の 1 つを使用できましたが、もう 1 つを使用できず、理由がわかりませんでした。翻訳に困っている方はこちらをお読みください。

まず、標準チェックリスト:

  • トランスレータを有効にして構成したことを確認してください。
  • 翻訳が適切な場所にあり、適切な命名規則に従っていることを確認してください( domain(messages by default).lang_code.file_format )。
  • コマンドを使用してキャッシュをクリアしphp app/console cache:clearます。
  • コントローラーで手動で呼び出してみてください。コントローラーで直接$this->getRequest()->setLocale('en');使用することもできます。$this->get('translator')->trans('Some message');
  • それでもうまくいかない場合は、翻訳済みファイルに BOM が含まれていないことを確認してください。それが私の場合でした。

BOM翻訳されたファイルに注意してください。yml ファイルを翻訳する翻訳者は UTF8 を使用しましたが、彼が使用したエディターはファイルの先頭に BOM を残しました。ファイルの最初のセクションに目に見えない文字がいくつか追加されるため、おそらくPHP の UTF8 BOM バグが原因で、これは危険です。

ところで、翻訳のデバッグも非常に役立つ場合があります。

于 2015-03-10T21:53:20.770 に答える
0

同じ問題に直面し$this->get('translator')->setLocale('fr');、コントローラーアクションで修正しました。{_locale}ルートパスを追加して修正しました。

于 2015-01-30T17:35:27.333 に答える