7

我们正在开发一个在各种平台(Windows、Windows RT、MacOSX、iOS、Android)上运行的应用程序。

问题是如何以简单的方式管理不同平台上的不同本地化。不同平台上的语言文件有各种格式(有些是基于 xml 的,有些是简单的键值对,还有一些是完全疯狂的格式,如 MacOS 上的)

我敢肯定,我们不是第一个遇到这个问题的公司,但是我无法找到一个易于使用的解决方案来实现拥有一个“数据源”的可能性,其中字符串以不同的语言收集(最好的将是翻译人员的用户界面),然后可以将其导出为不同平台的不同格式。

有人有解决这个问题的方法吗?

问候亚历山大

4

4 回答 4

2

我建议使用GNU Gettext工具链进行管理,并在运行时使用

  • 一些用于运行时读取的替代实现,例如Boost.Locale
  • 自己的实现(.mo 格式非常简单)或
  • 使用Translate Toolkit将消息目录转换为您喜欢的其他格式。

您不能使用GNU Gettextlibintl的组件,因为它是根据 LGPL 许可的,并且 Apple AppStore 和 Windows Live Store 的条款与该许可不兼容。但是在运行时重新实现所需的位真的很简单。

Translate Toolkit实际上重新实现了全部或大部分GNU Gettext并支持许多额外的本地化格式,但 Gettext.po格式有大多数免费工具(例如用于本地编辑的poedit和用于在线编辑的Weblate),所以我建议还是坚持使用它。并阅读GNU Gettext手册,它很好地描述了预期的过程和背后的基本原理。

我对工具链有很好的经验。当您需要一些特殊处理(例如从自定义资源文件中提取可翻译字符串)时, Translate Toolkit很容易编写脚本,而且Weblate易于为您的翻译人员使用,尤其是当您像我们一样依赖不同国家的业务合作伙伴和测试人员进行大多数翻译时.

Translate Toolkit还支持从 HTML 中提取可翻译的字符串,因此可以使用相同的过程来翻译您的网站。

于 2015-04-01T17:04:03.107 回答
1

我为 iPhone 和 Android 做了一个项目,其中有很多翻译,我想我有你正在寻找的解决方案。

我解决它的方法是将所有翻译文本放在 Excel 电子表格中,并使用 VBA 宏从那里生成 .string 和 .xml 翻译文件。您可以在此处下载我的示例 Excel 表和 VBA 宏:

http://members.home.nl/bas.de.reuver/files/multilanguage.zip

就在最近,我还添加了初步的 Visual Studio .resx 输出,尽管这未经测试。

编辑:顺便说一句,我的 javascript xcode/eclipse 转换器也可能有用..

于 2013-01-24T23:34:18.130 回答
1

您可以将翻译存储在https://l10n.ws并通过他们的 API 获取

于 2016-03-03T20:30:37.863 回答
0

免责声明:我是 Tethras 的 CTO 和联合创始人,但我会尝试以不只是“使用我们的服务”的方式回答这个问题。

正如 loldop 上面指出的那样,如果您想要一个管理本地化内容的一站式解决方案,您确实需要在所有平台上规范您的内容。这可能需要大量工作,并且需要大量编码、编写脚本以及调用来自不同 SDK 的各种工具,以形成一种通用格式,以满足您需要支持的所有各种文件格式的本地化需求。我之前的句子的长度和复杂性与你需要做的工作量成反比,以便为所有这些找到一个有利的解决方案。

Tethras,我们建立了一个平台,减轻了多平台软件发布者必须这样做的需求。我们支持您上面列出的平台的所有原生格式,并且可以利用从一种文件格式到另一种文件格式的翻译。例如,将 iOS 应用程序中 Localizable.strings 中的内容翻译成多种语言,然后将等效的 strings.xml 文件从 Android 或 foo.resx 从 Windows RT 上传到系统,它会自动为您利用翻译。任何未翻译的字符串都将被标记,您可以为这些字符串订购更新。

实际上,Tethras 是一个 CMS,用于跨多种不同原生文件格式的本地化内容。

于 2013-01-24T20:01:49.643 回答