martinlindhe / laravel-vue-i18n-generator

Generates a vue-i18n compatible include file from your Laravel translations
MIT License
306 stars 207 forks source link

Merge folder and php file existing at the same time #117

Open limi7break opened 4 years ago

limi7break commented 4 years ago

If in a folder I have a php file and a folder with the same name, the generator does not merge them in the generated file: sometimes the file is picked and the folder is ignored, sometimes the opposite. I don't know if this behavior is intended, but I think both the file and the folder should be recursively merged into the generated file.

This modification of Generator.php resolves this issue:

at line 218:

if ($fileinfo->isDir()) {
    // Recursivley iterate through subdirs, until everything is allocated.

    if (array_key_exists($fileinfo->getFilename(), $data)) {
        $data[$fileinfo->getFilename()] = array_merge_recursive($data[$fileinfo->getFilename()], $this->allocateLocaleArray($path . DIRECTORY_SEPARATOR .     $fileinfo->getFilename()));
    } else {
        $data[$fileinfo->getFilename()] = $this->allocateLocaleArray($path . DIRECTORY_SEPARATOR . $fileinfo->getFilename());
    }
}

if ($fileinfo->isFile()) {
    $noExt = $this->removeExtension($fileinfo->getFilename());

[...]

if (array_key_exists($noExt, $data)) {
    $data[$noExt] = array_merge_recursive($data[$noExt], $this->adjustArray($tmp));
} else {
    $data[$noExt] = $this->adjustArray($tmp);
}