UNPKG

rashi-discord-bot-lib

Version:

🚀 Powerful Discord bot framework with built-in database, event handling, and utilities

106 lines 3.73 kB
"use strict"; 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