如何在Cakephp 3中仅更改前端语言

时间:2017-01-27 10:29:22

标签: cakephp internationalization locale frontend multilingual

我使用I18N和.po文件创建了英语和丹麦语的多语言网站。但是,如果我使用I18n :: locale()更改语言,它也会更改管理面板的语言。我只想改变前端的语言。请建议。

提前致谢。

2 个答案:

答案 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}}。

Recent Files

答案 1 :(得分:0)

我不想改变我网站的流量。所以我在我的所有前端控制器中使用了18n :: locale(' en_GB')。这解决了我的问题。