

워드프레스는 전 세계 웹사이트의 43%에 달하는 웹사이트의 핵심입니다. 또한 콘텐츠 관리 시스템(CMS)은 205개의 다른 로케일로 제공됩니다. 글로벌 플랫폼인 만큼 로컬라이제이션이 중요합니다. 워드프레스 i18n 프로세스가 그 핵심입니다.
i18n의 '리프트 피치'는 번역을 위해 테마와 플러그인 코드를 준비할 수 있는 방법입니다. 이를 통해 다른 언어에 정확한 번역을 적용하고 다른 문화 및 로케일에 맞게 조정하여 이점을 얻을 수 있습니다.
이 글에서는 워드프레스 i18n에 대해 더 자세히 설명하고 적용하는 방법을 보여드리겠습니다. 코딩 지식이 어느 정도 있어야 하겠지만, 워드프레스 i18n의 정의와 기능에 대해서도 자세히 설명할 것입니다.
과거 시대의 산물인 '렛 스피크'는 웹 개발계에서 여전히 살아 숨 쉬고 있습니다. 'l33t'와 'n00b'는 많이 볼 수 없지만, 접근성에 대한 논의에서 'a11y'와 같은 숫자는 많이 볼 수 있습니다.
사실 i18n은 또 다른 숫자 이름입니다. 이는 "국제화"를 의미하며, 첫 글자와 마지막 글자가 결합된 숫자와 그 사이에 몇 개의 다른 글자가 있는지를 나타내는 숫자로 구성됩니다. 로컬라이제이션에도 l10n이라는 고유한 숫자가 있습니다. 글로벌라이제이션(g11n), 유럽라이제이션(e13n) 등 다른 숫자도 있습니다.
여기서는 국제화에 대해 구체적으로 살펴보겠습니다. 월드와이드웹 컨소시엄(W3C) 의 공식 브리핑에 따르면 다양한 문화, 지역, 언어 등의 사용자를 위해 설계 및 개발을 통해 간단한 로컬라이제이션이 가능하다고 합니다.
국제화는 번역 프로세스의 첫 단계일 뿐이라는 점에 유의하는 것이 중요합니다. 그 이후에는 적합한 번역 솔루션을 사용하여 로컬라이제이션을 수행하게 됩니다.
i18n 프로세스 자체의 경우, 워드프레스 개발자가 번역가에게 넘기기 전에 여러 단계를 거치게 됩니다. 간단히 말해서 로컬라이제이션 프로세스는 다음과 같이 진행됩니다:
번역가는 .pot 파일을 가져와서 로컬라이제이션을 수행하는 데 사용하므로 절차에서 중요한 부분입니다.
잘 모르시는 분들을 위해 설명하자면, POT 파일은 GNU gettext 도구를 사용하여 생성하는 파일의 한 예입니다. 이것은 1980년대에 개발된 기술이자 소프트웨어로, 오늘날에도 i18n을 수행하는 사람들에게 여전히 엄청난 가치를 제공합니다.
이것이 무엇인지 정확히 아는 것은 워드프레스 i18n을 수행하는 데 필요하지 않지만 일반적인 의미에서 무엇을 하고 무엇을 생성하는지 이해하는 것이 유용합니다. 워드프레스에서 다국어 메시지를 생성하는 데 도움이 되는 프레임워크로 gettext를 생각해 보세요.
gettext와 관련된 여러 파일을 자주 볼 수 있습니다:
이 모든 것을 염두에 두면 i18n 프로세스를 거의 시작할 수 있습니다. 먼저, 앞으로의 작업을 위해 워드프레스 사이트를 준비하는 것이 좋습니다.
워드프레스 코어 파일과 관련된 모든 프로젝트와 마찬가지로 시작하기 전에 설치가 '깨끗한' 상태인지 확인해야 합니다. 또한 최악의 시나리오가 발생하여 복원해야 하는 경우를 대비하여 변경한 내용을 롤백할 수 있는지 확인해야 합니다.
따라서 i18n 프로세스 전에는 거의 타협할 수 없는 두 가지 '사전 단계'가 있습니다:
후자의 경우 유지하려는 플러그인을 업데이트하고 요구 사항에 맞지 않는 플러그인은 삭제하는 것이 좋습니다.
다시 한 번 말씀드리지만, 워드프레스 코어 파일 내에서 작업할 것이므로 이러한 파일의 작동 방식과 내용에 대한 지식이 있어야 합니다. 튜토리얼에서 설명할 개념 중 일부는 단계 자체에는 설명이 없지만 반드시 설명이 필요한 것은 아닙니다.
이 모든 사항이 완료되면 i18n 프로세스 작업을 시작할 수 있습니다.
앞으로 몇 섹션에 걸쳐 테마 및 플러그인을 사용하여 워드프레스 i18n을 수행하는 방법을 보여드리겠습니다. 각 섹션은 코드가 많고 기술적인 부분이 많을 수 있지만 최대한 자세히 설명하고 필요한 추가 리소스를 링크해 드리겠습니다.
테마를 국제화하는 방법부터 시작하겠습니다.
첫 번째 단계는 텍스트 도메인과 도메인 경로를 포함하도록 테마의 헤더를 업데이트하는 것입니다. 간단히 말해
이렇게 하려면 테마의 헤더 파일에 몇 단어를 추가하면 됩니다:
/*
테마 이름: 내 사용자 정의 테마
작성자: Weglot 번역
텍스트 도메인: 내 테마
도메인 경로: /언어/
*/
다음으로 '액션'과 '함수'를 사용하여 해당 텍스트 도메인을 로드해야 합니다:
add_action( 'after_setup_theme', 'my_theme_setup' );
function my_theme_setup() {
load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
}
이 코드 모음은 사이트가 아닌 테마의 functions.php 파일에 있어야 합니다. 이렇게 하면 '문자열 감사'를 시작할 수 있습니다. 이를 위해서는 테마 내의 모든 텍스트 문자열을 번역 함수로 래핑해야 합니다. 자주 사용하는 두 가지 함수가 있습니다:
이러한 함수에는 텍스트 문자열과 텍스트 도메인이라는 두 가지 인수가 필요합니다. 예를 들어
__()
$welcome = __( '안녕하세요! 대시보드에 오신 것을 환영합니다!', 'my-theme' );
_e( '다시 안녕하세요!', 'my-theme' );
다양한 번역 기능의 자세한 내용은 이 글의 범위를 벗어나지만, 워드프레스 테마 개발자 핸드북에는 작업에 필요한 거의 모든 정보가 있습니다.
이 시점에서 POT 파일을 만들 수 있습니다. 이를 위한 많은 솔루션이 있지만 워드프레스에서는 무료 오픈소스 솔루션인 Poedit을 추천합니다.
Poedit을 다운로드하여 설치한 후 도구 모음에서 파일 > 새로 만들기로 이동합니다:

