@intlayer/docs 9.3.0 → 9.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/blog/ar/rag_powered_documentation_assistant.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/cjs/authors2.cjs +0 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +4 -2
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +4 -2
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +4 -2
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +4 -2
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +4 -2
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +4 -2
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/docs/ar/configuration.md +10 -10
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_svelte_kit.md +1 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ar/intlayer_with_tanstack.md +5 -3
- package/docs/ar/lsp.md +114 -175
- package/docs/ar/readme.md +25 -25
- package/docs/bn/configuration.md +10 -10
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/configuration.md +10 -10
- package/docs/de/interest_of_intlayer.md +24 -22
- package/docs/de/intlayer_with_svelte_kit.md +1 -1
- package/docs/de/intlayer_with_tanstack+solid.md +5 -3
- package/docs/de/intlayer_with_tanstack.md +5 -3
- package/docs/de/lsp.md +111 -172
- package/docs/de/readme.md +24 -24
- package/docs/en/configuration.md +10 -10
- package/docs/en/interest_of_intlayer.md +24 -22
- package/docs/en/intlayer_with_svelte_kit.md +1 -1
- package/docs/en/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en/intlayer_with_tanstack.md +5 -3
- package/docs/en/lsp.md +109 -170
- package/docs/en/readme.md +24 -24
- package/docs/en-GB/configuration.md +10 -10
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en-GB/intlayer_with_tanstack.md +5 -3
- package/docs/en-GB/lsp.md +109 -170
- package/docs/en-GB/readme.md +24 -24
- package/docs/es/configuration.md +10 -10
- package/docs/es/interest_of_intlayer.md +24 -22
- package/docs/es/intlayer_with_svelte_kit.md +1 -1
- package/docs/es/intlayer_with_tanstack+solid.md +5 -3
- package/docs/es/intlayer_with_tanstack.md +5 -3
- package/docs/es/lsp.md +114 -175
- package/docs/es/readme.md +24 -24
- package/docs/fr/configuration.md +10 -10
- package/docs/fr/interest_of_intlayer.md +24 -22
- package/docs/fr/intlayer_with_svelte_kit.md +1 -1
- package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/fr/intlayer_with_tanstack.md +5 -3
- package/docs/fr/lsp.md +110 -171
- package/docs/fr/readme.md +24 -24
- package/docs/hi/configuration.md +10 -10
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_svelte_kit.md +1 -1
- package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/hi/intlayer_with_tanstack.md +5 -3
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/configuration.md +10 -10
- package/docs/id/interest_of_intlayer.md +24 -22
- package/docs/id/intlayer_with_svelte_kit.md +1 -1
- package/docs/id/intlayer_with_tanstack+solid.md +5 -3
- package/docs/id/intlayer_with_tanstack.md +5 -3
- package/docs/id/lsp.md +113 -174
- package/docs/id/readme.md +24 -24
- package/docs/it/configuration.md +10 -10
- package/docs/it/interest_of_intlayer.md +24 -22
- package/docs/it/intlayer_with_svelte_kit.md +1 -1
- package/docs/it/intlayer_with_tanstack+solid.md +5 -3
- package/docs/it/intlayer_with_tanstack.md +5 -3
- package/docs/it/lsp.md +115 -176
- package/docs/it/readme.md +24 -24
- package/docs/ja/configuration.md +10 -10
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/interest_of_intlayer.md +24 -22
- package/docs/ko/intlayer_with_svelte_kit.md +1 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ko/intlayer_with_tanstack.md +5 -3
- package/docs/ko/lsp.md +112 -173
- package/docs/ko/readme.md +24 -24
- package/docs/nl/configuration.md +10 -10
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_svelte_kit.md +1 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pl/intlayer_with_tanstack.md +5 -3
- package/docs/pl/lsp.md +115 -176
- package/docs/pl/readme.md +24 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_svelte_kit.md +1 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pt/intlayer_with_tanstack.md +5 -3
- package/docs/pt/lsp.md +113 -174
- package/docs/pt/readme.md +24 -24
- package/docs/ru/configuration.md +10 -10
- package/docs/ru/interest_of_intlayer.md +24 -22
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_svelte_kit.md +1 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ru/intlayer_with_tanstack.md +5 -3
- package/docs/ru/lsp.md +112 -173
- package/docs/ru/readme.md +24 -24
- package/docs/tr/configuration.md +10 -10
- package/docs/tr/interest_of_intlayer.md +24 -22
- package/docs/tr/intlayer_with_svelte_kit.md +1 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/tr/intlayer_with_tanstack.md +5 -3
- package/docs/tr/lsp.md +113 -174
- package/docs/tr/readme.md +24 -24
- package/docs/uk/configuration.md +10 -10
- package/docs/uk/interest_of_intlayer.md +4 -2
- package/docs/uk/intlayer_with_svelte_kit.md +1 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
- package/docs/uk/intlayer_with_tanstack.md +5 -3
- package/docs/uk/lsp.md +113 -174
- package/docs/uk/per_locale_file.md +1 -1
- package/docs/uk/readme.md +24 -24
- package/docs/ur/configuration.md +10 -10
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/interest_of_intlayer.md +24 -22
- package/docs/vi/intlayer_with_svelte_kit.md +1 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/vi/intlayer_with_tanstack.md +5 -3
- package/docs/vi/lsp.md +115 -176
- package/docs/vi/readme.md +24 -24
- package/docs/zh/configuration.md +10 -10
- package/docs/zh/interest_of_intlayer.md +24 -22
- package/docs/zh/intlayer_with_svelte_kit.md +1 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
- package/docs/zh/intlayer_with_tanstack.md +5 -3
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +6 -6
package/docs/zh/lsp.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-06-07
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-10
|
|
4
4
|
title: Intlayer LSP 服务器
|
|
5
|
-
description: 了解 Intlayer
|
|
5
|
+
description: 了解 Intlayer 语言服务器如何为你的 IDE 和 AI 智能体带来转到定义、查找引用、悬停预览、键名自动补全与诊断能力。
|
|
6
6
|
keywords:
|
|
7
7
|
- LSP
|
|
8
8
|
- 语言服务器
|
|
9
|
-
-
|
|
9
|
+
- Go to Definition
|
|
10
|
+
- 自动补全
|
|
11
|
+
- 诊断
|
|
10
12
|
- IDE
|
|
11
13
|
- Intlayer
|
|
12
14
|
- VS Code
|
|
@@ -16,6 +18,9 @@ slugs:
|
|
|
16
18
|
- doc
|
|
17
19
|
- lsp
|
|
18
20
|
history:
|
|
21
|
+
- version: 9.1.3
|
|
22
|
+
date: 2026-08-10
|
|
23
|
+
changes: "新增查找引用、悬停、自动补全与诊断"
|
|
19
24
|
- version: 8.12.0
|
|
20
25
|
date: 2026-06-01
|
|
21
26
|
changes: "Release LSP"
|
|
@@ -24,48 +29,47 @@ author: aymericzip
|
|
|
24
29
|
|
|
25
30
|
# Intlayer LSP 服务器
|
|
26
31
|
|
|
27
|
-
**Intlayer
|
|
32
|
+
**Intlayer 语言服务器**是 [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/) 的一个实现,它让你的 IDE —— 以及你的 AI 智能体 —— 理解 Intlayer。它把 `useIntlayer("home")` 这样的调用与声明它的 `.content.ts` 文件双向关联起来。
|
|
28
33
|
|
|
29
34
|
---
|
|
30
35
|
|
|
31
|
-
##
|
|
36
|
+
## 功能
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
| 功能 | 快捷键 | 说明 |
|
|
39
|
+
| ---------------- | ------------------- | ----------------------------------------------------------------- |
|
|
40
|
+
| **转到定义** | `F12` / `Cmd+点击` | 从字典键或字段使用处跳转到内容文件中的声明 |
|
|
41
|
+
| **查找所有引用** | `Shift+F12` | 从内容文件出发,列出使用该键或字段的所有调用点 |
|
|
42
|
+
| **悬停** | 将光标悬停其上 | 无需离开当前文件即可预览字典的字段,或某个字段的翻译值 |
|
|
43
|
+
| **自动补全** | `"` `'` `` ` `` `.` | 在 getter 内提示已声明的字典键,并在 `.` 之后或解构时提示内容字段 |
|
|
44
|
+
| **诊断** | 自动 | 当某个键未在任何内容文件中声明时发出警告 |
|
|
34
45
|
|
|
35
|
-
|
|
46
|
+
还有两个行为值得了解:
|
|
36
47
|
|
|
37
|
-
|
|
48
|
+
- **合并字典** —— 分散在多个内容文件中的键会按文件各返回一个结果,因此你可以跳转到每一处声明。
|
|
49
|
+
- **支持 monorepo** —— 服务器会解析距离每个文件_最近的_ `intlayer.config.*`,因此同一工作区中的多个项目各自拥有独立的字典。
|
|
38
50
|
|
|
39
|
-
|
|
51
|
+
### 支持的调用
|
|
40
52
|
|
|
41
|
-
|
|
53
|
+
键既可以从位置字符串参数读取,也可以从选项对象(`{ namespace }`、`{ id }`)读取。
|
|
42
54
|
|
|
43
|
-
|
|
55
|
+
| 库 | 调用 |
|
|
56
|
+
| --------------------------- | -------------------------------------------------------- |
|
|
57
|
+
| **Intlayer** | `useIntlayer`, `getIntlayer` |
|
|
58
|
+
| **i18next / react-i18next** | `useTranslation`, `getFixedT`, `t`, `Trans` |
|
|
59
|
+
| **next-intl / use-intl** | `useTranslations`, `getTranslations`, `createTranslator` |
|
|
60
|
+
| **react-intl** | `formatMessage`, `FormattedMessage` |
|
|
61
|
+
| **Lingui** | `useLingui`, `t`, `Trans`, `_` |
|
|
62
|
+
| **vue-i18n** | `useI18n` |
|
|
44
63
|
|
|
45
|
-
|
|
64
|
+
它适用于所有 `*-intlayer` 包(`next-intlayer`、`react-intlayer`、`vue-intlayer`、`svelte-intlayer`、`solid-intlayer`、`preact-intlayer`、`angular-intlayer`、`lit-intlayer`、`express-intlayer`、`hono-intlayer`、`fastify-intlayer`、`intlayer`),也适用于让你保留现有 i18n 语法的 compat 适配包。
|
|
46
65
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
支持所有 `*-intlayer` 包 (`next-intlayer`、`react-intlayer`、`vue-intlayer`、`svelte-intlayer`、`solid-intlayer`、`preact-intlayer`、`angular-intlayer`、`lit-intlayer`、`express-intlayer`、`hono-intlayer`、`fastify-intlayer`、`adonis-intlayer`、`intlayer`)。
|
|
50
|
-
|
|
51
|
-
### 支持的 getter 调用
|
|
52
|
-
|
|
53
|
-
服务器检测以下函数调用,并提取第一个字符串字面量参数作为字典键:
|
|
54
|
-
|
|
55
|
-
| 函数 | 示例 |
|
|
56
|
-
| ------------- | ----------------------------- |
|
|
57
|
-
| `useIntlayer` | `useIntlayer("hero")` |
|
|
58
|
-
| `getIntlayer` | `getIntlayer("hero", locale)` |
|
|
59
|
-
|
|
60
|
-
TypeScript 泛型和额外参数将被忽略 —— 只有键字符串重要。
|
|
61
|
-
|
|
62
|
-
> `useDictionary` 和 `getDictionary` 接受一个已导入的 `Dictionary` 对象作为其第一个参数,而不是字符串键,因此它们无法享受“转到定义”的好处,且不受服务器跟踪。
|
|
66
|
+
> 字典读取自构建产物,因此请运行 `npx intlayer build`,或保持开发服务器运行,好让服务器有内容可解析。
|
|
63
67
|
|
|
64
68
|
---
|
|
65
69
|
|
|
66
70
|
## 安装
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
服务器以 `@intlayer/lsp` 中的 `intlayer-lsp` 可执行文件形式发布:
|
|
69
73
|
|
|
70
74
|
```bash packageManager="npm"
|
|
71
75
|
npm install --save-dev @intlayer/lsp
|
|
@@ -83,43 +87,43 @@ pnpm add --save-dev @intlayer/lsp
|
|
|
83
87
|
bun add --dev @intlayer/lsp
|
|
84
88
|
```
|
|
85
89
|
|
|
86
|
-
|
|
90
|
+
如果你的编辑器需要在 `PATH` 中找到 `intlayer-lsp`,请改为全局安装(`npm install -g @intlayer/lsp`)—— Claude Code 插件以及下文中直接调用该可执行文件的配置都属于这种情况。
|
|
87
91
|
|
|
88
92
|
---
|
|
89
93
|
|
|
90
|
-
##
|
|
94
|
+
## 配置
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
<Tabs defaultTab="vscode">
|
|
97
|
+
<Tab label="VS Code" value="vscode">
|
|
93
98
|
|
|
94
|
-
|
|
99
|
+
安装 [Intlayer VS Code 扩展](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension)。语言服务器自 v8.12.0 起已内置并会自动启动 —— **无需任何配置**。
|
|
95
100
|
|
|
96
|
-
|
|
97
|
-
npm install -g @intlayer/lsp
|
|
98
|
-
```
|
|
101
|
+
其他功能请参阅 [VS Code 扩展文档](https://intlayer.org/doc/vs-code-extension)。
|
|
99
102
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
+
</Tab>
|
|
104
|
+
<Tab label="Cursor / Windsurf" value="cursor">
|
|
103
105
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
[Cursor](https://www.cursor.com/) 和 [Windsurf](https://windsurf.com/) 是 VS Code 的分支,使用相同的扩展生态。安装一次 [Intlayer VS Code 扩展](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension),服务器便会自动启用 —— **无需任何配置**。
|
|
107
|
+
|
|
108
|
+
</Tab>
|
|
109
|
+
<Tab label="Claude Code" value="claude-code">
|
|
107
110
|
|
|
108
|
-
|
|
111
|
+
Intlayer 提供了一个托管在 Intlayer 仓库中的 **Claude Code 插件**。它让 Claude Code 能真正解析字典键的符号,而不必退回到 `grep`。
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
先把可执行文件放入 `PATH`,然后注册 marketplace 并安装插件:
|
|
111
114
|
|
|
112
115
|
```bash
|
|
116
|
+
npm install -g @intlayer/lsp
|
|
117
|
+
|
|
113
118
|
claude plugin marketplace add intlayer@github:aymericzip/intlayer
|
|
114
119
|
claude plugin install intlayer-lsp@intlayer
|
|
115
|
-
claude plugin enable intlayer-lsp@intlayer
|
|
116
120
|
```
|
|
117
121
|
|
|
118
|
-
Claude Code
|
|
122
|
+
`install` 同时会启用该插件。**请重启 Claude Code** —— 语言服务器在启动时加载,因此在重启前插件不会生效。
|
|
119
123
|
|
|
120
|
-
|
|
124
|
+
之后 Claude Code 会在 `.ts`、`.tsx`、`.js`、`.jsx`、`.vue`、`.astro` 和 `.svelte` 文件上启动该服务器,并在浏览代码时使用 `goToDefinition`、`findReferences` 和 `hover`。
|
|
121
125
|
|
|
122
|
-
|
|
126
|
+
如果转到定义仍然没有反应,你使用的 Claude Code 版本可能通过一个开关来控制 LSP 工具:
|
|
123
127
|
|
|
124
128
|
```json fileName="~/.claude/settings.json"
|
|
125
129
|
{
|
|
@@ -129,61 +133,10 @@ Claude Code 将把 `"intlayer-lsp@intlayer": true` 添加到您的 `enabledPlugi
|
|
|
129
133
|
}
|
|
130
134
|
```
|
|
131
135
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## 在 VS Code 中设置(通过扩展程序 —— 推荐)
|
|
137
|
-
|
|
138
|
-
如果安装了 [Intlayer VS Code 扩展程序](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension),语言服务器将自动启动。无需其他配置。 自 v8.12.0 版本起,LSP 已直接集成到 VSCode 扩展中。
|
|
139
|
-
|
|
140
|
-
> 有关安装和其他功能,请参阅 [VS Code 扩展程序文档](https://intlayer.org/doc/vs-code-extension)。
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## 在 VS Code 中手动设置
|
|
145
|
-
|
|
146
|
-
如果您没有使用 Intlayer 扩展程序,可以使用通用的 LSP 客户端扩展程序(例如 [**vscode-glspc**](https://marketplace.visualstudio.com/items?itemName=sibiraj-s.vscode-scss-formatter))或通过编写您自己的小型扩展程序来手动连接语言服务器。推荐的方法是使用 Intlayer 扩展程序。
|
|
147
|
-
|
|
148
|
-
作为参考,服务器通过 stdio 上的 `intlayer-lsp` 二进制文件启动:
|
|
149
|
-
|
|
150
|
-
```json fileName=".vscode/settings.json"
|
|
151
|
-
{
|
|
152
|
-
"intlayer.languageServer.command": "npx",
|
|
153
|
-
"intlayer.languageServer.args": ["@intlayer/lsp"]
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Intlayer 扩展程序读取这些设置以启动服务器。如果您仅依赖该扩展程序,则不需要手动设置。
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## 在 Cursor 中设置
|
|
162
|
-
|
|
163
|
-
[Cursor](https://www.cursor.com/) 是一个具有内置 AI 功能的 VS Code 分支。它使用相同的扩展生态系统,因此 **Intlayer VS Code 扩展程序**无需任何额外配置即可工作 —— 安装一次,Cursor 就会自动加载它。
|
|
164
|
-
|
|
165
|
-
如果您更喜欢手动配置,Cursor 也会从工作区根目录读取 `.vscode/settings.json`,因此上面的 VS Code 代码片段直接适用。
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## 在 Windsurf 中设置
|
|
170
|
-
|
|
171
|
-
[Windsurf](https://windsurf.com/)(由 Codeium 提供)是另一个基于 VS Code 的编辑器。从 VS Code 市场安装 Intlayer 扩展程序,语言服务器将自动激活,就像在 VS Code 和 Cursor 中一样。
|
|
172
|
-
|
|
173
|
-
对于手动配置,在项目根目录下创建 `.vscode/settings.json`:
|
|
174
|
-
|
|
175
|
-
```json fileName=".vscode/settings.json"
|
|
176
|
-
{
|
|
177
|
-
"intlayer.languageServer.command": "npx",
|
|
178
|
-
"intlayer.languageServer.args": ["@intlayer/lsp"]
|
|
179
|
-
}
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## 在 Zed 中设置
|
|
136
|
+
</Tab>
|
|
137
|
+
<Tab label="Zed" value="zed">
|
|
185
138
|
|
|
186
|
-
|
|
139
|
+
Zed 原生支持 LSP。请将该服务器添加到用户设置中:
|
|
187
140
|
|
|
188
141
|
```json fileName="~/.config/zed/settings.json"
|
|
189
142
|
{
|
|
@@ -196,47 +149,21 @@ Intlayer 扩展程序读取这些设置以启动服务器。如果您仅依赖
|
|
|
196
149
|
}
|
|
197
150
|
},
|
|
198
151
|
"languages": {
|
|
199
|
-
"TypeScript": {
|
|
200
|
-
|
|
201
|
-
},
|
|
202
|
-
"
|
|
203
|
-
|
|
204
|
-
},
|
|
205
|
-
"JavaScript": {
|
|
206
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
207
|
-
},
|
|
208
|
-
"Vue.js": {
|
|
209
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
210
|
-
},
|
|
211
|
-
"Svelte": {
|
|
212
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
213
|
-
}
|
|
152
|
+
"TypeScript": { "language_servers": ["intlayer-lsp", "..."] },
|
|
153
|
+
"TSX": { "language_servers": ["intlayer-lsp", "..."] },
|
|
154
|
+
"JavaScript": { "language_servers": ["intlayer-lsp", "..."] },
|
|
155
|
+
"Vue.js": { "language_servers": ["intlayer-lsp", "..."] },
|
|
156
|
+
"Svelte": { "language_servers": ["intlayer-lsp", "..."] }
|
|
214
157
|
}
|
|
215
158
|
}
|
|
216
159
|
```
|
|
217
160
|
|
|
218
|
-
`"..."`
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## 设置 AI 智能助手命令行界面(Claude Code、Codex 等)
|
|
223
|
-
|
|
224
|
-
**Claude Code** 具有一流的 LSP 插件支持 —— 遵循上面的 [Claude Code 插件设置](#设置为-claude-code-插件)以直接在您的终端会话中获得完整的“转到定义”体验。
|
|
161
|
+
`"..."` 占位符可让 Zed 的默认语言服务器与 Intlayer 的服务器共存。
|
|
225
162
|
|
|
226
|
-
|
|
163
|
+
</Tab>
|
|
164
|
+
<Tab label="Neovim" value="neovim">
|
|
227
165
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
# 在后台保持服务器运行
|
|
232
|
-
npx @intlayer/lsp &
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## 在 Neovim 中手动设置
|
|
238
|
-
|
|
239
|
-
使用 [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig),注册自定义服务器配置:
|
|
166
|
+
使用 [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) 注册一个自定义服务器配置:
|
|
240
167
|
|
|
241
168
|
```lua fileName="~/.config/nvim/init.lua"
|
|
242
169
|
local lspconfig = require('lspconfig')
|
|
@@ -245,7 +172,7 @@ local configs = require('lspconfig.configs')
|
|
|
245
172
|
if not configs.intlayer_lsp then
|
|
246
173
|
configs.intlayer_lsp = {
|
|
247
174
|
default_config = {
|
|
248
|
-
--
|
|
175
|
+
-- 用 npx 启动服务器,这样就不需要全局安装
|
|
249
176
|
cmd = { 'npx', '--yes', '@intlayer/lsp' },
|
|
250
177
|
filetypes = {
|
|
251
178
|
'typescript',
|
|
@@ -267,21 +194,10 @@ end
|
|
|
267
194
|
lspconfig.intlayer_lsp.setup({})
|
|
268
195
|
```
|
|
269
196
|
|
|
270
|
-
重启 Neovim
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
## 在其他编辑器中手动设置
|
|
275
|
-
|
|
276
|
-
任何支持语言服务器协议的编辑器都可以使用 `@intlayer/lsp`。服务器:
|
|
197
|
+
重启 Neovim 后,在字典键上按 `gd` 会执行转到定义,按 `gr` 会执行查找引用。
|
|
277
198
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
- **能力** – `definitionProvider: true`, `textDocumentSync: Incremental`
|
|
281
|
-
|
|
282
|
-
请参阅您的编辑器 LSP 文档以获取确切的配置格式(例如,[coc.nvim](https://github.com/neoclide/coc.nvim) 的 `languageserver.json`,或 [Helix](https://helix-editor.com) 中的 LSP 客户端设置)。
|
|
283
|
-
|
|
284
|
-
### 示例:coc.nvim
|
|
199
|
+
</Tab>
|
|
200
|
+
<Tab label="coc.nvim" value="coc">
|
|
285
201
|
|
|
286
202
|
```json fileName="~/.config/nvim/coc-settings.json"
|
|
287
203
|
{
|
|
@@ -307,9 +223,14 @@ lspconfig.intlayer_lsp.setup({})
|
|
|
307
223
|
}
|
|
308
224
|
```
|
|
309
225
|
|
|
310
|
-
|
|
226
|
+
</Tab>
|
|
227
|
+
<Tab label="Helix" value="helix">
|
|
311
228
|
|
|
312
229
|
```toml fileName="~/.config/helix/languages.toml"
|
|
230
|
+
[language-server.intlayer-lsp]
|
|
231
|
+
command = "npx"
|
|
232
|
+
args = ["@intlayer/lsp"]
|
|
233
|
+
|
|
313
234
|
[[language]]
|
|
314
235
|
name = "typescript"
|
|
315
236
|
language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
@@ -317,36 +238,54 @@ language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
|
317
238
|
[[language]]
|
|
318
239
|
name = "tsx"
|
|
319
240
|
language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
320
|
-
|
|
321
|
-
[language-server.intlayer-lsp]
|
|
322
|
-
command = "npx"
|
|
323
|
-
args = ["@intlayer/lsp"]
|
|
324
241
|
```
|
|
325
242
|
|
|
243
|
+
</Tab>
|
|
244
|
+
<Tab label="其他编辑器" value="other">
|
|
245
|
+
|
|
246
|
+
任何支持 LSP 的编辑器都可以运行 `@intlayer/lsp`。请将其指向:
|
|
247
|
+
|
|
248
|
+
- **可执行文件** —— `npx @intlayer/lsp`,或 `intlayer-lsp` 可执行文件
|
|
249
|
+
- **传输方式** —— stdio(标准)
|
|
250
|
+
- **能力** —— `definitionProvider`、`referencesProvider`、`hoverProvider`、`completionProvider`(触发字符 `"` `'` `` ` `` `.`)、推送式诊断、`textDocumentSync: Incremental`
|
|
251
|
+
- **根目录匹配模式** —— `intlayer.config.ts`、`intlayer.config.js`、`package.json`
|
|
252
|
+
|
|
253
|
+
确切的配置格式请查阅你所用编辑器的 LSP 文档。
|
|
254
|
+
|
|
255
|
+
</Tab>
|
|
256
|
+
</Tabs>
|
|
257
|
+
|
|
326
258
|
---
|
|
327
259
|
|
|
328
|
-
##
|
|
260
|
+
## 关于终端 AI 智能体的说明
|
|
329
261
|
|
|
330
|
-
|
|
262
|
+
**Claude Code** 是一个真正的 LSP 客户端 —— 参见上面的标签页。
|
|
331
263
|
|
|
332
|
-
|
|
264
|
+
**OpenAI Codex** 及大多数其他终端工具并不是 LSP 客户端:它们直接读写文件。单独运行服务器对它们没有帮助;真正的价值在于服务器在一个配套编辑器中处于活跃状态,而智能体可以查询该编辑器的索引(Cursor Composer、Windsurf Cascade、Copilot Chat)。
|
|
333
265
|
|
|
334
|
-
|
|
335
|
-
2. 它使用正则表达式扫描获取器调用(`useIntlayer`、`getIntlayer` 等)。
|
|
336
|
-
3. 它检查光标位置是否落在这些调用之一的内部。
|
|
337
|
-
4. 如果是,它将提取字典键(正则表达式的捕获组 3),并调用 `getUnmergedDictionaries()` 来定位声明该键的每个内容文件。
|
|
338
|
-
5. 它读取每个匹配的文件,并找到包含 `key: "<key>"` 的确切行,以精确地定位光标。
|
|
339
|
-
6. 它返回一个 `Location` 对象数组 —— 每个源文件一个。
|
|
266
|
+
---
|
|
340
267
|
|
|
341
|
-
|
|
268
|
+
## 工作原理
|
|
269
|
+
|
|
270
|
+
对每个文件,服务器会定位最近的 `intlayer.config.*`,加载该项目的配置以找到已编译的字典。配置、字典和源文件列表会以较短的 TTL 缓存,并在被监听的内容文件发生变化时失效。
|
|
271
|
+
|
|
272
|
+
收到请求时,服务器会(通过 [oxc](https://oxc.rs/))解析文档并检查光标位置:
|
|
273
|
+
|
|
274
|
+
1. **位于键字符串上**(`useIntlayer("home")`)→ 返回声明该键的每个内容文件,并定位到其 `key:` 所在行。
|
|
275
|
+
2. **位于字段使用处**(`content.title`、解构出的属性、`t('path.to.field')`、`<Trans>` 等)→ 将变量回溯到其字典,并返回内容文件中对应的字段。
|
|
276
|
+
3. **从内容文件出发** → 执行反向查找,扫描项目源码以寻找该键或字段的调用点。
|
|
342
277
|
|
|
343
278
|
---
|
|
344
279
|
|
|
345
|
-
##
|
|
280
|
+
## 故障排查
|
|
281
|
+
|
|
282
|
+
| 现象 | 可能原因 | 解决办法 |
|
|
283
|
+
| --------------------------------------- | ------------------ | ------------------------------------------------------ |
|
|
284
|
+
| 完全没有反应 | 服务器未运行 | 检查是否已安装 `@intlayer/lsp`,以及编辑器是否会启动它 |
|
|
285
|
+
| 在编辑器中可用,在 Claude Code 中不可用 | 会话中途安装了插件 | 重启 Claude Code —— 语言服务器在启动时加载 |
|
|
286
|
+
| 找不到某个键的定义 | 字典尚未构建 | 运行 `npx intlayer build`,或启动开发服务器 |
|
|
287
|
+
| 所有键都被报告为未声明 | 配置未解析 | 确认项目根目录存在 `intlayer.config.ts`(或 `.js`) |
|
|
288
|
+
| 在 monorepo 中使用了错误的项目 | 缺少各自的包级配置 | 为每个声明自有内容的包添加 `intlayer.config.*` |
|
|
289
|
+
| 服务器启动时崩溃 | Node.js 版本过低 | 需要 Node.js ≥ 14.18 |
|
|
346
290
|
|
|
347
|
-
|
|
348
|
-
| ------------------------ | ---------------- | ----------------------------------------------------------- |
|
|
349
|
-
| 转到定义不起作用 | 服务器未运行 | 检查是否已安装 `@intlayer/lsp` 且编辑器正在启动它 |
|
|
350
|
-
| 检测到错误的工作区根目录 | 多个工作区文件夹 | 确保包含 `intlayer.config.ts` 的文件夹是第一个工作区文件夹 |
|
|
351
|
-
| 找不到键的定义 | 配置未解析 | 验证工作区根目录下是否存在 `intlayer.config.ts`(或 `.js`) |
|
|
352
|
-
| 服务器在启动时崩溃 | Node.js 版本太旧 | 需要 Node.js ≥ 14.18 |
|
|
291
|
+
在 VS Code 中,服务器会将日志输出到 **查看 → 输出 → “Intlayer LSP”** —— 便于确认解析到的是哪份配置以及找到了多少字典。
|
package/docs/zh/readme.md
CHANGED
|
@@ -46,27 +46,27 @@ Intlayer 是面向 Web 和移动应用程序的**现代国际化解决方案**
|
|
|
46
46
|
|
|
47
47
|
## Intlayer 的主要优势:
|
|
48
48
|
|
|
49
|
-
| 功能 | 描述
|
|
50
|
-
| --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **多框架支持**<br><br>Intlayer 兼容所有主流框架和库,包括 Next.js、React、Vite、Vue.js、Nuxt、Preact、Express 等。
|
|
52
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **基于 JavaScript 的内容管理**<br><br>利用 JavaScript 的灵活性高效地定义和管理您的内容。<br><br> - [内容声明](https://intlayer.cn/doc/concept/content)
|
|
53
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Feature" width="700"> | **按语言区分的内容声明文件**<br><br>通过在自动生成之前声明一次内容,加快您的开发速度。<br><br> - [按语言区分的内容声明文件](https://intlayer.cn/doc/concept/per-locale-file)
|
|
54
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **编译器**<br><br>Intlayer 编译器自动从组件中提取内容并创建词典文件。<br><br> - [编译器](https://intlayer.cn/doc/compiler)
|
|
55
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Feature" width="700"> | **类型安全环境**<br><br>利用 TypeScript 确保您的内容定义和代码无错误,同时享受 IDE 自动补全的便利。<br><br> - [TypeScript 配置](https://intlayer.cn/doc/environment/vite-and-react#configure-typescript)
|
|
56
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Feature" width="700"> | **简化设置**<br><br>通过最少的配置快速启动。轻松调整国际化、路由、AI、构建和内容管理的设置。<br><br> - [探索 Next.js 集成](https://intlayer.cn/doc/environment/nextjs)
|
|
57
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Feature" width="700"> | **简化内容获取**<br><br>无需为每一条内容调用 `t` 函数。使用单一钩子即可直接获取所有内容。<br><br> - [React 集成](https://intlayer.cn/doc/environment/create-react-app)
|
|
58
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Feature" width="700"> | **一致的服务器组件实现**<br><br>完美适用于 Next.js 服务器组件,客户端和服务器组件使用相同的实现,无需在每个服务器组件之间传递您的 `t` 函数。<br><br> - [服务器组件](https://intlayer.cn/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
59
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Feature" width="700"> | **有序的代码库**<br><br>保持代码库更有条理:1 个组件 = 同一文件夹中的 1 个词典。翻译内容靠近各自的组件,提高可维护性和清晰度。<br><br> - [Intlayer 如何工作](https://intlayer.cn/doc/concept/how-works-intlayer)
|
|
60
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Feature" width="700"> | **增强的路由功能**<br><br>全面支持应用路由,能够无缝适应复杂的应用结构,适用于 Next.js、React、Vite、Vue.js 等框架。<br><br> - [探索 Next.js 集成](https://intlayer.cn/doc/environment/nextjs)
|
|
61
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **Markdown 支持**<br><br>导入并解析本地文件和远程 Markdown,用于多语言内容,如隐私政策、文档等。解析并使 Markdown 元数据在代码中可访问。<br><br> - [内容文件](https://intlayer.cn/doc/concept/content/file)
|
|
62
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Feature" width="700"> | **免费可视化编辑器和 CMS**<br><br>为内容创作者提供免费的可视化编辑器和 CMS,免去了使用本地化平台的需求。通过 Git 保持内容同步,或使用 CMS 完全或部分外部化内容。<br><br> - [Intlayer 编辑器](https://intlayer.cn/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.cn/doc/concept/cms)
|
|
63
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Feature" width="700"> | **可摇树内容**<br><br>可摇树内容,减少最终包的大小。按组件加载内容,排除包中未使用的内容。支持延迟加载以提高应用程序加载效率。<br><br> - [应用构建优化](https://intlayer.cn/doc/concept/how-works-intlayer#app-build-optimization)
|
|
64
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Feature" width="700"> | **静态渲染**<br><br>不阻塞静态渲染。<br><br> - [Next.js 集成](https://intlayer.cn/doc/environment/nextjs)
|
|
65
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="Feature" width="700"> | **AI 驱动的翻译**<br><br>使用 Intlayer 先进的 AI 驱动翻译工具,结合您自己的 AI 提供商 / API 密钥,只需一键即可将您的网站转换为 231 种语言。<br><br> - [CI/CD 集成](https://intlayer.cn/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.cn/doc/concept/cli) <br> - [自动填充](https://intlayer.cn/doc/concept/auto-fill)
|
|
66
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Feature" width="700"> | **MCP 服务器集成**<br><br>提供一个 MCP (模型上下文协议) 服务器,用于 IDE 自动化,使内容管理和 i18n 工作流程能够直接在您的开发环境中无缝进行。<br><br> - [MCP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/mcp_server.md)
|
|
67
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **VSCode 扩展**<br><br>Intlayer 提供了一个 VSCode 扩展,帮助您管理内容和翻译、构建词典、翻译内容等。<br><br> - [VSCode 扩展](https://intlayer.cn/doc/vs-code-extension)
|
|
68
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Feature" width="700"> | **互操作性**<br><br>允许与 react-i18next、next-i18next、next-intl、react-intl、vue-i18n 进行互操作。<br><br> - [Intlayer 与 react-intl](https://intlayer.cn/blog/intlayer-with-react-intl) <br> - [Intlayer 与 next-intl](https://intlayer.cn/blog/intlayer-with-next-intl) <br> - [Intlayer 与 next-i18next](https://intlayer.cn/blog/intlayer-with-next-i18next) <br> - [Intlayer 与 vue-i18n](https://intlayer.cn/blog/intlayer-with-vue-i18n) |
|
|
69
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Feature" width="700"> | **性能与基准测试**<br><br>使用先进的摇树优化(tree-shaking)和动态加载来提高性能,并使解决方案保持尽可能轻量。 <br><br> - [性能与基准测试](https://intlayer.cn/doc/benchmark)
|
|
49
|
+
| 功能 | 描述 |
|
|
50
|
+
| --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **多框架支持**<br><br>Intlayer 兼容所有主流框架和库,包括 Next.js、React、Vite、Vue.js、Nuxt、Preact、Express 等。 |
|
|
52
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **基于 JavaScript 的内容管理**<br><br>利用 JavaScript 的灵活性高效地定义和管理您的内容。<br><br> - [内容声明](https://intlayer.cn/doc/concept/content) |
|
|
53
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Feature" width="700"> | **按语言区分的内容声明文件**<br><br>通过在自动生成之前声明一次内容,加快您的开发速度。<br><br> - [按语言区分的内容声明文件](https://intlayer.cn/doc/concept/per-locale-file) |
|
|
54
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **编译器**<br><br>Intlayer 编译器自动从组件中提取内容并创建词典文件。<br><br> - [编译器](https://intlayer.cn/doc/compiler) |
|
|
55
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Feature" width="700"> | **类型安全环境**<br><br>利用 TypeScript 确保您的内容定义和代码无错误,同时享受 IDE 自动补全的便利。<br><br> - [TypeScript 配置](https://intlayer.cn/doc/environment/vite-and-react#configure-typescript) |
|
|
56
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Feature" width="700"> | **简化设置**<br><br>通过最少的配置快速启动。轻松调整国际化、路由、AI、构建和内容管理的设置。<br><br> - [探索 Next.js 集成](https://intlayer.cn/doc/environment/nextjs) |
|
|
57
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Feature" width="700"> | **简化内容获取**<br><br>无需为每一条内容调用 `t` 函数。使用单一钩子即可直接获取所有内容。<br><br> - [React 集成](https://intlayer.cn/doc/environment/create-react-app) |
|
|
58
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Feature" width="700"> | **一致的服务器组件实现**<br><br>完美适用于 Next.js 服务器组件,客户端和服务器组件使用相同的实现,无需在每个服务器组件之间传递您的 `t` 函数。<br><br> - [服务器组件](https://intlayer.cn/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
59
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Feature" width="700"> | **有序的代码库**<br><br>保持代码库更有条理:1 个组件 = 同一文件夹中的 1 个词典。翻译内容靠近各自的组件,提高可维护性和清晰度。<br><br> - [Intlayer 如何工作](https://intlayer.cn/doc/concept/how-works-intlayer) |
|
|
60
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Feature" width="700"> | **增强的路由功能**<br><br>全面支持应用路由,能够无缝适应复杂的应用结构,适用于 Next.js、React、Vite、Vue.js 等框架。<br><br> - [探索 Next.js 集成](https://intlayer.cn/doc/environment/nextjs) |
|
|
61
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **Markdown 支持**<br><br>导入并解析本地文件和远程 Markdown,用于多语言内容,如隐私政策、文档等。解析并使 Markdown 元数据在代码中可访问。<br><br> - [内容文件](https://intlayer.cn/doc/concept/content/file) |
|
|
62
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Feature" width="700"> | **免费可视化编辑器和 CMS**<br><br>为内容创作者提供免费的可视化编辑器和 CMS,免去了使用本地化平台的需求。通过 Git 保持内容同步,或使用 CMS 完全或部分外部化内容。<br><br> - [Intlayer 编辑器](https://intlayer.cn/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.cn/doc/concept/cms) |
|
|
63
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Feature" width="700"> | **可摇树内容**<br><br>可摇树内容,减少最终包的大小。按组件加载内容,排除包中未使用的内容。支持延迟加载以提高应用程序加载效率。<br><br> - [应用构建优化](https://intlayer.cn/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
64
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Feature" width="700"> | **静态渲染**<br><br>不阻塞静态渲染。<br><br> - [Next.js 集成](https://intlayer.cn/doc/environment/nextjs) |
|
|
65
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="Feature" width="700"> | **AI 驱动的翻译**<br><br>使用 Intlayer 先进的 AI 驱动翻译工具,结合您自己的 AI 提供商 / API 密钥,只需一键即可将您的网站转换为 231 种语言。<br><br> - [CI/CD 集成](https://intlayer.cn/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.cn/doc/concept/cli) <br> - [自动填充](https://intlayer.cn/doc/concept/auto-fill) |
|
|
66
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Feature" width="700"> | **MCP 服务器集成**<br><br>提供一个 MCP (模型上下文协议) 服务器,用于 IDE 自动化,使内容管理和 i18n 工作流程能够直接在您的开发环境中无缝进行。<br><br> - [MCP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/mcp_server.md) |
|
|
67
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **VSCode 扩展**<br><br>Intlayer 提供了一个 VSCode 扩展,帮助您管理内容和翻译、构建词典、翻译内容等。<br><br> - [VSCode 扩展](https://intlayer.cn/doc/vs-code-extension) |
|
|
68
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Feature" width="700"> | **互操作性**<br><br>允许与 react-i18next、next-i18next、next-intl、react-intl、vue-i18n 进行互操作。<br><br> - [Intlayer 与 react-intl](https://intlayer.cn/blog/intlayer-with-react-intl) <br> - [Intlayer 与 next-intl](https://intlayer.cn/blog/intlayer-with-next-intl) <br> - [Intlayer 与 next-i18next](https://intlayer.cn/blog/intlayer-with-next-i18next) <br> - [Intlayer 与 vue-i18n](https://intlayer.cn/blog/intlayer-with-vue-i18n) <br> - [Intlayer 兼容适配器](https://intlayer.cn/doc/compatibility) |
|
|
69
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Feature" width="700"> | **性能与基准测试**<br><br>使用先进的摇树优化(tree-shaking)和动态加载来提高性能,并使解决方案保持尽可能轻量。 <br><br> - [性能与基准测试](https://intlayer.cn/doc/benchmark) |
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|