मैं बहुभाषी वेब एप्लिकेशन बनाने के लिए CodeIgniter का उपयोग कर रहा हूं। मेरे पास /system/languages/
फ़ोल्डर के तहत अंग्रेजी और अन्य भाषाएं हैं और मैंने रन-टाइम पर काम करने वाली भाषा को बदलने के लिए जिम्मेदार मॉडल बनाया है।रन सत्यापन समय के दौरान बदलते समय फॉर्म सत्यापन अनदेखा करता है
डिफ़ॉल्ट रूप से CodeIgniter, के रूप में एक URI खंड मॉडल के हिसाब से भाषा बदल जाती है के अनुसार, /application/config/config.php
$config['language'] = 'french';
बाद में परिभाषित फ्रेंच में काम कर रहा है सरलीकृत उदाहरण bellow:
class multilang extends CI_Model {
public function __construct() {
parent::__construct();
if ($this->uri->segment(1) == 'en') {
$this->config->set_item('language', 'english');
}
}
}
यह मॉडल /application/config/autoload.php
में ऑटो लोड सेटिंग्स के तहत सूचीबद्ध पहला मॉडल है और मैं यह पुष्टि कर सकता हूं कि भाषा वास्तव में कॉल करके गतिशील रूप से बदल दी गई है:
echo $this->config->item('language');
हालांकि फ़ॉर्म सत्यापन पुस्तकालय में बनाया खाते में बदली हुई भाषा नहीं ले करता है, बजाय केवल कठिन सेटिंग्स में कोडित भाषा से त्रुटि संदेश दायर इस मामले फ्रेंच में /application/config/config.php
को दर्शाता है।
पहले मुझे लगता है कि ऐसा इसलिए था क्योंकि फॉर्म सत्यापन multilang
मॉडल से पहले लोड किया गया था। यकीन है कि मॉडल पहले लोड किया गया था बनाने के लिए, मैं इस तरह कुछ और करने से पहले मॉडल लोड करने के लिए फ़ॉर्म सत्यापन निर्माता संशोधित:
public function __construct($rules = array())
{
$this->CI =& get_instance();
$this->CI->load->model('multilang');
// normal code after....
}
यह मॉडल फ़ॉर्म सत्यापन से पहले लोड सुनिश्चित किया। दुर्भाग्यवश यह पर्याप्त नहीं था और रन-टाइम के दौरान बदलते समय फॉर्म सत्यापन अभी भी भाषा को अनदेखा करता है। कोई जानता है कि ऐसा क्यों होता है?
धन्यवाद।