Переводчик конфигурации (диалоговые формы)

13.09.12

Учетные задачи - Производство готовой продукции (работ, услуг)

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

Собственно получил задачу: перевести типовую УТ на КИТАЙСКИЙ (английский). Собственно - результат работы - то что получилось ниже. В файлах ничего выкладывать не буду - если кому интересно перевести конфу на английский - дочитает до конца.

Коротко - алгоритм такой: ПриОткрытии() - перебирать все реквизиты Формы и подставлять значения ПЕРЕВЕДЁННЫЕ.

Еще что стоит отметить - не пинайте сильно - таки первая публикация.

 

Итак: Общий модуль ПереводАнгл:

Функция УстановитьНадписиФормыАнгл(ДокументОбъект="", ФормаДокумента) Экспорт 	
	Если ПараметрыСеанса.ТекущийПользователь.Язык =0 тогда // естественно флаг язык - в спр.пользователи 
		Возврат Истина 	
	КонецЕсли;
	Попытка
		ФормаДокумента.Заголовок=ПереводАнгл.ПереводимЭлемент(ФормаДокумента.Заголовок);
	Исключение
	КонецПопытки;
	Попытка
		Для каждого элемент из ФормаДокумента.ЭлементыФормы цикл 			
			Если СокрЛП(Элемент)="Надпись" тогда
				Элемент.Заголовок=ПереводАнгл.ПереводимЭлемент(Элемент.Заголовок);
			КонецЕсли;
			Если СокрЛП(Элемент)="РамкаГруппы" тогда 
				Элемент.Заголовок=ПереводАнгл.ПереводимЭлемент(Элемент.Заголовок);
			КонецЕсли;
			Если СокрЛП(Элемент)="Кнопка" тогда 	
				ЧтоПолучилось = Элемент.Заголовок;
				ЧтоПолучилось = ПереводАнгл.ПереводимЭлемент(Элемент.Заголовок);
				Элемент.Заголовок = ЧтоПолучилось;
			КонецЕсли;
			Если СокрЛП(Элемент)="КоманднаяПанель" тогда 	
				Для Каждого Кнопка из Элемент.Кнопки Цикл 	
					ЧтоПолучилось = Кнопка.Текст;
					ЧтоПолучилось = ПереводАнгл.ПереводимЭлемент(Кнопка.Текст);
					Кнопка.Подсказка = ЧтоПолучилось;
					Кнопка.Пояснение = ЧтоПолучилось;
					Кнопка.Текст = ЧтоПолучилось;
					Для Каждого Кнопа из Кнопка.Кнопки Цикл 
						ЧтоПолучилось = Кнопа.Текст;
						ЧтоПолучилось = ПереводАнгл.ПереводимЭлемент(Кнопа.Текст);
						Кнопа.Подсказка = ЧтоПолучилось;
						Кнопа.Пояснение = ЧтоПолучилось;
						Кнопа.Текст = ЧтоПолучилось;
					КонецЦИкла;
				КонецЦикла;
			КонецЕсли;
			Если СокрЛП(Элемент)="Панель" тогда 
				Для Каждого страница из Элемент.Страницы Цикл 
					страница.Заголовок = ПереводАнгл.ПереводимЭлемент(страница.Заголовок);
				КонецЦикла;
			ИначеЕсли СокрЛП(Элемент)="ТабличноеПоле" тогда 
				Для каждого колонка из Элемент.Колонки цикл 	
					Колонка.ТекстШапки = ПереводАнгл.ПереводимЭлемент(Колонка.ТекстШапки);
				КонецЦикла;
			ИначеЕсли СОкрЛП(Элемент)="Флажок" тогда 		
				Элемент.Заголовок = ПереводАнгл.ПереводимЭлемент(Элемент.Заголовок);
			КонецЕсли;
		КонецЦикла;
	Исключение
	КонецПопытки;
	Попытка
		Для Каждого КолонкаСправочника из ФормаДокумента.ЭлементыФормы.СправочникСписок.Колонки Цикл
			КолонкаСправочника.ТекстШапки = ПереводАнгл.ПереводимЭлемент(КолонкаСправочника.ТекстШапки);
		КонецЦикла;
	Исключение
	КонецПопытки;
	Попытка
		Для Каждого панель из ФормаДокумента.ЭлементыФормы.ПанельФормы.Страницы Цикл
			панель.Заголовок = ПереводАнгл.ПереводимЭлемент(панель.Заголовок);
		КонецЦикла;
	Исключение 
	КонецПопытки;
	Попытка
		Для каждого кнопка из ФормаДокумента.ЭлементыФормы.ДействияФормы.Кнопки Цикл
			кнопка.Текст=ПереводАнгл.ПереводимЭлемент(кнопка.Текст);
			Если Лев(кнопка.Имя,8)="Действие" тогда
				ЧтоПолучилось=кнопка.Текст;
				ЧтоПолучилось = ПереводАнгл.ПереводимЭлемент(кнопка.Текст);
				кнопка.Текст=ЧтоПолучилось;
				кнопка.Пояснение=ЧтоПолучилось;
			КонецЕсли;
		КонецЦикла;
	Исключение
	КонецПопытки;
	Попытка
		Для каждого кнопка из ФормаДокумента.ЭлементыФормы.ОсновныеДействияФормы.Кнопки Цикл
			Если Лев(кнопка.Имя,8)="Действие" тогда 
				кнопка.Текст=ПереводАнгл.ПереводимЭлемент(кнопка.Текст);
			КонецЕсли;
		КонецЦикла;
	Исключение
	КонецПопытки;
	Попытка
		Для каждого колонка из ФормаДокумента.ЭлементыФормы.ДокументСписок.Колонки Цикл
			Колонка.ТекстШапки = ПереводАнгл.ПереводимЭлемент(Колонка.ТекстШапки); 
		КонецЦИкла;
	Исключение
	КонецПопытки;
	Возврат истина;
