WordPress 웹사이트 다국어 번역 완벽 가이드
WordPress 웹사이트 번역은 신중한 계획과 실행이 요구되는 복잡한 과정입니다. 이 가이드는 플러그인 Gato AI Translations for Polylang을 사용한 웹사이트 번역의 풍부한 경험을 바탕으로 작성되었습니다.
이 가이드에서는 초기 준비 및 설정부터 번역 실행, 검증 및 문제 해결까지 알아야 할 모든 내용을 순서대로 설명합니다. 원활한 번역 경험을 위해 이 가이드를 따라 주시기 바랍니다.
Polylang 설치 및 설정
Gato AI Translations for Polylang 은 Polylang이 설치 및 활성화되어 있어야 합니다. Polylang은 언어와 번역 관계를 관리하는 다국어 프레임워크입니다.
설치 후 언어를 설정하기 위해 Polylang을 구성해 주세요.
- WordPress 관리 메뉴에서 Languages로 이동합니다
- 기본 언어(기존 콘텐츠의 언어)를 추가합니다
- 번역하려는 모든 대상 언어를 추가합니다

활성화된 모든 플러그인이 Polylang과 호환되는지 확인해야 합니다. 일부 플러그인은 다국어 환경에서 올바르게 작동하지 않을 수 있습니다.
호환되지 않는 플러그인이 발견되면 대안을 찾거나, 개발자에게 지원을 요청하거나, 해당 플러그인이 정말 필요한지 검토해 보시기 바랍니다.
먼저 원본 콘텐츠를 점검하고 수정하기
번역을 시작하기 전에 원본 콘텐츠가 완벽한 상태인지 확인하는 것이 중요합니다. 원본 콘텐츠에 문제가 있으면 모든 번역에 복제되므로, 동일한 문제를 여러 번(각 언어마다) 수정해야 합니다.
콘텐츠 점검 체크리스트:
-
링크 오류 확인
- Broken Link Checker 같은 플러그인을 사용하여 내부 및 외부 링크 오류를 확인합니다
- 번역 전에 모든 링크 오류를 수정합니다
- 내부 링크가 올바른 게시물/페이지를 가리키는지 확인합니다
-
모든 이미지 존재 및 최적화 확인
- 모든 이미지가 올바르게 로드되는지 확인합니다
- 접근성 및 SEO를 위해 이미지에 적절한 대체 텍스트(alt text)가 있는지 확인합니다
- 이미지 파일 크기가 적절한지(너무 크지 않은지) 확인합니다
- 플레이스홀더 이미지나 깨진 이미지 참조를 제거합니다
-
서식 및 스타일 검토
- 텍스트 서식이 일관성 있는지 확인합니다
- 제목이 올바르게 구조화되어 있는지(H1, H2, H3 등) 확인합니다
- 목록, 표, 기타 구조화된 콘텐츠가 올바르게 표시되는지 확인합니다
- 사용자 지정 스타일 및 CSS가 예상대로 작동하는지 테스트합니다
-
콘텐츠 구조 검증
- Gutenberg 블록 또는 페이지 빌더 요소가 올바르게 사용되는지 확인합니다
- 사용자 지정 게시물 유형 및 분류체계가 올바르게 설정되어 있는지 확인합니다
- 메타데이터(사용자 지정 필드, ACF 필드 등)가 완전한지 확인합니다
-
플레이스홀더 콘텐츠 확인
- "Lorem ipsum" 또는 플레이스홀더 텍스트를 제거합니다
- 임시 콘텐츠를 최종 버전으로 교체합니다
- 모든 콘텐츠가 게시 준비가 되어 있는지 확인합니다
-
SEO 고려 사항
- 메타 제목 및 설명이 설정되어 있는지 확인합니다
- URL이 SEO 친화적인지 확인합니다
- SEO 구조를 위해 제목이 올바르게 사용되는지 확인합니다
내부 링크 교체 설정
콘텐츠를 번역할 때 내부 링크는 번역된 버전을 가리키도록 업데이트해야 합니다. Gato AI Translations for Polylang은 이를 자동으로 처리할 수 있습니다.
플러그인을 통해 어떤 유형의 내부 링크를 교체할지 설정할 수 있습니다.
- Custom Posts: 다른 게시물, 페이지, 사용자 지정 게시물 유형 등에 대한 링크
- Media: 미디어 항목(이미지, 동영상 등)에 대한 링크
- Tags: 태그 아카이브 페이지에 대한 링크
- Categories: 카테고리 아카이브 페이지에 대한 링크
- Users: 작성자 페이지에 대한 링크
콘텐츠 내 게시물 링크는 원본 콘텐츠에서 자동으로 추출되어 교체됩니다. 다른 링크 유형(media, tags, categories, users)은 교체를 원하는 경우 설정에서 활성화해야 합니다.
설정 방법:
- 설정 페이지의 Plugin Configuration > Internal Links Replacement로 이동합니다
- 실제로 콘텐츠에서 사용하는 링크 유형만 활성화합니다
- 설정을 저장합니다

모든 링크가 올바른 URL을 사용하는지 확인하기
내부 링크 교체 기능이 올바르게 작동하려면 콘텐츠 내 모든 링크가 적절한 URL 형식을 사용해야 합니다. 이는 다음 링크에 적용됩니다.
- 게시물/페이지 콘텐츠(Gutenberg 블록, HTML 등)
- Elementor 위젯 및 메타 필드
- Bricks 빌더 요소 및 메타 필드
- 사용자 지정 필드 및 메타데이터
URL 요건:
-
URL에는 전체 도메인이 포함되어야 합니다
- ✅ 올바름:
https://www.mysite.com/hello-world/ - ❌ 잘못됨:
/hello-world/(상대 URL) - ❌ 잘못됨:
hello-world/(도메인 또는 프로토콜 없음)
- ✅ 올바름:
-
URL은 현재 슬러그를 가리켜야 합니다
- 게시물의 슬러그를 변경한 경우, 새 슬러그를 사용하도록 모든 링크를 업데이트합니다
- WordPress는 URL에서 게시물을 검색할 수 있어야 합니다
- 리다이렉트되는 오래된 슬러그는 링크 교체에 사용할 수 없습니다
-
URL은 올바른 도메인을 사용해야 합니다(리다이렉트 없음)
- ✅ 올바름:
https://www.mysite.com/hello-world/ - ❌ 잘못됨:
https://mysite.com/hello-world/(사이트가 www를 사용하는 경우) - 플러그인이 링크를 정확하게 매칭하고 교체하려면 정확한 도메인이 필요합니다
- ✅ 올바름:
URL의 도메인이 잘못된 경우 Better Search Replace 같은 플러그인을 사용하여 데이터베이스에서 URL을 검색하고 교체할 수 있습니다. 예: https://mysite.com을 https://www.mysite.com으로 교체합니다.
초안 또는 게시 상태 선택하기
번역이 생성될 때 즉시 게시할지, 먼저 검토를 위해 초안으로 저장할지 결정해야 합니다.
기본적으로 번역은 초안으로 저장됩니다. 번역을 즉시 게시하려면 설정 페이지의 Plugin Configuration > General Configuration으로 이동하여 Status when translated 옵션을 Publish 또는 Same as origin post(원본 게시물이 이미 게시된 경우)로 설정하세요.

