CakePHP3:can';我们无法使本地化工作正常进行

CakePHP3:can';我们无法使本地化工作正常进行,cakephp,localization,internationalization,cakephp-3.4,Cakephp,Localization,Internationalization,Cakephp 3.4,根据,我准备了我的本地化文件: /src /Locale /... /es_ES default.po 我的default.po包含如下内容 msgid "Oui" msgstr "Sí" msgid "Non" msgstr "Non" msgid "Continuer" msgstr "Continuar" 在我看来,我当然使用了\(“…”) 我添加了I18n::locale('es_-es')在我的控制器中 但是视图仍

根据,我准备了我的本地化文件:

/src
    /Locale
        /...
        /es_ES
            default.po
我的
default.po
包含如下内容

msgid "Oui"
msgstr "Sí"

msgid "Non"
msgstr "Non"

msgid "Continuer"
msgstr "Continuar"
在我看来,我当然使用了
\(“…”)

我添加了
I18n::locale('es_-es')在我的控制器中

但是视图仍然是默认语言

请问我想念什么

以及如何通过以下方式选择语言:

// inconfig/bootstrap.php
DispatcherFactory::add('LocaleSelector');

// Limite locales to en_US and fr_FR only
DispatcherFactory::add('LocaleSelector', ['locales' => ['en_US', 'fr_FR']]);
编辑 我想我现在必须在3.4中编写以下代码:

class Application extends BaseApplication
{
    /**
     * Setup the middleware your application will use.
     *
     * @param \Cake\Http\MiddlewareQueue $middleware The middleware queue to setup.
     * @return \Cake\Http\MiddlewareQueue The updated middleware.
     */
    public function middleware($middleware)
    {
        $middleware
        // Catch any exceptions in the lower layers,
        // and make an error page/response
        ->add(ErrorHandlerMiddleware::class)
        // Handle plugin/theme assets like CakePHP normally does.
        ->add(AssetMiddleware::class)
        // Apply routing
        ->add(RoutingMiddleware::class)
        ->add(new LocaleSelectorMiddleware(['de', 'fr','en', 'es', 'it', 'nl'])); // I added this to the skeleton
        return $middleware;
    }
}

我还修改了
webroot/index.php

从清除缓存开始(
tmp/cache/persistent
)。此外,您可能还需要详细说明“通过”区域设置选择器过滤器“选择语言”的具体技术问题。ps,从3.4开始,dispatcher筛选器已被弃用,您应该改为使用。@ndm感谢您的回答。所以我删除了
tmp/cache/persistent
,我也遇到了同样的问题。当我使用
I18n::locale('es_-es')为了测试,我认为我不关心潜在的DispatcherFactory问题。不管怎样,它在3.4文档中。不知道如何使用中间件。你能检查我的编辑吗?@ndm所以我们现在必须删除一些行,比如
DispatcherFactory::add('Asset')
bootstrap.php
中?为什么要修改
webroot/index.php
?您是否检查了什么
调试(\Cake\I18n\I18n::locale())
输出?@Mary可能会启用中间件堆栈。