워드프레스 Polylang으로 영어판 만들기 – 기존 주소 그대로 다국어 블로그

워드프레스 블로그에 Polylang 무료판으로 영어판을 붙였습니다. 한국어 글은 기존 주소 그대로 두고, 영어 글은 /en/ 아래에 올리는 구조입니다. 핵심 설정은 “기본 언어는 주소에 표시하지 않기” 하나이고, 영어 글을 한국어 원문의 번역본으로 연결하면 검색엔진용 hreflang 태그가 자동으로 들어갑니다. 지금 영어 글 6편이 올라가 있습니다.

한눈에 보기

  • 왜: 해외에서도 검색되는 글이 있어서 (RX1 수리, 한국 애플페이, 예스24 라이브홀 등)
  • 플러그인: Polylang 3.9 무료판 (PHP 7.4, 워드프레스 6.8 이상)
  • 핵심 설정: 기본 언어 한국어 + 주소에 기본 언어 숨기기 → 기존 주소 유지, 영어는 /en/
  • 꺼 둔 것: 브라우저 언어 자동 이동, 미디어 번역
  • 막힌 점: /en/ 404, 언어마다 슬러그·카테고리 따로, 블록 테마의 한국어 문구
  • 결과: hreflang 자동, 한국어 첫 화면·피드에는 영어 글이 섞이지 않음
Polylang으로 만든 한국어·영어 구조도: 한국어는 기존 주소, 영어는 /en/ 아래, 두 글은 hreflang으로 연결
한국어는 기존 주소 그대로, 영어는 /en/ 아래

왜 영어판을 만들었나

블로그 글 중에는 한국 사람보다 해외에서 더 찾을 만한 글이 있습니다. 소니 RX1의 E:61 에러는 전 세계 RX1 사용자의 고질병이고, 한국에서 애플페이가 잘 안 되는 이유나 예스24 라이브홀 가는 길은 한국에 오는 여행객과 K-pop 팬이 찾는 정보입니다.

방법은 몇 가지를 놓고 고민했습니다.

방법장점단점
영어 글을 그냥 올리기플러그인이 필요 없음한국어 첫 화면에 섞이고, 어느 글이 어느 글의 번역인지 검색엔진이 모름
Polylang 무료판언어별 주소·첫 화면·hreflang 자동, 무료언어마다 슬러그를 따로 써야 하고, 블록 테마 문구 번역은 안 됨
WPML 등 유료 플러그인기능이 많음유료, 개인 블로그엔 과함
영어 사이트를 따로 만들기완전히 분리관리할 사이트가 두 개

글 몇 편으로 시작하는 개인 블로그라서 Polylang 무료판을 골랐습니다.

설치 전에 확인한 것

  • 백업: 언어 정보가 모든 글·카테고리·태그에 붙기 때문에, 설치 전에 DB를 백업했습니다.
  • 요구 사항: Polylang 3.9는 PHP 7.4, 워드프레스 6.8 이상입니다.
  • 캐시: 페이지 캐시 플러그인(W3 Total Cache)을 쓰고 있어서, 방문자 브라우저 언어에 따라 첫 화면을 바꾸는 기능은 쓰지 않기로 했습니다. 캐시된 페이지와 섞이면 엉뚱한 언어가 보일 수 있습니다.

Polylang 설정 순서

  1. 플러그인 설치 → 활성화
  2. 언어 → 언어에서 한국어를 먼저 추가합니다. 처음 추가한 언어가 기본 언어가 됩니다. 그다음 English를 추가합니다.
  3. 언어가 없는 글·카테고리가 있다는 안내가 뜨면, 전부 기본 언어(한국어)로 지정합니다. 제 블로그는 글·페이지 38개, 카테고리·태그 179개였습니다.
  4. 언어 → 설정 → URL 수정에서 “디렉터리 이름으로 언어 정하기”와 “기본 언어는 URL에 언어 정보 숨기기“를 고릅니다. 그래야 한국어 글 주소가 하나도 안 바뀝니다.
  5. 브라우저 언어 감지와 미디어 번역은 끕니다. (3.9에서는 둘 다 기본으로 꺼져 있었습니다)
  6. 설정 → 고유주소에서 아무것도 바꾸지 말고 저장을 한 번 누릅니다. 이걸 안 하면 /en/ 주소가 404가 날 수 있습니다(아래 “막혔던 점”).
