23 способа изменить язык интерфейса в 1С

Программирование - Работа с интерфейсом

128
При работе с 1С интерфейс полностью или частично может отображаться на другом языке. Причем возникать это может как у всех, так и лишь у некоторых пользователей. Инструкция о том, как правильно указать язык работы 1С.

Какие виды языков есть в 1С, зачем они нужны.
- Язык разработки.
- Язык интерфейса платформы.
- Язык интерфейса конфигурации.
- Региональные настройки.
Итоги

Особенно это актуально для многоязычных конфигураций, содержащих несколько языков.

В интернете достаточно много инструкций о том, где именно расположен выбор языка. По запросу "как изменить язык в 1с" гугл выдает 33 тысячи инструкций. Причем совершенно разных

Но проблема в том, что настроек достаточно много и не всегда ясно, какую именно нужно менять. Иногда инструкция помогает в решении проблемы, иногда нет. 

Кажется, что 1С работает криво, запутанно и глючно. На самом деле настройка языка очень проста и работает понятно и четко. Просто языков несколько. И нужно учитывать, какой именно в каких случаях нужно менять. 

Ниже краткая инструкция со всеми основными настройками, который могут влиять на язык отображения в 1С.

Какие виды языков есть в 1С, зачем они нужны.

Язык на самом деле не один, а целых три:

  1. Язык разработки;
  2. Язык интерфейса платформы;
  3. Язык интерфейса конфигурации;

А кроме языков, есть еще и региональные настройки, от которых зависит формат чисел, дат и времени.

Из этих пяти настроек на интерфейс влияют три:

Несмотря на многообразие инструкций и способов выполнения настроек, самих способов указания настроек достаточно мало. Их можно свести всего к пяти.

Язык разработки

Язык разработки (Вариант встроенного языка) - язык используемый для написания исходного кода конфигурации. 

Выбирается основной язык программирования ("Русский" или "Английский").

Назначение:  Выбор определяет, на каком языке будут формироваться языковые конструкции в модулях и выдаваться информация о базовых типах данных. От него зависит, шаблоны какого языка будут использовать при добавлении данных или использовании конструкторов.

При этом независимо от выбранного языка разработки, код можно писать на любом. В том числе и вперемешку на русском и английском. 

Настройка: Язык разработки указывается в свойствах конфигурации в поле "Вариант встроенного языка" 

Для определения встроенного языка конфигурации из кода 1С можно обратиться к метаданным командой  Метаданные.ВариантВстроенногоЯзыка.

Менять данный язык после начала разработки нельзя. Никаких изменений в интерфейсе это не принесет, но может сделать неработоспособным написанный ранее код.

Язык интерфейса платформы.

Язык интерфейса платформы - эта настройка определяет, на каком языке будут выдавать сообщения платформы и отображаться платформенные элементы интерфейса.

В стандартный дистрибутив платформы входят следующие языки интерфейса платформы

английский, азербайджанский, болгарский, венгерский,  вьетнамский, китайский, грузинский, казахский, латышский, литовский, немецкий, польский, румынский, русский, турецкий, украинский, французский.

Соответственно, для работы пользователя можно использовать лишь один из них. Теоретически существует "Механизм быстрого частичного перевода ресурсов платформы", позволяющий для отдельного клиента/партнера в ограниченном варианте самостоятельно добавить в платформу новый язык. Но о реальных случаях использования не слышала.

При необходимости мы можем определить текущий язык интерфейса платформы с помощью функции  ТекущийЯзыкСистемы().

Настройка: Есть несколько способов установить язык платформы. Наиболее простой и наиболее часто используемый это указать язык платформы в целом для всех баз 1С на данном компьютере, прописав его в файле conf.cfg.

Способ 1. Данную настройку проще всего прописать при установке платформы. Для этого достаточно на этапе "Язык интефейса по умолчанию" указать нужный язык. 

Способ 2. Если платформа уже установлена, то можно перезапустить установку параметров. Для этого выбираем "Пуск"-"Панель управления"-"Программы и компоненты". Находим нужную установку 1С и нажимаем "Изменить"

Способ 3. Еще можно напрямую прописать настройку в файл. Обычно он лежит по адресу "C:\Program Files (x86)\1cv8\conf\conf.cfg". Открываем файл, добавляем строчку  "SystemLanguage=RU", сохраняем.

