Spaces:
Build error
Build error
| import fs from 'fs-extra'; | |
| import path from 'path'; | |
| import xliffToJSON from 'xliff-to-json'; | |
| async function recFindByExt(base,ext,files,result) | |
| { | |
| files = files || (await fs.readdir(base)) | |
| result = result || [] | |
| for (const file of files) { | |
| var newbase = path.join(base,file) | |
| if ( (await fs.stat(newbase)).isDirectory() ) | |
| { | |
| result = await recFindByExt(newbase,ext,await fs.readdir(newbase),result) | |
| } | |
| else | |
| { | |
| if ( file.substr(-1*(ext.length+1)) == '.' + ext ) | |
| { | |
| result.push(newbase) | |
| } | |
| } | |
| } | |
| return result | |
| } | |
| // outputs array of supported locales | |
| async function createLocalizationJSON() { | |
| xliffToJSON.convert('src/assets/i18n'); | |
| const files = await recFindByExt(path.join('src', 'assets', 'i18n'), 'json'); | |
| const locales = []; | |
| for (let i = 0; i < files.length; i++) { | |
| const file = path.basename(files[i]); | |
| const file_parts = file.split('.'); | |
| if (file_parts.length !== 3 || file_parts[1] === 'en') continue; | |
| try { | |
| const locale_json = fs.readJSONSync(files[i]); | |
| const locale_json_keys = Object.keys(locale_json); | |
| let has_defined_keys = false; | |
| for (let i = 0; i < locale_json_keys.length; i++) { | |
| if (locale_json[locale_json_keys[i]] !== '') has_defined_keys = true; | |
| } | |
| if (has_defined_keys) locales.push(file_parts[1]); | |
| } catch (err) { | |
| console.error(err); | |
| } | |
| } | |
| fs.unlinkSync('src/assets/i18n/messages.en.json'); | |
| fs.writeJSONSync('src/assets/i18n/supported_locales.json', {supported_locales: locales}); | |
| } | |
| createLocalizationJSON(); |