在fulephp中为多语言网站全局加载语言文件

时间:2014-07-30 07:32:34

标签: fuelphp

我是Fuelphp的新手。我想创建多语言网站。我创建了一个下拉列表

   <?php echo Lang::get('Select Language'); ?>
                    <select id="language_dropdown" name="language_dropdown">
                        <option value="en">English</option>
                        <option value="de">German</option>
                        <option value="fr">French</option>
                    </select>

jquery到cal控制器保存语言代码是: -

$(function() {
                    $('#language_dropdown').change(function() {
                    alert($(this).val());
                    var  val = $(this).val(); 
                                              $.ajax({
                        type: "POST",
                        url:  "<?php echo Uri::base(false) ?>language",
                        data: { 'val' : val },
                        success: function(response){
                            location.reload();
                          },
                           error: function(response){
                           alert("There is some problem, please try again later");
                           }

                          }); 
                    });
                });

控制器以保存会话值: -

public function action_index()
  {
     $val = $_POST['val'];
     Session::set('lang', $val);
  }

现在我必须在每个模板文件中设置语言并加载名为language.php的语言文件。

Config::set('language', Session::get('lang'));
Lang::load('language');

是否有任何方法可以全局设置语言和加载语言文件,因此无需在每个文件中写入两行以上。

1 个答案:

答案 0 :(得分:2)

您可以在控制器中加载语言文件和配置设置。基本上有一个函数before(),它在调用任何其他函数之前加载。你可以在这个函数中加载它,如

 public function before()
   {
      if(!Session::get('lang')){
             Session::set('lang', 'en');
        }
              Config::set('language', Session::get('lang'));
              Lang::load('lang');
     }

因此,您将在所有模板中获得语言文件和配置设置。