오른쪽에서 왼쪽(RTL) 언어 지원
히브리어, 아랍어, 페르시아어, 우르두어와 같은 오른쪽에서 왼쪽으로 쓰는 언어로 번역할 때는 테마가 RTL 레이아웃을 올바르게 지원하는지 확인해야 합니다.


RTL이 영향을 미치는 요소:
RTL 언어는 텍스트 방향 변경 이상을 요구합니다. 테마가 다음을 처리해야 합니다.
- 레이아웃 방향: 요소가 오른쪽에서 왼쪽으로 흘러야 합니다
- 텍스트 정렬: 텍스트가 기본적으로 오른쪽 정렬이어야 합니다
- 간격 조정:
margin-left는margin-right로,padding-left는padding-right로 변경되어야 합니다 - 내비게이션: 메뉴와 내비게이션이 RTL로 흘러야 합니다
- 양식: 입력 필드와 버튼이 올바르게 정렬되어야 합니다
- 아이콘과 이미지: 미러링 또는 위치 변경이 필요할 수 있습니다
이미 처리된 항목:
- Polylang은 올바른 언어 방향(
dir="rtl"속성)을 자동으로 설정합니다 - 콘텐츠 번역은 RTL과 LTR 언어에서 동일하게 작동합니다
- Gato AI Translations는 텍스트 방향과 관계없이 콘텐츠를 올바르게 번역합니다

확인해야 할 사항:
-
테마 RTL 지원: RTL 언어로 테마를 테스트하여 올바르게 처리되는지 확인합니다
- 많은 최신 테마에는 RTL 스타일시트가 포함되어 있습니다
- RTL 지원에 대한 테마 문서를 확인하세요
- 테마에서
rtl.css또는 유사한 파일을 찾아보세요
-
사용자 지정 CSS: 추가한 사용자 지정 CSS를 검토합니다
- 하드코딩된 left/right 값은 조정이 필요할 수 있습니다
- 논리 속성 사용을 고려하세요(
margin-left대신margin-inline-start)
-
페이지 빌더 호환성: Elementor, Bricks 또는 다른 페이지 빌더를 사용하는 경우
- RTL 레이아웃을 지원하는지 확인합니다
- 번역 전에 RTL 모드에서 레이아웃을 테스트합니다
테마가 RTL을 잘 지원하지 않는 경우 RTL 호환 테마로 전환하거나, 사용자 지정 RTL CSS를 추가하거나, RTL 지원을 추가하는 플러그인을 사용해야 할 수 있습니다.
번역이 필요한 서드파티 플러그인 콘텐츠 파악하기
많은 WordPress 플러그인은 콘텐츠를 저장하기 위해 자체 사용자 지정 게시물 유형(CPT)을 생성합니다(예: WooCommerce 제품, Events Calendar 이벤트, LearnDash 강좌 등).
번역 전에 다음을 수행해야 합니다:
-
번역이 필요한 콘텐츠를 포함하는 CPT 파악하기
- 활성화된 플러그인과 해당 CPT를 검토합니다
- 번역이 필요한 것을 결정합니다(모두 필요한 것은 아닙니다)
-
관련 CPT 및 분류체계를 번역 가능하게 설정하기
- Polylang의 Languages > Settings > Custom post types and Taxonomies로 이동합니다
- 관련 CPT 및 분류체계에 대한 번역을 활성화합니다

CPT 번역 항목 자동 생성하기
CPT가 항목 생성에 wp_insert_post 메서드를 사용하는 경우, 설정 페이지의 Plugin Configuration > General Configuration으로 이동하여 해당 CPT에 대한 Automatic creation of translation entries 옵션을 활성화하면 플러그인이 번역 항목을 자동으로 생성합니다.

