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

时间:2012-02-17 10:08:41

标签: delphi locale pascal fpc

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

2 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:5)

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

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

export LC_CTYPE="pt_BR"
export LANG="pt_BR"
export LANGUAGE="pt_BR"
./lazarus

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

答案的灵感来自this workaround,因为错误已经修复。

我建议你看看at the fpc forum并在那里问问题 不要忘记它包括平台(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组件属性。