Способ 4. Если язык платформы не прописан, то используются настройки операционной системы по умолчанию.  Для их изменения  выбираем "Пуск"-"Панель управления"-"Язык и региональные стандарты".

Способ 5. При работе в веб-клиенте по умолчанию используется язык, установленный как "предпочитаемый язык" в браузере. Соответственно и менять его нужно в настройках браузера.

Все прошлые способы устанавливают язык платформы в целом для всех баз на компьютере пользователя. Рассмотрим указание языка для конкретного сеанса.

Способ 6.  Если для разных баз нужно использовать разные языки интерфейса, то нужный код языка можно указать в строке запуска 1C  после ключа /L. 

Способ 7. Если при запуске информационной базы выполняется выбор базы через типовой стартер. То ключ запуска /L можно указать в окне "Редактирование информационной базы" в поле "Дополнительные параметры запуска"

Способ 8. При запуске отладки из конфигуратора язык запуска можно указать в параметрах конфигуратора.  "Сервис" - "Параметры" - "Запуск 1С:Предприятия" - "Дополнительные" - "Яык интерфейса системы".

Способ 9. При работе в браузере язык, отличный от языка по умолчанию, можно указать суффиксом адресной строки вида "/en_US/"

Способ 10. На самом деле указание кода языка в строке запуска это самый надежный вариант. Он работает всегда. Если он не сработал, значит, нужный язык просто не установлен в платформе. Возвращаемся на этап установки платформы и выбираем нужный язык.

Язык интерфейса конфигурации

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

Коды языков никак не связаны с кодами интерфейса платформы. Мы можем использовать любой удобный код языка. Язык интерфейса также никак не связан с настройками операционной системы. Он зависит только от разработчика конфигурации и администратора. 

Единственное исключение, это разработка приложения для мобильных устройств. В этом случае рекомендуется указывать коды языков в соответствии со стандартом ISO 639 . Это позволит мобильной платформе устанавливать язык интерфейса конфигураци в зависимости от установленного у пользователя в мобильном телефоне основного языка. В противном случае при проверке конфигурации будет выдаваться предупреждение.

При необходимости мы можем определить текущий язык интерфейса платформы с помощью функции  ТекущийЯзыкСистемы().

Есть всего два способа установки языка интерфейса.

Способ 1. Указать язык для конкретного пользователя в свойствах пользователя информационной базы.

Способ 2. Если у пользователя язык по умолчанию не указан, то будет использоваться язык, указанный в свойствах конфигурации в реквизите "Основной язык". 

При работе в конфигураторе для полей, в которых поддерживается многоязычный ввод, появляется значок лупы. При нажатии на данный значок мы можем корректировать тексты на нескольких языках одновременно. Однако также можем и просто корректировать тексты в любом многоязычном поле напряму без нажатия лупы. В этом случае мы редактируем текст текущего языка, не затрагивая второй язык. Чтобы переключить текущий язык в конфигураторе есть следующие способы:

Способ 3: Выбрать в меню пункт "Конфигурация" - "Язык редактирования конфигурации". Выбрать язык, со значениями которого мы хотим работать в ближайшее время.

Способ 4: Также язык можно переключить мышкой в строке статуса в правом нижнем углу окна конфигуратора.

Способ 5: Для множественного редактирования полезно использовать режим конфигуратора "Правка" - "Редактирование текстов интерфейсов"

Региональные настройки.

Ну и последними стоит упомянуть региональные настройки. Есть региональные настройки Информационной базы в целом и региональные установки текущего сеанса. Режим настройки региональных установок информационной базы позволяет управлять форматом отображения даты, времени, чисел, логических констант и влияет на порядок сортировки строк в списках информационной базы данных.

Варианты языков региональных настроек не зависят от платформы или конфигурации. Они зависят только от возможностей операционной системы. Полный список допустимых вариантов языка региональных настроек можно получить с помощью функции  ПолучитьДопустимыеКодыЛокализации()

Лично у меня в Windows 254 варианта языков, которые можно использовать как основу региональных настроек. 

Используемые базой региональные настройки можно определить с пощью функции  КодЛокализацииИнформационнойБазы()

Региональные настройки ИБ можно установить:

Способ 1: При создании базы. На этапе "Добавление информационной базы" необходимо выбрать язык, который будт использоваться для хранения данных.

Способ 2. Из конфигуратора. В пункте меню  Администрирование – Региональные установки ИБ. Для смены языка информационной базы обязательно использование монопольного режима.

