2013-12-09 2 views
0

지난 며칠 동안 나는 php와 gettext에 어려움을 겪어 왔고 곧 영어로 번역 된 새로운 웹 사이트가 덴마크어로 번역되었습니다. Localizing PHP web sites using gettext 나는이 추가 :이 튜토리얼 당으로Gettext가 번역하지 않습니다

/locale/en_US/LC_MESSAGES/ 

:

내와 .po로하고 다음과 같이 설정 .mo 파일 내 디렉토리가 나는 다섯 entires를 추가

$locale = "en_US"; 
if (isSet($_GET["locale"])) $locale = $_GET["locale"]; 
putenv("LC_ALL=$locale"); 
setlocale(LC_ALL, $locale); 
bindtextdomain("messages", "./locale"); 
textdomain("messages"); 

을 in 내 페이지 :

echo _('Overskrift 1') 

그러나 내 서버의 페이지를 볼 때 PHP가있는 데비안 상자 5.4 및 gettext 지원이 활성화되어 있으면 아무 것도 번역되지 않습니다.

내가 뭘 잘못하고 있는지 전혀 모르겠다. 나는 그것이 작은 무엇인가 확실하다. 그러나 나는 단지 그것을 볼 수 없다. 어쩌면 너희들 포인터가있을거야?

내와 .po 파일 :

msgid "" 
msgstr "" 
"MIME-Version: 1.0\n" 
"Content-Type: text/plain; charset=UTF-8\n" 
"Content-Transfer-Encoding: 8bit\n" 
"X-Generator: POEditor.com\n" 
"Project-Id-Version: Portfolio\n" 
"Language: en\n" 

#: 
msgid "Overskrift 1" 
msgstr "Headline 1" 

#: 
msgid "Overskrift 2" 
msgstr "Headline 2" 

#: 
msgid "Overskrift 3" 
msgstr "Headline 3" 

#: 
msgid "Overskrift 4" 
msgstr "Headline 4" 

#: 
msgid "Overskrift 5" 
msgstr "Headline 5" 
+0

튜토리얼에 따라 에코에서 큰 따옴표를 사용하려고 시도 했습니까? – Jeppe

+0

불행히도 그것은 아무 것도 바뀌지 않았습니다. –

+0

'var_dump (setlocale (LC_ALL, 'en_US'));)에 대한 출력은 무엇입니까? – bitWorking

답변

7

가장 일반적인 문제는 시스템 로케일이 설정되어 설치되어 있지 않은 것입니다. gettext는 시스템의 로켈 시스템에 깊이 통합되어 있습니다. setlocale으로 설정 한 로케일은 실제로 사용자가 제공하는 이름으로 설치되거나 별칭이 지정되어야합니다. 대부분의 시스템에는 로케일이 없으며 로케일은 ja_JP.UTF8 및/또는 ja_JP.eucJP입니다. 이 경우 setlocale(LC_ALL, 'ja_JP.UTF8')이 필요합니다. 단지 ja 또는 ja_JP으로 제한됩니다.

설치된 로캘을 확인하려면 명령 줄에서 locale -a을 실행하십시오. 찾고있는 로케일이 없으면 설치해야합니다. 우분투 및 이와 유사한 시스템에서 이것은 sudo locale-gen ja_JP.UTF8처럼 쉽습니다.

대체 솔루션 드문 로케일 쉽게 찾을 수 없습니다, 따라서 당신은 당신이 원하는 것을 설치하지 못할 수 있습니다. 이 경우, 가장 가까운 로케일을 찾을 수 있습니다. 예를 들어, 앱을 호스팅하는 서버에 ku_IQ이없고 ku_TR이있는 경우 대신 후자를 사용할 수 있습니다. 실제로 디렉토리를 설정하고있는 로케일로 디렉토리의 이름을 변경했는지 확인하십시오. 텍스트는 여전히 정상적으로 번역되지만 날짜, 시간 및 숫자와 같은 지역 형식은 제대로 표시되지 않습니다. 당신은 그것으로 살아야 할 것입니다.

+0

글쎄요. 나는 어제 그 일을했기 때문에 내가 필요한 옳은 것을 찾았다. 오늘 다시 했나요? en_US.UTF-8로 해결했습니다. 나는 당황 스럽지만 미리 알림에 감사드립니다. –

+2

특히이 종속성이 아주 분명하지 않고 gettext가 잘못된 것에 대해 불평하는 것이 정말 수줍음이기 때문에 특히 좋습니다. ;) – deceze

+0

시스템에 존재하지 않는 로켈을 추가 할 수도 있습니다 (https://askubuntu.com/questions/76013/how-do-i-add-locale-to-ubuntu-server). –

관련 문제