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

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

Ввод значений на другом языке#

Операция Ввести текст на другом языке позволяет ввести значение на другом языке для выбранного редактируемого поля

В списке выберете редактируемое поле и в контекстном меню выберете Информация -> Ввести текст на другом языке В карточке выберете редактируемое поле и на тулбаре Информация -> Ввести текст на другом языке

Включение#

Для класса Карточка класса -> Характеристики -> Доступен ввод текста на других языках

Глобально Настройки и сервисы -> Настройки модулей системы -> Общие настройки модулей -> btk -> bTextLangEnabledAll