Themsaid\Langman\Manager::collectFromFiles PHP Method

collectFromFiles() public method

e.g. ['users' => ['city', 'name', 'phone']]
public collectFromFiles ( ) : array
return array
    public function collectFromFiles()
    {
        $translationKeys = [];
        foreach ($this->getAllViewFilesWithTranslations() as $file => $matches) {
            foreach ($matches as $key) {
                try {
                    list($fileName, $keyName) = explode('.', $key, 2);
                } catch (\ErrorException $e) {
                    continue;
                }
                if (isset($translationKeys[$fileName]) && in_array($keyName, $translationKeys[$fileName])) {
                    continue;
                }
                $translationKeys[$fileName][] = $keyName;
            }
        }
        return $translationKeys;
    }

Usage Example

Esempio n. 1
0
 /**
  * Synchronize keys found in project files but missing in languages.
  *
  * @param $translationFiles
  * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
  * @return void
  */
 private function syncKeysFromFiles($translationFiles)
 {
     $this->info('Reading translation keys from files...');
     // An array of all translation keys as found in project files.
     $allKeysInFiles = $this->manager->collectFromFiles();
     foreach ($translationFiles as $fileName => $languages) {
         foreach ($languages as $languageKey => $path) {
             $fileContent = $this->manager->getFileContent($path);
             if (isset($allKeysInFiles[$fileName])) {
                 $missingKeys = array_diff($allKeysInFiles[$fileName], array_keys(array_dot($fileContent)));
                 foreach ($missingKeys as $i => $missingKey) {
                     if (Arr::has($fileContent, $missingKey)) {
                         unset($missingKeys[$i]);
                     }
                 }
                 $this->fillMissingKeys($fileName, $missingKeys, $languageKey);
             }
         }
     }
 }