9

我一直在研究xliffpo i18n 文件格式,似乎它们被广泛使用和支持。有很多免费工具可以管理xliff/po文件中的翻译。

但是,到目前为止,我找不到一个很好的解决方案来解决如何在.net (C#/ASP.Net)项目中使用 xliff 或 po 文件。我希望有某种xliff/po => resx转换器,但到目前为止还没有找到。

然而,同时许多工具确实支持将xliff/po文件转换为 java .properties格式。

如果您有在 .Net 项目中通过 xliff 或 po 文件实现 l10n 的经验- 请提供建议并分享有关其工作原理的最佳实践。

PS:我更喜欢使用 xliff 格式,因为我发现它更简洁,功能范围更广,但 po 也是一种选择。

4

4 回答 4

10

您还可以考虑Daniel Crennai18n 包可从 nuGet 获得。它使用 PO 文件作为本地化文本的默认存储。

于 2012-03-14T06:05:36.930 回答
7

PO 和 XLIFF 文件的工作方式通常不同:

  • PO 文件是编译成二进制格式然后使用 gettext() 库访问的资源文件。有时 PO 被用作 XLIFF 之类的提取格式,但这不是它的初衷。

  • XLIFF 是通过将您的资源文件(例如 resx)提取到 XLIFF 中创建的提取文件,然后合并回原始格式。

所以对于 XLIFF,你应该寻找一个工具来做resx -> xliff -> resx而不是xlif -> resx.

提取/合并 XLIFF 文件的工具通常称为过滤器。有不少商业翻译工具可以接受 XLIFF,有些也可以创建 XLIFF(Swordfish、Trados Studio 等)。

还有一些开源工具可以提取/合并 XLIFF:例如 File2XLIFF4j(但我认为它不支持 resx)。

来自 Okapi 项目的 Rainbow 确实支持 resx。“旧” .net 版本(Rainbow 5:SourceForge 上的 Okapi)有一个专用于 resx 文件的过滤器,可以很好地处理它们;即使是二进制数据。不过,它可能会遇到第三方控件的问题(有关详细信息,请参阅http://okapi.sourceforge.net/Release/Filters/Help/netres.htm)。

新的 java 版本(Rainbow 6:http ://code.google.com/p/okapi/ )通过其 XML 过滤器支持 resx,并且可以与简单 resx 一起正常工作,但如果您在其中包含二进制数据,则这些条目中的文本将不被提取。

-ys

于 2011-12-10T13:09:50.400 回答
4

在 .resx 文件开始失控后,我使用 PO 来管理 .Net 项目。我将它用作“像 XLIFF 这样的提取格式” (参见Yves 评论。我们现有的 .resx 文件被导出/合并到每种语言的一个 .po 文件中,然后成为我们的权威语言文件,从中自动生成所有 resx 文件。

我做的项目不是ASP所以我不知道mcw0933提到的包,但是Mono的resgen.exe实现有一些简单的po <=> resx转换能力。但是,为了保留现有的评论并自动添加原始文本作为额外的评论,我将mono的转换工具扩展到我使用的那个基本上被重写的地步。

我将扩展的 .po <=> .resx 转换器放在 github 上

至于选择 .po 来管理 C# 项目的翻译,.po 简单友好,但使用它的方式与它在 gettext 中的原始使用方式略有不同会带来一些不便,我没有经验说它是否比 xliff 更好,但是能够管理翻译和自动化任务比处理 resx 文件要好得多,就像我们过去一样。

使用 PO 与它的意图略有不同的小不便:

  • 因为 gettext 使用 msgid 作为存储原始未翻译字符串的字段,所以我不得不让 resgenEx 将原始翻译字符串存档到附加的注释中,而不是为此目的设计的字段。
  • 一些工具假定 msgid 将包含原始的英文翻译(而不仅仅是一个 ID 字符串),这可能意味着该工具的自动错误检查选项不是很有用,或者它可能意味着让您选择不同的工具,等等。不过,大多数工具都没有做出任何假设。
  • 一些 .po 工具,例如 \n 而不是 \r\n

我最初为其编写 resgenEx 的项目有两个 .resx 文件和一个 .isl 文件,用于每种支持的语言,但很快我将需要管理一个 .Net 项目的所有翻译,该项目对代码中的每个类都有多个 resx 文件。发生这种情况时,我将决定是否应该继续使用 .po 或是否应该使用 xliff 或其他东西。如果我继续使用 .po,那么我将清理 resgenEx 并且可能需要添加更多功能,例如自动将程序集名称和类名前缀添加到 msgid 的能力。

于 2014-03-19T12:09:58.900 回答
0

查看xliff-tasks。该工具xliff从.resxxliff

于 2020-08-27T10:45:59.640 回答