CakePHP 4国际化不工作

6ovsh4lw  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(180)

我有一个控制器方法,它有I18n::setLocale('de_DE');这一行。根据ver.4文档,我还有下面的文件结构。

-resources
--locales
---de_DE
----default.po

后一个文件包含一个单独的翻译。简而言之,我完全按照Cake教程中关于国际化的内容来做,但是消息没有被翻译,而是保持在代码中所写的英语。为了以编程方式更改界面语言,是否需要进行任何额外的设置?

axr492tv

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");
}

相关问题