2009-11-21 3 views
1

gettext가 작동하지 않는 것 같습니다.PHP : 문맥 문제

저는 MAMP Pro를 사용 중이며 phpinfo();은 gettext가 활성화되었다고 말합니다.

나는이 튜토리얼을 따라 : http://zez.org/article/articleview/42/1/

  1. 내 문자열과 같은 내 코드에 선언이 :
  2. _('test string');가 그럼 난 내 messages.po 파일을 생성 xgettest -L PHP test.php을 달렸다.
  3. poedit에이 파일을 열고 내 문자열을 번역 한 다음 messages.mo 파일을 만든 파일을 저장했습니다.

    $lang = $_SESSION['lang']; // available to all views that include this file

    putenv('LC_ALL='.$lang);

    :
  4. 내가 모두 .po.mo 파일을 가져다가 (이 경우, 내 번역 스페인어했다) 내 코드에서
  5. [webroot]/locale/es/LC_MESSAGES/로 이동, 나는 다음을 설정

    bindtextdomain('messages','./locale');

    textdomain('messages');

    ... $_SESSION['lang']enes 사이를 쉽게 전환 할 수 있습니다.

  6. 내 페이지를 새로 고침 한 다음 es으로 전환하는 링크를 클릭합니다.하지만 내 문자열은 스페인어 버전이 아닌 영어 버전으로 표시됩니다. en으로 전환하면 변경 사항이 표시되지 않습니다. 그것은 항상 영어 버전입니다.

어디서나 오류 메시지가 표시되지 않으므로이 문제가 발생하는 이유는 무엇인지 알 수 없습니다. 아무도 나에게 약간의 안내/도움을 줄 수 있습니까? 내가 뭐 놓친 거 없니?

+0

"es"를 하드 코드하면 i18n 또는 세션 혼란에 문제가 있다는 것을 알 수 있습니다. –

+0

또는 영어 번역을 수정하십시오. – erenon

+0

"es"하드 코드 된 효과는 변경되지 않습니다. – neezer

답변

0

문제가 poedit 인 것처럼 보입니다. 원래 모든 스페인어 번역은 "퍼지"로 표시되었습니다. 그들에게서 "퍼지"를 제거하면, 나는 그들이해야하는 것처럼 나의 웹 페이지에 나타난다.

나는 이것이 정상적인 행동이라고 생각하지 않지만, 적어도 그것은 작동합니다.

1

은 또한 너무로 서버에서 해당 언어 파일을 설치해야합니다

cat /usr/share/i18n/SUPPORTED |grep -i "es_ES" > /var/lib/locales/supported.d/es 
cat /usr/share/i18n/SUPPORTED |grep -i "nl_NL" > /var/lib/locales/supported.d/nl 
cat /usr/share/i18n/SUPPORTED |grep -i "de_DE" > /var/lib/locales/supported.d/de 

지금 당신은 언어 네덜란드어와 독일어, 스페인어를 설치했습니다. 완료되면 dpkg-reconfigure locales을 실행하면 완료됩니다. =)

+0

OP는 MAMP PRO를 사용하고 있으므로 OS X에서도 마찬가지입니다.'dpkg-reconfigure'는 거기서 작동하지 않습니다. – drewm

+0

대소 문자를 구별하지 않는 스위치를 사용하여 대소 문자 그대로의 검색 문자열을 grep하는 것은 매우 귀찮습니다. – Tim