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>

そして、私が言語キーを使用している他の行 Like: for name:

<?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');   
            }


        }

select のコード 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

おそらく最善ではない解決策の 1 つは、メッセージの代わりにメッセージ キーをフラッシュ変数に格納することです。現時点では、以下を保存しています:

$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 に答える