Примечания: Если в качестве СУБД используется PostgreSQL, то для существующей информационной базы изменение языка (страны) не может быть выполнено произвольным образом. Установленное значение языка (страны) можно изменить только на такое, которое будет использовать тот же порядок сортировки строк (collation) СУБД, что и существующее значение. Например, русский (Россия) может быть изменен на белорусский (Беларусь), но не может быть изменен на украинский (Украина).
Если в качестве СУБД используется IBM DB2, то смена значения языка (страны) не поддерживается.

Региональные установки конкретного сеанса влияют на отображение дат, чисел, времени при работе с ИБ. Есть несколько способов установки настройки для конкретного сеанса.

Способ 1: Установка общих настроек для всех сеансов. Для вызова режима нужно выбрать пункт Администрирование – Региональные установки ИБ  и указать региональные параметры.

Способ 2. Если общие значения по умолчанию не установлены, то используются настройки операционной системы. Поэтому можно установить нужные настройки, сменив язык операционной системы.

Способ 3.  Если для разных баз нужно использовать разные региональные настройки, то нужный код языка можно указать в строке запуска 1C  после ключа /VL. 

Способ 4. Если при запуске информационной базы выполняется выбор базы через типовой стартер. То ключ запуска /VL можно указать в окне "Редактирование информационной базы" в поле "Дополнительные параметры запуска"

Способ 5. При запуске отладки из конфигуратора язык запуска можно указать в параметрах конфигуратора.  "Сервис" - "Параметры" - "Запуск 1С:Предприятия" - "Дополнительные" - "Код локализации сеанса".

В процессе работы региональные настройки текущего сеанса можно определить с помощью функции ТекущийКодЛокализации()

Итоги.

Я попыталась собрать в одном месте разнородную информацию о настройке языка в 1С. Думаю, эта статья отлично показывает принцип использования языков и послужит хорошей шпаргалкой при необходимости настройки. 

В целом все варианты работы с языками в 1С можно представить следующим образом:.

Язык

Разработки

Интерфейса платформы

Интерфейса конфигурации

Региональные настройки
ИБ Сеанса
Назначение Разработка кода конфигурации. При работе любых конструкторов латформы имена элементов формируются на этом языке. Сообщения платформы, платформенные элементы интерфейса (рабочий стол, имена стандартных обработок) Весь созданный разработчиком интерфейс (имена документов, справочников, реквизитов); сообщения, предусмотренной логикой работы программы, работа отчетов... Формат хранения данных в базе данных Отображение дат, чисел, времени, логических переменных в сообщениях, полях, календаре....
Преобразование других типов в строку и из строки
Допустимые значения Английский, Русский Предопределенные в платформе (на текущий момент 17 языков) Абсолютно любые языки, созданные разработчиком. В том числе несуществующие. Любые языки, поддерживаемые операционной системой
Полный список ПолучитьДопустимыеКодыЛокализации()
(лично у меня в Windows возвращает 254 кода языка)
Настройка выполняется В метаданных конфигурации 1. В строке запуска /L;
2. В файле настройки conf.cfg
3. В свойствах ОС
1. В свойствах пользователя.
2. В метаданных конфигурации.
В настройках ИБ 1. В строке запуска /VL;
2. В настройках ИБ;
3. В настройках ОС
Как определить используемый Метаданные. Вариант Встроенного Языка ТекущийЯзык Системы() ТекущийЯзык() КодЛокализации Информационной Базы() Текущий Код Локализации()

Несмотря на всё многообразие, исправить проблемы с отображением текстов на другом языке достаточно просто. Нужно лишь понимать, что именно мы меняем в данный момент.

 

