Этот пакет содержит особенность HasTranslations
позволяющую переводить модели Eloquent. Переводы сохраняются в формате JSON. Для их хранения не требуется дополнительный стол.
use Illuminate Database Eloquent Model ;
use Spatie Translatable HasTranslations ;
class NewsItem extends Model
{
use HasTranslations;
// ...
}
После применения признака к модели вы можете сделать следующее:
$ newsItem = new NewsItem ;
$ newsItem
-> setTranslation ( ' name ' , ' en ' , ' Name in English ' )
-> setTranslation ( ' name ' , ' nl ' , ' Naam in het Nederlands ' )
-> save ();
$ newsItem -> name ; // Returns 'Name in English' given that the current app locale is 'en'
$ newsItem -> getTranslation ( ' name ' , ' nl ' ); // returns 'Naam in het Nederlands'
app ()-> setLocale ( ' nl ' );
$ newsItem -> name ; // Returns 'Naam in het Nederlands'
// If you want to query records based on locales, you can use the `whereLocale` and `whereLocales` methods.
NewsItem:: whereLocale ( ' name ' , ' en ' )-> get (); // Returns all news items with a name in English
NewsItem:: whereLocales ( ' name ' , [ ' en ' , ' nl ' ])-> get (); // Returns all news items with a name in English or Dutch
// Returns all news items that has name in English with value `Name in English`
NewsItem:: query ()-> whereJsonContainsLocale ( ' name ' , ' en ' , ' Name in English ' )-> get ();
// Returns all news items that has name in English or Dutch with value `Name in English`
NewsItem:: query ()-> whereJsonContainsLocales ( ' name ' , [ ' en ' , ' nl ' ], ' Name in English ' )-> get ();
// The last argument is the "operand" which you can tweak to achieve something like this:
// Returns all news items that has name in English with value like `Name in...`
NewsItem:: query ()-> whereJsonContainsLocale ( ' name ' , ' en ' , ' Name in% ' , ' like ' )-> get ();
// Returns all news items that has name in English or Dutch with value like `Name in...`
NewsItem:: query ()-> whereJsonContainsLocales ( ' name ' , [ ' en ' , ' nl ' ], ' Name in% ' , ' like ' )-> get ();
Мы вкладываем много ресурсов в создание лучших в своем классе пакетов с открытым исходным кодом. Вы можете поддержать нас, купив один из наших платных продуктов.
Мы очень признательны вам за отправку нам открытки из вашего родного города с указанием того, какой из наших пакетов вы используете. Наш адрес вы найдете на странице контактов. Все полученные открытки мы публикуем на нашей виртуальной стене открыток.
Вся документация доступна на нашем сайте документации.
composer test
Пожалуйста, смотрите ВКЛАД для получения подробной информации.
Если вы обнаружили ошибку, связанную с безопасностью, отправьте электронное письмо по адресу [email protected] вместо использования системы отслеживания проблем.
Вы можете свободно использовать этот пакет, но если он попадет в вашу производственную среду, мы будем очень признательны, если вы отправите нам открытку из вашего родного города с указанием того, какой из наших пакетов вы используете.
Наш адрес: Spatie, Kruikstraat 22, 2018, Антверпен, Бельгия.
Все полученные открытки мы публикуем на сайте нашей компании.
Идея хранить переводы в формате json в колонке пришла к нам от Мохамеда Саида. В этом файле readme использованы части файла readme его многоязычного пакета.
Лицензия MIT (MIT). Дополнительную информацию см. в файле лицензии.