Как сообщить Free Pascal Compiler, чтобы установить Locale ID для скомпилированного приложения - PullRequest
8 голосов
/ 17 февраля 2012

В Delphi есть опция VersionInfo-> Language-> Locale ID при просмотре свойств проекта.
Я бродил, как установить такое свойство для программы, компилируемой в Free Pascal.
Любое решение приветствуется: аргумент командной строки или директива препроцессора , например {$key value};эквивалент Delphi.

Ответы [ 2 ]

8 голосов
/ 17 февраля 2012

Если вы можете создавать свои проекты, используя файлы *.lpi, я постараюсь добавить следующее в файл Project.lpi вашего проекта. В следующем фрагменте показано, как установить идентификатор языка проекта (для платформы 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, если вы включите информация о версии в проект.

5 голосов
/ 17 февраля 2012

Не уверен на 100%, что это сработает, не стесняйтесь голосовать за меня, если это не сработает.

Lazarus унаследует настройки локали, с которых он начинается.
Вы можете установить информацию о локали до запуска Lazarus в Linux / OS X с помощью командной строки:

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

Ваше скомпилированное приложение должно наследовать эти настройки.

Ответ основан на этом обходном пути к ошибке, с тех пор исправленной.

Рекомендую вам тоже посмотреть на форуме fpc и задать там вопрос.
Не забывайте, что в него включены такие сведения, как платформа (Linux / Windows / OS X) и точная версия FPC и Lazarus, которую вы используете, а также фактический языковой стандарт, который вы хотите. Лучший ответ
От: http://forum.lazarus.freepascal.org/index.php/topic,5924.0.html

Наконец, мне удалось найти простой и эффективный способ сделать мое приложение локализуемым. Он использует только одну единицу и без кода.
1. Добавьте модуль «defaulttranslator» в ваш список использования.
2. Включите «i18n» в «Параметры проекта» и установите «Каталог вывода PO» на «locale» или «languages». Вы можете поместить файлы перевода прямо в папку приложения, но это просто создаст беспорядок. Не забудьте создать соответствующую папку.
3. Добавьте компоненты в форму. Если у вас уже есть все компоненты в форме, вам придется немного переместить ее, чтобы она изменилась.
4. Сохраните ваш проект.
5. Теперь в папке «locale» или «languages» должны быть файлы .po. Для разных языков файлы должны быть скопированы и переименованы, например, «project1.XX.po», где XX - код языка (например, «en», «de» и т. Д.).
6. Переведите файлы .po с помощью программного обеспечения для перевода и создайте файлы .mo. Я предлагаю использовать POEdit.
7. Запустите ваше приложение, и перевод, который будет использоваться, будет выбран региональными настройками. Если вам нужно протестировать другой язык - просто запустите ваше приложение со следующими параметрами командной строки - "-l XX" или "-lang XX", где XX - код языка.
Этот метод не очень универсален, но он транслирует строки ресурсов и свойства компонентов LCL.

...