{"id":19,"date":"2026-01-08T16:19:15","date_gmt":"2026-01-08T15:19:15","guid":{"rendered":"https:\/\/domitar.eu\/uk\/?page_id=19"},"modified":"2026-01-29T11:00:44","modified_gmt":"2026-01-29T10:00:44","slug":"transliterator","status":"publish","type":"page","link":"https:\/\/domitar.eu\/uk\/transliterator\/","title":{"rendered":"TRANSLITERATOR"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"19\" class=\"elementor elementor-19\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f995db6 elementor-section-full_width elementor-section-stretched elementor-section-height-full elementor-section-height-default elementor-section-items-middle\" data-id=\"f995db6\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"aux-parallax-section elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9448aa3\" data-id=\"9448aa3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-97beac8 e-transform elementor-widget elementor-widget-html\" data-id=\"97beac8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0.8,&quot;sizes&quot;:[]},&quot;_transform_scale_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&display=swap');\r\n\r\n.translit-container {\r\n    max-width: 800px;\r\n    width: 100%;\r\n    margin: 0 auto 40px; \r\n    padding: 40px; \r\n    background: #f6f6f6;\r\n    border-radius: 16px; \r\n    box-shadow: 0 10px 40px rgba(0,0,0,0.08), 0 4px 12px rgba(0,0,0,0.04);\r\n    font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\r\n    border: 1px solid #e5e5e5;\r\n    text-align: center;\r\n}\r\n\r\n.translit-title { \r\n    text-align: center; \r\n    color: #000000;\r\n    font-size: 30px;\r\n    font-weight: 600; \r\n    margin-bottom: 12px; \r\n    letter-spacing: -0.02em;\r\n    width: 100%;\r\n}\r\n\r\n.translit-subtitle { \r\n    text-align: center; \r\n    color: #333333; \r\n    font-size: 16px; \r\n    font-weight: 400; \r\n    margin-bottom: 32px; \r\n    line-height: 1.5;\r\n    width: 100%;\r\n}\r\n\r\n.input-group { \r\n    margin-bottom: 28px; \r\n    max-width: 100%;\r\n    display: block;\r\n}\r\n.input-group label { \r\n    display: block; \r\n    color: #333333; \r\n    font-weight: 500; \r\n    margin-bottom: 10px; \r\n    font-size: 15px; \r\n    width: 100%;\r\n}\r\n.input-field { \r\n    width: 100%; \r\n    max-width: 100%;\r\n    padding: 16px 20px; \r\n    border: 2px solid #e0e0e0; \r\n    border-radius: 12px; \r\n    font-size: 18px; \r\n    font-weight: 500; \r\n    color: #1a1a1a !important;\r\n    background: #ffffff; \r\n    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); \r\n    box-shadow: 0 1px 3px rgba(0,0,0,0.05);\r\n    min-height: 64px;\r\n    font-family: 'IBM Plex Sans', monospace;\r\n    display: block;\r\n    margin: 0 auto;\r\n}\r\n.input-field::placeholder { color: #999999 !important; }\r\n.input-field:focus { \r\n    outline: none; \r\n    border-color: #007cba; \r\n    box-shadow: 0 10px 25px rgba(0,124,186,0.15), 0 0 0 4px rgba(0,124,186,0.1);\r\n    transform: translateY(-1px);\r\n}\r\n\r\n.output-group { \r\n    text-align: center; \r\n    margin-top: 28px; \r\n    width: 100%;\r\n}\r\n.output-group strong { \r\n    display: block; \r\n    color: #333333; \r\n    font-size: 16px; \r\n    margin-bottom: 12px; \r\n    font-weight: 500; \r\n}\r\n.output-field { \r\n    min-height: 64px; \r\n    padding: 24px 20px; \r\n    background: #ffffff; \r\n    border-radius: 14px; \r\n    font-size: 24px; \r\n    font-weight: 600; \r\n    font-family: 'IBM Plex Sans Mono', 'IBM Plex Sans', monospace; \r\n    line-height: 1.4; \r\n    box-shadow: 0 4px 16px rgba(0,0,0,0.06);\r\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); \r\n    border: 2px solid #e0e0e0; \r\n    width: 100%;\r\n    max-width: 100%;\r\n    margin: 0 auto;\r\n    color: #1a1a1a;\r\n    display: block;\r\n}\r\n.output-field.has-content { \r\n    border-color: #00a32a; \r\n    box-shadow: 0 12px 32px rgba(0,163,42,0.2), 0 0 0 4px rgba(0,163,42,0.1); \r\n    transform: translateY(-2px);\r\n}\r\n\r\n@keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }\r\n.translit-container { animation: fadeInUp 0.6s cubic-bezier(0.4, 0, 0.2, 1); }\r\n\r\n@media (max-width: 768px) { \r\n    .translit-container { padding: 28px 20px; margin: 20px 10px; } \r\n    .translit-title { font-size: 26px; } \r\n}\r\n<\/style>\r\n\r\n<script>\r\nfunction uaToLatin(input) {\r\n    const ignoreChars = ['\u044c', '\u042c', '\u2019', '\u02bc', '\\\\'];\r\n    const baseMap = {\r\n        '\u0410':'A','\u0430':'a','\u0411':'B','\u0431':'b','\u0412':'V','\u0432':'v','\u0413':'H','\u0433':'h','\u0490':'G','\u0491':'g',\r\n        '\u0414':'D','\u0434':'d','\u0415':'E','\u0435':'e','\u0416':'Zh','\u0436':'zh','\u0417':'Z','\u0437':'z','\u0418':'Y','\u0438':'y',\r\n        '\u0406':'I','\u0456':'i','\u041a':'K','\u043a':'k','\u041b':'L','\u043b':'l','\u041c':'M','\u043c':'m','\u041d':'N','\u043d':'n',\r\n        '\u041e':'O','\u043e':'o','\u041f':'P','\u043f':'p','\u0420':'R','\u0440':'r','\u0421':'S','\u0441':'s','\u0422':'T','\u0442':'t',\r\n        '\u0423':'U','\u0443':'u','\u0424':'F','\u0444':'f','\u0425':'Kh','\u0445':'kh','\u0426':'Ts','\u0446':'ts','\u0427':'Ch','\u0447':'ch',\r\n        '\u0428':'Sh','\u0448':'sh','\u0429':'Shch','\u0449':'shch'\r\n    };\r\n\r\n    let result = '';\r\n    for (let i = 0; i < input.length; i++) {\r\n        const char = input[i];\r\n        const nextChar = i + 1 < input.length ? input[i + 1] : '';\r\n        const prevChar = i > 0 ? input[i - 1] : '';\r\n        const isWordStart = (i === 0) || (prevChar === ' ');\r\n\r\n        if (ignoreChars.includes(char)) continue;\r\n\r\n        if ((char === '\u0437' || char === '\u0417') && (nextChar === '\u0433' || nextChar === '\u0413')) {\r\n            result += (char === '\u0417') ? 'Zgh' : 'zgh';\r\n            i++; continue;\r\n        }\r\n\r\n        if (isWordStart) {\r\n            if (char === '\u0454' || char === '\u0404') { result += 'Ye'; continue; }\r\n            if (char === '\u0457' || char === '\u0407') { result += 'Yi'; continue; }\r\n            if (char === '\u0439' || char === '\u0419') { result += 'Y'; continue; }\r\n            if (char === '\u044e' || char === '\u042e') { result += 'Yu'; continue; }\r\n            if (char === '\u044f' || char === '\u042f') { result += 'Ya'; continue; }\r\n        } else {\r\n            if (char === '\u0454' || char === '\u0404') { result += 'ie'; continue; }\r\n            if (char === '\u0457' || char === '\u0407') { result += 'i'; continue; }\r\n            if (char === '\u0439' || char === '\u0419') { result += 'i'; continue; }\r\n            if (char === '\u044e' || char === '\u042e') { result += 'iu'; continue; }\r\n            if (char === '\u044f' || char === '\u042f') { result += 'ia'; continue; }\r\n        }\r\n\r\n        if (char in baseMap) result += baseMap[char];\r\n        else result += char;\r\n    }\r\n    return result;\r\n}\r\n\r\nfunction initTranslitWidget() {\r\n    const input = document.getElementById('translit_input');\r\n    const output = document.getElementById('translit_output');\r\n\r\n    function updateOutput() {\r\n        const text = input.value;\r\n        const result = uaToLatin(text);\r\n        output.textContent = result;\r\n        output.classList.toggle('has-content', result.length > 0);\r\n    }\r\n\r\n    input.addEventListener('input', updateOutput);\r\n}\r\n<\/script>\r\n\r\n<div class=\"translit-container\">\r\n    <h2 class=\"translit-title\">\ud83d\udd04 \u0422\u0440\u0430\u043d\u0441\u043b\u0456\u0442\u0435\u0440ator \u041a\u0438\u0440\u0438\u043b\u0438\u0446\u044f \u2192 \u041b\u0430\u0442\u0438\u043d\u043a\u0430<\/h2>\r\n    <p class=\"translit-subtitle\">\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0456\u043c'\u044f, \u043f\u0440\u0456\u0437\u0432\u0438\u0449\u0435, \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u0439 \u043f\u0443\u043d\u043a\u0442 \u0430\u0431\u043e \u0430\u0434\u0440\u0435\u0441\u0443 (\u043b\u0438\u0448\u0435 \u043a\u0438\u0440\u0438\u043b\u0438\u0446\u044f \u2192 \u043f\u043e\u043b\u044c\u0441\u044c\u043a\u0430)<\/p>\r\n    \r\n    <div class=\"input-group\">\r\n        <label for=\"translit_input\">\ud83d\udcdd \u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043a\u0438\u0440\u0438\u043b\u0438\u0446\u0435\u044e:<\/label>\r\n        <input type=\"text\" id=\"translit_input\" class=\"input-field\" placeholder=\"\u041d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434: \u0413\u0430\u0454\u0432\u0438\u0447, \u041c\u0430\u0440'\u0457\u043d\u0435, \u041e\u043b\u0435\u043a\u0441\u0456\u0439, \u041c\u0430\u043b\u044e\u043d\u043e\u043a, \u041a\u043e\u0441\u0442\u044f\u043d\u0442\u0438\u043d...\">\r\n    <\/div>\r\n\r\n    <div class=\"output-group\">\r\n        <strong>\u2728 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u0456\u0442\u0435\u0440\u0430\u0446\u0456\u0457:<\/strong>\r\n        <div id=\"translit_output\" class=\"output-field\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437'\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0442\u0443\u0442...<\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>document.addEventListener('DOMContentLoaded', initTranslitWidget);<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd04 \u0422\u0440\u0430\u043d\u0441\u043b\u0456\u0442\u0435\u0440ator \u041a\u0438\u0440\u0438\u043b\u0438\u0446\u044f \u2192 \u041b\u0430\u0442\u0438\u043d\u043a\u0430 \u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0456\u043c&#8217;\u044f, \u043f\u0440\u0456\u0437\u0432\u0438\u0449\u0435, \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u0439 \u043f\u0443\u043d\u043a\u0442 \u0430\u0431\u043e \u0430\u0434\u0440\u0435\u0441\u0443 (\u043b\u0438\u0448\u0435 \u043a\u0438\u0440\u0438\u043b\u0438\u0446\u044f \u2192 \u043f\u043e\u043b\u044c\u0441\u044c\u043a\u0430) \ud83d\udcdd \u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043a\u0438\u0440\u0438\u043b\u0438\u0446\u0435\u044e: \u2728 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u0456\u0442\u0435\u0440\u0430\u0446\u0456\u0457: \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437&#8217;\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0442\u0443\u0442&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-19","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/pages\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/comments?post=19"}],"version-history":[{"count":7,"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/pages\/19\/revisions"}],"predecessor-version":[{"id":1240,"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/pages\/19\/revisions\/1240"}],"wp:attachment":[{"href":"https:\/\/domitar.eu\/uk\/wp-json\/wp\/v2\/media?parent=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}