【问题标题】:adding i18n functionality in laminas在层中添加 i18n 功能
【发布时间】:2020-07-09 03:33:12
【问题描述】:

Laminas 新手,我正在学习“入门:骨架应用程序”教程。

接近尾声,我发现我可能对有关 i18n 的安装问题回答“否”,这里我遇到了一个致命错误:Uncaught Laminas\I18n\Exception\ExtensionNotLoadedException...

应该使用 [Github]https://github.com/laminas/laminas-mvc-i18n 和组件安装程序解决此问题。但我仍然有错误,即使在重新启动 Apache 之后。

回顾 laminas 组件安装程序和 laminas-mvc-i18n 的安装,一切看起来都很好。那又怎样?

编辑 1 也许我没有正确阅读? 这是完整的错误:

致命错误:未捕获的 Laminas\I18n\Exception\ExtensionNotLoadedException: Laminas\I18n\Translator 组件需要 C:\xampp\htdocs\laminas-mvc-skeleton\vendor\laminas\laminas-i18n\src\ 中的 intl PHP 扩展Translator\Translator.php:258 堆栈跟踪:#0 C:\xampp\htdocs\laminas-mvc-skeleton\vendor\laminas\laminas-i18n\src\Translator\Translator.php(354): Laminas\I18n\Translator\ Translator->getLocale() #1 C:\xampp\htdocs\laminas-mvc-skeleton\vendor\laminas\laminas-mvc-i18n\src\Translator.php(71): Laminas\I18n\Translator\Translator->translate ('Laminas MVC Ske...', 'default', NULL) #2 C:\xampp\htdocs\laminas-mvc-skeleton\vendor\laminas\laminas-view\src\Helper\HeadTitle.php(163): Laminas\Mvc\I18n\Translator->translate('Laminas MVC Ske...', 'default') #3 C:\xampp\htdocs\laminas-mvc-skeleton\vendor\laminas\laminas-view\src\Helper \HeadTitle.php(86): Laminas\View\Helper\HeadTitle->Laminas\View\Helper{closure}('Laminas MVC Ske...') #4 C:\xampp\htdocs\laminas-mvc-skeleton\供应商\薄片\lam inas-view\src\Helper\HeadTitle.php(70): 在 C:\xampp\htdocs\laminas-mvc-skeleton\vendor\laminas\laminas-i18n\src\Translator\Translator.php 在第 258 行

所以问题出在译者身上。哪个翻译?我只用英文。

编辑 2

所以我再次尝试使用从头开始的新安装。这次我对所有选项都确认了是,即当被要求安装 i18n 和所有其他选项时,我的回答是肯定的。

我使用内置 PHP Web 服务器而不是 Apache 进行了测试。

结果还是一样的错误!

编辑 3

我在 composer.json 中的扩展列表

    "laminas/laminas-component-installer": "^1.0 || ^2.1",
    "laminas/laminas-development-mode": "^3.2",
    "laminas/laminas-mvc": "^3.1.1",
    "laminas/laminas-cache": "^2.9.0",
    "laminas/laminas-db": "^2.10.0",
    "laminas/laminas-mvc-form": "^1.0",
    "laminas/laminas-json": "^3.1.2",
    "laminas/laminas-log": "^2.11",
    "laminas/laminas-mvc-console": "^1.2.0",
    "laminas/laminas-mvc-i18n": "^1.1.1",
    "laminas/laminas-mvc-plugins": "^1.0.1",
    "laminas/laminas-psr7bridge": "^1.2.0",
    "laminas/laminas-session": "^2.9.1",
    "laminas/laminas-di": "^3.1.1"

【问题讨论】:

  • 听起来就像你的 PHP 安装没有安装那个分机。我有一个疯狂的猜测,你正在运行 OS X?默认安装自带 7.2 或 7.3 可以通过运行php -iphpinfo() 发布配置吗
  • 我在 win10 上使用 PHP 7.4.3。运行 php -info 时确实看不到 i18n。应该在吗?
  • 但是我可以在 /vendor/laminas 中找到 laminas-mvc-i18n
  • Composer.json 和 composer.lock 都引用 laminas/laminas-mvc-i18n
  • 我觉得有必要说一下,反正教程中不需要这个分机。

标签: laminas


【解决方案1】:

正如错误所说:

致命错误:未捕获的 Laminas\I18n\Exception\ExtensionNotLoadedException:Laminas\I18n\Translator 组件需要 intl PHP 扩展

您在安装 xampp 时缺少 INTL PHP 扩展。参考xampp手册安装缺少的扩展。

运行 php -info 时确实看不到 i18n。应该在吗?

确实如此。

【讨论】:

  • 应该是对的,但是在关注stackoverflow.com/questions/33869521/…之后我仍然无法让它工作。
  • 我在 php.ini-development 文件中删除了 extension=intl 之前的分号,甚至还添加了 extension_dir = "ext" 。我想确保加载这个 ini 开发文件而不是 php.ini (它不存在 - 但使用 php -i 我看到 Loaded Configuration File => C:\xampp\php\php.ini ,其中令人困惑)
  • 文件php.ini-developement等是模板文件。您需要将特定的php.ini-development 重命名为php.ini。您不能更改路径,只需删除分号。请花点时间关注有关 XAMP 和 PHP 配置的文档,否则这是浪费时间。
  • 现在可以了。扩展在配置文件的窗口中不可见,而我根本没有看到 php.ini,这让我感到困惑。我只需要删除这个文件中的分号。谢谢,你应该得到赏金。
猜你喜欢
  • 2021-04-14
  • 2015-01-09
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多