我有一个控制器方法,它有I18n::setLocale('de_DE');这一行。根据ver.4文档,我还有下面的文件结构。
I18n::setLocale('de_DE');
-resources --locales ---de_DE ----default.po
后一个文件包含一个单独的翻译。简而言之,我完全按照Cake教程中关于国际化的内容来做,但是消息没有被翻译,而是保持在代码中所写的英语。为了以编程方式更改界面语言,是否需要进行任何额外的设置?
axr492tv1#
我的cakephp代码是:
public function changeLanguage(){ if($this->request->is('post')){ $this->autoRender = false; $this->set('csrfToken', $this->request->getAttribute('csrfToken')); $selected = $this->request->getData('language'); $this->request->getSession()->write('Config.language', $selected); I18n::setLocale('de_DE'); //hardcoded just for testing return $this->response->withType('application/json')->withStringBody(json_encode(array('status' => 'OK'))); } } And frontend is JS driven: function openLangModal(){ let token = $('[name="_csrfToken"]').val(); $("#lang-select-btn").unbind(); $("#lang-select-btn").click(function(){ var lang = $("#language").val(); var postUrl = '<path-to-backend>/changeLanguage'; $.ajax({ url: postUrl, async: true, dataType: 'json', type: 'POST', data: {language: lang, _csrfToken: token}, success: function(data){ location.href=location.href; } }); }); $("#langModal").modal("show"); }
1条答案
按热度按时间axr492tv1#
我的cakephp代码是: