import fs from 'node:fs';
import path from 'node:path';
import * as enMessages from './en/index.js';
import * as jaMessages from './ja/index.js';
import * as ptMessages from './pt/index.js';
import * as zhMessages from './zh/index.js';
export { getIcone, ICONES, ICONES_ACAO, ICONES_ARQUIVO, ICONES_COMANDO, ICONES_DIAGNOSTICO, ICONES_DIAGNOSTICO_CENTRAL, ICONES_FEEDBACK, ICONES_NIVEL, ICONES_RELATORIO, ICONES_STATUS, ICONES_TIPOS, ICONES_ZELADOR, ICONES_ZELADOR_CENTRAL, suportaCores, } from './shared/icons.js';
let cache = {};
let currentLocale = 'pt';
const SUPPORTED_LOCALES = ['pt', 'en', 'zh', 'ja'];
function detectLocale() {
    if (process.env.TUTANUS_LOCALE) {
        const envLocale = process.env.TUTANUS_LOCALE.toLowerCase();
        if (SUPPORTED_LOCALES.includes(envLocale)) {
            return envLocale;
        }
    }
    try {
        const configPath = path.join(process.cwd(), 'tutanus.config.json');
        const conteudo = fs.readFileSync(configPath, 'utf-8');
        const json = JSON.parse(conteudo);
        const confLocale = (json.locale || json.locales || json.LOCALE)?.toLowerCase();
        if (confLocale && SUPPORTED_LOCALES.includes(confLocale)) {
            return confLocale;
        }
    }
    catch {
    }
    return 'pt';
}
export function getLocale() {
    return currentLocale;
}
export function setLocale(locale) {
    const normalized = locale.toLowerCase();
    currentLocale = SUPPORTED_LOCALES.includes(normalized) ? normalized : 'pt';
    cache = {};
}
export function initLocale() {
    currentLocale = detectLocale();
}
initLocale();
export function carregarMensagens(locale) {
    if (cache[locale]) {
        return cache[locale];
    }
    const caminho = path.join(process.cwd(), 'src', 'core', 'messages', 'locales', `${locale}.json`);
    try {
        const conteudo = fs.readFileSync(caminho, 'utf-8');
        cache[locale] = JSON.parse(conteudo);
        return cache[locale];
    }
    catch (erro) {
        console.error(`Erro ao carregar mensagens para locale "${locale}":`, erro);
    }
    return locale !== 'pt' ? carregarMensagens('pt') : {};
}
export function textoTitulo(key, locale, vars) {
    const mensagens = carregarMensagens(locale);
    const valor = key.split('.').reduce((obj, chave) => {
        if (obj && typeof obj === 'object' && chave in obj) {
            return obj[chave];
        }
        return undefined;
    }, mensagens);
    if (typeof valor !== 'string') {
        return key;
    }
    if (!vars)
        return valor;
    return valor.replace(/{(\w+)}/g, (_, chave) => String(vars[chave] ?? `{${chave}}`));
}
const localeModules = {
    pt: ptMessages,
    en: enMessages,
    zh: zhMessages,
    ja: jaMessages
};
export const messages = new Proxy({}, {
    get(_target, prop) {
        const locale = getLocale();
        const mod = localeModules[locale] || localeModules.pt;
        if (prop in mod) {
            return mod[prop];
        }
        return localeModules.pt[prop];
    }
});
export function getMessages() {
    return messages;
}
export function getMessagesSync() {
    return messages;
}
export async function preloadAllLocales() {
}
export * from './pt/index.js';
//# sourceMappingURL=index.js.map