Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich Codeigniter-Sprachdateien aus der Datenbank?

Du bist auf dem richtigen Weg. Sie möchten eine Sprachdatei spontan erstellen (z. B. immer dann, wenn Sie die Sprachinhalte Ihrer Datenbank aktualisieren)

1.:das Datenbanklayout

Erstellen Sie eine Tabelle lang_token mit Spalten id , category , description , lang , token und füllen Sie die Felder wie folgt aus:

    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.:Über CodeIgniter-Sprachdateien

CodeIgniter sucht zuerst in Ihrem Anwendungs-/Sprachverzeichnis. Jede Sprache sollte in einem eigenen Ordner gespeichert werden. Stellen Sie sicher, dass Sie Ihre englischen oder deutschen usw. Unterverzeichnisse erstellt haben, z. application/language/english

3.:Controller-Funktion zum spontanen Erstellen von Sprachdateien

Über die Codeigniter-Sprachdateien:Es empfiehlt sich, ein gemeinsames Präfix (Kategorie) für alle Nachrichten in einer bestimmten Datei zu verwenden, um Kollisionen mit ähnlich benannten Elementen in anderen Dateien zu vermeiden. Die Struktur ist wie folgt:$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);

    }

Abschließende Anmerkungen:

  1. Wann immer Sie Ihre Datenbank ändern, rufen Sie die Funktion updatelangfile(‘english’) auf
  2. Vergessen Sie nicht, den Dateihelfer zu laden und Sprachunterricht im Konstruktor des Controllers, wo sich updatelangfile() befindet:

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