CPT가 wp_insert_post 이외의 메서드를 사용하는 경우, 번역하기 전에 Polylang UI를 사용하여 번역 항목을 수동으로 생성해야 합니다.
예를 들어, WooCommerce 제품의 경우 먼저 번역 항목을 생성해야 합니다. 데모 동영상은 서드파티 사용자 지정 게시물 유형 번역에 관한 문서를 확인하세요.
SEO 플러그인이 지원되는지 확인하기
SEO 메타데이터(메타 제목, 설명, Open Graph 태그 등)는 다국어 SEO에 매우 중요합니다. Gato AI Translations for Polylang에는 가장 인기 있는 SEO 플러그인에 대한 기본 지원이 포함되어 있으며, SEO 관련 메타데이터를 모두 자동으로 번역합니다.
플러그인은 8개의 주요 SEO 플러그인을 지원합니다.
- All in One SEO
- Rank Math
- SEO Simple Pack
- SEOPress
- Slim SEO
- The SEO Framework
- WP Meta SEO
- Yoast SEO
위에 나열되지 않은 SEO 플러그인을 사용하는 경우, 사용 중인 SEO 플러그인에 해당하는 메타 키를 동기화 및 번역하도록 지정해야 합니다. wp_postmeta 테이블에 메타데이터를 저장하는 모든 플러그인이 지원됩니다.
AI 공급자 및 모델 선택하기
번역 품질은 선택하는 AI 서비스와 모델에 따라 달라집니다.
최신 AI 서비스(ChatGPT, Claude, Gemini 등)는 기존 서비스(Google Translate 또는 DeepL)보다 훨씬 뛰어난 번역을 생성합니다. 그 이유는 맥락·톤·뉘앙스를 더 깊이 이해하고, HTML 구조와 서식을 올바르게 유지하며, URL이나 상대 링크를 잘못 번역하지 않고, 번역 전반에 걸쳐 문체와 어조를 유지하며, 기술 용어 및 도메인 특화 언어를 더 적절하게 처리하기 때문입니다.
다음 AI 서비스 중에서 선택할 수 있습니다.
- ChatGPT (OpenAI)
- Claude (Anthropic)
- DeepSeek
- Gemini (Google)
- Mistral AI
- OpenRouter (주요 모델 전체에 대한 액세스를 제공하는 LLM 애그리게이터. Grok 및 Llama 포함)
- 셀프호스팅 LLM (자체 서버에서 호스팅. 예: Ollama 경유)
사용 가능한 최신 모델 버전을 사용하는 것을 권장합니다(예: 5.0보다 ChatGPT 5.2). 최신 모델은 항상 더 뛰어난 번역 품질을 제공합니다.
팁: 언어마다 다른 AI 서비스를 설정할 수 있습니다. 예를 들어, 중국어에는 DeepSeek(뛰어난 품질에 매우 저렴), 유럽 언어에는 ChatGPT, 복잡한 기술 콘텐츠에는 Claude를 사용합니다. 이를 통해 품질과 비용을 모두 최적화할 수 있습니다.
OpenRouter를 사용하여 출시되는 즉시 최신 AI 모델에 액세스할 수 있습니다.
AI 번역 프롬프트 커스터마이징 고려하기
기본 번역 프롬프트는 대부분의 콘텐츠에서 잘 작동하지만, 커스터마이징하면 특정 사용 사례에 대한 번역 품질을 향상시킬 수 있습니다.
예:
여행 블로그에서는 다음과 같은 내용을 프롬프트에 추가하여 커스터마이징할 수 있습니다.
Translate to a natural, flowing, easy-to-read, casual blog-style language. Keep original content structure, meaning, and styling (but do adjust sentence structure and style to be relevant to the target language).
Lightly improve boring parts - Add curiosity triggers, light humor, and light slang (as fits the target language), like a human travel blogger would write.기본 프롬프트를 수정하거나, 여러 개의 사용자 지정 AI 프롬프트를 생성하여 설정에서 사용할 프롬프트를 선택할 수 있습니다.

Gutenberg 블록 점검하기
번역 전에 사용 중인 블록을 파악하고 번역이 지원되는지 확인해야 합니다.
기본으로 지원되는 Gutenberg 블록:
- 모든 WordPress 코어 블록: Paragraph, Heading, List, Quote, Image, Gallery 등
- 서드파티 블록: Yoast SEO, GenerateBlocks, Kadence, Greenshift 등의 플러그인 블록
번역해야 하는 문자열을 포함하는 지원되지 않는 블록을 사용 중인 경우 다음 중 하나를 선택할 수 있습니다.
- 블록을 번역하기 위한 통합 추가, 또는
- 지원되는 블록으로 교체(예: 사용자 지정 추천사 블록을 지원되는 대안 블록으로 교체)
도움이 필요하신가요? 사용자 지정 블록 통합을 도와드릴 수 있습니다. 전문가에게 통합을 맡기고 싶다면 사용자 지정 서비스를 확인해 보세요.
참고: 번역할 수 없는 블록도 존재합니다.
지원되지 않는 블록을 교체해야 하는 경우, 해당 블록을 사용하는 모든 게시물을 찾아야 합니다. 특정 블록이 사용된 위치를 파악하는 방법은 특정 블록을 포함하는 게시물 찾기 튜토리얼을 확인하세요.
Elementor 위젯 점검하기
Elementor 페이지 빌더를 사용 중인 경우, 사용 중인 위젯을 점검하고 번역이 지원되는지 확인해야 합니다. 프로세스는 Gutenberg 블록 점검과 유사하지만 Elementor 위젯에 특화되어 있습니다.
모든 Elementor 코어 위젯은 기본으로 지원됩니다.
지원되지 않는 위젯이 있는 경우 다음을 수행할 수 있습니다.
- 위젯을 번역하기 위한 통합 추가, 또는
- 지원되는 위젯으로 교체
Bricks 요소 점검하기
Bricks 페이지 빌더를 사용 중인 경우, 사용 중인 요소를 점검하고 번역이 지원되는지 확인해야 합니다. 프로세스는 Gutenberg 블록 점검과 유사하지만 Bricks 요소에 특화되어 있습니다.
모든 Bricks 코어 요소는 기본으로 지원됩니다.
지원되지 않는 요소가 있는 경우 다음을 수행할 수 있습니다.
- 요소를 번역하기 위한 통합 추가, 또는
- 지원되는 요소로 교체
텍스트가 포함된 이미지 처리하기
웹사이트를 번역할 때 흔히 간과하는 것은 이미지에 번역이 필요한 텍스트가 포함될 수 있다는 점을 잊는 것입니다.
게시물을 번역하면 이미지가 번역된 버전에 복사되고, 이미지 메타데이터(제목, 대체 텍스트, 캡션)는 번역되지만, 이미지 내의 텍스트는 원래 언어로 남습니다.
이미지를 점검하는 가장 쉬운 방법은 WordPress 미디어 라이브러리를 Grid 레이아웃으로 전환하는 것입니다. 이렇게 하면 모든 이미지를 한눈에 시각적으로 스캔하여 잘못된 언어의 텍스트가 포함된 이미지를 빠르게 찾아낼 수 있습니다.

예를 들어, 이 이미지에는 히브리어 텍스트가 포함되어 있어 다른 언어에는 적합하지 않습니다.

