Penciptaan Fail Bahasa Dinamik untuk Tapak Web Berbilang Bahasa menggunakan CodeIgniter
Masalah:
Bila membina tapak dalam talian berbilang bahasa dengan CodeIgniter, pengguna mungkin menghadapi cabaran menghantar data daripada pangkalan data kepada fail bahasa. Kelas bahasa terbina dalam tidak mempunyai sokongan asli untuk penyepaduan pangkalan data.
Penyelesaian:
Reka Letak Pangkalan Data:
Buat jadual yang dipanggil lang_token dengan lajur untuk menyimpan maklumat berkaitan bahasa:
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 ;
Struktur Fail Bahasa CodeIgniter:
subdirektori Inggeris atau Jerman, dsb. hendaklah dibuat di bawah direktori aplikasi/bahasa. Setiap bahasa harus disimpan dalam foldernya sendiri.
Membuat Fail Bahasa dengan Cepat:
Fungsi tersuai updatelangfile() boleh dibuat dalam pengawal untuk menjana bahasa fail secara dinamik:
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); }
Penggunaan:
Apabila perubahan dibuat pada pangkalan data, fungsi ini boleh dipanggil untuk mengemas kini fail bahasa yang sepadan:
$this->updatelangfile('english');
Nota:
Ingat untuk memuatkan perkara berikut dalam pembina pengawal:
$this->load->helper('file'); $this->lang->load('general', 'english');
Atas ialah kandungan terperinci Bagaimanakah penciptaan fail bahasa dinamik boleh dilaksanakan dalam CodeIgniter untuk tapak web berbilang bahasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!