Перейти к содержанию

Локализация

На вкладке “Локализация” приложения TessaAdmin можно редактировать библиотеки локализации. Каждая библиотека содержит список локализуемых строк.

Каждая локализованная строка имеет глобальный в рамках системы алиас (поле Name), комментарий, который помогает понять контекст использования данной строки и несколько локализованных значений.

Подробно редактирование библиотек локализации описано в руководстве администратора.

В данном руководстве описано использование строк локализации для настройки системы и расширений.

Каждая стока локализации имеет алиас(имя). Система идентифицирует строки глобально по этому алиасу. Строка с одним и тем же алиасом может содержаться в нескольких библиотеках, в этом случае будет использовано локализованное значение из библиотеки с более высоким приоритетом.

Терминология

  • Когда мы говорим про использование $Name или просто алиаса локализованной строки, это значит, что в данном месте можно указать $Name и система автоматически отобразит локализованное значение.

  • Когда мы говорим про использование форматной строки или плейсхолдеров {$Name}, имеется в виду что в данном месте можно указать строчку вида Text {$Name1} more text {$Name2}, где при отображении система автоматически заменит в форматной строке алиасы локализованных строк на их значения и отобразит результат.

Далее описаны все места, где можно использовать строки локализации.

Метаинформация представлений

  • Поле Caption объектов Column, Param, Subset

Вывод локализованного представления в колонке представления

Для колонки надо выставить #column(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_expr(Locale...).

Important

Везде где можно, рекомендовано пользоваться авто-локализуемыми колонками с #column(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.
Back to top