처리 방법:
-
텍스트 그대로 유지 (해당 언어로도 일반적으로 이해 가능한 경우)
- 텍스트가 널리 이해되는 언어이거나 보편적인 기호/숫자를 사용하는 경우 적합합니다
- 추가 작업이 필요하지 않습니다
-
이미지에서 텍스트 제거
- 텍스트가 포함되지 않은 이미지를 사용합니다
-
텍스트 오버레이를 텍스트 대신 사용하기
- 텍스트가 포함되지 않은 이미지를 사용합니다
- 자동으로 번역되는 텍스트(Gutenberg 블록, Elementor 위젯, Bricks 요소 또는 CSS 사용)를 오버레이합니다
-
번역된 이미지 버전 생성
- 각 언어별로 별도의 이미지 파일을 생성합니다
- 번역된 게시물의 이미지를 수동으로 교체합니다
추가 사용자 데이터 번역 처리하기
Polylang은 WordPress 사용자 프로필의 약력 필드를 처리할 수 있지만, 사용자 지정 필드(ACF, Meta Box 또는 기타 방법)에 추가 사용자 데이터가 저장된 경우 특별한 접근 방식이 필요합니다.
번역이 필요한 사용자 데이터(직함, 자격, 설명 등)가 있는 경우 각 언어별로 별도의 필드를 생성해야 합니다.
-
각 언어별로 별도의 필드 생성
- ACF 또는 Meta Box를 사용하여 다음과 같은 필드를 생성합니다.
Qualification ENQualification FRQualification DE- 등
- ACF 또는 Meta Box를 사용하여 다음과 같은 필드를 생성합니다.
-
올바른 필드를 표시하도록 테마 업데이트
- 현재 언어를 확인하도록 테마 템플릿을 수정합니다
- 활성 언어를 기반으로 적절한 필드를 표시합니다
- PHP 코드 예시:
$current_lang = pll_current_language(); $qualification = get_field("qualification_{$current_lang}", 'user_' . $user_id); echo $qualification;
-
필드를 수동으로 채우기
- 콘텐츠를 번역한 후 사용자 프로필 필드를 수동으로 업데이트합니다
번역하지 않아야 할 용어 번역 건너뛰기
브랜드명, 고유명사, 기술 용어 또는 도메인 특화 전문 용어는 번역하지 않아야 합니다.
사용자 지정 프롬프트에 지침을 추가하여 이러한 용어의 번역을 건너뛸 수 있습니다. 예:
Do not translate the following types of terms:
- Hotel names (e.g., "Grand Hotel", "Beach Resort")
- Restaurant names
- Brand names
- Technical acronyms (API, SEO, CMS, etc.)
Keep these terms exactly as they appear in the original text.언어 간 중복 태그 방지하기
콘텐츠에는 두 가지 다른 언어로 같은 개념을 나타내는 태그가 있을 수 있습니다. 이러한 태그를 번역하면 중복이나 충돌이 발생할 수 있습니다.
예를 들어, 중국어 웹사이트를 영어로 번역할 때 布宜诺斯艾利斯(중국어로 Buenos Aires)라는 태그와 영어의 Buenos Aires 태그가 모두 있는 경우, 영어로 번역하면 두 태그 모두 buenos-aires가 됩니다. 이로 인해 중복 태그 상황이 발생합니다.

번역 전 수정 방법:
-
태그 점검
- 원본 언어의 모든 태그를 검토합니다
- 다른 언어의 태그와 중복될 수 있는 태그를 파악합니다
- 다른 언어로 같은 개념을 나타내는 태그를 찾습니다
-
태그 통합
- 유지할 언어 버전을 하나 선택합니다(보통 원본 언어)
- 중복 태그를 병합하거나 제거합니다
- 통합된 태그를 사용하도록 게시물을 업데이트합니다
-
번역 전 정리
- 원본 콘텐츠에 원본 언어의 태그만 포함되어 있는지 확인합니다
- 원본 콘텐츠에서 대상 언어의 태그를 제거합니다
- 이렇게 하면 번역 중 충돌을 방지할 수 있습니다
언어 간 중복 지명 방지하기
콘텐츠가 스크립트가 혼합된 헤드라인을 사용하는 경우 이런 패턴이 보일 수 있습니다. 제목이 현지 지명으로 시작하고, 다음에 괄호 안에 라틴 문자로 같은 이름이 오고, 그다음에 나머지 내용이 옵니다.
일반적인 원본 패턴(예):
- 원본 (예: 히브리어):
פוקט (Pouket) - מדריך לאי היפה— 현지 이름, 그 다음 괄호 안에 영어 또는 국제 철자, 그다음 부제목 - 번역 후 (예: 영어):
Pouket (Pouket) - beautiful island guide
번역 후 헤드라인은 이미 하나의 언어와 스크립트로 되어 있어 모델의 직역에서 같은 지명이 두 번 반복됩니다(예: Pouket (Pouket)).
해결책: 번역 프롬프트 개선하기
괄호 안이 새로운 정보를 추가하지 않는 경우 모델이 중복된 "이름 (같은 이름)" 시작 부분을 정규화하도록 프롬프트를 커스터마이징합니다. 예를 들어 다음과 같은 지침을 추가합니다.
If a heading begins with a place name followed by the same translated name in parentheses, remove the duplicate and keep one natural version. Do not remove the parenthesis if the text inside uses a different script, a different spelling, or includes additional descriptive information.태그/카테고리 슬러그에 주의하기
태그나 카테고리 슬러그가 이미 대상 언어로 되어 있는 경우 번역할 것이 없다고 생각할 수 있습니다.

그것은 종종 괜찮지만 Polylang free(비Pro 버전)에는 주의 사항이 있습니다.
Polylang Pro에서는 번역된 용어가 언어 간에 동일한 슬러그를 재사용할 수 있습니다. 무료 버전에서는 WordPress가 모든 슬러그의 고유성을 강제하므로 번역된 용어 슬러그에는 자동으로 -2 접미사가 추가됩니다.
예를 들어, 히브리어에서 슬러그가 travels_and_attractions인 카테고리는 영어로 번역될 때 동일한 슬러그를 유지하는 대신 travels_and_attractions-2가 됩니다.
이것이 URL이나 SEO에 영향을 미치는 경우, 번역 후 슬러그를 수동으로 수정하거나, Polylang Pro로 업그레이드하여 언어 간 슬러그 재사용을 허용해야 합니다.
임베드 콘텐츠가 적절한 언어인지 확인하기
Google Maps, 소셜 미디어 위젯, 기타 플랫폼의 iframe 같은 서드파티 콘텐츠를 임베드하는 경우, 임베드가 대상 언어로 표시되는지 확인하세요.
예를 들어, 히브리어용으로 구성된 Google Maps 임베드는 페이지의 나머지 부분을 영어로 번역한 후에도 히브리어 레이블, 도로명, UI를 계속 표시합니다. 이 경우 언어에 의존하지 않는 임베드를 사용하는 것이 좋습니다.

