#std766¶
Макеты: требования по локализации и поддержке разных языков интерфейса¶
1.¶
Обычно перевод табличных, текстовых и HTML-макетов не требует специальных подготовительных действий. Исключение: двоичные макеты, которые нужно переводить, и HTML-макеты с изображениями, где текст внутри изображений должен отличаться по языкам.
Такие макеты помечайте постфиксом в имени: _кодЯзыка, где код совпадает со свойством Код языка в метаданных.
Для русского языка это _ru.
Неправильно
Макет ПФ_ODT_СчетНаОплату
Правильно
Макет ПФ_ODT_СчетНаОплату_ru
При добавлении языков интерфейса добавляйте макеты с соответствующими постфиксами и выбирайте их в коде по языку.
Чтобы снизить риск ошибок при частичном переводе, получайте макет в три этапа:
- сначала по
ИмяМакета + "_" + ТекущийЯзык(); - если не найден, по
ИмяМакета + "_" + Метаданные.ОсновнойЯзык.КодЯзыка; - если не найден, по исходному имени
ИмяМакета; - затем устанавливайте
КодЯзыка(для табличного документа) илиКодЯзыкаМакета(для текстового документа и HTML-макета), как в п. 2.
2.¶
В многоязычной конфигурации может потребоваться в одном сеансе формировать печатные формы на языке, отличном от текущего языка интерфейса. Например, в англоязычном сеансе формировать счет на русском языке.
Для получения данных из табличного, текстового или HTML-макета на заданном языке используйте:
КодЯзыкау табличного документа;КодЯзыкаМакетау текстового документа и HTML-макета.
Правильно
3.¶
В многоязычной конфигурации может понадобиться формировать печатные формы строго на одном языке независимо от текущего языка интерфейса. Пример: регламентированная отчетность для госучреждений.
Для табличных и HTML-макетов такого типа:
- указывайте постфикс кода языка в имени (как в п. 1);
- при программном получении устанавливайте код языка макета (как в п. 2).
Такие макеты не переводите на другие языки интерфейса.
При программном формировании текстов для заполнения макета явно задавайте второй параметр в НСтр(), чтобы строки были на том же языке, что и макет.
Неправильно
Правильно
При использовании БСП и подсистемы Печать получение макета через
УправлениеПечатью.МакетПечатнойФормы("ПФ_MXL_СчетФактура") возвращает форму ПФ_MXL_СчетФактура_ru и устанавливает у макета свойство КодЯзыка.
4.¶
Если в текстах макетов используются именованные параметры подстановки, соблюдайте требования #std761: Интерфейсные тексты в коде: требования по локализации.
5.¶
Используйте в макетах кодировку UTF-8.
6.¶
По возможности группируйте однотипные макеты: используйте один макет вместо нескольких.
Например, если несколько однотипных сообщений записываются в один справочник, их лучше хранить в одном макете.
Правильно

7.¶
Внешние компоненты размещайте в макетах с типом внешняя компонента.
При разработке внешней компоненты обрабатывайте метод SetLocale для локализации по полученному коду локали.
Подробнее: #metod3221: Технология создания внешних компонент.
Если полученный код локали не поддерживается, компонент должен настроить свое окружение на использование английского языка.
