2011-09-27 19 views
5

वर्तमान में मेरे पास MY_Controller के अंदर एक भाषा लोड की गई है जो CI_Controller को बढ़ाती है। लेकिन एक विशेष पृष्ठ के अंदर जो नियंत्रक (चलो इसे एबीसी नियंत्रक कहते हैं) MY_Controller को बढ़ाता है, मुझे लोड की गई भाषा को दूसरी भाषा के साथ ओवरराइड करने की आवश्यकता है। मैंने इस एबीसी नियंत्रक के अंदर एक और भाषा लोड करने का प्रयास किया, लेकिन असफल रहा। क्या लोड की गई भाषा को उतारने और दूसरी भाषा लोड करने का कोई तरीका है?कोडनिर्देशक लोड की गई भाषा बदलें

+0

इस पोस्ट में उत्तर की जांच करें http://stackoverflow.com/questions/31895341/codeigniter-dynamic-language- कार्यक्षमता /41661355#41661355 –

उत्तर

3

क्या आपने अपनी इच्छित भाषा फ़ाइल को लोड करने का प्रयास किया है?

$this->lang->load('filename', 'language'); 

यह तो सुलभ होना चाहिए सिर्फ अपने डिफ़ॉल्ट भाषा पसंद है। मैंने इसका परीक्षण नहीं किया है, लेकिन मेरी समझ से यह इसके बारे में जाने का तरीका होना चाहिए।

संदर्भ: http://codeigniter.com/user_guide/libraries/language.html


संशोधित

मैं तुम्हारे लिए थोड़ा और खुदाई समाप्त हो गया, और पाया कि आप एक डिफ़ॉल्ट भाषा के लोड नहीं कर सकता (अपने नियंत्रक में डिफ़ॉल्ट के रूप में परिभाषित) और फिर बाद में इसे किसी और चीज़ में बदलने की कोशिश करें।

इन चरणों का पालन करें:

  • आप अंग्रेजी (डिफ़ॉल्ट) के अलावा अन्य भाषा की जरूरत है, अपने config में सेट करें।
  • आप एक नियंत्रक के आधार पर किसी अन्य भाषा लोड करना चाहते हैं, तो आप तो सत्र सरणी/उपयोगकर्ता चयन की तरह कुछ का उपयोग कर अपने constructor में है कि (सबसे अधिक निर्धारित करने होंगे।
  • आप 2 भाषाओं (निर्माता में लोड नहीं कर सकता 1, एक अलग वर्ग में एक और .. काम करेंगे नहीं)

संदर्भ यहाँ मंच पदों प्रति: http://codeigniter.com/forums/viewthread/176223/

+0

हाँ, मैंने MY_Controller के अंदर डिफ़ॉल्ट भाषा (अंग्रेज़ी) लोड की है जिसे बढ़ाया गया है अन्य नियंत्रक। मैंने उम्मीद की कि एक माध्यमिक (चीनी) भाषा लोड करने की कोशिश की जा रही है, यह इस एबीसी नियंत्रक के अंदर अंग्रेजी भाषा को ओवरराइड करेगा जो MY_Controller भी बढ़ाता है, लेकिन फिर भी, केवल अंग्रेजी भाषा ही पहुंच योग्य है। – coder

+0

मैंने अपना जवाब अपडेट किया है, ऐसा लगता है कि आपको अपने नियंत्रकों को ठीक करने की आवश्यकता है, 1 नियंत्रक (या आपके द्वारा विस्तारित नियंत्रक) में 2 भाषाओं की घोषणा नहीं कर सकता है। – Jakub

+0

कूल थैक्स। मैंने सोचा कि मुझे यह निर्धारित करने के लिए कि कौन सी भाषा लोड होनी है, मुझे अपने MY_Controller कन्स्ट्रक्टर को एक और वैकल्पिक पैरामीटर लागू करने की आवश्यकता है। यह मेरे मामले के लिए काम करना चाहिए। प्रयास के लिए Thx !!! – coder

4

मैं इस समस्या का सामना और एक मुश्किल समाधान खोजने के

$this->lang->load('text', 'english'); 
echo $this->lang->line('__YOUR_LANG_VARIABLE__'); 

//CI will record your lang file is loaded, unset it and then you will able to load another 
//unset the lang file to allow the loading of another file 
if(isset($this->lang->is_loaded)){ 
    for($i=0; $i<=sizeof($this->lang->is_loaded); $i++){ 
     unset($this->lang->is_loaded[$i]); 
    } 
} 

$this->lang->load('text', 'chinese'); 
echo $this->lang->line('__YOUR_LANG_VARIABLE__'); 

उम्मीद है कि यह मदद करता है।

+0

यह एकमात्र काम करने वाला समाधान है जब भाषा फ़ाइलों के साथ काम करना है जिसमें एक ही कुंजी है –

+0

एक आकर्षण की तरह काम किया! धन्यवाद! – Roomm

17

एक आसान तरीका भाषा डेटा पुनर्स्थापित करने के लिए है और is_loaded

$this->lang->is_loaded = array(); 
$this->lang->language = array(); 
+1

सही काम करता है! मुझे इसकी ही खोज थी। – JoshHighland

+1

महान उत्तर, इसे लाने के लिए धन्यवाद! – Ando

+0

यह मेरे लिए बिल्कुल ठीक काम करता है। धन्यवाद! – grpaiva

4

मैं जानता हूँ कि यह इस जवाब देने के लिए थोड़ी देर हो चुकी है, लेकिन मुझे लगता है कि आप config आइटम 'भाषा' को गतिशील पेज आवश्यकता के आधार पर बदल सकते हैं।

$this->config->set_item('language', 'chinese'); 
$this->config->set_item('language', 'english'); // based on the language folder of course holding language files 

मैं एक आवश्यकता उपयोगकर्ताओं आधार लैंग में समाचार पत्र भेजने के लिए किया था, और यह मुझे मक्खी पर भाषा बदलने के मदद की, उम्मीद है कि इस मदद कर सकता है ..

+0

मेरे लिए काम करता है: डी ... यह स्वीकार्य उत्तर होना चाहिए, मेरा मानना ​​है कि, यह सभी उत्तरों में से सबसे आसान समाधान है। –

-1

आप किसी भी आवेदन codeigniter में बनाया गया है और आप एक भाषा पैक जोड़ना चाहते हैं स्थापित है, तो बस इन चरणों का पालन करें:

  1. फ़ोल्डर application/language/arabic
  2. में भाषा फ़ाइलें जोड़ें (मैं ci में बनाया sma2 में अरबी लैंग जोड़ा) setting.php application/modules/settings/views/setting.php में आप सरणी मिलेगा नामक फ़ाइल को
  3. जाओ:
<div class="controls"> 

    <?php /* 

    $lang = array (
     'english' => 'English', 

     'arabic' => 'Arabic', // +++ Add this line 

     'spanish' => 'Español' 

अब एप्लिकेशन को सहेजें और चलाएं।

संबंधित मुद्दे