你如何维护你的多语言应用程序?

时间:2008-10-10 04:50:13

标签: desktop-application multilingual

如何更新程序中的语言字符串是最新的? 有便宜的方式吗?在哪里可以找到人们随时间进行转换?

5 个答案:

答案 0 :(得分:2)

摘录自Joel的最佳软件写作I:http://blogs.msdn.com/ericlippert/archive/2003/10/28/53298.aspx(微软员工需要多少才能更换灯泡?),并在高层次上讨论了简单的变更有多大的影响。如果您认为MS有许多国际化应用程序,这是他们用来确保他们的应用程序保持最新的一千个因素的过程,包括新的/修改过的字符串不会错过其他语言。

对于翻译需求(这个领域我有一点知识!),我会推荐OmniLingua Worldwide。

答案 1 :(得分:1)

有些公司会以标准格式翻译资源文件以收取费用;我认为这是大多数大公司的做法。

最近我问了一个类似的问题here关于在项目中构建代码的最佳方法来支持这个问题,我希望在代码中保留可读字符串。这不是标准的,但是......通常你会把所有的字符串资源放到一个单独的文件中,并在代码中通过ID引用它们,然后翻译文件。

请参阅Windows C ++的.rc文件,.NET的.resx文件,不确定Linux / Mac /其他的存在,但我确定有等价物。

答案 2 :(得分:1)

我认为这取决于你想要语言的可访问性,这可能在很大程度上取决于项目的初衷(专业,爱好等)

在我的爱好工作中,我将特定于语言环境的字符串存储在一个简单的外部JSON文件中(XML甚至简单的INI也能正常工作,任何可以为您提供键值对的东西)。这样做的好处是跨平台,易于编辑,并且(如果需要)允许任何有知识和决心的人将您的应用翻译成他们选择的语言。对于开源项目等,这可能是非常宝贵的。

对于您可能不希望翻译的项目,那么嵌入式资源可能是一个更安全的选择,因为它们对于开发人员来说相当容易交换,但至少给潜在的翻译者留下了一个微不足道的障碍。但即使在这种情况下,存储方法也不需要复杂。任何给定的文件类型或本机字符串表都可以。

答案 3 :(得分:1)

在我参与过的项目中,我们采用了两种不同的本地化方法,具体取决于项目的规模。对于每个开发人员“拥有”一个组件的小型项目,开发人员有责任维护需要翻译的内容列表以及哪些语言。

对于较大的项目,我们使用语言前缀标记每个字符串。例如,德语字符串“是”标记为“[de]是”。本地化后,字符串被“Ja”替换。通过前缀搜索,可以轻松找到遗漏的内容。

至于其他商业来源,我最近在Net-TranslatorsBMT与{{3}}进行了不同的工作。

答案 4 :(得分:1)

我强烈建议您查看西风db resource provider

我管理一个开源项目管理Web应用程序(http://sharpforge.org/p/SharpForge.aspx)并且最初使用了resx文件。以下是我遇到的问题

  • 我想访问从BLL层强列入的那些资源。这根本不可能。
  • resx文件也很难维护,添加/删除/更改资源键可能会产生各种问题。
  • 最后,我遇到了很大的问题,没有使用带有正确字符映射/编码的编辑器保存文件,这将删除所有翻译的文本。将资源从翻译器获取到代码存储库的过程经常导致文本被删除。

我能够将db提供程序作为应用程序的一部分来实现。它附带一个编辑器,您可以让翻译人员访问。他们的翻译直接进入应用程序,没有双重处理,并在应用程序重新启动后立即可用。它还能够创建强类型对象以从任何层访问提供程序。

安装完成后,我只需在getafreelancer上创建一个翻译项目,并在大约2周内完成了我的应用程序的25个翻译。全部约为50-100美元。

如果您对如何实施它有任何疑问,请与sharpforge forums联系。