From 279689b5dd75cf920f11543f61827f51d4c496bb Mon Sep 17 00:00:00 2001 From: WovenCoast Date: Mon, 24 Feb 2025 16:29:51 +0500 Subject: [PATCH] feat: add config option for lang suffix fallback --- config/translatable.php | 3 ++- src/Abstract/IsTranslatable.php | 10 ++++------ src/JsonTranslatable/JsonTranslatableSchema.php | 6 ++++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/config/translatable.php b/config/translatable.php index 474fe8b..bf10973 100644 --- a/config/translatable.php +++ b/config/translatable.php @@ -21,5 +21,6 @@ 'en' => 'English', 'dv' => 'Dhivehi', 'jp' => 'Japanese', - ] + ], + 'lang_suffix_should_fallback' => false, ]; diff --git a/src/Abstract/IsTranslatable.php b/src/Abstract/IsTranslatable.php index 527689d..0e25151 100644 --- a/src/Abstract/IsTranslatable.php +++ b/src/Abstract/IsTranslatable.php @@ -150,13 +150,13 @@ public function getAttribute($key): mixed // translate using current app locale if possible if ($this->isTranslatable($key)) { - return $this->translate($key, app()->currentLocale(), false); + return $this->translate($key, app()->currentLocale()); } // check if is a suffixed attribute [$field, $locale] = $this->getFieldAndLocale($key); if ($locale && $this->isTranslatable($field)) { - return $this->translate($field, $locale, false); + return $this->translate($field, $locale, config('translatable.lang_suffix_should_fallback', false)); } // fallback to parent @@ -170,10 +170,8 @@ public function setAttribute($key, $value): mixed { [$field, $locale] = $this->getFieldAndLocale($key); - if (! $locale) return parent::setAttribute($key, $value); - - if ($this->isTranslatable($field)) { - $this->addTranslation($locale, $field, $value); + if ($locale && $this->isTranslatable($field)) { + return $this->addTranslation($locale, $field, $value); } return parent::setAttribute($key, $value); diff --git a/src/JsonTranslatable/JsonTranslatableSchema.php b/src/JsonTranslatable/JsonTranslatableSchema.php index 53fb4ce..6cc808d 100644 --- a/src/JsonTranslatable/JsonTranslatableSchema.php +++ b/src/JsonTranslatable/JsonTranslatableSchema.php @@ -22,4 +22,10 @@ public static function columns(Blueprint $table): void $table->string('lang')->index(); } + + public static function revert(Blueprint $table): void + { + $table->dropIndex('lang'); + $table->dropColumn(['translations', 'lang']); + } }