我正在使用CakePHP 3.5。當我的瀏覽器是英文的,一切都很好。默認語言環境是en_US,因爲我設置了它,並且如果將語言環境設置爲fr_CA(I18n :: setLocale('fr_CA')),我可以顯示法語內容。但是,當我將瀏覽器的語言更改爲fr_CA時,它以某種方式將默認語言環境也更改爲fr_CA。因此,該網站以法語顯示,但內容仍顯示在英語,因爲它現在是默認的語言環境CakePHP 3.5轉換行爲I18n :: getDefaultLocale()自己改變
設置默認的語言環境中的配置\ app.php
'App' => [
'namespace' => 'App',
'encoding' => env('APP_ENCODING', 'UTF-8'),
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
.....
],
添加在SRC \應用有效的語言環境.PHP
$middlewareQueue->add(new LocaleSelectorMiddleware(['en_US', 'fr_CA']));
添加翻譯行爲ArticlesTable.php
$this->addBehavior('Translate', [
'fields' => ['name', 'slug'],
'allowEmptyTranslations' => false,
]);
抓取在ArticlesController.php
$query = $this->Articles->find('all')
->where(['Articles.name !=' => ''])
->contain(['Media' => function ($q) {
return $q->find('medium');
}]);
的內容時,我的瀏覽器是英文(EN_US)和我呼應的I18n :: getDefaultLocale()
'en_US'
當它在法語(fr_CA)和我贊同I18N :: getDefaultLocale();
'fr_CA'
注意,我更新到3.5的CakePHP最近,跟着嚮導,以添加中間件: Adding the new HTTP Stack to an Existing Application