При разработке интернациональных решений на платформе «1С:Предприятие 8» программисты часто сталкиваются с тем, что заголовки стандартных кнопок, таких как «Провести и закрыть», «Записать» или «Отмена», остаются на русском языке, даже если в настройках пользователя указан другой язык интерфейса. Разберем подробно, почему так происходит и как корректно перевести системные элементы интерфейса, используя возможности платформы.
Для начала проанализируем важную особенность: стандартные команды формы — это ресурсы самой платформы, а не конкретной конфигурации. В то время как названия полей, заголовки документов и справочников хранятся в метаданных, тексты системных кнопок подтягиваются из файлов локализации платформы. Если при установке 1С на компьютер пользователя или сервер был выбран только русский язык, платформа физически не сможет отобразить кнопки на английском или другом языке, так как необходимые файлы перевода (с расширением .res) будут отсутствовать в каталоге установки.
Рассмотрим по шагам основные способы перевода интерфейса.
Самый быстрый и эффективный способ сменить язык интерфейса для конкретного пользователя — использование ключей командной строки при запуске 1С. Выясним, как правильно прописать эти параметры:
/L с указанием кода языка. Например, для английского языка это будет /L en.Важно: обратите внимание на наклон косой черты. В платформе используется прямой слеш /. Опечатка, например использование обратного слеша \L, приведет к тому, что параметр будет проигнорирован. Также помните, что ключ /L влияет именно на язык интерфейса (меню, системные диалоги, кнопки платформы).
Если нам необходимо также изменить форматы отображения дат и чисел (например, чтобы дата выводилась в формате MM/DD/YYYY), следует использовать дополнительный ключ /VL. Посмотрим на пример совместного использования этих параметров:
/L en /VL en_US
Для того чтобы конфигурация понимала, на какие языки она может быть переведена, необходимо настроить объект «Языки» в ветке «Общие». Разберем этот процесс:
Общие -> Языки.English) и укажем его код en.После добавления языка в конфигурацию у каждого объекта (заголовки справочников, названия реквизитов) появится возможность ввода синонима для каждого из указанных языков. Однако помните, что это не изменит автоматически системные кнопки «Провести» — они по-прежнему зависят от настроек запуска и наличия языковых пакетов платформы.
В клиент-серверном варианте работы некоторые сообщения или отчеты могут формироваться на стороне сервера. Чтобы сервер корректно обрабатывал языковые настройки, проанализируем файл conf.cfg. Этот файл располагается в каталоге bin/conf установленной платформы.
В этом файле можно жестко задать системный язык с помощью параметра SystemLanguage. Например:
SystemLanguage=EN
Это бывает критично для регламентных заданий, которые выполняются без участия клиента. Если сервер «не знает» о необходимости использовать английский, сформированные им уведомления могут уйти пользователю на русском языке.
Если пользователи работают через браузер, ключи запуска в ярлыке не сработают. В этой ситуации проанализируем параметры URL. Чтобы переключить язык в веб-клиенте, необходимо добавить к адресу информационной базы параметр L:
http://server/base_name?L=en
Также язык может определяться настройками самого браузера (приоритетом языков в настройках Chrome или Firefox) или параметрами в файле публикации default.vrd на веб-сервере (Apache или IIS).
Когда стандартные кнопки переведены платформой, остается задача перевода элементов, созданных программистом. Чтобы не открывать каждую форму отдельно, в 1С реализован удобный механизм групповой обработки. Выполним следующие действия:
Иногда требуется изменить логику работы программы в зависимости от того, какой язык интерфейса выбрал пользователь. Рассмотрим, как это сделать с помощью встроенного языка 1С. Для этого воспользуемся функцией ТекущийЯзыкСистемы().
// Пример проверки языка для вывода сообщения
Если ТекущийЯзыкСистемы() = "en" Тогда
Предупреждение("The document has been posted successfully.");
Иначе
Предупреждение("Документ успешно проведен.");
КонецЕсли;
Если штатный перевод платформы по каким-то причинам вас не устраивает (например, вместо «Post and close» вы хотите видеть «Save & Finish»), единственный способ изменить текст стандартных кнопок — это их ручное переопределение в форме. Проанализируем этот алгоритм:
Автозаполнение.ЗаписатьИЗакрыть).Заголовок для каждой созданной кнопки вы сможете указать любой текст на любом языке, используя механизм строк на разных языках (нажав на кнопку с лупой в поле ввода заголовка).Резюмируем: для успешного перевода стандартных команд прежде всего убедитесь, что при установке платформы были выбраны языковые пакеты, используйте корректный ключ запуска /L с прямым слешем и не забудьте настроить объект «Языки» в самой конфигурации для перевода прикладных элементов.