Локализация стандартных текстов интерфейсов в управляемом приложении

11.05.12

Разработка - Работа с интерфейсом

Частичное решение задачи

Локализация стандартных текстов интерфейсов в управляемом приложении

 

В рабочей базе существуют русскоязычные пользователи (восточный и южный регион) и украиноязычные (западный регион и тру украинцы). При украинизации текстов интерфейсов столкнулся с проблемою редактирования надписей на стандартных элементах интерфейсов форм (Записать и закрыть, сохранить, сформировать и т.д.). Нашел 2 выхода из ситуации - устанавливать язык приложения при установке украинским или динамически изменять надписи и всплывающие подсказки при создании форм. Если кому будет полезно - второй способ решения проблемы описан ниже. 1. Документы и справочники. Для документов и справочников необходимо украинизировать заголовки стандартных действий объекта и действия в табличных частях:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если Не
ОбщийМодульСервер.ЯзыкПриложения() = Метаданные.Языки.Русский Тогда
       
// Локализация заголовков кнопок
       
ОбщийМодульСервер.ЛокализацияЗаголовковВОбъекте(ЭтаФорма, Объект);
       
ОбщийМодульСервер.ЛокализацияЗаголовковТабличныхЧастей(ЭтаФорма, ЭтаФорма.Элементы.Таблица1);
       
ОбщийМодульСервер.ЛокализацияЗаголовковТабличныхЧастей(ЭтаФорма, ЭтаФорма.Элементы.Таблица2);
    КонецЕсли;

КонецПроцедуры

Для форм списка документов и справочников украинизация немного отличается но объединена в одну процедуру. Различия составляет только проведение документов, отбор документов по периоду и иерархичность справочников.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если
ОбщийМодульСервер.ЯзыкПриложения() = Метаданные.Языки.Русский Тогда
       
ОбщийМодульСервер.ЛокализацияЗаголовковВСписке(ЭтаФорма);
    КонецЕсли;

КонецПроцедуры

2. Отчеты. Локализация отчетов предусматривает изменение заголовков стандартных действий и отборов СКД. К сожалению без решения остается локализация контекстного меню табличного документа.

 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если
ОбщийМодульСервер.ЯзыкПриложения() = Метаданные.Языки.Русский Тогда
       
ОбщийМодульСервер.ЛокализацияЗаголовковВОтчете(ЭтаФорма);
       
ОбщийМодульСервер.ЛокализацияЗаголовковОтбораСКД(ЭтаФорма);
    КонецЕсли;

КонецПроцедуры


Описание общего модуля ОбщийМодульСервер (Сервер, Вызов сервера):

&НаСервере
Процедура ЛокализацияЗаголовковВОбъекте(Форма, Объект) Экспорт

    Если
ЯзыкПриложения() = Метаданные.Языки.Русский Тогда
        Возврат;
    КонецЕсли;

   
ВидОбъектаМетаданных = ПолучитьВидОбъектаМетаданных(Объект.Ссылка);

   
// Командная панель табличной части
    // Кнопки для всех объектов - документы и справочники
   
СтруктураКнопок = Новый Структура;
   
СтруктураКнопок.Вставить("Записать"     , НСтр("Ukr = 'Записати'"));
   
СтруктураКнопок.Вставить("Перечитать"   , НСтр("Ukr = 'Перечитати'"));
   
СтруктураКнопок.Вставить("Скопировать"  , НСтр("Ukr = 'Скопіювати'"));
   
СтруктураКнопок.Вставить("ИзменитьФорму", НСтр("Ukr = 'Змінити форму'"));
   
СтруктураКнопок.Вставить("Справка"      , НСтр("Ukr = 'Довідка'"));
   
СтруктураКнопок.Вставить("Удалить"      , НСтр("Ukr = 'Видалити'"));
   
СтруктураКнопок.Вставить("УстановитьПометкуУдаления", НСтр("Ukr = 'Встановити помітку видаленя'"));

   
// Кнопки документов
   
