Локализация приложений
Contents
Локализация приложений#
Локализация приложений осуществляется средствами 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/>