GNU5, PHP

PHP PHP에서 gettext를 이용한 다국어 처리

페이지 정보

작성자 IN-BEST 댓글 0건 조회 17,085회 작성일 13-09-16 13:34

본문

PHP를 처음 시작하는 입장에서 로컬라이징 업무를 하게 되어 어떻게 하면 가장 효율적으로 이 부분을 해결할 수 있을까 하고 찾아보던 차에 워드프레스에도 사용하고 PHP에서도 기본 익스텐션으로 제공하는 gettext를 이용해 다국어 처리를 하게 되었다. 다른것도 그렇겠지만 막상 적용하고 나면 별것아닌데 그 과정을 넘어가는건 삽질의 연속인지라 정리해 본다. 1. php.ini에서 'extension=php_gettext.dll' 를 검색하고 앞에 세미콜론이 있다면 제거한다. 리눅스에서 운영할 때는 gettext 모듈을 설치해야 한다.(안해봤다...) 2. 다국어 관련한 부분의 디렉토리는 \locale\ko-KR\LC_MESSAGES 형태로 배열한다. 일본어라면 \locale\ja-JP\LC_MESSAGES 가 된다. 언어에 따른 문자열은 브라우저의 언어 설정에 있는 문자열을 사용하면 된다. 3. LC_MESSAGES 아래에는 gettext가 사용할 .mo 파일이 위치한다. 편의상 .po파일도 같이 둔다. po/mo 파일을 생성하는 과정은 다음 글을 참고 [poedit를 통한 po/mo 파일 생성(gettext)] 4. PHP 파일에서는 다음처럼 코딩한다. 다국어 리소스는 일반적으로 UTF-8로 사용하므로 UTF-8 헤더 설정을 해준다. 그 다음 언어 로캐일 설정을 해준다. 도메인 설정($domain)은 파일 이름이 된다.(여기에서는 c:\Apache2.2\htdocs\i18n\locale\ko-KR\LC_MESSAGES\messages.mo 파일을 읽게 된다.) bindtextdomain() 함수는 처리 후 반환값으로 바인딩한 경로의 값을 문자열로 반환하므로 정상적인 작동이 아닐때는 위에서 $str 변수를 echo로 찍어보아 정상적인 경로가 나오는지 확인한다. 여기에서는 일본어 -> 한국어 번역의 경우를 생각했다. 번역 내용을 po파일에 설정하였고 mo 파일이 정상적으로 로딩 되었다면 gettext() 함수의 결과물로 한글 내용이 출력될 것이다.(물론 위의 링크로 걸어준 부분에서 번역 내용을 추가한 후 mo 파일을 생성하여야 한다.) 5. gettext가 잘 동작하지 않을때는 phpinfo로 gettext 모듈이 정상 작동하는지, bindtextdomain() 함수의 결과로 정상적인 경로가 반환되는지를 확인한다.

댓글목록

등록된 댓글이 없습니다.