mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-12 07:04:52 +09:00
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
/**
|
|
Module for grabbing factorio locale from a local factorio install
|
|
@module getFactorioLocale
|
|
*/
|
|
|
|
const fs = require("fs");
|
|
const ini = require("ini");
|
|
|
|
const cache = {};
|
|
|
|
/**
|
|
Gets raw factorio locale from the .ini file.
|
|
Not available outside of module through exports.
|
|
|
|
@memberof getFactorioLocale
|
|
@inner
|
|
@param {string} factorioDirectory
|
|
@param {string} languageCode
|
|
@param {function} callback
|
|
*/
|
|
function getLocale(factorioDirectory, languageCode, callback){
|
|
var localeFile = factorioDirectory + '/data/base/locale/' + languageCode + '/base.cfg';
|
|
fs.readFile(localeFile, "utf8", (err, rawLocale) => {
|
|
callback(err, rawLocale);
|
|
});
|
|
}
|
|
|
|
/**
|
|
Gets factorios locale as an object, does not respect mods.
|
|
|
|
@param {string} factorioDirectory
|
|
@param {string} languageCode
|
|
@param {function} callback
|
|
*/
|
|
module.exports.asObject = function getLocaleAsObject(factorioDirectory, languageCode, callback){
|
|
if(typeof factorioDirectory != "string" || typeof languageCode != "string" || typeof callback != "function"){
|
|
throw new Error("Error: wrong parameters provided");
|
|
}
|
|
|
|
if(!cache[languageCode]){
|
|
getLocale(factorioDirectory, languageCode, (err, rawLocale) => {
|
|
if(err){
|
|
callback(err);
|
|
} else {
|
|
let processedLocale = ini.parse(rawLocale);
|
|
cache[languageCode] = processedLocale;
|
|
callback(undefined, processedLocale);
|
|
}
|
|
});
|
|
} else {
|
|
callback(undefined, cache[languageCode]);
|
|
}
|
|
}
|