在我的 symfony2 应用程序中,我已经设置了更改语言环境所需的内容。现在我可以使用 bundle 的 trans 功能并在 app/resources/translations 下生成语言文件
这很好用,但我觉得手动编辑 yml 文件效率不高,建议使用绝对不友好的 xliff。
另外,在协作环境中,我看不出这如何正常工作。我不确定翻译人员是否喜欢 git 命令。
对于那些已经实施了翻译流程的人:你们是怎么做的?你是怎么组织的?
非常感谢
在我的 symfony2 应用程序中,我已经设置了更改语言环境所需的内容。现在我可以使用 bundle 的 trans 功能并在 app/resources/translations 下生成语言文件
这很好用,但我觉得手动编辑 yml 文件效率不高,建议使用绝对不友好的 xliff。
另外,在协作环境中,我看不出这如何正常工作。我不确定翻译人员是否喜欢 git 命令。
对于那些已经实施了翻译流程的人:你们是怎么做的?你是怎么组织的?
非常感谢
我使用 JMSTranslationBundle https://github.com/schmittjoh/JMSTranslationBundle来管理我的项目翻译。您对要翻译的变量使用通常的 |trans。然后你使用一个带有 app/console 的命令来为这个包构建你的 yml 文件(你可以选择输出文件类型)。它还有一个翻译用户界面。如果您添加新词,没问题,您只需重新运行命令,它会将新词添加到您现有的词中,而不会丢失原始翻译。
我只使用 YAML 文件,但它们位于每个包中,而不是在 app 文件夹中。如果您想获得干净的代码,这是更好的方法。如果您的翻译文件位于 app 文件夹中,您需要提取要在另一个项目中使用的捆绑包的内容。
如果你使用像 PhpStorm 这样好的 IDE,YAML 是没有问题的,也是编辑 YAML 的最简单方法。不要忘记 PhpStorm 的 symfony 插件!
编辑:您也可以使用此捆绑包。它为翻译提供了一个 Web 界面:http: //jmsyst.com/bundles/JMSTranslationBundle#documentation
我已经为我的一个项目实施了可管理的翻译,您可以参考My answer
与此主题类似的内容
语
语言实体包含具有 2 个属性 locale 和 name 的所有语言
语言翻译
LanguageTranslation 实体包含所有具有属性的翻译
现在你的所有翻译都被 symfony 缓存在 prod/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());
}
}
我之前清除缓存的答案中缺少这部分