Як Здійснити Багатомовну Міграцію з Shopify на WordPress

Ви витратили місяці на створення багатомовного магазину Shopify. Описи ваших продуктів перекладено французькою, німецькою та іспанською мовами. Ваш процес оформлення замовлення працює трьома мовами. Потім ви вирішуєте перейти на WordPress і WooCommerce для більшого контролю, кращої маржі або гнучкості плагінів.
Дані про продукти переносяться добре. Зображення також переносяться. Але ваші переклади? Вони зникають.
Це прихована вартість багатомовної міграції WordPress, про яку ніхто не попереджає. Shopify блокує ваші переклади у власній пропрієтарній системі, а WordPress використовує зовсім іншу архітектуру. Без чіткого плану ви витратите тижні на відновлення того, що у вас вже було. Цей посібник дає вам цей план.
Чому Багатомовні Міграції Ламаються (І Shopify Робить Це Гірше)
Міграції платформ достатньо складні навіть з одномовними магазинами. Додайте кілька мов, і складність зростає в рази. Основна причина полягає в архітектурі: Shopify і WordPress обробляють переклади принципово різними способами.
Модель Перекладу Shopify – Це Закрита Система
Shopify зберігає переклади як метадані, прикріплені до ресурсів через API Translate and Adapt. Кожен продукт, колекція та сторінка мають записи перекладу, прив'язані до внутрішніх ідентифікаторів ресурсів Shopify.
Коли ви експортуєте свій магазин за допомогою інструменту міграції, такого як Cart2Cart, LitExtension або експорт CSV, ви отримуєте вміст мовою за замовчуванням. А переклади? Вони існують в окремому шарі, який більшість інструментів міграції повністю ігнорують.
Що Насправді Експортується (І Що Втрачається)
Ось що типовий інструмент міграції з Shopify на WordPress переносить:
| Тип контенту | Переноситься? | Переносяться переклади? |
|---|---|---|
| Назви та описи продуктів | Так | Ні |
| Назви колекцій/категорій | Так | Ні |
| Дописи в блозі | Так | Ні |
| Сторінки (Про нас, Контакти) | Так | Ні |
| Рядки теми (кнопки, мітки) | Ні | Ні |
| Рядки оформлення замовлення/електронної пошти | Ні | Ні |
| Меню навігації | Частково | Ні |
Закономірність очевидна. Вміст вашої мови за замовчуванням переноситься. Ваші переклади – ні. І навіть якщо ви витягнете їх вручну, ви не можете просто вставити переклади Shopify у WordPress. Системи говорять різними мовами, буквально.
Зіставлення Мов Shopify з Файлами Перекладу WordPress
Перш ніж почати відновлення, вам потрібно зрозуміти, як WordPress обробляє багатомовний контент. Саме тут більшість посібників з міграції не вистачає.
Розуміння Системи Gettext
WordPress використовує систему локалізації Gettext. Замість зберігання перекладів у шарі бази даних, він зчитує їх зі статичних двійкових файлів (файли .mo), скомпільованих із зрозумілих для людини файлів .po.
Файл .po виглядає так:
msgid "Add to Cart"
msgstr "Ajouter au panier"
msgid "Search results for %s"
msgstr "Résultats de recherche pour %s"
Кожна тема та плагін WordPress постачаються з файлом шаблону .pot, що містить усі рядки, які можна перекладати. Ви створюєте файл .po для кожної мови, заповнюєте переклади, компілюєте його в .mo і кладете у правильну директорію.
Це система, в яку потрібно зіставити ваші переклади Shopify.
Проблема Невідповідності Кодів Мов
Shopify використовує теги мов IETF (en, fr, de). WordPress використовує коди локалей з регіональними варіантами (fr_FR, de_DE, es_ES). Під час міграції вам потрібно зіставити кожну мову Shopify з правильною локаллю WordPress. Якщо зробити це неправильно, WordPress не зможе знайти ваші файли перекладу.
Типові зіставлення, які збивають людей з пантелику:
- Shopify
ptзіставляється з WordPresspt_PT(Португалія) абоpt_BR(Бразилія) – не взаємозамінні - Shopify
zh-CNзіставляється з WordPresszh_CN, але Shopifyzh-TWзіставляється зzh_TW - Shopify
nb(норвезька букмол) зіставляється з WordPressnb_NO
Назвіть свої файли .po та .mo кодом локалі WordPress: themename-fr_FR.po, woocommerce-de_DE.mo. Неправильний код означає, що WordPress ігнорує файл мовчки.
Покроковий Процес Багатомовної Міграції WordPress
Ось конкретний процес збереження ваших перекладів під час міграції з Shopify на WordPress.
Крок 1: Експортуйте та Перевірте Свої Переклади Shopify
Перш ніж торкатися WordPress, витягніть усе з Shopify. Використовуйте Shopify Admin API або інструмент, як-от Shopify Translate CSV Export, щоб перенести свої переклади в структуровані файли.
# Using Shopify CLI to export translations
shopify app translate export --locale fr
shopify app translate export --locale de
shopify app translate export --locale es
Перевірте експортовані дані. Підрахуйте, скільки рядків у вас є для кожної мови. Визначте, які з них є перекладами вмісту продуктів (обробляються вашою CMS або багатомовним плагіном у WordPress), а які є перекладами рядків теми/інтерфейсу (обробляються файлами .po).
Крок 2: Налаштуйте Мовну Структуру WordPress і WooCommerce
У вашій новій інсталяції WordPress налаштуйте свою мовну інфраструктуру, перш ніж імпортувати будь-який вміст.
- Перейдіть у Налаштування > Загальні та встановіть мову сайту.
- Установіть мовні пакети для кожної цільової мови через Налаштування > Загальні > Мова сайту.
- Створіть структуру каталогів перекладів:
/wp-content/languages/
/wp-content/languages/plugins/
/wp-content/languages/themes/
Для перекладів вмісту продуктів (назви, описи) вам знадобиться багатомовний плагін, як-от WPML або Polylang. Але для рядків інтерфейсу теми та плагінів – кнопок, міток, повідомлень про помилки та процесу оформлення замовлення – вам потрібні статичні файли .po/..mo. Це хмарний підхід, який дозволяє уникнути роздуття плагінів.
Крок 3: Перетворіть Свої Переклади у Формат PO
Переклади рядків вашої теми Shopify потрібно перетворити у формат Gettext .po. Ось де міграція стає технічною.
Якщо ваші переклади Shopify у форматі JSON або CSV, ви можете перетворити їх у .po за допомогою сценарію або інструменту. Головне – зіставити кожен вихідний рядок із парою 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')
Це дає вам відправну точку, але ваша нова тема WordPress та інсталяція WooCommerce матимуть сотні рядків, яких не було в Shopify. Ви не можете повторно використовувати переклад Shopify "Add to Cart" для WooCommerce, оскільки навколишній контекст коду інший. Рядок WooCommerce може бути Add to cart (нижній регістр "c") або містити змінну %s для назви продукту.
Саме тут більшість людей застряють. У вас є часткові переклади з Shopify і величезний пробіл неперекладених рядків, специфічних для WordPress.
Як Перекласти Прогалини, Не Починаючи Спочатку
Хороша новина: вам не потрібно перекладати 5000 рядків WooCommerce вручну. Погана новина: ви також не можете їх пропустити, інакше ваш магазин показуватиме дратуючу суміш французьких заголовків та англійських повідомлень про помилки.
Рядки Теми та Плагінів Все Ще Потребують Перекладу
Ваша тема WordPress має власний файл .pot. WooCommerce має свій. Кожен встановлений вами плагін – платіжні шлюзи, калькулятори доставки, конструктори форм – кожен має рядки, які можна перекладати. Цього не було у вашому магазині Shopify.
Найшвидший підхід – перекладати ці великі файли .po пакетно, а не рядок за рядком. Завантажте файл .pot вашої теми, виберіть цільову мову та дозвольте AI виконати важку роботу.
Пакетний Переклад Великих Файлів WooCommerce
Мовний файл WooCommerce є масивним. З тисячами рядків, що охоплюють все, від повідомлень кошика до кодів помилок податку, це найбільше завдання перекладу в будь-якій міграції. SimplePoTranslate обробляє це за допомогою Розумного Пакетування – розділення надвеликих файлів на безпечні частини, обробки їх паралельно та об’єднання результатів назад в один чистий файл.
Критична деталь: ваші перекладені файли повинні зберігати кожну кодову змінну точно так, як вона відображається у вихідному коді. У шаблоні електронної пошти WooCommerce до заповнювача %s не можна додавати пробіл або змінювати його положення під час перекладу. Ось де блокування синтаксису запобігає потраплянню пошкоджених змінних до вашого робочого магазину.
Завдяки Мультиформатному Виводу SimplePoTranslate ви отримуєте файли .po, .mo, .json, .php і .xliff в одному ZIP-архіві. Це особливо корисно під час міграції, оскільки різні частини вашого стека WordPress можуть використовувати переклади в різних форматах. Ваша тема читає файли .mo. Для інтерфейсу без голови може знадобитися .json. Спеціальна інтеграція може очікувати .xliff. Один запуск перекладу охоплює їх усі.
Уникнення Трьох Найпоширеніших Збоїв Перекладу Під Час Міграції
Навіть із правильним робочим процесом існують підводні камені, специфічні для міграцій платформ, які застають зненацька досвідчених розробників.
Пошкоджені Змінні в Транзакційних Електронних Листах
Транзакційні електронні листи WooCommerce містять багато заповнювачів: {order_number}, {customer_name}, %1$s, %2$s. Якщо ваш процес перекладу пошкодить хоча б один із них, клієнти отримають електронні листи, як-от "Hello {customer_name}" буквально, або, що ще гірше, електронні листи з переплутаними даними.
Завжди перевіряйте свої перекладені файли на відповідність вихідному файлу .pot перед розгортанням. Такі інструменти, як Poedit, позначать невідповідності заповнювачів, а хмарні перекладачі з блокуванням синтаксису повністю усувають цей клас помилок.
Відсутні Правила Плюралізації
Shopify просто обробляє множину. WordPress Gettext підтримує складні форми множини, які різняться залежно від мови. Російська має три форми множини. Арабська має шість. Якщо ваш перекладений файл .po не містить правильного заголовка Plural-Forms і відповідних записів msgstr[0], msgstr[1], msgstr[2], WordPress повертається до неперекладеного рядка.
# 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 товаров"
Це те, про що Shopify ніколи не вимагав від вас думати. У WordPress це має значення.
Залишені Рядки Після Заміни Плагінів
Коли ви переходите з Shopify, ви не просто змінюєте платформи. Ви замінюєте цілу екосистему плагінів. Ваш платіжний шлюз Shopify стає WooCommerce Payments або Stripe for WooCommerce. Ваша система оглядів стає плагіном WordPress. Кожна заміна вводить нові рядки, які можна перекладати, і робить старі переклади застарілими.
Складіть контрольний список кожного плагіна, який ви встановлюєте після міграції, і переконайтеся, що кожен із них має відповідний перекладений файл .mo у /wp-content/languages/plugins/. Відсутність навіть одного плагіна означає, що ваші клієнти бачать англійські рядки посеред інакше перекладеного інтерфейсу.
Запустіть Свій Багатомовний Магазин на WordPress
Багатомовна міграція WordPress – це не просто передача даних. Це реархітектура того, як ваш магазин спілкується з міжнародними клієнтами. Магазини, які роблять це правильно, бачать вищі коефіцієнти конверсії на неанглійських ринках, оскільки досвід здається рідним, а не нашвидкуруч зібраним.
Робочий процес простий: експортуйте свої переклади Shopify, зіставте їх із кодами локалей WordPress, перетворіть у формат .po, заповніть прогалини за допомогою пакетного перекладу AI, перевірте свої змінні та розгорніть статичні файли .mo. Без роздування бази даних. Без накладних витрат на переклад під час виконання. Просто швидка, надійна, багатомовна комерція.
Якщо ви зіткнулися з міграцією з тисячами неперекладених рядків WooCommerce, підхід SimplePoTranslate до локалізації великих файлів може заощадити вам тижні ручної роботи.
Готові перекласти свій магазин WooCommerce після міграції? Спробуйте SimplePoTranslate безкоштовно – кредитна картка не потрібна. Завантажте свій файл .pot і отримайте готові до використання переклади за лічені хвилини.