我正在寻找一种在运行时更改语言的解决方案。(火猴/Delphi)Tlang很有效,但我在一个空项目中得到了奇怪的字符串。(例如三星Galaxy Nexus和其他移动设备),我更喜欢另一种解决方案,而不是像TLang那样的串式更换。不幸的是,资源字符串不起作用。我试着用“resource DLL Expert”(IDE RAD Studio XE5)翻译资源字符串。并且示例应用程序“RichEdit”也不起作用。有什么主意吗?
ve7v8dk21#
好的,我找到问题了,为什么它不能运行。这个工具有一些漏洞。指向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”函数?
nszi6y052#
对于简单的项目,TLang工作得很好,但包含的“语言设计器”(双击TLang组件)并不是很有趣。如果你想翻译和处理你的字符串外部,你只能一个接一个地导入外部语言文件,如果一些文本发生变化,必须重新导入所有文件。我编写了一个小工具来处理电子表格中外部的文本,并将这些文本转换为LNG格式:See TLang converter对于大型项目,您还可以查看一些用于Delphi FMX项目的翻译/本地化的商业产品,例如:http://www.sisulizer.dehttp://www.tsilang.comhttp://www.regulace.org
2条答案
按热度按时间ve7v8dk21#
好的,我找到问题了,为什么它不能运行。这个工具有一些漏洞。指向Project.exe的路径不能包含空格。
另一个解决方案是Stringtable,如下所示:
并将{$R default.res default.rc}{$R english.res english.rc}添加到*.pas文件中。要使用事务:LoadStr(2)
有了资源编辑器,我可以看到这两种语言。而是如何在运行时将默认/中性更改为另一种语言。Delphi中有没有一种“SetLanguage”函数?
nszi6y052#
对于简单的项目,TLang工作得很好,但包含的“语言设计器”(双击TLang组件)并不是很有趣。
如果你想翻译和处理你的字符串外部,你只能一个接一个地导入外部语言文件,如果一些文本发生变化,必须重新导入所有文件。
我编写了一个小工具来处理电子表格中外部的文本,并将这些文本转换为LNG格式:See TLang converter
对于大型项目,您还可以查看一些用于Delphi FMX项目的翻译/本地化的商业产品,例如:
http://www.sisulizer.de
http://www.tsilang.com
http://www.regulace.org