Локализация¶
На вкладке “Локализация” приложения TessaAdmin можно редактировать библиотеки локализации. Каждая библиотека содержит список локализуемых строк.
Каждая локализованная строка имеет глобальный в рамках системы алиас (поле Name), комментарий, который помогает понять контекст использования данной строки и несколько локализованных значений.
Подробно редактирование библиотек локализации описано в руководстве администратора.
В данном руководстве описано использование строк локализации для настройки системы и расширений.
Каждая стока локализации имеет алиас(имя). Система идентифицирует строки глобально по этому алиасу. Строка с одним и тем же алиасом может содержаться в нескольких библиотеках, в этом случае будет использовано локализованное значение из библиотеки с более высоким приоритетом.
Терминология
-
Когда мы говорим про использование
$Name
или просто алиаса локализованной строки, это значит, что в данном месте можно указать$Name
и система автоматически отобразит локализованное значение. -
Когда мы говорим про использование форматной строки или плейсхолдеров
{$Name}
, имеется в виду что в данном месте можно указать строчку видаText {$Name1} more text {$Name2}
, где при отображении система автоматически заменит в форматной строке алиасы локализованных строк на их значения и отобразит результат.
Далее описаны все места, где можно использовать строки локализации.
Вывод локализованных значений в строках представления для колонки
В настройках колонки необходимо выставить флаг Localizable: true
. Для этой колонки запрос может возвращать значения в формате строки локализации $Name
или плейсхолдера {$Name}
для форматной строки.
Получение значения локализованной строки из SQL
-
Функция GetString(@name, @culture) - Получает на вход алиас строки (без
$
) и культуру, возвращает локализованную строку или $name, если локализация не нашлась -
Функция Localization(@name, @culture) - Локализует строку
@name
, заданную как$Name
, для культуры с кодом@culture
, и возвращает таблицу с единственной колонкойValue
и единственной строкой.Если соответствующей строки локализации нет, то возвращает исходную строку @name.
Если строка не начинается с
$
, то возвращает исходную строку@name
.Строка возвращается всегда, поэтому использовать можно через
cross apply dbo.Localization(t.Name, @culture)
-
Функция Localize(@name, @culture) - Локализует строку
@name
, заданную как$Name
, для культуры с кодом@culture
.Если соответствующей строки нет, то возвращает исходную строку @name.
Если строка не начинается с $, то возвращает исходную строку @name.
Для доступа к идентификатору клиентской локали из кода представлений используется автоматически определяемый системой параметр Locale. Использовать как обычный параметр #param(Locale...)
.
Important
Везде где возможно, рекомендуется использовать автоматическую локализацию значений строк представления с включенным флагом Localizable: true
в редакторе метаданных колонки.
Рабочие места
$Name
можно подставить в имя рабочего места, имя папки, заголовок узла с представлением, заголовок подмножества
Формы карточек и заданий
-
Заголовок типа карточки:
$Name
-
Заголовок вкладки, блока, контрола, колонки таблицы:
$Name
-
Поле “Сообщение об ошибке” валидаторов not null:
$Name
или плейсхолдеры{$Name}
-
Колонка.Формат строки можно использовать плейсхолдеры
{$Name}
и{0},{1}...
. Плейсхолдерами могут быть номера связанных полей и алиасы строк локализации. При этом значения полей связанных строк (в форматной строки они обозначаются через порядковые номера {0}, {1}, …) также могут быть как вида$Name
, так и форматной строкой с плейсхолдерами{$Name}
-
Текст.Формат поля: аналогично “Колонка.Формат строки”
-
Элемент управления.Всплывающая подсказка: можно плейсхолдеры
{$Name}
, можно строку локализации$Name
, можно без локализации, причём переводы строк можно задать как\n
-
Автокомплит(ссылка).Формат поля - может использовать плейсхолдеры строк локализации
{$Name}
и номера связанных полей карточки{0}
-
Метка.Текст -
$Name
или плейсхолдеры{$Name}
-
В колонке выпадающего списка автомкомплита(ссылка) (при наборе текста или использовании выпадающего списка) может быть строка в формате
$Name
. Система автоматически подставит значение вместо алиаса.Warning
Это произойдет только для отображения!!! После выбора значения в карточку запишется алиас!!!
-
В полях карточки, на которые ссылается автокомплит(ссылка) может быть строка в формате
$Name
. При формировании текста, который должен отобразиться в контроле, система заменит их на значения. -
В ячейках таблицы на форме карточки можно использовать
$Name
или плейсхолдеры{$Name}
- для отображения они будут заменены на значения.
Из xaml
- Расширение разметки
{Localize ResourceKey}
Из кода
-
Получаем локаль через
LocalizationManager.CurrentUICulture
илиISession.ClientUICulture
-
Получаем локализованную строку без доллара
LocalizationManager.GetString("Name")
-
Получаем локализованную строку с долларом
LocalizationManager.Localize("$Name")
-
Форматируем строку с плейсхолдерами
LocalizationManager.Format(" ... {$Name} ... ")
Настройки типового решения
- В поле Название карточки типа документа можно использовать
$LocalizedString
.