php - How to create Codeigniter language files from database? -


i'm building multi-language online site codeigniter. question how pass data database codeigniter language files. logic far run foreach query, populate language file translation_key , value. problem language files aren't extended ci_class classes , don't know how move on.

how approach problem? documentation doesn't nothing how use language class database.

you on right track. you’ll want create language file on fly (e.g. whenever update language contents of database)

1st: database layout

create table lang_token columns id, category, description, lang, token , populate fields this:

    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 `lang_token` (`id`, `category`, `description`, `lang`, `token`)      values       (1, 'error', 'nomail', 'english', 'you must submit valid email address'),       (2, 'error', 'nouser', 'english', 'you must submit username'); 

2nd: codeigniter language files

codeigniter first in application/language directory, each language should stored in own folder. make sure have english or german, etc. subdirectories created e.g. application/language/english

3rd: controller function create language file on fly

about codeigniter language files: it's practice use common prefix (category) messages in given file avoid collisions named items in other files there structure like: $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 vickel                 *                 * description:  ".$my_lang." language file general views                 *                 */"."\n\n\n";            foreach ($query->result() $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);      } 

final notes:

  1. whenever change database, you’ll call function updatelangfile(‘english’)
  2. don’t forget load file helper , language class in constructor of controller updatelangfile() located:

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

Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -