微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何从数据库中创建Codeigniter语言文件?

我正在使用Codeigniter构建一个多语言的在线网站.
我的问题是如何将数据从数据库传递到Codeigniter语言文件.
到目前为止,我的逻辑是运行foreach查询,该查询将使用translation_key和value填充语言文件.问题是语言文件不是一些扩展的CI_class类,现在我不知道如何继续前进.

你会如何解决这个问题?文档没有说明如何将语言类与数据库一起使用.

解决方法:

你走在正确的轨道上.您需要动态创建语言文件(例如,每当您更新数据库的语言内容时)

1st:数据库布局

使用列id,category,description,lang,token创建一个表lang_token,并填充其字段,如下所示:

    CREATE TABLE IF NOT EXISTS `lang_token` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `category` text NOT NULL,
      `description` text NOT NULL,
      `lang` text NOT NULL,
      `token` text NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

    INSERT INTO `lang_token` (`id`, `category`, `description`, `lang`, `token`) 
    VALUES
      (1, 'error', 'noMail', 'english', 'You must submit a valid email address'),
      (2, 'error', 'noUser', 'english', 'You must submit a username');

第二:关于CodeIgniter语言文件

CodeIgniter将首先在您的应用程序/语言目录中查找,每种语言都应存储在自己的文件夹中.确保您创建了英语或德语等子目录,例如应用程序/语言/英文

3rd:控制器功能,即时创建语言文件

关于Codeigniter语言文件
对给定文件中的所有消息使用公共前缀(类别)是一种很好的做法,以避免与其他文件中类似命名的项冲突
结构如:$lang [‘category_description’] =“token”;

    function updatelangfile($my_lang){
        $this->db->where('lang',$my_lang);
        $query=$this->db->get('lang_token');

        $lang=array();
        $langstr="<?PHP  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
                /**
                *
                * Created:  2014-05-31 by Vickel
                *
                * Description:  ".$my_lang." language file for general views
                *
                */"."\n\n\n";



        foreach ($query->result() as $row){
            //$lang['error_csrf'] = 'This form post did not pass our security checks.';
            $langstr.= "\$lang['".$row->category."_".$row->description."'] = \"$row->token\";"."\n";
        }
        write_file('./application/language/'.$my_lang.'/general_lang.PHP', $langstr);

    }

最后的说明:

>每当您更改数据库时,您将调用函数updatelangfile(‘english’)
>不要忘记在updatelangfile()所在的控制器的构造函数中加载文件助手和语言类:

function __construct(){
    parent::__construct();
    $this->load->helper('file');
    $this->lang->load('general', 'english');
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