2017-08-07 1 views
0

Je veux implémenter la traduction dans Symfony2 en utilisant csvFileLoader. Dans le champ de traduction config.yml, le champ est activé et les paramètres régionaux sont définis sur fr. J'ai écrit le code suivant dans le contrôleur.Traduction de Symfony2 dans twig en utilisant CsvFileLoader

$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'); 

Le code ci-dessus fonctionne correctement. Si j'utilise trans tag dans twig alors le texte n'est pas traduit. Même ajouter extentions brindille: -

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

Et le code à Witten dans le fichier brindille

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

Au-dessus du texte ne se traduit pas en brindille. Je l'ai essayé en utilisant le fichier .xlf alors cela fonctionne mais pour la traduction de fichier .csv ne fonctionne pas. Besoin d'une solution pour le problème mentionné ci-dessus.

Répondre

0

Controller:

/** 
* @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); 
} 

Brindille:

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

Traduction fichiers CSV

=>file_en.csv

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

=>file_fr.csv

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

Hope it helps.