Sign in Join
Wiki copytemporary

Getting translation strings right/ru

Deutsch · English · Español · Français · Русский · 日本語

Правильный перевод строк.

Resourcestrings и GNU gettext

Для работы со строковыми константами, во Free Pascal, была введена специальная конструкция: секция "resourcestring". Подробнее вы сможете прочитать в руководстве по FPC (prog.pdf, стр 89 или здесь)

GNU gettext это специальный набор утилит, для того, чтобы облегчить перевод вашей программы на различные языки. Подробнее описывается в руководстве по FPC (prog.pdf, стр 91 или здесь).

Внимание: GNU gettext имеет принципиальный недостаток. Одна исходная строка, может соответствовать только одной (и не более) переведённой строке.

Это важно в тех случаях, когда одна и та же фраза на исходном языке может использоваться в разных значениях, и должна быть переведена по разному, в зависимости от контекста.

Об этом нужно помнить и не употреблять выражений, в исходном языке со множественными значениями

ResourceStrings в Лазарусе

Перевод файлов пакета и/или проекта

Чтобы разрешить создание .po файлов для пакета, выполните следующие шаги:

В следующий раз когда вы будете компилировать пакет, Лазарус создаст необходимые .po файлы.

Внимание: .rst файлы должны принадлежать пакету, иначе Лазарус их проигнорирует.

Точно так же для проектов. Директорию .po файлов нужно указать в Project -> Project Options -> IDE Integration -> Directory of .po files.

Например, для германского языка: чтобы перевести файл unit1.po, его нужно скопировать в unit1.de.po, а содержимое нового файла перевести на германский язык.

ResourceStrings в Вашем приложении

Вы можете загрузить .po файл во время инициализации, для того чтобы перевести строки, указанные в секциях resourcestrings. Добавьте этот код в файл .lpr проекта:

pascal
...
uses
  ...
  Translations, LazUTF8;

procedure TranslateLCL;
var
  PODirectory, Lang, FallbackLang: String;
begin
  PODirectory:='/path/to/lazarus/lcl/languages/';
  Lang:='';
  FallbackLang:='';
  LazGetLanguageIDs(Lang,FallbackLang); // in unit LazUTF8
  Translations.TranslateUnitResourceStrings('LCLStrConsts',
                      PODirectory+'lclstrconsts.%s.po',Lang,FallbackLang);
  // ... add here a TranslateUnitResourceStrings call for every po file ...
end;

begin
  TranslateLCL;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Заметка для Mac OS X: ID поддерживаемых языков должны быть добавлены в список свойств приложения (файл в бандлеInfo.plist) в пункт CFBundleLocalizations. Для примера см. lazarus.app/Contents/Info.plist.


From the Free Pascal wiki, page "Getting translation strings right/ru", as it stood on 2020-02-16 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 2, last changed by WikiArchive .

Edited on wiki.freepascal.org by 8 people, 2009–2020

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
SkalogryzNew page: Правильный перевод строк. ==== Resourcestrings и GNU gettext ==== Для работы со строковыми константами, во Free Pascal, была ...
SkalogryzResourcestrings и GNU gettext (minor)
Skalogryz (minor)
Skalogryz (minor)
Skalogryz (minor)
Chronos
PadremortiusИсправление орфографических и гамматических ошибок
PadremortiusResourcestrings и GNU gettext
VincentText replace - "Delphi>" to "syntaxhighlight>" (minor)
Chronos
NashevResourceStrings в Лазарусе (minor)
FTurtlecategories (minor)
Laz frankResourceStrings в Вашем приложении
TrevFixed syntax highlighting; deleted category included in page template (minor)

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.