PhuongNamCorpsIntern / workspace

Phuong Nam Corps Internship Workspace
3 stars 8 forks source link

Xử lý đa ngôn ngữ trong sifoni #11

Open ngnamuit opened 8 years ago

ngnamuit commented 8 years ago

Vấn đề

Để giải quyết vấn đề nài chúng ta chỉ cần...... Xem phần bên dưới :arrow_down:

Cách giải quyết

Trong /config/hook.php

Thêm vào đoạn code sau :

$app->before(function (Request $request, Application $app) {

    $request->setDefaultLocale($app['config.app.languages'][0]);
    $app['request_context']->setParameter('_locale', $request->getLocale());

}, 8); // 1 - 15

Trong /config/app.php

Thêm đoạn code sau :

return array(
    'languages' => array('vi', 'en', 'ja', 'zh')

Trong đó 'vi', 'en', 'ja', 'cn' là ngôn ngữ dùng trong site ,mặc định khi vào http://vietuc.smo.vn/ thì $lang = 'vi'. Đến đây thì trong routing mình không cần quan tâm biến $lang nữa nhé . Mình sẽ đặt routing như site 1 ngôn ngữ.

Controller

Tạo CommonController.php

abstract class CommonController extends Base{
        public $data = [];
        public function __construct() {
            parent::__construct();
            $this->data = $this->Block();
            $this->data['lang'] = $this->lang = $this->request->getLocale();  // lấy $lang
            $this->app['translator']->setLocale($this->lang);             // dùng {{ |trans }} trong view

        }

Khi sử dụng các Controller khác thì extends CommonController để lấy data['lang']. Có data['lang'] rồi thì tự tin index trên database nhé.

/app/language

return [
    'messages' => [
        'search ' => 'Search',     // key dùng trong view 
        'contact_us' =>'Contact Us', // value hiển thị
        'office' => 'Office',

    ],
    'validators' => []
];

{{ 'office'| trans }}

Hãy test thử ngay để thấy sự tuyệt vời và tiện lợi của đa ngôn ngữ trong sifoni :smiley_cat: