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



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

我的问题是:是否有一种自动的方法来生成翻译文件(s)在特定格式的Symfony2/Silex项目?

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

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

在网上搜索了很长时间后,我找到了一个不错的:

https://github.com/schmittjoh/JMSTranslationBundle

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

如果你的系统上安装了Gettext,你可以从你的"项目内部要翻译的文本"生成一个PO文件。命令行程序xgettext将扫描源文件,查找您正在使用的函数。

例子:
要扫描PHP文件以查找trans方法调用的实例,如这里所示,您可以使用以下命令—

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

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

我看到你已经找到了一个转换工具。你也可以试试我为Loco写的那篇。它支持PO到YAML, PO到XLIFF

忙碌人群的解决方案(UNIX)

在终端中可以执行如下命令:

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

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

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

我是说几乎…但是你通常可以在这里做一些工作…

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

不理想,但可以帮助!

grep options

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

(源)

最新更新