如何通知Free Pascal Compiler为已编译的应用程序设置区域设置ID

alg*_*mus 8 delphi locale pascal fpc

在Delphi中,查看项目属性时有一个选项VersionInfo-> Language-> Locale ID.
我正在徘徊如何为Free Pascal下编译的程序设置这样的属性.
欢迎任何解决方案:命令行参数预处理器指令,如{$key value}; 相当于德尔福.

TLa*_*ama 8

如果您可以使用*.lpi文件构建项目,那么我会尝试将以下内容添加到项目的Project.lpi文件中.在下面的代码片段中显示了如何将项目的区域设置ID(对于Windows平台)设置为0405(捷克语).

<?xml version="1.0"?>
<CONFIG>
  <ProjectOptions>
    ...
    <VersionInfo>
      <UseVersionInfo Value="True"/>
      <Language Value="0405"/>
      <StringTable ProductVersion=""/>
    </VersionInfo>
    ...
  </ProjectOptions>
  ...
</CONFIG>
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在使用Lazarus IDE,那么您可以使用Delphi非常相似的设置选项卡,您可以打开它Project / Project Options ...,如在Delphi中那样,如果您将版本信息包含在项目中Version Info,则可以使用Language selection组合框.


Joh*_*ica 5

不是100%肯定这会起作用,如果这不起作用,请随时投票给我.

Lazarus将继承它开始的语言环境设置.
您可以使用命令行在Linux/OS X中启动Lazarus之前设置区域设置信息:

export LC_CTYPE="pt_BR"
export LANG="pt_BR"
export LANGUAGE="pt_BR"
./lazarus
Run Code Online (Sandbox Code Playgroud)

您编译的应用程序应继承这些设置.

答案的灵感来自于这种解决方法,因为错误已得到修复.

我建议你看一下fpc论坛并在那里问问题.
不要忘记它包括平台(Linux/Windows/OS X)以及您正在使用的FPC和Lazarus的确切版本以及您想要的实际区域设置等详细信息.

更好的答案
来自:http: //forum.lazarus.freepascal.org/index.php/topic,5924.0.html

最后,我设法找到一种简单有效的方法来使我的应用程序可以本地化.它只使用一个单元而没有代码.
1.将单位"defaulttranslator"添加到您的使用列表中.
2.在"项目选项"中启用"i18n",并将"PO输出目录"设置为"区域设置"或"语言".您可以将翻译文件直接放入应用程序文件夹中,但这只会造成混乱.不要忘记创建适当的文件夹.
3.向表单添加组件.如果您已经在表单上拥有所有组件,则必须稍微移动它,以便对其进行修改.
4.保存您的项目.
5.现在"locale"或"languages"文件夹中应该有.po文件.对于不同的语言,应复制和重命名文件,如"project1.XX.po",其中XX是语言代码(例如"en","de"等).
6.使用翻译软件翻译.po文件,并生成.mo文件.我建议使用POEdit.
7.运行您的应用程序,将使用您的区域区域设置选择要使用的翻译.如果您需要测试其他语言 - 只需使用以下命令行参数启动您的应用程序 - "-l XX"或"-lang XX",其中XX是语言代码.
此方法不是非常通用,但它转换资源字符串和LCL组件属性.