Локализация приложений#
Локализация приложений осуществляется средствами Java Resource Bundle и специальными тегами, внедряемыми в код и метаданные приложений.
Словари#
Для хранения строк на разных языках используются словари. Словарём является пакет ресурсов (Resource Bundle), содержащий properties-файлы
со строками {ключ}={значение}:
{имя_словаря}.properties- словарь по умолчанию{имя_словаря}_{язык}.properties- словарь для указанного языка.{имя_словаря}_{язык}_{локаль}.properties- словарь для указанного языка с уточнением локали.
Создание словаря#
Новый словарь создается через контекстное меню от каталога с ресурсами.
В IDEA перейдите в каталог в котором хотите создать словарь.
Вызовите на каталоге контекстное меню.
Выполните пункт
New > Resource Bundle.
Имя словаря должно совпадать с именем сущности или пакета.
В создавшиеся файлы, добавьте локализованные строки в формате{ключ}={значение}:
Сaption=Валюта
ID=Идентификатор
MultiLineName=Многострочный \
текст
При создании многострочной ресурсной строки,
каждую строку необходимо заканчивать символом \.
Использование локализованных строк#
Локализация строк доступна в:
Scala-коде
*Dvi/Avi– классов.Scala-коде
*Dpi/Api– классов.Scala-коде
*_Pkg– классов.Аннотациях
@Oper,@MainSelection.*.avm.xml– файлах (для свойств, хранящих «наименование»)
Для получения значения локализованной строки из словаря, имя которого
совпадает с текущей сущностью, необходимо указать ключ локализованной
строки, обрамлённый тегами: [#Ключ_строки].
Если необходимо получить значение строки из произвольного словаря, необходимо указать полный путь к словарю: [#ru/bitec/app/{модуль}/Словарь.Ключ_строки].
Локализованные строки в Scala-коде#
Для подстановки локализованного значения строки в Scala-код используется
макрос ls"#Ключ_строки" или ls"""#Ключ_строки""".
def foo(): Unit = {
showMessage(ls"[#MyLocalizedMessage]")
}
Локализованные строки в аннотациях#
@MainSelection(caption = "[#Gs3_StockMainMenu.caption]")
object Gs3_StockMainMenuAvi extends ProjectApplicationAvi {}
Локализованные строки в *.avm.xml#
<representation caption="[#caption]">
<attributes>
<attr name="sSystemName"
caption="[#sSystemName]"
isVisible="true"/>
<attributes/>
<representation/>
Ввод значений на другом языке#
Операция Ввести текст на другом языке позволяет ввести значение на другом языке для выбранного редактируемого поля.
Операция доступна если:
Ввод включен в характеристиках класса или глобально в настройках модуля
btk.Поле в выборке называется так же как и атрибут у редактируемого объекта класса.
Поле редактируемо.
Поле должно быть выбрано (нажали на поле ввода).
В списке выберете редактируемое поле и в контекстном меню выберете Информация -> Ввести текст на другом языке. В карточке выберете редактируемое поле и на тулбаре Информация -> Ввести текст на другом языке.
Включение#
Для класса Карточка класса -> Характеристики -> Доступен ввод текста на других языках.
Глобально Настройки и сервисы -> Настройки модулей системы -> Общие настройки модулей -> btk -> bTextLangEnabledAll.