2016-07-13 3 views
0


У меня есть МНОГОЯЗЫЧНОЕ приложение 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>&nbsp;<?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>&nbsp;<?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>&nbsp;<?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>

+0

Мне кажется, что это неправильно подходить, языки в заявке, не должны действовать на основе сессии, но на принцип добавления URL-адреса соответствующего типа параметра/en,/ar и т. д. Что касается вашего примера, попробуйте удалить старые сеансы языкового индекса, а также все, что показывает var_dump ($ this-> session-> get_userdata ()) до этих двух методов формирования сессий для языков – rad11

+0

Я пытаюсь, но не работает, но та же проблема, но когда я меняю $ config ['language'] \t = 'ar'; в config.php он в порядке, как изменить этот язык, сохраненный в sesssion –

ответ

0

да, я решить ее битном раствором
я использовать, если для каждого элемента нав

<?php echo ($this->session->userdata('lang')=='ar') ? "فريق العمل":"Team work" ;?> 

, но я до сих пор найти около лучшее решение спасибо всем вам помочь

Смежные вопросы