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可能会启用中间件堆栈。