# Changelog ## v11 ### v11.11.0 - Change `\Astrotomic\Translatable\Traits\Relationship::translation()` relation to use the new `ofMany` - [#297](https://github.com/Astrotomic/laravel-translatable/pull/297) ### v11.10.0 - Drop PHP7 support - Drop Laravel 5.8 and 6 and 7 support - Add Laravel 9 support - Add PHP8.1 support ### v11.9.1 - Fix all methods visibility to allow customization - [\#198](https://github.com/Astrotomic/laravel-translatable/pull/198) ### v11.9.0 - Add Laravel 8 support - [\#180](https://github.com/Astrotomic/laravel-translatable/pull/180) ### v11.8.3 - Fix `\Astrotomic\Translatable\Exception\LocalesNotDefinedException` exception message ### v11.8.1 - Fix custom locale column name in `\Astrotomic\Translatable\Traits\Relationship::translation()` method - [\#146](https://github.com/Astrotomic/laravel-translatable/pull/146) ### v11.8.0 - Add Laravel 7 support - [\#128](https://github.com/Astrotomic/laravel-translatable/pull/128) ### v11.7.1 - Add `.gitattributes` to exclude files from archive - [\#126](https://github.com/Astrotomic/laravel-translatable/pull/126) ### v11.7.0 - Add `translateOrFail()` method - [\#114](https://github.com/Astrotomic/laravel-translatable/pull/114) ### v11.6.1 - Fix PHP translation cascade deletion - [\#105](https://github.com/Astrotomic/laravel-translatable/pull/105) ### v11.6.0 - Drop PHP 7.1 support - Drop Laravel 5.6 & 5.7 support - Add PHP side translation cascade deletion - [\#98](https://github.com/Astrotomic/laravel-translatable/pull/98) \(_disabled by default_\) ### v11.5.2 - Fix scope `orderByTranslation()` to return all translations - [\#72](https://github.com/Astrotomic/laravel-translatable/pull/72) ### v11.5.1 - Fix `getTranslationByLocaleKey()` to use `translation` relation if possible - [\#49](https://github.com/Astrotomic/laravel-translatable/pull/49) ### v11.5.0 - Add rule parsing to `\Astrotomic\Translatable\Validation\RuleFactory` - [\#56](https://github.com/Astrotomic/laravel-translatable/pull/56) ### v11.4.0 - Add Laravel 6 support - [\#52](https://github.com/Astrotomic/laravel-translatable/pull/52) ### v11.3.0 - Add `\Astrotomic\Translatable\Validation\RuleFactory` - [\#34](https://github.com/Astrotomic/laravel-translatable/pull/34) ### v11.2.1 - Fix duplicate checks of same locale - [\#40](https://github.com/Astrotomic/laravel-translatable/pull/40) ### v11.2.0 - Add auto fallback locale finder - [\#36](https://github.com/Astrotomic/laravel-translatable/pull/36) ### v11.1.3 - Fix conflict between attributes and locales during `fill()` - [\#38](https://github.com/Astrotomic/laravel-translatable/pull/38) ### v11.1.2 - Refactor `translation` relationship - [\#23](https://github.com/Astrotomic/laravel-translatable/pull/23) ### v11.1.1 - Add missing return type-hints - [\#16](https://github.com/Astrotomic/laravel-translatable/pull/16) ### v11.1.0 - Add missing dependencies `illuminate/contracts` and `illuminate/database` - [\#9](https://github.com/Astrotomic/laravel-translatable/pull/9) - Add `\Astrotomic\Translatable\Contracts\Translatable` interface - Split `\Astrotomic\Translatable\Translatable` into multiple traits - but use them in the main one - Add `translation` relationship - [\#3](https://github.com/Astrotomic/laravel-translatable/pull/3) - Flag methods, not defined in interface as `@internal` - Rename `getRelationKey()` to `getTranslationRelationKey()` to prevent conflicts - the original one is `@deprecated` and will be dropped in next major release - Update the where translation scopes to unify them and remove duplicated code - [\#2](https://github.com/Astrotomic/laravel-translatable/pull/2) ### v11.0.0 - Add PHP7 type-hints [\#557](https://github.com/dimsav/laravel-translatable/pull/557) - Move to `Astrotomic` [\#1](https://github.com/Astrotomic/laravel-translatable/pull/1) & [\#4](https://github.com/Astrotomic/laravel-translatable/pull/4) **migrate from dimsav to astrotomic** 1. upgrade to `dimsav/laravel-translatable:v10.0.0` 2. run `composer remove dimsav/laravel-translatable` 3. run `composer require astrotomic/laravel-translatable` 4. replace `Dimsav\` by `Astrotomic\` in your whole project \(namespace change\) ## v10.0.0 - Add `Dimsav\Translatable\Locales` helper class [\#574](https://github.com/dimsav/laravel-translatable/pull/574) - Fix `getRelationKey()` [\#575](https://github.com/dimsav/laravel-translatable/pull/575) - drop custom save method in favor of saved event listener [\#567](https://github.com/dimsav/laravel-translatable/pull/575) ## v9 ### v9.5.0 - Add `isEmptyTranslatableAttribute()` method to allow custom empty attribute decision logic [\#576](https://github.com/dimsav/laravel-translatable/pull/576) ### v9.4.0 - Add Laravel 5.8 support [\#550](https://github.com/dimsav/laravel-translatable/pull/550) & [\#556](https://github.com/dimsav/laravel-translatable/pull/556) ### v9.3.0 - Fix n+1 queries when updating non-translated model attributes [\#533](https://github.com/dimsav/laravel-translatable/pull/533) ### v9.2.0 - Add support for Laravel 5.7 [\#518](https://github.com/dimsav/laravel-translatable/pull/518) ### v9.1.0 - Do not call get translation with fallback locale and fallback enabled [\#502](https://github.com/dimsav/laravel-translatable/pull/502) - Allow `translateOrDefault()` and `translateOrNew()` to default to user app locale [\#500](https://github.com/dimsav/laravel-translatable/pull/500) - Change autoload translations behavior on runtime [\#501](https://github.com/dimsav/laravel-translatable/pull/501) - Use fallback in `attributesToArray()` [\#503](https://github.com/dimsav/laravel-translatable/pull/503) - Added `orderByTranslation()` scope [\#504](https://github.com/dimsav/laravel-translatable/pull/504) - Example in doc for locale filtering in `whereTranslation()` scope [\#487](https://github.com/dimsav/laravel-translatable/pull/487) - Fire saving event in every case [\#457](https://github.com/dimsav/laravel-translatable/pull/457) - Allow to change default translation model namespace from config file [\#508](https://github.com/dimsav/laravel-translatable/pull/508) ### v9.0.0 - Added support for Laravel 5.6 [\#435](https://github.com/dimsav/laravel-translatable/pull/435) ## v8 ### v8.1.0 - Fixed error when fallback not available. [\#422](https://github.com/dimsav/laravel-translatable/pull/422) - Fixed withTranslation query scope performance [\#417](https://github.com/dimsav/laravel-translatable/pull/417) - Fixed fallback for country-based locales [\#417](https://github.com/dimsav/laravel-translatable/pull/417) - Fixed empty attribute values [\#410](https://github.com/dimsav/laravel-translatable/pull/410) ### v8.0.0 - Added support for Laravel 5.5 [\#394](https://github.com/dimsav/laravel-translatable/pull/394) ## v7 ### v7.3.0 - Added compatibility with custom db connections. [\#366](https://github.com/dimsav/laravel-translatable/pull/366) ### v7.2.1 - Fixed delete events not fired for translations. [\#361](https://github.com/dimsav/laravel-translatable/pull/361) ### v7.2.0 - Added `replicateWithTranslations()`. [\#346](https://github.com/dimsav/laravel-translatable/pull/346) - Added `orWhereTranslation()` and `orWhereTranslationLike()` scopes. [\#338](https://github.com/dimsav/laravel-translatable/pull/338) - Added support for laravel auto-discovery. [\#359](https://github.com/dimsav/laravel-translatable/pull/359) - Added tag for publishing the config file. [\#360](https://github.com/dimsav/laravel-translatable/pull/360) ### v7.1.0 - Added fallback per attribute. [\#348](https://github.com/dimsav/laravel-translatable/pull/348) - Added `getTranslationsArray()` [\#347](https://github.com/dimsav/laravel-translatable/pull/347) - Fixed filling 'property:locale' format was not validating the locale. [\#356](https://github.com/dimsav/laravel-translatable/pull/356) ### v7.0.0 - Added compatibility with Laravel v5.4. - Added default locale per model. [\#271](https://github.com/dimsav/laravel-translatable/pull/271) ## v6 ### v6.1.0 - Filling a model now supports using the 'property:locale' format in keys. [\#314](https://github.com/dimsav/laravel-translatable/pull/314) For example: `$country->fill(['name:en' => 'Belgium'])` - Added config to skip translations in `toArray()` for better performance when needed. [\#315](https://github.com/dimsav/laravel-translatable/pull/315) ### v6.0.1 - Fix issue when trying to fetch a translation with a country based locale [\#264](https://github.com/dimsav/laravel-translatable/pull/264) ### v6.0.0 - Translated fillable properties should only be defined in the translation model. - To update from version 5, move all the fillable properties belonging to a translation to the corresponding translation models. - Added `deleteTranslations()` method for conveniently deleting translations ## v5 ### v5.6.1 - Added support for Lumen without Facades [\#259](https://github.com/dimsav/laravel-translatable/pull/259) - Added support for Model accessors [\#257](https://github.com/dimsav/laravel-translatable/pull/257) - Updated code style and added [styleci](https://styleci.io/) to enforce it ### v5.6.0 - Added scope `notTranslatedIn()` [\#235](https://github.com/dimsav/laravel-translatable/pull/235) ### v5.5.1 - Fixed a bug in locale fallback on `toArray()` ### v5.5.0 - Added Laravel 5.2 support - Dropped Laravel 5.0 support - Added scope `whereTranslationLike()` [\#183](https://github.com/dimsav/laravel-translatable/pull/183) - Fire 'updated' event when saving translations. [\#190](https://github.com/dimsav/laravel-translatable/pull/190) - `setAttribute()` returns the model itself, which is now the default in eloquent. [\#201](https://github.com/dimsav/laravel-translatable/issues/201) ### v5.4 - Added compatibility with custom primary key [\#174](https://github.com/dimsav/laravel-translatable/issues/174) ### v5.3 - Added `whereTranslation()` scope [\#168](https://github.com/dimsav/laravel-translatable/issues/168) ### v5.2 - Added option to override default locale [\#158](https://github.com/dimsav/laravel-translatable/issues/158) - Added default value in `translatedIn()` scope [\#148](https://github.com/dimsav/laravel-translatable/issues/148) - Added new scope `withTranslation()]` to decrease the number of mysql calls made. - Added [documentation](https://github.com/dimsav/laravel-translatable/blob/0715f46613769570b65b97ac9ffec10f9bf06d8d/readme.md#available-scopes) about scopes. ### v5.1.2 - Fixed db in tests is dropped and recreated to make tests more stable - Fixed bug when using syntax `$country->{'name:en'}` and locale doesn't exist [\#150](https://github.com/dimsav/laravel-translatable/issues/150) - Method isTranslationAttribute\(\) is now public [\#151](https://github.com/dimsav/laravel-translatable/issues/151) ### v5.1.1 - Fixed compatibility with Lumen [\#121](https://github.com/dimsav/laravel-translatable/issues/121) - Fixed making an attribute on a translatable model hidden does not hide it [\#133](https://github.com/dimsav/laravel-translatable/issues/133) ### v5.1.0 - Added mutator/accessor translations using the format `$country->{'name:de'}` thanks to [@barryvdh](https://github.com/barryvdh) - Added documentation in readme file ### v5.0.1 - Applied PSR-2 code style. ### v5.0.0 - Laravel 5 ready - Added configuration option for returning fallback translations ## v4 ### v4.5.0 - Added scope to list translated attributes in the current locale. - Force fire "saved" event when the original model is not saved, but the translation is [\#85](https://github.com/dimsav/laravel-translatable/issues/85) ### v4.4.0 - Drops support for laravel 4.0. - Compatible with laravel 4.1 and laravel 4.2. - External config file. - Fallback issue fixed. - Added translated and translatedIn scopes. - Changed behavior: getting non existing translations with `getTranslation()` used to return objects, now `null` is returned. - Translated attributes now shown when converting `toArray()` or `toJson()`. - Fixed bug: `fill()` created empty translations even when translated attributes were not fillable. - Added option to make translated attributes always fillable. ### v4.3.0 - The `Translation` class suffix default can be overridden in the app config. See [7ecc0a75d](https://github.com/dimsav/laravel-translatable/commit/7ecc0a75dfcec58ebf694e0a7feb686294b49847) - The `app.fallback_locale` setting can be overridden in each model separately. See [\#33](https://github.com/dimsav/laravel-translatable/pull/33) - Fallback translation is not returned if it is not defined. ### v4.2.0 - Fallback locale now is taken from `app.fallback_locale` config key. ### v4.1.1 - Fixed issue with saving translations, caused by the update of the laravel core. ### v4.1.0 - Added fallback to default locale if translations is missing. [\#23](https://github.com/dimsav/laravel-translatable/issues/23) - Added travis environment for laravel 4.2. ### v4.0.0 - Removed syntax `$model->en->name` because conflicts may happen if the model has a property named `en`. See [\#18](https://github.com/dimsav/laravel-translatable/issues/18). - Added method `hasTranslation($locale)`. See [\#19](https://github.com/dimsav/laravel-translatable/issues/19). ## v3.0.0 - Fixed bug [\#7](https://github.com/dimsav/laravel-translatable/issues/7). Model's Translations were deleted when the model delete failed. ## v2.0.0 - Translatable is now a trait and can be used as add-on to your models. - 100% code coverage ## v1.0.0 - Initial version - Translatable is a class extending Eloquent - 96% code coverage