Skip to content

Commit 1236735

Browse files
committed
feat: 重构多语言配置系统,支持多语言扩展
- 统一 i18n 目录:l10n/、webview 翻译、文档集中管理 - 新增日语、韩语 webview 翻译文件(i18n/webview/*.json) - 新增 package.nls.ja.json、package.nls.ko.json - loader.ts 运行时读取 JSON 文件,无数据重复 - 删除旧的 webviewTranslations.ts 硬编码翻译 - 迁移 l10n/、README.zh-CN.md、docs/ 到 i18n/ 目录 - 更新 CONTRIBUTING.md 添加翻译贡献指南
1 parent b325522 commit 1236735

18 files changed

Lines changed: 1303 additions & 120 deletions

CONTRIBUTING.md

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,59 @@ Press **F5** in VS Code to launch a debug instance with the extension loaded.
1616

1717
```
1818
src/ Extension host (Node.js) — VSCode API, file I/O
19-
i18n/ WebView translation data
19+
i18n/ Translation loader
2020
utils/ Utility functions (nonce, image service)
2121
webview/ WebView frontend (Browser) — Milkdown editor, UI components
2222
components/ Reusable UI components (toolbar, table, toc, imageView, ...)
2323
i18n/ Translation helpers t() / kbd()
2424
ui/ Shared UI utilities (icons, tooltip)
25-
docs/ Development documentation
25+
i18n/ Localized resources
26+
l10n/ VS Code l10n runtime strings
27+
webview/ WebView translation files (JSON)
28+
docs/ Localized documentation
2629
```
2730

31+
## Contributing Translations
32+
33+
We welcome translations for new languages! Here's how to contribute:
34+
35+
### Adding a New Language
36+
37+
1. Create a new JSON file in `i18n/webview/` directory
38+
2. Name the file using the language code (e.g., `fr.json` for French, `de.json` for German)
39+
3. Copy the content from `i18n/webview/en.json` as a template
40+
4. Translate all values to your language
41+
5. Submit a Pull Request
42+
43+
### Translation File Format
44+
45+
```json
46+
{
47+
"Table of Contents": "目次",
48+
"Undo": "元に戻す",
49+
"Redo": "やり直し",
50+
...
51+
}
52+
```
53+
54+
- Keys are in English (matching the code's `t('Bold')` calls)
55+
- Values are the translated strings
56+
- Keep the same key structure as `en.json`
57+
58+
### Available Languages
59+
60+
- `en.json` - English (default)
61+
- `zh-cn.json` - Chinese (Simplified)
62+
- `ja.json` - Japanese
63+
- `ko.json` - Korean
64+
65+
### Testing Your Translation
66+
67+
1. Add your translation file to `i18n/webview/`
68+
2. Run `pnpm build`
69+
3. Change VS Code language setting to your language
70+
4. Open a Markdown file and verify the translations
71+
2872
## Code Conventions
2973

3074
- TypeScript everywhere

i18n/docs/README.zh-CN.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# Markdown WYSIWYG Editor
2+
3+
[English](README.md) | 简体中文 | [GitHub](https://github.com/git-xing/md-wysiwyg-editor)
4+
5+
一款基于 [Milkdown](https://milkdown.dev/)(ProseMirror)的 VSCode 所见即所得 Markdown 编辑器扩展,以富文本方式直接编辑 `.md` / `.markdown` 文件,保存结果为标准 Markdown,与任何文本编辑器完全兼容。
6+
7+
***
8+
9+
## 功能特性
10+
11+
### 富文本编辑
12+
13+
- **标题**(H1–H6)、**粗体***斜体*~~删除线~~`行内代码`、引用块、分割线
14+
- **有序列表 / 无序列表 / 任务列表**(点击复选框切换完成状态)
15+
- **链接**:悬停显示预览弹框,可直接修改链接文本和 URL;支持 `@/` workspace 路径、`#` 页内锚点跳转,以及 `file.md#27` 行号跳转
16+
- **路径自动补全**:在 inline code 中输入 `@/``./``../` 等前缀,自动显示路径补全建议;分级目录浏览,带彩色文件类型图标
17+
18+
### 表格
19+
20+
- 完整的 GFM 表格支持
21+
- **网格选择器**:悬停表格图标后拖拽选择行×列数再插入,无需手动输入
22+
- 悬停行/列边框显示 **+ 插入线**,一键在任意位置插入行或列
23+
- 行/列 **拖拽 handle**,点击选中整行/整列,拖拽即可重新排序
24+
- 输入内容撑大表格后,插入线与 handle 实时跟随更新位置
25+
26+
### 代码块
27+
28+
- 语法高亮(支持 20+ 语言:Bash、C、C++、C#、CSS、Go、HTML、Java、JavaScript、JSON、Markdown、PHP、Python、Ruby、Rust、SQL、Swift、TypeScript、YAML)
29+
- 顶部语言选择器(含搜索筛选)
30+
- 一键复制代码按钮
31+
- 拖拽底部 handle 调整代码块显示高度
32+
- 全屏编辑器,含语法高亮;关闭时写回文档
33+
34+
### Mermaid 图表
35+
36+
- 流程图、时序图、甘特图、类图等内联渲染
37+
- 源码与预览之间一键切换
38+
- 支持缩放、平移(拖拽 / 触控板捏合),以及全屏 lightbox
39+
40+
### 图片
41+
42+
- 支持从剪贴板**粘贴****拖放**文件,或通过**文件选择器**插入图片
43+
- 本地存储(MD5 去重),或配置自定义服务器上传地址
44+
- 点击图片选中,再次点击放大到 lightbox 预览
45+
- 工具栏支持编辑 alt 文本、重命名文件、删除图片
46+
47+
### 自定义主题
48+
49+
- 支持通过 `markdownWysiwyg.customThemes` 配置项自定义主题颜色
50+
-`.vscode/settings.json` 中定义自定义主题名称和 VS Code 颜色 ID
51+
- 通过命令面板选择自定义主题:"选择颜色主题"
52+
- 详见 [自定义主题配置](docs/custom-themes.md)
53+
54+
### 目录(TOC)
55+
56+
- 自动从文档标题生成目录面板
57+
- 窗口宽度充足时自动展开;点击侧边 Tab 手动切换
58+
- 点击条目平滑滚动至对应标题
59+
60+
### 工具栏
61+
62+
- 顶部固定工具栏:标题级别、加粗、斜体、删除线、有序/无序列表、任务列表、引用、代码块、表格 — 窗口收窄时自动折叠为溢出下拉菜单
63+
- **选中文字浮动工具栏**:选中文字后弹出,支持快速格式化及发送到 Claude
64+
- **表格工具栏**:选中行/列后弹出,支持对齐、插入/删除行列
65+
66+
### 搜索与替换
67+
68+
- **`Cmd+F`**(macOS)/ **`Ctrl+F`**(Windows):唤出 FindBar,在文档内搜索关键词
69+
- **拖拽调整大小**:拖动底部 handle 可展开替换输入框
70+
- **替换折叠**:点击箭头按钮切换替换模式
71+
- **正则表达式****区分大小写**切换按钮
72+
- 使用 CSS Custom Highlight API 实时高亮所有匹配项,颜色跟随 VS Code 主题
73+
- `Enter` / `Shift+Enter` 上下导航,`Esc` 关闭
74+
75+
### Claude 集成
76+
77+
- **`Option+K`**(macOS)/ **`Alt+K`**(Windows):将光标所在段落发送到 Claude 对话,自动附带精确文件行号
78+
- 选中文字后点击工具栏「发送到 Claude」按钮,同样附带行号范围
79+
- 自动识别 Claude 终端 / Claude VSCode 扩展 / VSCode 内置 Chat,三级降级兜底
80+
81+
### 自动保存
82+
83+
- 默认停止编辑 **1 秒**后自动写盘,无需手动 `Cmd+S` / `Ctrl+S`
84+
- 支持关闭自动保存,手动保存(标题栏显示 ``
85+
- 外部文件变更自动同步到编辑器(如 `git checkout`、其他编辑器修改)
86+
87+
***
88+
89+
## 快速上手
90+
91+
安装扩展后,在 VSCode 中打开任意 `.md` / `.markdown` 文件,将自动以 WYSIWYG 模式打开。
92+
93+
| 操作 | 方式 |
94+
| ------------ | ----------------------------------- |
95+
| 切换到文本编辑器 | 点击标题栏 👁 图标,或右键文件 → 打开方式 |
96+
| 切换回 WYSIWYG | 点击标题栏 👁 图标 |
97+
| 插入表格(网格选择) | 悬停表格图标,拖拽选择行×列数 |
98+
| 插入行/列 | 鼠标悬浮表格行/列边框,点击 **+** |
99+
| 拖拽重排行/列 | 悬浮 **** handle 后拖拽 |
100+
| 选中整行/整列 | 点击 **** handle |
101+
| 路径自动补全 | 在 inline code 中输入 `@/``./``../` |
102+
| 发送段落到 Claude | `Option+K`(macOS)/ `Alt+K`(Windows) |
103+
| 文档内搜索 | `Cmd+F`(macOS)/ `Ctrl+F`(Windows) |
104+
| 手动保存 | `Cmd+S`(macOS)/ `Ctrl+S`(Windows) |
105+
106+
***
107+
108+
## 设置
109+
110+
| 设置项 | 类型 | 默认值 | 说明 |
111+
| ------------------------------------ | ------- | ----------- | ---------------------------------------------------- |
112+
| `markdownWysiwyg.autoSave` | boolean | `true` | 编辑后自动写盘 |
113+
| `markdownWysiwyg.autoSaveDelay` | number | `1000` | 自动保存防抖延迟(毫秒) |
114+
| `markdownWysiwyg.defaultMode` | string | `"preview"` | 打开 `.md` 的默认模式:`preview`(WYSIWYG)或 `markdown`(文本编辑器) |
115+
| `markdownWysiwyg.codeBlockMaxHeight` | number | `600` | 代码块最大显示高度(像素) |
116+
| `markdownWysiwyg.editorMaxWidth` | number | `900` | 编辑器内容最大宽度(像素) |
117+
| `markdownWysiwyg.fontFamily` | string | `""` | 编辑器字体,留空继承 VSCode 编辑器字体,示例:`Georgia, serif` |
118+
| `markdownWysiwyg.imageStorage` | string | `"local"` | 图片存储模式:`local`(本地保存)或 `server`(上传至自定义 URL) |
119+
| `markdownWysiwyg.imageLocalPath` | string | `""` | 本地图片存储路径(相对于 workspace 根目录) |
120+
| `markdownWysiwyg.colorTheme` | string | `"auto"` | 颜色主题:`auto` 跟随 VSCode,或设置为特定主题 ID |
121+
| `markdownWysiwyg.tableWrap` | string | `"normal"` | 表格单元格文本换行:`normal``aggressive``none` |
122+
| `markdownWysiwyg.customThemes` | array | `[]` | 自定义颜色主题数组。详见 [自定义主题配置](docs/custom-themes.md) |
123+
124+
***
125+
126+
## 环境要求
127+
128+
- VSCode **1.80.0** 及以上
129+
130+
***
131+
132+
## 已知限制
133+
134+
- 部分复杂 Markdown 扩展语法(如脚注、数学公式)尚未支持
135+
- **链接弹窗撤销**`Cmd+Z` / `Ctrl+Z`):在链接 URL / 文字输入框内,撤销操作被 VS Code Electron 层拦截,暂无法使用
136+
- **表格单元格行号**(发送到 Claude):选中表格单元格时,上报的行号范围可能偏差,根因是 ProseMirror 节点索引与源码行号映射不对齐
137+
- **全局搜索跳转**:点击 `.md` 文件的全局搜索结果时,若同时打开多个 `.md` 文件,WYSIWYG 编辑器可能无法精确跳转到匹配行

0 commit comments

Comments
 (0)