如何从Symfony2 / Silex项目生成翻译文件(.po,.xliff,.yml,...)?

时间:2013-04-22 05:18:41

标签: symfony translation silex xliff

我要构建一个Silex / Symfony2项目,我一直在寻找一种方法来生成XLIFF / PO / YAML翻译文件,这些文件基于项目内的待翻译文本,但没有找到任何指令或文档。它

我的问题是:是否有自动方式为Symfony2 / Silex项目生成特定格式的翻译文件?

如果是,请告诉我如何生成文件,然后在此之后更新翻译。

如果不是,请告诉我如何创建翻译文件,然后为我的项目添加更多文本?我正在寻找基于编辑器的桌面或基于网络而不是使用普通编辑器,如Transifex,GetLocalization(但他们没有选项来创建新文件或添加更多文本)

3 个答案:

答案 0 :(得分:11)

经过很长一段时间搜索互联网,我找到了一个好的:

https://github.com/schmittjoh/JMSTranslationBundle

答案 1 :(得分:6)

我看到你找到了转换器,但要回答关于生成初始翻译文件的第一个问题 -

如果您的系统上安装了Gettext,则可以从“项目内的待翻译文本”生成PO文件。命令行程序xgettext将扫描源文件,查找您正在使用的任何函数。

例:
要扫描PHP文件以查找trans方法调用as shown here的实例,您可以使用以下命令 -

find . -name "*.php" | xargs xgettext --language=PHP --keyword=trans --output=messages.pot

关于编辑的问题:
您可以使用任何PO编辑器(例如POEdit)来管理您的翻译,但正如您所说,您最终需要将PO文件转换为Symfony的XLIFF或YAML语言包。

我看到你已经找到了转换工具。您可能也想尝试我为Loco写的那个。它支持PO to YAMLPO to XLIFF

答案 2 :(得分:1)

忙碌人士的解决方法(UNIX)

您可以在终端中运行以下命令:

$ grep -rEo --no-filename "'.+'\|\btrans\b" templates/ > output.txt

这将输出要翻译的消息列表:

'Please provide your email'|trans
'Phone'|trans
'Please provide your phone number'|trans
...

我的意思是差不多......但你通常可以从这里做一些工作......

显然你必须根据自己的喜好调整命令(transchoice,双引号而不是单引号...)。

不理想但可以提供帮助!

grep选项

  • grep -R, -r, --recursive:读取每个目录下的所有文件,递归地这相当于-d递归选项。
  • grep -E, --extended-regexp:将PATTERN解释为扩展正则表达式。
  • grep -o, --only-matching:仅显示与PATTERN匹配的匹配行的部分。
  • grep -h, --no-filename:在搜索多个文件时,禁止输出文件名的前缀。

source