Polylang 언어 설정 화면 – 한국어(기본 언어, 별표)와 English 두 언어, 언어별 글 수
언어 → 언어: 한국어가 기본 언어(★), English 추가

영어 글 올리고 번역본으로 연결하기

  • 언어 지정: 글 편집 화면의 언어 패널에서 English를 고르고, 번역 칸에 한국어 원문을 연결합니다. 연결해 두면 두 글이 서로를 번역본으로 가리킵니다.
  • 슬러그는 따로: 무료판은 언어가 달라도 같은 슬러그를 쓸 수 없어서 영어 슬러그를 새로 정했습니다. 예: /apple-pay-contactless-korea/ ↔ /en/apple-pay-in-korea/
  • 카테고리·태그도 언어별: 영어 카테고리를 만들고 한국어 카테고리와 번역으로 묶었습니다. IT 리뷰 ↔ Tech Reviews, IT 정보 ↔ Tech Guides, 공연·문화 ↔ Concerts & Culture, 여행 정보 ↔ Travel Guides
  • 사진은 같이 쓰기: 미디어 번역을 꺼 둬서 같은 사진을 두 글에서 쓰고, 영어 글에서는 사진 설명(alt)만 영어로 바꿨습니다.

번역은 직역하지 않고 해외 독자 기준으로 다듬었습니다. 예스24 라이브홀 영어판은 주차보다 지하철·셔틀을 앞으로 옮겼고, 해외에서는 쓸 수 없는 쿠팡 링크는 뺐습니다. 영어 글 끝에는 “한국어 원문의 번역”이라는 한 줄과 원문 링크를 넣었습니다.

글이 많다면: WP-CLI로 한 번에

Polylang 무료판은 REST API로 글의 언어를 정할 수 없어서, 저는 글은 REST로 올리고 언어 지정과 번역 연결은 WP-CLI로 했습니다. Polylang이 제공하는 함수를 그대로 부르면 됩니다.

wp eval '
pll_set_post_language( 499, "en" );                          // 영어 글 ID
pll_save_post_translations( array( "ko" => 412, "en" => 499 ) ); // 원문과 연결
'

막혔던 점

1. /en/ 주소가 404

언어를 추가하고 영어 글을 발행했는데 /en/… 주소가 404였고, 언어 표시가 없는 주소로 들어가면 오히려 /en/으로 넘어갔습니다. 고유주소 규칙에 언어 주소가 아직 안 들어가서 생긴 문제로, 고유주소를 다시 저장(WP-CLI라면 wp rewrite flush)하니 바로 해결됐습니다.

2. 블록 테마의 한국어 문구가 영어 페이지에도 그대로

글과 카테고리는 영어로 나오는데, 테마에 직접 적어 둔 문구(첫 화면 인사말, “최신 글”, 목차, 작성자 소개, 푸터 링크)는 영어 페이지에서도 한국어였습니다. Polylang 무료판은 블록 테마 템플릿 안의 문구를 번역하지 못합니다.

영어 첫 화면 비교: 고치기 전에는 인사말과 최신 글 제목이 한국어, 고친 뒤에는 영어
영어 첫 화면, 고치기 전과 후

그래서 영어 페이지일 때만 테마의 정해진 문구를 영어로 바꾸는 작은 mu-plugin을 만들었습니다. 본문은 건드리지 않고, CSS로 넣은 “작성”, “접기” 같은 글자도 같이 덮어씁니다.

add_filter( 'render_block', function ( $html, $block ) {
	if ( is_admin() || ! function_exists( 'pll_current_language' ) || 'en' !== pll_current_language() ) {
		return $html;
	}
	return strtr( $html, array(
		'>최신 글</h1>' => '>Latest posts</h1>',
		'>글쓴이</p>'  => '>Author</p>',
		// … 테마에 적힌 문구를 하나씩
	) );
}, 20, 2 );

사이트 소개 문구와 Yoast 이동 경로의 “홈”은 언어 → 번역(문자열 번역) 메뉴에서 영어를 넣으면 됩니다.

3. 한국어와 영어를 오가는 링크

헤더 메뉴 끝에 언어 링크를 달되, 번역본이 있는 글과 첫 화면에서만 보이게 했습니다. 번역이 없는 글에서 English를 누르면 영어 첫 화면으로 가 버려서 오히려 헷갈리기 때문입니다.

한국어 RX1 수리 글의 헤더 메뉴 끝에 보이는 English 링크
번역본이 있는 한국어 글: 헤더에 English
영어 애플페이 글의 헤더 메뉴에 영어 카테고리와 한국어 링크가 보이는 화면
영어 글: 영어 카테고리 메뉴와 한국어 링크

확인한 결과

번역으로 연결된 두 글에는 이런 태그가 자동으로 들어갑니다. (RX1 한국어 ↔ 영어)

<link rel="alternate" href="https://lavient.life/sony-rx1-e61-error-repair/" hreflang="ko" />
<link rel="alternate" href="https://lavient.life/en/sony-rx1-e61-error-diy-repair/" hreflang="en" />
  • 영어 페이지는 <html lang="en-US">, 공유용 정보(og:locale)도 en_US로 바뀝니다.
  • 한국어 첫 화면과 피드에는 영어 글이 나오지 않고, 영어 글은 /en/과 /en/feed/에 따로 모입니다.
  • Yoast SEO 사이트맵에도 /en/ 주소가 같이 들어가서, 서치 콘솔에서 새 주소만 색인 요청했습니다.
  • 기존 한국어 글 주소는 하나도 바뀌지 않았고, 설치 후 모든 주요 페이지가 정상으로 열리는 것을 확인했습니다.
lavient.life 한국어 첫 화면 – 헤더 메뉴 끝의 English 링크
한국어 첫 화면 – 헤더 끝에 English
lavient.life 영어 첫 화면 – 영어 카테고리 메뉴와 한국어 링크, 영어 인사말과 글 목록
영어 첫 화면(/en/) – 헤더 끝에 한국어

지금 올라간 영어 글은 RX1 수리, 한국 애플페이, 예스24 라이브홀, 시놀로지 마인크래프트 서버, 아시아나 마일리지 전환, CapsHan 이렇게 6편입니다.

자주 묻는 질문

Polylang 무료판으로 충분한가요?

개인 블로그에서 글 몇 편을 번역하는 정도라면 충분했습니다. 언어별 주소, 첫 화면 분리, hreflang, 언어별 카테고리까지 무료판으로 됩니다. 블록 테마 문구 번역과 같은 슬러그 공유는 무료판에서 안 됩니다.

Polylang을 설치하면 기존 글 주소가 바뀌나요?

“기본 언어는 URL에 언어 정보 숨기기”를 켜 두면 바뀌지 않습니다. 기본 언어(한국어) 글은 주소 그대로이고, 추가한 언어만 /en/처럼 붙습니다.

영어 글 주소가 404가 나요.

설정 → 고유주소에서 저장을 한 번 눌러 보세요. 언어를 추가한 뒤 고유주소 규칙이 새로 만들어지지 않으면 /en/ 주소가 404가 날 수 있습니다.

캐시 플러그인과 같이 써도 되나요?

W3 Total Cache와 함께 쓰고 있는데, 브라우저 언어 감지를 꺼 두니 문제가 없었습니다. 설정을 바꾼 뒤에는 캐시를 한 번 비워 주세요.

최종 확인: 2026-10-22 (Polylang 3.9.0, WordPress 7.1.3)

lavient 아바타

글쓴이

lavient

소소한 일상과 관심 있는 분야를 기록하는 공간입니다. 직접 써 보고, 가 보고, 겪어 본 이야기를 솔직하게 남깁니다.

댓글 남기기