Я следовал this tutorial, но при выборе другого языка в раскрывающемся списке текст не переключается на другой язык. Однако перенаправление работает.сеанс с многоязычным сайтом - codeigniter
Я использую сеанс базы данных и значение site_lang
в базе данных изменено правильно. Я сделал print_r($return_lang)
на мой взгляд, return_lang
быть $data['return_lang'] = $this->session->all_userdata();
и результат:
Array ([__ci_last_regenerate] => 1458691563)
Похоже, что site_lang
никогда не присутствует там. Только в базе данных. Я не могу понять, что случилось.
я использовал метод Крючков учебника, файлы 3 языка создаются в папке языка, и я вошел в следующем в моей Htaccess (из другого учебника.):
RewriteEngine On RewriteRule^(*) $ index.php/$ 1 [PT, L]
RewriteCond $ 1^(index.php)
Это мой HomeController:
<?php
class homeController extends CI_Controller{
public function index(){
$data['main_content'] = 'home';
$data['return_lang'] = $this->session->all_userdata();
$this->load->view('templates/default',$data);
}
function initialize() {
$ci =& get_instance();
$ci->load->helper('language');
$siteLang = $ci->session->userdata('site_lang');
if ($siteLang) {
$ci->lang->load('message',$siteLang);
} else {
$ci->lang->load('message','english');
}
}
}
Другие файлы точно такие же, как описано в учебнике.
Существует одна линия, которую я не понимаю, в LanguageSwitcher.php
:
функция switchLang ($ язык = "") {
Почему мы установить язык для ""
? Я попытался удалить = ""
и это не помогло вообще ...
UPDATE 1:
Я нашел проблемы:
$config['base_url']
был установлен в ' '
и я получаю ожидаемый поведение только при использовании 127.0.0.1 вместо localhost
в URL.
Затем я изменил на:
$config['base_url'] = 'http://localhost/mySite/';
, но это работает только при использовании Localhost в URL.
Использование $config['base_url'] = 'http://127.0.0.1/mySite/';
заставляет его работать нормально только при использовании ip-адреса в строке URL.
Я хотел бы заставить его работать на что угодно (localhost и ip address). Когда я говорю, что он не работает должным образом, сессия [site_lang]
не заполняется английским/французским/немецким языком.
спасибо, я понимаю сейчас. Просто что-то узнал ... Я обновил свой вопрос. – remyremy
Почему вы хотите сделать разницу между localhost или 127.0.0.1, оба являются локальными, только ваш компьютер может получить к нему доступ в любом случае? – Vickel
Это потому, что ваш сеанс не сохраняется, если ваш '$ config ['base_url']' не соответствует URL-адресу, который вы используете для доступа к сайту. Файл cookie, используемый для сохранения информации о сеансе, не соответствует домену, который вы используете, поэтому CodeIgniter не может знать, что вы переключили языки. – Technoh