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),
Bảng messages tương ứng với phần show ra thông tin ra view
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 .