Локализация текстовых файлов PDF Печать E-mail

Начиная с версии 2.10 Radialix поддерживает локализацию текстовых файлов. Работа парсера текстовых файлов основана на использовании шаблонов, состоящих из регулярных выражений

Кодировка и шаблон для текстовых файлов определяются автоматически при добавлении файла в проект. Выбор шаблона производится по расширению файла. Шаблон и кодировку можно изменить в диалоге свойств файла на вкладке Исходные ресурсы. Поле Компилятор для текстовых файлов не используется.

txtFileProperties

В параметрах создания локализованных файлов можно выбрать кодировку создаваемых файлов. Значение <По умолчанию> соответствует оригинальной кодировке, если она является кодировкой Юникод. В противном случае в переводе используется кодировка по умолчанию для языка перевода.

txtTargetSettings

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

Поддерживаются три группы шаблонов:

Проект – шаблоны, хранящиеся в файле проекта.

Пользовательские – шаблоны, сохраняемые в настройках Radialix для текущего пользователя в реестре.

По умолчанию – шаблоны, хранящиеся в Radialix. Эти шаблоны не доступны для редактирования.

Выбор шаблона производится в диалоге свойств локализуемого файла. При выборе шаблона можно также его редактировать. Шаблоны проекта также можно просмотреть и изменить в диалоге свойств проекта, а пользовательские шаблоны – с помощью пункта меню Сервис>Пользовательские шаблоны.

Кнопка Шаблоны на вкладке исходных ресурсов в диалоге свойств файла открывает диалог редактирования шаблонов.

txtTemplateDialog_scaled

Шаблоны можно переносить и копировать путем перетаскивания их с помощью мышки. Для копирования шаблона необходимо во время перетаскивания удерживать клавишу Ctrl.  Добавлять и удалять шаблоны можно с помощью команд контекстного меню. Переименовать шаблон можно, дважды щелкнув на его имени или с помощью команды из контекстного меню.

Переключатель рядом с именем шаблона разрешает автовыбор шаблона при добавлении в проект нового файла. При отключении автовыбора шаблон можно выбрать вручную.

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

В поле Расширения необходимо ввести список расширений файлов, разделенных символами точки с запятой, для которых предназначен шаблон. Например: dat;lbl;dtr .

