Đa ngôn ngữ trong yii2 phần 2 i18n thêm trong database

0
921

Nếu như ở phần 1 chúng ta thêm bằng file sẽ rất khó khăn nếu dữ liệu quá lớn và cần sự hợp tác của cả team thì chúng ta cần 1 giải pháp đó chính là thêm bằng database .

Bước đầu ta tạo cấu trúc bảng bằng câu migrate sau

yii migrate --migrationPath=@yii/i18n/migrations/

App sẽ tự tạo cho chúng ta thêm 2 bảng trong database là messages và source_message 1 cách tự động.2 bảng này có các ý nghĩa khác nhau bảng source_message có ý nghĩa tạo các message thông báo tương ứng trong phần view tương ứng với code này

Yii::t($category, $message),

yii2_i18n_database

Bảng messages tương ứng với phần show ra thông tin ra view

yii2_i18n_database_2

 

Cấu hình trong file main.php ở common/config như này nhé anh em

<?php

return [
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
    'language' => 'en-EN',
    'sourceLanguage'=>'en',
    'components' => [
        
        'i18n' => [
            'translations' => [
                'frontend*' => [
                    'class' => 'yii\i18n\DbMessageSource',
                     'sourceLanguage'=>'en',
                ],
                'backend*' => [
                    'class' => 'yii\i18n\DbMessageSource',
                    'sourceLanguage'=>'en',
                ],
            ],
        ],
        
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
    ],
];

Sự khác biệt với đa ngôn ngữ sử dụng file php đó chính là chúng ta sẽ sử dụng classs

yii\i18n\DbMessageSource

để tương tác với i18n bằng database .

Kinh nghiệm thực tế cho thấy rằng nếu bạn làm 1 web lớn có nhiều bạn cùng làm thì nên làm database để nhiều người cùng tương tác với i18n .Còn nếu làm 1 mình thì cứ vã phpMessageSource vừa nhanh vừa dễ dùng .