即使我在网上找到了很多东西,我仍然无法找到如何真正使用资源串。我有一个仅使用西雅图制作的iOS应用程序,我有一个名为italian.pas
的文件,如下所示:
unit italian;
interface
resourcestring
word1 = "parola1";
test1 = "prova1";
implementation
end.
我不想使用本地化工具。根据我的理解,编译器生成一个包含我的resourcestrings的.drc文件。现在该怎么做才能本地化我的iOS应用程序? (或android)
我创建了上面的其他2个文件,名为french.pas
和american.pas
。它们是italian.pas
的副本,但字符串值当然根据语言而不同。在this回答艾伦鲍尔说:
然后可以翻译或以其他方式处理此.drc文件,然后重新编译成.res文件然后可以将此.res文件链接到一个特殊的“仅限资源”的dll,其中除了“.dll”之外的特定扩展名表示语言。
首先考虑一下我不是德尔福专家!从我在这里理解的,编译器应该从我的italian.pas
生成一个drc文件,drc将包含我的字符串。现在(从上面的引文)我应该编辑drc添加我需要的本地化。
如何使用本地化编辑drc文件?另外我猜想包含本地化的已编辑的drc文件必须以某种方式与可执行文件链接。我真的需要创建3个不同的文件文件,或者我只需要一个drc文件然后进行本地化吗?
目前还没有简单的方法来本地化移动Delphi应用程序。原因是这些平台不支持资源库,例如Windows中的资源DLL。当编译器编译代码在哪里是资源字符串时,编译器获取字符串并在应用程序文件中插入字符串资源。当然,您可以在编译后修改它,但这并不容易,因为您还必须计算ELF(Android)或Mach(iOS)文件中的所有内部引用。
唯一可行的解决方案是根本不使用资源字符串,而是使用某种翻译功能(类似于gettext),并使用某种翻译组件以某种格式存储翻译,并在运行时更改表单字符串并提供translate函数的正确语言字符串。但问题是RTL和FireMonkey库中使用的几个resourcestring。没有任何简单的方法来本地化它们。