128

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
4. LexSeIch 197 05.02.18 03:08 Сейчас в теме
23 - это перебор :-) ... Но если серьёзно, то статья хорошая и полезная: мы порой не обращаем внимания на некоторые, как нам кажется мелочи, а потом тратим время на поиск нужной информации. Здесь же особенности использования языка представлено в "концентрированном" виде. Плюс безусловно.
5. kolya_tlt 11 05.02.18 09:48 Сейчас в теме
да уж. пока заставить работать конфигурацию на другом языке стоит неимоверных усилий.
6. popenko 05.02.18 23:42 Сейчас в теме
спасибо Евгения, приходишь к клиенту, а у него кто то уже "по настраивал" и времени разбираться нет и доказывать не хочется (клиент уже с амбициями) - а так сунул под нос - читай.... мне понравилось - наглядно
7. nytlenc 268 06.02.18 12:11 Сейчас в теме
Как не переключай, а исходный код конфы который наколбасили на русском, так и останется - на русском. И смысл в такой мультиязычности?
8. ekaruk 4215 06.02.18 12:36 Сейчас в теме
(7) В данном случае мультиязычность заключается в возможности писать на двух языках. Какой программисту удобнее. Причем код может быть одновременно на двух. Т.е. дописывать можно и на другом языке.
В EDT что-то упоминали про возможность автоперевода. Но пока вроде нету. Если и будет, то для двуязычных конструкций. Переменные всё равно останутся на исходном языке.
Алексей_mir2mb; +1 Ответить
9. nytlenc 268 06.02.18 12:52 Сейчас в теме
(8)
Переменные всё равно останутся на исходном языке.

так вот... В том то и дело... И это как минимум. Возможно что-то еще.
10. ekaruk 4215 06.02.18 12:57 Сейчас в теме
(9) Не вижу особой проблемы в двуязычном коде. Разумеется, если это тиражное решение, то язык должен быть один. Но если это доработка для конкретной компании, но ничего не мешает часть модулей и обработок дописывать на другом языке.
Или просто встроить какую-то подсистему на другом языке.
Т.е. не смешивать код внутри процедур, а просто часть объектов (модулей, обработок, справочников) добавить на другом языке.
Алексей_mir2mb; +1 Ответить
11. logarifm 1020 06.02.18 21:10 Сейчас в теме
однозначно +
А если у вас не было заказчиков которые требует интерфейсы на русском+ англ. это не означет, что это ненужно другим.
12. IgorS 42 07.02.18 12:08 Сейчас в теме
Спасибо, своевременная стать. У нас в компании всё громче говорят о необходимости перевести базу на украинский. Проблема, что за долгие годы доработок над украинскими синонимами объектов, строковых сообщений и пр.никто не парился.
13. ekaruk 4215 07.02.18 12:57 Сейчас в теме
(12) Если в конфигурации есть изначально украинский интерфейс, то доперевести нужно только свои доработки.
Тут идеально подходит режим "Редактирование текстов интерфейсов".
Сортируете по колонке "укр" и видите все непереведенные фразы.
14. DAnry 6 07.02.18 13:16 Сейчас в теме
Огромное спасибо. Впервые вижу такое полное описание работы с языками в одной статье.
Алексей_mir2mb; ekaruk; +2 Ответить
15. ekaruk 4215 07.02.18 13:27 Сейчас в теме
(14) В этом и смысл статьи. Собрать в одном месте то, что уже описано в разных :)
16. mvsemenov 16 07.02.18 14:52 Сейчас в теме
Отличная статья, спасибо! все собрано структурировано.Однозначно в избранное ))
17. Salavat 12 22.03.18 11:43 Сейчас в теме
Хорошая статья, Спасибо!

У меня вопрос по теме, помогите пожалуйста решить.

Есть:
1. Конфигурация - 2 языка.
(Пользователи - обоих языков)
2. Есть Форма обработки с динамическими (изменяется состав и наименования их) кнопками, в зависимости от Пользователя.
3. Наименования этих кнопок берутся из справочника.
(Один элемент имеет одно наименование для каждой кнопки).
4. Справочник заполняется (конкретно - Наименование) из Макета Табличного Документа.
В Макете наименования, заданы текстом в ячейках - двумя языками.
Заполнение происходит очень редко (т.к. - количество, положение и наименование кнопок, практически постоянно).

Т.е. сейчас получается - в каком сеансе (с каким языком) произошло заполнение справочника, эти значения (одноязычные!) и передаются всем (обоим языкам).

Вопрос - можно ли сделать заполнение справочника, в многоязычном варианте?