같은 내용이 언어별 임베드를 생성하는 모든 플랫폼이나 서비스(예: YouTube 챕터, 리뷰 위젯, 예약 양식)에도 적용됩니다. 번역 후에는 반드시 각 임베드를 확인하세요.
원본 콘텐츠에 언어별 스타일링이 없는지 확인하기
특정 언어(특히 히브리어나 아랍어 같은 RTL 언어)로 작성된 게시물 콘텐츠에는 HTML 요소에 직접 적용된 인라인 방향 및 언어 속성이 포함될 수 있습니다. 해당 콘텐츠를 다른 언어로 번역하면 하드코딩된 스타일이 이어져 레이아웃이 깨집니다.
RTL 원본 콘텐츠에서 흔히 볼 수 있는 항목:
<div dir="rtl" lang="he">— 전체 섹션에 RTL 방향을 강제하고 언어를 히브리어로 표시합니다<p dir="rtl">— 개별 단락에 RTL 정렬을 강제합니다<h2 style="text-align: right;">— 제목에 오른쪽 정렬을 하드코딩합니다
이 콘텐츠를 영어(또는 다른 LTR 언어)로 번역하면 텍스트는 영어가 되지만 레이아웃은 여전히 오른쪽에서 왼쪽으로 렌더링되어 제목 정렬 오류, 텍스트 흐름 역전, 서식 깨짐이 발생합니다.
번역 전에 원본 콘텐츠에서 이러한 속성을 확인하고 제거하세요. 개별 콘텐츠 블록에 포함하는 대신 테마와 WordPress 언어/로케일 설정이 전역적으로 방향과 정렬을 제어하도록 하세요.
Elementor Theme Builder 템플릿 처리하기
Elementor의 Theme Builder를 사용하여 전역 템플릿(헤더, 푸터, 단일 게시물 템플릿, 아카이브 템플릿 등)을 생성하는 경우, 번역 중 이러한 템플릿이 어떻게 처리되는지 이해하는 것이 중요합니다.
번역되는 항목:
- 메뉴: 메뉴 항목이 번역된 메뉴 버전으로 교체됩니다
- 동적 콘텐츠: 게시물/페이지에서 가져온 콘텐츠가 번역됩니다(소스 콘텐츠가 번역되므로)
번역되지 않는 항목:
- 하드코딩된 텍스트: 템플릿에 직접 추가된 텍스트(동적 콘텐츠에서 온 것이 아닌)는 번역되지 않습니다
- 위젯 텍스트: 제목, 단락, 버튼 등의 위젯 텍스트는 원본 언어로 남습니다
- 사용자 지정 HTML: 사용자 지정 HTML이나 코드 블록은 번역되지 않습니다
예:
이 Elementor 헤더 템플릿에는 하드코딩된 텍스트("Our Phone Number:")가 포함되어 있습니다.

해결책:
템플릿은 다음만 사용하도록 설계하세요.
- 메뉴(자동으로 교체됨)
- 이미지(언어에 의존하지 않음)
- 동적 콘텐츠(번역된 게시물에서 가져옴)
- 템플릿에 하드코딩된 텍스트, 제목 또는 설명을 직접 추가하지 않습니다
이렇게 하면 사이트의 전역 요소(헤더, 푸터 등)가 모든 언어에서 올바르게 작동합니다.
Advanced Custom Fields(ACF) 설정하기
**Advanced Custom Fields(ACF)**를 사용 중인 경우, 번역 중 각 필드가 어떻게 처리되어야 하는지 설정해야 합니다. ACF 필드에는 다양한 유형의 콘텐츠가 포함될 수 있으며, 각 유형에 따라 다른 처리가 필요할 수 있습니다.
Gato Translate 섹션에서 ACF 필드를 다음 옵션 중 하나로 설정할 수 있습니다.
-
(Do nothing): 필드가 번역 또는 동기화에서 건너뜁니다
-
Translate: 필드 콘텐츠가 대상 언어로 번역됩니다
- 사용 대상: 텍스트 필드, 텍스트 영역 필드, WYSIWYG 필드, 번역 가능한 텍스트를 포함하는 모든 필드
-
Copy: 필드 값이 그대로 번역에 복사됩니다(번역되지 않음)
- 사용 대상: 숫자, 날짜, 체크박스, true/false 필드, 번역하지 않아야 하는 모든 필드
-
Translate Reference: 필드가 다른 엔티티(게시물, 페이지, 사용자 등)를 참조하며, 참조가 번역된 버전을 가리키도록 업데이트됩니다
- 사용 대상: Post Object, Page Link, Relationship, User, Taxonomy 필드

필드 그룹은 게시물과 페이지뿐만 아니라 다음에도 적용될 수 있습니다.
- 카테고리
- 태그
- 미디어 항목
- 사용자
- 사용자 지정 분류체계
- 사용자 지정 게시물 유형
이러한 엔티티에 적용되는 필드 그룹의 번역 설정도 반드시 구성하세요!
Polylang Pro를 사용 중인 경우 Gato AI Translations가 대신 번역을 처리할 수 있도록 Polylang의 ACF 번역 기능을 비활성화해야 합니다.
Meta Box 설정하기
Meta Box를 사용 중인 경우(또 다른 인기 있는 사용자 지정 필드 플러그인), 설정 프로세스는 ACF와 유사합니다. Meta Box 필드도 번역, 복사, 또는 참조 번역을 위해 설정해야 합니다.
Gato Translate 섹션에서 Meta Box 필드를 다음 옵션 중 하나로 설정할 수 있습니다.
- (Do nothing): 필드가 번역 또는 동기화에서 건너뜁니다
- Translate: 필드 콘텐츠가 번역됩니다
- Copy: 필드 값이 그대로 복사됩니다
- Translate Reference: 필드 참조가 번역된 엔티티를 가리키도록 업데이트됩니다

