首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CodeIgniter中将数据传递到语言文件

在CodeIgniter中将数据传递到语言文件
EN

Stack Overflow用户
提问于 2012-08-10 06:29:17
回答 2查看 1.3K关注 0票数 1

我正在使用CodeIgniter的库来更改站点上的语言。这是我从控制器加载语言文件的方式:

代码语言:javascript
复制
$this->load->helper('language');
$this->load->helper('url');
$this->lang->load('custom','english');

但是我需要将一些数据从数据库传递到那个语言文件(custom_lang.php),而我不知道怎么做?敬请指教...

EN

回答 2

Stack Overflow用户

发布于 2012-08-10 07:19:43

我猜你想要处理翻译文本中的变量,比如“你有XYZ新消息”?

简单地在翻译文本中放置一些特定的标记,然后使用str_replace填充所需的值,就像这样"You %num_messages% new message“。

在控制器中使用以下命令:

代码语言:javascript
复制
$parsed_text = str_replace ("%num_messages%", $msg_count, $input_translation_text);

然后将$parsed_text分配给模板/视图。

票数 0
EN

Stack Overflow用户

发布于 2014-06-01 01:35:35

这是针对Codeigniter2.0的。

您需要动态创建一个语言文件(custom_lang.php) (例如,每当您更新数据库的语言内容时)

layout:数据库布局

创建一个包含列idcategorydescriptionlangtoken的表lang_token,并按如下方式填充其字段:

代码语言:javascript
复制
    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');

language :关于CodeIgniter语言文件

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

3:动态创建语言文件的控制器函数

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

代码语言:javascript
复制
    function updatelangfile($my_lang){
        $this->db2->where('lang',$my_lang);
        $query=$this->db2->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.'/custom_lang.php', $langstr);

    }

结束语:

updatelangfile每当您更改数据库时,您将调用函数updatelangfile(‘english’)

  • Don’t忘记在
  1. ()所在的控制器的构造函数中加载文件助手和语言类:

function __construct(){ parent::__construct();$this->load->helper('file');$this->lang->load(‘自定义’,‘英语’);}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11892925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档