Что именно проверять и переводить в любом магазине на Shopify. Список ресурсов один и тот же всегда — меняется только набор языков. Порядок действий ниже, разделы раскрываются.
Всё переводится через Admin GraphQL API: translatableResources для чтения, translationsRegister для записи. Никаких приложений не нужно.
{ shopLocales { locale primary published } }. Основной язык — источник, переводим на все остальные опубликованные.?theme_id=. Узнайте, в какой теме работаете: в опубликованной или в рабочей копии. Переводы, записанные в одну тему, в другой не появятся.translationsRegister обязателен translatableContentDigest — берите его из свежего ответа translatableContent. Со старым дайджестом Shopify ответит OK и не сохранит ничего.витрина Основной объём текста в магазине. Описание — это HTML, теги обязаны совпасть с оригиналом.
title body_html meta_title meta_description product_typehandle — это адрес страницы. Перевод сменит URL и убьёт входящие ссылки и позиции в поиске.handle заполнены на каждом языке{ translatableResources(first: 50, resourceType: PRODUCT) {
pageInfo { hasNextPage endCursor }
nodes {
resourceId
translatableContent { key value digest }
translations(locale: "de") { key value }
} } }
витрина Заголовки категорий и тексты над сеткой товаров. Названия коллекций часто дублируются в меню — там отдельный ресурс LINK, его тоже нужно перевести.
title body_html meta_title meta_descriptionhandleвитрина Внимание: содержимое страницы может лежать не в теле страницы, а в шаблоне темы (templates/page.*.json). Если body_html пустой или короткий, а на сайте много текста — ищите его в ресурсе темы.
title body_html meta_title meta_descriptionhandleвитрина Сюда попадает всё, что магазин хранит структурированно: блоки «вопрос-ответ» на карточке товара, значки «Гипоаллергенно», «Многоразовое», подборки, состав. Часто самый большой блок после товаров и при этом самый забываемый.
Ключи зависят от определения метаобъекта — читайте их из ответа, не угадывайте. Одинаковые значения могут повторяться в разных записях: переведите один раз и размножьте, чтобы не расходились формулировки.
служебное Покупатель их не видит, но они работают на поиск по картинкам Google и на скринридеры. Обычно самый большой по объёму блок и почти всегда забытый целиком.
altW0146), названия коллекций и бренд оставляйте латиницей.служебное Тот же ключ alt, отдельные типы ресурсов. Часто содержат заголовок статьи целиком — переводите как заголовок, а не пословно.
витрина Самый дорогой блок по объёму. Уточните у клиента, нужен ли блог на всех языках — часто его сознательно оставляют на одном.
title body_html summary_html meta_title meta_descriptionhandleвитрина Подписи над выбором варианта. Две ловушки:
«Title» и «Default Title» — служебная опция Shopify у товаров без вариантов. Тема её не выводит, переводить не нужно; она будет вечно висеть в отчёте как непереведённая.
Значения-размеры (5 ml, XL) обычно не переводятся, а вот Color → Farbe обязательно.
витрина MENU — название меню, LINK — подписи пунктов. Переводится только текст ссылки; адрес Shopify подставляет сам под язык.
Проверьте, что подписи совпадают с переводами коллекций и страниц, на которые они ведут — расхождения тут заметны сразу.
витрина Подписи в панели фильтров. Значения фильтров при этом приходят из тегов, метаполей или опций — их переводить надо в соответствующих ресурсах, а теги не переводятся вообще.
витрина «Стандартная доставка», «Экспресс», «Самовывоз» — то, что покупатель выбирает на шаге оплаты. Ресурсов бывает много: одно название × каждая зона доставки. Уникальных строк при этом обычно 10-25 — переводите уникальные и размножайте.
служебное Обычно 50-70 шаблонов, у каждого тема письма и тело. Покупатель получает их на языке заказа, поэтому пропуск здесь виден клиенту напрямую.
subject body (у части шаблонов только один){{ order.name }} — оставляйте как есть, не переводите и не меняйте пробелы внутри скобок.витрина Юридические тексты в футере. Здесь чаще всего встречается рассинхрон: на странице «Возврат» написано одно, в политике — другое. Сверьте сроки и условия с текстами на обычных страницах, прежде чем переводить.
Плейсхолдеры {{ phone }}, {{ address }}, {{ shop_name }} подставляются из настроек магазина. Их нельзя починить переводом — только в админке.
служебное SHOP — мета-заголовок и мета-описание главной. PACKING_SLIP_TEMPLATE — бумажка внутри посылки. Обе мелкие, обе забывают.
служебное В большинстве магазинов пусты. Проверить надо всё равно — если магазин продаёт подписки, названия планов («Каждые 30 дней») покупатель видит на карточке товара.
витрина «В корзину», «Распродано», «Итого», «Продолжить покупки» — весь интерфейс. Самый заметный блок: пропуск виден на каждой странице.
Привязано к теме. Ресурс адресуется как gid://shopify/OnlineStoreTheme/<theme_id>. Переводы, записанные в тестовую тему, на опубликованном сайте не появятся.
Ключи shopify.* и customer_accounts.* — системные строки чекаута и личного кабинета, Shopify локализует их сам. Их тысячи, они будут вечно показываться как непереведённые. Исключайте из подсчёта.
витрина Заголовки главной, тексты баннеров, блоки «Почему мы», футер. Всё, что менеджер вбил руками в редакторе темы, живёт здесь, а не в страницах.
Мёртвые шаблоны. В теме обычно лежат заготовки page.about, page.faq, page.courses, password, не привязанные ни к одной странице. Прежде чем переводить — проверьте, что шаблон реально используется. Иначе можно перевести тысячу строк, которых никто не увидит.
Мусор в значениях. Сюда же попадают адреса картинок shopify://shop_images/..., ссылки, SVG-иконки, 1400px, 100%, даты. Это не текст — отфильтруйте, иначе покрытие никогда не дойдёт до 100%.
не переводить Формально переводимы, фактически на 90% состоят из числовых id, JSON и кеша виджетов отзывов (Judge.me, Loox), который приложение пересоздаёт само.
Переводить стоит только те метаполя, что реально выводятся текстом на витрине — например «Способ применения» или «Состав». Найдите их по значению, а не по ключу: ключ у всех один и тот же (value).
не переводить Shopify разрешает переводить handle, и апки это делают. Но смена адреса ломает входящие ссылки, рекламу и накопленные позиции в поиске.
Переводите handle, только если клиент явно просит локальные URL и готов настроить редиректы со старых адресов.
нельзя Shopify не даёт переводить теги в принципе. Если теги выводятся на витрине как фильтры или значки — единственный выход это перенести их в метаполя или метаобъекты.
нельзя Переводом не решается: нужен отдельный файл на каждый язык и подмена в теме. Зафиксируйте это как отдельную задачу дизайнеру и предупредите клиента.
нельзя Мутации для настроек магазина в API нет. Всё, что подставляется из Settings → General, правится только руками.
Проверьте до начала работы, иначе будете переводить текст, который всё равно перебьётся: телефон (формат подставляется автоматически и может разойтись с тем, что написано в текстах), юридический адрес, название компании, валюта и единицы измерения.
Отдельно: формат даты и чисел. Разделитель разрядов и порядок дня-месяца Shopify берёт из локали, а если в тексте вручную написано 09/07/2026 — оно останется американским на всех языках.
служебное Перевод без корректной настройки рынков не даёт трафика: Google не понимает, какая версия для какой страны.
/de/ — по умолчанию и обычно правильный выбор. Поддомены и отдельные домены дороже в поддержке.en-uk вместо правильного en-gb. Регион пишется по ISO 3166, не «как привычно».sitemap.xml.Мета-заголовки — прямой фактор ранжирования. Немец, который ищет по-немецки, должен увидеть немецкий заголовок в выдаче, иначе не кликнет. Не оставляйте meta_title на английском «потому что и так понятно».
не переводить через Shopify. Тексты приложений в translatableResources не попадают — переводятся внутри самого приложения, если оно это умеет.
Составьте список установленных приложений, которые что-то выводят покупателю, и пройдите каждое отдельно: виджет отзывов, всплывающие окна, блок «с этим покупают», трекинг доставки, кабинет лояльности.
Если приложение мультиязычность не поддерживает — это вопрос к его разработчику, и клиента лучше предупредить заранее.
витрина Перевод — половина работы. Большинство тем заявляют поддержку RTL, но зеркалят только текст: меню, отступы, стрелки каруселей и корзина остаются слева направо.
Что проверить вживую: направление меню и хлебных крошек, положение иконки корзины, стрелки слайдеров, выравнивание цен и кнопок, порядок полей в чекауте, формат адреса и телефона.
Типографика. Арабский на весе 400 выглядит тонким и плохо читается с телефона — обычно нужен 500-600. Это правка темы, а не перевода.
Кастомные секции и блоки сторонних приложений ломают RTL чаще всего — их проверяйте отдельно.
translationsRegister вернёт userErrors: [], как будто всё хорошо, но перевода не будет. Так теряются целые блоки.
Берите digest из того же ответа, что и value, и записывайте сразу. Если исходный текст правили между чтением и записью — перечитайте.
Если в исходнике <p><strong>, а в переводе тегов нет или они другие — вёрстка поедет. Перед записью сравнивайте отсортированный список тегов оригинала и перевода, и не записывайте при расхождении.
Частый след прошлых подрядчиков и авто-переводчиков: перевод формально есть, отчёт показывает 100%, а лежит там исходный английский текст байт в байт.
Проверяйте: если перевод посимвольно равен оригиналу — считайте, что перевода нет. Для языков на латинице дополнительно ищите характерные английские фразы.
Тема адресуется через ?theme_id=. Можно честно перевести всю тему и не увидеть на сайте ни строчки, потому что работали в копии, а опубликована другая.
Сверяйте покрытие в опубликованной теме отдельно от рабочей. При публикации новой темы переводы темы не переезжают автоматически.
Ссылки, shopify://, SVG, числа, 1400px, e-mail, Liquid {{ }}, JSON — формально «непереведённые строки». Отфильтруйте их сразу, иначе не отличите реальный пропуск от шума и не поймёте, когда работа закончена.
Один и тот же вопрос FAQ или название тарифа доставки встречается в нескольких записях. Если переводить каждую отдельно, формулировки разъедутся.
Соберите уникальные значения, переведите один раз, разложите по всем записям.
Особенно на финском, венгерском, греческом. Термин из бьюти-сферы превращается в набор букв, и заметить это может только носитель.
Сверяйте ключевые термины по товарной группе и держите единый глоссарий на весь магазин.
Кириллица в финском, иероглиф в русском, латиница посреди греческого — типичный след склейки из нескольких источников.
Прогоняйте финальную проверку регуляркой по диапазонам символов: для каждого языка допустим свой алфавит плюс латиница для брендов, всё остальное — к разбору.
handle, служебные Default Title, shopify.* и отфильтрованный мусор.sitemap.xml, мета-заголовки переведены, переключатель языков работает на всех типах страниц.