Локализация приложений#

Локализация приложений осуществляется средствами Java Resource Bundle и специальными тэгами, внедряемыми в код и метаданные приложений.

Словари#

Для хранения строк на разных языках используются словари. Словарём является пакет ресурсов (Resource Bundle), содержащий properties-файлы со строками {ключ}={значение}:

  • {имя_словаря}.properties
    Словарь по умолчанию

  • {имя_словаря}_{язык}.properties
    Словарь для указанного языка.

  • {имя_словаря}_{язык}_{локаль}.properties
    Словарь для указанного языка с уточнением локали.

Создание словаря#

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

  1. В idea перейдите в каталог в котором хотите создать словарь

  2. Вызовите на каталоге контекстное меню

  3. Выполните пункт 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/>