У меня есть МНОГОЯЗЫЧНОЕ приложение codeigiter своей работы хорошо, но у меня есть проблема
У меня есть 2 языковых файлы арабское и английский
, когда переход от ар к ан все прекрасно работать, но в моем нав он держать ar lang. когда я нажимаю на элемент меню, он меняется на en lang. и другие остаются в ar lang. и если я нажму на другой пункт меню, он изменится на ar lang. и новое изменение в en lang.
config.phpCodeigniter автоматического обновления
$config['language'] = 'ar';
autoload.php
$autoload['language'] = array('contactus', 'footer', 'gallery', 'header', 'member', 'news', 'papers', 'product', 'services', 'words');
Контроллер languagee.php
class Languagee extends Web_Controller {
public function __construct() {
\t \t \t parent::__construct();
\t }
public function setARLang()
{
$session_data['lang'] = "ar";
$this->session->set_userdata($session_data);
redirect(base_url());
}
public function setENLang()
{
$session_data['lang'] = "en";
$this->session->set_userdata($session_data);
redirect(base_url());
}
}
и в MY_Lang.php
// default language: first element of $this->languages
function default_lang()
{
$browser_lang = $this->session->userdata('lang');
$browser_lang = substr($browser_lang, 0,2);
if(array_key_exists($browser_lang, $this->languages))
return $browser_lang;
else{
reset($this->languages);
return key($this->languages);
}
}
и вид header.php
\t \t \t <a href="<?php echo site_url()?>services/showServices"><i class="fa fa-cogs fa-fw fa-2x" aria-hidden="true"></i> <?php echo lang('services.pageTitle')?></a>
\t \t \t </li>
\t \t \t <li>
\t \t \t \t <a href="<?php echo site_url()?>factory/gallery"><i class="fa fa-picture-o fa-fw fa-2x" aria-hidden="true"></i> <?php echo lang('gallery.pageTitle')?></a>
\t \t \t </li>
\t \t \t <li>
\t \t \t \t <a href="<?php echo site_url()?>contactUs"><i class="fa fa-phone-square fa-fw fa-2x" aria-hidden="true"></i> <?php echo lang('contactus.pageTitle') ?></a>
\t \t \t </li>
\t \t </ul>
\t \t <div class="lang-bar <?php echo ($this->session->userdata('lang')=='ar') ? 'pull-left' : 'pull-right'?>">
\t \t \t <!-- Multiple Radios -->
\t \t \t <ul class="list-unstyled">
<li><a href="<?php echo site_url('Languagee/setARLang');?>" class="btn
\t <?php echo ($this->session->userdata('lang')=='ar') ? 'btn-success' : 'btn-default'?>
\t ">Ar</a></li>
<li><a href="<?php echo site_url('Languagee/setENLang')?>" class="btn <?php echo ($this->session->userdata('lang')=='en') ? 'btn-success' : 'btn-default'?>">En</a></li>
</ul>
</div>
Мне кажется, что это неправильно подходить, языки в заявке, не должны действовать на основе сессии, но на принцип добавления URL-адреса соответствующего типа параметра/en,/ar и т. д. Что касается вашего примера, попробуйте удалить старые сеансы языкового индекса, а также все, что показывает var_dump ($ this-> session-> get_userdata ()) до этих двух методов формирования сессий для языков – rad11
Я пытаюсь, но не работает, но та же проблема, но когда я меняю $ config ['language'] \t = 'ar'; в config.php он в порядке, как изменить этот язык, сохраненный в sesssion –