import { CLI_DICT } from './i18n-dict.js';
const DEFAULT_LANG = 'zh';
const SUPPORTED = new Set(['zh', 'en']);
/**
 * main() 在子命令 parseArgs 之前就需要拿到 lang(用于打印 unknown 提示)。
 * 早期 scan argv,支持 `--lang en` 和 `--lang=en` 两种形式。
 */
export function parseLangFromArgv(argv) {
    for (let i = 0; i < argv.length; i++) {
        const a = argv[i];
        if (a === '--lang' && i + 1 < argv.length)
            return argv[i + 1];
        if (a && a.startsWith('--lang='))
            return a.slice('--lang='.length);
    }
    return undefined;
}
/**
 * 优先级: --lang flag > OMK_LANG env > 默认 zh。
 * 不识别的值静默退回默认,避免在解析阶段抛错让用户卡住。
 */
export function getCliLang(flagValue) {
    const candidates = [flagValue, process.env.OMK_LANG];
    for (const c of candidates) {
        if (c && SUPPORTED.has(c))
            return c;
    }
    return DEFAULT_LANG;
}
/**
 * 缺 key 时返回 key 本身,便于在 dev / CI 中肉眼/脚本发现遗漏。
 * params 用 {name} 占位符做 string 替换。
 */
export function tCli(key, lang = DEFAULT_LANG, params) {
    const entry = CLI_DICT[key];
    if (!entry)
        return key;
    let text = entry[lang] ?? entry[DEFAULT_LANG] ?? key;
    if (params) {
        for (const [k, v] of Object.entries(params)) {
            text = text.replaceAll(`{${k}}`, String(v));
        }
    }
    return text;
}
/**
 * 一次拿到 i18n key 的 zh / en 两个串。oclif Command 的 static
 * description / examples 是模块加载期 evaluate 的字面量,跑不到 tCli 的 runtime
 * lang dispatch。tBoth 返回 {zh, en} 结构,配合 oclif/i18n.ts 的 bilingual()
 * 拼成带 sentinel 的串,LangAwareHelp 渲染时按 lang 切。
 */
export function tBoth(key, params) {
    return {
        zh: tCli(key, 'zh', params),
        en: tCli(key, 'en', params),
    };
}
//# sourceMappingURL=i18n.js.map