【问题标题】:Mobile Firemonkey Application localization移动 Firemonkey 应用程序本地化
【发布时间】:2013-11-29 11:22:31
【问题描述】:

我正在尝试使用 Delphi XE5 update1 为 Android 构建多语言 Firemonkey Mobile 应用程序。

我尝试使用 TLang 组件,但它似乎完全损坏了。当我从应用程序菜单中选择一种语言时,是否有另一种方法来编写存储多语言字符串并显示它们的方法?

【问题讨论】:

  • 2013 年 Sisulizer 还不支持 Firemonkey 移动应用

标签: android delphi localization firemonkey


【解决方案1】:

对于简单的项目,TLang 可以正常工作,但您是对的:包含的“语言设计器”(双击 TLang 组件)不是很有趣,而且似乎有很多问题。
我编写了一个工具来处理这个问题,并可以轻松导入外部翻译的 CSV 文件。
那么进展:

  1. 使用 TLang 解析字符串的源和资源。
  2. 将它们导出为文本文件。
  3. 您可以在外部电子表格或翻译工具中进行翻译。
  4. 使用 TLang 转换器工具从 CSV 文件中创建一个 LNG 文件。
  5. 将 LNG 文件导入 TLang 组件。

更多信息请参见TLang converter

对于大型项目,您还可以查看一些用于翻译/本地化 Delphi FMX 项目的商业产品,例如:
http://www.sisulizer.de
http://www.tsilang.com
http://www.regulace.org

【讨论】:

  • TLang 不翻译对话文本(是、否、取消等)。要改变这些,你必须改变 FMX.Dialogs.pas
【解决方案2】:

您可以从 FMX.Types 挂钩 CustomTranslateProc: TCustomTranslateProc 以本地化例如对话框按钮,请参阅 http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Types.CustomTranslateProc

【讨论】:

    【解决方案3】:

    您可以使用 GnuGetText,它与 FireMonkey 配合得很好。您只需在每个表单的构造函数中调用 TranslateComponents。

    这是 GnuGetText 的 Delphi 实现:http://dxgettext.po.dk/

    关于字符串提取:开箱即用无法识别 xfm 文件。您必须暂时将它们重命名(或复制)为 dfm,然后运行提取工具。

    【讨论】:

    • 我安装了 GnuGetText,但您确定它可以与 FireMonkey 一起使用吗?我使用文件夹右键单击“将翻译提取到模板”,它创建了一个仅包含我的 datasnap 服务器文件的 .po 文件。它排除了我所有的 firemonkey 移动表格...而且我很难找到有关如何使用它的说明...不过非常感谢您的回答,我将继续搜索它的使用方式,我会回来的更多。
    • 你用过 dxgettext 吗?我编辑了我的答案以包含链接。我们在snaptip.com 上成功地使用了这种方法——但我必须承认我只读过“firemonkey”而不是“mobile”。我不确定 dxgettext 是否可以使用移动编译器进行编译,但它应该可以工作。