当前位置: 首页 > 面试题库 >

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

干照
2023-03-14
问题内容

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

您将如何处理该问题?文档没有说明如何在数据库中使用语言类。


问题答案:

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

第一:数据库布局

创建一个表lang_token的列idcategorydescriptionlangtoken,填充它的领域是这样的:

    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将首先在您的application /
language目录中查找,每种语言应存储在其自己的文件夹中。确保创建了英语或德语等子目录,例如application/language/english

第三:控制器功能可即时创建语言文件

关于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);

    }

最后说明:

  1. 每当您更改数据库时,都将调用该函数 updatelangfile(‘english’)
  2. 不要忘记在updatelangfile()所在的控制器的构造函数中加载 文件助手语言类
    function __construct(){
    parent::__construct();
    $this->load->helper('file');
    $this->lang->load('general', 'english');
    

    }



 类似资料:
  • 我在使用文本文件创建SQLite数据库时遇到了问题。我应该创建一个成员列表,其中包含以下内容:(成员)号、名字、姓氏、地址和电话号码(如果有的话)。我正在使用方法创建db,但我似乎无法让它正常工作。 文本文件是这样填充的('...'应该意味着列表中还有其他文件): 正如你可能看到的,一些成员没有电话号码,我认为这是导致db无法填充的原因。我之所以相信这一点,是因为我试图用所有信息制作自己的列表,这

  • 问题内容: 我有一个名为“ clients”的Sqlite 3和/或MySQL表。 使用python 2.6,如何创建带有标题的名为Clients100914.csv的csv文件?excel方言… Sql execute:select *仅提供表数据,但是我想要带有标题的完整表。 如何创建记录集以获取表头。表头应该直接来自不是用python编写的sql。 这段代码使我无法打开文件,也没有标题。也无

  • “我正在设置一个文件浏览器,并将文件夹的名称保存在数据库中。任何数量的文件夹都可以保存在数据库中,从保存的数据中,我想创建一个json树。 这是我的数据库表结构 parent\u id是一个外键,用于引用文件夹id。 这是我试图从上述数据库创建的json树结构,将来将添加更多父文件夹和子文件夹。是否可以从上面的表结构中创建json树?有人能帮我吗?

  • 问题内容: 有一个普通的Java API的JavaDoc,有英文版和中文版,但似乎每个版本都需要单独的源代码。还有其他更方便的方法吗? 问题答案: 不,基本上没有办法。 想到的唯一变通方法适用于生成的HTML页面:您可以将JavaDocs包围在使用CSS在语言之间切换的块元素中。考虑: 随后编辑JavaDocs的CSS,以便用户可以切换语言,例如:

  • 问题内容: 是否可以从结构动态创建mysql数据库。 好像卡在了密码提示符下 问题答案: 试试吧

  • 问题内容: 我有一个查询,需要查询该记录是否将其包括在查询中之前,该记录是否仍处于活动状态。现在我的问题是该记录的记录状态在另一个数据库中,我们都知道我们无法联接来自不同数据库的表。 我想要做的是从另一个数据库创建一个视图,然后将该视图加入我的查询中。问题是如何在CodeIgniter中创建视图并从中选择数据? 提前致谢。 顺便说一句,我不是设计数据库的人。 -公司定义- 这是我查询的一个示例,由