/** * Particle Editor Locale Hook * 粒子编辑器语言钩子 * * Uses the unified plugin i18n infrastructure from editor-runtime. * 使用 editor-runtime 的统一插件国际化基础设施。 */ import { createPluginLocale, createPluginTranslator, getCurrentLocale } from '@esengine/editor-runtime'; import { en, zh, es } from '../locales'; import type { Locale, TranslationParams } from '@esengine/editor-core'; // Create translations bundle // 创建翻译包 const translations = { en, zh, es }; /** * Hook for accessing particle editor translations * 访问粒子编辑器翻译的 Hook * * Uses the unified createPluginLocale factory from editor-runtime. * 使用 editor-runtime 的统一 createPluginLocale 工厂。 * * @example * ```tsx * const { t, locale } = useParticleLocale(); * return ; * ``` */ export const useParticleLocale = createPluginLocale(translations); // Create non-React translator using the unified infrastructure // 使用统一基础设施创建非 React 翻译器 const particleTranslator = createPluginTranslator(translations); /** * Non-React translation function for particle editor * 粒子编辑器的非 React 翻译函数 * * Use this in services, utilities, and other non-React contexts. * 在服务、工具类和其他非 React 上下文中使用。 * * @param key - Translation key | 翻译键 * @param locale - Optional locale, defaults to current locale | 可选语言,默认使用当前语言 * @param params - Optional interpolation parameters | 可选插值参数 * * @example * ```typescript * // With explicit locale * translateParticle('notifications.fileSaved', 'zh', { path: '/path/to/file' }); * * // With current locale (auto-detected) * translateParticle('basic.name'); * ``` */ export function translateParticle( key: string, locale?: Locale, params?: TranslationParams ): string { const targetLocale = locale || getCurrentLocale(); return particleTranslator(key, targetLocale, params); } // Re-export for external use // 重新导出供外部使用 export { getCurrentLocale } from '@esengine/editor-runtime';