我使用I18N和.po文件创建了英语和丹麦语的多语言网站。但是,如果我使用I18n :: locale()更改语言,它也会更改管理面板的语言。我只想改变前端的语言。请建议。
提前致谢。
答案 0 :(得分:3)
以您正确的方式更改区域设置是正确的:
AppController
但如果它也在管理面板中进行更改,那么问题纯粹是关于应用程序的结构以及更改区域设置的位置。
例如,如果您在AdminController
中设置区域设置,那么它将针对所有控制器进行更改。有很多方法可以做到。您可以创建一个处理/admin
前缀的 namespace App\Controller\Admin;
use App\Controller\AppController;
use Cake\Event\Event;
use Cake\I18n\I18n;
/**
* Application Controller for `admin` prefixed controllers.
*
* All controllers within the `app/Controller/Admin` directory should extend this
* controller rather than the normal `AppController`.
*/
class AdminController extends AppController
{
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
I18n::locale('en_GB');
}
}
,并为该前缀更改区域设置。
/admin
然后确保您已正确设置app/Controller/Admin
的前缀路由,以便您可以将所有管理控制器放在AdminController
中,并且所有这些控制器都应扩展AppController
而不是{{} 1}}。
答案 1 :(得分:0)
我不想改变我网站的流量。所以我在我的所有前端控制器中使用了18n :: locale(' en_GB')。这解决了我的问题。