我要构建一个Silex / Symfony2项目,我一直在寻找一种方法来生成XLIFF / PO / YAML翻译文件,这些文件基于项目内的待翻译文本,但没有找到任何指令或文档。它
我的问题是:是否有自动方式为Symfony2 / Silex项目生成特定格式的翻译文件?
如果是,请告诉我如何生成文件,然后在此之后更新翻译。
如果不是,请告诉我如何创建翻译文件,然后为我的项目添加更多文本?我正在寻找基于编辑器的桌面或基于网络而不是使用普通编辑器,如Transifex,GetLocalization(但他们没有选项来创建新文件或添加更多文本)
答案 0 :(得分:11)
经过很长一段时间搜索互联网,我找到了一个好的:
答案 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 YAML和PO 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)