2013-12-21 2 views
2

PHP 프로젝트에서 전통 중국어를 지원하려고하지만 중국어 문자를 표시 할 수 없습니다. 내가 SSH에서 로케일을 생성 PHP gettext 중국어 간체 지원?

putenv("LC_ALL=zh_CN.utf8"); 
setlocale(LC_ALL, "zh_CN.utf8"); 
bindtextdomain("wpsmessages", dirname(__FILE__) . "/locale"); 
bind_textdomain_codeset("wpsmessages", 'UTF-8'); 
textdomain("wpsmessages"); 

이전

입력하여 :

sudo locale-gen zh_CN.utf8 

후 반환

Generating locales... 
zh_CN.UTF-8... done 

locale -a를 입력 한 후 나는 목록에 follwing을 얻을 여기 내 gettext에 설정입니다 (기타 중에서) :

zh_CN 
zh_CN.utf8 

하지만 여전히 중국어 문자가 표시되지 않습니다. 여기서 내가 뭘 잘못하고 있니?

+0

실례를 잘 모르겠다. PHP가 텍스트를 가져 와서 중국 지원을 얻으려고하고 있지만, 모든 예제는 시스템 레벨 설정을 보여줍니다. 귀하의 PHP 코드는 어디에서 실패합니까? 데이터베이스에서 데이터를 가져 오는 중입니까? 데이터베이스 및 PHP 스크립트 UTF8을 인식합니까? – JakeGould

+0

가능한 [(UTF-8)] 중국어 번체 문자를 PHP gettext 확장자 (poEdit에서 만든 .po 및 .mo 파일)에서 사용할 수 없습니다.] (http://stackoverflow.com/questions/2264740/cant- make-utf-8-traditional-chinese-character-to-php-gettext-extensio) – JakeGould

+1

죄송합니다, 이것에 대해서는 너무 명확하지 않았습니다. 그래서 기본적으로'__ ('This is some text')'를 호출하는 gettext 준비된 PHP 프로젝트를 가지고 있습니다.'/ locale /'폴더에있는 .mo와 .po 파일에서 텍스트를 가져옵니다. gettext는 로케일 de_DE.utf8, nl_NL.utf8, pt_BR.utf8 등에서 잘 작동하지만 중국어로 된 문자열을 인쇄 할 수는 없습니다. 대신 영어 기본 문자열을 인쇄합니다. – Alphawolf

답변

3

다소 불편하지만 해결책은 내 파일 이름 규칙에 따라 wpsmessages-zh_CN.mowpsmessages.mo으로 간단히 바꾸는 것입니다.

은 기본적으로는 gettext를 사용하여 내 PHP 프로젝트의 구조는 다음과 같다 :

/locale/pt_BR.utf8/LC_MESSAGES/wpsmessages.mo 
/locale/zh_CN.utf8/LC_MESSAGES/wpsmessages.mo 
... 

그래서 bindtextdomain("wpsmessages", dirname(__FILE__) . "/locale");setlocale()에 의해 지정된 로케일에 대한 올바른 .mo 파일을 얻을 수 사용하지만 이름의로 파일을 찾을 수 없습니다 틀 렸습니다.

희망이 있으면 누구나 저처럼 어리석은 사람이 될 수 있습니다. :)