Gettext

Gettext (다국어 메시지)

PHP 애플리케이션을 국제화(i18n)할 때 쓰는 확장이에요. NLS(Native Language Support) API를 구현해, 소스 코드에는 원문을 두고 실행 환경의 로케일에 따라 번역된 메시지를 골라 보여줄 수 있습니다.

출처: PHP: Gettext - Manual

본문

gettext 함수는 PHP 애플리케이션을 국제화하는 데 쓸 수 있는 NLS(Native Language Support) API를 구현합니다. 이 함수들에 대한 자세한 설명은 시스템의 gettext 문서나 GNU gettext 매뉴얼을 참고하는 것이 좋아요.

기본 아이디어는 이래요. 코드에서는 gettext("Hello")처럼 원문 문자열을 쓰고, 번역 도메인(domain)에 언어별 .mo(메시지 카탈로그) 파일을 준비해 두면, 실행 중인 로케일에 맞는 번역이 자동으로 선택됩니다.

Gettext 함수

함수 설명
_ gettext의 별칭
bind_textdomain_codeset DOMAIN 메시지 카탈로그의 메시지를 반환할 문자 인코딩 지정 또는 가져옴
bindtextdomain 도메인의 경로 설정 또는 가져옴
dcgettext 단일 조회에 대해 도메인을 오버라이드
dcngettext dcgettext의 복수형 버전
dgettext 현재 도메인 오버라이드
dngettext dgettext의 복수형 버전
gettext 현재 도메인에서 메시지 조회
ngettext gettext의 복수형 버전
textdomain 기본 도메인 설정

가장 자주 쓰는 조합은 bindtextdomain()으로 도메인과 번역 파일 위치를 묶고, textdomain()으로 기본 도메인을 선택한 뒤, 원문 자리에 _("...") 같은 형식으로 조회하는 거예요. 단수·복수를 구분해야 하면 ngettext()를 사용합니다.

더 알아보기