Je bent op de goede weg. U wilt direct een taalbestand maken (bijv. telkens wanneer u de taalinhoud van uw database bijwerkt)
1e:de database-indeling
Maak een tabel lang_token
met kolommen id
, category
, description
, lang
, token
en vul de velden als volgt in:
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');
2e:Over CodeIgniter-taalbestanden
CodeIgniter zal eerst in uw applicatie-/taalmap kijken. Elke taal moet in een eigen map worden opgeslagen. Zorg ervoor dat u uw Engelse of Duitse, enz. subdirectories hebt aangemaakt, b.v. application/language/english
3e:Controller-functie om on-the-fly een taalbestand te maken
Over de Codeigniter-taalbestanden:Het is een goede gewoonte om een gemeenschappelijk voorvoegsel (categorie) te gebruiken voor alle berichten in een bepaald bestand om botsingen met gelijknamige items in andere bestanden te voorkomen. De structuur is als volgt:$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);
}
Laatste opmerkingen:
- Telkens wanneer u uw database wijzigt, roept u de functie
updatelangfile(‘english’)
aan -
Vergeet niet de bestandshelper te laden en taalles in de constructor van de controller waar updatelangfile() zich bevindt:
function __construct(){ parent::__construct(); $this->load->helper('file'); $this->lang->load('general', 'english'); }