BetterDiscordApp-rauenzi/renderer/src/modules/localemanager.js

38 lines
1.3 KiB
JavaScript

import * as Locales from "../../../assets/locales";
import DiscordModules from "./discordmodules";
import Utilities from "./utilities";
import Events from "./emitter";
const {Dispatcher, DiscordConstants, UserSettingsStore} = DiscordModules;
export default new class LocaleManager {
get discordLocale() {return UserSettingsStore.locale.split("-")[0];}
get defaultLocale() {return "en";}
constructor() {
this.locale = "";
this.strings = Utilities.extend({}, Locales[this.defaultLocale]);
}
initialize() {
this.setLocale(this.discordLocale);
Dispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({settings}) => {
const newLocale = settings.locale;
if (newLocale && newLocale != this.locale) this.setLocale(newLocale.split("-")[0]);
});
}
setLocale(newLocale) {
let newStrings;
if (newLocale != this.defaultLocale) {
newStrings = Locales[newLocale];
if (!newStrings) return this.setLocale(this.defaultLocale);
}
else {
newStrings = Locales[this.defaultLocale];
}
this.locale = newLocale;
Utilities.extend(this.strings, newStrings);
Events.emit("strings-updated");
}
};