PHP和Gettext在我的服务器上不起作用

Par*_*ser 6 php apache gettext

我有一个网站.我正努力让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/');
Run Code Online (Sandbox Code Playgroud)

我的道路是/var/www/rssbot.dk/lang/.我应该使chmod正确,还是......?

Ken*_*ins 4

我发现一些 gettext 安装需要locale-gen为您想要使用的每个区域设置运行。我发现对于 Ubuntu 尤其如此。运行后您可能需要重新启动 PHP (apache) locale-gen

sudo locale-gen se_SE
sudo locale-gen no_NO
Run Code Online (Sandbox Code Playgroud)

我有一个测试设置(带有工作区域设置文件),可以确定 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";
}

?>
Run Code Online (Sandbox Code Playgroud)