КонецФункции 

//В СИСТЕМЕ ДОЛЖЕН БЫТЬ СПРАВОЧНИК ПЕРЕВОД, ГДЕ НАИМЕНОВАНИЕ - ЧТО НУЖНО ПЕРЕВЕСТИ, 
//А СТРОКОВЫЙ РЕКВИЗИТ АнглПеревод В НЕМ - ПЕРЕВОД. 
Функция ПереводимЭлемент(Объект) Экспорт 
	Результат = Объект;
	Если Объект="" тогда
	Иначе
		ССылкаЗаголовка=(Справочники.Перевод.НайтиПоНаименованию(Лев(СОкрЛП(Объект),100))) ;
		Если ССылкаЗаголовка = Справочники.Перевод.ПустаяСсылка() тогда
			Если (ПараметрыСеанса.ТекущийПользователь.ВводитПеревод =1) и //ФЛАГ ЧТО ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ - ПЕРЕВОДЧИК
				((Число(КодСимвола(Объект))>100)) тогда//ПОПЫТКА ВЫКИНУТЬ АНГЛИЙСКИЕ НАДПИСИ (И СПЕЦСИМВОЛЫ) 
				//ДАБЫ ИХ НЕ ПЕРЕВОДИТЬ
				Сообщить(СОкрЛП(Объект)); //ДЛЯ СПИСКА ЧТО НУЖНО ПЕРЕВОДИТЬ.
			КонецЕсли;
		Иначе
			Результат = ССылкаЗаголовка.АнглПеревод;
		КонецЕсли;
	КонецЕсли;
	Возврат Результат;
КонецФункции 

//ПОПЫТКА ЧЕРЕЗ СПРАВОЧНИК ПЕРЕВОД - ПЕРЕВЕСТИ ИНТЕРАКТИВНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ 
Функция АнглВопрос(перем1="",перем2="",перем3="",перем4="",перем5="",перем6="") Экспорт
	Если ПараметрыСеанса.ТекущийПользователь.Язык = 0 тогда
		Если перем3=""тогда
			результат = Вопрос(перем1,перем2)
		ИначеЕсли перем4 = "" тогда
			результат = Вопрос(перем1,перем2,перем3);
		ИначеЕсли перем5 = "" тогда
			результат = Вопрос(перем1,перем2,перем3,перем4);
		ИначеЕсли перем6 = "" тогда
			результат = Вопрос(перем1,перем2,перем3,перем4,перем5);
		Иначе
			результат = Вопрос(перем1,перем2,перем3,перем4,перем5,перем6);
		КонецЕсли;
	Иначе
		ТекстВОпроса=ПереводАнгл.ПереводимЭлемент(перем1);
		Если перем3="" тогда
			результат = Вопрос(ТекстВОпроса,перем2)
		ИначеЕсли перем4 = "" тогда
			результат = Вопрос(ТекстВОпроса,перем2,перем3);
		ИначеЕсли перем5 = "" тогда
			результат = Вопрос(ТекстВОпроса,перем2,перем3,перем4);
		ИначеЕсли перем6 = "" тогда
			результат = Вопрос(ТекстВОпроса,перем2,перем3,перем4,перем5);
		Иначе
			результат = Вопрос(ТекстВОпроса,перем2,перем3,перем4,перем5,перем6);
		КонецЕсли;
	КонецЕсли;
	ВОзврат результат;
КонецФункции 

