Création de fichiers de langue dynamique pour des sites Web multilingues à l'aide de CodeIgniter
Problème :
Quand En créant un site en ligne multilingue avec CodeIgniter, les utilisateurs peuvent rencontrer le défi de transmettre des données d'une base de données vers des fichiers de langue. La classe de langage intégrée ne prend pas en charge nativement l'intégration de bases de données.
Solution :
Disposition de la base de données :
Créez une table appelée lang_token avec des colonnes pour stocker les informations relatives à la langue :
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 ;
Structure des fichiers de langue CodeIgniter :
Les sous-répertoires anglais ou allemand, etc. doivent être créés dans le répertoire application/langue. Chaque langue doit être stockée dans son propre dossier.
Création de fichiers de langue à la volée :
Une fonction personnalisée updatelangfile() peut être créée dans un contrôleur pour générer une langue. fichiers de manière dynamique :
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); }
Utilisation :
Chaque fois que des modifications sont apportées à la base de données, cette fonction peut être appelée pour mettre à jour les fichiers de langue correspondants :
$this->updatelangfile('english');
Remarques :
N'oubliez pas de charger ce qui suit dans le constructeur du contrôleur :
$this->load->helper('file'); $this->lang->load('general', 'english');
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!