Gariks Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 Вітаю. Знаю, що тема не нова, але записи по цій темі від 21 року... Що на зараз є актуальне, щоб перекласти картки товару на українську 25К+ Хтось на практиці використовував щось, щоб коректний переклад був. Надіслати Поділитися на інших сайтах More sharing options...
drOC Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 Прозондуйте тему Lingva API (альтернативний фронтенд для Google) - недавно перекладали пару тисяч товарів, клієнт був задоволений, правда забув який з сайтів. Проект тут https://github.com/thedaviddelta/lingva-translate 25k якщо грамотно то за певний час можна реалізувати чергою ud. Надіслати Поділитися на інших сайтах More sharing options... kabantejay Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 ще за допомогою ChatGPT можна: 1 Надіслати Поділитися на інших сайтах More sharing options... Seofisher Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 Недавно перекладам цим 70+ к товарів. Сайт з можливо трохи специфічною нішею, тому не все ідеально (все я і не перевіряв), але в цілому нормально Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 14.06.2023 в 13:15, Gariks сказал: Вітаю. Знаю, що тема не нова, але записи по цій темі від 21 року... Що на зараз є актуальне, щоб перекласти картки товару на українську 25К+ Хтось на практиці використовував щось, щоб коректний переклад був. В зависимости от сложности контента и требований Надіслати Поділитися на інших сайтах More sharing options... buslikdrev Опубліковано: 15 червня 2023 Share Опубліковано: 15 червня 2023 (змінено) Скрытый текст <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <style> #language select,#language_vertical select,#language_content select,#version select{width:100%;height:29px;position:relative;border:1px solid #ccc;border-radius:2px;overflow:hidden;box-sizing:border-box;-moz-box-sizing:border-box;margin-bottom:20px} #goog-gt-tt,#goog-gt-{display:none!important} #language .skiptranslate.goog-te-gadget,#language_vertical .skiptranslate.goog-te-gadget,#language_content .skiptranslate.goog-te-gadget{display:block!important;margin-bottom:20px} #language .skiptranslate.goog-te-gadget select,#language_vertical .skiptranslate.goog-te-gadget select,#language_content .skiptranslate.goog-te-gadget select{margin:0;cursor:pointer} .offline #language_vertical button{display:none} </style> <script> var BusEngine = {}; BusEngine.cookie = { 'set': function(name, value, domain, path, day) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } if (typeof value == 'undefined' || typeof value != 'string') { value = ''; } if (typeof domain == 'object' && domain != null) { console.log(domain); if ('path' in domain) { path = domain.path; } if ('day' in domain) { day = domain.day; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } if (typeof day != 'undefined' && 'Date' in window) { var x = new window.Date(); x.setUTCSeconds(3600 * 24 * Number(day)); day = ' expires=' + x + ';'; } else { day = ''; } document.cookie = name + '=' + value + '; path=' + path + ';' + day + ' domain=' + domain; return true; }, 'get': function(name) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return c; } //console.log(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); //console.log(/(name)\=(\S[^\;]+)/); c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (c && c[2]) { return c[2]; } else { return ''; } }, 'remove': function(name, value, domain, path) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } var v; if (typeof value == 'undefined' || typeof value != 'string') { v = ''; } else { v = value; } if (typeof domain == 'object' && domain != null) { if ('path' in domain) { path = domain.path; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT'; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain='; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain=' + domain; return true; }, 'has': function(name, value) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return false; } c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (typeof value == 'undefined' || typeof value != 'string') { if (c && c[1] && c[1] == name) { return true; } } else { if (c && c[2] && c[2] == value) { return true; } } return false; }, 'clear': function() { var cookies = document.cookie.split(';'); var i, ii = cookies.length, pos; for (i = 0; i < ii; ++i) { pos = cookies[i].indexOf('='); if (pos > -1) { BusEngine.cookie.remove(cookies[i].substr(0, pos)); } } if (!document.cookie) { return true; } else { return false; } }, 'test': function() { // добавить BusEngine.cookie.set('BusEngine', 'Like'); console.log(document.cookie); // получить console.log(BusEngine.cookie.get('BusEngine')); // проверить console.log(BusEngine.cookie.has('BusEngine')); // удалить BusEngine.cookie.remove('BusEngine'); console.log(document.cookie); // проверить console.log(BusEngine.cookie.has('BusEngine')); } }; BusEngine.loadScript = function(url, callback) { var s, ss; s = document.createElement('script'); s.type = 'text/javascript'; s.src = url; if (typeof callback !== 'undefined') { s.onreadystatechange = callback; s.onload = callback; } ss = document.head; if (ss) { ss.appendChild(s); } }; // language BusEngine.language = { 'setting': { langDefault: (document.documentElement.lang || window.navigator.language || window.navigator.userLanguage), //lang: (window.navigator.language || window.navigator.userLanguage), lang: 'uk', domain: document.domain }, 'status': false, 'initialize': function(setting) { if (setting == null && BusEngine.language.status) { return false; } BusEngine.language.status = true; BusEngine.loadScript('https://translate.google.com/translate_a/element.js?cb=BusEngine.language.start'); }, 'start': function(setting) { // устанавливаем настройки если есть if (typeof setting === 'object' && !('composedPath' in setting) && !('bubbles' in setting)) { for (var i in setting) { BusEngine.language.setting[i] = setting[i]; } } // объявляем рабочие переменные var element, select, x, timertick = 0, timerId, id = "language_vertical"; // устанавливаем выбор тега в зависимости от ширины экрана if ('matchMedia' in window) { if (window.matchMedia('(max-width: 991px)').matches) { id = "language_content"; } } else { if (window.innerWidth <= 991) { id = "language_content"; } } // удаляем кнопку запуска переводчика element = document.querySelector('#' + id + ' button'); if (element) { element.parentNode.removeChild(element); } // устанавливаем язык из нашей долгой куки if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.setting.lang = BusEngine.cookie.get('BusEngineLang'); } BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, BusEngine.language.setting.domain); BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, ''); // запускаем переводчик x = new google.translate.TranslateElement({ pageLanguage: BusEngine.language.setting.langDefault, includedLanguages: 'be,en,it,kk,lv,lt,de,ru,uk,fr,cs,et', //layout: google.translate.TranslateElement.InlineLayout.SIMPLE, //autoDisplay: true }, id); // отслеживаем появление тегов переводчика /* window.addEventListener('DOMNodeInserted', function(e) { console.log(e); }, false); */ // отслеживаем появление тегов переводчика универсально timerId = setTimeout(function tick() { timertick++; select = document.querySelector('#' + id + ' select'); if (select) { // устанавливаем язык перевода в долгую куку select.addEventListener('change', function(e) { if (typeof e == 'object' && 'target' in e && 'value' in e.target && e.target.value != BusEngine.language.setting.lang) { BusEngine.cookie.set('BusEngineLang', e.target.value, BusEngine.language.setting.domain, null, 365); } }, false); // скрываем верхнее меню в зависимости от куки element = document.querySelector('iframe[id*=".container"]'); if (element && !BusEngine.cookie.has('BusEngineLangHorizontal')) { document.body.classList.remove('languagefix'); element.style['display'] = 'block'; element.parentNode.style['display'] = 'block'; var e = element.contentWindow.document.querySelector('a[id*=".close"], a[id*=".close"] img, .goog-close-link'); if (e) { var s = document.createElement('a'); s.style = e.style; s.style['margin'] = '0 10px'; s.style['cursor'] = 'pointer'; s.innerHTML = e.innerHTML; s.id = 'fuckgoogle'; e.style['display'] = 'none'; e.parentNode.appendChild(s); s.addEventListener('click', function(e) { document.body.classList.add('languagefix'); BusEngine.cookie.set('BusEngineLangHorizontal', 'none', BusEngine.language.setting.domain, null, 365); }); } } } else { if (timertick < 10) { timerId = setTimeout(tick, 200); } } }, 200); }, 'set': function (setting) { if (typeof setting == 'object' && setting != null) { if ('lang' in setting && typeof setting.lang == 'string') { BusEngine.language.setting.lang = setting.lang; } BusEngine.cookie.set('BusEngineLang', BusEngine.language.setting.lang, BusEngine.language.setting.domain, null, 365); window.location.reload(); } } }; // запускаем модули когда есть интернет if (window.navigator.onLine) { // запускаем модуль переводчика когда его активировали if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.initialize(); } } else { window.addEventListener('DOMContentLoaded', function() { document.body.classList.add('offline'); }); } </script> </head> <body class="notranslate"> <div id="language_vertical"><button type="button" onclick="BusEngine.language.initialize();" title="Активирировать переводчик" aria-label="Активирировать переводчик" style="padding:5px;margin-bottom:20px;width:100%;background-color:#000000;color:#ffffff;cursor:pointer">Activate translator</button></div> <div class="translate">Я программист!</div> </body></html> Змінено 15 червня 2023 користувачем buslikdrev Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Clan Опубліковано: 18 серпня 2023 Share Опубліковано: 18 серпня 2023 Теж шукаю рішення. Який буде найкращий варіант модуля для перекладу всього контенту інтернет-магазина автоматично? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 3 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Локалізація Переклад карток товару на українську Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
kabantejay Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 ще за допомогою ChatGPT можна: 1 Надіслати Поділитися на інших сайтах More sharing options... Seofisher Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 Недавно перекладам цим 70+ к товарів. Сайт з можливо трохи специфічною нішею, тому не все ідеально (все я і не перевіряв), але в цілому нормально Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 14.06.2023 в 13:15, Gariks сказал: Вітаю. Знаю, що тема не нова, але записи по цій темі від 21 року... Що на зараз є актуальне, щоб перекласти картки товару на українську 25К+ Хтось на практиці використовував щось, щоб коректний переклад був. В зависимости от сложности контента и требований Надіслати Поділитися на інших сайтах More sharing options... buslikdrev Опубліковано: 15 червня 2023 Share Опубліковано: 15 червня 2023 (змінено) Скрытый текст <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <style> #language select,#language_vertical select,#language_content select,#version select{width:100%;height:29px;position:relative;border:1px solid #ccc;border-radius:2px;overflow:hidden;box-sizing:border-box;-moz-box-sizing:border-box;margin-bottom:20px} #goog-gt-tt,#goog-gt-{display:none!important} #language .skiptranslate.goog-te-gadget,#language_vertical .skiptranslate.goog-te-gadget,#language_content .skiptranslate.goog-te-gadget{display:block!important;margin-bottom:20px} #language .skiptranslate.goog-te-gadget select,#language_vertical .skiptranslate.goog-te-gadget select,#language_content .skiptranslate.goog-te-gadget select{margin:0;cursor:pointer} .offline #language_vertical button{display:none} </style> <script> var BusEngine = {}; BusEngine.cookie = { 'set': function(name, value, domain, path, day) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } if (typeof value == 'undefined' || typeof value != 'string') { value = ''; } if (typeof domain == 'object' && domain != null) { console.log(domain); if ('path' in domain) { path = domain.path; } if ('day' in domain) { day = domain.day; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } if (typeof day != 'undefined' && 'Date' in window) { var x = new window.Date(); x.setUTCSeconds(3600 * 24 * Number(day)); day = ' expires=' + x + ';'; } else { day = ''; } document.cookie = name + '=' + value + '; path=' + path + ';' + day + ' domain=' + domain; return true; }, 'get': function(name) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return c; } //console.log(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); //console.log(/(name)\=(\S[^\;]+)/); c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (c && c[2]) { return c[2]; } else { return ''; } }, 'remove': function(name, value, domain, path) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } var v; if (typeof value == 'undefined' || typeof value != 'string') { v = ''; } else { v = value; } if (typeof domain == 'object' && domain != null) { if ('path' in domain) { path = domain.path; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT'; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain='; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain=' + domain; return true; }, 'has': function(name, value) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return false; } c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (typeof value == 'undefined' || typeof value != 'string') { if (c && c[1] && c[1] == name) { return true; } } else { if (c && c[2] && c[2] == value) { return true; } } return false; }, 'clear': function() { var cookies = document.cookie.split(';'); var i, ii = cookies.length, pos; for (i = 0; i < ii; ++i) { pos = cookies[i].indexOf('='); if (pos > -1) { BusEngine.cookie.remove(cookies[i].substr(0, pos)); } } if (!document.cookie) { return true; } else { return false; } }, 'test': function() { // добавить BusEngine.cookie.set('BusEngine', 'Like'); console.log(document.cookie); // получить console.log(BusEngine.cookie.get('BusEngine')); // проверить console.log(BusEngine.cookie.has('BusEngine')); // удалить BusEngine.cookie.remove('BusEngine'); console.log(document.cookie); // проверить console.log(BusEngine.cookie.has('BusEngine')); } }; BusEngine.loadScript = function(url, callback) { var s, ss; s = document.createElement('script'); s.type = 'text/javascript'; s.src = url; if (typeof callback !== 'undefined') { s.onreadystatechange = callback; s.onload = callback; } ss = document.head; if (ss) { ss.appendChild(s); } }; // language BusEngine.language = { 'setting': { langDefault: (document.documentElement.lang || window.navigator.language || window.navigator.userLanguage), //lang: (window.navigator.language || window.navigator.userLanguage), lang: 'uk', domain: document.domain }, 'status': false, 'initialize': function(setting) { if (setting == null && BusEngine.language.status) { return false; } BusEngine.language.status = true; BusEngine.loadScript('https://translate.google.com/translate_a/element.js?cb=BusEngine.language.start'); }, 'start': function(setting) { // устанавливаем настройки если есть if (typeof setting === 'object' && !('composedPath' in setting) && !('bubbles' in setting)) { for (var i in setting) { BusEngine.language.setting[i] = setting[i]; } } // объявляем рабочие переменные var element, select, x, timertick = 0, timerId, id = "language_vertical"; // устанавливаем выбор тега в зависимости от ширины экрана if ('matchMedia' in window) { if (window.matchMedia('(max-width: 991px)').matches) { id = "language_content"; } } else { if (window.innerWidth <= 991) { id = "language_content"; } } // удаляем кнопку запуска переводчика element = document.querySelector('#' + id + ' button'); if (element) { element.parentNode.removeChild(element); } // устанавливаем язык из нашей долгой куки if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.setting.lang = BusEngine.cookie.get('BusEngineLang'); } BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, BusEngine.language.setting.domain); BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, ''); // запускаем переводчик x = new google.translate.TranslateElement({ pageLanguage: BusEngine.language.setting.langDefault, includedLanguages: 'be,en,it,kk,lv,lt,de,ru,uk,fr,cs,et', //layout: google.translate.TranslateElement.InlineLayout.SIMPLE, //autoDisplay: true }, id); // отслеживаем появление тегов переводчика /* window.addEventListener('DOMNodeInserted', function(e) { console.log(e); }, false); */ // отслеживаем появление тегов переводчика универсально timerId = setTimeout(function tick() { timertick++; select = document.querySelector('#' + id + ' select'); if (select) { // устанавливаем язык перевода в долгую куку select.addEventListener('change', function(e) { if (typeof e == 'object' && 'target' in e && 'value' in e.target && e.target.value != BusEngine.language.setting.lang) { BusEngine.cookie.set('BusEngineLang', e.target.value, BusEngine.language.setting.domain, null, 365); } }, false); // скрываем верхнее меню в зависимости от куки element = document.querySelector('iframe[id*=".container"]'); if (element && !BusEngine.cookie.has('BusEngineLangHorizontal')) { document.body.classList.remove('languagefix'); element.style['display'] = 'block'; element.parentNode.style['display'] = 'block'; var e = element.contentWindow.document.querySelector('a[id*=".close"], a[id*=".close"] img, .goog-close-link'); if (e) { var s = document.createElement('a'); s.style = e.style; s.style['margin'] = '0 10px'; s.style['cursor'] = 'pointer'; s.innerHTML = e.innerHTML; s.id = 'fuckgoogle'; e.style['display'] = 'none'; e.parentNode.appendChild(s); s.addEventListener('click', function(e) { document.body.classList.add('languagefix'); BusEngine.cookie.set('BusEngineLangHorizontal', 'none', BusEngine.language.setting.domain, null, 365); }); } } } else { if (timertick < 10) { timerId = setTimeout(tick, 200); } } }, 200); }, 'set': function (setting) { if (typeof setting == 'object' && setting != null) { if ('lang' in setting && typeof setting.lang == 'string') { BusEngine.language.setting.lang = setting.lang; } BusEngine.cookie.set('BusEngineLang', BusEngine.language.setting.lang, BusEngine.language.setting.domain, null, 365); window.location.reload(); } } }; // запускаем модули когда есть интернет if (window.navigator.onLine) { // запускаем модуль переводчика когда его активировали if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.initialize(); } } else { window.addEventListener('DOMContentLoaded', function() { document.body.classList.add('offline'); }); } </script> </head> <body class="notranslate"> <div id="language_vertical"><button type="button" onclick="BusEngine.language.initialize();" title="Активирировать переводчик" aria-label="Активирировать переводчик" style="padding:5px;margin-bottom:20px;width:100%;background-color:#000000;color:#ffffff;cursor:pointer">Activate translator</button></div> <div class="translate">Я программист!</div> </body></html> Змінено 15 червня 2023 користувачем buslikdrev Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Clan Опубліковано: 18 серпня 2023 Share Опубліковано: 18 серпня 2023 Теж шукаю рішення. Який буде найкращий варіант модуля для перекладу всього контенту інтернет-магазина автоматично? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 3 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Локалізація Переклад карток товару на українську Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
Seofisher Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 Недавно перекладам цим 70+ к товарів. Сайт з можливо трохи специфічною нішею, тому не все ідеально (все я і не перевіряв), але в цілому нормально Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 14.06.2023 в 13:15, Gariks сказал: Вітаю. Знаю, що тема не нова, але записи по цій темі від 21 року... Що на зараз є актуальне, щоб перекласти картки товару на українську 25К+ Хтось на практиці використовував щось, щоб коректний переклад був. В зависимости от сложности контента и требований Надіслати Поділитися на інших сайтах More sharing options... buslikdrev Опубліковано: 15 червня 2023 Share Опубліковано: 15 червня 2023 (змінено) Скрытый текст <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <style> #language select,#language_vertical select,#language_content select,#version select{width:100%;height:29px;position:relative;border:1px solid #ccc;border-radius:2px;overflow:hidden;box-sizing:border-box;-moz-box-sizing:border-box;margin-bottom:20px} #goog-gt-tt,#goog-gt-{display:none!important} #language .skiptranslate.goog-te-gadget,#language_vertical .skiptranslate.goog-te-gadget,#language_content .skiptranslate.goog-te-gadget{display:block!important;margin-bottom:20px} #language .skiptranslate.goog-te-gadget select,#language_vertical .skiptranslate.goog-te-gadget select,#language_content .skiptranslate.goog-te-gadget select{margin:0;cursor:pointer} .offline #language_vertical button{display:none} </style> <script> var BusEngine = {}; BusEngine.cookie = { 'set': function(name, value, domain, path, day) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } if (typeof value == 'undefined' || typeof value != 'string') { value = ''; } if (typeof domain == 'object' && domain != null) { console.log(domain); if ('path' in domain) { path = domain.path; } if ('day' in domain) { day = domain.day; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } if (typeof day != 'undefined' && 'Date' in window) { var x = new window.Date(); x.setUTCSeconds(3600 * 24 * Number(day)); day = ' expires=' + x + ';'; } else { day = ''; } document.cookie = name + '=' + value + '; path=' + path + ';' + day + ' domain=' + domain; return true; }, 'get': function(name) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return c; } //console.log(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); //console.log(/(name)\=(\S[^\;]+)/); c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (c && c[2]) { return c[2]; } else { return ''; } }, 'remove': function(name, value, domain, path) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } var v; if (typeof value == 'undefined' || typeof value != 'string') { v = ''; } else { v = value; } if (typeof domain == 'object' && domain != null) { if ('path' in domain) { path = domain.path; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT'; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain='; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain=' + domain; return true; }, 'has': function(name, value) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return false; } c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (typeof value == 'undefined' || typeof value != 'string') { if (c && c[1] && c[1] == name) { return true; } } else { if (c && c[2] && c[2] == value) { return true; } } return false; }, 'clear': function() { var cookies = document.cookie.split(';'); var i, ii = cookies.length, pos; for (i = 0; i < ii; ++i) { pos = cookies[i].indexOf('='); if (pos > -1) { BusEngine.cookie.remove(cookies[i].substr(0, pos)); } } if (!document.cookie) { return true; } else { return false; } }, 'test': function() { // добавить BusEngine.cookie.set('BusEngine', 'Like'); console.log(document.cookie); // получить console.log(BusEngine.cookie.get('BusEngine')); // проверить console.log(BusEngine.cookie.has('BusEngine')); // удалить BusEngine.cookie.remove('BusEngine'); console.log(document.cookie); // проверить console.log(BusEngine.cookie.has('BusEngine')); } }; BusEngine.loadScript = function(url, callback) { var s, ss; s = document.createElement('script'); s.type = 'text/javascript'; s.src = url; if (typeof callback !== 'undefined') { s.onreadystatechange = callback; s.onload = callback; } ss = document.head; if (ss) { ss.appendChild(s); } }; // language BusEngine.language = { 'setting': { langDefault: (document.documentElement.lang || window.navigator.language || window.navigator.userLanguage), //lang: (window.navigator.language || window.navigator.userLanguage), lang: 'uk', domain: document.domain }, 'status': false, 'initialize': function(setting) { if (setting == null && BusEngine.language.status) { return false; } BusEngine.language.status = true; BusEngine.loadScript('https://translate.google.com/translate_a/element.js?cb=BusEngine.language.start'); }, 'start': function(setting) { // устанавливаем настройки если есть if (typeof setting === 'object' && !('composedPath' in setting) && !('bubbles' in setting)) { for (var i in setting) { BusEngine.language.setting[i] = setting[i]; } } // объявляем рабочие переменные var element, select, x, timertick = 0, timerId, id = "language_vertical"; // устанавливаем выбор тега в зависимости от ширины экрана if ('matchMedia' in window) { if (window.matchMedia('(max-width: 991px)').matches) { id = "language_content"; } } else { if (window.innerWidth <= 991) { id = "language_content"; } } // удаляем кнопку запуска переводчика element = document.querySelector('#' + id + ' button'); if (element) { element.parentNode.removeChild(element); } // устанавливаем язык из нашей долгой куки if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.setting.lang = BusEngine.cookie.get('BusEngineLang'); } BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, BusEngine.language.setting.domain); BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, ''); // запускаем переводчик x = new google.translate.TranslateElement({ pageLanguage: BusEngine.language.setting.langDefault, includedLanguages: 'be,en,it,kk,lv,lt,de,ru,uk,fr,cs,et', //layout: google.translate.TranslateElement.InlineLayout.SIMPLE, //autoDisplay: true }, id); // отслеживаем появление тегов переводчика /* window.addEventListener('DOMNodeInserted', function(e) { console.log(e); }, false); */ // отслеживаем появление тегов переводчика универсально timerId = setTimeout(function tick() { timertick++; select = document.querySelector('#' + id + ' select'); if (select) { // устанавливаем язык перевода в долгую куку select.addEventListener('change', function(e) { if (typeof e == 'object' && 'target' in e && 'value' in e.target && e.target.value != BusEngine.language.setting.lang) { BusEngine.cookie.set('BusEngineLang', e.target.value, BusEngine.language.setting.domain, null, 365); } }, false); // скрываем верхнее меню в зависимости от куки element = document.querySelector('iframe[id*=".container"]'); if (element && !BusEngine.cookie.has('BusEngineLangHorizontal')) { document.body.classList.remove('languagefix'); element.style['display'] = 'block'; element.parentNode.style['display'] = 'block'; var e = element.contentWindow.document.querySelector('a[id*=".close"], a[id*=".close"] img, .goog-close-link'); if (e) { var s = document.createElement('a'); s.style = e.style; s.style['margin'] = '0 10px'; s.style['cursor'] = 'pointer'; s.innerHTML = e.innerHTML; s.id = 'fuckgoogle'; e.style['display'] = 'none'; e.parentNode.appendChild(s); s.addEventListener('click', function(e) { document.body.classList.add('languagefix'); BusEngine.cookie.set('BusEngineLangHorizontal', 'none', BusEngine.language.setting.domain, null, 365); }); } } } else { if (timertick < 10) { timerId = setTimeout(tick, 200); } } }, 200); }, 'set': function (setting) { if (typeof setting == 'object' && setting != null) { if ('lang' in setting && typeof setting.lang == 'string') { BusEngine.language.setting.lang = setting.lang; } BusEngine.cookie.set('BusEngineLang', BusEngine.language.setting.lang, BusEngine.language.setting.domain, null, 365); window.location.reload(); } } }; // запускаем модули когда есть интернет if (window.navigator.onLine) { // запускаем модуль переводчика когда его активировали if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.initialize(); } } else { window.addEventListener('DOMContentLoaded', function() { document.body.classList.add('offline'); }); } </script> </head> <body class="notranslate"> <div id="language_vertical"><button type="button" onclick="BusEngine.language.initialize();" title="Активирировать переводчик" aria-label="Активирировать переводчик" style="padding:5px;margin-bottom:20px;width:100%;background-color:#000000;color:#ffffff;cursor:pointer">Activate translator</button></div> <div class="translate">Я программист!</div> </body></html> Змінено 15 червня 2023 користувачем buslikdrev Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Clan Опубліковано: 18 серпня 2023 Share Опубліковано: 18 серпня 2023 Теж шукаю рішення. Який буде найкращий варіант модуля для перекладу всього контенту інтернет-магазина автоматично? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 3 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Локалізація Переклад карток товару на українську
chukcha Опубліковано: 14 червня 2023 Share Опубліковано: 14 червня 2023 14.06.2023 в 13:15, Gariks сказал: Вітаю. Знаю, що тема не нова, але записи по цій темі від 21 року... Що на зараз є актуальне, щоб перекласти картки товару на українську 25К+ Хтось на практиці використовував щось, щоб коректний переклад був. В зависимости от сложности контента и требований Надіслати Поділитися на інших сайтах More sharing options... buslikdrev Опубліковано: 15 червня 2023 Share Опубліковано: 15 червня 2023 (змінено) Скрытый текст <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <style> #language select,#language_vertical select,#language_content select,#version select{width:100%;height:29px;position:relative;border:1px solid #ccc;border-radius:2px;overflow:hidden;box-sizing:border-box;-moz-box-sizing:border-box;margin-bottom:20px} #goog-gt-tt,#goog-gt-{display:none!important} #language .skiptranslate.goog-te-gadget,#language_vertical .skiptranslate.goog-te-gadget,#language_content .skiptranslate.goog-te-gadget{display:block!important;margin-bottom:20px} #language .skiptranslate.goog-te-gadget select,#language_vertical .skiptranslate.goog-te-gadget select,#language_content .skiptranslate.goog-te-gadget select{margin:0;cursor:pointer} .offline #language_vertical button{display:none} </style> <script> var BusEngine = {}; BusEngine.cookie = { 'set': function(name, value, domain, path, day) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } if (typeof value == 'undefined' || typeof value != 'string') { value = ''; } if (typeof domain == 'object' && domain != null) { console.log(domain); if ('path' in domain) { path = domain.path; } if ('day' in domain) { day = domain.day; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } if (typeof day != 'undefined' && 'Date' in window) { var x = new window.Date(); x.setUTCSeconds(3600 * 24 * Number(day)); day = ' expires=' + x + ';'; } else { day = ''; } document.cookie = name + '=' + value + '; path=' + path + ';' + day + ' domain=' + domain; return true; }, 'get': function(name) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return c; } //console.log(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); //console.log(/(name)\=(\S[^\;]+)/); c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (c && c[2]) { return c[2]; } else { return ''; } }, 'remove': function(name, value, domain, path) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } var v; if (typeof value == 'undefined' || typeof value != 'string') { v = ''; } else { v = value; } if (typeof domain == 'object' && domain != null) { if ('path' in domain) { path = domain.path; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT'; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain='; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain=' + domain; return true; }, 'has': function(name, value) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return false; } c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (typeof value == 'undefined' || typeof value != 'string') { if (c && c[1] && c[1] == name) { return true; } } else { if (c && c[2] && c[2] == value) { return true; } } return false; }, 'clear': function() { var cookies = document.cookie.split(';'); var i, ii = cookies.length, pos; for (i = 0; i < ii; ++i) { pos = cookies[i].indexOf('='); if (pos > -1) { BusEngine.cookie.remove(cookies[i].substr(0, pos)); } } if (!document.cookie) { return true; } else { return false; } }, 'test': function() { // добавить BusEngine.cookie.set('BusEngine', 'Like'); console.log(document.cookie); // получить console.log(BusEngine.cookie.get('BusEngine')); // проверить console.log(BusEngine.cookie.has('BusEngine')); // удалить BusEngine.cookie.remove('BusEngine'); console.log(document.cookie); // проверить console.log(BusEngine.cookie.has('BusEngine')); } }; BusEngine.loadScript = function(url, callback) { var s, ss; s = document.createElement('script'); s.type = 'text/javascript'; s.src = url; if (typeof callback !== 'undefined') { s.onreadystatechange = callback; s.onload = callback; } ss = document.head; if (ss) { ss.appendChild(s); } }; // language BusEngine.language = { 'setting': { langDefault: (document.documentElement.lang || window.navigator.language || window.navigator.userLanguage), //lang: (window.navigator.language || window.navigator.userLanguage), lang: 'uk', domain: document.domain }, 'status': false, 'initialize': function(setting) { if (setting == null && BusEngine.language.status) { return false; } BusEngine.language.status = true; BusEngine.loadScript('https://translate.google.com/translate_a/element.js?cb=BusEngine.language.start'); }, 'start': function(setting) { // устанавливаем настройки если есть if (typeof setting === 'object' && !('composedPath' in setting) && !('bubbles' in setting)) { for (var i in setting) { BusEngine.language.setting[i] = setting[i]; } } // объявляем рабочие переменные var element, select, x, timertick = 0, timerId, id = "language_vertical"; // устанавливаем выбор тега в зависимости от ширины экрана if ('matchMedia' in window) { if (window.matchMedia('(max-width: 991px)').matches) { id = "language_content"; } } else { if (window.innerWidth <= 991) { id = "language_content"; } } // удаляем кнопку запуска переводчика element = document.querySelector('#' + id + ' button'); if (element) { element.parentNode.removeChild(element); } // устанавливаем язык из нашей долгой куки if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.setting.lang = BusEngine.cookie.get('BusEngineLang'); } BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, BusEngine.language.setting.domain); BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, ''); // запускаем переводчик x = new google.translate.TranslateElement({ pageLanguage: BusEngine.language.setting.langDefault, includedLanguages: 'be,en,it,kk,lv,lt,de,ru,uk,fr,cs,et', //layout: google.translate.TranslateElement.InlineLayout.SIMPLE, //autoDisplay: true }, id); // отслеживаем появление тегов переводчика /* window.addEventListener('DOMNodeInserted', function(e) { console.log(e); }, false); */ // отслеживаем появление тегов переводчика универсально timerId = setTimeout(function tick() { timertick++; select = document.querySelector('#' + id + ' select'); if (select) { // устанавливаем язык перевода в долгую куку select.addEventListener('change', function(e) { if (typeof e == 'object' && 'target' in e && 'value' in e.target && e.target.value != BusEngine.language.setting.lang) { BusEngine.cookie.set('BusEngineLang', e.target.value, BusEngine.language.setting.domain, null, 365); } }, false); // скрываем верхнее меню в зависимости от куки element = document.querySelector('iframe[id*=".container"]'); if (element && !BusEngine.cookie.has('BusEngineLangHorizontal')) { document.body.classList.remove('languagefix'); element.style['display'] = 'block'; element.parentNode.style['display'] = 'block'; var e = element.contentWindow.document.querySelector('a[id*=".close"], a[id*=".close"] img, .goog-close-link'); if (e) { var s = document.createElement('a'); s.style = e.style; s.style['margin'] = '0 10px'; s.style['cursor'] = 'pointer'; s.innerHTML = e.innerHTML; s.id = 'fuckgoogle'; e.style['display'] = 'none'; e.parentNode.appendChild(s); s.addEventListener('click', function(e) { document.body.classList.add('languagefix'); BusEngine.cookie.set('BusEngineLangHorizontal', 'none', BusEngine.language.setting.domain, null, 365); }); } } } else { if (timertick < 10) { timerId = setTimeout(tick, 200); } } }, 200); }, 'set': function (setting) { if (typeof setting == 'object' && setting != null) { if ('lang' in setting && typeof setting.lang == 'string') { BusEngine.language.setting.lang = setting.lang; } BusEngine.cookie.set('BusEngineLang', BusEngine.language.setting.lang, BusEngine.language.setting.domain, null, 365); window.location.reload(); } } }; // запускаем модули когда есть интернет if (window.navigator.onLine) { // запускаем модуль переводчика когда его активировали if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.initialize(); } } else { window.addEventListener('DOMContentLoaded', function() { document.body.classList.add('offline'); }); } </script> </head> <body class="notranslate"> <div id="language_vertical"><button type="button" onclick="BusEngine.language.initialize();" title="Активирировать переводчик" aria-label="Активирировать переводчик" style="padding:5px;margin-bottom:20px;width:100%;background-color:#000000;color:#ffffff;cursor:pointer">Activate translator</button></div> <div class="translate">Я программист!</div> </body></html> Змінено 15 червня 2023 користувачем buslikdrev Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Clan Опубліковано: 18 серпня 2023 Share Опубліковано: 18 серпня 2023 Теж шукаю рішення. Який буде найкращий варіант модуля для перекладу всього контенту інтернет-магазина автоматично? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 3 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
buslikdrev Опубліковано: 15 червня 2023 Share Опубліковано: 15 червня 2023 (змінено) Скрытый текст <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <style> #language select,#language_vertical select,#language_content select,#version select{width:100%;height:29px;position:relative;border:1px solid #ccc;border-radius:2px;overflow:hidden;box-sizing:border-box;-moz-box-sizing:border-box;margin-bottom:20px} #goog-gt-tt,#goog-gt-{display:none!important} #language .skiptranslate.goog-te-gadget,#language_vertical .skiptranslate.goog-te-gadget,#language_content .skiptranslate.goog-te-gadget{display:block!important;margin-bottom:20px} #language .skiptranslate.goog-te-gadget select,#language_vertical .skiptranslate.goog-te-gadget select,#language_content .skiptranslate.goog-te-gadget select{margin:0;cursor:pointer} .offline #language_vertical button{display:none} </style> <script> var BusEngine = {}; BusEngine.cookie = { 'set': function(name, value, domain, path, day) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } if (typeof value == 'undefined' || typeof value != 'string') { value = ''; } if (typeof domain == 'object' && domain != null) { console.log(domain); if ('path' in domain) { path = domain.path; } if ('day' in domain) { day = domain.day; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } if (typeof day != 'undefined' && 'Date' in window) { var x = new window.Date(); x.setUTCSeconds(3600 * 24 * Number(day)); day = ' expires=' + x + ';'; } else { day = ''; } document.cookie = name + '=' + value + '; path=' + path + ';' + day + ' domain=' + domain; return true; }, 'get': function(name) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return c; } //console.log(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); //console.log(/(name)\=(\S[^\;]+)/); c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (c && c[2]) { return c[2]; } else { return ''; } }, 'remove': function(name, value, domain, path) { if (typeof name == 'undefined' || typeof name != 'string') { return false; } var v; if (typeof value == 'undefined' || typeof value != 'string') { v = ''; } else { v = value; } if (typeof domain == 'object' && domain != null) { if ('path' in domain) { path = domain.path; } if ('domain' in domain) { domain = domain.domain; } } if (typeof domain == 'undefined' || typeof domain != 'string') { domain = '.' + document.domain; } if (typeof path == 'undefined' || typeof path != 'string') { path = '/'; } document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT'; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain='; document.cookie = name + '=' + v + '; expires=01 Jan 0000 00:00:00 GMT; path=' + path + '; domain=' + domain; return true; }, 'has': function(name, value) { var c = document.cookie; if (!c || typeof name == 'undefined' || typeof name != 'string') { return false; } c = c.match(new RegExp('(' + name + ')\\=(\\S[^\\;]+)')); if (typeof value == 'undefined' || typeof value != 'string') { if (c && c[1] && c[1] == name) { return true; } } else { if (c && c[2] && c[2] == value) { return true; } } return false; }, 'clear': function() { var cookies = document.cookie.split(';'); var i, ii = cookies.length, pos; for (i = 0; i < ii; ++i) { pos = cookies[i].indexOf('='); if (pos > -1) { BusEngine.cookie.remove(cookies[i].substr(0, pos)); } } if (!document.cookie) { return true; } else { return false; } }, 'test': function() { // добавить BusEngine.cookie.set('BusEngine', 'Like'); console.log(document.cookie); // получить console.log(BusEngine.cookie.get('BusEngine')); // проверить console.log(BusEngine.cookie.has('BusEngine')); // удалить BusEngine.cookie.remove('BusEngine'); console.log(document.cookie); // проверить console.log(BusEngine.cookie.has('BusEngine')); } }; BusEngine.loadScript = function(url, callback) { var s, ss; s = document.createElement('script'); s.type = 'text/javascript'; s.src = url; if (typeof callback !== 'undefined') { s.onreadystatechange = callback; s.onload = callback; } ss = document.head; if (ss) { ss.appendChild(s); } }; // language BusEngine.language = { 'setting': { langDefault: (document.documentElement.lang || window.navigator.language || window.navigator.userLanguage), //lang: (window.navigator.language || window.navigator.userLanguage), lang: 'uk', domain: document.domain }, 'status': false, 'initialize': function(setting) { if (setting == null && BusEngine.language.status) { return false; } BusEngine.language.status = true; BusEngine.loadScript('https://translate.google.com/translate_a/element.js?cb=BusEngine.language.start'); }, 'start': function(setting) { // устанавливаем настройки если есть if (typeof setting === 'object' && !('composedPath' in setting) && !('bubbles' in setting)) { for (var i in setting) { BusEngine.language.setting[i] = setting[i]; } } // объявляем рабочие переменные var element, select, x, timertick = 0, timerId, id = "language_vertical"; // устанавливаем выбор тега в зависимости от ширины экрана if ('matchMedia' in window) { if (window.matchMedia('(max-width: 991px)').matches) { id = "language_content"; } } else { if (window.innerWidth <= 991) { id = "language_content"; } } // удаляем кнопку запуска переводчика element = document.querySelector('#' + id + ' button'); if (element) { element.parentNode.removeChild(element); } // устанавливаем язык из нашей долгой куки if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.setting.lang = BusEngine.cookie.get('BusEngineLang'); } BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, BusEngine.language.setting.domain); BusEngine.cookie.set('googtrans', '/' + BusEngine.language.setting.langDefault + '/' + BusEngine.language.setting.lang, ''); // запускаем переводчик x = new google.translate.TranslateElement({ pageLanguage: BusEngine.language.setting.langDefault, includedLanguages: 'be,en,it,kk,lv,lt,de,ru,uk,fr,cs,et', //layout: google.translate.TranslateElement.InlineLayout.SIMPLE, //autoDisplay: true }, id); // отслеживаем появление тегов переводчика /* window.addEventListener('DOMNodeInserted', function(e) { console.log(e); }, false); */ // отслеживаем появление тегов переводчика универсально timerId = setTimeout(function tick() { timertick++; select = document.querySelector('#' + id + ' select'); if (select) { // устанавливаем язык перевода в долгую куку select.addEventListener('change', function(e) { if (typeof e == 'object' && 'target' in e && 'value' in e.target && e.target.value != BusEngine.language.setting.lang) { BusEngine.cookie.set('BusEngineLang', e.target.value, BusEngine.language.setting.domain, null, 365); } }, false); // скрываем верхнее меню в зависимости от куки element = document.querySelector('iframe[id*=".container"]'); if (element && !BusEngine.cookie.has('BusEngineLangHorizontal')) { document.body.classList.remove('languagefix'); element.style['display'] = 'block'; element.parentNode.style['display'] = 'block'; var e = element.contentWindow.document.querySelector('a[id*=".close"], a[id*=".close"] img, .goog-close-link'); if (e) { var s = document.createElement('a'); s.style = e.style; s.style['margin'] = '0 10px'; s.style['cursor'] = 'pointer'; s.innerHTML = e.innerHTML; s.id = 'fuckgoogle'; e.style['display'] = 'none'; e.parentNode.appendChild(s); s.addEventListener('click', function(e) { document.body.classList.add('languagefix'); BusEngine.cookie.set('BusEngineLangHorizontal', 'none', BusEngine.language.setting.domain, null, 365); }); } } } else { if (timertick < 10) { timerId = setTimeout(tick, 200); } } }, 200); }, 'set': function (setting) { if (typeof setting == 'object' && setting != null) { if ('lang' in setting && typeof setting.lang == 'string') { BusEngine.language.setting.lang = setting.lang; } BusEngine.cookie.set('BusEngineLang', BusEngine.language.setting.lang, BusEngine.language.setting.domain, null, 365); window.location.reload(); } } }; // запускаем модули когда есть интернет if (window.navigator.onLine) { // запускаем модуль переводчика когда его активировали if (BusEngine.cookie.has('BusEngineLang')) { BusEngine.language.initialize(); } } else { window.addEventListener('DOMContentLoaded', function() { document.body.classList.add('offline'); }); } </script> </head> <body class="notranslate"> <div id="language_vertical"><button type="button" onclick="BusEngine.language.initialize();" title="Активирировать переводчик" aria-label="Активирировать переводчик" style="padding:5px;margin-bottom:20px;width:100%;background-color:#000000;color:#ffffff;cursor:pointer">Activate translator</button></div> <div class="translate">Я программист!</div> </body></html> Змінено 15 червня 2023 користувачем buslikdrev Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Clan Опубліковано: 18 серпня 2023 Share Опубліковано: 18 серпня 2023 Теж шукаю рішення. Який буде найкращий варіант модуля для перекладу всього контенту інтернет-магазина автоматично? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 3
Clan Опубліковано: 18 серпня 2023 Share Опубліковано: 18 серпня 2023 Теж шукаю рішення. Який буде найкращий варіант модуля для перекладу всього контенту інтернет-магазина автоматично? Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts