当前位置: 首页 > 知识库问答 >
问题:

PHP gettext不工作,如何调试?

卢知
2023-03-14

我一直在尝试建立一个PHP网站。不管我怎么努力,我都无法让gettext开始工作。

我正在运行一个ubuntu apache服务器上的流浪框,我需要的所有区域设置都是可用的和生成的(使用区域设置-a检查)。

已安装并启用Gettext(使用phpinfo()检查)

这是我的PHP:

$locale = 'en_US'

putenv('LANGUAGE=' . $locale); //found it somewhere, doesn't make a difference though
putenv('LC_ALL=' . $locale);
echo setlocale(LC_ALL, $locale); //seems to work fine

echo bindtextdomain($locale, "/vagrant/build/locale"); //folder exists and corresponds with return string
textdomain($locale);

echo gettext("Not working!");

这是我的/vagrant/build/locale/en_US/LC_MESSAGES/en_US。采购订单文件

msgid ""
msgstr ""
"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "Not working!"
msgstr "ITS WORKIN OMFG!"

一切似乎都很顺利,只是翻译不起作用。

我尝试添加. utf-8(和变体,如。UTF-8和. utf8)到putenv()、setlocale()和文件夹名称中的区域设置,但没有任何更改。

如何调试这种东西?输出变量只带我到目前为止,因为一切似乎都在工作。

我是不是漏掉了什么?我在这个问题上浪费了很多时间,我只是希望我用了关联数组。

共有2个答案

华振
2023-03-14

我已经尝试帮助那些仍然在这里寻找的人:PHP gettext不起作用

简而言之,是您的语言定义导致了问题。

希望这有所帮助。

郝哲茂
2023-03-14

我在Windows上也有同样的问题,原因是操作系统不知道我在gettext中使用的特定语言。我解决了在系统设置中安装所有所需语言的问题。

请阅读php手册中的注释:

注意:在Windows上,setlocale(LC_ALL“”)通过系统的区域/语言设置(可通过控制面板访问)设置区域名称。

http://php.net/manual/en/function.setlocale.php

我希望这能解决你的问题。

 类似资料:
  • 我试图使用PHP gettext扩展在PHP 5.5(在win2008服务器上,使用IIS7)。我正在这样做: 有了这个文件夹结构: 但它总是只是返回Hello world,而不是正确的翻译,目前(基于我缺乏西班牙语技能)在messages.po文件中是这样的: 这从cmd线路和通过IIS失败。所以我看到gettext调用,等等,并执行它,但它没有读取翻译文件。即使删除翻译文件,我得到相同的行为。

  • 问题内容: 给出以下Mockito语句: 考虑到嘲笑方法将返回值传递给when(),Mockito如何为该嘲笑创建代理?我想这会使用一些CGLib的东西,但是有兴趣知道这在技术上是如何完成的。 问题答案: 简短的答案是,在您的示例中,的结果mock.method()将是类型合适的空值;Mockito通过代理,方法拦截和类的共享实例使用间接方式,MockingProgress以确定对模拟方法的调用是

  • 我正在使用Maven和Spring Boot。我使用运行应用程序。 https://flywaydb.org/documentation/plugins/springboot说应该在Spring Boot启动时调用Flyway。 所以我的pom.xml包含对Flyway的依赖关系。 当Spring Boot启动(加载并使我的web应用程序可用)时,没有来自Flyway的日志。我觉得Flyway被忽

  • 我开始为Python使用vscode。我有一个简单的测试程序。我想在debug下运行它,我需要设置运行的工作目录。 我该怎么做/在哪里做?

  • 鉴于以下Mockito语句: 假设mock.method()语句将返回值传递给when(),Mockito如何为mock创建代理?我想这使用了一些CGLib的东西,但我想知道这是如何在技术上完成的。

  • 我在Android Studio工作,多年来一直在正常模式和调试模式下愉快地运行。突然,调试模式对我来说停止了工作。 如果我尝试单击调试按钮(带有“播放”三角形的小错误),它会尝试在模拟器中启动,但应用程序永远不会打开。 在模拟器上,我得到了“等待调试器”的警告,以及“强制关闭”的选项。在Android Studio本身,底部的调试窗口反复显示“等待应用程序上线:”然后“无法连接到远程进程。正在中