Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer des fichiers de langue Codeigniter à partir de la base de données ?

Tu es sur la bonne piste. Vous voudrez créer un fichier de langue à la volée (par exemple, chaque fois que vous mettez à jour le contenu linguistique de votre base de données)

1er :la disposition de la base de données

Créer un tableau lang_token avec les colonnes id , category , description , lang , token et remplissez ses champs comme ceci :

    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');

2ème :À propos des fichiers de langage CodeIgniter

CodeIgniter cherchera d'abord dans votre répertoire application/langue, chaque langue doit être stockée dans son propre dossier. Assurez-vous que vos sous-répertoires anglais ou allemand, etc. sont créés, par ex. application/language/english

3ème :Fonction de contrôleur pour créer un fichier de langue à la volée

À propos des fichiers de langage Codeigniter :il est recommandé d'utiliser un préfixe commun (catégorie) pour tous les messages d'un fichier donné afin d'éviter les collisions avec des éléments portant le même nom dans d'autres fichiers. La structure est la suivante :$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);

    }

Remarques finales :

  1. Chaque fois que vous modifiez votre base de données, vous appelez la fonction updatelangfile(‘english’)
  2. N'oubliez pas de charger le file helper et cours de langue dans le constructeur du contrôleur où se trouve updatelangfile() :

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