Перем ТаблицаСловаря; Перем КаталогОригинала; Процедура ПеревестиПроект(Знач КаталогСловарей, Знач Корень, Знач ОсновнойЯзык, Знач Языки, Знач ФайлыПеревода) Экспорт ТаблицаСловаря = Новый ТаблицаЗначений(); ТаблицаСловаря.Колонки.Добавить("Ключ"); ТаблицаСловаря.Колонки.Добавить("Значение"); ТаблицаСловаря.Колонки.Добавить("Длина"); ТаблицаСловаря.Колонки.Добавить("ИмяМодуля"); ПутьОригинала = Корень + ОсновнойЯзык; КаталогОригинала = Новый Файл(ПутьОригинала); КаталогОригинала = КаталогОригинала.ПолноеИмя; Для Каждого Язык Из Языки Цикл ПеревестиПоСловарю(КаталогСловарей, Язык, ФайлыПеревода, Корень); КонецЦикла; КонецПроцедуры Процедура ПеревестиПоСловарю(Знач КаталогСловарей, Знач Язык, Знач Файлы, Знач Корень); ПутьПеревода = Корень + Язык; ПутьСловаря = КаталогСловарей + Язык + ".json"; Словарь = Новый Файл(ПутьСловаря); Если Не Словарь.Существует() Тогда Возврат; КонецЕсли; КаталогПриемник = Новый Файл(ПутьПеревода); ПутьКСловарю = Словарь.ПолноеИмя; Язык = Словарь.ИмяБезРасширения; ПолучитьТаблицуСловаря(ПутьКСловарю); СкопироватьФайлы(Файлы, КаталогПриемник); ФайлыМодулей = НайтиФайлы(ПутьПеревода, "*", Истина); Для Каждого ФайлМодуля Из ФайлыМодулей Цикл Если ФайлМодуля.ЭтоКаталог() Или ФайлМодуля.Имя = "packagedef" Тогда Продолжить; КонецЕсли; ПеревестиМодуль(ФайлМодуля.ПолноеИмя); КонецЦикла; ПеревестиИменаФайлов(ФайлыМодулей); КонецПроцедуры Процедура ПеревестиИменаФайлов(ВсеФайлыЛокализации) ОтборИменМодулей = Новый Структура("ИмяМодуля", Истина); СтрокиИмен = ТаблицаСловаря.НайтиСтроки(ОтборИменМодулей); УдаляемыеКаталоги = Новый Массив; Для Каждого ФайлЛокализации Из ВсеФайлыЛокализации Цикл Если Не ФайлЛокализации.ЭтоКаталог() Тогда Продолжить; КонецЕсли; ТекущийПуть = ФайлЛокализации.ПолноеИмя; НовыйПуть = ТекущийПуть; Для Каждого Имя Из СтрокиИмен Цикл НовыйПуть = СтрЗаменить(НовыйПуть, Имя.Ключ, Имя.Значение); КонецЦикла; ФайлНовогоПути = Новый Файл(НовыйПуть); Если Не ФайлНовогоПути.Существует() Тогда УдаляемыеКаталоги.Добавить(ТекущийПуть); СоздатьКаталог(НовыйПуть); КонецЕсли; КонецЦикла; Для Каждого ФайлЛокализации Из ВсеФайлыЛокализации Цикл Если ФайлЛокализации.ЭтоКаталог() Тогда Продолжить; КонецЕсли; ТекущийПуть = ФайлЛокализации.ПолноеИмя; НовыйПуть = ТекущийПуть; Для Каждого Имя Из СтрокиИмен Цикл НовыйПуть = СтрЗаменить(НовыйПуть, Имя.Ключ, Имя.Значение); КонецЦикла; ФайлНовогоПути = Новый Файл(НовыйПуть); Если Не ФайлНовогоПути.Существует() Тогда ПереместитьФайл(ТекущийПуть, НовыйПуть); КонецЕсли; КонецЦикла; Для Каждого Каталог Из УдаляемыеКаталоги Цикл УдалитьФайлы(Каталог); КонецЦикла; КонецПроцедуры Процедура ПеревестиМодуль(ПутьКМодулю) ДокументМодуля = Новый ТекстовыйДокумент(); ДокументМодуля.Прочитать(ПутьКМодулю, "UTF-8"); Для Н = 1 По ДокументМодуля.КоличествоСтрок() Цикл ТекущаяСтрока = СокрЛП(ДокументМодуля.ПолучитьСтроку(Н)); Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда Продолжить; КонецЕсли; Пока СтрНайти(ТекущаяСтрока, " ") <> 0 Цикл ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, " ", " "); КонецЦикла; ВыводимаяСтрока = СтрЗаменить(ДокументМодуля.ПолучитьСтроку(Н), СокрЛП(ДокументМодуля.ПолучитьСтроку(Н)), ТекущаяСтрока); ДокументМодуля.ЗаменитьСтроку(Н, ВыводимаяСтрока); КонецЦикла; ТекстМодуля = ДокументМодуля.ПолучитьТекст(); Для Каждого Элемент Из ТаблицаСловаря Цикл ТекущееЗначение = Элемент.Значение; Пока СтрДлина(ТекущееЗначение) < Элемент.Длина Цикл ТекущееЗначение = ТекущееЗначение + " "; КонецЦикла; ТекстМодуля = СтрЗаменить(ТекстМодуля, Элемент.Ключ, Элемент.Значение); КонецЦикла; ОбработатьНесовпаденияOneScript(ТекстМодуля, ПутьКМодулю); ДокументМодуля.УстановитьТекст(ТекстМодуля); ДокументМодуля.Записать(ПутьКМодулю); КонецПроцедуры Процедура ПолучитьТаблицуСловаря(ПутьКСловарю) Сообщить("Чтение словаря " + ПутьКСловарю); ТаблицаСловаря.Очистить(); ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.ОткрытьФайл(ПутьКСловарю); ДанныеСловаря = ПрочитатьJSON(ЧтениеJSON, Истина); ЧтениеJSON.Закрыть(); Для Каждого Элемент Из ДанныеСловаря Цикл НоваяСтрокаСловаря = ТаблицаСловаря.Добавить(); НоваяСтрокаСловаря.Ключ = Элемент.Ключ; НоваяСтрокаСловаря.Значение = Элемент.Значение; НоваяСтрокаСловаря.Длина = СтрДлина(Элемент.Ключ); НоваяСтрокаСловаря.ИмяМодуля = СтрНайти(Элемент.Ключ, "OPI_") <> 0; КонецЦикла; ТаблицаСловаря.Сортировать("Длина УБЫВ"); ПутьКСловарюКлючевыхСлов = "./service/dictionaries/en_post.json"; ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.ОткрытьФайл(ПутьКСловарюКлючевыхСлов); СоответствиеКС = ПрочитатьJSON(ЧтениеJSON, Истина); ЧтениеJSON.Закрыть(); Для Каждого КлючевоеСлово Из СоответствиеКС Цикл НоваяСтрокаСловаря = ТаблицаСловаря.Добавить(); НоваяСтрокаСловаря.Ключ = КлючевоеСлово.Ключ; НоваяСтрокаСловаря.Значение = КлючевоеСлово.Значение; НоваяСтрокаСловаря.Длина = СтрДлина(КлючевоеСлово.Ключ); НоваяСтрокаСловаря.ИмяМодуля = Ложь; КонецЦикла; КонецПроцедуры Процедура СкопироватьФайлы(Знач МассивФайлов, Знач КаталогПриемник) ПутьПриемник = КаталогПриемник.ПолноеИмя; Если КаталогПриемник.Существует() Тогда УдалитьФайлы(ПутьПриемник); КонецЕсли; СоздатьКаталог(ПутьПриемник); Для Каждого Файл Из МассивФайлов Цикл Если Файл.ЭтоКаталог() Тогда ПолноеИмяИсточник = Файл.ПолноеИмя; ПолноеИмяПриемник = ПутьПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогОригинала, ""); СоздатьКаталог(ПолноеИмяПриемник); КонецЕсли; КонецЦикла; Для Каждого Файл Из МассивФайлов Цикл Если Не Файл.ЭтоКаталог() Тогда ПолноеИмяИсточник = Файл.ПолноеИмя; ПолноеИмяПриемник = ПутьПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогОригинала, ""); КопироватьФайл(ПолноеИмяИсточник, ПолноеИмяПриемник); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ОбработатьНесовпаденияOneScript(ТекстМодуля, ПутьКМодулю) СоответствиеОшибок = Новый Соответствие(); СоответствиеОшибок.Вставить("ConcatBinaryData" , "ConcatenateBinaryData"); СоответствиеОшибок.Вставить("GetTestList" , "ПолучитьСписокТестов"); СоответствиеОшибок.Вставить("Exists" , "Exist"); СоответствиеОшибок.Вставить("SetBodyFromBinaryData", "SetBodyFromBinary"); СоответствиеОшибок.Вставить("GetBodyAsBinaryData" , "ПолучитьТелоКакДвоичныеДанные"); СоответствиеОшибок.Вставить("FileCopy" , "CopyFile"); ФайлМодуля = Новый Файл(ПутьКМодулю); Если СтрНайти(ФайлМодуля.Имя, ".os") <> 0 Тогда Для Каждого Ошибка Из СоответствиеОшибок Цикл ТекстМодуля = СтрЗаменить(ТекстМодуля, Ошибка.Ключ, Ошибка.Значение); КонецЦикла; КонецЕсли; КонецПроцедуры //ПриСозданииОбъекта();