标签: php-gettext

Gettext (i18n) 和 Smarty 运行不稳定

我正在用 PHP 和 Smarty 开发一个 webapp。我使用 gettext 进行国际化,但我遇到了一个问题:它只是有时完全随机地起作用。我使用 putenv+setlocale+bindtextdomain+textdomain 加载语言环境(例如“de_DE”),重新加载页面,然后查看“搜索”;再次重新加载,我看到“这样”;再重新加载两次并获得“Suche”,但第三次再次给我“搜索”,然后我多次看到“搜索”,突然间我可以再次看到“Suche”......随机。

我已经停用了 Smarty 的缓存,但同样的问题。我已经将 Smarty 配置为对不同的语言使用不同的目录,templates_c/en_GB、templates_c/de_DE 等等。以这种方式编译工作得很好。

我正在使用 smarty-gettext 进行模板翻译。

使用 gettext 和 Smarty 是否存在任何已知问题?

编辑以添加一些信息:我在 Linux 机器上运行我的测试:

apache2 2.2.14

获取文本 0.17

php 5.3.2

smarty 3-SVN$Rev: 3286

php smarty gettext php-gettext

5
推荐指数
1
解决办法
1146
查看次数

不同环境下的php gettext目录结构

我正在gettext用于我的 php 文件的国际化。我有两台服务器;一个沙箱服务器和一个发布服务器。在沙箱服务器中,像locale/LC_MESSAGES/en这样的目录不起作用,我应该locale/LC_MESSAGES/en_GB改用。但是“en_GB”在我的生产服务器上不起作用,“en”工作正常。对于像葡萄牙语这样的一些语言,我有 pt_PT 和 pt_BR(巴西葡萄牙语)。所以我更喜欢使用“A_B”结构。

我不知道如何gettext检测这些文件夹。是否有使用相同文件夹结构的标准方法?

php gettext internationalization php-gettext

4
推荐指数
1
解决办法
1617
查看次数

你如何在服务器(Apache)上使用gettext无法重启?

我在serverfault上问过这个问题,但我没有得到任何回复.我在这里试试......

我在家里的网络服务器上开发了一个网站.

当我修改翻译文件时,我必须重新启动Web服务器Apache.

/etc/init.d/httpd graceful
Run Code Online (Sandbox Code Playgroud)

简单...

假设我的网站托管在共享主机上.

假设我现在需要修改翻译文件.

我无法重启服务器......

你如何gettext在这种情况下使用?

您是否允许仅使用graceful选项重新启动服务器?

共享主机是否每天重启服务器一次以解决此类问题?

你如何处理这些限制?

php apache shared-hosting gettext php-gettext

2
推荐指数
1
解决办法
5973
查看次数

Yii:GetText _()vs Yii :: t()

在使用GetText翻译Yii中的字符串时,我们是否必须使用Yii::t($category,'message')或gettext的_('message')语法?

然后我们如何将字符串拉入PO文件?

php gettext yii php-gettext

2
推荐指数
1
解决办法
540
查看次数

php-gettext 在生产服务器中不起作用。(乌班图)

我在 PHP 中使用 gettext 时遇到问题;我有两台服务器,一台是本地服务器(我在其中开发),在 Windows 中(使用 vs.php)并工作查找,另一台在 Amazon EC2 中(更新了 Ubuntu 12.04),这是生产服务器,在这台服务器中,相同的代码不发现了。

这是我的代码:

我用这个来初始化 gettext 。

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");
Run Code Online (Sandbox Code Playgroud)

我的项目中的所有文件均以 UTF-8(西班牙语)编码,并且 .mo 和 .po …

php gettext internationalization ubuntu-server php-gettext

0
推荐指数
1
解决办法
1641
查看次数