问题标签 [php-gettext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8888 浏览

php - php-gettext 已安装但不可用

我在 Ubuntu 16.04 上安装了以下软件包:

  • apache2 2.4.18-2ubuntu3.1
  • php-gettext 1.0.11-2build1
  • 获取文本 0.19.7-2ubuntu3
  • php7.0 7.0.15-0ubuntu0.16.04.4

我打电话时唯一提到 gettextphpinfo()是在模块作者部分(“GetText = Alex Plotnick”),所以我认为支持已经正确编译。

似乎 gettext 没有正确加载到 PHP 中,因为以下代码:

确实打印“您没有使用 PHP 安装 gettext 库。”

除了文档,php-gettext我安装的唯一文件是:

我还没有真正触及任何 php 或 apache 配置(除了尝试安装icingaweb2

谁能看到我的问题可能是什么?

更新 更多调试...

0 投票
1 回答
359 浏览

internationalization - 在翻译之前在 Twig 中输出一个变量?

我正在使用带有 Twig 和翻译扩展 i18n 的 Slim PHP 微框架。

我需要输出翻译后的国家/地区名称,并且更愿意使用翻译扩展来完成它,而不是构建一个数组并在 PHP 中手动获取名称。

所以我在我的 Twig 模板中尝试了这个:

这在我的.po文件中:

我希望这会导致

但相反,我只是得到

是否可以将翻译扩展解析trans-country-name(NO)为要翻译的文本?

0 投票
1 回答
148 浏览

internationalization - 使用 Twig 和 i18n 扩展单独翻译部分字符串?

我有一个看起来像的字符串

我想把它翻译成瑞典语

问题是数字123456和国家名称United States是动态生成的,但字符串以其最终形式传递给 Twig 模板(它用于<meta name="description" ... />.

我已经有一个.po包含我正在翻译的国家名称的文件,包括

生成的元描述字符串可以包含数字和国家名称的任意组合,因此我无法对整个字符串进行硬编码。有什么办法可以重新使用我现有的国家名称翻译并将它们翻译到元描述字符串中,并让数字保持原样?还是我需要先以某种方式拆分字符串,然后单独翻译每个部分?

0 投票
0 回答
299 浏览

php - 如何通过配置文件为 `LC_MESSAGES` 设置语言环境?

在设置gettextPHP 时,需要声明(除其他外)这两件事(在我的示例中,我正在使用en_US):

我试图将这些东西移到 PHP 配置文件中,所以我设置了环境变量LANG

这似乎没问题,第二个命令不再需要它才能工作。

但似乎没有任何这样的替代方案LC_MESSAGES。在我的情况下将其设置为环境变量不起作用,尽管文档中setlocale()说:

如果 locale 为 NULL 或空字符串 "",则 locale 名称将从与上述类别同名的环境变量的值中设置,或者从 "LANG" 中设置。

因为在我的情况下,LC_MESSAGES它不是空的,而是返回C,我不知道它的含义以及该值的来源。

我在文件中找到的最接近的东西php.ini是一个名为intl.default_locale,我已将其设置为intl.default_locale=en_US.utf8,但没有任何变化。

所以我只是想知道它是否可以通过配置文件来完成?

0 投票
0 回答
51 浏览

php - PHP + Poedit + Gettext 不适用于西班牙语

我正在开发一个使用 Poedit 进行翻译的多语言 PHP 网站,但我遇到了特定语言的问题,即西班牙语。

我将开始说,在服务器中(网站发布后)两种语言都可以正常工作,但在我的 DEV 环境中,只有英语被翻译。

仅供参考,我的 Ubunto 系统上没有安装西班牙语语言环境,所以我通过以下方式安装它们:sudo apt-get install language-pack-es并通过以下方式生成相关内容: sudo locale-gen es

我的网站下有下一个文件夹结构:

set_locale.php 文件是下一个:

我用以下方式翻译文本:

但是对于西班牙语,我得到了密钥(示例后面的 home_title),但没有得到翻译。

有什么帮助吗?

谢谢。

0 投票
1 回答
69 浏览

php - 如何在php中隐藏gettext信息

我正在使用 gettext PHP 函数编写简单的脚本。一切都很好,但我试图监控什么改变了什么。

例如,当用户更改 2 个字段时

我的 editinfo 生成器看起来像这样

但我收到了这样的信息

如您所见,所有翻译都运行良好,但是当字段为空时,gettext 函数会返回一些疯狂的东西,但我想拥有

所以我的问题是我应该在我的服务器中更改 PHP 或 PHP 设置以隐藏该 gettext 信息。在这种情况下,我想设置“如果 gettext 找不到翻译就写纯文本”。

问候

0 投票
1 回答
18 浏览

php - 自动将Gettext添加到目录中所有php文件中的所有日文文本中

我有大约 500 个 php 文件,其中包含一些要翻译的日语文本。我想将 gettext 添加到所有这些日文文本中。如何在所有 php 文件中自动添加它

0 投票
1 回答
2031 浏览

php - 带有 php7.0 的 Ubuntu 20.04 PhpMyAdmin 错误 500 - caching_sha2_password]

当我在 Ubuntu 20.04 中使用 php 7.0 版并尝试打开:http://localhost/phpmyadmin/ - 然后:HTTP ERROR 500 appers。

当我尝试打开与数据库连接的任何其他页面时,会出现:

  • “消息:mysqli::real_connect():服务器请求客户端未知的身份验证方法 [caching_sha2_password]”
  • “mysqli::real_connect(): (HY000/2054): 服务器请求客户端未知的身份验证方法”

在此处输入图像描述 在此处 输入图像描述

当我将 php 版本更改为 7.4 时 - 一切正常(phpmyadnim 和页面)

我检查了 7.0 版的日志(tail /var/log/apache2/error.log),出现错误:

  • “PHP 解析错误:语法错误,意外的 'const' (T_CONST),预期变量 (T_VARIABLE) 在 /usr/share/php/PhpMyAdmin/MoTranslator/Translator.php 的第 58 行

在此处输入图像描述

我试过安装:

sudo apt-get install php-mbstring php7.0-mbstring php-gettext

但每次我这样做 - 我都会得到信息:“无法找到包 php-gettext”

在 php 版本 7.4 上一切正常。但我想使用 php 7.0 版。

我试过:

  • 再次删除并安装 phpmyadmin
  • 再次删除并安装php 7.0版
0 投票
0 回答
67 浏览

php - 使用“CGI(每个主机可能设置为不同的 PHP 版本)”导致 gettext/_() 崩溃 apache

我正在使用 MAMO PRO (Trail) 版本 6.3 (30448)。目前我必须设置主机,尽管无论主机数量如何都会发生此问题。

当我使用“语言 -> PHP -> 模式:CGI(每个主机可能设置为不同的 PHP 版本)”设置时,它会导致网站崩溃。MySQL 或 PHP 日志中没有错误。

但是,我在 apache 的日志中收到此错误:

无论 PHP 版本如何,都会发生这种情况。经过大量(!!)谷歌搜索并最终使用 xdebug 逐步执行后,我发现使用 gettext/_() 时会发生这种情况(https://www.php.net/manual/en/function.gettext.php) ,通常在 WordPress 中用于翻译。

gettext 扩展是根据 phpinfo() 和 get_loaded_extensions() 加载的。

例子。index.php 文件包含以下内容:

任何人都知道如何解决这个问题?它快把我逼疯了。:-)