UNPKG

mute-english-api

Version:

提供英语词典和百度翻译等API服务的npm包,支持多种翻译服务集成

119 lines (107 loc) 3.56 kB
/** * 统一配置管理器 * 支持多个API服务的配置管理,包括环境变量和程序设置 */ class ConfigManager { constructor() { this.configs = { // 百度翻译API配置 baiduTranslate: { appid: process.env.BAIDU_TRANSLATE_APPID || '', key: process.env.BAIDU_TRANSLATE_KEY || '', apiUrl: 'https://fanyi-api.baidu.com/api/trans/vip/translate', defaults: { from: 'en', to: 'zh', delay: 1000 // 批量翻译时的延迟时间(毫秒) }, supportedLanguages: { 'auto': '自动检测', 'zh': '中文', 'en': '英语', 'jp': '日语', 'kor': '韩语', 'spa': '西班牙语', 'fra': '法语', 'de': '德语', 'ru': '俄语', 'it': '意大利语', 'pt': '葡萄牙语', 'ara': '阿拉伯语' } }, // 英语词典API配置(现有功能) dictionaryApi: { apiUrl: 'https://api.dictionaryapi.dev/api/v2/entries/en' } // 未来可以添加其他API配置,如: // googleTranslate: { ... }, // openai: { ... } }; } /** * 设置百度翻译API配置 * @param {string} appid - 百度翻译API的APPID * @param {string} key - 百度翻译API的KEY * @param {boolean} [force=false] - 是否强制设置(跳过校验,仅测试用) */ setBaiduTranslateConfig(appid, key, force = false) { if (!force && (!appid || !key)) { throw new Error('百度翻译API的APPID和KEY不能为空'); } this.configs.baiduTranslate.appid = appid; this.configs.baiduTranslate.key = key; } /** * 获取百度翻译API配置 * @returns {Object} 百度翻译配置对象 */ getBaiduTranslateConfig() { return this.configs.baiduTranslate; } /** * 验证百度翻译配置 * @returns {boolean} 配置是否有效 */ validateBaiduTranslateConfig() { const config = this.configs.baiduTranslate; return !!(config.appid && config.key); } /** * 获取词典API配置 * @returns {Object} 词典API配置对象 */ getDictionaryApiConfig() { return this.configs.dictionaryApi; } /** * 通用配置设置方法 * @param {string} service - 服务名称 * @param {Object} config - 配置对象 */ setConfig(service, config) { if (!this.configs[service]) { this.configs[service] = {}; } Object.assign(this.configs[service], config); } /** * 通用配置获取方法 * @param {string} service - 服务名称 * @returns {Object} 配置对象 */ getConfig(service) { return this.configs[service] || {}; } /** * 获取所有配置 * @returns {Object} 所有配置对象 */ getAllConfigs() { return this.configs; } } // 创建单例实例 const configManager = new ConfigManager(); export default configManager; export { ConfigManager };