Если ВидОбъектаМетаданных = "Документ" Или ВидОбъектаМетаданных = Неопределено Тогда
       
СтруктураКнопок.Вставить("Проведение"       , НСтр("Ukr = 'Проведення'"));
       
СтруктураКнопок.Вставить("Провести"         , НСтр("Ukr = 'Провести'"));
       
СтруктураКнопок.Вставить("ПровестиИЗакрыть" , НСтр("Ukr = 'Провести та закрити'"));
       
СтруктураКнопок.Вставить("ОтменаПроведения" , НСтр("Ukr = 'Відміна проведення'"));
       
СтруктураКнопок.Вставить("СоздатьНаОсновании", НСтр("Ukr = 'Створити на підставі'"));
    КонецЕсли;

   
// Кнопки справочников
   
Если ВидОбъектаМетаданных = "Справочник" Или ВидОбъектаМетаданных = Неопределено Тогда
       
СтруктураКнопок.Вставить("ЗаписатьИЗакрыть" , НСтр("Ukr = 'Записати та закрити'"));
    КонецЕсли;

   
// Установка заголовков
   
Для Каждого Кнопка Из СтруктураКнопок Цикл
       
ЛокализацияЗаголовка(Форма.Элементы, "Форма"+Кнопка.Ключ, Кнопка.Значение);
    КонецЦикла;

КонецПроцедуры

&НаСервере
Процедура ЛокализацияЗаголовковТабличныхЧастей(Форма, ТабличнаяЧасть) Экспорт

    Если
ЯзыкПриложения() = Метаданные.Языки.Русский Тогда
        Возврат;
    КонецЕсли;

   
// Командная панель табличной части
   
СтруктураКнопок = Новый Структура;
   
СтруктураКнопок.Вставить("Добавить"     ,НСтр("Ukr = 'Додати'"));
   
СтруктураКнопок.Вставить("Скопировать"  ,НСтр("Ukr = 'Скопіювати'"));
   
СтруктураКнопок.Вставить("Изменить"     ,НСтр("Ukr = 'Змінити'"));
   
СтруктураКнопок.Вставить("Удалить"      ,НСтр("Ukr = 'Видалити'"));
   
СтруктураКнопок.Вставить("Найти"        ,НСтр("Ukr = 'Знайти'"));
   
СтруктураКнопок.Вставить("ОтменитьПоиск",НСтр("Ukr = 'Відмінити пошук'"));
   
СтруктураКнопок.Вставить("Переместить"  ,НСтр("Ukr = 'Перемістити'")); //Группа
   
СтруктураКнопок.Вставить("Сортировка"   ,НСтр("Ukr = 'Сортування'")); // Группа
   
СтруктураКнопок.Вставить("ВывестиСписок",НСтр("Ukr = 'Вивести список...'"));
   
СтруктураКнопок.Вставить("ПереместитьВниз",НСтр("Ukr = 'Перемістити вниз'"));
   
СтруктураКнопок.Вставить("ПереместитьВверх",НСтр("Ukr = 'Перемістити вгору'"));
   
СтруктураКнопок.Вставить("ЗакончитьРедактирование",НСтр("Ukr = 'Закінчить редагування'"));
   
СтруктураКнопок.Вставить("СортироватьСписокПоУбыванию",НСтр("Ukr = 'Сортувати за зменшенням'"));
   
СтруктураКнопок.Вставить("СортироватьСписокПоВозрастанию",НСтр("Ukr = 'Сортувати за збільшенням'"));

    Для Каждого
Кнопка Из СтруктураКнопок Цикл
       
ЛокализацияЗаголовка(Форма.Элементы, ТабличнаяЧасть.Имя+Кнопка.Ключ, Кнопка.Значение);
    КонецЦикла;

   
// Контекстное меню табличной части
   
СтруктураКнопок = Новый Структура;
   
СтруктураКнопок.Вставить("Добавить"     ,НСтр("Ukr = 'Додати'"));
   
