Codeigniter Изменить загруженный язык - PullRequest
5 голосов
/ 27 сентября 2011

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

Ответы [ 5 ]

18 голосов
/ 09 декабря 2011

более простой способ - сброс языковых данных и is_loaded

$this->lang->is_loaded = array();
$this->lang->language = array();
7 голосов
/ 03 мая 2013

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

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

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

4 голосов
/ 25 ноября 2011

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

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

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

3 голосов
/ 27 сентября 2011

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

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

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

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


REVISED

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

Выполните следующие действия:

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

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

0 голосов
/ 24 мая 2014

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

  1. Добавить языковые файлы в папку application/language/arabic
  2. Перейти к файлу с именем setting.php
<div class="controls">

    <?php /*

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

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

      'spanish' => 'Español'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...