Функция АнглСообщить(перем1="",перем2="") Экспорт 	результат="";
	Если ПараметрыСеанса.ТекущийПользователь.Язык = 0 тогда
		Если перем2="" тогда
			Сообщить(Перем1);
		Иначе
			Сообщить(Перем1,Перем2);
		КонецЕсли;
	Иначе
		ТекстСообщения=ПереводАнгл.ПереводимЭлемент(Перем1);
		Если перем2=""тогда
			Сообщить(ТекстСообщения);
		Иначе
			Сообщить(ТекстСообщения,Перем2);
		КонецЕсли;
	КонецЕсли;
	ВОзврат результат;
КонецФункции

Функция АнглПредупреждение(перем1="",перем2="",перем3="") Экспорт
	результат="";
	Если ПараметрыСеанса.ТекущийПользователь.Язык = 0 тогда
		Если перем2=""тогда
			Предупреждение(Перем1);
		ИначеЕсли перем3="" тогда
			Предупреждение(Перем1,Перем2);
		Иначе
			Предупреждение(Перем1,Перем2,Перем3);
		КонецЕсли;
	Иначе
		ТекстСообщения=ПереводАнгл.ПереводимЭлемент(Перем1);
		Если перем2="" тогда
			Предупреждение(ТекстСообщения);
		ИначеЕсли перем3="" тогда
			Предупреждение(ТекстСообщения,Перем2);
		Иначе
			Предупреждение(ТекстСообщения,Перем2,Перем3);
		КонецЕсли;
	КонецЕсли;
	ВОзврат результат;
КонецФункции

 

И собственно самое интересное:

ДЛЯ ПЕРЕВОДА ФОРМЫ (ЛЮБОЙ): 

В ПриОткрытии() необходимых для перевода форм дописать:

ПереводАнгл.УстановитьНадписиФормыАнгл(, ЭтаФорма);

ДЛЯ ПЕРЕВОДА СООБЩЕНИЙ, ПРЕДУПРЕЖДЕНИЙ, ВОПРОСОВ:

НУЖНО ПО КОНФИГУРАЦИИ СДЕЛАТЬ ГЛОБАЛЬНУЮ ЗАМЕНУ:

