При работе с иностранными пользователями или внедрении решений за пределами русскоязычного пространства возникает задача отображения интерфейса 1С на английском языке. Разберем по шагам, как устроена мультиязычность в платформе 1С:Предприятие, какие параметры запуска отвечают за язык платформы и как правильно подготовить конфигурацию к переводу.
Для понимания принципов локализации важно различать два независимых уровня интерфейса:
Рассмотрим ключи запуска, которые передаются исполняемому файлу 1cv8.exe или указываются в дополнительных параметрах запуска информационной базы в окне запуска 1С:
/L en или /LEN — задает код языка интерфейса платформы. Платформа 1С поддерживает локализацию на различные языки (например, en — английский, de — немецкий, uk — украинский, kk — казахский, pl — польский, ro — румынский, vi — вьетнамский, tr — турецкий). При указании ключа /L en системные меню и окна будут выводиться на английском языке./VL en_US (или /VL en_GB) — переключает региональные стандарты (форматирование даты, времени, чисел и разделителей). Это важно для того, чтобы даты отображались в принятом для англоязычных пользователей виде.Для веб-клиента переключение языка выполняется через добавление параметра в адресную строку браузера (например, ?lang=en) либо через файл параметров публикации default.vrd.
Если запустить типовую русскую конфигурацию (например, «1С:Бухгалтерия предприятия») с ключом /L en, на английском отобразится только часть системного меню. Все прикладные объекты останутся на русском языке. Проанализируем, что необходимо настроить в конфигураторе:
Общие → Языки необходимо добавить объект с кодом языка en и наименованием English (английский). Без этого объекта платформа не сможет хранить параллельные синонимы объектов.en.НСтр() или NStr() с перечислением языковых вариантов:
Предупреждение(НСтр("ru='Недостаточно товара на складе!'; en='Insufficient stock!'"));
Для массового перевода интерфейса в конфигураторе предусмотрен встроенный инструмент: главное меню Правка → Редактирование текстов интерфейса. Выясним причину частых ошибок при его использовании:
.mxl, внести переводы во вторую языковую колонку и загрузить обратно по кнопке «Заполнить тексты»..mxl в сторонних текстовых редакторах (например, Notepad++ или блокноте) повреждает служебные заголовки и BOM-маркеры разметки MOXCEL.Посмотрим на пример кода, позволяющий при запуске приложения проверять соответствие языка пользователя системному языку сеанса и при необходимости перезапускать сеанс с нужным ключом /L:
// Модуль управляемого приложения (или Модуль обычного приложения)
Процедура ПриНачалеРаботыСистемы()
ЯзыкПользователя = ОбщийМодульКлиент.ПолучитьКодЯзыкаПользователя();
ЯзыкСистемы = ОбщийМодульКлиент.ПолучитьКодЯзыкаСистемы();
Если ЯзыкПользователя <> ЯзыкСистемы Тогда
ЗапуститьПриложение("/L " + ЯзыкПользователя, Истина);
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
// Пример реализации в общем модуле
Функция ПолучитьКодЯзыкаПользователя() Экспорт
Возврат ТекущийЯзык().Код;
КонецФункции
Функция ПолучитьКодЯзыкаСистемы() Экспорт
Возврат ТекущийЯзыкСистемы();
КонецФункции
При адаптации типовых российских конфигураций важно учитывать несколько ограничений: