无法让 GETTEXT 与 MAMP 服务器上的 PHP 和 Windows 10 一起使用
Can't get GETTEXT to work with PHP on MAMP server and Windows 10
我想使用 gettext
和 poedit
以及 php
进行网站翻译。我可以让 poedit
工作,但 gettext
在我的本地 Web 开发环境 MAMP
中似乎不起作用,至少我认为这是问题所在。
我的规格:
OS: Windows 10
Gettext 0.21 with Libiconv 1.16 (installed with executable)
Dev Server: MAMP 4.2 (both apache and nginx server show the same error)
Dev Environment: PhpStorm (with MAMP local server set up)
PHP: 7.4 or 8.0 (both throw error)
Browser: Chrome and Firefox (both throw error)
MWEHTML:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1><?php gettext("Welcome") ?></h1>
</body>
</html>
输出:
Fatal error: Uncaught Error: Call to undefined function gettext() in C:\MAMP\htdocs\test\test.php:8 Stack trace: #0 {main} thrown in C:\MAMP\htdocs\test\test.php on line 8
我已经重新安装 MAMP
并更新了 gettext
但错误仍然存在。我错过了什么吗?
我也会对你们如何专业地进行翻译感兴趣。 Poedit
很方便,但有更好的方法吗?到目前为止,我只见过 PHP
或 Laravel
数组,当你有大 paragraphs
和 spans
时,使用它们非常不愉快。
编辑:
运行 phpinfo()
显示 gettext
:
在环境中:
在PHP变量中:
编辑2:
php_gettext.dll
可以在 php/ext
目录中找到并且 extention=gettext
在 php.ini
.
中激活
运行 php -r "echo gettext('hello');"
在 php
目录中产生:
PHP Warning: PHP Startup: Unable to load dynamic library 'gettext' (tried: C:\php\ext\gettext (Das angegebene Modul wurde nicht gefunden), C:\php\ext\php_gettext.dll (Das angegebene Modul wurde nicht gefunden)) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'gettext' (tried: C:\php\ext\gettext (Das angegebene Modul wurde nicht gefunden), C:\php\ext\php_gettext.dll (Das angegebene Modul wurde nicht gefunden)) in Unknown on line 0
PHP Fatal error: Uncaught Error: Call to undefined function gettext() in Command line code:1
Stack trace:
#0 {main}
thrown in Command line code on line 1
Fatal error: Uncaught Error: Call to undefined function gettext() in Command line code:1
Stack trace:
#0 {main}
thrown in Command line code on line 1
我从 php -i
中提取了 extension_dir
,即 C:PHP/ext
。这个目录以前不存在。我已经通过将 C:\Program Files\gettext-iconv\lib\gettext
移到里面但没有变化来测试它。 gettext 文件夹中没有 .so
文件,这与@cetver 的回答不同。在那之后,我尝试将我的整个 PHP dist 移动到 C:PHP
但这也没有改变任何东西。
简而言之:我将 gettext 移到了 php extension dir
但它没有帮助。
编辑3:
现在我重新启动了我的机器,它工作了!
phpinfo()
现在显示 gettext
并且站点加载:
带走:
使用 C:PHP
作为你的 PHP
距离。
为 CLI SAPI 加载的 gettext
扩展:
$ php -r "echo gettext('hello');"
Web SAPI没有: 在phpinfo页面上搜索compile flag --with-gettext[=DIR]
- 查找扩展目录:
php -i | grep extension_dir
(例如 extension_dir => /usr/lib/php/20190902 => /usr/lib/php/20190902
)
- 找到gettext扩展路径:
find /usr/lib/php/20190902 | grep gettext
(例如/usr/lib/php/20190902/gettext.so)
- 从 cli 目录复制扩展到 web 目录:
cp /usr/lib/php/20190902/gettext.so <phpinfo_page>/extension_dir_path
- 重新加载网络服务器
我想使用 gettext
和 poedit
以及 php
进行网站翻译。我可以让 poedit
工作,但 gettext
在我的本地 Web 开发环境 MAMP
中似乎不起作用,至少我认为这是问题所在。
我的规格:
OS: Windows 10
Gettext 0.21 with Libiconv 1.16 (installed with executable)
Dev Server: MAMP 4.2 (both apache and nginx server show the same error)
Dev Environment: PhpStorm (with MAMP local server set up)
PHP: 7.4 or 8.0 (both throw error)
Browser: Chrome and Firefox (both throw error)
MWEHTML:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1><?php gettext("Welcome") ?></h1>
</body>
</html>
输出:
Fatal error: Uncaught Error: Call to undefined function gettext() in C:\MAMP\htdocs\test\test.php:8 Stack trace: #0 {main} thrown in C:\MAMP\htdocs\test\test.php on line 8
我已经重新安装 MAMP
并更新了 gettext
但错误仍然存在。我错过了什么吗?
我也会对你们如何专业地进行翻译感兴趣。 Poedit
很方便,但有更好的方法吗?到目前为止,我只见过 PHP
或 Laravel
数组,当你有大 paragraphs
和 spans
时,使用它们非常不愉快。
编辑:
运行 phpinfo()
显示 gettext
:
在环境中:
在PHP变量中:
编辑2:
php_gettext.dll
可以在 php/ext
目录中找到并且 extention=gettext
在 php.ini
.
运行 php -r "echo gettext('hello');"
在 php
目录中产生:
PHP Warning: PHP Startup: Unable to load dynamic library 'gettext' (tried: C:\php\ext\gettext (Das angegebene Modul wurde nicht gefunden), C:\php\ext\php_gettext.dll (Das angegebene Modul wurde nicht gefunden)) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'gettext' (tried: C:\php\ext\gettext (Das angegebene Modul wurde nicht gefunden), C:\php\ext\php_gettext.dll (Das angegebene Modul wurde nicht gefunden)) in Unknown on line 0
PHP Fatal error: Uncaught Error: Call to undefined function gettext() in Command line code:1
Stack trace:
#0 {main}
thrown in Command line code on line 1
Fatal error: Uncaught Error: Call to undefined function gettext() in Command line code:1
Stack trace:
#0 {main}
thrown in Command line code on line 1
我从 php -i
中提取了 extension_dir
,即 C:PHP/ext
。这个目录以前不存在。我已经通过将 C:\Program Files\gettext-iconv\lib\gettext
移到里面但没有变化来测试它。 gettext 文件夹中没有 .so
文件,这与@cetver 的回答不同。在那之后,我尝试将我的整个 PHP dist 移动到 C:PHP
但这也没有改变任何东西。
简而言之:我将 gettext 移到了 php extension dir
但它没有帮助。
编辑3:
现在我重新启动了我的机器,它工作了!
phpinfo()
现在显示 gettext
并且站点加载:
带走:
使用 C:PHP
作为你的 PHP
距离。
为 CLI SAPI 加载的 gettext
扩展:
$ php -r "echo gettext('hello');"
Web SAPI没有: 在phpinfo页面上搜索compile flag --with-gettext[=DIR]
- 查找扩展目录:
php -i | grep extension_dir
(例如 extension_dir => /usr/lib/php/20190902 => /usr/lib/php/20190902 ) - 找到gettext扩展路径:
find /usr/lib/php/20190902 | grep gettext
(例如/usr/lib/php/20190902/gettext.so) - 从 cli 目录复制扩展到 web 目录:
cp /usr/lib/php/20190902/gettext.so <phpinfo_page>/extension_dir_path
- 重新加载网络服务器