Codeigniter Изменить загруженный язык

В настоящее время у меня есть язык, загруженный внутри MY_Controller, который расширяет CI_Controller. Но внутри специальной страницы, какой контроллер (назовем ее контроллером ABC) расширяет MY_Controller, мне нужно переопределить загруженный язык другим языком. Я попытался загрузить другой язык внутри этого контроллера ABC, но безуспешно. Есть ли способ выгрузить загруженный язык и загрузить другой язык?

Related of "Codeigniter Изменить загруженный язык"

Вы пытались просто загрузить файл языка, который вам нужен?

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

Он должен быть доступен так же, как и ваш язык по умолчанию. Я не тестировал это, но, по моему мнению, это должен быть способ сделать это.

Ссылка: http://codeigniter.com/user_guide/libraries/language.html


REVISED

Я закончил копать немного больше для вас и обнаружил, что вы НЕ МОЖЕТЕ загрузить язык по умолчанию (определите его как по умолчанию в своем контроллере), а затем попробуйте изменить его на что-то еще.

Следуй этим шагам:

  • Если вам нужен язык, отличный от английского (по умолчанию), установите его в своей конфигурации.
  • Если вы хотите загрузить язык ANOTHER на основе контроллера, вам нужно определить, что (чаще всего в вашем constructor используется что-то вроде выбора сеанса / выбора пользователя.
  • Вы не можете загрузить 2 языка (1 в конструкторе, затем другой в другом классе .. не будет работать!)

Ссылка на сообщения на форуме: http://codeigniter.com/forums/viewthread/176223/

проще всего сбросить языковые данные и is_loaded

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

Я столкнулся с этой проблемой и нашел сложное решение.

 $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__'); с $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__'); 

Надеюсь, поможет.

Я знаю, что немного поздно ответить на это, но я думаю, что вы можете изменить язык «Конфигурация» динамически на основе требований к странице.

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

У меня было требование отправлять бюллетени в базе пользователей lang, и это помогло мне изменить язык на лету, надеюсь, что это может помочь.

Если у вас установлено какое-либо приложение, встроенное в codeigniter и вы хотите добавить языковой пакет, выполните следующие действия:

  1. Добавить языковые файлы в папке application/language/arabic
  2. (Я добавил арабский язык в sma2, построенный в ci)

  3. Перейдите в файл с именем setting.php
  4. В application/modules/settings/views/setting.php вы найдете массив:

 <div class="controls"> <?php /* $lang = array ( 'english' => 'English', 'arabic' => 'Arabic', // +++ Add this line 'spanish' => 'Español' 

Теперь сохраните и запустите приложение.