@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.
Files changed (162) hide show
  1. package/README.md +24 -24
  2. package/blog/ar/rag_powered_documentation_assistant.md +1 -1
  3. package/blog/pl/rag_powered_documentation_assistant.md +1 -1
  4. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
  5. package/dist/cjs/authors2.cjs +0 -1
  6. package/dist/cjs/common.cjs.map +1 -1
  7. package/dist/cjs/generated/blog.entry.cjs +4 -2
  8. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  9. package/dist/cjs/generated/docs.entry.cjs +4 -2
  10. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  11. package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
  12. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  13. package/dist/cjs/generated/legal.entry.cjs +4 -2
  14. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +4 -2
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +4 -2
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +4 -2
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/docs/ar/configuration.md +10 -10
  24. package/docs/ar/interest_of_intlayer.md +24 -22
  25. package/docs/ar/intlayer_with_express.md +1 -1
  26. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  27. package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
  28. package/docs/ar/intlayer_with_tanstack.md +5 -3
  29. package/docs/ar/lsp.md +114 -175
  30. package/docs/ar/readme.md +25 -25
  31. package/docs/bn/configuration.md +10 -10
  32. package/docs/bn/interest_of_intlayer.md +24 -22
  33. package/docs/cs/configuration.md +10 -10
  34. package/docs/cs/interest_of_intlayer.md +24 -22
  35. package/docs/de/configuration.md +10 -10
  36. package/docs/de/interest_of_intlayer.md +24 -22
  37. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  38. package/docs/de/intlayer_with_tanstack+solid.md +5 -3
  39. package/docs/de/intlayer_with_tanstack.md +5 -3
  40. package/docs/de/lsp.md +111 -172
  41. package/docs/de/readme.md +24 -24
  42. package/docs/en/configuration.md +10 -10
  43. package/docs/en/interest_of_intlayer.md +24 -22
  44. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  45. package/docs/en/intlayer_with_tanstack+solid.md +5 -3
  46. package/docs/en/intlayer_with_tanstack.md +5 -3
  47. package/docs/en/lsp.md +109 -170
  48. package/docs/en/readme.md +24 -24
  49. package/docs/en-GB/configuration.md +10 -10
  50. package/docs/en-GB/interest_of_intlayer.md +24 -22
  51. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  52. package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
  53. package/docs/en-GB/intlayer_with_tanstack.md +5 -3
  54. package/docs/en-GB/lsp.md +109 -170
  55. package/docs/en-GB/readme.md +24 -24
  56. package/docs/es/configuration.md +10 -10
  57. package/docs/es/interest_of_intlayer.md +24 -22
  58. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  59. package/docs/es/intlayer_with_tanstack+solid.md +5 -3
  60. package/docs/es/intlayer_with_tanstack.md +5 -3
  61. package/docs/es/lsp.md +114 -175
  62. package/docs/es/readme.md +24 -24
  63. package/docs/fr/configuration.md +10 -10
  64. package/docs/fr/interest_of_intlayer.md +24 -22
  65. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  66. package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
  67. package/docs/fr/intlayer_with_tanstack.md +5 -3
  68. package/docs/fr/lsp.md +110 -171
  69. package/docs/fr/readme.md +24 -24
  70. package/docs/hi/configuration.md +10 -10
  71. package/docs/hi/interest_of_intlayer.md +24 -22
  72. package/docs/hi/intlayer_with_express.md +1 -1
  73. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  74. package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
  75. package/docs/hi/intlayer_with_tanstack.md +5 -3
  76. package/docs/hi/lsp.md +113 -174
  77. package/docs/hi/readme.md +24 -24
  78. package/docs/id/configuration.md +10 -10
  79. package/docs/id/interest_of_intlayer.md +24 -22
  80. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  81. package/docs/id/intlayer_with_tanstack+solid.md +5 -3
  82. package/docs/id/intlayer_with_tanstack.md +5 -3
  83. package/docs/id/lsp.md +113 -174
  84. package/docs/id/readme.md +24 -24
  85. package/docs/it/configuration.md +10 -10
  86. package/docs/it/interest_of_intlayer.md +24 -22
  87. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  88. package/docs/it/intlayer_with_tanstack+solid.md +5 -3
  89. package/docs/it/intlayer_with_tanstack.md +5 -3
  90. package/docs/it/lsp.md +115 -176
  91. package/docs/it/readme.md +24 -24
  92. package/docs/ja/configuration.md +10 -10
  93. package/docs/ja/interest_of_intlayer.md +24 -22
  94. package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
  95. package/docs/ja/intlayer_with_tanstack.md +5 -3
  96. package/docs/ja/lsp.md +113 -174
  97. package/docs/ja/readme.md +24 -24
  98. package/docs/ko/configuration.md +10 -10
  99. package/docs/ko/interest_of_intlayer.md +24 -22
  100. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  101. package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
  102. package/docs/ko/intlayer_with_tanstack.md +5 -3
  103. package/docs/ko/lsp.md +112 -173
  104. package/docs/ko/readme.md +24 -24
  105. package/docs/nl/configuration.md +10 -10
  106. package/docs/nl/interest_of_intlayer.md +24 -22
  107. package/docs/pl/configuration.md +10 -10
  108. package/docs/pl/interest_of_intlayer.md +4 -2
  109. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  110. package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
  111. package/docs/pl/intlayer_with_tanstack.md +5 -3
  112. package/docs/pl/lsp.md +115 -176
  113. package/docs/pl/readme.md +24 -24
  114. package/docs/pt/configuration.md +10 -10
  115. package/docs/pt/interest_of_intlayer.md +24 -22
  116. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  117. package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
  118. package/docs/pt/intlayer_with_tanstack.md +5 -3
  119. package/docs/pt/lsp.md +113 -174
  120. package/docs/pt/readme.md +24 -24
  121. package/docs/ru/configuration.md +10 -10
  122. package/docs/ru/interest_of_intlayer.md +24 -22
  123. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  124. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  125. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  126. package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
  127. package/docs/ru/intlayer_with_tanstack.md +5 -3
  128. package/docs/ru/lsp.md +112 -173
  129. package/docs/ru/readme.md +24 -24
  130. package/docs/tr/configuration.md +10 -10
  131. package/docs/tr/interest_of_intlayer.md +24 -22
  132. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  133. package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
  134. package/docs/tr/intlayer_with_tanstack.md +5 -3
  135. package/docs/tr/lsp.md +113 -174
  136. package/docs/tr/readme.md +24 -24
  137. package/docs/uk/configuration.md +10 -10
  138. package/docs/uk/interest_of_intlayer.md +4 -2
  139. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  140. package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
  141. package/docs/uk/intlayer_with_tanstack.md +5 -3
  142. package/docs/uk/lsp.md +113 -174
  143. package/docs/uk/per_locale_file.md +1 -1
  144. package/docs/uk/readme.md +24 -24
  145. package/docs/ur/configuration.md +10 -10
  146. package/docs/ur/interest_of_intlayer.md +24 -22
  147. package/docs/vi/configuration.md +10 -10
  148. package/docs/vi/interest_of_intlayer.md +24 -22
  149. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  150. package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
  151. package/docs/vi/intlayer_with_tanstack.md +5 -3
  152. package/docs/vi/lsp.md +115 -176
  153. package/docs/vi/readme.md +24 -24
  154. package/docs/zh/configuration.md +10 -10
  155. package/docs/zh/interest_of_intlayer.md +24 -22
  156. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  157. package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
  158. package/docs/zh/intlayer_with_tanstack.md +5 -3
  159. package/docs/zh/lsp.md +113 -174
  160. package/docs/zh/readme.md +21 -21
  161. package/docs/zh-TW/interest_of_intlayer.md +24 -22
  162. package/package.json +6 -6
