collectLocalesStrings() as $locale) { // * Suported locales Cache::rememberForever(sprintf('translations.%s', $locale), 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( $phpTransLocale, $phpTransFallback, ), 'json' => ToolboxHelper::arrayMergeRecursiveDistinct( $jsonTransLocale, $jsonTransFallback, ), ]; return $translations; }); } } /** * 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 * * @param string $locale * @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 * * @param string $locale * @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) ?? []; } }