Локализация стандартных текстов интерфейсов в управляемом приложении
В рабочей базе существуют русскоязычные пользователи (восточный и южный регион) и украиноязычные (западный регион и тру украинцы). При украинизации текстов интерфейсов столкнулся с проблемою редактирования надписей на стандартных элементах интерфейсов форм (Записать и закрыть, сохранить, сформировать и т.д.). Нашел 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С (например в ярлычке) через параметр «ln».
Надписи кнопок передаются с сервера а устанавливаются на клиенте.