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