skachinsky/locale-translator
Composer 安装命令:
composer require skachinsky/locale-translator
包简介
Library for Laravel. For tables from the database, the required field is returned based on the current locale.
README 文档
README
Locale Translator - это простой Eloquent трейт и таблица базы данных для Laravel, который добавляет translateAttribute() метод. Он помогает в случаях, когда объект модели подразумевает разные варианты значений для разных локалей.
Установка
Установка с использованием Composer:
composer require skachinsky/locale-translator
Далее необходимо запустить команду в корневой директории проекта:
php artisan vendor:publish --provider="Skachinsky\LocaleTranslator\LocaleTranslatorServiceProvider"
После чего запустить миграцию:
php artisan migrate
В итоге создастся таблица translates.
Использование
Предположим, у вас имеется таблица-справочник с видами домашних животных:
pet_types
| id | slug |
|---|---|
| 1 | dog |
| 2 | cat |
| 3 | hamster |
Вам необходимо заранее внести в таблицу translates значения.
Как например, можно использовать такой код:
use Skachinsky\LocaleTranslator\Models\Translate; $petType = PetType::find(1); Translate::create([ "type"=>$petType->getModelName(), "row_id"=>$petType->id, "locale"=>"en", "value"=>"dog" ]); Translate::create([ "type"=>$petType->getModelName(), "row_id"=>$petType->id, "locale"=>"ru", "value"=>"собака" ]); //и т.д. для каждой строки pet_types
Теперь, для того чтобы выдать клиенту значение справочника в зависимости от текущей локали, необходимо в моделе подключить трейт:
namespace App\Models; use Skachinsky\LocaleTranslator\LocaleTranslator; class PetType extends Model { use LocaleTranslator; /*...*/ public function getTitleAttribute() { return $this->translateAttribute($this->slug); } }
统计信息
- 总下载量: 17
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-01-08