Gato AI Translations가 대신 번역을 처리할 수 있도록 Polylang의 Meta Box 번역 기능을 비활성화해야 합니다.
사용자 지정 메타 필드 설정하기
ACF, Meta Box, SEO 플러그인 외에도 사이트에는 다음과 같은 사용자 지정 메타 필드가 있을 수 있습니다.
- 사용자 지정 코드
- 기타 플러그인
- WordPress 사용자 지정 필드(기본 Custom Fields 메타박스)
이러한 메타 필드는 플러그인 설정에서 수동으로 설정해야 합니다.
사용자 지정 메타 키 파악하기:
-
콘텐츠 내보내기
- WordPress의 Tools > Export로 이동합니다
- 번역할 모든 콘텐츠 유형을 내보냅니다
- 모든 콘텐츠와 메타데이터를 포함하는 XML 파일이 생성됩니다
-
내보내기 파일 분석하기
- XML 파일을 텍스트 편집기에서 엽니다
<wp:postmeta>태그를 검색합니다- 모든 고유한 메타 키를 목록화합니다
-
알려진 필드 제외하기
- ACF 필드 제거(보통 필드 그룹 이름이 접두사로 붙음)
- Meta Box 필드 제거
- WordPress 코어 필드 제거(예:
_edit_last,_wp_old_slug,_thumbnail_id) - SEO 플러그인 필드 제거(지원되는 SEO 플러그인을 사용하는 경우)
-
남은 항목 파악하기
- 이것이 사용자 지정 메타 필드입니다
- 각 필드에 무엇이 포함되어 있고 어떻게 처리해야 하는지 결정합니다
번역 필요성 결정하기:
각 사용자 지정 메타 필드에 대해 다음을 결정합니다.
- Translate: 번역 가능한 텍스트(제목, 설명, 콘텐츠)가 포함되어 있습니다
- Copy: 번역하지 않아야 할 데이터(ID, 숫자, 설정)가 포함되어 있습니다
- Translate Reference: 번역된 버전을 가리켜야 하는 엔티티 ID가 포함되어 있습니다
플러그인에서 설정하기:
- 설정의 Meta Configuration 탭으로 이동합니다
- 번역 옵션(Translate/Copy/Translate Reference)을 선택합니다
- 사용자 지정 메타 키 이름을 추가합니다(정확한 일치 또는 정규식 패턴 사용)

번역 프로세스 실행하기
모든 준비가 완료되었으니 이제 번역을 실행할 시간입니다.
먼저 프로세스 테스트하기
웹사이트 전체를 번역하기 전에 먼저 소규모로 프로세스를 테스트하는 것이 중요합니다. 이 접근 방식은 시간을 절약하고 모든 콘텐츠에 문제가 복제되는 것을 방지합니다.
권장 테스트 워크플로는 다음과 같습니다.
-
단일 게시물과 하나의 언어로 시작하기
- 다양한 콘텐츠 유형(텍스트, 이미지, 링크 등)을 포함하는 대표적인 게시물을 선택합니다
- 잘 이해하는 하나의 대상 언어로 번역합니다
- 번역을 상세히 검증합니다: 모든 블록, 모든 링크, 모든 이미지, 모든 메타데이터를 확인합니다
- 문제가 발견되면(예: 블록이 번역되지 않음, 링크가 교체되지 않음, 서식이 깨짐) 계속 진행하기 전에 수정합니다. 지금 수정하지 않으면 모든 언어에 동일한 문제가 복제됩니다.
-
몇 가지 게시물로 확장하기
- 첫 번째 번역이 완벽해지면 동일한 언어로 3~5개의 게시물을 더 번역합니다
- 각 게시물을 철저히 검증합니다
- 이를 통해 패턴이나 반복되는 문제를 파악할 수 있습니다
-
추가 언어로 테스트하기
- 여러 언어로 번역하는 경우 다른 언어 쌍에서도 모든 것이 작동하는지 확인하기 위해 한 가지 더 테스트합니다
-
그런 다음 대량 번역 진행하기
- 모든 것이 올바르게 작동한다고 확신이 되면 나머지 웹사이트 번역을 진행합니다
이 점진적인 접근 방식은 설정 문제나 콘텐츠 문제를 조기에 발견하여 수정이 쉬운 단계에서 처리할 수 있게 합니다.
번역 순서
다양한 콘텐츠 유형을 번역하는 순서가 중요합니다. 특히 콘텐츠가 다른 콘텐츠를 참조하는 경우에는 더욱 그렇습니다.
참조 문제를 방지하기 위해 다음 특정 순서로 콘텐츠를 번역하세요.
-
Users
- 사용자 설명이 블록에 포함될 수 있습니다
-
Taxonomies(태그/카테고리)
- 태그와 카테고리(및 사용자 지정 분류체계)는 종종 게시물에서 참조되므로, 게시물을 번역하기 전에 존재해야 합니다
-
Media
- 미디어 항목(이미지, 동영상, 문서)은 게시물에서 특성 이미지나 갤러리 이미지로 참조되므로, 게시물보다 먼저 번역합니다
-
사용자 지정 게시물 유형
- 게시물, 페이지, 기타 CPT를 번역합니다
- 중요: 하나의 CPT가 다른 CPT를 참조하는 경우, 역 의존성 순서로 번역합니다
- 예: 게시물이 재사용 블록을 사용하는 경우, 재사용 블록을 먼저 번역한 다음 게시물을 번역합니다
-
메뉴
- 게시물, 페이지, 카테고리를 참조하므로 메뉴를 마지막으로 번역합니다
슬러그를 번역할지 여부 결정하기
게시물 및 분류체계 슬러그를 대상 언어로 번역하는 것은 라틴 문자 언어(프랑스어, 독일어, 스페인어 등)에서는 흔히 바람직합니다. 경로가 읽기 쉽고 URL에 지역화된 키워드를 반영할 수 있습니다.
라틴 문자가 아닌 스크립트(히브리어, 일본어, 중국어 등)에서는 지역화된 슬러그가 혼란을 초래하는 경우가 많습니다. 어색한 음역, 매우 긴 세그먼트, 퍼센트 인코딩, 또는 공유하고 비교하기 어려운 URL이 될 수 있습니다. 많은 팀이 그러한 언어에는 라틴 문자(또는 원본 언어) 슬러그를 유지하고 표시되는 지역화된 이름에는 번역된 제목을 사용합니다.
슬러그 번역은 사이트 전체의 단일 온/오프 스위치가 아닌 대상 언어별 정책으로 처리하세요.
- 언어를 그룹으로 분류 — 예: 라틴어 대상에는 "슬러그 번역", 중국어, 일본어, 히브리어 등에는 "슬러그 번역 안 함"
- 번역 배치를 별도로 실행 — 슬러그 번역을 활성화하여 하나의 그룹을 대량 번역하고, 슬러그 번역을 비활성화하여 다른 그룹의 배치를 실행합니다
- 각 배치 설정 — Gato Translate (Custom) 경유(아래 번역 실행 방법에서 설명): 슬러그를 변경하지 않고 유지하려는 배치에서는 Translate custom post slugs? 및 Translate tag and category slugs? 같은 옵션을 비활성화합니다. 설정이 기대하는 결과와 일치하도록 실행당 하나의 정책(예: 하나의 언어 또는 동일한 규칙을 공유하는 언어 그룹)을 목표로 합니다.
스크립트화된 반복 가능한 워크플로의 경우, WP-CLI는 호출마다 --translate-slugs=true 또는 --translate-slugs=false를 지원합니다.
2단계 번역
내부 링크 교체 또는 엔티티 참조 번역을 활성화한 경우, 2단계로 번역해야 할 수 있습니다.
단계 1: 속성만 번역하기
- 콘텐츠와 메타를 제외하도록 번역을 설정합니다. 즉, 속성만(제목/이름과 슬러그) 번역합니다
- 번역을 실행합니다

