【问题标题】:Multilanguage with Firemonkey (Delphi)Firemonkey的多语言(Delphi)
【发布时间】:2025-12-10 13:35:01
【问题描述】:

我正在寻找在运行时更改语言的解决方案。 (火猴/德尔福)

TLang 有效,但我在一个空项目中得到奇怪的字符串。 (例如三星 Galaxy Nexus 和其他移动设备)我更喜欢另一种解决方案,而不是像 TLang 这样的字符串替换。

不幸的是,resourcestring 不起作用。我试图用“资源 dll 专家”(IDE RAD Studio XE5)翻译资源字符串。并且示例应用程序“RichEdit”也不起作用。

有什么想法吗?

【问题讨论】:

  • 除了字符串替换,你还有什么想法?
  • 像资源字符串一样工作。 TLang 在应用程序中搜索字符串,通过资源字符串我可以确定分配本身。

标签: delphi firemonkey multilingual delphi-xe5


【解决方案1】:

好的,我找到了问题,为什么它没有运行。该工具有一些错误。 Project.exe 的路径不能包含空格。

另一种解决方案是这样的Stringtable:

// default.rc file

#define firstString 1
#define secondString 2

STRINGTABLE
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
BEGIN
 firstString , "Neutral String 1"
 secondString , "Neutral String 2"
END

// english.rc file

#define firstString 1
#define secondString 2

STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
BEGIN
 firstString , "First String"
 secondString , "Second String"
END

然后将 {$R default.res default.rc} {$R english.res english.rc} 放入 *.pas 文件中。使用转换:LoadStr(2)

使用资源编辑器,我可以看到这两种语言。但是我如何在运行时将默认/中性更改为另一种语言。 Delphi中是否有“SetLanguage”功能?

【讨论】:

    【解决方案2】:

    对于简单的项目,TLang 工作正常,但包含的“语言设计器”(双击 TLang 组件)并不好玩。
    如果您想翻译和处理外部字符串,您只能导入外部语言文件之一如果某些文本发生更改,则必须重新导入所有内容。
    我写了一个小工具来处理电子表格中的外部文本并将这些文本转换为 LNG 格式: See TLang converter
    对于大型项目,您还可以查看一些用于翻译/本地化 Delphi FMX 项目的商业产品,例如:
    http://www.sisulizer.de
    http://www.tsilang.com
    http://www.regulace.org

    【讨论】:

    • 为什么当我在编写两个字母语言代码后尝试在“语言设计器”中编写翻译文本并单击“添加”按钮时不显示编辑文本以编写适当的翻译??