【发布时间】:2016-09-06 13:24:46
【问题描述】:
我正在使用命令行工具 (ng-xi18n) 从我编写的 angular 2 应用程序中提取 i18n 字符串。该命令的输出是一个messages.xlf 文件。来自.po 背景,不熟悉.xlf,我认为这个文件等同于.pot 文件(如果我错了,请纠正我)。
然后我假设如果我想翻译我的应用程序,我必须 cp messages.xlf messages.de.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 非常适合从模板中合并新字符串,但总体而言,UI 的设计非常糟糕...
- 谷歌搜索没有帮助,因为每次点击似乎都与 XCode 或其他东西有关。
提前感谢您的帮助,我真的很感激
【问题讨论】:
-
关于
ng-xi18n:这既不是对问题的有益补充,也不是对这个问题的回答,所以我将其添加到 cmets 中。事实证明,ng-xi18ncli 工具有一个选项(在我写这篇文章时它不能正常工作)为任何语言生成.xlf文件。所以不需要模板文件。有关更多信息,请参阅here。只是想添加这个以防有人找到这个答案并且特别需要ng-xi18n的解决方案 -
关于
ng-xi18n更新:今天早些时候打开了 i18n 文档的 MR:github.com/angular/angular.io/pull/2309 -
您能否提供更多关于 OmegaT 发生了什么的信息?它需要 Java,但应该可以在 16.04 上运行。
-
问题是,我什至不能创建一个新项目。当我点击按钮选择一个文件夹时,OmegaT 就完全冻结了。那时我什至不能强制退出 OmegaT。
java -version输出:$ java -version java version "1.7.0_101" OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-0ubuntu0.15.10.1) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode) -
顺便说一句,如果我从命令行使用
omegat启动 OmegaT,控制台中不会出现错误。它只是静静地冻结
标签: xliff