sql >> Database >  >> RDS >> Mysql

Hoe Codeigniter-taalbestanden uit de database te maken?

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:

  1. Telkens wanneer u uw database wijzigt, roept u de functie updatelangfile(‘english’) aan
  2. 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');
    }
    



  1. Lijst met SQL Server-vergelijkingsoperators

  2. Kopieer gegevens naar een nieuwe tabel in MySQL

  3. Hoe Mod() werkt in PostgreSQL

  4. Tekens invoegen in het midden van een string in SQL Server (T-SQL)