기능플러그인가격리소스
언어 변경
리소스다국어 Shopify에서 WordPress로 마이그레이션 구축 방법

다국어 Shopify에서 WordPress로 마이그레이션 구축 방법

SimplePoTranslate Team2026년 3월 5일
다국어 Shopify에서 WordPress로 마이그레이션 구축 방법

몇 달 동안 다국어 Shopify 스토어를 구축했습니다. 제품 설명은 프랑스어, 독일어, 스페인어로 번역되어 있습니다. 결제 흐름은 3개 언어로 작동합니다. 그런 다음 더 많은 제어, 더 나은 마진 또는 플러그인 유연성을 위해 WordPress 및 WooCommerce로 마이그레이션하기로 결정합니다.

제품 데이터는 잘 전송됩니다. 이미지도 제대로 들어옵니다. 하지만 번역은 어떻습니까? 사라집니다.

이것이 아무도 경고하지 않는 다국어 WordPress 마이그레이션의 숨겨진 비용입니다. Shopify는 번역을 자체 독점 시스템에 잠그고 WordPress는 완전히 다른 아키텍처를 사용합니다. 명확한 계획이 없으면 이미 가지고 있던 것을 다시 구축하는 데 몇 주를 소비하게 됩니다. 이 가이드에서 그 계획을 제공합니다.

다국어 마이그레이션이 실패하는 이유 (그리고 Shopify가 더 악화시키는 이유)

플랫폼 마이그레이션은 단일 언어 스토어만으로도 고통스럽습니다. 여러 언어를 추가하면 복잡성이 배가됩니다. 근본 원인은 아키텍처에 있습니다. Shopify와 WordPress는 번역을 근본적으로 다른 방식으로 처리합니다.

Shopify의 번역 모델은 폐쇄적인 시스템입니다.

Shopify는 Translate and Adapt API를 통해 리소스에 연결된 메타데이터로 번역을 저장합니다. 각 제품, 컬렉션 및 페이지에는 Shopify의 내부 리소스 ID에 연결된 번역 항목이 있습니다.

Cart2Cart, LitExtension 또는 CSV 내보내기와 같은 마이그레이션 도구를 사용하여 스토어를 내보낼 때 기본 언어 콘텐츠를 얻게 됩니다. 번역은 어떻습니까? 대부분의 마이그레이션 도구가 완전히 무시하는 별도의 계층에 있습니다.

실제로 내보내지는 것 (그리고 손실되는 것)

다음은 일반적인 Shopify-WordPress 마이그레이션 도구에서 전송하는 내용입니다.

콘텐츠 유형전송 여부번역 전송 여부
제품 제목 및 설명아니요
컬렉션/카테고리 이름아니요
블로그 게시물아니요
페이지 (소개, 연락처)아니요
테마 문자열 (버튼, 레이블)아니요아니요
결제/이메일 문자열아니요아니요
탐색 메뉴부분아니요

패턴은 분명합니다. 기본 언어 콘텐츠는 마이그레이션됩니다. 번역은 그렇지 않습니다. 그리고 수동으로 추출하더라도 Shopify 번역을 WordPress에 붙여넣을 수 없습니다. 시스템은 문자 그대로 다른 언어를 사용합니다.

Shopify 언어를 WordPress 번역 파일에 매핑

다시 구축하기 전에 WordPress가 다국어 콘텐츠를 처리하는 방식을 이해해야 합니다. 이것이 대부분의 마이그레이션 가이드에서 부족한 부분입니다.

Gettext 시스템 이해

WordPress는 Gettext 지역화 시스템을 사용합니다. 번역을 데이터베이스 계층에 저장하는 대신 사람이 읽을 수 있는 .po 파일에서 컴파일된 정적 바이너리 파일(.mo 파일)에서 읽습니다.

.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는 WordPress pt_PT(포르투갈) 또는 pt_BR(브라질)에 매핑됩니다. 상호 교환할 수 없습니다.
  • Shopify zh-CN은 WordPress zh_CN에 매핑되지만 Shopify zh-TWzh_TW에 매핑됩니다.
  • Shopify nb(노르웨이어 보크몰어)는 WordPress nb_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

내보내기를 감사합니다. 언어별로 얼마나 많은 문자열이 있는지 계산합니다. WordPress에서 CMS 또는 다국어 플러그인에서 처리하는 제품 콘텐츠 번역과 .po 파일에서 처리하는 테마/UI 문자열 번역을 식별합니다.

2단계: WordPress 및 WooCommerce 언어 구조 설정

새 WordPress 설치에서 콘텐츠를 가져오기 전에 언어 인프라를 구성합니다.

  1. 설정 > 일반으로 이동하여 사이트 언어를 설정합니다.
  2. 설정 > 일반 > 사이트 언어를 통해 각 대상 언어에 대한 언어 팩을 설치합니다.
  3. 번역 디렉토리 구조를 만듭니다.
/wp-content/languages/
/wp-content/languages/plugins/
/wp-content/languages/themes/

제품 콘텐츠 번역(제목, 설명)의 경우 WPML 또는 Polylang와 같은 다국어 콘텐츠 플러그인이 필요합니다. 하지만 테마 및 플러그인 UI 문자열(버튼, 레이블, 오류 메시지 및 결제 흐름)의 경우 정적 .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에 존재하지 않았던 수백 개의 문자열이 있습니다. 주변 코드 컨텍스트가 다르기 때문에 WooCommerce에 대해 Shopify의 "장바구니에 담기" 번역을 재사용할 수 없습니다. WooCommerce 문자열은 Add to cart (소문자 "c")이거나 제품 이름에 대한 %s 변수를 포함할 수 있습니다.

이것이 대부분의 사람들이 곤경에 처하는 부분입니다. Shopify의 부분 번역과 번역되지 않은 WordPress 관련 문자열의 엄청난 격차가 있습니다.

처음부터 다시 시작하지 않고 격차를 번역하는 방법

좋은 소식은 5,000개의 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)로 가득 차 있습니다. 번역 프로세스에서 이 중 하나라도 손상되면 고객은 문자 그대로 "안녕하세요 {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 파일을 업로드하고 몇 분 안에 프로덕션 준비가 완료된 번역을 받으세요.