Сообщить("    на    ПереводАнгл.АнглСообщить("

Вопрос("    на    ПереводАнгл.АнглВопрос("

Предупреждение("    на   ПереводАнгл.АнглПредупреждение("

По факту в одной из конфигураций пришлось допилить функцию ЧтототамВОПРОС() по факту замены.

А далее - вручаем  ключи от перевода (флаги Язык и ВводитПеревод)- пользователю 1С и кратко инструктируем.

Собственно все.

Не нужно писать про ОбновлениеОтображения() - Действительно не вписывается в "перевести в конфигурацию за пол часа." Вообще типовые это что-то.

 

Если кто дочитал до конца, и есть мысли по поводу - есть пара вопросов.

1. Хочу научить конфу не английскому, а китайскому. Подскажите что нить по вопросу кодировок. (хочу в диалоговую форму

вставить иероглиф).

2. Решить вопрос со связанной информацией (кнопочка перейти) - вообще подобным методом возможно?

 

 

См. также

Производство готовой продукции (работ, услуг) Программист Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)

Разработка “Пульт управления производством для 1С:УНФ” содержит цифровые инструменты и средства для производственного и технологического программного обеспечения автоматизации производства - подсистему Технологического контроля с АРМ Контролёра, Учет рекламации, АРМ Начальника производства, АРМ Рабочего цеха

36000 руб.

22.02.2022    18641    13    2    

24

SALE! 50%

Производство готовой продукции (работ, услуг) Учет доходов и расходов Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Бухгалтерский учет Управленческий учет Платные (руб)

Данный отчет показывает себестоимость выпущенной продукции с разузлованием полуфабрикатов любых уровней, входящих в ее состав, до статей затрат и материалов. Отчет работает независимо от метода оценки стоимости товаров и подходит для любых производственных компаний с многопередельным производством. Отчет можно использовать как в типовой 1С:ERP, так и в отраслевых решениях на ее базе (например, 1С:ERP Управление птицеводческим предприятием и т.д.). Отчет подходит для анализа затрат на гособоронзаказы ГОЗ.

70000 35000 руб.

08.12.2021    26907    26    73    

35

SALE! 50%

Производство готовой продукции (работ, услуг) Учет доходов и расходов Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Бухгалтерский учет Налоговый учет Платные (руб)

Данный отчет показывает себестоимость реализованной продукции в разузлованном виде, как с выделением входящих в нее полуфабрикатов любых уровней, так и свернутый до статей затрат и материалов, видов работ. Отчет работает независимо от метода оценки стоимости товаров и подходит для любых производственных компаний с многопередельным производством. Отчет можно использовать как в типовой 1С:ERP, так и в отраслевых решениях на ее базе (например, 1С:ERP Управление птицеводческим предприятием, Молокозавод и т.д.).Отчет подходит для анализа затрат на гособоронзаказы ГОЗ.

70000 35000 руб.

30.11.2022    14668    22    25    

26

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная конфигурация Хамелеон Меркурий для взаимодействия с системой Меркурий (тестовый+рабочий+демо контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Основное отличие от других решений - работа через веб-интерфейс и API 2.0(API 2.1). Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом Меркурий, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе Меркурий и наоборот.

44000 руб.

08.11.2017    123019    292    140    

398

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

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С и популярными СКУД, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД, сокращает время составления табеля учета рабочего времени.

98000 руб.

30.01.2024    2236    130    0    

4

Оптовая торговля Производство готовой продукции (работ, услуг) Обмен с ГосИС Программист Бухгалтер Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Пищевая промышленность Россия Бухгалтерский учет Платные (руб)

Автоматический обмен данными с системой ФГИС Меркурий из 1С через ВетИС API: загрузка данных по хозяйствующим субъектам, предприятиям; типов, групп, видов, наименований продукции, сопоставление данных и запись их в базу данных; создание на основании расходных документов транспортных партий, отправка на сервер, печать полученных ветеринарных свидетельств, запрос остатков складского журнала, проведение инвентаризаций, оформление производственных партий.

10000 руб.

08.12.2017    104364    236    110    

145

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Бухгалтер Пользователь Оперативный учет Управляемые формы 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

14400 руб.

13.03.2018    60818    207    76    

120
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Serj1C 483 11.09.12 07:18 Сейчас в теме
Что-то подобное (с перебором элементов на форме) делал в своей http://infostart.ru/public/123258/
Изначально тоже хотел перевести на болгарский, например, но потом решил остановиться на транслитерации.
Rad90210; +1 Ответить
2. Rad90210 13 11.09.12 21:22 Сейчас в теме
Как бы на модуль глянуть? можно на gala1442@gmail.com ?
Вообще, хочу на базе идеи, сделать конечный продукт. Очень хочу китайский ... Только блин кодировки...
3. www2000 58 12.09.12 11:09 Сейчас в теме
Можете использовать следующую бесплатную разукрашку
Rad90210; +1 Ответить
4. kostia.ck 61 13.09.12 16:18 Сейчас в теме
Да, идея неплохая, автору плюс.
Хочется только чтобы выборка значений справочника перевода вызывалась один раз - перебор элементов формы проходит быстрее чем поиск нужного справочника.

P.S. При большой загруженности сервера 1С (китайцев много) форма будет тупить при открытии что будет наводить тоску на конечных пользователей. Правильнее будет править синонимы на нужном языке. Отличный способ описывается в статье Редактирование текстов интерфейса … - быстро и обходится малой кровью. Переведутся все кроме стандартных текстов. Пример перевода стандартных текстов можно посмотреть в статье Локализация стандартных текстов интерфейсов.
Rad90210; +1 Ответить
8. Rad90210 13 20.09.12 18:02 Сейчас в теме
(4) kostia.ck, ***Хочется только чтобы выборка значений справочника перевода вызывалась один раз*** - как показывает практика - перевод нужен больше для того чтобы он БЫЛ. И теоретически пользователь англоязычный мог бы зайти и ВСЕ очень быстро ПРОВЕРИТЬ. На практике - если туда кто-то и заходит - то 1 раз в пол года, и то случайно. Приехать в другую страну, и там работать? Достаточно того, что теоретически возможность проверить работу местных сотрудников есть - этого оказалось достаточно.
Да, действительно, можно и кешировать необходимое в временной тз, для ускорения работы.
Как только станет вопрос в необходимости - этим без проблем займусь. Но судя по сказанному выше - вероятно это никому не нужно )).
Кстати - для отчетов, основанных на УниверсальномОтчете - перевести заголовки - дело тоже 5 минут. Причем используя тот же алгоритм.
А по надписям на кнопках, особенно програмно генерируемых - так у меня - вообще самый красивый вариант ))
5. AlexO 135 13.09.12 16:27 Сейчас в теме
Сергей Радченко - родственник Максима Радченко?
6. Rad90210 13 16.09.12 23:09 Сейчас в теме
(5) AlexO, Не. Однофамильцы.
7. babnik1990 20.09.12 15:18 Сейчас в теме
Добрый день! Нужна Ваша помощь, мне нужно перевести конфу Документооборот на английский, хотелось бы посоветоваться. Очень буду благодарен если свяжитесь со мной (babiy_m_v@mail.ru), нужна помощь.
9. Rad90210 13 20.09.12 18:03 Сейчас в теме
Ребят, есть реально кто-нить который в 1С вставлял иероглифы? Реально интересно : полетит - не полетит ?..
10. sony_net 25.06.24 11:50 Сейчас в теме
Оставьте свое сообщение