첫 번째 단계를 실행하면 번역된 게시물이 번역된 URL과 ID로 생성되어 내부 링크 URL과 엔티티 참조 ID를 대상 언어로 확인할 수 있게 됩니다.
단계 2: 콘텐츠와 메타만 번역하기
- 콘텐츠와 메타만 번역하도록 번역을 설정합니다(즉, 속성 제외)
- 번역을 다시 실행합니다

두 번째 단계를 실행하면 나머지 콘텐츠와 메타가 번역되고, 내부 링크 URL과 엔티티 참조 ID가 번역된 버전으로 교체됩니다.
번역 실행 방법
옵션 1: WordPress 관리 화면(일괄 작업)
- 콘텐츠 목록(게시물, 페이지, 미디어 등)으로 이동합니다
- 번역하려는 항목을 선택합니다
- 일괄 작업 드롭다운에서 Gato Translate를 선택합니다
- 적용을 클릭합니다

메뉴는 다른 방법으로 번역됩니다. 메뉴 편집기에서 저장하면 자동으로 번역됩니다.
대안: Gato Translate (Custom)
더 세밀한 제어를 위해 해당 번역 실행의 설정을 재정의할 수 있는 **Gato Translate (Custom)**을 사용합니다.

이렇게 하면 해당 번역 실행에 특정 옵션을 지정할 수 있는 사용자 지정 설정 페이지가 열립니다.

옵션 2: WP-CLI(대규모 배치 처리)
수백 또는 수천 개의 항목이 있는 대규모 웹사이트에는 WP-CLI가 편리한 대안입니다.
명령줄에서 배치 번역을 실행하면 다른 작업을 하면서 백그라운드에서 번역을 실행할 수 있습니다.

번역 로그 확인하기
번역이 실패하거나(API가 오프라인 상태, API 크레딧 부족 등) 경고가 생성되면 플러그인 메뉴에 알림 배지가 표시됩니다.

무슨 일이 있었는지 이해하기 위해 번역 로그를 확인하세요.
- 플러그인 메뉴의 Logs 메뉴 항목으로 이동합니다
- 오류 또는 경고를 확인합니다
- 계속 진행하기 전에 문제를 수정합니다


실패한 번역 재실행하기
번역이 실패할 때마다 해당 항목과 언어만 번역을 다시 트리거하여 성공한 번역에 대한 API 크레딧을 소비하지 않아도 됩니다.
실패한 번역은 Polylang 편집 아이콘에 노란색 배경으로 강조 표시됩니다.

실패한 번역이 있는 항목만 표시하도록 필터링할 수 있습니다.

실패한 항목만 재번역하려면 Process failed translations only 옵션이 있는 Gato Translate (Custom) 일괄 작업을 사용합니다.


번역 품질 및 완성도 검증하기
콘텐츠를 번역한 후 번역이 성공적이고 품질이 좋은지 검증하는 것이 중요합니다. 모든 것이 완벽하게 작동했다고 가정하지 말고 시간을 내어 확인하세요.
편집기에서 검증:
WordPress 편집기에서 번역된 게시물을 열어 확인하세요.
-
콘텐츠 번역
- 모든 텍스트가 번역되었나요?(제목뿐만 아니라)
- 모든 블록/위젯/요소가 번역되었나요?
- Gutenberg 블록, Elementor 위젯, Bricks 요소를 확인합니다
- 서식이 유지되었는지 확인합니다
-
사용자 지정 필드
- ACF 필드가 올바르게 번역/복사/참조되었나요?
- Meta Box 필드가 적절하게 처리되었나요?
- 사용자 지정 메타 필드가 올바르게 설정되었나요?
-
SEO 메타데이터
- 메타 제목이 번역되었는지 확인합니다
- 메타 설명이 번역되었는지 확인합니다
- Open Graph 태그가 번역되었는지 확인합니다
- 기타 SEO 플러그인 필드를 검토합니다
-
미디어
- 특성 이미지가 올바르게 설정되었나요?
- 콘텐츠의 이미지가 번역된 버전을 가리키나요(해당되는 경우)?
- 이미지 대체 텍스트가 번역되었나요?
-
링크
- 내부 링크가 번역된 버전을 가리키나요?
- 외부 링크가 올바르게 유지되었나요?
- 카테고리/태그 링크가 작동하나요?
프런트엔드 검증:
브라우저에서 번역된 게시물을 보고 확인하세요.
-
시각적 외관
- 페이지가 올바르게 표시되나요?
- 레이아웃이 유지되었나요?
- 이미지가 올바르게 표시되나요?
- 스타일링이 올바른가요?
-
템플릿 적용
- 올바른 템플릿이 사용되고 있나요?
- 헤더/푸터가 올바르게 표시되나요?
- 사이드바/위젯이 표시되나요?
- 메뉴가 번역된 버전을 표시하나요?
-
기능성
- 모든 링크가 작동하나요?
- 양식이 작동하나요?
- 인터랙티브 요소가 작동하나요?
- 내비게이션이 올바른가요?
-
언어별 요소
- RTL 언어의 경우, 레이아웃이 올바른가요?
- 폰트가 올바르게 렌더링되나요?
- 텍스트 방향이 올바른가요?
번역 품질:
최신 AI 번역은 일반적으로 매우 좋지만 다음 사항은 계속 검토해야 합니다.
-
이해할 수 있는 언어
- 알고 있는 언어의 번역을 읽어봅니다
- 정확성, 톤, 스타일을 확인합니다
- 기술 용어가 올바른지 확인합니다
- 브랜드 목소리가 유지되었는지 확인합니다
-
이해하지 못하는 언어
- 말하지 못하는 언어는 원어민 화자에게 검토를 요청하는 것을 고려합니다
- 이것은 자신의 언어와 크게 다른 언어(예: 영어에서 한국어, 중국어, 아랍어)에 특히 중요합니다
- 간단한 검토만으로도 주요 문제를 발견할 수 있습니다
- 중요한 콘텐츠에는 전문적인 교정이 권장됩니다
-
도메인 특화 콘텐츠
- 기술 콘텐츠는 전문가 검토가 필요할 수 있습니다
- 법률/의료 콘텐츠는 전문가의 검토가 필요합니다
- 마케팅 콘텐츠는 브랜드 목소리 조정이 필요할 수 있습니다
"유효하지 않은 콘텐츠" 블록 복구하기
많은 태그와 속성을 포함하는 큰 HTML 블록을 번역할 때, AI 서비스가 블록의 출력을 깨뜨리는 응답을 반환할 수 있습니다.
예를 들어, 다음과 같이 ChatGPT 5.0 mini를 사용하여 매우 큰 HTML 블록을 포함하는 core/paragraph 블록을 번역하는 경우:
<!-- wp:paragraph -->
<p>
Pédagogie:
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark></mark></mark><strong><br></strong>Support :
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark></mark></mark><br>Coûts :
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark></mark></mark><br>Débouchés :
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★★★
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">☆</mark></mark></mark></mark></mark>
</p>
<!-- /wp:paragraph -->...응답이 원본 콘텐츠에 없는 추가 <mark> 태그를 도입할 수 있습니다.
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">★★
+<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-amber-color">WordPress 편집기에서 게시물을 편집할 때 해당 블록이 렌더링에 실패하고 "Block contains unexpected or invalid content"라는 메시지가 표시될 수 있습니다.

