mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-25 02:42:28 +02:00
252 lines
12 KiB
Plaintext
252 lines
12 KiB
Plaintext
Перем ТаблицаСловаря;
|
|
Перем СоответствиеИсключаемых;
|
|
|
|
Процедура ПриСозданииОбъекта()
|
|
|
|
Сообщить("Начало создания локализации...");
|
|
|
|
КаталогСловарей = "./service/dictionaries";
|
|
ФайлыСловарей = НайтиФайлы(КаталогСловарей, "*.json");
|
|
|
|
СоответствиеИсключаемых = Новый Соответствие();
|
|
СоответствиеИсключаемых.Вставить("packagedef", Истина);
|
|
|
|
ТаблицаСловаря = Новый ТаблицаЗначений();
|
|
ТаблицаСловаря.Колонки.Добавить("Ключ");
|
|
ТаблицаСловаря.Колонки.Добавить("Значение");
|
|
ТаблицаСловаря.Колонки.Добавить("Длина");
|
|
ТаблицаСловаря.Колонки.Добавить("ИмяМодуля");
|
|
|
|
Для Каждого Словарь Из ФайлыСловарей Цикл
|
|
|
|
Если СтрНайти(Словарь.ИмяБезРасширения, "_") <> 0 Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
|
|
СоздатьЛокализацию(Словарь);
|
|
КонецЦикла;
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура СоздатьЛокализацию(Знач Словарь)
|
|
|
|
ПутьКСловарю = Словарь.ПолноеИмя;
|
|
Язык = Словарь.ИмяБезРасширения;
|
|
|
|
Сообщить("Создание локализации " + Язык);
|
|
|
|
ПолучитьТаблицуСловаря(ПутьКСловарю);
|
|
|
|
КаталогИсточник = Новый Файл("./src/ru");
|
|
КаталогПриемник = Новый Файл("./src/" + Язык + "");
|
|
|
|
Если КаталогПриемник.Существует() Тогда
|
|
УдалитьФайлы(КаталогПриемник.ПолноеИмя);
|
|
КонецЕсли;
|
|
|
|
Сообщить("Копирование Начало");
|
|
СкопироватьФайлы(КаталогИсточник.ПолноеИмя, КаталогПриемник.ПолноеИмя);
|
|
Сообщить("Копирование Окончание");
|
|
Сообщить("Поиск модулей");
|
|
ФайлыМодулей = НайтиФайлы("./src/" + Язык + "/", "*", Истина);
|
|
Сообщить("Найдено модулей: " + Строка(ФайлыМодулей.Количество()));
|
|
|
|
Для Каждого ФайлМодуля Из ФайлыМодулей Цикл
|
|
|
|
Если ФайлМодуля.ЭтоКаталог() Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
|
|
Сообщить("Перевод модуля " + ФайлМодуля.Имя);
|
|
ПеревестиМодуль(ФайлМодуля.ПолноеИмя);
|
|
КонецЦикла;
|
|
|
|
ВсеФайлыЛокализации = НайтиФайлы("./src/" + Язык, "*", Истина);
|
|
ОтборИменМодулей = Новый Структура("ИмяМодуля", Истина);
|
|
СтрокиИмен = ТаблицаСловаря.НайтиСтроки(ОтборИменМодулей);
|
|
УдаляемыеКаталоги = Новый Массив;
|
|
|
|
Для Каждого ФайлЛокализации Из ВсеФайлыЛокализации Цикл
|
|
|
|
Если Не ФайлЛокализации.ЭтоКаталог() Или СоответствиеИсключаемых[ФайлЛокализации.Имя] <> Неопределено Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
|
|
ТекущийПуть = ФайлЛокализации.ПолноеИмя;
|
|
НовыйПуть = ТекущийПуть;
|
|
|
|
Для Каждого Имя Из СтрокиИмен Цикл
|
|
НовыйПуть = СтрЗаменить(НовыйПуть, Имя.Ключ, Имя.Значение);
|
|
КонецЦикла;
|
|
|
|
ФайлНовогоПути = Новый Файл(НовыйПуть);
|
|
|
|
Если Не ФайлНовогоПути.Существует() Тогда
|
|
УдаляемыеКаталоги.Добавить(ТекущийПуть);
|
|
СоздатьКаталог(НовыйПуть);
|
|
КонецЕсли;
|
|
|
|
КонецЦикла;
|
|
|
|
Для Каждого ФайлЛокализации Из ВсеФайлыЛокализации Цикл
|
|
|
|
Если ФайлЛокализации.ЭтоКаталог() Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
|
|
ТекущийПуть = ФайлЛокализации.ПолноеИмя;
|
|
НовыйПуть = ТекущийПуть;
|
|
|
|
Для Каждого Имя Из СтрокиИмен Цикл
|
|
НовыйПуть = СтрЗаменить(НовыйПуть, Имя.Ключ, Имя.Значение);
|
|
КонецЦикла;
|
|
|
|
ФайлНовогоПути = Новый Файл(НовыйПуть);
|
|
|
|
Если Не ФайлНовогоПути.Существует() Тогда
|
|
ПереместитьФайл(ТекущийПуть, НовыйПуть);
|
|
КонецЕсли;
|
|
|
|
КонецЦикла;
|
|
|
|
Для Каждого Каталог Из УдаляемыеКаталоги Цикл
|
|
УдалитьФайлы(Каталог);
|
|
КонецЦикла;
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ПеревестиМодуль(ПутьКМодулю)
|
|
|
|
Если СтрНайти(ПутьКМодулю, "packagedef") <> 0 Тогда
|
|
Возврат;
|
|
КонецЕсли;
|
|
|
|
ДокументМодуля = Новый ТекстовыйДокумент();
|
|
ДокументМодуля.Прочитать(ПутьКМодулю, "UTF-8");
|
|
|
|
Для Н = 1 По ДокументМодуля.КоличествоСтрок() Цикл
|
|
|
|
ТекущаяСтрока = СокрЛП(ДокументМодуля.ПолучитьСтроку(Н));
|
|
|
|
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
|
|
Пока СтрНайти(ТекущаяСтрока, " ") <> 0 Цикл
|
|
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, " ", " ");
|
|
КонецЦикла;
|
|
|
|
ВыводимаяСтрока = СтрЗаменить(ДокументМодуля.ПолучитьСтроку(Н), СокрЛП(ДокументМодуля.ПолучитьСтроку(Н)), ТекущаяСтрока);
|
|
ДокументМодуля.ЗаменитьСтроку(Н, ВыводимаяСтрока);
|
|
|
|
КонецЦикла;
|
|
|
|
ТекстМодуля = ДокументМодуля.ПолучитьТекст();
|
|
|
|
Для Каждого Элемент Из ТаблицаСловаря Цикл
|
|
|
|
ТекущееЗначение = Элемент.Значение;
|
|
|
|
Пока СтрДлина(ТекущееЗначение) < Элемент.Длина Цикл
|
|
ТекущееЗначение = ТекущееЗначение + " ";
|
|
КонецЦикла;
|
|
|
|
ТекстМодуля = СтрЗаменить(ТекстМодуля, Элемент.Ключ, Элемент.Значение);
|
|
КонецЦикла;
|
|
|
|
ОбработатьНесовпаденияOneScript(ТекстМодуля, ПутьКМодулю);
|
|
|
|
ДокументМодуля.УстановитьТекст(ТекстМодуля);
|
|
ДокументМодуля.Записать(ПутьКМодулю);
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ПолучитьТаблицуСловаря(ПутьКСловарю)
|
|
|
|
Сообщить("Чтение словаря " + ПутьКСловарю);
|
|
ТаблицаСловаря.Очистить();
|
|
|
|
ЧтениеJSON = Новый ЧтениеJSON();
|
|
ЧтениеJSON.ОткрытьФайл(ПутьКСловарю);
|
|
ДанныеСловаря = ПрочитатьJSON(ЧтениеJSON, Истина);
|
|
ЧтениеJSON.Закрыть();
|
|
|
|
Для Каждого Элемент Из ДанныеСловаря Цикл
|
|
|
|
НоваяСтрокаСловаря = ТаблицаСловаря.Добавить();
|
|
НоваяСтрокаСловаря.Ключ = Элемент.Ключ;
|
|
НоваяСтрокаСловаря.Значение = Элемент.Значение;
|
|
НоваяСтрокаСловаря.Длина = СтрДлина(Элемент.Ключ);
|
|
НоваяСтрокаСловаря.ИмяМодуля = СтрНайти(Элемент.Ключ, "OPI_") <> 0;
|
|
|
|
КонецЦикла;
|
|
|
|
ТаблицаСловаря.Сортировать("Длина УБЫВ");
|
|
|
|
ПутьКСловарюКлючевыхСлов = "./service/dictionaries/en_post.json";
|
|
ЧтениеJSON = Новый ЧтениеJSON();
|
|
ЧтениеJSON.ОткрытьФайл(ПутьКСловарюКлючевыхСлов);
|
|
СоответствиеКС = ПрочитатьJSON(ЧтениеJSON, Истина);
|
|
ЧтениеJSON.Закрыть();
|
|
|
|
Для Каждого КлючевоеСлово Из СоответствиеКС Цикл
|
|
НоваяСтрокаСловаря = ТаблицаСловаря.Добавить();
|
|
НоваяСтрокаСловаря.Ключ = КлючевоеСлово.Ключ;
|
|
НоваяСтрокаСловаря.Значение = КлючевоеСлово.Значение;
|
|
НоваяСтрокаСловаря.Длина = СтрДлина(КлючевоеСлово.Ключ);
|
|
НоваяСтрокаСловаря.ИмяМодуля = Ложь;
|
|
КонецЦикла;
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура СкопироватьФайлы(Знач КаталогИсточник, Знач КаталогПриемник)
|
|
|
|
Сообщить("Каталог источник: " + КаталогИсточник);
|
|
Сообщить("Каталог приемника: " + КаталогПриемник);
|
|
|
|
|
|
Сообщить("Создание каталога " + КаталогПриемник);
|
|
СоздатьКаталог(КаталогПриемник);
|
|
|
|
МассивФайлов = НайтиФайлы(КаталогИсточник, "*.*", Истина);
|
|
|
|
Для Каждого Файл Из МассивФайлов Цикл
|
|
|
|
Если СтрНайти(Файл.ПолноеИмя, "cli") <> 0 Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
ПолноеИмяИсточник = Файл.ПолноеИмя;
|
|
ПолноеИмяПриемник = КаталогПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогИсточник, "");
|
|
|
|
Если Файл.ЭтоКаталог() Тогда
|
|
СоздатьКаталог(ПолноеИмяПриемник);
|
|
Сообщить("Создание каталога " + ПолноеИмяПриемник);
|
|
Иначе
|
|
КопироватьФайл(ПолноеИмяИсточник, ПолноеИмяПриемник);
|
|
Сообщить("Копирование файла" + ПолноеИмяИсточник + " в " + ПолноеИмяПриемник);
|
|
КонецЕсли;
|
|
КонецЦикла;
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ОбработатьНесовпаденияOneScript(ТекстМодуля, ПутьКМодулю)
|
|
|
|
СоответствиеОшибок = Новый Соответствие();
|
|
СоответствиеОшибок.Вставить("ConcatBinaryData" , "ConcatenateBinaryData");
|
|
СоответствиеОшибок.Вставить("GetTestList" , "ПолучитьСписокТестов");
|
|
СоответствиеОшибок.Вставить("Exists" , "Exist");
|
|
СоответствиеОшибок.Вставить("SetBodyFromBinaryData", "SetBodyFromBinary");
|
|
СоответствиеОшибок.Вставить("GetBodyAsBinaryData" , "ПолучитьТелоКакДвоичныеДанные");
|
|
СоответствиеОшибок.Вставить("FileCopy" , "CopyFile");
|
|
|
|
ФайлМодуля = Новый Файл(ПутьКМодулю);
|
|
|
|
Если СтрНайти(ФайлМодуля.Имя, ".os") <> 0 Тогда
|
|
Для Каждого Ошибка Из СоответствиеОшибок Цикл
|
|
ТекстМодуля = СтрЗаменить(ТекстМодуля, Ошибка.Ключ, Ошибка.Значение);
|
|
КонецЦикла;
|
|
КонецЕсли;
|
|
|
|
КонецПроцедуры
|
|
|
|
//ПриСозданииОбъекта(); |