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:
- whenever change database, you’ll call function
updatelangfile(‘english’)
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
Post a Comment