워드프레스 블로그에 Polylang 무료판으로 영어판을 붙였습니다. 한국어 글은 기존 주소 그대로 두고, 영어 글은 /en/ 아래에 올리는 구조입니다. 핵심 설정은 “기본 언어는 주소에 표시하지 않기” 하나이고, 영어 글을 한국어 원문의 번역본으로 연결하면 검색엔진용 hreflang 태그가 자동으로 들어갑니다. 지금 영어 글 6편이 올라가 있습니다.
한눈에 보기
- 왜: 해외에서도 검색되는 글이 있어서 (RX1 수리, 한국 애플페이, 예스24 라이브홀 등)
- 플러그인: Polylang 3.9 무료판 (PHP 7.4, 워드프레스 6.8 이상)
- 핵심 설정: 기본 언어 한국어 + 주소에 기본 언어 숨기기 → 기존 주소 유지, 영어는
/en/ - 꺼 둔 것: 브라우저 언어 자동 이동, 미디어 번역
- 막힌 점:
/en/404, 언어마다 슬러그·카테고리 따로, 블록 테마의 한국어 문구 - 결과: hreflang 자동, 한국어 첫 화면·피드에는 영어 글이 섞이지 않음

왜 영어판을 만들었나
블로그 글 중에는 한국 사람보다 해외에서 더 찾을 만한 글이 있습니다. 소니 RX1의 E:61 에러는 전 세계 RX1 사용자의 고질병이고, 한국에서 애플페이가 잘 안 되는 이유나 예스24 라이브홀 가는 길은 한국에 오는 여행객과 K-pop 팬이 찾는 정보입니다.
방법은 몇 가지를 놓고 고민했습니다.
| 방법 | 장점 | 단점 |
|---|---|---|
| 영어 글을 그냥 올리기 | 플러그인이 필요 없음 | 한국어 첫 화면에 섞이고, 어느 글이 어느 글의 번역인지 검색엔진이 모름 |
| Polylang 무료판 | 언어별 주소·첫 화면·hreflang 자동, 무료 | 언어마다 슬러그를 따로 써야 하고, 블록 테마 문구 번역은 안 됨 |
| WPML 등 유료 플러그인 | 기능이 많음 | 유료, 개인 블로그엔 과함 |
| 영어 사이트를 따로 만들기 | 완전히 분리 | 관리할 사이트가 두 개 |
글 몇 편으로 시작하는 개인 블로그라서 Polylang 무료판을 골랐습니다.
설치 전에 확인한 것
- 백업: 언어 정보가 모든 글·카테고리·태그에 붙기 때문에, 설치 전에 DB를 백업했습니다.
- 요구 사항: Polylang 3.9는 PHP 7.4, 워드프레스 6.8 이상입니다.
- 캐시: 페이지 캐시 플러그인(W3 Total Cache)을 쓰고 있어서, 방문자 브라우저 언어에 따라 첫 화면을 바꾸는 기능은 쓰지 않기로 했습니다. 캐시된 페이지와 섞이면 엉뚱한 언어가 보일 수 있습니다.
Polylang 설정 순서
- 플러그인 설치 → 활성화
- 언어 → 언어에서 한국어를 먼저 추가합니다. 처음 추가한 언어가 기본 언어가 됩니다. 그다음 English를 추가합니다.
- 언어가 없는 글·카테고리가 있다는 안내가 뜨면, 전부 기본 언어(한국어)로 지정합니다. 제 블로그는 글·페이지 38개, 카테고리·태그 179개였습니다.
- 언어 → 설정 → URL 수정에서 “디렉터리 이름으로 언어 정하기”와 “기본 언어는 URL에 언어 정보 숨기기“를 고릅니다. 그래야 한국어 글 주소가 하나도 안 바뀝니다.
- 브라우저 언어 감지와 미디어 번역은 끕니다. (3.9에서는 둘 다 기본으로 꺼져 있었습니다)
- 설정 → 고유주소에서 아무것도 바꾸지 말고 저장을 한 번 누릅니다. 이걸 안 하면
/en/주소가 404가 날 수 있습니다(아래 “막혔던 점”).

영어 글 올리고 번역본으로 연결하기
- 언어 지정: 글 편집 화면의 언어 패널에서 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 한국어 ↔ 영어)
<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/주소가 같이 들어가서, 서치 콘솔에서 새 주소만 색인 요청했습니다. - 기존 한국어 글 주소는 하나도 바뀌지 않았고, 설치 후 모든 주요 페이지가 정상으로 열리는 것을 확인했습니다.


지금 올라간 영어 글은 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)
댓글 남기기