rashi-discord-bot-lib
Version:
🚀 Powerful Discord bot framework with built-in database, event handling, and utilities
106 lines • 3.73 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.i18next = exports.availableLocales = void 0;
exports.initializeI18n = initializeI18n;
exports.t = t;
exports.isInitialized = isInitialized;
exports.getDefaultLanguage = getDefaultLanguage;
exports.getAvailableLanguages = getAvailableLanguages;
exports.getLanguageFromInteraction = getLanguageFromInteraction;
exports.getLocalesPath = getLocalesPath;
exports.setLanguage = setLanguage;
exports.setGuildLocale = setGuildLocale;
exports.getGuildLocale = getGuildLocale;
exports.clearGuildLocale = clearGuildLocale;
exports.setUserLocale = setUserLocale;
exports.getUserLocale = getUserLocale;
exports.clearUserLocale = clearUserLocale;
const i18next_1 = __importDefault(require("i18next"));
exports.i18next = i18next_1.default;
const i18next_fs_backend_1 = __importDefault(require("i18next-fs-backend"));
const path_1 = require("path");
const Logger_1 = require("../utils/Logger");
const logger = new Logger_1.Logger();
async function initializeI18n() {
try {
await i18next_1.default
.use(i18next_fs_backend_1.default)
.init({
backend: {
loadPath: (0, path_1.join)(__dirname, '..', 'locales', '{{lng}}', '{{ns}}.json'),
},
fallbackLng: 'en',
preload: ['en'],
ns: ['translation', 'commands', 'errors'],
defaultNS: 'translation',
interpolation: {
escapeValue: false,
},
returnObjects: true,
debug: process.env.NODE_ENV === 'development',
});
logger.info('✅ i18n initialized successfully');
}
catch (error) {
logger.error('❌ Failed to initialize i18n:', error);
throw error;
}
}
/** Skrócony alias */
function t(key, options) {
const result = i18next_1.default.t(key, options);
if (typeof result !== 'string')
return '[Translation Error]';
return result;
}
function isInitialized() {
return i18next_1.default.isInitialized;
}
function getDefaultLanguage() {
return i18next_1.default.language || 'en';
}
function getAvailableLanguages() {
const supported = i18next_1.default.options.supportedLngs;
if (!Array.isArray(supported))
return ['en'];
return supported.filter((l) => l !== 'dev');
}
function getLanguageFromInteraction(interaction) {
return interaction.locale || interaction.guildLocale || getDefaultLanguage();
}
function getLocalesPath() {
return (0, path_1.join)(__dirname, '..', 'locales');
}
function setLanguage(language) {
i18next_1.default.changeLanguage(language);
}
/* ---------------------- Guild Locale Management ---------------------- */
const guildLocales = new Map();
function setGuildLocale(guildId, locale) {
guildLocales.set(guildId, locale);
}
function getGuildLocale(guildId) {
return guildLocales.get(guildId) || getDefaultLanguage();
}
function clearGuildLocale(guildId) {
guildLocales.delete(guildId);
}
/* ---------------------- User Locale Management ---------------------- */
const userLocales = new Map();
function setUserLocale(userId, locale) {
userLocales.set(userId, locale);
}
function getUserLocale(userId) {
return userLocales.get(userId) || getDefaultLanguage();
}
function clearUserLocale(userId) {
userLocales.delete(userId);
}
/* ---------------------- Lista dostępnych języków ---------------------- */
exports.availableLocales = [
'en', 'pl', 'es', 'fr', 'de', 'nl', 'pt', 'ru', 'ja', 'ko', 'zh',
];
//# sourceMappingURL=index.js.map