2015-06-16 2 views
1

В моем приложении symfony2 я создал то, что необходимо для изменения локали. Теперь я могу использовать функции трансляции пакета и генерировать языковые файлы в приложениях/ресурсах/переводахsymfony2: как управлять вашими переводами

Это работает отлично, но я чувствую, что редактировать yml-файлы вручную не рекомендуется, и рекомендуется использовать xliff, который абсолютно не удобный.

Плюс, в совместной среде, я не вижу, как это может нормально работать. Я не уверен, что переводчики хотели бы git-команд.

Для тех, кто уже реализовал процесс перевода: как вы это сделали? как вы его организуете?

спасибо

+0

Вы должны взглянуть на [JMSTranslationBundle] (http://jmsyst.com/bundles/JMSTranslationBundle) –

+0

Я уже использую этот комплект. Я ищу больше, т.е. как эффективно реализовать процесс перевода после того, как вы сделаете извлечение –

ответ

0

Я использую только YAML файлы, но они находятся в каждой пачке, а не в папке приложения. Это лучший способ, если вы хотите получить чистый код. Если ваши файлы перевода находятся в папке приложения, вам необходимо извлечь содержимое для пакета, который вы хотите использовать в другом проекте.

Если вы используете хорошую среду IDE, такую ​​как PhpStorm, YAML не проблема и самый простой способ редактировать YAML. Не забывайте о плагине symfony для PhpStorm!

EDIT: Вы также можете использовать этот комплект. Он предоставляет веб-интерфейс для переводов: http://jmsyst.com/bundles/JMSTranslationBundle#documentation

0

Я реализовал управляемые переводы для одного из моих проектов, вы можете ссылаться на My answer, аналогично этому вопросу, что я сделал, создал службу, которая загружает все переводы из моего репозитория. у меня есть 2 объектов для этого

  1. языка

    Язык лицо имеет все языки, которые имеют 2 свойство локало и имя

    • locale (en, fr, ar ...)
    • имя (английский, французский ...)
  2. LanguageTranslation

    LanguageTranslation лицо имеет все переводы со свойствами

    • catalogue
    • перевода
    • язык (перевод)
    • languageToken (ключ для перевода)

Теперь все ваши переводы кэшируются Symfony в папке прода/Dev это каждый раз, когда пользователь обновляет или добавляет новый перевод я очистив кэш переводов программно я использовал сонатную администратора, поэтому я добавил вызов этой функции в prePersist и preUpdate вы можете также использовать доктрину прослушивателям событий prePersist/preUpdate для этого

private function clearLanguageCache(){ 
     $cacheDir = __DIR__ . "cache folder path"; /** path to app/cache*/ 
     $finder = new \Symfony\Component\Finder\Finder(); 
     $finder->in(array($cacheDir . "/dev/translations", $cacheDir . "/prod/translations"))->files();   
     foreach($finder as $file){ 
      unlink($file->getRealpath()); 
     } 
    } 

Эта часть отсутствует в моем предыдущем ответе для очистки кэша

1

Я JMSTransla tionBundle https://github.com/schmittjoh/JMSTranslationBundle для управления моими переводами по проекту. Вы используете обычный | trans для переменных, которые вы хотите перевести. И затем вы используете команду с app/console для этого пакета, и он создает ваши yml-файлы для вас (у вас есть возможность выбрать тип выходного файла). Он также имеет интерфейс перевода. И если вы добавляете новые слова, не проблема, вы просто перезапускаете команду, она добавляет новые слова к вашим существующим словам, не теряя исходный перевод.

Смежные вопросы