Php Gettext不工作,什么';怎么了?

Php Gettext不工作,什么';怎么了?,php,gettext,poedit,Php,Gettext,Poedit,我正在使用gettext将不同的翻译添加到我的网页中。我刚刚安装了它,我认为它工作得很好。我还对.po文件使用Poedit 这是我用于gettext测试的代码: <?php // I18N support information here $language = "en_US"; putenv("LANG=" . $language); setlocale(LC_ALL, $language); // Set the text domain as "messages" $domain =

我正在使用gettext将不同的翻译添加到我的网页中。我刚刚安装了它,我认为它工作得很好。我还对.po文件使用Poedit

这是我用于gettext测试的代码:

<?php
// I18N support information here
$language = "en_US";
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);

// Set the text domain as "messages"
$domain = "messages";
bindtextdomain($domain, "Locale");
bind_textdomain_codeset($domain, 'UTF-8');

textdomain($domain);
//
// test if gettext extension is installed with php
//

if (!function_exists("gettext"))
{
    echo "gettext is not installed\n";
}
else
{
    echo "gettext is supported\n";
}
echo '<br>';
echo _("HELLO WORLD");
echo _("TEST TRANSLATION");
?>
它位于我的“Locale/en_US/LC_MESSAGES”文件夹中,还成功转换了MESSAGES.mo文件。(我已经隐藏了文件的信息、名称、项目等)

我做错了什么?
谢谢


编辑:我还可以补充一点,我使用Ubuntu时安装了PHP、Apache和所有这些东西。

我会考虑两件事:

  • 检查(例如通过使用区域设置-a)如果安装了要使用的语言,可在此处找到更详细的说明:

  • 检查apache是否正在缓存您的文件,或者“禁用”它,或者重新启动apache以获取新文件。更多关于上一个链接和


    • 我会考虑两件事:

      • 检查(例如通过使用区域设置-a)如果安装了要使用的语言,可在此处找到更详细的说明:

      • 检查apache是否正在缓存您的文件,或者“禁用”它,或者重新启动apache以获取新文件。更多关于上一个链接和


      我也一直为这个头疼。我添加了这个,它成功了:

      putenv('LANGUAGE=en_US')

      除此之外,我还使用了以下内容:

      $domain = 'woohoo';
      setlocale(LC_ALL, 'en_US.utf8');
      putenv('LANGUAGE=en_US');
      
      if( ENV != 'live' ){
          // reset caching nocache is a simlink to "."
          bindtextdomain($domain, dirname(__FILE__) . '/../locale/nocache');
      }
      
      bindtextdomain($domain, dirname(__FILE__) . '/../locale');
      bind_textdomain_codeset($domain, 'UTF-8');
      textdomain($domain);
      
      此外,在我的设置中,它仅在我将iso代码添加到.po文件时才开始工作:

      msgid ""
      msgstr ""
      "Language: en_US\n"
      

      这件事也让我头疼。我添加了这个,它成功了:

      putenv('LANGUAGE=en_US')

      除此之外,我还使用了以下内容:

      $domain = 'woohoo';
      setlocale(LC_ALL, 'en_US.utf8');
      putenv('LANGUAGE=en_US');
      
      if( ENV != 'live' ){
          // reset caching nocache is a simlink to "."
          bindtextdomain($domain, dirname(__FILE__) . '/../locale/nocache');
      }
      
      bindtextdomain($domain, dirname(__FILE__) . '/../locale');
      bind_textdomain_codeset($domain, 'UTF-8');
      textdomain($domain);
      
      此外,在我的设置中,它仅在我将iso代码添加到.po文件时才开始工作:

      msgid ""
      msgstr ""
      "Language: en_US\n"
      

      只需添加以下行

      putenv("LANGUAGE=en_US");
      

      只需添加以下行

      putenv("LANGUAGE=en_US");
      

      对我来说,解决方案是使用“en”作为目录名,而不是“en-US”


      PHP5.2、gettext 0.19.8.1、Ubuntu 18.04、apache2对我来说,解决方案是使用“en”作为目录名,而不是“en-US”


      PHP5.2,gettext 0.19.8.1,Ubuntu 18.04,apache2

      @IliyaReyzis-Nope,我将Ubuntu与PHP,Apache,Mysql一起使用。。在我确保生成的区域设置文件与我的MO文件和
      bind\u textdomain\u codeset()
      共享相同的字符集后,翻译开始为我工作。一些区域设置可以由多个字符集表示,它们的默认字符集不是UTF-8(例如,zh_CN使用GB2312)。我使用
      dpkg重新配置区域设置
      来管理字符集。你可以阅读这篇文章了解更多信息:@IliyaReyzis Nope,我正在使用Ubuntu和PHP、Apache、Mysql。。在我确保生成的区域设置文件与我的MO文件和
      bind\u textdomain\u codeset()
      共享相同的字符集后,翻译开始为我工作。一些区域设置可以由多个字符集表示,它们的默认字符集不是UTF-8(例如,zh_CN使用GB2312)。我使用
      dpkg重新配置区域设置
      来管理字符集。您可以阅读本文了解更多信息:哦,非常感谢!我已经把你给我的代码,它似乎工作!!!谢谢:我真不敢相信就这样!我找了一个小时,结果只差一句话。我从ubutnu16.04升级到18.04,并添加了
      putenv(“语言=$locale”)使它再次工作了…
      .utf8
      为我做了这件事哦,非常感谢!我已经把你给我的代码,它似乎工作!!!谢谢:我真不敢相信就这样!我找了一个小时,结果只差一句话。我从ubutnu16.04升级到18.04,并添加了
      putenv(“语言=$locale”)使它再次工作了…
      .utf8
      为我做了这个把戏他为什么要这么做?请解释差异(语言而不是像他那样的朗)。搜索此主题的新用户会很感激额外的信息。他为什么要这么做?请解释差异(语言而不是像他那样的朗)。搜索此主题的新用户将欣赏额外的信息。