collectLocalesStrings() as $locale) { // * Suported locales. Cache::remember(sprintf('translations.%s', $locale), 86400, function () use ($locale) { $phpTransFallback = $this->phpTranslations(config('app.fallback_locale')); $phpTransLocale = $this->phpTranslations($locale); $jsonTransFallback = $this->jsonTranslations(config('app.fallback_locale')); $jsonTransLocale = $this->jsonTranslations($locale); $translations = [ 'php' => ToolboxHelper::arrayMergeRecursiveDistinct( $phpTransFallback, $phpTransLocale, ), 'json' => ToolboxHelper::arrayMergeRecursiveDistinct( $jsonTransFallback, $jsonTransLocale, ), ]; return $translations; }); } // end foreach } /** * Gather provided langs checking from files. * * @return \Illuminate\Support\Collection */ private function collectLocalesStrings(): Collection { // * En dur dans ->keys array. // @phpstan-ignore-next-line return collect(File::allFiles(resource_path('lang/')))->flatMap(function (SplFileInfo $file) { if ($file->getRelativePath() and \strpos($file->getRelativePath(), 'vendor') !== 0) { return [$file->getRelativePath() => '']; } })->keys()->merge(config('app.locales', [])); } /** * Gather all php translations. * * @return array */ private function phpTranslations(string $locale): array { $path = resource_path("lang/$locale"); if (! File::exists($path) or ! File::isReadable($path)) { return []; } return collect(File::allFiles($path))->flatMap(function ($file) use ($locale) { $translation = $file->getBasename('.php'); return [$translation => trans($translation, [], $locale)]; })->all(); } /** * Gather json translations. * * @return array */ private function jsonTranslations(string $locale): array { $path = resource_path("lang/$locale.json"); if (! File::exists($path) or ! File::isReadable($path)) { return []; } return json_decode(File::get($path), true) ?? []; } }