2017-08-07 7 views
0

私はsymfony2でcsvFileLoaderを使って翻訳を実装したいと思います。 config.ymlの翻訳フィールドが有効になり、ロケールがfrに設定されます。 コントローラに次のコードを記述しました。CsvFileLoaderを使ったtwigでのsymfony2の翻訳

$file = //file path eg: messages.fr.csv; 
    $loader = new CsvFileLoader($file); 
    $loader->setCsvControl(','); 
    $x = $loader->load($file, 'fr'); 
    $translator = new Translator('fr',new MessageSelector()); 
    $translator->addLoader('csv', $loader); 
    $translator->addResource('csv', $file, 'fr','messages'); 
    $translator->trans('Symfony is great'); 

上記のコードは正常に動作します。 twigでtransタグを使うと、テキストは翻訳されません。でも、私は小枝のextentions追加: -

{% trans %}Symfony2 is great{% endtrans %} 

テキストの上に小枝ファイルにウィッテンで

$loader = new \Twig_Loader_Filesystem("path to twig template file"); 
    $twig = new \Twig_Environment($loader); 
    $twig->addExtension(new TranslationExtension($translator)); 

とコードが小枝に翻訳されていません。私は.xlfファイルを使って試してみましたが、.csvファイルの変換は機能しません。 上記の問題の解決策が必要です。

答えて

0

コントローラー:

/** 
* @Route("{_locale}/translate1") 
*/ 
public function showTwoAction(Request $request) 
{ 
    $delimiter = ";"; 
    $enclosure = '"'; 
    $escape = '\\'; 
    $file = __DIR__.'/file_'.$request->getLocale().'.csv';  


    $translator = new Translator($request->getLocale(), new MessageSelector()); 
    $translator->addLoader('csv', new CsvFileLoader()); 
    $translator->addResource('csv', $file, $request->getLocale()); 
    $catalogue = $translator->getCatalogue($request->getLocale()); 
    $messages = $catalogue->all(); 

    while ($catalogue = $catalogue->getFallbackCatalogue()) 
    { 
     $messages = array_replace_recursive($catalogue->all(), $messages); 
    } 

    return $this->render("PRIYACoreTranslateBundle:Default:translate.html.twig",$messages); 
} 

小枝:

{{ messages.Hi }} 
{{ messages.Hello }} 

翻訳CSVファイル

=>file_en.csv

"Hi";"Hi" 
"Hello";"Hello" 

=>file_fr.csv

"Hi";"salut" 
"Hello";"Bonjour" 

それがお役に立てば幸いです。

関連する問題