package/docs/ko/lsp.md CHANGED
@@ -1,12 +1,14 @@
1
1
  ---
2
2
  createdAt: 2025-06-07
3
- updatedAt: 2026-05-31
3
+ updatedAt: 2026-08-10
4
4
  title: Intlayer LSP 서버
5
- description: Intlayer 언어 서버가 지원되는 모든 에디터에서 useIntlayer, getIntlayer 관련 호출에 대해 정의로 이동(Go-to-Definition) 기타 IDE 기능을 제공하는 방법을 알아봅니다.
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 언어 서버(LSP)**는 Intlayer를 인식하는 지능형 기능으로 IDE향상시키는 [Language Server Protocol(LSP)](https://microsoft.github.io/language-server-protocol/) 구현체입니다. 현재 사전 키 호출에 대한 **정의로 이동(Go to Definition)** 기능을 제공하여, 컴포넌트의 `useIntlayer("my-key")`에서 선언된 `.content.ts` 파일로 즉시 이동할 수 있습니다.
32
+ **Intlayer 언어 서버**는 IDE와 AI 에이전트가 Intlayer인식하도록 만드는 [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/) 구현입니다. `useIntlayer("home")` 같은 호출과 이를 선언하는 `.content.ts` 파일을 양방향으로 연결합니다.
28
33
 
29
34
  ---
30
35
 
31
- ## LSP를 사용하는 이유는 무엇인가요?
36
+ ## 기능
32
37
 
33
- Intlayer를 사용할 `useIntlayer("homepage")`와 같은 호출과 `src/homepage.content.ts` 내의 선언 사이의 연결은 암시적입니다. 도구가 없다면 수동으로 파일을 찾아야 합니다. LSP는 이 연결을 명시적으로 만듭니다.
38
+ | 기능 | 단축키 | 설명 |
39
+ | ------------------ | ------------------- | ------------------------------------------------------------------------------- |
40
+ | **정의로 이동** | `F12` / `Cmd+클릭` | 사전 키 또는 필드 사용처에서 콘텐츠 파일의 선언으로 이동합니다 |
41
+ | **모든 참조 찾기** | `Shift+F12` | 콘텐츠 파일에서 해당 키나 필드를 사용하는 모든 호출 지점을 나열합니다 |
42
+ | **호버** | 커서 올리기 | 파일을 벗어나지 않고 사전의 필드나 필드의 번역 값을 미리 봅니다 |
43
+ | **자동 완성** | `"` `'` `` ` `` `.` | 게터 안에서 선언된 사전 키를, `.` 뒤나 구조 분해에서는 콘텐츠 필드를 제안합니다 |
44
+ | **진단** | 자동 | 어떤 콘텐츠 파일에도 선언되지 않은 키를 경고합니다 |
34
45
 
35
- **AI 에이전트 인식**
46
+ 알아 두면 좋은 동작이 두 가지 더 있습니다.
36
47
 
37
- AI 코딩 에이전트(Cursor, Windsurf, GitHub Copilot, Claude Code, Codex)는 기호를 해석하고 파일 간의 관계를 이해하기 위해 언어 서버에 의존합니다. Intlayer LSP가 실행 중이면 에이전트는 `useIntlayer("key")`를 선언된 곳까지 추적할 수 있으므로, 사용 가능한 콘텐츠 키, 사전의 구조, 읽거나 편집해야 하는 파일에 대한 정확한 컨텍스트를 얻을 수 있습니다.
48
+ - **병합된 사전** 여러 콘텐츠 파일에 나뉜 키는 파일마다 하나씩 결과를 반환하므로 모든 선언으로 이동할 수 있습니다.
49
+ - **모노레포 지원** — 서버는 각 파일에서 _가장 가까운_ `intlayer.config.*`를 해석하므로, 한 워크스페이스의 여러 프로젝트가 각자의 사전을 갖습니다.
38
50
 
39
- **정의로 이동**
51
+ ### 지원되는 호출
40
52
 
41
- 지원되는 게터 호출 내부의 사전 문자열에 커서를 놓고 `F12` 키(또는 `Cmd/Ctrl+클릭`)를 누릅니다. 에디터가 콘텐츠 선언 파일을 열고 커서를 `key:` 행에 배치합니다.
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
- 하나의 키가 여러 콘텐츠 파일에 분산되어 있을 있습니다(Intlayer가 이를 병합함). 서버는 소스 파일당 하나의 `Location`을 반환하므로 모든 선언으로 이동할있습니다.
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
- ### 지원되는 게터 호출
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
- LSP 서버는 `@intlayer/lsp` 패키지의 일부로 배포됩니다.
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
- 패키지는 에디터가 서버 실행 파일로 사용하는 `intlayer-lsp` 바이너리를 노출합니다.
90
+ 에디터가 `PATH`의 `intlayer-lsp`를 필요로 한다면 대신 전역으로 설치하세요(`npm install -g @intlayer/lsp`). Claude Code 플러그인과 아래에서 바이너리를 직접 호출하는 모든 설정이 여기에 해당합니다.
87
91
 
88
92
  ---
89
93
 
90
- ## Claude Code 플러그인으로 설정
94
+ ## 설정
91
95
 
92
- Intlayer LSP는 Intlayer GitHub 리포지토리에 직접 호스팅되는 **Claude Code 플러그인**으로 사용할 수 있습니다. 이를 설치하면 Claude Code가 모든 `useIntlayer` / `getIntlayer` 호출에 대해 네이티브 정의로 이동 기능을 인식하게 됩니다.
96
+ <Tabs defaultTab="vscode">
97
+ <Tab label="VS Code" value="vscode">
93
98
 
94
- ### 1. 언어 서버 바이너리 설치
99
+ [Intlayer VS Code 확장](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension)을 설치하세요. 언어 서버는 v8.12.0부터 포함되어 있으며 자동으로 시작됩니다 — **설정이 필요 없습니다**.
95
100
 
96
- ```bash packageManager="npm"
97
- npm install -g @intlayer/lsp
98
- ```
101
+ 다른 기능은 [VS Code 확장 문서](https://intlayer.org/doc/vs-code-extension)를 참고하세요.
99
102
 
100
- ```bash packageManager="yarn"
101
- yarn global add @intlayer/lsp
102
- ```
103
+ </Tab>
104
+ <Tab label="Cursor / Windsurf" value="cursor">
103
105
 
104
- ```bash packageManager="pnpm"
105
- pnpm add -g @intlayer/lsp
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
- 명령은 플러그인의 `lspServers` 항목이 호출하는 `intlayer-lsp` 바이너리를 PATH에 배치합니다.
111
+ Intlayer는 Intlayer 저장소에서 호스팅되는 **Claude Code 플러그인**을 제공합니다. 이를 통해 Claude Code는 `grep`에 의존하는 대신 사전 키에 대한 실제 심볼 해석을 수행합니다.
109
112
 
110
- ### 2. Intlayer 마켓플레이스 등록 플러그인 설치
113
+ 바이너리를 `PATH`에 두고, 마켓플레이스를 등록한 플러그인을 설치하세요.
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는 `enabledPlugins`에 `"intlayer-lsp@intlayer": true`를 추가하고 지원되는 파일 형식(`.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.svelte`)에서 언어 서버를 자동으로 시작합니다.
122
+ `install`은 플러그인 활성화도 함께 수행합니다. **Claude Code를 재시작하세요** 언어 서버는 시작 로드되므로 그전까지는 플러그인이 적용되지 않습니다.
119
123
 
120
- ### 3. LSP 도구 활성화 (아직 활성화되지 않은 경우)
124
+ 이후 Claude Code는 `.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.astro`, `.svelte` 파일에서 서버를 시작하고, 코드를 탐색할 때 `goToDefinition`, `findReferences`, `hover`를 사용합니다.
121
125
 
122
- 일부 Claude Code 버전에서는 LSP 기능 플래그를 설정해야 합니다. 설치 정의로 이동이 작동하지 않으면 `~/.claude/settings.json`에 다음을 추가하십시오.
126
+ 정의로 이동이 여전히 동작하지 않는다면, 사용 중인 Claude Code 버전이 LSP 도구를 플래그 뒤에 두고 있을 있습니다.
123
127
 
124
128
  ```json fileName="~/.claude/settings.json"
125
129
  {
@@ -129,61 +133,10 @@ Claude Code는 `enabledPlugins`에 `"intlayer-lsp@intlayer": true`를 추가하
129
133
  }
130
134
  ```
131
135
 
132
- Claude Code를 다시 시작하십시오. 이제 Intlayer 코드베이스를 탐색할 때 `grep`으로 대체하는 대신 `goToDefinition`, `findReferences` 및 기타 LSP 작업을 사용합니다.
133
-
134
- ---
135
-
136
- ## VS Code에서 설정 (확장 프로그램 권장)
137
-
138
- [Intlayer VS Code 확장 프로그램](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension)이 설치되어 있다면 언어 서버가 자동으로 시작됩니다. 추가 설정은 필요하지 않습니다. LSP는 v8.12.0부터 VSCode 확장 프로그램에 직접 통합되어 있습니다.
139
-
140
- > 설치 및 기타 기능에 대해서는 [VS Code 확장 프로그램 설명서](https://intlayer.org/doc/vs-code-extension)를 참조하십시오.
141
-
142
- ---
143
-
144
- ## VS Code에서 수동 설정
145
-
146
- Intlayer 확장 프로그램을 사용하지 않는 경우, [**vscode-glspc**](https://marketplace.visualstudio.com/items?itemName=sibiraj-s.vscode-scss-formatter)와 같은 범용 LSP 클라이언트 확장 프로그램을 사용하거나 직접 작은 확장 프로그램을 작성하여 언어 서버를 수동으로 연결할 수 있습니다. 권장하는 방법은 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
- [Zed](https://zed.dev/)언어 설정을 통해 네이티브 LSP 지원을 제공합니다. Zed 사용자 설정(`~/.config/zed/settings.json`)에 항목을 추가합니다.
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
- "language_servers": ["intlayer-lsp", "..."]
201
- },
202
- "TSX": {
203
- "language_servers": ["intlayer-lsp", "..."]
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
- `"..."` 자리 표시자는 Zed Intlayer 서버와 함께 기본 언어 서버를 유지하도록 지시합니다.
219
-
220
- ---
221
-
222
- ## AI 에이전트 CLI (Claude Code, Codex 등) 설정
223
-
224
- **Claude Code**는 뛰어난 LSP 플러그인 지원을 제공합니다. 위의 [Claude Code 플러그인으로 설정](#claude-code-플러그인으로-설정)에 따라 터미널 세션에서 직접 정의로 이동 기능을 완전히 경험해 보십시오.
225
-
226
- **OpenAI Codex** 및 기타 터미널 기반 도구는 아직 LSP 클라이언트로 작동하지 않으며, 지속적인 언어 서버 세션을 유지하는 대신 파일을 직접 읽고 씁니다. 이러한 도구들의 경우 LSP를 실행하는 이점은 간접적으로 발생합니다. 동반 에디터(VS Code, Cursor, Windsurf 등)에서 서버가 활성화되면 에디터의 라이브 인덱스가 에디터 제공 컨텍스트(예: Cursor Composer, Windsurf Cascade, GitHub Copilot Chat)를 통해 쿼리할 수 있는 모든 AI 에이전트에 제공됩니다.
227
-
228
- 에디터를 열지 않고 터미널에서만 작업하는 경우 백그라운드에서 언어 서버를 시작하여 나중에 동일한 작업 영역에 연결하는 에디터에 대비할 수 있습니다.
229
-
230
- ```bash
231
- # 백그라운드에서 서버 실행 상태 유지
232
- npx @intlayer/lsp &
233
- ```
234
-
235
- ---
161
+ `"..."` 자리 표시자는 Zed 기본 언어 서버를 Intlayer 서버와 함께 유지합니다.
236
162
 
237
- ## Neovim에서 수동 설정
163
+ </Tab>
164
+ <Tab label="Neovim" value="neovim">
238
165
 
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
- -- 전역 설치를 피하기 위해 npx로 서버를 시작
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을 다시 시작한 후 Intlayer 키 위에서 `gd`를 누르면 정의로 이동이 호출됩니다.
271
-
272
- ---
273
-
274
- ## 기타 에디터에서 수동 설정
275
-
276
- Language Server Protocol을 지원하는 모든 에디터에서 `@intlayer/lsp`를 사용할 수 있습니다. 서버 사양은 다음과 같습니다.
277
-
278
- - **전송** – Node.js IPC / stdio (표준)
279
- - **실행 파일** – `npx @intlayer/lsp` (또는 로컬에 설치된 `intlayer-lsp` 바이너리)
280
- - **기능** – `definitionProvider: true`, `textDocumentSync: Incremental`
197
+ Neovim을 재시작하면 사전 키 위에서 `gd`는 정의로 이동을, `gr`은 참조 찾기를 실행합니다.
281
198
 
282
- 에디터의 정확한 설정 형식(예: [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 @@ Language Server Protocol을 지원하는 모든 에디터에서 `@intlayer/lsp`
307
223
  }
308
224
  ```
309
225
 
310
- ### 예시: Helix
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
- 서버가 시작되면 `getConfiguration()`을 사용하여 작업 영역 루트에서 Intlayer 설정을 해제합니다. 이를 통해 컴파일된 사전을 찾는 데 필요한 `build` 및 `system` 경로를 얻습니다.
262
+ **Claude Code**는 실제 LSP 클라이언트로 동작합니다 탭을 참고하세요.
331
263
 
332
- **정의로 이동** 요청 시:
264
+ **OpenAI Codex**를 비롯한 대부분의 터미널 도구는 LSP 클라이언트가 아니며 파일을 직접 읽고 씁니다. 서버만 단독으로 실행해도 도움이 되지 않습니다. 에이전트가 색인을 조회할 수 있는 보조 에디터(Cursor Composer, Windsurf Cascade, Copilot Chat)에서 서버가 활성화되어 있을 때 가치가 생깁니다.
333
265
 
334
- 1. 서버는 열려 있는 문서의 전체 텍스트를 읽습니다.
335
- 2. 정규 표현식을 사용하여 게터 호출(`useIntlayer`, `getIntlayer` 등)을 검색합니다.
336
- 3. 커서 위치가 이러한 호출 중 하나 내부인지 확인합니다.
337
- 4. 만약 그렇다면 사전 키(정규식 캡처 그룹 3)를 추출하고 `getUnmergedDictionaries()`를 호출하여 해당 키를 선언하는 각 콘텐츠 파일의 위치를 찾습니다.
338
- 5. 일치하는 파일을 읽고 `key: "<key>"`를 포함하는 정확한 행을 찾아 커서를 정확하게 배치합니다.
339
- 6. `Location` 객체 배열(소스 파일당 하나)을 반환합니다.
266
+ ---
267
+
268
+ ## 동작 방식
269
+
270
+ 서버는 파일마다 가장 가까운 `intlayer.config.*`를 찾아 해당 프로젝트의 설정을 불러오고 컴파일된 사전을 찾습니다. 설정, 사전, 소스 파일 목록은 짧은 TTL로 캐시되며, 감시 중인 콘텐츠 파일이 변경되면 무효화됩니다.
340
271
 
341
- 설정은 세션마다 캐시되고 지연 해제되며, 새로운 작업 영역 폴더를 열 때 등 매 `initialize` 요청 시 재설정됩니다.
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
  ## 문제 해결
346
281
 
347
- | 증상 | 예상 원인 | 해결 방법 |
348
- | --------------------------- | -------------------------- | ---------------------------------------------------------------------------- |
349
- | 정의로 이동이 작동하지 않음 | 서버가 실행 중이 아님 | `@intlayer/lsp`가 설치되어 있고 에디터가 이를 실행하고 있는지 확인하십시오 |
350
- | 잘못된 작업 영역 루트 감지 | 여러 작업 영역 폴더 | `intlayer.config.ts`가 포함된 폴더가 번째 작업 영역 폴더인지 확인하십시오 |
351
- | 정의를 찾을 수 없음 | 설정이 해제되지 않음 | 작업 영역 루트에 `intlayer.config.ts`(또는 `.js`)가 존재하는지 확인하십시오 |
352
- | 시작 서버 작동 중단 | Node.js 버전이 너무 오래됨 | Node.js 14.18이 필요합니다 |
282
+ | 증상 | 가능한 원인 | 해결 |
283
+ | ------------------------------------------- | ------------------------- | -------------------------------------------------------------------- |
284
+ | 아무 일도 일어나지 않음 | 서버가 실행되지 않음 | `@intlayer/lsp`가 설치되어 있고 에디터가 이를 실행하는지 확인하세요 |
285
+ | 에디터에서는 되지만 Claude Code에서는 안 됨 | 세션 도중에 플러그인 설치 | Claude Code를 재시작하세요 언어 서버는 시작 로드됩니다 |
286
+ | 키의 정의를 찾지 못함 | 사전이 빌드되지 않음 | `npx intlayer build`를 실행하거나 개발 서버를 시작하세요 |
287
+ | 모든 키가 미선언으로 보고됨 | 설정이 해석되지 않음 | 프로젝트 루트에 `intlayer.config.ts`(또는 `.js`)가 있는지 확인하세요 |
288
+ | 모노레포에서 잘못된 프로젝트가 사용됨 | 패키지별 설정 누락 | 자체 콘텐츠를 선언하는 각 패키지에 `intlayer.config.*`를 추가하세요 |
289
+ | 시작 시 서버가 충돌함 | Node.js 버전이 너무 낮음 | Node.js 14.18 이상이 필요합니다 |
290
+
291
+ VS Code에서 서버는 **보기 → 출력 → "Intlayer LSP"**에 로그를 남깁니다. 어떤 설정이 해석되었고 사전이 몇 개 발견되었는지 확인하는 데 유용합니다.
package/docs/ko/readme.md CHANGED
@@ -46,27 +46,27 @@ Intlayer는 웹 및 모바일 애플리케이션을 위한 **최신 i18n 솔루
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.org/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.org/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.org/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.org/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.org/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` 함수를 호출할 필요가 없습니다. 단일 hook을 사용하여 모든 콘텐츠를 직접 가져오세요.<br><br> - [React 통합](https://intlayer.org/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.org/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.org/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.org/doc/environment/nextjs) |
61
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **마크다운 지원**<br><br>개인정보 보호 정책, 문서 등과 같은 다국어 콘텐츠를 위해 로컬 파일 및 원격 마크다운을 가져오고 해석합니다. 마크다운 메타데이터를 해석하고 코드에서 액세스할 수 있도록 합니다.<br><br> - [콘텐츠 파일](https://intlayer.org/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.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/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.org/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.org/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>자체 AI 제공자 / API 키를 사용하는 Intlayer의 고급 AI 기반 번역 도구를 사용하여 한 번의 클릭으로 웹사이트를 231개 언어로 변환하세요. <br><br> - [CI/CD 통합](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [자동 완성](https://intlayer.org/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>IDE 자동화를 위한 MCP(Model Context Protocol) 서버를 제공하여 개발 환경 내에서 원활한 콘텐츠 관리 및 i18n 워크플로우를 가능하게 합니다. <br><br> - [MCP 서버](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/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.org/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.org/blog/intlayer-with-react-intl) <br> - [Intlayer 및 next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer 및 next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer 및 vue-i18n](https://intlayer.org/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.org/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.org/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.org/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.org/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.org/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.org/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` 함수를 호출할 필요가 없습니다. 단일 hook을 사용하여 모든 콘텐츠를 직접 가져오세요.<br><br> - [React 통합](https://intlayer.org/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.org/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.org/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.org/doc/environment/nextjs) |
61
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **마크다운 지원**<br><br>개인정보 보호 정책, 문서 등과 같은 다국어 콘텐츠를 위해 로컬 파일 및 원격 마크다운을 가져오고 해석합니다. 마크다운 메타데이터를 해석하고 코드에서 액세스할 수 있도록 합니다.<br><br> - [콘텐츠 파일](https://intlayer.org/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.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/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.org/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.org/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>자체 AI 제공자 / API 키를 사용하는 Intlayer의 고급 AI 기반 번역 도구를 사용하여 한 번의 클릭으로 웹사이트를 231개 언어로 변환하세요. <br><br> - [CI/CD 통합](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [자동 완성](https://intlayer.org/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>IDE 자동화를 위한 MCP(Model Context Protocol) 서버를 제공하여 개발 환경 내에서 원활한 콘텐츠 관리 및 i18n 워크플로우를 가능하게 합니다. <br><br> - [MCP 서버](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/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.org/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.org/blog/intlayer-with-react-intl) <br> - [Intlayer 및 next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer 및 next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer 및 vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Intlayer 호환 어댑터](https://intlayer.org/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.org/doc/benchmark) |
70
70
 
71
71
  ---
72
72
 
@@ -173,7 +173,7 @@ Intlayer를 시작하고 프로젝트에 통합하는 방법을 배우려면 종
173
173
  <li><a href="https://intlayer.org/doc/concept/cms" rel=''>Intlayer CMS</a></li>
174
174
  <li><a href="https://intlayer.org/doc/concept/content" rel=''>사전</a>
175
175
  <ul>
176
- <li><a href="https://intlayer.org/doc/concept/content/per-locale-file" rel=''>로케일별 콘텐츠 선언 파일</a></li>
176
+ <li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>로케일별 콘텐츠 선언 파일</a></li>
177
177
  <li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>번역</a></li>
178
178
  <li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>열거</a></li>
179
179
  <li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>조건</a></li>
@@ -194,7 +194,7 @@ Intlayer를 시작하고 프로젝트에 통합하는 방법을 배우려면 종
194
194
  <ul>
195
195
  <li><a href="https://intlayer.org/doc/environment/nextjs/15" rel=''>Next.js 15</a></li>
196
196
  <li><a href="https://intlayer.org/doc/environment/nextjs/14" rel=''>Next.js 14 (App Router)</a></li>
197
- <li><a href="https://intlayer.org/doc/environment/nextjs/next-with-Page-Router" rel=''>Next.js Page Router</a></li>
197
+ <li><a href="https://intlayer.org/doc/environment/nextjs/next-with-page-router" rel=''>Next.js Page Router</a></li>
198
198
  <li><a href="https://intlayer.org/doc/environment/nextjs/compiler" rel=''>컴파일러를 사용한 Next.js</a></li>
199
199
  </ul>
200
200
  </li>
@@ -223,7 +223,7 @@ Intlayer를 시작하고 프로젝트에 통합하는 방법을 배우려면 종
223
223
  <li><a href="https://intlayer.org/doc/environment/sveltekit" rel=''>SvelteKit</a></li>
224
224
  <li><a href="https://intlayer.org/doc/environment/vite-and-preact" rel=''>Vite + Preact</a></li>
225
225
  <li><a href="https://intlayer.org/doc/environment/vite-and-vue" rel=''>Vite + Vue</a></li>
226
- <li><a href="https://intlayer.org/doc/environment/vite-and-nuxt" rel=''>Vite + Nuxt</a></li>
226
+ <li><a href="https://intlayer.org/doc/environment/nuxt-and-vue" rel=''>Vite + Nuxt</a></li>
227
227
  <li><a href="https://intlayer.org/doc/environment/vite-and-solid" rel=''>Vite + Solid</a></li>
228
228
  <li><a href="https://intlayer.org/doc/environment/angular" rel=''>Angular</a></li>
229
229
  <li>