Локализация и смена языков в FastReport VCL

20.11.2024

В современном мире большое значение имеет возможность поставки своего программного обеспечения заказчикам по всему миру. Поэтому FastReport VCL поддерживает около 40 самых распространённых языков мира для локализации пользовательского интерфейса.

В FastReport VCL начиная с версии 2023.2 был значительно улучшен механизм локализации – теперь для перевода FastReport на другие языки – больше не требуется перекомпиляция. Пакет локализации имеется во всех комплектах поставки FastReport VCL. Локализация осуществляется «на лету», путем выбора необходимого языка в Дизайнере отчетов в меню «Вид – Язык». Более того вы можете управлять языком интерфейса FastReport VCL прямо из кода!

Выбор языка в дизайнере (подключены не все доступные языки)

 


 

Проверка и установка пакетов локализации

Для корректной работы локализации необходимо, чтобы в IDE были установлены пакеты локализации (frxLanguageXXX) и пакет контроллера локализации (frLocalization). В операционной системе Windows для IDE Delphi и Lazarus пакеты локализации устанавливаются автоматически. Если меню локализации недоступно, то необходимо проверить установлены ли эти пакеты в IDE. В Delphi вы увидите следующее окно:

Установленные пакеты локализации в Delphi

Меню локализации в Lazarus выглядит следующим образом:

Установленные пакеты локализации в Lazarus

Если какие-то из пакетов переводов не требуются, то их можно удалить из среды разработки.

 


 

Работа с TfrLocalizationController и выбор языка

Как уже упоминалось выше, смена языка FastReport в дизайнере отчетов осуществляется очень просто. Перейдите в меню «Вид – Языки» и выберите нужный язык. 

Для подключения локализации FastReport к программе необходимо воспользоваться компонентом TfrLocalizationController. Достаточно положить его на главную форму приложения. Далее, для Delphi необходимо щелкнуть по компоненту правой кнопкой мыши, затем в выпавшем меню выбрать язык, поддержку которого FastReport нужно добавить в вашу программу:

Добавление локализации в программу

После этого необходимо у компонента TfrLocalizationController выбрать язык, который будет загружен по умолчанию при старте приложения. Можно также добавить в uses главной формы модуль, содержащий необходимую локализацию.

Следует отметить, что по умолчанию в FastReport VCL используется английский язык, поэтому если вам нужен только он, ничего делать не нужно.

Для подключения локализации в Lazarus необходимо в проект добавить языковой пакет, а затем добавить модуль для этого языка.

 


 

Смена языка из кода

В некоторых ситуациях может потребоваться управлять локализацией FastReport VCL из кода программы. Это делается следующим образом: 

frLocalizationController.Language := ‘German’;

Данный код устанавливает немецкий язык. Не забудьте, что ваша программа должна быть скомпилирована с языковым пакетом, на который вам надо переключиться. Узнать с какими пакетами языков скомпилирована программа можно с помощью кода ниже. Для этого необходимо подключить модуль Types, положить на форму компоненты TButton и TMemo, а в обработчике Buttom.OnClick написать:

procedure TForm1.Button1Click(Sender: TObject);
var D:TStringDynArray;
        I: Integer;
begin
  Memo1.Lines.Add('Default Lang: '+TfrAvailableLanguagesController.GetDefaultLanguageName);
  Memo1.Lines.Add('Current Lng: '+frLocalizationController1.Language);
  Memo1.Lines.Add('Suppotred languages:');
  D:=TfrAvailableLanguagesController.GetLanguages;
  for I:=Low(D) to High(D) do begin
    Memo1.Lines.Add(D[I]);
  End;
end; 

Программа выводит доступные языки локализации

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

 


 

Редактирование локализации через Localizer

Вызвать редактор Локализации можно следующим образом:

  • в IDE Delphi меню «Tools… - Localization Editor…»
  • в Lazarus меню «Сервис - Localization Editor…»

Localization Editor (Delphi)

Вы можете вызывать «Редактор локализации» из своей программы с помощью кода ниже. Однако данный способ доступен не во всех версиях.

  frLocalizationController1.ShowLocalizationEditor;

Назначение элементов управления в редакторе локализации:

открыть файл *.xml с переводом
сохранить файл *.xml с переводом
сохранить файл перевода с заданным именем
отменить последнее действие
выполнить отмененное действие
задать язык перевода
отфильтровать записи по маске
очистить фильтр
показывать только переведенные записи
показывать только непереведенные записи

«Редактор локализации» позволяет построчно переводить ресурсы FastReport VCL на различные языки.

Редактор локализаций

По центу редактора расположена сетка с переводимыми значениями. 

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

Вторая колонка – оригинальное значение элемента на английском языке. 

Третья колонка – переведенное значение элемента для другого языка.

Перейдём к принципу работы редактора локализации. При загрузке редактор проверяет какие локализации доступны приложению, в которое он встроен. Затем редактор заполняет список доступных языков (комбобокс для ввода языка перевода). Текущая установленная локализация является активной для редактирования. Вы можете выбрать и отредактировать перевод для любого из доступных языков и сохранить его в XML файл. Если у вас уже имеется XML файл с переводами, то его можно загрузить для редактирования.

В редакторе локализации можно переключаться между режимами отображения. Например, показать только те элементы, у которых перевод совпадает с оригиналом на английском языке. Либо наоборот оставить только элементы, перевод которых отличается от английской версии. Но следует учитывать, что не все элементы нужно переводить. 

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

Если вы изменили файл перевода, то его можно подключить в программу вместо стандартного. Для этого в операторе uses вам необходимо подключить модуль frResources используя следующий код:

  frStringResources.LoadFromFile('mylanguage.xml');

Мы рекомендуем после редактирования файлов перезагрузить ваше приложение для корректного отображения всех переведенных ресурсов. Также следует учесть, что загруженный перевод сразу становится активным, но работает до первого переключения языка. Далее при переключении на этот же язык повторно, локализация берется из подключенных к программе ресурсов.

Помимо этого, мы можете самостоятельно скомпилировать ресурс с файлом перевода. Поместите его в каталог с соответствующим модулем языка и используйте в программе. Чтобы этот перевод появился в IDE запустите установщик и выберете режим Recompile. Или просто перекомпилируйте пакет нужного вам языка. В Lazarus после этого вам потребуется пересобрать IDE, в Delphi – перезагрузить среду.

Если вы хотите, чтобы ваш перевод не терялся после каждого обновления, то вы можете отправить файл локализации нам на support@fastreport.ru. Мы проверим полученный файл и добавим его в инсталлятор.

1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.
28 октября 2024

Как настроить WSL 2 для работы с FastReport и FastCube

В этой статье попробуем вместе разобраться, как настроить WSL 2 для работы с компонентами FastReport и FastCube в Lazarus для Linux.