0

我在 Codeigniter 框架中构建了一个应用程序。它具有多语言的功能。它可以正常工作以转换每一行。但是对于从控制器设置的警报消息,我尝试使用语言键但未能以多语言显示消息。

这是消息中的控制器代码已设置为在视图中显示:-

控制器设置消息的功能:

function serial_coupon()
    {
     $admin_session_data= $this->session->userdata('user_logged_in');
     $key=$this->input->post('serial');
     $res=explode("000",$key);
     $key=$res[1];
     $result['coupon']=$this->provider_model->get_coupon($key);
          if(empty($result['coupon']))
           {
                       $msg=$this->lang->line('language_srch_msg');
               $this -> session -> set_flashdata('message',$msg);//if no search found than set the message.
               redirect('/provider/');//provider is controller
           }
           else
           {

               $this->load->view('header',$admin_session_data);
               $this->load->view('show_coupon',$result);
               $this->load->view('footer',$admin_session_data);
           }
    }

因此,提供者控制器的索引函数在视图上发送消息:-

function index()
        {
            $msg=$this->session->flashdata('message');//get the message 
            $result['msg']=$msg;and set to the array to send in view

                $result['rows']=$this->session->userdata('provider_detail');
        $user_id=$result['rows'][0]['id'];
            $result['coupons']=$this->provider_model->show_coupons($user_id);
            $this->load->view('header');
            $this->load->view('provider_interface',$result);
        $this->load->view('footer');

    }

所以消息应该显示在视图中:

<p><?php echo $msg; ?></p>

以及我使用语言键的其他行,例如:对于名称:

<?php echo $this->lang->line('language_name');?>

Now please Let me know how can i use the above language key for message in controller??

提前致谢,如有任何疑问,请随时提问。

简短描述:问题不在于显示 falshdata 消息。我希望消息应该是用户选择的特定语言。我的应用程序采用多语言,用户可以从下拉框中选择语言。以及整个转换为所选语言的内容。但是警报消息来自控制器,那么我如何将它们转换为所选语言?

我更改了函数 search_coupon 中的代码,但它仅适用于英语而不适用于葡萄牙语。这是我的提供程序控制器的构造函数代码:

public function __construct()
        {
            parent::__construct();
            $this->load->helper('url');
            $this->load->helper('form');
            $this->load->library('session');
            $this->load->model('provider_model');

            $lng=$this->session->userdata('about_language');

                 if($lng=='' ) 
                 {

                $this->load->language('language','english');

                 }
                 else
                 {

                $this->load->language('language',$lng);

                 }



            if($this->session->userdata('provider')=="")
            {
              redirect('/login/', 'refresh');   
            }


        }

选择使用ajax的语言的代码:

<script type="text/javascript">
         jQuery(document).ready(function() {
          jQuery('#port').click(function(){
                                    var dummy = 2;
                                    $.ajax({
                                            type: "POST",
                                            url: "<?php echo BASE_PATH; ?>/session/sessions",
                                        data: "&ID="+dummy+ "&lang="+'portuguese',
                                            success: function(response)
                                                {

                                                    if (response == false)
                                                        {   
                                                            location.reload();

                                                        }  
                                                }
                                           });

                                   });

            jQuery('#eng').click(function(){
                                        var dummy = 1;
                                        $.ajax({
                                                    type: "POST",
                                                    url: "<?php echo BASE_PATH; ?>/session/sessions",
                                                 data: "&ID="+dummy+ "&lang="+'english',
                                                    success: function(response)
                                                        {

                                                            if (response == false)
                                                                {
                                                                    location.reload();
                                                                }
                                                        }
                                                });

                                         });
         });
          </script> 

这是会话控制器:

function sessions(){

         $value=  $this->input->post('ID');
         $lang=  $this->input->post('lang');

         $lang=$this->session->set_userdata('about_language',$lang);
         return $lang;
        }
4

2 回答 2

1

一种可能不是最好的解决方案是将消息密钥而不是消息存储在 flash var 中。此时您正在存储:

$this -> session -> set_flashdata('message','No Search Found Of This Serial Number');//if no search found than set the message.

然后你正在加载消息:

$msg=$this->session->flashdata('message');//get the message 
$result['msg']=$msg;

并在视图中显示:

<p><?php echo $msg; ?></p>

我向您提出了这个解决方案:

$this -> session -> set_flashdata('message','message_key');//if no search found than set the message.

$msg_key = $this->session->flashdata('message');//get the message key
$result['msg_key'] = $msg_key;

在视图中:

<p><?php echo $this->lang->line('msg_key'); ?></p>
于 2012-10-17T08:33:32.193 回答
0

好的,然后这样做:每次更改语言时,将其设置为会话。根据您的语言会话值加载您的语言文件。然后你将把所有的信息都变成你改变的语言。

$this->lang->load('filename', $this->session->userdata('user_lang'));
于 2012-10-17T08:26:27.813 回答