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

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 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55441    17    23    

43

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

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

2400 руб.

29.06.2020    19724    28    6    

44

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

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

20.08.2024    21868    mrXoxot    44    

128

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

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

27.05.2024    10985    smielka    37    

105

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

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

27.12.2023    17963    1225    elcoan    53    

125

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

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

3 стартмани

10.04.2023    12659    167    acces969    31    

126

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

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    7385    kalyaka    6    

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