getLocale(); } return Cache::remember(sprintf('translations_%s', app()->getLocale()), 86400, function () { $translator = App::make('translator'); $property = (new \ReflectionClass($translator))->getProperty('loaded'); $property->setAccessible(true); return $property->getValue($translator); }); } /** * Assert fallback locale translation is present. * * @param \App\Contracts\TranslatableModel $model * @return void * @throws \Illuminate\Validation\ValidationException Translations missing. */ public static function validateFallbackTranslations(TranslatableModel $model): void { $localeFallback = config('app.fallback_locale'); $missingTranslations = []; foreach ($model->getTranslations() as $key => $value) { if (!is_null($model->{$key}) && !$model->hasTranslation($key, $localeFallback)) { $validationTranslations = self::getCachedTranslations()['validation']; $field = (array_key_exists($key, $validationTranslations['attributes'])) ? trans("validation.attributes.$key") : trans("validation.custom.$key"); $missingTranslations = array_merge($missingTranslations, [ $key => trans_choice('back.missing_translations', 1, [ 'field' => $field, 'locales' => Str::upper($localeFallback), ]), ]); } } if ($missingTranslations) { throw ValidationException::withMessages($missingTranslations); } } }