symfony2:如何管理您的翻译

时间:2015-06-16 10:44:17

标签: symfony translation locale xliff

在我的symfony2应用程序中,我已经设置了更改区域设置所需的内容。 现在,我可以使用捆绑包的trans功能,并在app / resources / translations

下生成语言文件

工作正常,但我认为手动编辑yml文件效率不高,建议使用xliff,这绝对不是用户友好的。

另外,在协作环境中,我不知道这是如何正常运作的。我不确定译员会喜欢git命令。

对于那些已经实施翻译流程的人:你是怎么做到的?你是如何组织它的?

非常感谢

3 个答案:

答案 0 :(得分:1)

我使用JMSTranslationBundle https://github.com/schmittjoh/JMSTranslationBundle来管理我在项目上的翻译。您可以对要翻译的变量使用通常的| trans。然后你使用带有app / console的命令来为这个包,它为你构建你的yml文件(你可以选择输出文件类型)。它还有一个翻译UI。如果您添加新单词,没有问题,您只需重新运行该命令,它会将新单词添加到现有单词而不会丢失原始翻译。

答案 1 :(得分:0)

我只使用YAML文件,但它们位于每个捆绑包中,而不是在app文件夹中。如果您想获得干净的代码,这是更好的方法。如果您的翻译文件位于app文件夹中,则需要提取要在另一个项目中使用的包的内容。

如果您使用像PhpStorm这样的好IDE,YAML就没有问题,也是编辑YAML的最简单方法。别忘了PhpStorm的symfony插件!

编辑: 您也可以使用此捆绑包。它为翻译提供了一个网络界面:http://jmsyst.com/bundles/JMSTranslationBundle#documentation

答案 2 :(得分:0)

我为我的一个项目实现了可管理的翻译,你可以参考My answer类似于我已经完成的主题我已经创建了一个服务,它加载了我的存储库中的所有翻译。我有2个实体用于此

  1. 语言

    语言实体包含具有2个属性区域设置和名称

    的所有语言
    • locale(en,fr,ar ...)
    • 姓名(英语,法语......)
  2. LanguageTranslation

    LanguageTranslation实体包含所有带属性的翻译

    • catalogue
    • 翻译
    • 语言(翻译语言)
    • languageToken(翻译密钥)
  3. 现在所有的翻译都被symfony在prod / dev文件夹中缓存,所以每次用户更新或添加新翻译时我都会以编程方式清除翻译缓存我使用的是sonata admin,所以我在{{1}中添加了对此函数的调用}和prePersist你也可以使用doctrine事件监听器preUpdate来实现这个

    prePersist/preUpdate

    我之前的清除缓存的答案中缺少此部分