Attempt recovery를 클릭하면 대부분의 경우 문제가 해결됩니다.
가능하면 HTML 블록 사용을 피하세요. HTML 블록 전체를 단일 단위로 번역해야 합니다.
대신 속성을 가진 사용자 지정 블록을 사용하면 번역 가능한 문자열을 식별, 추출, 번역할 수 있으며 서식이 깨지지 않습니다.
손상된 데이터 오류 해결하기
번역 중 콘텐츠에 손상되거나 오래된 데이터가 포함되어 오류가 발생하는 경우가 있습니다. 이는 일반적으로 다음과 같은 경우에 발생합니다.
- 게시물 유형이 이전에는 기능(부모 게시물 등)을 지원했지만 더 이상 지원하지 않는 경우
- 콘텐츠가 더 이상 존재하지 않는 엔티티를 참조하는 경우
- 마이그레이션이나 플러그인 변경으로 인한 데이터베이스 불일치
- 사용자 지정 필드의 고아 관계
오류 이해하기:
로그에 다음과 같은 오류가 표시되면:
2025-10-25T03:40:38+00:00 Error [Query "create-missing-translation-media"] Execution with errors: 🔴 Object with ID '26061' (of type 'GenericCustomPost') cannot be loaded. Please check if referencing this ID is stale data (i.e. still stored on the WordPress database, but pointing to a non-existing object) and, if so, remove it or fix it.이것이 의미하는 바:
- 콘텐츠가 ID 26061의 엔티티(게시물, 페이지, 미디어 등)를 참조합니다
- 해당 엔티티가 더 이상 데이터베이스에 존재하지 않습니다
- 플러그인이 참조를 확인할 수 없어 번역할 수 없습니다
수정 방법:
방법 1: WordPress 편집기(가장 간단)
- 번역에 실패하는 게시물/항목을 엽니다
- 손상된 참조를 파악합니다(사용자 지정 필드, 관계 등 확인)
- 참조를 제거하거나 수정합니다
- 게시물을 저장합니다
- 다시 번역을 시도합니다
방법 2: 데이터베이스 정리
편집기에서 수정할 수 없는 경우:
- 잘못된 참조를 포함하는 필드를 파악합니다
- 데이터베이스 도구 또는 플러그인을 사용하여 오래된 데이터를 제거합니다
- 주의: 데이터베이스 변경 전에 항상 백업을 하세요
방법 3: Gato GraphQL(고급 사용자용)
Gato AI Translations for Polylang은 내부적으로 Gato GraphQL을 사용하므로 GraphQL 쿼리를 실행하여 손상된 데이터를 프로그래밍 방식으로 수정할 수 있습니다.
-
먼저 GraphQL 쿼리를 사용하여 문제가 있는 항목의 ID를 가져옵니다.
-
그런 다음 뮤테이션을 사용하여 문제를 수정합니다. 예를 들어, 미디어 항목에서 부모 참조를 제거하려면:
mutation {
updateMediaItem( input: { id: 26066, customPostID: null } ) {
status
errors {
__typename
...on GenericErrorPayload {
message
}
}
}
}수정할 수 없는 경우:
손상된 데이터를 정리할 수 없는 경우 다음이 필요할 수 있습니다.
- 게시물/항목을 처음부터 다시 생성합니다
- 콘텐츠를 내보내고, 정리하고, 다시 가져옵니다
- 복잡한 케이스는 지원팀에 연락하여 도움을 요청합니다
번역된 항목을 설정에 통합하기
콘텐츠를 번역한 후 새로 생성된 번역 항목을 웹사이트 설정에 통합해야 할 수 있습니다.
ACF 필드 그룹 업데이트하기
ACF 필드 그룹은 특정 게시물, 페이지, 카테고리, 태그 또는 기타 엔티티에 할당할 수 있습니다. 콘텐츠를 번역하면 번역된 버전도 동일한 필드 그룹에 할당해야 할 수 있습니다.
번역 후 ACF 필드 그룹 할당을 업데이트하여 번역된 버전을 포함시킵니다.
- ACF 플러그인 메뉴의 Field Groups 메뉴 항목으로 이동합니다
- 특정 엔티티에 적용되는 필드 그룹을 편집합니다
- Location Rules에서 번역된 버전을 추가합니다
- 필드 그룹을 저장합니다
예:
필드 그룹이 원본 언어의 특정 게시물 **"Hello World"**에 적용됩니다.

게시물을 번역한 후 번역된 버전(스페인어의 **"Hola Mundo"**와 중국어의 "你好世界")도 동일한 필드 그룹에 할당되어야 합니다.

완료되었습니다!
번역 프로세스를 완료하셨습니다. 축하드립니다! 👏
결론
이 종합 가이드를 통해 WordPress 웹사이트를 성공적으로 번역할 수 있기를 바랍니다. 자세한 내용은 Gato AI Translations for Polylang 문서를 확인하세요.