Перевод Symfony2 в веточку с использованием CsvFileLoader

Я хочу реализовать перевод в Symfony2, используя csvFileLoader. В config.yml поле перевода включено и локаль установлена ​​на fr.
Я написал следующий код в контроллере.

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

Выше код работает нормально. Если я использую тэг trans в ветке, то текст не переводится. Даже я добавляю веточки расширения: —

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

И код в поле зрения в файле ветки

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

Выше текст не переведен в веточку. Я попробовал это, используя файл .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"

Надеюсь, поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]