Cum să construiești o migrare multilingvă de la Shopify la WordPress

Ai petrecut luni de zile construind un magazin Shopify multilingv. Descrierile produselor tale sunt traduse în franceză, germană și spaniolă. Fluxul tău de checkout funcționează în trei limbi. Apoi, te decizi să migrezi la WordPress și WooCommerce pentru mai mult control, marje mai bune sau flexibilitatea oferită de plugin-uri.
Datele despre produse se transferă bine. Imaginile sunt transferate. Dar traducerile tale? Dispar.
Acesta este costul ascuns al unei migrări multilingve WordPress despre care nimeni nu te avertizează. Shopify blochează traducerile tale în propriul său sistem proprietar, iar WordPress utilizează o arhitectură complet diferită. Fără un plan clar, vei petrece săptămâni reconstruind ceea ce aveai deja. Acest ghid îți oferă acel plan.
De ce se strică migrările multilingve (și Shopify agravează situația)
Migrările de platforme sunt suficient de dureroase și cu magazine monolingve. Adaugă mai multe limbi, iar complexitatea se multiplică. Cauza principală este arhitecturală: Shopify și WordPress gestionează traducerile în moduri fundamental diferite.
Modelul de traducere Shopify este o grădină închisă
Shopify stochează traducerile ca metadate atașate resurselor prin intermediul API-ului Translate and Adapt. Fiecare produs, colecție și pagină are intrări de traducere legate de ID-urile interne ale resurselor Shopify.
Când exporți magazinul folosind un instrument de migrare precum Cart2Cart, LitExtension sau o exportare CSV, obții conținutul în limba implicită. Traducerile? Ele trăiesc într-un strat separat pe care majoritatea instrumentelor de migrare îl ignoră complet.
Ce se exportă de fapt (și ce se pierde)
Iată ce transferă un instrument tipic de migrare Shopify-la-WordPress:
| Tip de conținut | Se transferă? | Traducerile se transferă? |
|---|---|---|
| Titluri și descrieri de produse | Da | Nu |
| Numele colecțiilor/categoriilor | Da | Nu |
| Articole de blog | Da | Nu |
| Pagini (Despre, Contact) | Da | Nu |
| Șiruri de caractere ale temei (butoane, etichete) | Nu | Nu |
| Șiruri de caractere pentru checkout/e-mail | Nu | Nu |
| Meniuri de navigare | Parțial | Nu |
Modelul este clar. Conținutul în limba ta implicită migrează. Traducerile tale nu. Și chiar dacă le extragi manual, nu poți doar să lipești traducerile Shopify în WordPress. Sistemele vorbesc limbi diferite, la propriu.
Maparea limbilor Shopify cu fișierele de traducere WordPress
Înainte de a începe reconstrucția, trebuie să înțelegi cum gestionează WordPress conținutul multilingv. Aici eșuează majoritatea ghidurilor de migrare.
Înțelegerea sistemului Gettext
WordPress utilizează sistemul de localizare Gettext. În loc să stocheze traducerile într-un strat de bază de date, acesta citește din fișiere binare statice (fișiere .mo) compilate din fișiere .po lizibile de oameni.
Un fișier .po arată astfel:
msgid "Add to Cart"
msgstr "Ajouter au panier"
msgid "Search results for %s"
msgstr "Résultats de recherche pour %s"
Fiecare temă și plugin WordPress vine cu un fișier șablon .pot care conține toate șirurile de caractere traductibile. Creezi un fișier .po pentru fiecare limbă, completezi traducerile, îl compilezi în .mo și îl pui în directorul corect.
Acesta este sistemul în care trebuie să se mapeze traducerile tale Shopify.
Problema nepotrivirii codurilor de limbă
Shopify utilizează etichete de limbă IETF (en, fr, de). WordPress utilizează coduri locale cu variante regionale (fr_FR, de_DE, es_ES). În timpul migrării, trebuie să mapezi fiecare limbă Shopify cu codul local WordPress corect. Dacă greșești, WordPress nu poate găsi fișierele tale de traducere.
Mapeări comune care îi încurcă pe oameni:
- Shopify
ptse mapează cu WordPresspt_PT(Portugalia) saupt_BR(Brazilia) -- nu sunt interschimbabile - Shopify
zh-CNse mapează cu WordPresszh_CN, dar Shopifyzh-TWse mapează cuzh_TW - Shopify
nb(norvegiană bokmal) se mapează cu WordPressnb_NO
Denumește fișierele .po și .mo cu codul local WordPress: numeletemei-fr_FR.po, woocommerce-de_DE.mo. Un cod greșit înseamnă că WordPress ignoră fișierul în tăcere.
Un flux de lucru pas cu pas pentru migrarea multilingvă WordPress
Iată fluxul de lucru concret pentru a-ți păstra traducerile în timpul unei migrații Shopify-la-WordPress.
Pasul 1: Exportă și auditează traducerile tale Shopify
Înainte de a atinge WordPress, extrage totul din Shopify. Utilizează API-ul Shopify Admin sau un instrument precum Shopify Translate CSV Export pentru a-ți trage traducerile în fișiere structurate.
# Using Shopify CLI to export translations
shopify app translate export --locale fr
shopify app translate export --locale de
shopify app translate export --locale es
Auditează exporturile. Numără câte șiruri de caractere ai per limbă. Identifică care sunt traducerile conținutului produsului (gestionate de CMS-ul sau plugin-ul tău multilingv de pe WordPress) față de traducerile șirurilor de caractere ale temei/UI (gestionate de fișiere .po).
Pasul 2: Configurează structura de limbă WordPress și WooCommerce
Pe instalarea ta proaspătă WordPress, configurează-ți infrastructura de limbă înainte de a importa orice conținut.
- Accesează Setări > General și setează limba site-ului tău
- Instalează pachete lingvistice pentru fiecare limbă țintă prin Setări > General > Limba site-ului
- Creează structura directorului de traducere:
/wp-content/languages/
/wp-content/languages/plugins/
/wp-content/languages/themes/
Pentru traducerile conținutului produsului (titluri, descrieri), vei avea nevoie de un plugin de conținut multilingv, cum ar fi WPML sau Polylang. Dar pentru șirurile de caractere UI ale temei și plugin-ului -- butoanele, etichetele, mesajele de eroare și fluxul de checkout -- vrei fișiere statice .po/.mo. Aceasta este abordarea bazată pe cloud care evită umflarea plugin-urilor.
Pasul 3: Convertește-ți traducerile în format PO
Traducerile șirurilor de caractere ale temei Shopify trebuie convertite în format Gettext .po. Aici devine tehnică migrarea.
Dacă traducerile tale Shopify sunt în format JSON sau CSV, le poți converti în .po utilizând un script sau un instrument. Cheia este maparea fiecărui șir sursă la o pereche msgid/msgstr:
import csv
with open('shopify_translations_fr.csv', 'r') as infile, \
open('theme-fr_FR.po', 'w') as outfile:
outfile.write('msgid ""\nmsgstr ""\n')
outfile.write('"Language: fr_FR\\n"\n\n')
reader = csv.DictReader(infile)
for row in reader:
outfile.write(f'msgid "{row["key"]}"\n')
outfile.write(f'msgstr "{row["translation"]}"\n\n')
Acest lucru îți oferă un punct de plecare, dar noua ta temă WordPress și instalarea WooCommerce vor avea sute de șiruri de caractere care nu existau în Shopify. Nu poți reutiliza o traducere Shopify "Adaugă în coș" pentru WooCommerce deoarece contextul de cod din jur este diferit. Șirul de caractere WooCommerce ar putea fi Add to cart (cu "c" minusculă) sau ar putea include o variabilă %s pentru numele produsului.
Aici se blochează majoritatea oamenilor. Ai traduceri parțiale de la Shopify și un gol masiv de șiruri de caractere specifice WordPress netraduse.
Cum să traduci golurile fără a o lua de la capăt
Vestea bună: nu trebuie să traduci manual 5.000 de șiruri de caractere WooCommerce. Vestea proastă: nici nu le poți omite, altfel magazinul tău va afișa un amestec discordant de titluri în franceză și mesaje de eroare în engleză.
Șirurile de caractere ale temei și plugin-ului tot trebuie traduse
Tema ta WordPress are propriul fișier .pot. WooCommerce are propriul său. Fiecare plugin pe care îl instalezi -- gateway-uri de plată, calculatoare de transport, creatori de formulare -- fiecare are șiruri de caractere traductibile. Acestea nu existau în magazinul tău Shopify.
Cea mai rapidă abordare este să traduceți aceste fișiere .po mari în loturi, mai degrabă decât șir cu șir. Încarcă fișierul .pot al temei tale, selectează limba țintă și lasă AI-ul să se ocupe de munca grea.
Traducerea în lot a fișierelor WooCommerce mari
Fișierul de limbă WooCommerce este masiv. Cu mii de șiruri de caractere care acoperă totul, de la mesajele coșului până la codurile de eroare fiscală, este cea mai mare sarcină de traducere unică din orice migrare. SimplePoTranslate gestionează acest lucru prin Smart Batching -- împărțirea fișierelor supradimensionate în bucăți sigure, procesarea lor în paralel și îmbinarea rezultatelor înapoi într-un singur fișier curat.
Detaliul critic: fișierele tale traduse trebuie să păstreze fiecare variabilă de cod exact așa cum apare în sursă. Un placeholder %s într-un șablon de e-mail WooCommerce nu poate avea un spațiu adăugat sau o poziție schimbată în timpul traducerii. Aici, blocarea sintaxei previne ca variabilele defecte să ajungă în magazinul tău de producție.
Cu Multi-Format Output de la SimplePoTranslate, obții fișiere .po, .mo, .json, .php și .xliff într-o singură descărcare ZIP. Acest lucru este util în special în timpul migrării, deoarece diferite părți ale stivei tale WordPress pot consuma traducerile în diferite formate. Tema ta citește fișiere .mo. Un front-end headless ar putea avea nevoie de .json. O integrare personalizată ar putea aștepta .xliff. O singură rulare de traducere le acoperă pe toate.
Evitarea celor trei cele mai frecvente eșecuri de traducere în timpul migrării
Chiar și cu fluxul de lucru corect, există capcane specifice migrărilor de platformă care iau dezvoltatorii experimentați prin surprindere.
Variabile defecte în e-mailurile tranzacționale
E-mailurile tranzacționale WooCommerce sunt dense cu placeholder-e: {order_number}, {customer_name}, %1$s, %2$s. Dacă procesul tău de traducere corupe chiar și unul dintre acestea, clienții primesc e-mailuri de genul "Bună ziua {customer_name}" la propriu sau, mai rău, e-mailuri cu date schimbate.
Validează întotdeauna fișierele tale traduse în raport cu sursa .pot înainte de implementare. Instrumente precum Poedit vor semnala nepotrivirile placeholder-elor, iar traducătorii bazați pe cloud cu blocare a sintaxei elimină complet această clasă de erori.
Reguli de pluralizare lipsă
Shopify gestionează pluralurile simplu. WordPress Gettext acceptă forme plurale complexe care variază în funcție de limbă. Rusa are trei forme plurale. Araba are șase. Dacă fișierul tău .po tradus nu include antetul corect Plural-Forms și intrările msgstr[0], msgstr[1], msgstr[2] corespunzătoare, WordPress revine la șirul de caractere netradus.
# Correct Russian plural forms header
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : "
"n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
msgid "%s item"
msgid_plural "%s items"
msgstr[0] "%s товар"
msgstr[1] "%s товара"
msgstr[2] "%s товаров"
Acesta este un lucru la care Shopify nu te-a obligat niciodată să te gândești. Pe WordPress, contează.
Șiruri de caractere orfane după schimbarea plugin-urilor
Când migrezi de la Shopify, nu doar schimbi platforme. Înlocuiești un întreg ecosistem de plugin-uri. Gateway-ul tău de plată Shopify devine WooCommerce Payments sau Stripe pentru WooCommerce. Sistemul tău de recenzii devine un plugin WordPress. Fiecare schimbare introduce noi șiruri de caractere traductibile și face ca traducerile vechi să devină obsolete.
Construiește o listă de verificare a fiecărui plugin pe care îl instalezi după migrare și verifică dacă fiecare are un fișier .mo tradus corespunzător în /wp-content/languages/plugins/. Lipsa chiar și a unui plugin înseamnă că clienții tăi văd șiruri de caractere în engleză în mijlocul unei interfețe traduse altfel.
Lansează-ți magazinul multilingv pe WordPress
O migrare multilingvă WordPress nu este doar un transfer de date. Este o re-arhitectură a modului în care magazinul tău comunică cu clienții internaționali. Magazinele care fac acest lucru corect văd rate de conversie mai mari pe piețele non-engleze, deoarece experiența se simte nativă, mai degrabă decât peticită.
Fluxul de lucru este simplu: exportă traducerile tale Shopify, mapează-le cu codurile locale WordPress, convertește-le în format .po, completează golurile cu traducere AI în loturi, validează-ți variabilele și implementează fișiere statice .mo. Fără umflare a bazei de date. Fără costuri suplimentare de traducere în timpul rulării. Doar comerț multilingv rapid și fiabil.
Dacă te confrunți cu o migrare cu mii de șiruri de caractere WooCommerce netraduse, abordarea SimplePoTranslate privind localizarea fișierelor mari te poate scuti de săptămâni de muncă manuală.
Ești gata să-ți traduci magazinul WooCommerce după migrare? Încearcă SimplePoTranslate gratuit -- nu este necesar card de credit. Încarcă fișierul tău .pot și obține traduceri gata de producție în câteva minute.