3

我正在开发一个正在翻译的 Play 2 应用程序。PlayMessageFormat在幕后使用 Java,所以我有相当多的属性值,ala:

my.interface.key={0,choice,0#{0} families|1#1 family|1<{0,number,integer} families}

我刚刚收到了以下形式的翻译:

my.interface.key={0,choix,0#{0} familles|1#1 famille|1<{0,nombre,entier} familles}

如果不是很明显,有些部分不应该翻译,但时常会发生错误。这很公平,但我确信在我的应用程序在运行时崩溃之前必须有一种方法来验证这些字符串并出现IllegalArgumentException: unknown format type at ...异常。最好使用 Git 提交挂钩,甚至是 SBT 构建任务。

如果我要自己解决这个问题,我可能会制作一个工具来读取这些属性文件并检查每个值是否运行MessageFormat.format(value)不会崩溃。

理想情况下,我可以通过 Perl(或 Python)脚本来做到这一点。可悲的是,我能找到的唯一非 Java 库 - CPAN 上的Text::MessageFormat - 似乎不支持最容易出错的格式,例如复数形式。

在我深入研究之前,任何人都可以根据现有工具提出更明智的方法吗?

4

1 回答 1

0

我们遇到了类似的问题。我们的解决方案是创建对消息格式结构建模的类,然后使用 XML 在我们的消息包中定义消息。

如果翻译者使用 XML 编辑器,那么就有希望他们不会“破坏”消息的结构。

有关详细信息,请参阅此答案

于 2020-09-22T17:28:53.853 回答