// v.0.2 // Скрипт для офіційної транслітерації українського алфавіту латиницею затвердженої постановою Кабінету Міністрів України №55 від 27 січня 2010 р. — https://zakon.rada.gov.ua/laws/show/55-2010-п // Похідна від транслітератор від Агентів змін — https://github.com/agentyzmin/a3-tools/tree/master/a3_translit // Автори — Олександр Колодько, Дмитро Черниш // Line below allows for script to be undone at once. Comment it and uncomment the next line "Main()" to be able to undo the script step by step app.doScript(Main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Run Script"); // Main(); function Main() { var changeObject; var selList = app.selection; if (selList.length < 1) { exit(); } function myGrep(findString, changeString) { app.findGrepPreferences = NothingEnum.NOTHING; app.changeGrepPreferences = NothingEnum.NOTHING; try { app.findGrepPreferences.findWhat = findString; app.changeGrepPreferences.changeTo = changeString; changeObject.changeGrep(); } catch (e) {} } function translit() { myGrep('зг', 'zgh');// Exception myGrep('Зг', 'Zgh'); // Exception myGrep('а', 'a'); myGrep('б', 'b'); myGrep('в', 'v'); myGrep('г', 'h'); myGrep('ґ', 'g'); myGrep('д', 'd'); myGrep('е', 'e'); myGrep('(^|\\s)є', '$1ye'); myGrep('є', 'ie'); myGrep('ж', 'zh'); myGrep('з', 'z'); myGrep('и', 'y'); myGrep('і', 'i'); myGrep('(^|\\s)ї', '$1yi'); myGrep('ї', 'i'); myGrep('(^|\\s)й', '$1y'); myGrep('й', 'i'); myGrep('к', 'k'); myGrep('л', 'l'); myGrep('м', 'm'); myGrep('н', 'n'); myGrep('о', 'o'); myGrep('п', 'p'); myGrep('р', 'r'); myGrep('с', 's'); myGrep('т', 't'); myGrep('у', 'u'); myGrep('ф', 'f'); myGrep('х', 'kh'); myGrep('ц', 'ts'); myGrep('ч', 'ch'); myGrep('ш', 'sh'); myGrep('щ', 'sch'); myGrep('ь', ''); myGrep('(^|\\s)ю', '$1yu'); myGrep('ю', 'iu'); myGrep('(^|\\s)я', '$1ya'); myGrep('я', 'ia'); myGrep('А', 'A'); myGrep('Б', 'B'); myGrep('В', 'V'); myGrep('Г', 'H'); myGrep('Ґ', 'G'); myGrep('Д', 'D'); myGrep('Е', 'E'); myGrep('(^|\\s)Є', '$1Ye'); myGrep('Є', 'Ie'); myGrep('Ж', 'Zh'); myGrep('З', 'Z'); myGrep('И', 'Y'); myGrep('І', 'I'); myGrep('(^|\\s)Ї', '$1Yi'); myGrep('Ї', 'I'); myGrep('(^|\\s)Й', '$1Y'); myGrep('Й', 'I'); myGrep('К', 'K'); myGrep('Л', 'L'); myGrep('М', 'M'); myGrep('Н', 'N'); myGrep('О', 'O'); myGrep('П', 'P'); myGrep('Р', 'R'); myGrep('С', 'S'); myGrep('Т', 'T'); myGrep('У', 'U'); myGrep('Ф', 'F'); myGrep('Х', 'Kh'); myGrep('Ц', 'Ts'); myGrep('Ч', 'Ch'); myGrep('Ш', 'Sh'); myGrep('Щ', 'Sch'); myGrep('Ь', ''); myGrep('(^|\\s)Ю', '$1Yu'); myGrep('Ю', 'Iu'); myGrep('(^|\\s)Я', '$1Ya'); myGrep('Я', 'Ia'); myGrep("'", ""); myGrep("’", ""); } function switchAndTranslit(chObj) { switch (chObj.constructor) { case TextColumn: case TextFrame: case Text: case Cell: case Paragraph: case Word: changeObject = chObj; break; case GraphicLine: case Oval: case Polygon: case Rectangle: case EPSText: case SplineItem: if (chObj.textPaths.length > 0) { changeObject = chObj.textPaths[0]; } break; default: break; } translit(); } for (var i = selList.length; i--;) { if (selList[i] instanceof Group) { for (var j = selList[i].allPageItems.length; j--;) { changeObject = selList[i].allPageItems[j]; switchAndTranslit(changeObject); } } else { changeObject = selList[i]; switchAndTranslit(changeObject); } } }