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

标签 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/');

我的路径是/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/

相关文章:

php - 循环遍历 SQL 并在 PHP 中计算总和

php - Laravel 时间验证(小时 :seconds)

mysql - CentOS 内存使用情况。已使用约 22GB RAM(22GB 可用内存)

java - 无法获取文本字符串的值

php - MySQL查询ID <变量

php - SalesForce 查询结果出现问题 - PHP 工具包

java - 在 Camel 路由中访问 HTTPSession

java - 没有端点 java 异常

python - i18n 与 jinja2 + GAE

php - Apache gettext 窗口不工作/翻译