php gettext don';我不能在生产服务器上工作。(Ubuntu)
我在PHP中使用gettext时遇到问题;我有两个服务器,一个是本地服务器(我在其中开发)在Windows中(使用vs.php)和works find,另一个在Amazon EC2中(Ubuntu 12.04更新),这是生产服务器,在这个服务器中找不到相同的代码 这是我的代码: 我用这个来初始化gettextphp gettext don';我不能在生产服务器上工作。(Ubuntu),php,internationalization,gettext,ubuntu-server,php-gettext,Php,Internationalization,Gettext,Ubuntu Server,Php Gettext,我在PHP中使用gettext时遇到问题;我有两个服务器,一个是本地服务器(我在其中开发)在Windows中(使用vs.php)和works find,另一个在Amazon EC2中(Ubuntu 12.04更新),这是生产服务器,在这个服务器中找不到相同的代码 这是我的代码: 我用这个来初始化gettext function initialize_i18n($locale) { $locales_root = "./librerias/noAuto/locale"; puten
function initialize_i18n($locale) {
$locales_root = "./librerias/noAuto/locale";
putenv('LANG='.$locale);
putenv("LC_ALL=" . $locale);
setlocale(LC_ALL,$locale);
$domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/messages*.mo');
if (count ($domains) > 0)
{
$current = basename($domains[0],'.mo');
$timestamp = preg_replace('{messages-}i','',$current);
bindtextdomain($current,$locales_root);
bind_textdomain_codeset( $current, "UTF-8" );
textdomain($current);
if ($locale == "en_US")
{
if( _("Modificar") === "Modify" ) {
$system->setDebug( "Translated correctly");
} else {
$system->setDebug( "Gettext don't working");
}
}
}
}
initialize_i18n("en_US");
我的项目中的所有文件都是用UTF-8(西班牙语)编码的,.mo和.po是用poedit生成的
我尝试重新加载apache服务,但没有成功
有什么想法吗?如果它在不同的环境中不起作用,最好检查关键功能是否成功处理
我建议您首先检查bindtextdomain()和bind_textdomain_codeset()的返回值。如果返回为空,则意味着PHP无法找到消息资源文件(仅在Ubuntu上),那么您可以检查运行web服务器和PHP的Unix用户对文件夹和文件的权限。如果在不同的环境下不起作用,您最好检查是否成功处理了关键功能
我建议您首先检查bindtextdomain()和bind_textdomain_codeset()的返回值。如果返回空白,这意味着PHP无法找到消息资源文件(仅在Ubuntu上),那么您可以检查运行web服务器和PHP的Unix用户对文件夹和文件的权限。新的一天新的想法!我有一个解决办法 如果您有相同的问题,您需要检查此步骤 1-您的Linux是否安装了这种语言 您可以通过以下方式进行检查:
locale -a
# aptitude install language-pack-en
如果未列出您的语言,请安装它,例如,您可以使用以下命令安装英语本地化:
locale -a
# aptitude install language-pack-en
完成后重新启动apache
2-您的语言代码在PHP中是否正确
如果您使用locale-a列出了语言代码列表,您将看到您可以使用的语言代码,例如,列出了英语“我的系统”的语言代码:
[...]
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
[...]
我的一个错误是,我使用了“en_US”而不是“en_US.utf8”
3-文件夹的名称与语言代码相同。(我的第二个错误)
抱歉我的英语不好新的一天新的想法!我有一个解决办法 如果您有相同的问题,您需要检查此步骤 1-您的Linux是否安装了这种语言 您可以通过以下方式进行检查:
locale -a
# aptitude install language-pack-en
如果未列出您的语言,请安装它,例如,您可以使用以下命令安装英语本地化:
locale -a
# aptitude install language-pack-en
完成后重新启动apache
2-您的语言代码在PHP中是否正确
如果您使用locale-a列出了语言代码列表,您将看到您可以使用的语言代码,例如,列出了英语“我的系统”的语言代码:
[...]
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
[...]
我的一个错误是,我使用了“en_US”而不是“en_US.utf8”
3-文件夹的名称与语言代码相同。(我的第二个错误)
PD>抱歉我的英语不好谢谢你的时间,我尝试了你的建议,这是de-output:bindtextdomain($current,$locales\u root)->/home/gudymail/librerias/noAuto/locale----bind\u-textdomain\u代码集($current,$UTF-8”)->UTF-8----textdomain($current)->消息----这是预期的结果?谢谢你的时间,我尝试了你的建议,这是反输出:bindtextdomain($current,$locales\u root)->/home/gudymail/librerias/noAuto/locale----bind\u textdomain\u codeset($current,“UTF-8”)->UTF-8----textdomain($current)->消息----这是预期的?救命恩人!我花了好几个小时才想到这个方向:)谢谢!救命恩人!我花了好几个小时才想到这个方向:)谢谢!