@intlayer/docs 9.3.0 → 9.3.2
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 +24 -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 +24 -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/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +10 -10
- package/docs/ar/eslint.md +336 -0
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.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/eslint.md +336 -0
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/eslint.md +336 -0
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/configuration.md +10 -10
- package/docs/de/eslint.md +336 -0
- 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/eslint.md +336 -0
- 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/eslint.md +336 -0
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- package/docs/en-GB/intlayer_with_create_react_app.md +32 -35
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
- 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/eslint.md +336 -0
- 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/eslint.md +336 -0
- 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/eslint.md +336 -0
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.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/intlayer_with_vite+svelte.md +2 -2
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/configuration.md +10 -10
- package/docs/id/eslint.md +336 -0
- 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/eslint.md +336 -0
- 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/eslint.md +336 -0
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_react_router_v7.md +1 -146
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/intlayer_with_vite+react.md +5 -1
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/eslint.md +336 -0
- package/docs/ko/interest_of_intlayer.md +24 -22
- package/docs/ko/intlayer_with_lynx+react.md +4 -0
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ko/intlayer_with_storybook.md +5 -5
- 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/eslint.md +336 -0
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/eslint.md +336 -0
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_astro.md +1 -114
- 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/migration_from_i18next_to_intlayer.md +4 -0
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_next-intl_to_intlayer.md +11 -5
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_vue-i18n_to_intlayer.md +4 -0
- package/docs/pl/readme.md +24 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/eslint.md +336 -0
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_astro.md +1 -114
- 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/eslint.md +336 -0
- 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/eslint.md +336 -0
- 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/eslint.md +336 -0
- 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/packages/angular-intlayer/exports.md +2 -2
- 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/eslint.md +336 -0
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/eslint.md +336 -0
- 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/eslint.md +336 -0
- package/docs/zh/interest_of_intlayer.md +24 -22
- package/docs/zh/intlayer_with_create_react_app.md +4 -0
- package/docs/zh/intlayer_with_lynx+react.md +4 -0
- package/docs/zh/intlayer_with_nextjs_14.md +0 -2
- package/docs/zh/intlayer_with_nextjs_15.md +0 -2
- package/docs/zh/intlayer_with_nextjs_page_router.md +0 -2
- package/docs/zh/intlayer_with_nuxt.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +4 -0
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -0
- package/docs/zh/intlayer_with_solid_start.md +1 -1
- 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/intlayer_with_vite+vue.md +0 -2
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/eslint.md +336 -0
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
package/docs/cs/configuration.md
CHANGED
|
@@ -404,7 +404,7 @@ const config: IntlayerConfig = {
|
|
|
404
404
|
ai: {
|
|
405
405
|
/**
|
|
406
406
|
* Použitý poskytovatel AI.
|
|
407
|
-
* Možnosti: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
407
|
+
* Možnosti: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
|
|
408
408
|
* Výchozí: 'openai'
|
|
409
409
|
*/
|
|
410
410
|
provider: "openai",
|
|
@@ -1017,15 +1017,15 @@ Intlayer podporuje několik AI poskytovatelů pro maximální flexibilitu. V sou
|
|
|
1017
1017
|
- **Together.ai**
|
|
1018
1018
|
- **LM Studio**
|
|
1019
1019
|
|
|
1020
|
-
| Pole | Popis | Typ
|
|
1021
|
-
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
1022
|
-
| `provider` | Poskytovatel použitý pro AI funkce Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | Různí poskytovatelé vyžadují různé API klíče a mají různé ceny. |
|
|
1023
|
-
| `model` | Model použitý pro AI funkce. | `string`
|
|
1024
|
-
| `temperature` | Ovládá náhodnost odpovědí AI. | `number`
|
|
1025
|
-
| `apiKey` | Váš API klíč pro zvoleného poskytovatele. | `string`
|
|
1026
|
-
| `applicationContext` | Dodatečný kontext o vaší aplikaci, který pomůže AI generovat přesnější překlady (doména, cílová skupina, tón, terminologie). | `string`
|
|
1027
|
-
| `baseURL` | Základní URL pro AI API. | `string`
|
|
1028
|
-
| `dataSerialization` | Formát serializace dat pro AI funkce. | `'json'` | <br/> `'toon'`
|
|
1020
|
+
| Pole | Popis | Typ | Výchozí | Příklad | Poznámka |
|
|
1021
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1022
|
+
| `provider` | Poskytovatel použitý pro AI funkce Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | <br/> `'moonshotai'` | `undefined` | `'anthropic'` | Různí poskytovatelé vyžadují různé API klíče a mají různé ceny. |
|
|
1023
|
+
| `model` | Model použitý pro AI funkce. | `string` | Žádný | `'gpt-4o-2024-11-20'` | Konkrétní model závisí na poskytovateli. |
|
|
1024
|
+
| `temperature` | Ovládá náhodnost odpovědí AI. | `number` | Žádný | `0.1` | Vyšší teplota = kreativnější a méně předvídatelné. |
|
|
1025
|
+
| `apiKey` | Váš API klíč pro zvoleného poskytovatele. | `string` | Žádný | `process.env.OPENAI_API_KEY` | Musí být uchováváno v tajnosti; použijte proměnné prostředí. |
|
|
1026
|
+
| `applicationContext` | Dodatečný kontext o vaší aplikaci, který pomůže AI generovat přesnější překlady (doména, cílová skupina, tón, terminologie). | `string` | Žádný | `'Můj vlastní kontext aplikace'` | Lze použít k přidání pravidel (např.: `"Neměli byste transformovat URL"`). |
|
|
1027
|
+
| `baseURL` | Základní URL pro AI API. | `string` | Žádný | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Může ukazovat na lokální nebo vlastní endpoint AI API. |
|
|
1028
|
+
| `dataSerialization` | Formát serializace dat pro AI funkce. | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: výchozí, spolehlivé; spotřebovává více tokenů.<br/>• `'toon'`: méně tokenů, méně stabilní.<br/>• Další parametry se předávají modelu jako kontext (úsilí uvažování atd.). |
|
|
1029
1029
|
|
|
1030
1030
|
---
|
|
1031
1031
|
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-08-12
|
|
3
|
+
updatedAt: 2026-08-12
|
|
4
|
+
title: Plugin ESLint | Pravidla lintování pro Intlayer
|
|
5
|
+
description: Odhalujte natvrdo zapsané řetězce, dynamická volání, která kompilátor Intlayer nedokáže optimalizovat, a nepoužitý obsah slovníků pomocí eslint-plugin-intlayer. Funguje s ESLint a oxlint v Reactu, Vue, Svelte, Angularu a Astru.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- ESLint
|
|
9
|
+
- oxlint
|
|
10
|
+
- Linting
|
|
11
|
+
- i18n
|
|
12
|
+
- Internacionalizace
|
|
13
|
+
- no-raw-text
|
|
14
|
+
- Hardcoded řetězce
|
|
15
|
+
- Nepoužité překlady
|
|
16
|
+
- Mrtvý obsah
|
|
17
|
+
- React
|
|
18
|
+
- Vue
|
|
19
|
+
- Svelte
|
|
20
|
+
- Angular
|
|
21
|
+
slugs:
|
|
22
|
+
- doc
|
|
23
|
+
- eslint
|
|
24
|
+
history:
|
|
25
|
+
- version: 9.3.1
|
|
26
|
+
date: 2026-08-12
|
|
27
|
+
changes: "Počáteční historie"
|
|
28
|
+
author: aymericzip
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# Plugin ESLint x OXLint
|
|
32
|
+
|
|
33
|
+
`eslint-plugin-intlayer` zachycuje typy chyb i18n, které TypeScript nedokáže odhalit:
|
|
34
|
+
|
|
35
|
+
1. **Natvrdo zapsaný text (hardcoded text)**, který nebyl vložen do slovníku.
|
|
36
|
+
2. **Dynamická volání**, která projdou typovou kontrolou a fungují, ale kompilátor Intlayer je nedokáže optimalizovat.
|
|
37
|
+
3. **Mrtvý obsah (Dead content)** — slovníky a pole, které v projektu nic nečte (volitelné / opt-in).
|
|
38
|
+
|
|
39
|
+
Neznámé klíče slovníků, neznámé cesty polí a chybějící lokality jsou již chybami kompilace, takže je plugin neopakuje.
|
|
40
|
+
|
|
41
|
+
## Instalace
|
|
42
|
+
|
|
43
|
+
```bash packageManager="npm"
|
|
44
|
+
npm install --save-dev eslint-plugin-intlayer
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```bash packageManager="pnpm"
|
|
48
|
+
pnpm add --save-dev eslint-plugin-intlayer
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```bash packageManager="yarn"
|
|
52
|
+
yarn add --dev eslint-plugin-intlayer
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Vyžaduje ESLint 9 nebo novější (flat config).
|
|
56
|
+
|
|
57
|
+
## Použití
|
|
58
|
+
|
|
59
|
+
Plugin funguje jak v ESLint, tak v [oxlint](https://oxc.rs) — se stejnými pravidly a možnostmi.
|
|
60
|
+
|
|
61
|
+
<Tabs defaultTab="eslint">
|
|
62
|
+
<Tab label="ESLint" value="eslint">
|
|
63
|
+
|
|
64
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
65
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
66
|
+
|
|
67
|
+
export default [...intlayer.configs.recommended];
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Nebo aktivujte pravidla jednotlivě:
|
|
71
|
+
|
|
72
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
73
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
74
|
+
|
|
75
|
+
export default [
|
|
76
|
+
{
|
|
77
|
+
plugins: { intlayer },
|
|
78
|
+
rules: {
|
|
79
|
+
"intlayer/no-raw-text": "warn",
|
|
80
|
+
"intlayer/static-dictionary-key": "error",
|
|
81
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
82
|
+
"intlayer/enforce-adapter-import": "warn",
|
|
83
|
+
"intlayer/no-unused-content": "warn",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
</Tab>
|
|
90
|
+
<Tab label="oxlint" value="oxlint">
|
|
91
|
+
|
|
92
|
+
```json fileName=".oxlintrc.json"
|
|
93
|
+
{
|
|
94
|
+
"jsPlugins": ["eslint-plugin-intlayer"],
|
|
95
|
+
"rules": {
|
|
96
|
+
"intlayer/no-raw-text": "warn",
|
|
97
|
+
"intlayer/static-dictionary-key": "error",
|
|
98
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
99
|
+
"intlayer/enforce-adapter-import": "warn"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Dvě upozornění: podpora JS pluginů v oxlint je stále ve fázi alfa a oxlint nepodporuje vlastní parsery — proto zde soubory `.vue`, `.svelte`, `.astro` a šablony Angularu nejsou kontrolovány. Spusťte oxlint na souborech JS/TS/JSX a pro zbytek použijte ESLint.
|
|
105
|
+
|
|
106
|
+
Pravidlo `no-unused-content` je výše záměrně vynecháno: vyžaduje pracovní adresář a cestu ke kontrolovanému souboru z kontextu pravidla, což alfa můstek JS pluginů nezaručuje. Spusťte jej pod ESLintem.
|
|
107
|
+
|
|
108
|
+
</Tab>
|
|
109
|
+
</Tabs>
|
|
110
|
+
|
|
111
|
+
### Konfigurace (Configs)
|
|
112
|
+
|
|
113
|
+
| Konfigurace | `no-raw-text` | `static-dictionary-key` | `no-dynamic-field-access` | `enforce-adapter-import` | `no-unused-content` |
|
|
114
|
+
| --------------- | --------------------------- | ----------------------- | ------------------------- | ------------------------ | ------------------- |
|
|
115
|
+
| `recommended` | warn | error | error | off | off |
|
|
116
|
+
| `strict` | error (+ literály mimo JSX) | error | error | error | off |
|
|
117
|
+
| `contract-only` | off | error | error | off | off |
|
|
118
|
+
|
|
119
|
+
Předvolba `recommended` záměrně ponechává `no-raw-text` na úrovni `warn`: její spuštění nad existující kódovou bází zobrazí všechny nepřeložené řetězce najednou, což by nemělo rozbít váš build hned první den.
|
|
120
|
+
|
|
121
|
+
`enforce-adapter-import` je ve výchozím nastavení vypnuto — pokud jej chcete, explicitně jej zapněte.
|
|
122
|
+
|
|
123
|
+
`no-unused-content` je vypnuto ve všech konfiguracích včetně `strict`. Je to jediné pravidlo, které čte vaši konfiguraci Intlayer a prochází zdrojové soubory z disku, takže jeho zapnutí by mělo být záměrnou volbou, nikoli automatickou předvolbou.
|
|
124
|
+
|
|
125
|
+
## Pravidla
|
|
126
|
+
|
|
127
|
+
### `no-raw-text`
|
|
128
|
+
|
|
129
|
+
Hlásí text určený pro uživatele, který není deklarován ve slovníku. Používá stejnou detekci jako `intlayer extract`, takže názvy značek, třídy CSS a technické identifikátory jsou ignorovány.
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
// ✗ Nahlášeno
|
|
133
|
+
<h1>Welcome to our documentation</h1>
|
|
134
|
+
<input placeholder="Enter your email address" />
|
|
135
|
+
|
|
136
|
+
// ✓ V pořádku
|
|
137
|
+
const { title } = useIntlayer("home");
|
|
138
|
+
<h1>{title}</h1>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Soubory deklarace obsahu (`*.content.ts`, …) jsou přeskočeny.
|
|
142
|
+
|
|
143
|
+
Chcete-li opravit celý soubor najednou, spusťte `npx intlayer extract` a nechte kompilátor přesunout řetězce do slovníku za vás.
|
|
144
|
+
|
|
145
|
+
**Možnosti**
|
|
146
|
+
|
|
147
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
148
|
+
{
|
|
149
|
+
"intlayer/no-raw-text": [
|
|
150
|
+
"warn",
|
|
151
|
+
{
|
|
152
|
+
// Atributy, jejichž hodnotou je text pro uživatele.
|
|
153
|
+
// Výchozí: title, placeholder, alt, aria-label, label
|
|
154
|
+
attributes: ["title", "placeholder", "alt", "aria-label", "label"],
|
|
155
|
+
|
|
156
|
+
// Elementy, jejichž obsah nikdy není textem pro uživatele.
|
|
157
|
+
// Výchozí: code, pre, script, style
|
|
158
|
+
ignoreElements: ["code", "pre", "script", "style"],
|
|
159
|
+
|
|
160
|
+
// Regulární výrazy pro text, který se nemá nikdy hlásit.
|
|
161
|
+
ignorePatterns: ["^Powered by"],
|
|
162
|
+
|
|
163
|
+
// Hlásit také řetězcové literály mimo značky. Výchozí: false
|
|
164
|
+
includeStringLiterals: false,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### `static-dictionary-key`
|
|
171
|
+
|
|
172
|
+
Vyžaduje, aby klíč slovníku byl řetězcový literál.
|
|
173
|
+
|
|
174
|
+
Kompilátor může přednačíst slovník pouze tehdy, když dokáže přečíst klíč přímo v místě volání. Při použití vypočteného klíče optimalizaci tiše přeskočí a místo toho přibalí každý slovník.
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
// ✗ Nahlášeno
|
|
178
|
+
useIntlayer(dictionaryKey);
|
|
179
|
+
useIntlayer(`home-${suffix}`);
|
|
180
|
+
getTranslations({ namespace: page });
|
|
181
|
+
|
|
182
|
+
// ✗ Proměnná stále není literál
|
|
183
|
+
const key = "home";
|
|
184
|
+
useIntlayer(key);
|
|
185
|
+
|
|
186
|
+
// ✓ V pořádku
|
|
187
|
+
useIntlayer("home");
|
|
188
|
+
getTranslations({ namespace: "home" });
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
To platí pro `useIntlayer`, `getIntlayer` a všechny kompatibilní adaptéry (`useTranslation`, `useTranslations`, `formatMessage`, `<FormattedMessage id>`, `<Trans i18nKey>`, …).
|
|
192
|
+
|
|
193
|
+
### `no-dynamic-field-access`
|
|
194
|
+
|
|
195
|
+
Vyžaduje, aby pole, které čtete ze slovníku, bylo staticky známé.
|
|
196
|
+
|
|
197
|
+
Kompilátor odstraňuje pole, u kterých nevidí využití. Dynamický přístup je pro něj neviditelný, takže čtení může za běhu vrátit `undefined`.
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// ✗ Nahlášeno
|
|
201
|
+
const content = useIntlayer("home");
|
|
202
|
+
content[fieldName];
|
|
203
|
+
|
|
204
|
+
const t = useTranslations("home");
|
|
205
|
+
t(messageKey);
|
|
206
|
+
|
|
207
|
+
// ✓ V pořádku
|
|
208
|
+
content.title;
|
|
209
|
+
content["title"];
|
|
210
|
+
content.items[0];
|
|
211
|
+
t("hero.title");
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### `enforce-adapter-import`
|
|
215
|
+
|
|
216
|
+
Dává přednost kompatibilnímu adaptéru `@intlayer/*` před původním balíčkem. Původní balíček se na Intlayer překládá pouze při nakonfigurovaném aliasu bundleru; adaptér funguje vždy. Automaticky opravitelné pomocí `--fix`.
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
// ✗ Nahlášeno
|
|
220
|
+
import { useTranslation } from "react-i18next";
|
|
221
|
+
import { getTranslations } from "next-intl/server";
|
|
222
|
+
|
|
223
|
+
// ✓ V pořádku
|
|
224
|
+
import { useTranslation } from "@intlayer/react-i18next";
|
|
225
|
+
import { getTranslations } from "@intlayer/next-intl/server";
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### `no-unused-content`
|
|
229
|
+
|
|
230
|
+
**Ve výchozím nastavení vypnuto.** Hlásí obsah, který v projektu nic nečte, a navíc klíče slovníků deklarované na více než jednom místě.
|
|
231
|
+
|
|
232
|
+
```typescript fileName="src/home.content.ts"
|
|
233
|
+
export default {
|
|
234
|
+
key: "home", // ✗ Nahlášeno, pokud žádný volající v projektu nežádá "home"
|
|
235
|
+
content: {
|
|
236
|
+
title: t({ cs: "Název", en: "Title" }),
|
|
237
|
+
|
|
238
|
+
// ✗ Nahlášeno, pokud nic nečte `hero`
|
|
239
|
+
hero: {
|
|
240
|
+
subtitle: t({ cs: "Podnázev", en: "Subtitle" }),
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Na rozdíl od jiných pravidel toto pravidlo nemůže rozhodnout pouze na základě otevřeného souboru — pole je nepoužité pouze ve vztahu k celému projektu. Při první deklaraci obsahu v běhu lintu načte vaši konfiguraci Intlayer, prohledá zdrojové soubory podle konfigurace (`build.traversePattern`, `compiler.transformPattern`) a spustí stejný analyzátor využití, který pohání `@intlayer/lsp` a přeškrtnutí „nepoužitého“ v rozšíření VS Code. Výsledek se ukládá do mezipaměti na `cacheTtl` milisekund, takže skenování proběhne jednou za běh a nikoli pro každý soubor.
|
|
247
|
+
|
|
248
|
+
**Možnosti**
|
|
249
|
+
|
|
250
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
251
|
+
{
|
|
252
|
+
"intlayer/no-unused-content": [
|
|
253
|
+
"warn",
|
|
254
|
+
{
|
|
255
|
+
// Hlásit klíče slovníků, na které nic neodkazuje. Výchozí: true
|
|
256
|
+
reportUnusedDictionaries: true,
|
|
257
|
+
|
|
258
|
+
// Hlásit pole obsahu, která nic nečte. Výchozí: true
|
|
259
|
+
reportUnusedFields: true,
|
|
260
|
+
|
|
261
|
+
// Hlásit duplicitní klíče deklarované na více místech. Výchozí: true
|
|
262
|
+
reportDuplicateKeys: true,
|
|
263
|
+
|
|
264
|
+
// Regulární výrazy pro cesty polí, které se nemají nikdy hlásit.
|
|
265
|
+
ignoreFields: ["^meta"],
|
|
266
|
+
|
|
267
|
+
// Kořen projektu, od kterého skenování začíná. Výchozí: pracovní adresář ESLint
|
|
268
|
+
baseDir: process.cwd(),
|
|
269
|
+
|
|
270
|
+
// Doba opětovného použití skenu projektu (v ms). Výchozí: 30000
|
|
271
|
+
cacheTtl: 30000,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Snižte `cacheTtl`, pokud lintujete z dlouhotrvajícího serveru editoru a chcete, aby se úpravy projevily dříve; nastavte `baseDir`, když jeden běh lintu zahrnuje několik projektů Intlayer v monorepu.
|
|
278
|
+
|
|
279
|
+
> **Přiklání se k tichu.** Falešně pozitivní výsledek by zde smazal překlad, proto se nic nehlásí, pokud je slovník konzumován způsobem, který analýza nedokáže sledovat: objekt obsahu předaný jako celek, překladatelská funkce vázaná z něj (`const t = useTranslations("home")`), deklarace dosažená přímým importem (`useDictionary(myDictionary)`), volání `nest()` z jiného slovníku nebo seznam polí neúplný kvůli operátoru spread. Jednosouborové komponenty (`.vue`, `.svelte`, `.astro`) se počítají jako využívající každé pole zmíněných slovníků, protože jejich bloky skriptů se zde neparsují.
|
|
280
|
+
|
|
281
|
+
`reportDuplicateKeys` čte nesloučené slovníky, které build zapisuje do `.intlayer/`, takže zůstává neaktivní, dokud projekt nebyl alespoň jednou sestaven. Dvě deklarace sdílející klíč se sloučí, což je legitimní vzor — hlášení existuje proto, že pole definované na obou stranách tiše zachová pouze jednu ze dvou hodnot.
|
|
282
|
+
|
|
283
|
+
Analyzátor se načítá z `@intlayer/lsp`, který je distribuován jako ESM. Pravidlo proto vyžaduje verzi Node schopnou provést `require()` modulu ES — Node 20.19+ nebo 22.12+. Na starších verzích raději nehlásí nic, než aby způsobilo selhání lintu.
|
|
284
|
+
|
|
285
|
+
## Frameworky
|
|
286
|
+
|
|
287
|
+
Každé pravidlo funguje ve všech integracích Intlayer, včetně šablon Vue, Svelte a Angularu. Stačí pouze určit ESLintu, který parser má číst daný typ souboru.
|
|
288
|
+
|
|
289
|
+
| Framework | Soubory | Parser |
|
|
290
|
+
| ------------------------- | ----------------- | --------------------------------- |
|
|
291
|
+
| React, Preact, Solid, Lit | `.jsx` `.tsx` | `typescript-eslint` |
|
|
292
|
+
| Next.js | `.jsx` `.tsx` | `typescript-eslint` |
|
|
293
|
+
| Vue, Nuxt | `.vue` | `vue-eslint-parser` |
|
|
294
|
+
| Svelte, SvelteKit | `.svelte` | `svelte-eslint-parser` |
|
|
295
|
+
| Angular | `.ts` | `typescript-eslint` |
|
|
296
|
+
| Šablony Angularu | `.component.html` | `@angular-eslint/template-parser` |
|
|
297
|
+
| Astro | `.astro` | `astro-eslint-parser` |
|
|
298
|
+
|
|
299
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
300
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
301
|
+
import tseslint from "typescript-eslint";
|
|
302
|
+
import vueParser from "vue-eslint-parser";
|
|
303
|
+
import svelteParser from "svelte-eslint-parser";
|
|
304
|
+
import angularTemplateParser from "@angular-eslint/template-parser";
|
|
305
|
+
|
|
306
|
+
export default [
|
|
307
|
+
...intlayer.configs.recommended,
|
|
308
|
+
|
|
309
|
+
{
|
|
310
|
+
files: ["**/*.{ts,tsx,jsx}"],
|
|
311
|
+
languageOptions: { parser: tseslint.parser },
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
files: ["**/*.vue"],
|
|
315
|
+
languageOptions: {
|
|
316
|
+
parser: vueParser,
|
|
317
|
+
parserOptions: { parser: tseslint.parser },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
files: ["**/*.svelte"],
|
|
322
|
+
languageOptions: {
|
|
323
|
+
parser: svelteParser,
|
|
324
|
+
parserOptions: { parser: tseslint.parser },
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
files: ["**/*.component.html"],
|
|
329
|
+
languageOptions: { parser: angularTemplateParser },
|
|
330
|
+
},
|
|
331
|
+
];
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
Nainstalujte pouze ty parsery, které váš projekt vyžaduje.
|
|
335
|
+
|
|
336
|
+
> **Známé omezení.** V šablonách Vue a Angularu výraz jako `{{ content[key] }}` není kontrolován pravidlem `no-dynamic-field-access`. Dynamická čtení zapsaná ve skriptovém bloku jsou zachycena normálně.
|
|
@@ -207,7 +207,7 @@ export const ComponentExample = () => {
|
|
|
207
207
|
Tento přístup vám umožňuje:
|
|
208
208
|
|
|
209
209
|
1. **Zrychlit vývoj**
|
|
210
|
-
- Soubory `.content.{
|
|
210
|
+
- Soubory `.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}` lze vytvářet pomocí rozšíření pro VSCode
|
|
211
211
|
- Nástroje AI pro automatické doplňování ve vašem IDE (jako je GitHub Copilot) vám mohou pomoci s deklarací obsahu, čímž se omezí kopírování/vkládání
|
|
212
212
|
|
|
213
213
|
2. **Vyčistit vaši kódovou základnu**
|
|
@@ -231,27 +231,27 @@ Tento přístup vám umožňuje:
|
|
|
231
231
|
|
|
232
232
|
## Další funkce Intlayer
|
|
233
233
|
|
|
234
|
-
| Funkce | Popis
|
|
235
|
-
| ------------------------------------------------------------------------------------------------------------------------- |
|
|
236
|
-
|  | **Podpora napříč frameworky**<br><br>Intlayer je kompatibilní se všemi hlavními frameworky a knihovnami, včetně Next.js, React, Vite, Vue.js, Nuxt, Preact, Express a dalších.
|
|
237
|
-
|  | **Správa obsahu poháněná JavaScriptem**<br><br>Využijte flexibilitu JavaScriptu k efektivní definici a správě vašeho obsahu. <br><br> - [Deklarace obsahu](https://intlayer.org/doc/concept/content)
|
|
238
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Překladač (Compiler)**<br><br>Překladač Intlayer automaticky extrahuje obsah z komponent a generuje soubory slovníků.<br><br> - [Překladač](https://intlayer.org/doc/compiler)
|
|
239
|
-
|  | **Soubor deklarace obsahu pro každé národní prostředí**<br><br>Zrychlete svůj vývoj deklarováním obsahu jednou, před automatickým generováním.<br><br> - [Soubor deklarace obsahu pro každé národní prostředí](https://intlayer.org/doc/concept/per-locale-file)
|
|
240
|
-
|  | **Typově bezpečné prostředí**<br><br>Využijte TypeScript k zajištění bezchybnosti definic obsahu a kódu a zároveň čerpejte výhody z automatického doplňování v IDE.<br><br> - [Konfigurace TypeScriptu](https://intlayer.org/doc/environment/vite-and-react#configure-typescript)
|
|
241
|
-
|  | **Zjednodušené nastavení**<br><br>Rychle začněte s minimální konfigurací. Snadno upravte nastavení pro internacionalizaci, směrování, AI, sestavování a zpracování obsahu. <br><br> - [Prozkoumejte integraci Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
242
|
-
|  | **Zjednodušené získávání obsahu**<br><br>Není třeba volat funkci `t` pro každou část obsahu. Získejte veškerý obsah přímo pomocí jediného hooku.<br><br> - [Integrace React](https://intlayer.org/doc/environment/create-react-app)
|
|
243
|
-
|  | **Konzistentní implementace Server Component**<br><br>Skvěle se hodí pro Next.js server components, používejte stejnou implementaci pro klientské i serverové komponenty, není třeba předávat funkci `t` skrze každou serverovou komponentu. <br><br> - [Server Components](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
244
|
-
|  | **Organizovaná kódová základna**<br><br>Udržujte svou kódovou základnu organizovanější: 1 komponenta = 1 slovník ve stejné složce. Překlady v blízkosti jejich příslušných komponent zvyšují udržovatelnost a přehlednost. <br><br> - [Jak Intlayer funguje](https://intlayer.org/doc/concept/how-works-intlayer)
|
|
245
|
-
|  | **Vylepšené směrování**<br><br>Plná podpora směrování aplikací, plynule se přizpůsobující komplexním strukturám aplikací, pro Next.js, React, Vite, Vue.js atd.<br><br> - [Prozkoumejte integraci Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
246
|
-
|  | **Podpora Markdownu**<br><br>Importujte a interpretujte lokální soubory a vzdálený Markdown pro vícejazyčný obsah, jako jsou zásady ochrany osobních údajů, dokumentace atd. Interpretujte a zpřístupněte metadata Markdownu ve vašem kódu.<br><br> - [Soubory obsahu](https://intlayer.org/doc/concept/content/file)
|
|
247
|
-
|  | **Zdarma vizuální editor a CMS**<br><br>Pro autory obsahu je k dispozici bezplatný vizuální editor a CMS, což eliminuje potřebu lokalizační platformy. Udržujte svůj obsah synchronizovaný pomocí Gitu nebo jej zcela či částečně externalizujte pomocí CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms)
|
|
248
|
-
|  | **Tree-shakable obsah**<br><br>Obsah typu tree-shakable, který snižuje velikost výsledného balíčku. Načítá obsah pro každou komponentu a vylučuje jakýkoli nepoužívaný obsah z vašeho balíčku. Podporuje opožděné načítání (lazy loading) pro zvýšení efektivity načítání aplikace. <br><br> - [Optimalizace sestavení aplikace](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization)
|
|
249
|
-
|  | **Statické vykreslování (Static Rendering)**<br><br>Neblokuje statické vykreslování. <br><br> - [Integrace Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
250
|
-
|  | **Překlad s podporou AI**<br><br>Převeďte svůj web do 231 jazyků jediným kliknutím pomocí pokročilých nástrojů pro překlad poháněných AI od Intlayer s využitím vlastního poskytovatele AI/klíče API. <br><br> - [Integrace CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Automatické vyplňování](https://intlayer.org/doc/concept/auto-fill)
|
|
251
|
-
|  | **Integrace serveru MCP**<br><br>Poskytuje server MCP (Model Context Protocol) pro automatizaci IDE, což umožňuje bezproblémovou správu obsahu a pracovní postupy i18n přímo ve vašem vývojovém prostředí. <br><br> - [Server MCP](https://github.com/aymericzip/intlayer/blob/main/docs/cs/mcp_server.md)
|
|
252
|
-
|  | **Rozšíření pro VSCode**<br><br>Intlayer poskytuje rozšíření pro VSCode, které vám pomůže spravovat obsah a překlady, vytvářet slovníky, překládat obsah a další. <br><br> - [Rozšíření pro VSCode](https://intlayer.org/doc/vs-code-extension)
|
|
253
|
-
|  | **Interoperabilita**<br><br>Umožňuje interoperabilitu s react-i18next, next-i18next, next-intl a react-intl. <br><br> - [Intlayer a react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer a next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer a next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next)
|
|
254
|
-
| Testování chybějících překladů (CLI/CI) | ✅ CLI: npx intlayer content test (audit vhodný pro CI)
|
|
234
|
+
| Funkce | Popis |
|
|
235
|
+
| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
236
|
+
|  | **Podpora napříč frameworky**<br><br>Intlayer je kompatibilní se všemi hlavními frameworky a knihovnami, včetně Next.js, React, Vite, Vue.js, Nuxt, Preact, Express a dalších. |
|
|
237
|
+
|  | **Správa obsahu poháněná JavaScriptem**<br><br>Využijte flexibilitu JavaScriptu k efektivní definici a správě vašeho obsahu. <br><br> - [Deklarace obsahu](https://intlayer.org/doc/concept/content) |
|
|
238
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Překladač (Compiler)**<br><br>Překladač Intlayer automaticky extrahuje obsah z komponent a generuje soubory slovníků.<br><br> - [Překladač](https://intlayer.org/doc/compiler) |
|
|
239
|
+
|  | **Soubor deklarace obsahu pro každé národní prostředí**<br><br>Zrychlete svůj vývoj deklarováním obsahu jednou, před automatickým generováním.<br><br> - [Soubor deklarace obsahu pro každé národní prostředí](https://intlayer.org/doc/concept/per-locale-file) |
|
|
240
|
+
|  | **Typově bezpečné prostředí**<br><br>Využijte TypeScript k zajištění bezchybnosti definic obsahu a kódu a zároveň čerpejte výhody z automatického doplňování v IDE.<br><br> - [Konfigurace TypeScriptu](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
241
|
+
|  | **Zjednodušené nastavení**<br><br>Rychle začněte s minimální konfigurací. Snadno upravte nastavení pro internacionalizaci, směrování, AI, sestavování a zpracování obsahu. <br><br> - [Prozkoumejte integraci Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
242
|
+
|  | **Zjednodušené získávání obsahu**<br><br>Není třeba volat funkci `t` pro každou část obsahu. Získejte veškerý obsah přímo pomocí jediného hooku.<br><br> - [Integrace React](https://intlayer.org/doc/environment/create-react-app) |
|
|
243
|
+
|  | **Konzistentní implementace Server Component**<br><br>Skvěle se hodí pro Next.js server components, používejte stejnou implementaci pro klientské i serverové komponenty, není třeba předávat funkci `t` skrze každou serverovou komponentu. <br><br> - [Server Components](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
244
|
+
|  | **Organizovaná kódová základna**<br><br>Udržujte svou kódovou základnu organizovanější: 1 komponenta = 1 slovník ve stejné složce. Překlady v blízkosti jejich příslušných komponent zvyšují udržovatelnost a přehlednost. <br><br> - [Jak Intlayer funguje](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
245
|
+
|  | **Vylepšené směrování**<br><br>Plná podpora směrování aplikací, plynule se přizpůsobující komplexním strukturám aplikací, pro Next.js, React, Vite, Vue.js atd.<br><br> - [Prozkoumejte integraci Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
246
|
+
|  | **Podpora Markdownu**<br><br>Importujte a interpretujte lokální soubory a vzdálený Markdown pro vícejazyčný obsah, jako jsou zásady ochrany osobních údajů, dokumentace atd. Interpretujte a zpřístupněte metadata Markdownu ve vašem kódu.<br><br> - [Soubory obsahu](https://intlayer.org/doc/concept/content/file) |
|
|
247
|
+
|  | **Zdarma vizuální editor a CMS**<br><br>Pro autory obsahu je k dispozici bezplatný vizuální editor a CMS, což eliminuje potřebu lokalizační platformy. Udržujte svůj obsah synchronizovaný pomocí Gitu nebo jej zcela či částečně externalizujte pomocí CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
248
|
+
|  | **Tree-shakable obsah**<br><br>Obsah typu tree-shakable, který snižuje velikost výsledného balíčku. Načítá obsah pro každou komponentu a vylučuje jakýkoli nepoužívaný obsah z vašeho balíčku. Podporuje opožděné načítání (lazy loading) pro zvýšení efektivity načítání aplikace. <br><br> - [Optimalizace sestavení aplikace](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
249
|
+
|  | **Statické vykreslování (Static Rendering)**<br><br>Neblokuje statické vykreslování. <br><br> - [Integrace Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
250
|
+
|  | **Překlad s podporou AI**<br><br>Převeďte svůj web do 231 jazyků jediným kliknutím pomocí pokročilých nástrojů pro překlad poháněných AI od Intlayer s využitím vlastního poskytovatele AI/klíče API. <br><br> - [Integrace CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Automatické vyplňování](https://intlayer.org/doc/concept/auto-fill) |
|
|
251
|
+
|  | **Integrace serveru MCP**<br><br>Poskytuje server MCP (Model Context Protocol) pro automatizaci IDE, což umožňuje bezproblémovou správu obsahu a pracovní postupy i18n přímo ve vašem vývojovém prostředí. <br><br> - [Server MCP](https://github.com/aymericzip/intlayer/blob/main/docs/cs/mcp_server.md) |
|
|
252
|
+
|  | **Rozšíření pro VSCode**<br><br>Intlayer poskytuje rozšíření pro VSCode, které vám pomůže spravovat obsah a překlady, vytvářet slovníky, překládat obsah a další. <br><br> - [Rozšíření pro VSCode](https://intlayer.org/doc/vs-code-extension) |
|
|
253
|
+
|  | **Interoperabilita**<br><br>Umožňuje interoperabilitu s react-i18next, next-i18next, next-intl a react-intl. <br><br> - [Intlayer a react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer a next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer a next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Compat adaptéry Intlayer](https://intlayer.org/doc/compatibility) |
|
|
254
|
+
| Testování chybějících překladů (CLI/CI) | ✅ CLI: npx intlayer content test (audit vhodný pro CI) |
|
|
255
255
|
|
|
256
256
|
## Porovnání Intlayer s jinými řešeními
|
|
257
257
|
|
|
@@ -290,3 +290,5 @@ Les étoiles GitHub sont un indicateur fort de la popularité d'un projet, de la
|
|
|
290
290
|
`intlayer` může také pomoci spravovat vaše jmenné prostory pro `react-intl`, `react-i18next`, `next-intl`, `next-i18next` a `vue-i18n`.
|
|
291
291
|
|
|
292
292
|
Pomocí `intlayer` můžete deklarovat svůj obsah ve formátu vaší oblíbené knihovny i18n a intlayer vygeneruje vaše jmenné prostory v umístění podle vašeho výběru (příklad: `/messages/{{locale}}/{{namespace}}.json`).
|
|
293
|
+
|
|
294
|
+
Pokud chcete nadále používat API své současné i18n knihovny, `intlayer` nabízí také **compat adaptéry**: balíčky, které vystavují přesně stejné API jako `react-i18next`, `next-intl`, `react-intl`, `vue-i18n` a další, ale obsah dodávají z Intlayer slovníků. Díky tomu můžete migrovat postupně, aniž byste museli přepisovat svůj kód. Viz [dokumentace compat adaptérů](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/index.md).
|
package/docs/de/configuration.md
CHANGED
|
@@ -404,7 +404,7 @@ const config: IntlayerConfig = {
|
|
|
404
404
|
ai: {
|
|
405
405
|
/**
|
|
406
406
|
* Zu verwendender KI-Anbieter.
|
|
407
|
-
* Optionen: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
407
|
+
* Optionen: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
|
|
408
408
|
* Standard: 'openai'
|
|
409
409
|
*/
|
|
410
410
|
provider: "openai",
|
|
@@ -1035,15 +1035,15 @@ Intlayer unterstützt mehrere KI-Anbieter für maximale Flexibilität. Derzeit u
|
|
|
1035
1035
|
- **Together.ai**
|
|
1036
1036
|
- **LM Studio**
|
|
1037
1037
|
|
|
1038
|
-
| Feld | Beschreibung | Typ
|
|
1039
|
-
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
1040
|
-
| `provider` | Der für Intlayer KI-Funktionen zu verwendende Anbieter. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | Verschiedene Anbieter erfordern unterschiedliche API-Schlüssel und haben unterschiedliche Preismodelle. |
|
|
1041
|
-
| `model` | Das für die KI-Funktionen zu verwendende Modell. | `string`
|
|
1042
|
-
| `temperature` | Steuert den Zufallsfaktor der KI-Antworten. | `number`
|
|
1043
|
-
| `apiKey` | Ihr API-Schlüssel für den ausgewählten Anbieter. | `string`
|
|
1044
|
-
| `applicationContext` | Zusätzlicher Kontext über Ihre Anwendung, um der KI zu helfen, genauere Übersetzungen zu generieren (Domain, Zielgruppe, Tonfall, Terminologie). | `string`
|
|
1045
|
-
| `baseURL` | Die Basis-URL für die KI-API. | `string`
|
|
1046
|
-
| `dataSerialization` | Datenserialisierungsformat für die KI-Funktionen. | `'json'` | <br/> `'toon'`
|
|
1038
|
+
| Feld | Beschreibung | Typ | Standard | Beispiel | Hinweis |
|
|
1039
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1040
|
+
| `provider` | Der für Intlayer KI-Funktionen zu verwendende Anbieter. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | <br/> `'moonshotai'` | `undefined` | `'anthropic'` | Verschiedene Anbieter erfordern unterschiedliche API-Schlüssel und haben unterschiedliche Preismodelle. |
|
|
1041
|
+
| `model` | Das für die KI-Funktionen zu verwendende Modell. | `string` | Keines | `'gpt-4o-2024-11-20'` | Das spezifische Modell variiert je nach Anbieter. |
|
|
1042
|
+
| `temperature` | Steuert den Zufallsfaktor der KI-Antworten. | `number` | Keines | `0.1` | Höhere Temperatur = kreativer und weniger vorhersehbar. |
|
|
1043
|
+
| `apiKey` | Ihr API-Schlüssel für den ausgewählten Anbieter. | `string` | Keines | `process.env.OPENAI_API_KEY` | Geheim halten; in Umgebungsvariablen speichern. |
|
|
1044
|
+
| `applicationContext` | Zusätzlicher Kontext über Ihre Anwendung, um der KI zu helfen, genauere Übersetzungen zu generieren (Domain, Zielgruppe, Tonfall, Terminologie). | `string` | Keines | `'Mein Anwendungskontext'` | Kann verwendet werden, um Regeln hinzuzufügen (z. B.: `"URLs dürfen nicht verändert werden"`). |
|
|
1045
|
+
| `baseURL` | Die Basis-URL für die KI-API. | `string` | Keines | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Kann auf einen lokalen oder benutzerdefinierten KI-API-Endpunkt zeigen. |
|
|
1046
|
+
| `dataSerialization` | Datenserialisierungsformat für die KI-Funktionen. | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: Standard, zuverlässig; verbraucht mehr Tokens.<br/>• `'toon'`: Weniger Tokens, weniger konsistent.<br/>• Zusätzliche Parameter werden an das Modell als Kontext übergeben (Abstraktionsaufwand etc.). |
|
|
1047
1047
|
|
|
1048
1048
|
---
|
|
1049
1049
|
|