2012-09-10 2 views
3

gettext로 내 응용 프로그램을 번역 할 때 문제가 있습니다.Windows 7에서 Gettext가 번역되지 않습니다

내 코드입니다 : 내가 스크립트를 실행하면

<?php 
$language = 'cs_CZ'; 
$translatefile = 'default'; 
setlocale(LC_ALL, $language); 
putenv("LANG=".$language); 
bindtextdomain($translatefile, __DIR__.'/locale'); 
textdomain($translatefile); 

echo gettext("ADMIN_LOGIN_PROFESSIONAL"); 

는 여전히 'ADMIN_LOGIN_PROFESSIONAL'이다.

내 파일 구조 :

  • 루트/
    • index.php를
    • 로케일/
      • cs_CZ/
        • LC_MESSAGES/default.mo

      나는 윈도우 7, 아파치 2.2.22와 PHP 5.3.13을 실행하는거야

.

이것은 나를 위해 작동

+0

os와 서버 사이에 PHP 관계가 있습니까? –

+0

제 동료의 리눅스에서 잘 작동하고 있습니다. –

답변

0

... 어떤 도움 주셔서 대단히 감사합니다

$language = 'cs_CZ'; 
$translatefile = 'default'; 
putenv("LC_ALL=".$language); 
setlocale(LC_ALL, $language); 

bindtextdomain($translatefile, '/locale'); 
textdomain($translatefile); 

echo gettext("ADMIN_LOGIN_PROFESSIONAL"); 
+0

여전히 작동하지 않으며, 동일한 코드이고 .mo 파일에 올바른 번역이 있습니다. –

+0

지금 테스트 중이며 PHP 5.2에서 5.3으로 약간 변경된 것 같습니다 ... – Fanda

0

이 승리 7, PHP 5.3 & 5.4에 나를 위해 작동, IIS를. 리눅스에서 테스트되지 않았습니다. 코드는 strftime('%c') 등으로 날짜를 형식화 할 준비가되어 있습니다. :

/** 
* Setup locale (strings and formats) 
* @param string $lang Lang code in ISO format ('cs') 
* @see locales: http://www.roseindia.net/tutorials/I18N/locales-list.shtml 
* @see languages: http://msdn.microsoft.com/en-us/library/39cwe7zf%28vs.71%29.aspx 
* @see regions: http://msdn.microsoft.com/en-us/library/cdax410z%28vs.71%29.aspx 
*/ 
function setAppLocale($lang) 
{ 
    $domain = 'Tis'; 

    switch ($lang) 
    { 
     case 'cs': 
      $locale = 'czech'; 
      $strings = 'cs_CZ'; 
      break; 

     case 'en': 
      $locale = 'english'; 
      $strings = 'en_US'; 
      break; 

     case 'de': 
      $locale = 'german'; 
      $strings = 'de_DE'; 
      break; 

     case 'hu': 
      $locale = 'hungarian'; 
      $strings = 'hu_HU'; 
      break; 

     case 'ru': 
      $locale = 'russian'; 
      $strings = 'ru_RU'; 
      break; 
    } 

    putenv("LANGUAGE=$strings"); 
    putenv("LC_ALL=$locale"); 
    setlocale(LC_ALL, $locale); 

    bindtextdomain($domain, APPDIR . "/locale"); 
    bind_textdomain_codeset($domain, "UTF-8"); 
    textdomain($domain); 
} 
관련 문제