UNPKG

arx-level-generator

Version:
71 lines (70 loc) 2.23 kB
import fs from 'node:fs/promises'; import path from 'node:path'; export const toArxLocale = (locale) => { if (locale === 'german') { return 'deutsch'; } if (locale === 'french') { return 'francais'; } if (locale === 'italian') { return 'italiano'; } return locale; }; export class Translations { translations = {}; exportSourcesAndTargets(settings) { const translations = {}; Object.entries(this.translations).forEach(([key, valuesByLocale]) => { const localeValuePairs = Object.entries(valuesByLocale); localeValuePairs.forEach(([locale, value]) => { const translation = translations[locale]; if (typeof translation === 'undefined') { translations[locale] = { [key]: value, }; } else { translation[key] = value; } }); }); const results = {}; const languageDictionaryPairs = Object.entries(translations); languageDictionaryPairs.forEach(([locale, dictionary]) => { const content = this.stringifyDictionary(dictionary); if (content.length) { const filename = path.resolve(settings.outputDir, `localisation/xtext_${toArxLocale(locale)}_002_arx-level-generator.ini`); results[filename] = content; } }); return results; } stringifyDictionary(dictionary) { return Object.entries(dictionary) .map(([key, value]) => { return `[${key}] string="${value}" `; }) .join(''); } add(translations) { this.translations = { ...this.translations, ...translations, }; } async addFromFile(filename, settings) { try { const rawIn = await fs.readFile(path.resolve(settings.assetsDir, filename), 'utf-8'); const translations = JSON.parse(rawIn); this.add(translations); } catch (error) { console.error(error); } } } //# sourceMappingURL=Translations.js.map