다음으로 새 카탈로그를 만듭니다. 메인 화면에서 소스에서 추출 링크를 클릭하면 됩니다:

그런 다음 번역 속성 탭에서 프로젝트 이름, 언어 팀 및 기본 언어 필드를 입력합니다:

파일이 새 파일인 경우 여기에 저장하는 것이 좋습니다(파일 이름은 테마의 슬러그와 동일해야 합니다). 그런 다음 소스 경로 탭을 선택하고 컴퓨터에서 /languages/ 폴더를 찾습니다:

마지막 소스 키워드 탭에는 테마에서 사용한 번역 기능의 목록이 표시됩니다:

올바른 키워드를 찾기가 어려울 수 있지만 여기에 키워드를 추가하고 싶을 것입니다. 우선 다음 목록을 사용할 수 있습니다:
_e
_x
_ex
_n
_nx
_n_noop
_nx_noop
translate_nooped_plural
number_format_i18n
date_i18n
esc_html__
esc_html__
esc_html_x
esc_attr__
esc_attr_e
esc_attr_x
클릭하여 확인하고 변경 사항을 저장한 후 새 파일을 확인하면 컴퓨터에 MO 및 PO 파일이 표시됩니다. PO 파일을 복제하는 경우 POT 확장자를 추가하고 여기에서 로컬라이제이션으로 이동할 수 있습니다.
여기서 초기 작업은 테마와 비슷합니다. 먼저 헤더의 플러그인 텍스트 도메인 및 도메인 경로 필드를 업데이트합니다:
/*
플러그인 이름: 내 사용자 정의 플러그인
플러그인 URI:weglot
설명: 번역과 i18n을 보여주는 사용자 정의 플러그인입니다.
Author: Weglot 번역
버전: 1.0
작성자 URI:weglot
텍스트 도메인: 내-플러그인
도메인 경로: /언어/
*/
도메인 경로로 /languages/ 폴더를 생성하고 이 폴더를 도메인 경로로 설정하는 것이 좋습니다. 여기에서 플러그인의 텍스트 도메인을 로드할 수 있지만 이번에는 functions.php가 아닌 코드에 다음 함수를 추가할 수 있습니다:
load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path );
그러나 이렇게 하면 워드프레스에 번역 파일이 있다는 것을 알릴 뿐입니다. 이를 로드하려면 함수를 액션으로 감싸는 것이 좋습니다:
add_action( 'plugins_loaded', 'plugin_load_td' );function plugin_load_td() {
load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
문자열 감사는 대부분 테마 i18n과 유사합니다. 마지막 단계는 이전과 동일한 프로세스를 사용하여 POT 파일을 생성하는 것입니다. 생성된 파일은 현재 작업 디렉터리에 저장됩니다.
지금쯤이면 워드프레스 i18n이 얼마나 놀라운 기능인지 이해하셨을 겁니다. 테마나 플러그인을 개발하여 번역할 준비를 하고 싶을 때 유용합니다. 하지만 모든 훌륭한 기능이 그렇듯 몇 가지 단점도 있습니다.
예를 들어 플러그인에 사용자 생성 콘텐츠가 포함되어 있는 경우 i18n 번역에 포함되지 않습니다.
i18n 프로세스는 버튼 텍스트와 같이 코딩하는 정적 요소에 대한 번역을 활성화합니다. 그러나 사용자가 필드에 특정 문구를 입력하거나 고유한 레이블을 만들고 기타 '클라이언트 측' 요소를 만들려는 경우에는 이를 고려할 수 없습니다. 사실 설명할 수는 있지만 이는 복잡한 작업이며 이 글의 범위를 벗어납니다.
또한 개발자가 아닌 경우 i18n은 사이트 번역에 도움을 주지 않습니다. 이를 위해서는 플러그인이 필요하며 적합한 옵션을 찾으려면 다음 섹션으로 건너뛰는 것이 좋습니다.
번역 플러그인은 여러 가지 면에서 도움이 될 수 있지만, 사이트가 다국어를 완벽하게 지원하려면 평균 5개의 플러그인이 필요하다는 점도 알아둘 필요가 있습니다. 이와는 대조적으로 다음과 같은 솔루션은 Weglot 과 같은 솔루션은 작동 속도가 빠르고 사이트의 번역 가능한 부분을 모두 감지할 수 있으며 거의 모든 테마 및 플러그인과 호환됩니다. 이는 해당 테마와 플러그인이 번역할 준비가 되어 있는지 여부와 무관합니다.
또한 Weglot 전면 HTML 페이지의 테마, 플러그인 및 주요 콘텐츠 요소를 사용하여 번역할 수 있도록 합니다. 따라서 .pot 및 .po 파일이 없으며 gettext 메서드도 필요하지 않습니다.
이제 기술적인 측면에서 콘텐츠의 로컬라이제이션, 즉 직접 번역 프로세스에 대해 설명하겠습니다.
좋은 번역 전략은 쉽지 않습니다. 콘텐츠가 다양한 문화, 지역 및 언어에 적합한 방식으로 전달되도록 하기 위해서는 많은 노력이 필요하고 많은 계획이 필요합니다. 이는 콘텐츠 본문의 번역된 텍스트에만 해당되는 것이 아닙니다. 다음 사항도 모두 고려해야 합니다:
전자상거래를 이용한다면 여기에도 고려해야 할 사항이 많습니다. 예를 들어, 결제 화면의 모든 요소, 특히 통화 및 세금 필드가 완전히 번역되었는지 확인해야 합니다:

또한 배송 정보는 완전하고 고품질로 번역해야 하는 핵심 요소입니다. 고객이 사용하는 언어에 관계없이 구매 버튼을 클릭하는 데 변명의 여지가 없도록 해야 합니다.

Weglot 은 사용자를 대신하여 많은 작업을 수행합니다. 번역할 수 있는 사이트의 모든 측면을 감지하기 때문에 WordPress i18n 작업에 귀중한 지원군이 될 수 있습니다. 거기서부터 기계 번역의 첫 번째 레이어를 수행합니다:

이 정도면 충분할 수도 있지만 Weglot 한 단계 더 나아갈 수 있도록 도와드릴 수 있습니다. 전문 번역을 가져오고, 기존 번역을 편집하는 등의 작업을 수행할 수 있습니다. 이를 통해 사이트의 전체 로컬라이제이션을 수행하는 데 필요한 모든 유연성을 제공합니다.
워드프레스는 전 세계 거의 모든 곳에서 사용할 수 있습니다. 따라서 국제화된 테마와 플러그인은 다른 언어로 번역할 때 도움이 됩니다. 워드프레스 i18n은 플랫폼으로 작업하는 개발자에게 중요한 톱니바퀴입니다.
사용자가 소스 코드를 수정하지 않고도 번역을 만들 수 있도록 테마를 국제화할 수 있다면 좋은 위치에 있는 것입니다. 하지만 i18n 개념을 적용한다고 해서 테마나 플러그인이 번역되는 것은 아닙니다.
이 단계를 수행하려면 Weglot 같은 솔루션을 사용하는 것이 좋습니다. 다양한 플랫폼 및 기술과 호환되며 워드프레스와 환상적으로 작동합니다. 워크플로우의 i18n 부분을 완료한 후에는 Weglot 전환하여 거의 모든 언어로 정확하고 구현하기 쉬운 번역을 생성할 수 있습니다.
직접 확인해 Weglot 구매 의무가 없는 10일 무료 체험판을 사용해보세요.