None
Leather
Carbon
GNU5, PHP 글답변
GNU5, PHP 글답변
분류
필수
분류를 선택하세요
G5
GNU4
PHP
mySQL
LINUX
이름
필수
비밀번호
필수
이메일
홈페이지
제목
필수
내용
필수
웹에디터 시작
> > > 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 파일에서는 다음처럼 코딩한다. > > > <?php > header("Content-Type: text/html; charset=UTF-8"); > > $language = "ko-KR"; > putenv("LANG=$language"); > setlocale(LC_ALL, $language); > > $domain = "messages"; > $str = bindtextdomain($domain, "c:\\Apache2.2\\htdocs\\i18n\\locale"); > textdomain($domain); > > echo gettext("よろしくお願いします"); > echo gettext("こんにちは"); > echo gettext("攻撃を受けました。"); > ?> > > > 다국어 리소스는 일반적으로 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() 함수의 결과로 정상적인 경로가 반환되는지를 확인한다. > >
웹 에디터 끝
링크 #1
링크 #2
자동등록방지
숫자음성듣기
새로고침
자동등록방지 숫자를 순서대로 입력하세요.
취소
작성완료
H O M E
우리는 !?
인사의 말씀
사이트 맵
커뮤 니티
자유 게시판
방 명 록
자유 겔러리
공간 - 자료실
PORTFOLIO
DATA ROOM
공간 - 스터디
TIP & TECH
GNU5, PHP +
공간 - 동영상 모음
playALONG
THEME &
PAINTING &
myFAVORITE
오시는 길 + 이-메일
YONGHAK.com SITE
LEEWELL.com SITE
SMART-LIFE SITE
CANDO.kr SITE
VER. '2012™
IN-BEST Stylish Ver.2012™