我正在使用命令行工具(
然后我假设,如果我想翻译我的应用程序,我需要执行
在翻译了一些虚拟文本并运行应用程序后,我发现它按预期工作,所以我停止翻译并继续开发应用程序。过了一段时间,我添加了更多的 i18n 字符串,最终认为我必须更新模板。这就是事情变得难以维护的地方。我更新了模板
当我使用.po文件进行开发时,由于像poEdit这样的好工具,这是没有问题的,但是我没有找到任何与.xlf相媲美的东西。尝试了一些工具后,我认为最好的选择是Lokalize,但我也没有找到将模板文件合并到已翻译(但过时)文件的可能性。
感谢您提前提供的任何帮助,我非常感激。
ng-xi18n
)从我编写的 Angular 2 应用中提取 i18n 字符串。该命令的输出是一个 messages.xlf
文件。由于之前使用过 .po
,并且不熟悉 .xlf
,我假设该文件相当于 .pot
文件(如果我错了,请纠正我)。然后我假设,如果我想翻译我的应用程序,我需要执行
cp messages.xlf messages.de.xlf
命令来复制模板文件(messages.xlf
),然后在德语中翻译每个消息(因此是 .de.xlf
)。在翻译了一些虚拟文本并运行应用程序后,我发现它按预期工作,所以我停止翻译并继续开发应用程序。过了一段时间,我添加了更多的 i18n 字符串,最终认为我必须更新模板。这就是事情变得难以维护的地方。我更新了模板
messages.xlf
文件,并迅速思考如何将新字符串更新到已经翻译好的 messages.de.xlf
文件中而不会丢失进度。当我使用.po文件进行开发时,由于像poEdit这样的好工具,这是没有问题的,但是我没有找到任何与.xlf相媲美的东西。尝试了一些工具后,我认为最好的选择是Lokalize,但我也没有找到将模板文件合并到已翻译(但过时)文件的可能性。
到目前为止,这更像是一篇文章而不是一个问题,所以这里是一个快速总结:
- 处理
.xlf
文件的工作流程是否真的可以与我最初认为的.po
相比(如上所述),还是完全不同的? - 我应该如何更新已经翻译好的文件?
- 处理
.xlf
文件的最佳实践是什么? - 有哪些概念证明工具可用于处理
.xlf
?
旁注:
- Lokalize手册完全没有用。我看到了很多听起来很有前途的功能,比如:
- "文件" > "从模板更新文件"。我在手册中找不到任何解释这个功能的内容。如果我点击这个选项,什么也没发生。
- "同步" > "打开同步/合并文件"。这似乎是一个将两个相似文件(由多个翻译者)合并的功能,而不是一个从模板更新翻译文件的工具。尽管Lokalize的主同步选项卡中有一个工具提示,通知我有“x个不匹配的条目”,但我就是找不到任何方法将这些不匹配的条目附加到我的
.de.xlf
文件中。 - [更新] 结果,我遇到了与this question中类似的问题。在将Lokalize版本降级到建议的版本后,许多问题(包括问题中提到的问题)都消失了。然而,现在“从模板更新文件”选项变灰了,我不知道为什么。
- 我还尝试了OmegaT,在我的平台(Ubuntu 16.04)上根本不起作用。
- [更新] Virtaal非常适合从模板合并新字符串,但整体界面设计非常糟糕...
- 谷歌搜索没有帮助,因为每个搜索结果似乎都与XCode或其他东西有关。
感谢您提前提供的任何帮助,我非常感激。
ng-xi18n
:这不是对问题的有益补充,也不是对此问题的回答,所以我将其添加到评论中。事实证明,ng-xi18n
cli 工具有一个选项(在我撰写本文时未正确工作),可以为任何语言生成.xlf
文件。因此,不需要模板文件。有关更多信息,请参见此处。只是想添加这个,以防有人发现这个答案,并特别需要ng-xi18n
的解决方案。 - CharlyDeltang-xi18n
的更新:今天早些时候已经开放了一份 i18n 文档的 MR:https://github.com/angular/angular.io/pull/2309 - CharlyDeltang-xi18n
也没有我期望的功能。(即使有一个开发者声称ng-xi18n
有生成多个翻译文件的选项,但我并没有找到相关的内容。)似乎你只能生成messages.xlf
文件,然后需要手动将__所有内容__合并到现有的翻译文件中(因为缺乏可用的工具)。 - CharlyDelta