Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用json文件使CodeIgniter与多语言一起工作_Codeigniter - Fatal编程技术网

如何使用json文件使CodeIgniter与多语言一起工作

如何使用json文件使CodeIgniter与多语言一起工作,codeigniter,Codeigniter,我有一个脚本,虽然有多语言选项,但它的设计方式是,所有用户只能设置一种语言,我有一些json文件,其中包含翻译的消息,我只能选择一种语言 然后,所选语言被写入数据库,并由助手文件访问: if ( ! function_exists('get_phrase')) { function get_phrase($phrase = '') { $CI =& get_instance(); $CI->load->database();

我有一个脚本,虽然有多语言选项,但它的设计方式是,所有用户只能设置一种语言,我有一些json文件,其中包含翻译的消息,我只能选择一种语言

然后,所选语言被写入数据库,并由助手文件访问:

if ( ! function_exists('get_phrase'))
{
    function get_phrase($phrase = '') {
        $CI =&  get_instance();
        $CI->load->database();
        $language_code = $CI->db->get_where('settings' , array('key' => 'language'))->row()->value;
        $key = strtolower(preg_replace('/\s+/', '_', $phrase));
        $langArray = openJSONFile($language_code);
        if (array_key_exists($key, $langArray)) {
        } else {
            $langArray[$key] = ucfirst(str_replace('_', ' ', $key));
            $jsonData = json_encode($langArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
            file_put_contents(APPPATH.'language/'.$language_code.'.json', stripslashes($jsonData));
        }

        return $langArray[$key];
    }
我需要帮助的是用户选择所需语言的方法,并且该选择将存储在会话中,以便不同的用户可以使用不同的语言

我不是一个CodeIgniter高手,所以一步一步地了解要更改的文件的更改和位置会很感激


我对基本的CodeIgniter多语言支持做了一些研究,但它们都采用了一种不同的方法,在这个脚本中使用钩子和语言目录。这意味着,如果该项目被翻译成假装的语言,它将显示,否则它将返回到字符串“世界冲浪储备”;这很有用,因为您不会失去对视图文本的控制。在语言文件(例如(application/language/PT)中,您可以创建所有必需的数组项,并通过数据库调用为其提供数据……请在此处检查我的回答:我使用的是类似于:
$this->lang->line('wsl')的内容?:'World Surfing Reserve';
。这意味着,如果项目被翻译成假装的语言,它会显示,否则它会返回到字符串“World Surfing Reserve”;这很有用,因为您不会失去对视图文本的控制。在语言文件中(例如:(application/language/PT),您可以创建所有必需的数组项,并通过数据库调用为其提供数据…请在此处查看我的答案: