我有一个网站。我正在尝试让 gettext 工作,以便我的英语、瑞典和挪威站点可以出现。我无法让它工作。我做错了什么?
这是我的配置代码:
// define constants ( defualt - danish )
$lang = 'da_DA';
$lang_short = '';
$lang_prefix = 'da';
if ( isset( $_GET['lang'] ) )
{
switch( $_GET['lang'] )
{
case 'en':
$lang = 'en_EN';
$lang_short = 'en/';
$lang_prefix = 'en';
break;
case 'se':
$lang = 'se_SE';
$lang_short = 'se/';
$lang_prefix = 'se';
break;
case 'no':
$lang = 'no_NO';
$lang_short = 'no/';
$lang_prefix = 'no';
break;
}
}
define( 'LANG', $lang_short );
define( 'LANG_PREFIX', $lang_prefix );
putenv("LC_ALL=". $lang );
bindtextdomain('messages', ROOT .'lang/');
我的路径是/var/www/rssbot.dk/lang/
。我应该使 chmod 正确,还是...?
最佳答案
我发现某些 gettext 安装需要为您要使用的每个语言环境运行 locale-gen
。我发现这尤其适用于 Ubuntu。运行 locale-gen
后,您可能需要重新启动 PHP (apache)。
sudo locale-gen se_SE
sudo locale-gen no_NO
我有一个 test setup (使用工作语言环境文件)可以确定您的 gettext 设置是否正常工作。
<?php
//Depending on your OS, putenv/setlocale/both will set your language.
putenv('LC_ALL=es_MX');
setlocale(LC_ALL, 'es_MX');
bindtextdomain( "su", "./locale" ); //set the locale folder for a textdomain
bind_textdomain_codeset( "su", "UTF-8" ); //set the codeset for a textdomain
textdomain( "su" ); //choose a textdomain
if( gettext("Hello World!") === "Hola a todos!" ) {
print "We translated it correctly";
} else {
print "Gettext setup isn't working";
}
?>
关于PHP 和 Gettext 在我的服务器上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2915056/