Windows 7上的Gettext不会翻译

我有与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

我正在运行Windows 7,Apache 2.2.22和PHP 5.3.13。

非常感谢您的帮助…

这适用于我:

 $language = 'cs_CZ'; $translatefile = 'default'; putenv("LC_ALL=".$language); setlocale(LC_ALL, $language); bindtextdomain($translatefile, '/locale'); textdomain($translatefile); echo gettext("ADMIN_LOGIN_PROFESSIONAL"); 

这对我赢得7,PHP 5.3和5.4,iis。 不在linux上测试。 代码可以通过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); }