2011-11-11 4 views
0

저는 WordPress 테마 용 .po 파일을 작성했습니다. charset은 'utf-8'로 정의 할 수 없거나 Poedit (현재 내 문자열을 카탈로그화할 때 사용하는 프로그램)에서 열리지 않기 때문에 유니 코드입니다. 안타깝게도 액센트가있는 문자열 (프랑스어 문자열은 프랑스어로 사용됨)은 Peoedit (결과적으로 .mo 컴파일) 또는 __() 및 _e()의 gettext 처리로 올바르게 렌더링되지 않습니다. 내 웹 사이트의 .php 파일은 현재 프랑스어 악센트를 처리하기 위해 utf-8입니다.Wordpress .po 파일은 프랑스어 악센트를 인식하지 못합니다

.mo와 웹 파일 간의 문자 세트 불일치가 여기에 있습니다. 그렇다면 어떻게 utf-8 charset으로 내 .po 및 .mo 파일을 렌더링하고 작동 시키게합니까?

실제와 .po 또는 .mo 파일의 초기화 코드 정보 또는 hexdumps 대신에
msgid "" 
msgstr "" 
"Content-Type: text/plain; charset=utf-8\n" 
"Content-Transfer-Encoding: 8bit\n" 
"Project-Id-Version: \n" 
"POT-Creation-Date: \n" 
"PO-Revision-Date: \n" 
"Last-Translator: Patrick <[email protected]>\n" 
"Language-Team: \n" 
"MIME-Version: 1.0\n" 
+0

Poedit의 최신 버전을 사용해 보셨습니까? 유효한 UTF-8을 거부하는 경우는 거의 없습니다. 그리고 .po 파일이 그 문자 세트에 없다면 무엇을 더 구체적으로 지정 했습니까? (gettext 초기화 코드 표시) – mario

+0

예, 최신 버전 인 1.4.6 버전을 실행 중입니다. 아마도 문제는 utf-8 인코딩으로 Poedit을 실행할 수 없다는 것입니다. .mo 파일을 다시 컴파일하지 못하게합니다 (열 수 없으므로). .po 파일에서 .mo 파일 만 컴파일하는 프로그램이 있습니까? – Prusprus

+0

charset iso-8859-1을 사용하는 것이 불행히도 Poeditor와 함께 작동한다는 것을 알았습니다. 여전히 프랑스어 악센트로 작업하지 않았습니다. – Prusprus

답변

0

, 유일한 : 여기 (작동하지 않는 UTF-8 인코딩 포함) 내와 .po 파일의 헤더입니다 조사 할만한 가치가있는 것은 bind_textdomain_codeset입니다. (또한 setlocale 또는 LANG= 또는 LC_ALL=의 캐릭터 세트를 추가.) (Pootle를 통해)

msgfmtphp2po하는 대안을 Poedit에, 당신은 UTF-8 작업을 관리 할 수없는 경우. (당신이해야 할 일입니다.)

+1

그래서 모든 프랑스어 액센트를 ASCII로 바꾸면 유니 코드 오류가 발생하지 않습니다. PoEdit이 유니 코드 charset과 함께 작동하여 .mo 파일을 컴파일했기 때문에 msgfmt 또는 php2po가 다르게 작동 할 수 있다고 가정합니다. 두 가지 모두 살펴 보았지만, PoEdit과 같은 인터페이스를 중심으로 한 인터페이스가 더 적고 콘솔 기반의 인터페이스가 많아서 나에게 매우 성가시다. 나는 PoEdit을 고수 할 것이고 필요할 때마다 액센트를 ASCII 코드로 바꿀 것입니다. 번역 된 문자열은 매우 정적이고 작습니다. – Prusprus

+0

페이지 인코딩을 수정하십시오. Poedit의 또 다른 버전을 사용해보십시오. UTF-8에서 작동해서는 안되는 좋은 이유가 없습니다. – mario

+0

PoEdit에서 유니 코드 문자셋을 사용하면 문제를 해결할 수 있지만별로 할 일이 없습니다 ... – Prusprus

0

처럼 "Content-Type : text/plain; charset = utf-8 \ n"을 정의해야하지만 파일을 UTF로 변환해야합니다 -8 (BOM 없음) (notepad ++는 그렇게 함).

poedit에서 다시 열면 악센트가 표시됩니다. WP 테마 폴더에 저장하고 업로드하십시오.