Svetainės DI vertimo papildinys su WooCommerce palaikymu
projektą
DI įskiepis išverčia visą svetainę: puslapius, meniu, nuorodas, SEO žymas, temų ir įskiepių eilutes, internetinę parduotuvę. Nieko nereikia dubliuoti rankiniu būdu.
Pažiūrėti, kaip veikia vertimo įskiepis SDWSKi Translate galima šioje svetainėje ir mano tinklaraštyje. Vertimui įdiegtas ir prijungtas modelis GPT 5.6 sol, taip pat Deepl API (nemokamai).
SDWSKi Translate — nuosavas kūrinys: WordPress įskiepis, paverčiantis vienakalbę svetainę daugiakalbe. Jis apdoroja galutinę HTML išvestį, todėl nepriklauso nuo temos, puslapių daryklės ar turinio struktūros. Vertimui naudojami Azure Translator, Azure OpenAI (GPT) arba DeepL. Bet kurį vertimą galima pataisyti rankiniu būdu, o pataisyta versija daugiau niekada nebus perrašyta.
Trumpai skaičiais
- 55 kalbos ir regioniniai jų variantai (įskaitant en-GB, pt-BR, es-MX, es-AR, supaprastintą ir tradicinę kinų kalbą);
- 3 vertimo varikliai su automatiniu perjungimu iš vieno į kitą;
- 8 skirtukai administravimo skydelyje, vaizdinė rengyklė „spustelėkite tekstą ir išverskite“;
- vertimai saugomi jūsų svetainės duomenų bazėje, nenaudojant išorinių tarpinių paslaugų.
Kaip tai veikia
Dauguma daugiakalbių įskiepių kopijuoja įrašus ir saugo atskiras kiekvieno puslapio versijas. SDWSKi Translate veikia kitaip.
- Išvesties perėmimas. Atvėrus puslapį pasirinkta kalba, įskiepis perima galutinį HTML kodą prieš išsiunčiant jį į naršyklę ir išanalizuoja kaip DOM medį.
- Verstino turinio paieška. Iš medžio išgaunami teksto mazgai ir atributai:
alt,title,placeholder, mygtukų reikšmės, taip pat<title>, metaaprašymas,og:title,og:description,og:site_name,twitter:title,twitter:description. - Žodynas. Kiekvienai kalbai duomenų bazėje yra atskira žodyno lentelė „originalas → vertimas“. Žinomos eilutės pakeičiamos akimirksniu, nesiunčiant užklausų išorinėms API.
- Foninis vertimas. Naujos eilutės įtraukiamos į eilę, o foninė užduotis verčia jas paketais iš karto į visas tikslines kalbas.
- Apsauga nuo neapdoroto turinio rodymo. Kol puslapio vertimas neparengtas, nei lankytojas, nei paieškos sistema nematys originalaus teksto svetima kalba (daugiau informacijos rasite SEO skyriuje).
Kadangi įskiepis dirba su galutiniu žymėjimu, jis išverčia ir tai, ko įprastais būdais pasiekti nepavyksta: tekstus iš temos šablonų, valdiklius, mygtukus, formų etiketes, WooCommerce pranešimus, pranešimus ir per AJAX gautą tekstą.
Automatinis vertimo režimas
Prijungiate savo Azure arba DeepL raktą, pasirenkate kalbas, o visa kita įskiepis atlieka pats. Mokate tiesiogiai paslaugų teikėjui pagal jo įkainius, įskiepis netaiko jokio papildomo mokesčio.
- Azure Translator — greitas ir nebrangus mašininis vertimas.
- Azure OpenAI (GPT) — kalbos modelio lygio kontekstinis vertimas: skamba natūraliau, geriau išlaiko toną, tačiau kainuoja daugiau ir veikia lėčiau. Veikia per diegimą, pavyzdžiui
gpt-4oarbagpt-4o-mini, su konfigūruojamu endpoint, raktu ir API versija. - DeepL — atsarginis variklis. Nemokamo plano raktai (
:fx) nustatomi automatiškai, prisijungiama prie reikiamo API pagrindinio kompiuterio.
Automatinis atsarginis perjungimas. Jei pasirinkta vertimo sistema pateikia klaidą (išnaudota kvota, baigė galioti raktas, sutriko paslaugos veikimas), įskiepis automatiškai išbando kitą pagal šią seką: pagrindinė vertimo sistema → Azure Translator → Azure OpenAI → DeepL. Vertimas tęsiamas be administratoriaus įsikišimo. Kiekvienai vertimo sistemai skirta ryšio tikrinimo mygtukas.
Rankinis vertimo režimas
Visą tekstą galima versti rankiniu būdu, be išorinių paslaugų ir raktų. Tam skirta vaizdinė rengyklė ir visų eilučių lentelė.
Vaizdinė vertimo rengyklė
Atverkite bet kurį svetainės puslapį rengyklės režimu: kairėje bus skydelis, o dešinėje – tiesioginė peržiūra. Spustelėkite bet kurį puslapio tekstą (antraštę, pastraipą, meniu punktą, mygtuką ar paveikslėlio antraštę), ir jis bus atvertas skydelyje.
- originalas ir vertimas greta, vertimo kalbos ir eilutės iš sąrašo pasirinkimas;
- mygtukas Automatiškai — automatinis vienos eilutės vertimas vertimo varikliu pagal užklausą;
- Išsaugoti / Atmesti, spartieji klavišai (
Ctrl+S— išsaugoti,Ctrl+Alt+стрелки— pereiti tarp eilučių); - nuoroda į redaktorių svetainės administravimo skydelyje (admin bar);
- tinkamai aptinka spustelėjimus temų išskleidžiamuosiuose meniu, įskaitant ir
stopPropagation; - atskiria vienodus tekstus puslapyje (pavyzdžiui, antraštę ir meniu nuorodą su tuo pačiu žodžiu);
- palaiko meniu hebrajų, graikų, hindi, tajų, gruzinų ir armėnų kalbomis.
Visų eilučių lentelė („Vertimai“)
Bendras visų svetainės vertimų sąrašas.
- paieška ir filtrai: visi / išversti / neišversti / mašininiai / žmogaus patikrinti;
- redagavimas tiesiogiai lentelėje, išsaugant kiekvieną eilutę;
- masinis veiksmas Automatiškai išversti pasirinktus;
- eksportavimas į CSV;
- bet koks rankinis pakeitimas gauna būseną „Patikrinta žmogaus“.
Rankinių pakeitimų apsauga
Kiekvienas vertimas turi būseną: neišversta, mašininis, patikrinta žmogaus, klaida, premium. Eilutės, kurių būsena yra „patikrinta žmogaus“, automatinis vertimas niekada neperrašo, net ir pakartotinai vykdant. Automatiniai vertimai jokiomis aplinkybėmis automatiškai neištrinami: visi vertimai priklauso jums ir saugomi jūsų duomenų bazėje.
Verčiamas turinys
- įrašai, puslapiai, pasirinktiniai įrašų tipai;
- antraštės, tekstas, ištraukos, paaiškinimai,
altpaveikslėlių; - naršymo meniu;
- kategorijų ir žymų pavadinimai bei nuorodų dalys;
- temų ir įskiepių eilutės (viskas, kas perduodama per
__(),_e(),_n()); - valdikliai ir dinaminė išvestis;
- SEO metaduomenys: Yoast SEO, Rank Math, SEOPress, All in One SEO;
- REST API atsakymai (įrašai, puslapiai, medija, taksonomijos);
- AJAX sąsajos atsakymai;
- Gutenberg Custom HTML blokai verčiami atskiru saugiu etapu, kuris nepažeidžia žymėjimo.
Kalba, URL ir nuorodų dalys
- kalbų prefiksai adresuose:
site.com/es/…,site.com/de/…; - pasirenkamas prefiksas ir numatytajai kalbai;
- veikia tiek domeno šakniniame kataloge, tiek įdiegus WordPress poaplankyje;
- nuorodų dalių vertimas:
/contact/→/es/contacto/, automatiškai konvertuojant išverstą adresą atgal į pradinį prieš WordPress maršruto parinkimą; - suplanuotų (future) įrašų slugų vertimai sukuriami planavimo metu;
- priverstinis kalbos įterpimas į vidines nuorodas;
- kiekvienai kalbai galima nustatyti atskirą slugą. Pavyzdžiui, baltarusių kalbai: adresas
/by/, ženklelis „BY“, tačiau vidinis ISO kodasbeAPI irbehreflang išlieka standartiniai; - automatinis kalbos nustatymas pagal naršyklę (antraštė
Accept-Language) su peradresavimu pirmojo apsilankymo metu ir 24 valandų slapuku, apsaugančiu nuo ciklinių peradresavimų.
Kalbų perjungiklis
- slankusis mygtukas bet kuriame puslapio kampe (4 padėtys), su tinkinamu stiliumi;
- trumpasis kodas
įterpti bet kurioje vietoje, su pasirinktu stiliumi; - meniu elementas „Kalbos perjungiklis“: pridedamas skiltyje Išvaizda → Meniu ir išskleidžiamas į tiek elementų, kiek yra kalbų;
- rodymo stiliai: vėliavėlės + pilni pavadinimai, vėliavėlės + trumpieji kodai, tik vėliavėlės, tik pavadinimai, tik kodai;
- kalbų pavadinimai-gimtąja kalba ("Español", "Deutsch", "rusų");
- kalbų eiliškumas keičiamas velkant jas skirtuke „Kalbos“;
- integruotas vėliavėlių šriftas, kad vėliavėlės būtų tinkamai rodomos Windows ir Linux sistemose, kuriose sistemos šriftai vėliavėlių neatvaizduoja.
Kalbos ir rašto sistemos
- 55 kalbos ir regioniniai variantai, įskaitant: anglų (JAV, Jungtinė Karalystė, Australija), ispanų (Ispanija, Argentina, Meksika), portugalų (Portugalija, Brazilija), kinų (supaprastintoji, tradicinė), arabų, hebrajų, hindi, japonų, korėjiečių, tajų, vietnamiečių, turkų, ukrainiečių, rusų, baltarusių, lietuvių, latvių, estų, lenkų, čekų, slovakų, graikų, persų, urdu, esperanto ir kitas;
- RTL palaikymas arabų, hebrajų, persų ir urdu kalboms;
- automatinis „Noto“ žiniatinklio šriftų įkėlimas kalboms, kurių nėra temos šrifte (devanagarių raštas, kinų, japonų, korėjiečių, arabų, tajų, hebrajų, gruzinų ir kt.). Vietoje tuščių kvadratėlių tekstas rodomas tinkamai. Piktogramų šriftams tai netaikoma, o šią funkciją galima išjungti;
- regioniniai žodynai: įskiepis papildomai pakoreguoja tokių variantų kaip pt-PT/pt-BR, en-GB/en-AU, es-AR/es-MX leksiką, kad regioniniai puslapiai iš tiesų skirtųsi ir paieškos sistemos jų nesujungtų. Žodynus galima papildyti naudojant filtrą.
Vertimo kokybė ir turinio apsauga
Mašininis vertimas sugadina maketą, trumpuosius kodus ir prekių ženklus. SDWSKi Translate nuo to apsaugo keliais lygmenimis:
- HTML esybių ir trumpųjų kodų apsauga —
©,[shortcode], vietaženkliai%s,%1$s,{name}lieka nepakeisti; - sąrašas „Neversti“: prekių ženklai, prekių kodai, santrumpos; svetainės pavadinimas apsaugomas automatiškai;
- rezultato patikros: vietaženkliai išsaugoti, vertimas parašytas reikiama rašto sistema, nėra pašalinių simbolių, apsaugoti žodžiai nepažeisti. Netinkamas atsakymas atmetamas ir verčiama iš naujo, o ne išsaugomas;
- pakartotinis bandymas izoliuojant prekių ženklus, jei modelis sugadino apsaugotą žodį (pavyzdžiui, tajų kalba nukerpa paskutinę „WordPress“ raidę);
- privalomasis žodynėlis atvejams, kai modelis sistemingai klysta (išplečiama filtru);
- kitos kalbos aptikimas: jei tema jau pateikė tekstą lankytojo kalba, įskiepis nelaikys jo originalu ir nei vers, nei daugins kitomis kalbomis;
- API raktai, prieigos raktai ir maišos reikšmės vertimui nesiunčiami.
Vaizdai pagal kalbas
Skirtuke „Images“ bet kurį vaizdą galima pakeisti lokalizuota jo versija: logotipą, infografiką, ekrano kopiją ar reklaminį skydelį su tekstu. Įskiepis pats aptinka išverstose svetainėse rodomus vaizdus ir įtraukia juos į sąrašą, o jūs iš medijos bibliotekos parenkate reikiamai kalbai skirtą versiją. Pakeitimas taip pat veikia src, taip pat srcset.
Vaidmenys ir prieiga
- atskiras vaidmuo Vertėjas (vertėjas): prieiga prie vaizdinės rengyklės be prieigos prie svetainės nustatymų;
- leidimai
sdwski_translateirsdwski_manage; - visi veiksmai apsaugoti naudojant nonce ir tikrinant leidimus.
Matomumas pagal kalbas
Kiekvienam įrašui galima nurodyti, kuriomis kalbomis jis rodomas, įskaitant pradinę kalbą. Pavyzdžiui, naujiena rusų kalba, kurios nereikia angliškoje versijoje. Į apribojimus atsižvelgiama sąrašuose, meniu ir svetainės schemoje, o tiesioginė nuoroda į jau esamą įrašą ir toliau atidaroma be 404 klaidos. Įrašams be apribojimų niekas nesikeičia, nustatymas yra visiškai suderinamas su ankstesnėmis versijomis.
Metaduomenų laukelis įrašų rengyklėje
Įrašų rengyklėje yra skydelis „Re-translate“: konkretaus įrašo vertimą galima paleisti iš naujo. Matomumo pagal kalbas parinktis pasiekiama pačioje rengyklėje (klasikinėje ir blokų).
SEO
Daugiakalbystė be SEO neveikia, todėl tai yra viena iš pagrindinių įskiepio dalių.
- hreflang į
<head>kiekvieno puslapio ir sitemap, tarpusavio nuorodos tarp visų kalbinių versijų irx-default; - atskiras
<url>kiekvienai kalbai sitemap, kaip rekomenduoja Google, su tinkamai deklaruota vardų sritimixhtml; - integracija su sitemap: WordPress branduolys, Yoast SEO, Rank Math, SEOPress, All in One SEO;
- į
<loc>visada kanoninis pradinės kalbos adresas, o/sitemap.xmlir/robots.txtniekada negauna kalbos priešdėlio; - SEO metaduomenų vertimas: title, description, Open Graph ir Twitter žymos;
- sudėtinis
<title>„Įrašas — Svetainė — Šūkis“ tipo reikšmė paimama iš iš anksto sugeneruoto puslapio ir išverčiama iš anksto, dar prieš pirmąjį apsilankymą; - taisymas
<html lang>į dabartinę kalbą ir tuščios reikšmės atkūrimas<title>, jei SEO įskiepis sugeneravo antraštę anksčiau, nei tapo žinoma kalba; - SEO Gate: kol puslapis nėra išverstas į pasirinktą kalbą, jis grąžina HTTP 503 su
Retry-After,noindexir tvarkingu laikinuoju puslapiu „vertimas ruošiamas“ vietoj angliško teksto į/es/. Archyvuose, pagrindiniame puslapyje ir paieškoje dar neišversti įrašai paslepiami. Vietos rezervavimo tekstas lokalizuotas į dešimtis kalbų. Jei antraštės vis tiek nepavyksta išversti, suveikia fail-open mechanizmas, todėl puslapis nelieka visam laikui užblokuotas; - kategorijų ir žymų pavadinimų bei trumpinių vertimas, kad
/pt-br/tag/…iš tiesų būtų portugalų kalba.
Integracija su WooCommerce
Internetinėms parduotuvėms papildinys turi atskirą suderinamumo sluoksnį:
- produktų pavadinimų, aprašymų, atributų ir variantų vertimas;
- Krepšelio ir atsiskaitymo blokai: Store API atsakymų vertimas (
/wc/store/v1/*) ir blokų hidratacija, kai duomenys perduodami per JSON, o ne per HTML; - priverstinai nustatomi teisingi pagrindinių kalbų parduotuvės sisteminių puslapių trumpieji adresai (krepšelis, užsakymo pateikimas, mano paskyra, parduotuvė);
- adresų laukų etikečių, regioninių pavadinimų ir formų tekstų vertimas;
- Pirkėjo kalba išsaugoma užsakyme, o WooCommerce laiškai siunčiami ta kalba, kuria klientas pateikė užsakymą: patvirtinimai, būsenos, grąžinimai, užsakymo pastabos, slaptažodžio nustatymas iš naujo, prenumeratos;
- laiškų turinio (HTML ir paprastojo teksto) vertimas ir gavėjo kalbos nustatymas;
- kliento kalba įsimenama registruojantis ir prisijungiant, ją galima pakeisti profilyje („laiškų kalba“);
- kalbos ↔ valiutos sąsaja naudojant kelių valiutų įskiepį WCMC: pakeitus kalbą gali būti perjungiama valiuta;
- mokėjimo AJAX užklausų apsauga (Stripe ir kt.): prieigos raktai ir client secret nekeičiami;
- vidinių tarnybinių apvalkalų pašalinimas iš užsakymų pastabų ir metaduomenų.
Atskirai atsižvelgta į žinomas WooCommerce blokų problemas: aprašymų nukirpimą Cart/Checkout puslapiuose naudojant lokales, kuriose netinkamai išverstas tarnybinis paaiškinimas, ir Store API užklausų, kurių URL nėra kalbos priešdėlio, kalbos nustatymą.
Foninė eilė ir našumas
- Vertimas vienu metu vykdomas į visas kalbas (curl_multi). 10 kalbų svetainė išverčiama maždaug per tiek pat laiko, kiek ir į 1–2 kalbas.
- Įvykiais grindžiamas modelis: įskiepis nuolat „netiksi“ pagal tvarkaraštį. Vertimas paleidžiamas tik tada, kai iš tikrųjų atsiranda priežastis: autorius išsaugojo įrašą, įrašas buvo suplanuotas arba puslapyje aptikta nauja neišversta eilutė. Ištuštėjusi eilė pati sustoja. Jei nėra priežasties, nėra ir mokamų API užklausų.
- Apsauga nuo nereikalingų nurašymų. Pakartotinis vertimas paleidžiamas tik tada, kai įrašas iš tikrųjų rankiniu būdu redaguojamas redaktoriuje (klasikiniame redaktoriuje, sparčiojo redagavimo režimu arba Gutenberg). Programiniai išsaugojimai, atliekami cron užduočių, kitų įskiepių, importavimo procesų ir REST integracijų, nenaudoja žetonų. Pakeitimai nustatomi pagal turinio MD5 maišą.
- Eilės prioritetai: pirmiausia verčiami suplanuoti įrašai, o tada naujesni įrašai verčiami anksčiau už senesnius.
- Atsparumas gedimams: laikini variklio sutrikimai (skirtasis laikas, serverio klaida) nelaikomi bandymais ir kartojami neribotą laiką, o galutinės nesėkmės ribojamos skaitikliu, kad eilė neužstrigtų. Atminties kontrolė ir apsauga nuo lygiagrečių paleidimų.
- Automatinis atkūrimas: užstrigusios eilutės, likusios po ankstesnio variklio gedimo, atnaujinant automatiškai grąžinamos į eilę.
- Podėliavimas: transients ir objektų podėlio grupė; vienu mygtuku išvalomi papildinio, WordPress ir populiarių podėliavimo papildinių (LiteSpeed, WP Rocket, W3 Total Cache, WP Super Cache) podėliai.
- Proceso administravimo skydelis: kiekvienos kalbos eigos juostos (iš viso, išversta, mašininiai vertimai, žmogaus patikrinti vertimai), mygtukai „Pradėti“ / „Sustabdyti“ / „Nustatyti iš naujo“, įspėjimai apie „užstrigusius“ vertimus su galimybe bandyti dar kartą arba ignoruoti, diagnostika „kodėl niekas nepaleidžiama“ (raktas, atmintis, WP-Cron, kitas paleidimas).
- Priežiūros įrankiai: podėlių išvalymas, žodyno taisymas ir dublikatų sujungimas, kalbos išvalymas.
Architektūra ir patikimumas
- Švari PHP 8+ architektūra: vienetinis branduolio egzempliorius ir ~27 automatiškai įkeliamos klasės, kurių kiekviena turi savo atsakomybės sritį (atvaizdavimas, žodynai, SEO, URL, WooCommerce, redaktorius ir t. t.).
- Atskiros DB lentelės: kiekvienai kalbai skirta žodyno ir gettext lentelė, originalų ir vaizdų pakeitimų lentelės, indeksai ir viso teksto paieška.
- Apsauga nuo pakartotinio įskiepio failo įkėlimo, nustatymų ir duomenų migravimas naujinant (įskaitant senų parinkčių prefiksų migravimą).
- Saugumas: nonce visiems AJAX veiksmams, teisių tikrinimas,
wp_unslashir visų įvesties duomenų išvalymas, paruoštos SQL užklausos, saugūs peradresavimai (wp_safe_redirect). - Suderinama su WordPress 6.0+ ir PHP 8.0+, išbandyta su WordPress 7.0.
- GPL v2 arba naujesnė licencija, pirminis kodas atviras auditui.
- Išplečiama sąsaja: filtrai
sdwski_no_translate_xpath,sdwski_translation_glossary,sdwski_regional_dictionary,sdwski_load_webfonts,sdwski_load_flag_font,sdwski_allow_hash_invalidationir kt. - Nustatymų puslapis: skirtukai General, Languages, Machine Translation, Language Switcher, Translation Process, Translations, Images ir Support.
Kam skirta
- reprezentacinėms ir įmonių svetainėms, kurioms reikia kelių kalbų be turinio dubliavimo rankiniu būdu;
- žiniasklaidos svetainėms ir tinklaraščiams, kuriuose nuolat skelbiama nauja medžiaga: nauji įrašai verčiami automatiškai;
- WooCommerce internetinėms parduotuvėms, turinčioms pirkėjų iš įvairių šalių, įskaitant el. laiškus ir pirkinių krepšelį;
- agentūroms ir laisvai samdomiems specialistams, kuriantiems daugiakalbes svetaines klientams: „Vertėjo“ vaidmuo, rankinis redagavimas ir eksportavimas.
Kainos
Įskiepio naujinimai dvejus metus. Gausite įskiepį su instrukcija ir prijungsite jį patys. Reikalingas nuosavas „Microsoft Azure Translator“ arba „DeepL API“ raktas.
Azure paskyra ir vertimo sistema
2 metų licencija ir atnaujinimai licencijos galiojimo laikotarpiu. Pats įdiegsiu papildinį, prijungsiu vertimo įrankį, pritaikysiu jį jūsų projektui ir patikrinsiu, ar viskas veikia. Jums tereikės suteikti prieigą prie svetainės.
Azure paskyra ir vertimo sistema
Viskas, kas įtraukta į variantą „Papildinys + konfigūravimas“, tačiau papildinio atnaujinimai ir palaikymas teikiami neribotą laiką. Tinka, jei vertimas yra svarbi verslo dalis, o papildinys turi veikti daugelį metų.