arx-level-generator
Version:
A tool for creating Arx Fatalis maps
71 lines (70 loc) • 2.23 kB
JavaScript
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