СтруктураКнопок.Вставить("Изменить"     ,НСтр("Ukr = 'Змінити'"));
   
СтруктураКнопок.Вставить("ВыделитьВсе"  ,НСтр("Ukr = 'Копіювати все'"));
   
СтруктураКнопок.Вставить("Переместить"  ,НСтр("Ukr = 'Перемістити'")); //Группа
   
СтруктураКнопок.Вставить("Скопировать"  ,НСтр("Ukr = 'Скопіювати'"));
   
СтруктураКнопок.Вставить("Удалить"      ,НСтр("Ukr = 'Видалити'"));
   
СтруктураКнопок.Вставить("ПереместитьВниз",НСтр("Ukr = 'Перемістити вниз'"));
   
СтруктураКнопок.Вставить("ПереместитьВверх",НСтр("Ukr = 'Перемістити вгору'"));
   
СтруктураКнопок.Вставить("КопированиеИВыделение",НСтр("Ukr = 'Копіювання та видалення'")); // Группа
   
СтруктураКнопок.Вставить("КопироватьВБуферОбмена",НСтр("Ukr = 'Копіювати в буфер обімну'"));

    Для Каждого
Кнопка Из СтруктураКнопок Цикл
       
ЛокализацияЗаголовка(Форма.Элементы, ТабличнаяЧасть.Имя+"КонтекстноеМеню"+Кнопка.Ключ, Кнопка.Значение);
    КонецЦикла;

КонецПроцедуры

&НаСервере
Процедура ЛокализацияЗаголовка(Элементы, ИмяЭлемента, Заголовок) Экспорт

   
ТекущийЭлемент = Элементы.Найти(ИмяЭлемента);
    Если Не
ТекущийЭлемент = Неопределено Тогда
       
ТекущийЭлемент.Заголовок = Заголовок;
        Если
ТипЗнч(Элементы.Найти(ИмяЭлемента)) = Тип("ГруппаФормы") Тогда
           
ТекущийЭлемент.Подсказка = Заголовок;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры

&НаСервере
Функция ПолучитьВидОбъектаМетаданных(Ссылка) Экспорт

    Перем
ВидОбъектаМетаданных;

   
ИмяОбъектаМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Имя;

    Если Не
Метаданные.Документы.Найти(ИмяОбъектаМетаданных) = Неопределено Тогда
       
ВидОбъектаМетаданных = "Документ";
    ИначеЕсли Не
Метаданные.Справочники.Найти(ИмяОбъектаМетаданных) = Неопределено Тогда
       
ВидОбъектаМетаданных = "Справочник";
    КонецЕсли;

    Возврат
ВидОбъектаМетаданных;

КонецФункции

&НаСервере
Функция ЯзыкПриложения() Экспорт;

   
ПользовательИнформационнойБазы = ПользователиИнформационнойБазы.ТекущийПользователь();

    Возврат
ПользовательИнформационнойБазы.Язык;

КонецФункции


http://kostias.blogspot.com/2012/05/blog-post.html

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С v8.3 8.3.14 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    45304    26    22    

39

Работа с интерфейсом Рабочее место 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    66752    45    60    

84

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5160 руб.

29.06.2020    22300    32    6    

50

Работа с интерфейсом Программист 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

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

5040 руб.

06.10.2020    12340    8    8    

14

Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

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

20.08.2024    40610    mrXoxot    44    

136

Работа с интерфейсом Программист 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    23881    smielka    38    

111

Работа с интерфейсом 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

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

27.12.2023    22027    1308    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    15737    177    acces969    31    

132
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. serg_gres 155 14.05.12 17:44 Сейчас в теме
Зачем у Вас так много всего - я не понял.
Локализацию стандартных текстов можно установить при запуске 1С (например в ярлычке) через параметр "ln".
2. kostia.ck 61 15.05.12 10:34 Сейчас в теме
Надписи кнопок передаются с сервера а устанавливаются на клиенте.
Для отправки сообщения требуется регистрация/авторизация