В настоящее время у меня есть язык, загруженный внутри MY_Controller, который расширяет CI_Controller. Но внутри специальной страницы, какой контроллер (назовем ее контроллером ABC) расширяет MY_Controller, мне нужно переопределить загруженный язык другим языком. Я попытался загрузить другой язык внутри этого контроллера ABC, но безуспешно. Есть ли способ выгрузить загруженный язык и загрузить другой язык?
Вы пытались просто загрузить файл языка, который вам нужен?
$this->lang->load('filename', 'language');
Он должен быть доступен так же, как и ваш язык по умолчанию. Я не тестировал это, но, по моему мнению, это должен быть способ сделать это.
Ссылка: http://codeigniter.com/user_guide/libraries/language.html
REVISED
Я закончил копать немного больше для вас и обнаружил, что вы НЕ МОЖЕТЕ загрузить язык по умолчанию (определите его как по умолчанию в своем контроллере), а затем попробуйте изменить его на что-то еще.
Следуй этим шагам:
constructor
используется что-то вроде выбора сеанса / выбора пользователя. Ссылка на сообщения на форуме: 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
и вы хотите добавить языковой пакет, выполните следующие действия:
application/language/arabic
(Я добавил арабский язык в sma2, построенный в ci)
setting.php
В application/modules/settings/views/setting.php
вы найдете массив:
<div class="controls"> <?php /* $lang = array ( 'english' => 'English', 'arabic' => 'Arabic', // +++ Add this line 'spanish' => 'Español'
Теперь сохраните и запустите приложение.