т.е. заполнять строками, типа "ru = 'Русский'; en = 'English'".
а уж наименования буду присваивать, через НСтр().
(в макете, задан текст - "Русский" и 'English", для соответствующих языков)
19. ekaruk 4215 28.03.18 13:11 Сейчас в теме
(17) Логичнее хранить в справочнике наименования на обоих языках и подставлять в зависимости от языка пользователя.
Макет вполне может быть двуязычным.
Просто при заполнении справочника по макету переключаете КодЯзыка у макета и берете из него оба значения.
21. Salavat 12 28.03.18 21:18 Сейчас в теме
(19), так я про это и говорил.
И в продолжении же и сказал, что:
Да, в макете введены тексты на 2 языках, но - не в разных ячейках, а в одной (для соответствующего языка).
Вот я спросил - есть ли способ обойти, именно введёные тексты "разноязычные из одной ячейки" и также (ну, или - привести её к виду, перевариваемому через "НСтр()") многоязычно сохранить их в справочнике?
чтобы разноязычные пользователи, считывали значения из этого справочника, в зависимости от языка своего режима.

---
Спрашиваю, потому что уже реализовано так (загружается/используется, только один язык), вот и думаю - как выкрутиться теперь.
22. ekaruk 4215 28.03.18 21:27 Сейчас в теме
(21) Сделайте в справочнике два поля и загружайте оба языка. Выводите тот, который нужен.
Обойти макет можно. У макета есть свойства "КодМакета". Считали один язык, поменяли свойство, считали другой язык
23. Salavat 12 30.03.18 08:39 Сейчас в теме
(22) Действительно есть, Спасибо и за это, тоже.

(только, название точнее - "КодЯзыкаМакета").
18. Brawler 404 28.03.18 13:00 Сейчас в теме
Вот бы еще увидеть чьи-то примеры из практики ведения в базе данных объектов на разных языках.
Как пример справочники: номенклатур, характеристики.
База используется на Русском, а вот прайсы на разных языках печатать нужно и в разной валюте.
Отсюда вытекает необходимость прикручивания к базе переводчика облегчающего жизнь ответственному за НСИ.

В частности мне пришлось реализовывать отдельный регистр сведений с
измерениями: Объект, Язык
ресурсом: Наименование

Потом этот регистр сведений использовать в отчетах, печати этикеток...

Ну и Яндекс.Переводчик прикрутить удалось))
20. ekaruk 4215 28.03.18 13:12 Сейчас в теме
(18) Собственно, это и есть наиболее логичное решение.
Хранение нескольких языков плюс автоперевод с ручной корректировкой.
24. user973931 16.05.18 16:59 Сейчас в теме
Спасибо за подробное и в принципе понятное описание.
Мне, как новичку в 1С, очень пригодиться.

К сожалению, не понял как применить это к моей проблеме - выставить русский в клиенте для MacOS. Различные советы из гугла не помогают - после запуска клиент остается двуязычный (англ/рус) - т.е. часть текста (меню и т.п.) на русском, часть на английском.
На Windows проблем нет, а вот макинтош... :(
Вопрос касается УНФ, платформа и клиент 8.3.10.2252, MacOS Hihgh Sierra 10.13.2
25. payta 16.05.18 17:23 Сейчас в теме
(24) в профиле какая локаль установлена?
27. user973931 16.05.18 18:53 Сейчас в теме
Русский, если я правильно понял вопрос.
Либо ткните новичка, куда конкретно смотреть... :)
29. payta 17.05.18 13:53 Сейчас в теме
(27) самый примитивный способ узнать - запустить finder и посмотреть наверху, в строке меню на каком оно языке.
Выберите меню Apple > «Системные настройки», затем нажмите «Язык и регион».
Убедитесь что русский у вас находится на самом верху во всех списках.
26. ekaruk 4215 16.05.18 17:38 Сейчас в теме
(24) С Мак не работала, но принципы должны быть те же.
Какой именно язык остается английским? язык платформы или колнфигурации?
Если возможно, выложите скриншот того, как все выглядит.
28. user973931 16.05.18 19:00 Сейчас в теме
По малоопытности, тяжко с определением, что к чему относится.
Проблема проявляется и на кнопках и в пунктах меню...
Скрин выложу попозже - как доберусь до "больного"...
30. Алексей_mir2mb 24.10.18 10:09 Сейчас в теме
Основная проблема при локализации данных справочников - это невозможность задать разноязычные варианты для основного реквизита "Наименование", который используется в качестве представления элемента справочника на формах для выбора элемента или открытия карточки. У нашего клиента работают пользователи на двух языках. Мы сделали доработку "Локализация наименований элементов справочника" для решения этого вопроса. После встаивания подсистемы в конфигурацию добавление 1 справочника в перечень локализованных занимает 5 мин. В том числе сделали инструменты массовой выгрузки исходных наименований и загрузки результатов перевода.
user606981_tepark15; +1 Ответить
Оставьте свое сообщение