Поле Формат – тип спецификаторов формата в строках файла (C, C#, Pascal++, Java и т.д.).

ESCAPE-символы – тип кодирования специальных символов в строках файла (-,Multilizer/Sisulizer или C/C++). С помощью кнопки дополнительно>Изменить можно добавить дополнительные преобразования символов (эта кнопка отображается только для шаблонов в проекте и пользовательских шаблонов; для шаблонов по умолчанию отображается кнопка Показать).

txtCharMappingDialog

В столбце Последовательность символов необходимо ввести последовательность в оригинальном файле, в столбце Преобразовать в - результат преобразования.

Каждый шаблон содержит список регулярных выражений, для каждого из которых заданы селекторы имени ресурса, имени строки, строки и комментария (колонки Ресурс, ID, Строка и Комментарий соответственно).

Селектор может принимать значения:

- - данные соответствующего типа не содержатся в результате поиска.

<Всё> - результат поиска полностью является данными соответствующего типа.

$1..$15 – номер подвыражения в результате поиска, которое является данными соответствующего типа. Подвыражения задаются в регулярном выражении с помощью круглых скобок. Например, выражение ^([A-Z]*?\d*,\d+?),([^\n\r]*)$ содержит подвыражения [A-Z]*?\d*,\d+? и [^\n\r]* , которым соответствуют селекторы $1 и $2 соответственно. Указанному регулярному выражению соответствует строка , в которой подвыражение $1 выделено зеленым цветом, подвыражение $2 – желтым.

Изменить селектор можно с помощью двойного щелчка в соответствующей ячейке таблицы.

Регулярные выражения редактируются непосредственно в таблице – двойной щелчок мышкой или клавиша F2 для перехода в режим редактирования. Добавить новое выражение можно, введя текст в последней строки таблице вместо текста Введите выражение… или с помощью команд из контекстного меню. Изменить порядок следования выражений можно с помощью перетаскивания их мышкой. Если при перетаскивании удерживать клавишу Ctrl, то будет добавлена копия строки таблицы. Удалить выражение можно с помощью команды из контекстного меню. Также можно отключить регулярное выражение, не удаляя его, - переключатель в столбце Регулярное выражение.

Порядок следования выражений задает их приоритет. Более высокий приоритет имеют выражения расположенные выше.

Результат работы шаблона отображается в панели предварительного просмотра. Символы пробелов отображаются с помощью символа точки, символы табуляции - с помощью символа >.

txtPreview

На вкладке Текст отображается исходный файл с цветовым выделением найденных данных. Параметры выделения можно изменить с помощью кнопки Стили… В диалоге настройки стилей можно изменить не только цвет фона, но параметры шрифта, регистра символов и рамки выделяемого текста.

txtStyles

Стили сохраняются в профиле рабочего стола.

С помощью кнопки Выбрать файл… в панели предварительного просмотра можно загрузить другой файл. Также файл можно загрузить, перетащив его из Проводника в панель предварительного просмотра.

Контекстное меню вкладки Текст содержит команды поиска строк и перехода к строке с требуемым номером.

txtTextPopupMenu

На вкладке Строки отображается результат извлечения данных.

txtStrings

В колодке ID отображается дерево Тип ресурсов>Имя ресурса>Имя строки. Если имя не задано, то у данных устанавливается индекс, соответствующий их порядковому номеру. Тип ресурсов всегда имеет имя STRINGS.

В колонке Строка отображаются найденные строки, в колонке Комментарий – комментарии.

Идентификаторы в переводе

В некоторых случаях требуется, чтобы имена ресурсов и строк в локализованных файлах формировались в соответствии с языком перевода. Например, при локализации строк в секциях [Custom Messages] файлов Inno Setup необходимо к имени строки добавлять префикс, соответствующий названию языка. Задать правила формирования имен в локализованных файлах можно для каждого шаблона отдельно на вкладках ID ресурса в переводе и  ID строки в переводе.

txtResID

Правила формирования идентификаторов задаются в виде таблицы соответствия языков и шаблонов идентификаторов. В колонке Язык отображается язык перевода, которому соответствует правило. Значение <Любой язык> обозначает, что правило применяется для любых языков. Приоритет имеют правила, расположенные ближе к началу списка. Поэтому имеет смысл указывать только одно правило с тегом <Любой язык> и размещать его в конце списка. Изменить порядок следования правил можно с помощью команд из контекстного меню или перетаскивая их мышкой. Если при перетаскивании удерживать клавишу Ctrl будет добавлена копия правила. Новое правило также добавляется при редактировании данных в строке таблицы с текстом Выберите язык… Для перехода в режим редактирования необходимо дважды щелкнуть на ячейке таблицы.

Переключатель в колонке Язык разрешает использовать правило. Не используемые правила игнорируются при создании локализованных файлов.

В колонке ID таблицы правил задается шаблон для имени ресурса/строки. В шаблоне можно использовать тег <OriginalID>, который при создании файла будет заменен на имя ресурса/строки из оригинального файла. Другие теги можно вставить из контекстного меню, перейдя в режим редактирования.

txtResIDMenu

Кнопка <> в поле ввода идентификатора открывает диалог редактирования шаблона идентификатора с предварительным просмотром результата.

txtIDEditor

При отсутствии правил в оригинальный файл сохраняются оригинальные идентификаторы.

 

Извлечение данных из текстовых файлов производится в следующем порядке:

  1. Преобразование кодировки в соответствии с параметрами на странице исходных ресурсов в диалоге свойств файла.
  2. Поиск данных с помощью регулярных выражений шаблона. Если одной и той же позиции в исходном файле  соответствует несколько регулярных выражений, то вначале с помощью селекторов выделяются данные первого выражения, затем второго и т.д. Наложение данных блокируется.
  3. Преобразование ESCAPE-последовательностей в строках файла в формат C/C++, который используется во внутреннем представлении данных.

При создании локализованных файлов выполняются следующие действия:

  1. Преобразование идентификаторов ресурсов и строк.
  2. Преобразование ESCAPE-последовательностей C/C++ в соответствии с параметрами шаблона.
  3. Замена строк, идентификаторов строк и ресурсов на перевод. Замена комментариев не производится. Изменения в комментариях игнорируются.
  4. Преобразование кодировки в соответствии с параметрами на странице локализованных файлов в диалоге свойств файла.

Примеры создания шаблонов

 

Файл Adobe Premier dat

Файл Adobe Premier dat – файл в стиле INI, но все строки в двойных кавычках. Для задания кавычек внутри строки используется последовательность \”. Такой файл не поддерживается парсером INI файлов, поэтому используем парсер текстовых файлов.

Создаем шаблон Файлы Adobe Premier, расширение – dat. ESCAPE-символы - C/C++, дополнительное преобразование - \” в ”. Регулярное выражение - ^"(.+?)=([^\r\n]*)"$ , селектор идентификатора строки - $1, строки - $2. В результате данные будут выделяться без кавычек.

txtAdobePremierDATSample_scaled

Файл INI Advanced System Optimizer

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

Создаем новый шаблон, расширение – ini. ESCAPE-символы - C/C++, дополнительное преобразование - ””=>”.

Регулярные выражения:

txtAdvancedSystemOptimizerFile

Результат:

txtASOResult1

txtASOResult2