HiAsm4 | - Локализация |
Локализация
Задача локализации
Локализация приложения предполагает поддержку в нем одного основного и некоторого количества дополнительных языков. Как правило, локализация программы предполагает загрузку языкозависимого интерфейса программы из файла (или ресурса) с переведенным текстом. Конструктор программ как раз и позволяет осуществить эти механизмы наиболее удобным способом, не отнимая у разработчика много времени и сил и позволяя сосредоточится на самом переводе, а не на его реализации.
Реализация в приложении
Рассмотрим простой пример поддержки локализации интерфейса приложения с двумя элементами. Вот его схема:
После запуска формы станет очевидно, что в данной программе переводу подлежат при надписи:
- Form - заголовок формы, он же значение свойства Caption элемента MainForm
- Push - заголовок кнопки, он же значение свойства Caption элемента Button
- Label - текст надписи, он же значение свойства Caption элемента Label
Для поддержки локализации этих трех свойств выполним последовательно следующие шаги:
Шаг первый: установим для каждого свойства флаг "перевода". Для этого достаточно выделить элемент на рабочем столе и в панели Свойства нажать правую кнопку мыши на свойстве, которое надо локализовать. В появившемся контекстном меню необходимо выбрать пункт "Перевести", как показано на рисунке справа. Аналогичные действия нужно проделать для свойств двух оставшихся элементов.
Шаг второй: на втором шаге необходимо вернуться к Палитре элементов и вытащить на рабочий стол элемент вкладки Помощники группы Схема с именем Translator (Перевод). Именно этот элемент и осуществляет все действия по локализации указанных в схеме свойств.
Шаг третий: кликнув два раза по элементу Translator (или войдя в редактирование его свойства LangWords) среда отобразит полный список всех фраз, которые ранее были отмечены для перевода.
Важно отметить тот факт, что данный список никак не связан с конкретными свойствами конкретных элементов. Среда всего лишь при каждом его открытии на редактирование сканирует всю схему на наличие элементов со свойствами, помеченными флагом "перевод", и добавляет их значение к списку, если таковые там еще не присутствуют. Это значит, что если вы после приделанных выше действий измените скажем заголовок формы с "Form" на "My Super Form", то при повторном редактировании свойства LangWords элемента Translator увидите, что появился новый пункт списка с именем "My Super Form". При данном подходе фразы и слова родного языка программы (того, на котором они пишутся в схеме проекта) являются ключами для перевода на остальные языки. Поэтому рекомендуется в качестве основного выбирать Английский или другой распространенный язык, что в дальнейшем облегчит процедуру локализации.
Для того, чтобы осуществить перевод на более чем один язык необходимо вытащить на схему соответствующее количество элементов Translator и у каждого указать уникальное имя языка, на который он переводит фразы, в свойстве Lang. Именно по этому параметру приложение в дальнейшем будет выбирать какой именно язык применять в зависимости от настроек в реестре или ini файле.
Пример готового приложения можно посмотреть в пакете %hiasm%ElementsDelphiExampleSystemTranslate.sha
Add(MainForm,2953706,49,98)
{
}
Add(Button,2637928,105,98)
{
Left=125
Top=60
}
Add(Label,5949259,161,98)
{
Left=210
Top=65
}
- Form - заголовок формы, он же значение свойства Caption элемента MainForm
- Push - заголовок кнопки, он же значение свойства Caption элемента Button
- Label - текст надписи, он же значение свойства Caption элемента Label
Для поддержки локализации этих трех свойств выполним последовательно следующие шаги:
Шаг первый: установим для каждого свойства флаг "перевода". Для этого достаточно выделить элемент на рабочем столе и в панели Свойства нажать правую кнопку мыши на свойстве, которое надо локализовать. В появившемся контекстном меню необходимо выбрать пункт "Перевести", как показано на рисунке справа. Аналогичные действия нужно проделать для свойств двух оставшихся элементов.
Шаг второй: на втором шаге необходимо вернуться к Палитре элементов и вытащить на рабочий стол элемент вкладки Помощники группы Схема с именем Translator (Перевод). Именно этот элемент и осуществляет все действия по локализации указанных в схеме свойств.
Шаг третий: кликнув два раза по элементу Translator (или войдя в редактирование его свойства LangWords) среда отобразит полный список всех фраз, которые ранее были отмечены для перевода.
Важно отметить тот факт, что данный список никак не связан с конкретными свойствами конкретных элементов. Среда всего лишь при каждом его открытии на редактирование сканирует всю схему на наличие элементов со свойствами, помеченными флагом "перевод", и добавляет их значение к списку, если таковые там еще не присутствуют. Это значит, что если вы после приделанных выше действий измените скажем заголовок формы с "Form" на "My Super Form", то при повторном редактировании свойства LangWords элемента Translator увидите, что появился новый пункт списка с именем "My Super Form". При данном подходе фразы и слова родного языка программы (того, на котором они пишутся в схеме проекта) являются ключами для перевода на остальные языки. Поэтому рекомендуется в качестве основного выбирать Английский или другой распространенный язык, что в дальнейшем облегчит процедуру локализации.
Для того, чтобы осуществить перевод на более чем один язык необходимо вытащить на схему соответствующее количество элементов Translator и у каждого указать уникальное имя языка, на который он переводит фразы, в свойстве Lang. Именно по этому параметру приложение в дальнейшем будет выбирать какой именно язык применять в зависимости от настроек в реестре или ini файле.
Пример готового приложения можно посмотреть в пакете %hiasm%ElementsDelphiExampleSystemTranslate.sha
Поддержка файлов локализации
Описанный выше способ подходит для тех случаев, когда локализация зашита в программу и дальнейший перевод не требуется. Кроме того такое решение хорошо еще и тем, что не использует внешние файлы. Однако когда необходимо предоставить возможность локализации уже скомпилированной программы, то данные с переведенными фразами должны лежать во внешних файлах, чтобы пользователь имел возможность исправить их или перевести на другие языки.
Для этого необходимо поместить на схему всего один элемент Translator и указать в его свойстве LangDir папку, в которой будут лежать файлы с расширением *.lng. Для получения первого такого файла необходимо зайти в редактор свойства LangWords и экспортировать сгенерированный список в этот файл. При этом имена lng файлов без расширения используются в качестве уникального имени языка, которое сохраняется в настройках приложения и определяет текущий язык.
Для этого необходимо поместить на схему всего один элемент Translator и указать в его свойстве LangDir папку, в которой будут лежать файлы с расширением *.lng. Для получения первого такого файла необходимо зайти в редактор свойства LangWords и экспортировать сгенерированный список в этот файл. При этом имена lng файлов без расширения используются в качестве уникального имени языка, которое сохраняется в настройках приложения и определяет текущий язык.
BB-code статьи для вставки