@memory-bank/mcp
Version:
Memory-enabled Co-Pilot (MCP) server for managing project documentation and context
78 lines • 2.39 kB
JavaScript
import { logger } from '../../shared/utils/logger.js';
/**
* I18nServiceAdapter
* II18nProvider インターフェースを実装し、I18nService をアダプトするクラス
*/
export class I18nServiceAdapter {
i18nService;
componentLogger = logger.withContext({ component: 'I18nServiceAdapter' });
supportedLanguages = ['en', 'ja', 'zh'];
defaultLanguage = 'en';
/**
* コンストラクタ
*
* @param i18nService アダプトする I18nService のインスタンス
*/
constructor(i18nService) {
this.i18nService = i18nService;
}
/**
* II18nProvider.translate の実装
*
* @param params 翻訳パラメータ
* @returns 翻訳されたテキスト
*/
translate(params) {
try {
// 非同期メソッドを同期的に実行できないため、キャッシュを使用する前提
return this.i18nService.translate(params.key, params.language);
}
catch (error) {
this.componentLogger.warn(`Translation failed for key ${params.key}`, { error });
return `?${params.key}`;
}
}
/**
* II18nProvider.loadTranslations の実装
*
* @param language 言語コード
* @returns Promise resolving to true if successful
*/
async loadTranslations(language) {
try {
// すべての翻訳をロード
await this.i18nService.loadAllTranslations();
return true;
}
catch (error) {
this.componentLogger.error(`Failed to load translations for ${language}`, { error });
return false;
}
}
/**
* II18nProvider.isLanguageSupported の実装
*
* @param language 言語コード
* @returns サポートされているかどうか
*/
isLanguageSupported(language) {
return this.supportedLanguages.includes(language);
}
/**
* II18nProvider.getSupportedLanguages の実装
*
* @returns サポートされている言語の配列
*/
getSupportedLanguages() {
return [...this.supportedLanguages];
}
/**
* II18nProvider.getDefaultLanguage の実装
*
* @returns デフォルト言語
*/
getDefaultLanguage() {
return this.defaultLanguage;
}
}
//# sourceMappingURL=I18nServiceAdapter.js.map