mute-english-api
Version:
提供英语词典和百度翻译等API服务的npm包,支持多种翻译服务集成
119 lines (107 loc) • 3.56 kB
JavaScript
/**
* 统一配置管理器
* 支持多个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 };