我正在为世界上许多用户编写应该免费的软件。我希望为用户(社区)提供一个机会来自己浏览GUI的任何语言环境。我不认为在二进制版本或库中嵌入任何语言环境是个好主意(例如* .dll,* .so等)。 Lazarus + Free Pascal 3.0.2。某些组件(例如textlables,menuitems)具有名称和标题属性。我计划制作一个XML文件(lang_en.xml,lang_de.xml等),其中包含'key:value'属性,如:
<tag name="ComponentName" value="ComponentCaption" />
,并从文件中获取它以通过运行时分配程序的组件。这是我的问题:
Component.Name
值有一些疑问。如果它是真的,那另一个配对键:值类型我必须使用?答案 0 :(得分:1)
将LCLTranslator或DefaultTranslator添加到主窗体的uses子句,将字符串声明为resourcestrings,并在项目设置中激活i18n选项通常足以使您的程序可翻译(好吧,90%...... - 需要一些调整在这里和那里)
查看教程http://wiki.lazarus.freepascal.org/Step-by-step_instructions_for_creating_multi-language_applications,其中介绍了如何使用基于po文件的Lazarus本地化系统。一般概念在http://wiki.lazarus.freepascal.org/Translations_/i18n/_localizations_for_programs中解释。在Lazarus安装文件夹 examples / translation 中找到一个工作示例。
答案 1 :(得分:0)
Afaik Lazarus有一个自己的gettext实现,直接读取.po文本。
您的解决方案是零订单,需要进行大量额外的改进和思考。要考虑入门的一些事情:
至少开始研究那里有什么(lazarus翻译系统和gettext得到它的一些原则)以及背后的设计原因。
莫尔