2015-06-16 31 views
1

在我的symfony2应用程序中,我已经设置了改变语言环境的必要条件。 现在我可以使用捆绑的跨功能和产生下的应用程序/资源/翻译的语言文件symfony2:如何管理你的翻译

这工作正常,但我觉得这是没有效率的手工编辑YML文件,它建议使用XLIFF这是绝对不是用户友好的。

另外,在一个协作环境中,我看不出如何正确工作。我不确定译员会喜欢git命令。

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

非常感谢

+0

你应该看看[JMSTranslationBundle](http://jmsyst.com/bundles/JMSTranslationBundle) –

+0

我已经使用这个包。我正在寻找更多,即。一旦提取出来,如何有效地实施翻译过程 –

回答

0

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

如果您使用像PhpStorm这样的好IDE,YAML是没有问题的,也是编辑YAML最简单的方法。不要忘记PhpStorm的symfony插件!编辑: 你也可以使用这个包。它提供了翻译的web界面:http://jmsyst.com/bundles/JMSTranslationBundle#documentation

0

我已经实现了管理的翻译我的项目,你可以参考My answer类似这样的话题我做了什么我已经创建了加载所有的翻译从我的资料库服务的一个。我有2个实体此

  1. 语言

    语言实体持有所有这些都有2个属性语言环境的语言和名称

    • locale(en,fr,ar ...)
    • name(english,french ...)
  2. LanguageTranslation

    LanguageTranslation实体包含所有与性能

    • catalogue
    • 翻译
    • 语言(译语)
    • languageToken(键转换)
    • 翻译

现在所有的翻译由symfony的正式版的/ dev文件夹,这样当用户更新或添加新的翻译我已编程方式清除翻译缓存我使用奏鸣曲管理员,所以我增加了一个调用这个函数每次缓存在prePersistpreUpdate你也可以使用学说事件侦听器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来管理我的项目翻译。您对想要翻译的变量使用通常的翻译。然后你使用一个带有app/console的命令来处理这个包,它为你构建你的yml文件(你可以选择输出文件类型)。它也有翻译用户界面。如果您添加新单词,没有问题,您只需重新运行命令,它会将新单词添加到现有单词中,而不会丢失原始翻译。