본문으로 바로가기

워드프레스 번역 이해

category 워드프레스/WP 팁&테크 2015. 9. 11. 11:00

워드프레스에 관심을 가져본 사람이라면 애매한 한글 번역과 한글화가 안된 플러그인들로 인해 고민이 생길때가 있습니다. 관련 자료들을 검색해보고 알게된 사항들을 정리해 봅니다.

워드프레스의 번역 시스템 이해

워드프레스는 언어파일을 이용해 다국어를 지원하는 시스템을 갖추고 있다. 이는 기본적인 워드프레스 언어파일과 플러그인 언어파일로 나눌 수 있으며, 해당 언어파일들을 번역하여 교체하면 원하는 문구로 수정이 가능하다.

워드프레스의 번역은 개인의 기여(contribution-기부)만으로 완성되고 있고 Translating WordPress에서 기여 작업 현황을 확인할 수 있다. 워드프레스의 번역은 GlotPress라는 오픈 소스 엔진을 사용하고 있으며, 이에 대한 방법을 GlotPress (translate.wordpress.org)에서 설명하고 있다.

위에서 말하는 번역은 워드프레스 공식버전에 포함되는 번역이고, 검수를 거쳐 반영된다. 개인의 호불호에 따라 번역을 하고 공식적으로 반영할순 없는 노릇이라 이미 배포된 파일을 직접 수정하는 방법이 필요로 하다.

언어 파일 위치

수정하고 싶은 번역 부분이 있다면 해당 번역 부분을 포함하는 언어 파일을 찾아야 한다.

언어 파일 위치 : wp-content/languages

기본적인 번역 파일들은 위의 디렉토리에 위치하나 꼭 그런것 만은 아니고 테마나 플러그인등 각각의 디렉토리에 language 혹은 lang와 같은 이름으로 번역 파일들이 따로 존재하기도 한다. 한국어 번역 파일들은 ko_KR.poko_KR.mo와 같은 형식을 지니며 language 디렉토리에는 기본적으로 아래와 같은 파일들을 포함한다.

  • ko_KR.po, ko_KR.mo : 일반적인 워드프레스 파일의 번역은 이 곳에 존재한다.
  • admin-ko_KR.po, admin-ko_KR.mo : 관리자 패널에 대한 번역은 이 곳에 존재한다.
  • admin-network-ko_KR.po, admin-network-ko_KR.mo : 네트워크 관리에 대한 번역은 이 곳에 존재한다.
  • continents-cities-ko_KR.po, continents-cities-ko_KR.mo : 대륙 및 도시에 대한 번역은 이 곳에 존재한다.
  • plugins/플러그인명-ko_KR.po, plugins/플러그인명-ko_KR.mo : 플러그인 디렉토리안에 플러그인에 대한 번역 파일이 존재하며 존재하지 않을 수도 있다. 플러그인들은 이 language 디렉토리의 plugins 디렉토리에 언어 파일을 생성하지 않고 wp-content/plugins/플러그인명 디렉토리의 language 디렉토리나 lang 디렉토리에 넣어두곤 한다.
  • theme/테마명-ko_KR.po, theme/테마명-ko_KR.mo : 테마의 번역 파일은 이 곳에 존재한다.

언어 파일 확장자

언어 파일의 확장자는 *.po, *.pot, *.mo와 같다. 확장자가 *.po*.mo인 파일만 존재하는 경우도 많으며, 각각은 아래와 같은 용도가 있다.

  • POT (Portable Object Template) : 이 파일은 파일에 존재하는 모든 메세지를 가져온다. 워드프레스 파일을 들여다 보면 __('임의의 문자열')_e('임의의 문자열')등이 자주 등장하는데 여기에 있는 영어 메세지를 검색해서 찾아둔 것이 POT 파일이다.
  • PO (Portable Object) : POT 파일에서 불러온 모든 메세지를 번역한 파일로 이 것을 원하는 문구로 수정하면 된다.
  • MO (Machine Object) : PO 파일을 바이너리 파일로 컴파일하여 MO 파일을 생성한다. 이 파일을 워드프레스에서 불러들이게 된다.

언어 파일 번역 원리

언어 파일이 생성되는 원리는 워드프레스의 소스 코드들에 특정 명령어를 사용하여 출력할 문구를 작성하는 것이 기초가 된다. 아래의 구문에선 "Site Name"이라는 부분이 그렇게 작성되었다.

echo '<label for="blogname">' . __('Site Name:') . '</label>';

__('출력할 문구') 와 같은 형식이 사용되며 이를 POT 파일에서 수집하게 되고 이를 번역하여 PO 파일과 MO 파일을 만들게 된다.

위와 같이 번역이 가능하도록 작성되는 코드들을 워드프레스에서는 Internationalization(국제화)라고 하며, 번역된 언어가 표시되는 것을 Localization(현지화)라고 한다. 워드프레스에 등록되는 플러그인들은 기본적으로 이런 국제화를 대비하여 작성되어야 등록이 된다.

언어 파일의 파일명

번역된 파일이 제대로 작동하기 위해서는 파일명에도 유의해야 합니다. 플러그인이나 테마들 같은 경우에 자신의 이름을 나타내는 문자들이 존재한다.

load_plugin_textdomain( 'akismet' );

이런 고유의 이름을 가지고 있기에 이에 대한 언어 파일들도 akismet-ko_KR.po 와 같은 파일명을 가지게 되며 뒤에 붙는 ko_KR은 사용하게 되는 사이트 언어와 관련이 있다. 워드프레스는 사이트 언어와 같은 언어 파일이 있다면 이를 로딩하여 보여주게 된다.

워드프레스 번역 유의점

워드프레스는 업데이트가 손쉬운 반면 업데이트로 인한 번역 파일 관리는 까다로운 편이다. 가장 손쉽게 Poedit를 이용해 PO 파일들을 수정하여 MO 파일로 만들 수 있지만 업데이트시에 이 파일들이 변경될 수 있기때문에 백업이 필요하고 백업을 하더라도 교체된 번역 파일을 다시 수정해야 하는 번거로움을 피할 수 없다.

관련하여 플러그인을 찾아보고 있으며 업데이트가 진행될때 변경점들이 유지되는지 살펴볼 예정이다.

이후에는 Poedit 사용법 및 번역관련 플러그인에 대하여 알아본다.