我有一个国际化的Angular项目,使用Angular内置的i18 n框架,其中的翻译文件如下所示:
消息.中文.xlf
<trans-unit id="7380085404224719862" datatype="html">
<source>Place a new request</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/foo.component.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
消息.de.xlf
<trans-unit id="7380085404224719862" datatype="html">
<source>Place a new request</source>
<target>Einen neuen Antrag stellen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/foo.component.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
其中messages.en.xlf是由ng extract-i18n
工具自动生成的源文件,其他翻译文件(如messages.de.xlf)是由人工翻译人员手动添加翻译后的副本。
据我所知,此工作流存在3个问题:
1.如果我在foo.component.html
的开头添加或删除了一些行,那么上述文件中引用的行号将发生变化。对于源文件,这将在我下次重新运行ng extract-i18n
工具时自动发生,但对于其他翻译文件,我需要手动更新它们吗?
1.如果我向应用程序添加新文本,这将导致源文件中出现新的<trans-unit>
,然后我需要手动将其复制到其他翻译文件中。
1.同样,如果我从应用程序中删除一个文本,我将需要从其他翻译文件中手动删除相应的<trans-unit>
。
很明显,所有3个问题都可能(而且应该)很容易被一些工具自动化,因为手动同步这些文件是非常耗时和容易出错的。然而,我震惊地看到IntelliJ似乎没有提供这个功能,我尝试过的所有i18 n/localization/xliff IntelliJ插件也是如此。我错过了什么吗?你用哪些工具来保持你的。xlf文件是否同步?
1条答案
按热度按时间flseospp1#
我正在使用ng-extract-i18n-merge,我对它的工作方式非常满意。它处理一切都非常透明,并提供了大量的配置。只要我改变了一个翻译id或内容,这些改变就会反映在我所有的
xlf
文件中,使它们保持完美的同步。当然这是一个开发依赖项,不是intellij的插件,但我想这并不重要。如果你需要一个编辑翻译的小工具,给予TinyTranslator。