Laravel-translatable

要做多語系網站如果還要自己處理資料庫內容語系翻譯真的有點小小麻煩,當然做得到,但是有套件會讓一切更簡單。

一、安裝

使用 composer 安裝
composer require spatie/laravel-translatable
設定要翻譯的 Model
  1. use Illuminate\Database\Eloquent\Model;
  2. use Spatie\Translatable\HasTranslations;
  3.  
  4. class Post extends Model
  5. {
  6. use HasTranslations;
  7.  
  8. public $translatable = [
  9. 'name'
  10. ];
  11. }

二、使用

1. Set

  1. $post
  2. ->setTranslation('name', 'en', 'English Name')
  3. ->setTranslation('name', 'zh_TW', '中文名稱')
  4. ->save();

2. Get

  1. // 回傳目前語系設定的 name
  2. $post->name;
  3.  
  4. // 取得特定語系的 name
  5. $post->getTranslation('name', 'en');

3. Query

  1. Post::whereLocale('name', 'zh_TW')->get();
  2.  
  3. Post::whereLocales('name', ['zh_TW', 'en'])->get();
參考文件

留言