Как программно переключить язык интерфейса?

Тема в разделе "OpenCart", создана пользователем Bogdan, 17 сен 2013.

  1. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Собственно, сабж.

    У меня стоит multilang seo, т.е. он добавляет код языка перед index.php. Не все модули это поддерживают, но обычно в случае чего добавляю его с помощью JavaScript. А один модуль загружает модальное окно в iframe, контроллер сам язык не отлавливает и всегда загружает русский, при попытке направить через префикс вообще ничего не загружает. Вот и хочу отдавать контроллеру в качестве аргумента текущий язык (его код), а вот как в контроллере сделать что бы он переключил язык на нужный не знаю ....
     
    Lasted edited by : 17 сен 2013
  2. ruscadet

    ruscadet

    Регистрация:
    16 дек 2012
    Сообщения:
    112
    Симпатии:
    18
    в смысле? что конкретно требуется? переключать язык в зависимости от страны входа?
     
  3. LDSP

    LDSP

    Регистрация:
    5 сен 2013
    Сообщения:
    30
    Симпатии:
    10
    Для начала надо получить список языков, соответственно в необходимом view дописываем

    <script>
    var langData = [];
    var langCodes = [];
    var langNames = {};

    langData = <?php echo json_encode($languages)?>;

    for (var langCode in langData){
    langCodes[langData[langCode].language_id] = langCode;
    langNames[langCode] = langData[langCode].language_id;
    }
    </script>
    Соответственно мы имеем массив языков, языки по коду, языки по аббревиатуре ...
    --- Добавлено, 18 сен 2013 ---
    И зачем через контроллер ... не проще ли в качестве урла во вьюхе в iframe указать необходимый с локализацией ?

    Также если вьюха не выдает текущий язык, можно матчем отловить язык в текущем урле и опять-же подменить урл в iframe на необходимый, тогда верхняя химия в файлах и не надо ...
     
    Последнее редактирование: 18 сен 2013
  4. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Так у меня проблема не получить данные текущего языка, а заставить движок переключиться на другой язык.
    Модуль Callme загружает формочку через iframe. В src указано "index.php?route=module/callme/open".
    Проблема не единичная, но обычно помогает либо еще в контроллере добавлять к ссылке вначале "ua/", либо это добавлять посредством JS.
    А тут вот не пролазит. Функция open в контроллере callme прописана корректно $this->language->get.... Т.е. по факту контроллер на момент выполнения думает что текущий язык - русский, когда по факту - украинский
     
    Последнее редактирование: 18 сен 2013
  5. LDSP

    LDSP

    Регистрация:
    5 сен 2013
    Сообщения:
    30
    Симпатии:
    10
    Оу, ну в таком случае надо дебажить контроллер die(var_dump()) вам в помощь ...
    Скорее всего не правильный язык из контроллера передается в скрипт во вьюхе и неправильно перезагружается ...

    Но как я выше и написал, можно просто скриптом отлавливать нужный язык и вручную перезагружать iframe ... костыль конечно, но попроще колупни в контроллере будет
     
  6. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Собственно я хочу не доверять контроллеру самоопределять язык, т.к. он это делает не верно, а передавать на module/callme/open код языка в качестве параметра. А вот как уже в самой функции переключить язык на переданный не знаю.