我有与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”。
我的文件结构:
我正在运行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); }