UNPKG

openai-cli-unofficial

Version:

A powerful OpenAI CLI Coding Agent built with TypeScript

108 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.languageService = exports.LanguageService = void 0; const locales_1 = require("../locales"); const language_1 = require("../types/language"); const storage_1 = require("./storage"); /** * 语言管理服务 * 使用单例模式统一管理应用的语言状态 */ class LanguageService { constructor() { this.callbacks = new Set(); // 尝试从存储中读取保存的语言设置,如果没有则使用默认语言 const savedLanguage = storage_1.StorageService.getSavedLanguage(); this.currentLanguage = savedLanguage || 'en'; } /** * 获取语言服务单例实例 */ static getInstance() { if (!LanguageService.instance) { LanguageService.instance = new LanguageService(); } return LanguageService.instance; } /** * 获取当前语言 */ getCurrentLanguage() { return this.currentLanguage; } /** * 设置当前语言 */ setLanguage(language) { if (language !== this.currentLanguage) { this.currentLanguage = language; // 保存到存储中 storage_1.StorageService.saveLanguage(language); this.notifyLanguageChange(); } } /** * 获取当前语言的消息 */ getMessages() { return (0, locales_1.getCurrentMessages)(this.currentLanguage); } /** * 获取可用的语言列表 */ getAvailableLanguages() { return (0, locales_1.getAvailableLanguages)(); } /** * 获取语言配置信息 */ getLanguageConfig(language) { return language_1.LANGUAGES[language]; } /** * 获取所有语言配置 */ getAllLanguageConfigs() { return language_1.LANGUAGES; } /** * 注册语言变化回调 */ onLanguageChange(callback) { this.callbacks.add(callback); // 返回取消注册的函数 return () => { this.callbacks.delete(callback); }; } /** * 通知所有监听者语言已变化 */ notifyLanguageChange() { this.callbacks.forEach(callback => { try { callback(this.currentLanguage); } catch (error) { console.error('Error in language change callback:', error); } }); } /** * 创建语言选择菜单的选项 */ createLanguageMenuChoices() { return this.getAvailableLanguages().map(code => { const config = this.getLanguageConfig(code); return { name: config.nativeName, value: code, description: config.name }; }); } } exports.LanguageService = LanguageService; // 导出单例实例以便直接使用 exports.languageService = LanguageService.getInstance(); //# sourceMappingURL=language.js.map