Coding
PromptBeginner5 minmarkdown
Markdown Converter
Agent skill for markdown-converter
7
- 分析 localization-editor 扩展架构
Sign in to like and favorite skills
根目录 > extensions > localization-editor
Localization Editor 是一个功能完整的本地化管理扩展,为 Cocos Creator 项目提供多语言支持和翻译管理工具。
src/lib/main/main.ts - 扩展主进程逻辑src/panel/default/index.ts - 主编辑面板src/lib/builder/builder.ts - 构建时处理src/lib/scene/scene.ts - 场景编辑器集成tsyringe)// 容器注册 import 'reflect-metadata'; import '../core/container-registry'; import { container } from 'tsyringe'; // 服务解析 const mainThread = container.resolve(MainThread);
// 面板管理 "open-panel": 打开本地化编辑器面板 "close-panel": 关闭面板 "execute-panel-method": 执行面板方法 // 数据操作 "scan": 扫描项目中的本地化文本 "get-translate-data": 获取翻译数据 "save-translate-data": 保存翻译数据 "clear-translate-data": 清空翻译数据 // 语言管理 "add-target-language": 添加目标语言 "remove-target-language": 移除目标语言 "set-local-language-locale": 设置本地语言 // 翻译服务 "auto-translate": 自动翻译 "get-translate-providers": 获取翻译提供商 "set-current-translate-provider": 设置当前翻译提供商 // 文件操作 "import-translate-file": 导入翻译文件 "export-translate-file": 导出翻译文件 "import-media-files": 导入媒体文件
{ "vue": "^3.2.25", "webpack": "^5.74.0", "tsyringe": "^4.6.0", "i18next": "^21.6.16", "gettext-extractor": "^3.5.4", "gettext-parser": "^5.1.2", "axios": "^0.27.2", "xlsx": "^0.18.5" }
interface TranslateData { key: string; // 翻译键 source: string; // 源文本 translations: { // 翻译映射 [locale: string]: string; }; context?: string; // 上下文信息 file?: string; // 源文件路径 }
interface LanguageConfig { locale: string; // 语言标识 name: string; // 语言名称 enabled: boolean; // 是否启用 isDefault: boolean; // 是否默认语言 }
interface ProjectConfig { scanOptions: ScanOptions; // 扫描配置 languages: LanguageConfig[]; // 语言列表 translateProvider: string; // 翻译服务提供商 outputFormat: 'po' | 'json' | 'csv'; // 输出格式 }
src/lib/core/service/ ├── persistent/ // 持久化服务 │ ├── ProjectConfigService.ts │ ├── EditorConfigService.ts │ └── TranslateDataSourceService.ts ├── scanner/ // 扫描服务 │ ├── ScanService.ts │ └── FileScanService.ts ├── translate/ // 翻译服务 │ └── TranslateService.ts ├── component/ // 组件服务 │ └── l10n-component-manager-service.ts └── util/ // 工具服务 ├── EventBusService.ts ├── UUIDService.ts └── global.ts
src/lib/core/repository/ └── translate/ ├── YouDaoRepository.ts // 有道翻译API ├── GoogleRepository.ts // Google 翻译API └── BaiduRepository.ts // 百度翻译API
tests/ ├── service/ // 服务层测试 ├── repository/ // 仓库层测试 ├── translate-file/ // 文件操作测试 ├── yaml/ // YAML 处理测试 └── gettext-extractor.test.ts // 文本提取测试
A: 在
repository/translate/ 目录下创建新的仓库类,实现 ITranslateRepository 接口,然后在工厂类中注册。
A: 支持 PO (gettext)、CSV、XLSX 格式的导入导出,以及 JSON 格式的运行时数据。
A: 修改扫描配置,可以设置包含/排除的文件模式,以及自定义的文本提取规则。
A: 翻译数据存储在项目的
i18n/ 目录下,支持多种格式的持久化存储。
A: 使用
l10n 组件的 API,调用语言切换方法,系统会自动重新渲染相关UI。
src/lib/main/ - 主进程逻辑src/lib/core/ - 核心服务和架构src/panel/ - 用户界面面板src/lib/builder/ - 构建集成src/lib/scene/ - 场景编辑器集成webpack.config.ts - Webpack 构建配置jest.config.ts - 测试配置tsconfig.json - TypeScript 配置package.json - 扩展配置和依赖static/ - 静态资源和图标resources/ - 语言数据和配置文件i18n/ - 国际化字符串bin/ - 开发和构建脚本runtime-node-modules/ - 运行时 Node.js 模块模块版本:1.0.4 | 最后更新:2025-09-14