@intlayer/engine 9.5.7 → 9.5.9-canary.0
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/dist/assets/installSkills/skills/angular.md +19 -68
- package/dist/assets/installSkills/skills/astro.md +38 -4
- package/dist/assets/installSkills/skills/backend.md +113 -0
- package/dist/assets/installSkills/skills/cli.md +29 -25
- package/dist/assets/installSkills/skills/compat.md +87 -0
- package/dist/assets/installSkills/skills/compiler.md +14 -4
- package/dist/assets/installSkills/skills/config.md +15 -5
- package/dist/assets/installSkills/skills/content.md +80 -6
- package/dist/assets/installSkills/skills/dev-tools.md +82 -0
- package/dist/assets/installSkills/skills/lit.md +115 -0
- package/dist/assets/installSkills/skills/markdown.md +96 -0
- package/dist/assets/installSkills/skills/next-js.md +21 -38
- package/dist/assets/installSkills/skills/preact.md +18 -0
- package/dist/assets/installSkills/skills/react.md +21 -4
- package/dist/assets/installSkills/skills/remix.md +95 -0
- package/dist/assets/installSkills/skills/remote-content.md +1 -1
- package/dist/assets/installSkills/skills/solid.md +21 -1
- package/dist/assets/installSkills/skills/svelte.md +22 -1
- package/dist/assets/installSkills/skills/usage.md +28 -0
- package/dist/assets/installSkills/skills/vanilla.md +108 -0
- package/dist/assets/installSkills/skills/vue.md +22 -0
- package/dist/cjs/_virtual/_utils_asset.cjs +1 -1
- package/dist/cjs/build.cjs +4 -4
- package/dist/cjs/buildIntlayerDictionary/writeDynamicDictionary.cjs +2 -2
- package/dist/cjs/buildIntlayerDictionary/writeFetchDictionary.cjs +3 -3
- package/dist/cjs/buildIntlayerDictionary/writeMergedDictionary.cjs +1 -1
- package/dist/cjs/buildIntlayerDictionary/writeNestedDictionary.cjs +3 -3
- package/dist/cjs/buildIntlayerDictionary/writeRemoteDictionary.cjs +2 -2
- package/dist/cjs/buildIntlayerDictionary/writeUnmergedDictionary.cjs +2 -2
- package/dist/cjs/cleanOutputDir.cjs +1 -1
- package/dist/cjs/cleanRemovedContentDeclaration.cjs +1 -1
- package/dist/cjs/cli.cjs +5 -3
- package/dist/cjs/createDictionaryEntryPoint/createDictionaryEntryPoint.cjs +1 -1
- package/dist/cjs/createDictionaryEntryPoint/getBuiltDictionariesPath.cjs +2 -2
- package/dist/cjs/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.cjs +2 -2
- package/dist/cjs/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.cjs +2 -2
- package/dist/cjs/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.cjs +2 -2
- package/dist/cjs/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.cjs +2 -2
- package/dist/cjs/createType/createModuleAugmentation.cjs +3 -3
- package/dist/cjs/createType/createType.cjs +1 -1
- package/dist/cjs/docReview/index.cjs +5 -5
- package/dist/cjs/docReview/pipeline.cjs +4 -4
- package/dist/cjs/fetchDistantDictionaries.cjs +1 -1
- package/dist/cjs/handleContentDeclarationFileChange.cjs +2 -2
- package/dist/cjs/handleUnlinkedContentDeclarationFile.cjs +1 -1
- package/dist/cjs/init/frameworkSetup/nextAppRouter/restructure.cjs +1 -1
- package/dist/cjs/init/frameworkSetup/tanstackStart/restructure.cjs +1 -1
- package/dist/cjs/init/index.cjs +305 -300
- package/dist/cjs/init/index.cjs.map +1 -1
- package/dist/cjs/init/upgradeIntlayerPackages.cjs +60 -0
- package/dist/cjs/init/upgradeIntlayerPackages.cjs.map +1 -0
- package/dist/cjs/init/utils/fileSystem.cjs +1 -1
- package/dist/cjs/init/utils/githubActions.cjs +1 -1
- package/dist/cjs/init/utils/index.cjs +13 -4
- package/dist/cjs/init/utils/intlayerDependencies.cjs +119 -0
- package/dist/cjs/init/utils/intlayerDependencies.cjs.map +1 -0
- package/dist/cjs/init/utils/packageManager.cjs +146 -95
- package/dist/cjs/init/utils/packageManager.cjs.map +1 -1
- package/dist/cjs/initConfig/index.cjs +1 -1
- package/dist/cjs/installLSP.cjs +1 -1
- package/dist/cjs/installMCP/installMCP.cjs +1 -1
- package/dist/cjs/installSkills/index.cjs +111 -20
- package/dist/cjs/installSkills/index.cjs.map +1 -1
- package/dist/cjs/listDictionariesPath.cjs +1 -1
- package/dist/cjs/listGitFiles.cjs +1 -1
- package/dist/cjs/loadDictionaries/getIntlayerBundle.cjs +2 -2
- package/dist/cjs/loadDictionaries/index.cjs +1 -1
- package/dist/cjs/loadDictionaries/loadContentDeclaration.cjs +2 -2
- package/dist/cjs/loadDictionaries/loadDictionaries.cjs +1 -1
- package/dist/cjs/loadDictionaries/loadLocalDictionaries.cjs +1 -1
- package/dist/cjs/loadDictionaries/loadMarkdownContentDeclaration.cjs +1 -1
- package/dist/cjs/logConfigDetails.cjs +1 -1
- package/dist/cjs/prepareIntlayer.cjs +4 -4
- package/dist/cjs/scan/index.cjs +1 -1
- package/dist/cjs/scan/scanWebsite.cjs +1 -1
- package/dist/cjs/syncPluginKit/createFileAdapter.cjs +1 -1
- package/dist/cjs/syncPluginKit/index.cjs +1 -1
- package/dist/cjs/utils/buildComponentFilesList.cjs +1 -1
- package/dist/cjs/utils/contentWatcherLock.cjs +2 -2
- package/dist/cjs/utils/index.cjs +4 -4
- package/dist/cjs/utils/readDictionariesFromDisk.cjs +1 -1
- package/dist/cjs/utils/runOnce.cjs +1 -1
- package/dist/cjs/utils/runParallel/pidTree.cjs +1 -1
- package/dist/cjs/utils/withFileLock.cjs +1 -1
- package/dist/cjs/watcher.cjs +6 -6
- package/dist/cjs/writeConfiguration/index.cjs +1 -1
- package/dist/cjs/writeContentDeclaration/processContentDeclarationContent.cjs +2 -2
- package/dist/cjs/writeContentDeclaration/transformJSFile.cjs +1 -1
- package/dist/cjs/writeContentDeclaration/writeContentDeclaration.cjs +4 -4
- package/dist/cjs/writeContentDeclaration/writeJSFile.cjs +3 -3
- package/dist/cjs/writeContentDeclaration/writeMarkdownFile.cjs +1 -1
- package/dist/cjs/writeContentDeclaration/writeYamlFile.cjs +1 -1
- package/dist/cjs/writeFileIfChanged.cjs +1 -1
- package/dist/esm/_virtual/_utils_asset.mjs +1 -1
- package/dist/esm/build.mjs +4 -4
- package/dist/esm/buildIntlayerDictionary/writeDynamicDictionary.mjs +2 -2
- package/dist/esm/buildIntlayerDictionary/writeFetchDictionary.mjs +3 -3
- package/dist/esm/buildIntlayerDictionary/writeMergedDictionary.mjs +1 -1
- package/dist/esm/buildIntlayerDictionary/writeNestedDictionary.mjs +3 -3
- package/dist/esm/buildIntlayerDictionary/writeRemoteDictionary.mjs +2 -2
- package/dist/esm/buildIntlayerDictionary/writeUnmergedDictionary.mjs +2 -2
- package/dist/esm/cleanOutputDir.mjs +1 -1
- package/dist/esm/cleanRemovedContentDeclaration.mjs +1 -1
- package/dist/esm/cli.mjs +5 -4
- package/dist/esm/createDictionaryEntryPoint/createDictionaryEntryPoint.mjs +1 -1
- package/dist/esm/createDictionaryEntryPoint/getBuiltDictionariesPath.mjs +2 -2
- package/dist/esm/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.mjs +2 -2
- package/dist/esm/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.mjs +2 -2
- package/dist/esm/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.mjs +2 -2
- package/dist/esm/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.mjs +2 -2
- package/dist/esm/createType/createModuleAugmentation.mjs +3 -3
- package/dist/esm/createType/createType.mjs +1 -1
- package/dist/esm/docReview/index.mjs +5 -5
- package/dist/esm/docReview/pipeline.mjs +4 -4
- package/dist/esm/fetchDistantDictionaries.mjs +1 -1
- package/dist/esm/handleContentDeclarationFileChange.mjs +2 -2
- package/dist/esm/handleUnlinkedContentDeclarationFile.mjs +1 -1
- package/dist/esm/init/frameworkSetup/nextAppRouter/restructure.mjs +1 -1
- package/dist/esm/init/frameworkSetup/tanstackStart/restructure.mjs +1 -1
- package/dist/esm/init/index.mjs +306 -301
- package/dist/esm/init/index.mjs.map +1 -1
- package/dist/esm/init/upgradeIntlayerPackages.mjs +57 -0
- package/dist/esm/init/upgradeIntlayerPackages.mjs.map +1 -0
- package/dist/esm/init/utils/fileSystem.mjs +1 -1
- package/dist/esm/init/utils/githubActions.mjs +1 -1
- package/dist/esm/init/utils/index.mjs +3 -2
- package/dist/esm/init/utils/intlayerDependencies.mjs +110 -0
- package/dist/esm/init/utils/intlayerDependencies.mjs.map +1 -0
- package/dist/esm/init/utils/packageManager.mjs +143 -93
- package/dist/esm/init/utils/packageManager.mjs.map +1 -1
- package/dist/esm/initConfig/index.mjs +1 -1
- package/dist/esm/installLSP.mjs +1 -1
- package/dist/esm/installMCP/installMCP.mjs +1 -1
- package/dist/esm/installSkills/index.mjs +111 -20
- package/dist/esm/installSkills/index.mjs.map +1 -1
- package/dist/esm/listDictionariesPath.mjs +1 -1
- package/dist/esm/listGitFiles.mjs +1 -1
- package/dist/esm/loadDictionaries/getIntlayerBundle.mjs +2 -2
- package/dist/esm/loadDictionaries/index.mjs +1 -1
- package/dist/esm/loadDictionaries/loadContentDeclaration.mjs +2 -2
- package/dist/esm/loadDictionaries/loadDictionaries.mjs +1 -1
- package/dist/esm/loadDictionaries/loadLocalDictionaries.mjs +1 -1
- package/dist/esm/loadDictionaries/loadMarkdownContentDeclaration.mjs +1 -1
- package/dist/esm/logConfigDetails.mjs +1 -1
- package/dist/esm/prepareIntlayer.mjs +4 -4
- package/dist/esm/scan/index.mjs +1 -1
- package/dist/esm/scan/scanWebsite.mjs +1 -1
- package/dist/esm/syncPluginKit/createFileAdapter.mjs +1 -1
- package/dist/esm/syncPluginKit/index.mjs +1 -1
- package/dist/esm/utils/buildComponentFilesList.mjs +1 -1
- package/dist/esm/utils/contentWatcherLock.mjs +2 -2
- package/dist/esm/utils/index.mjs +4 -4
- package/dist/esm/utils/readDictionariesFromDisk.mjs +1 -1
- package/dist/esm/utils/runOnce.mjs +1 -1
- package/dist/esm/utils/runParallel/pidTree.mjs +1 -1
- package/dist/esm/utils/withFileLock.mjs +1 -1
- package/dist/esm/watcher.mjs +6 -6
- package/dist/esm/writeConfiguration/index.mjs +1 -1
- package/dist/esm/writeContentDeclaration/processContentDeclarationContent.mjs +2 -2
- package/dist/esm/writeContentDeclaration/transformJSFile.mjs +1 -1
- package/dist/esm/writeContentDeclaration/writeContentDeclaration.mjs +4 -4
- package/dist/esm/writeContentDeclaration/writeJSFile.mjs +3 -3
- package/dist/esm/writeContentDeclaration/writeMarkdownFile.mjs +1 -1
- package/dist/esm/writeContentDeclaration/writeYamlFile.mjs +1 -1
- package/dist/esm/writeFileIfChanged.mjs +1 -1
- package/dist/types/cli.d.ts +2 -1
- package/dist/types/init/index.d.ts +9 -6
- package/dist/types/init/index.d.ts.map +1 -1
- package/dist/types/init/upgradeIntlayerPackages.d.ts +26 -0
- package/dist/types/init/upgradeIntlayerPackages.d.ts.map +1 -0
- package/dist/types/init/utils/index.d.ts +3 -2
- package/dist/types/init/utils/intlayerDependencies.d.ts +66 -0
- package/dist/types/init/utils/intlayerDependencies.d.ts.map +1 -0
- package/dist/types/init/utils/packageManager.d.ts +44 -19
- package/dist/types/init/utils/packageManager.d.ts.map +1 -1
- package/dist/types/installSkills/index.d.ts +16 -3
- package/dist/types/installSkills/index.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intlayer-dev-tools
|
|
3
|
+
description: Sets up Intlayer developer tooling - ESLint / oxlint rules, the Language Server (LSP), the VS Code extension, the MCP server, CI/CD automation and the Chrome extension. Use when the user asks to "lint hardcoded strings", "setup Go-to-Definition for dictionary keys", "install the Intlayer MCP", or "automate translations in CI".
|
|
4
|
+
metadata:
|
|
5
|
+
author: Intlayer
|
|
6
|
+
url: https://intlayer.org
|
|
7
|
+
license: Apache-2.0
|
|
8
|
+
mcp-server: "@intlayer/mcp"
|
|
9
|
+
category: productivity
|
|
10
|
+
tags: [i18n, eslint, lsp, mcp, ci, devtools]
|
|
11
|
+
documentation: https://intlayer.org/doc
|
|
12
|
+
support: contact@intlayer.org
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Intlayer Dev Tools
|
|
16
|
+
|
|
17
|
+
## Lint (ESLint / oxlint)
|
|
18
|
+
|
|
19
|
+
`eslint-plugin-intlayer` catches hardcoded strings, dynamic calls the Intlayer compiler cannot optimize, and unused dictionary content.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install --save-dev eslint-plugin-intlayer
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then spread `intlayer.configs.recommended` in your `eslint.config.mjs` (oxlint is also supported).
|
|
26
|
+
|
|
27
|
+
| Config | `no-raw-text` | `static-dictionary-key` | `no-dynamic-field-access` |
|
|
28
|
+
| --------------- | ------------- | ----------------------- | ------------------------- |
|
|
29
|
+
| `recommended` | warn | error | error |
|
|
30
|
+
| `strict` | error | error | error |
|
|
31
|
+
| `contract-only` | off | error | error |
|
|
32
|
+
|
|
33
|
+
## Language Server (LSP)
|
|
34
|
+
|
|
35
|
+
`@intlayer/lsp` (binary `intlayer-lsp`) brings Go-to-Definition from a `useIntlayer("key")` call to its `.content` file, Find References, hover previews, key autocompletion and diagnostics.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install --save-dev @intlayer/lsp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## VS Code Extension
|
|
42
|
+
|
|
43
|
+
Jump from a dictionary key to its content file, extract content from a component, and run build, fill, test, push and pull from the command palette.
|
|
44
|
+
|
|
45
|
+
## MCP Server
|
|
46
|
+
|
|
47
|
+
Gives AI assistants access to the Intlayer documentation and CLI.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx intlayer init mcp
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This writes the MCP configuration for your IDE (local `@intlayer/mcp` over stdio, or the hosted `https://mcp.intlayer.org`).
|
|
54
|
+
|
|
55
|
+
A WebMCP is also available for the main website and documentation at `https://intlayer.org`.
|
|
56
|
+
|
|
57
|
+
## CI/CD
|
|
58
|
+
|
|
59
|
+
Fill missing translations with AI on each change, and fail the build on missing ones:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npx intlayer fill --git-diff --mode complete
|
|
63
|
+
npx intlayer test
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Chrome Extension
|
|
67
|
+
|
|
68
|
+
Inspect the i18n setup of any website: framework, i18n library, locales, hreflang and SEO tags.
|
|
69
|
+
|
|
70
|
+
## References
|
|
71
|
+
|
|
72
|
+
- [Website](https://intlayer.org)
|
|
73
|
+
- [Doc](https://intlayer.org/doc)
|
|
74
|
+
|
|
75
|
+
### Tools
|
|
76
|
+
|
|
77
|
+
- [ESLint Plugin](https://intlayer.org/doc/eslint.md)
|
|
78
|
+
- [Language Server (LSP)](https://intlayer.org/doc/lsp.md)
|
|
79
|
+
- [VS Code Extension](https://intlayer.org/doc/vs-code-extension.md)
|
|
80
|
+
- [MCP Server](https://intlayer.org/doc/mcp-server.md)
|
|
81
|
+
- [CI/CD](https://intlayer.org/doc/concept/ci-cd.md)
|
|
82
|
+
- [Chrome Extension](https://intlayer.org/doc/chrome-extension.md)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intlayer-lit
|
|
3
|
+
description: Integrates Intlayer internationalization with Lit web components. Use when the user asks to "setup Lit i18n", create a translated LitElement, use the "useIntlayer" controller, or switch locale in a Lit application.
|
|
4
|
+
metadata:
|
|
5
|
+
author: Intlayer
|
|
6
|
+
url: https://intlayer.org
|
|
7
|
+
license: Apache-2.0
|
|
8
|
+
mcp-server: "@intlayer/mcp"
|
|
9
|
+
category: productivity
|
|
10
|
+
tags: [i18n, lit, web-components, vite]
|
|
11
|
+
documentation: https://intlayer.org/doc
|
|
12
|
+
support: contact@intlayer.org
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Intlayer Lit Usage
|
|
16
|
+
|
|
17
|
+
## Core Philosophy
|
|
18
|
+
|
|
19
|
+
Intlayer promotes **Component-Level Content Declaration**. Instead of a massive global translation file, content is declared in `*.content.ts` files adjacent to the Lit elements that use them.
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
To create a translated element, you need two files:
|
|
24
|
+
|
|
25
|
+
1. **Declaration:** A content file (e.g., `myElement.content.ts`) defining the dictionary.
|
|
26
|
+
2. **Implementation:** A `LitElement` (e.g., `my-element.ts`) using the `useIntlayer` controller.
|
|
27
|
+
|
|
28
|
+
### Declare Content
|
|
29
|
+
|
|
30
|
+
Create a content file using `t()` for translations.
|
|
31
|
+
**File:** `src/components/myElement.content.ts`
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { t, type Dictionary } from "intlayer";
|
|
35
|
+
|
|
36
|
+
const content = {
|
|
37
|
+
// The 'key' must be unique and matches what you pass to useIntlayer()
|
|
38
|
+
key: "my-element",
|
|
39
|
+
content: {
|
|
40
|
+
title: t({
|
|
41
|
+
en: "Welcome",
|
|
42
|
+
fr: "Bienvenue",
|
|
43
|
+
es: "Hola",
|
|
44
|
+
}),
|
|
45
|
+
},
|
|
46
|
+
} satisfies Dictionary;
|
|
47
|
+
|
|
48
|
+
export default content;
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Setup
|
|
52
|
+
|
|
53
|
+
- [Vite and Lit](https://intlayer.org/doc/environment/vite-and-lit.md)
|
|
54
|
+
|
|
55
|
+
Call `installIntlayer()` from `lit-intlayer` before any custom element is registered (see the [Vite and Lit guide](https://intlayer.org/doc/environment/vite-and-lit.md)).
|
|
56
|
+
|
|
57
|
+
## useIntlayer Controller
|
|
58
|
+
|
|
59
|
+
> [!IMPORTANT]
|
|
60
|
+
> In Lit, `useIntlayer` takes the host element as first argument. It registers itself as a `ReactiveController`, so the element re-renders automatically when the locale changes.
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { LitElement, html } from "lit";
|
|
64
|
+
import { customElement } from "lit/decorators.js";
|
|
65
|
+
import { useIntlayer } from "lit-intlayer";
|
|
66
|
+
|
|
67
|
+
@customElement("my-element")
|
|
68
|
+
export class MyElement extends LitElement {
|
|
69
|
+
private content = useIntlayer(this, "my-element");
|
|
70
|
+
|
|
71
|
+
override render() {
|
|
72
|
+
return html`
|
|
73
|
+
<h1>${this.content.title}</h1>
|
|
74
|
+
<!-- Return string (.value) for native attributes -->
|
|
75
|
+
<img alt=${this.content.title.value} />
|
|
76
|
+
`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## useLocale Controller
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
import { useLocale } from "lit-intlayer";
|
|
85
|
+
|
|
86
|
+
// Inside a LitElement
|
|
87
|
+
private locale = useLocale(this);
|
|
88
|
+
|
|
89
|
+
// this.locale.locale, this.locale.availableLocales, this.locale.setLocale("fr")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Compiler
|
|
93
|
+
|
|
94
|
+
The [Intlayer Compiler](https://intlayer.org/doc/compiler.md) can extract all your content keys from your components, using one CLI command (`npx intlayer extract`) or automatically at app build.
|
|
95
|
+
|
|
96
|
+
## References
|
|
97
|
+
|
|
98
|
+
- [Website](https://intlayer.org)
|
|
99
|
+
- [Doc](https://intlayer.org/doc)
|
|
100
|
+
|
|
101
|
+
### Environments
|
|
102
|
+
|
|
103
|
+
- [Vite and Lit](https://intlayer.org/doc/environment/vite-and-lit.md)
|
|
104
|
+
- [Astro and Lit](https://intlayer.org/doc/environment/astro/lit.md)
|
|
105
|
+
|
|
106
|
+
### Concepts
|
|
107
|
+
|
|
108
|
+
- [Variants](https://intlayer.org/doc/concept/variants.md)
|
|
109
|
+
- [Collections](https://intlayer.org/doc/concept/collections.md)
|
|
110
|
+
- [Compiler](https://intlayer.org/doc/compiler.md)
|
|
111
|
+
- [Formatters (number, currency, date, …)](https://intlayer.org/doc/formatters.md)
|
|
112
|
+
|
|
113
|
+
### Packages
|
|
114
|
+
|
|
115
|
+
- [Intlayer Exports](https://intlayer.org/doc/packages/intlayer/exports.md)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intlayer-markdown
|
|
3
|
+
description: Declares and renders Markdown / rich text content with Intlayer (md(), .content.md files, MDX components, MarkdownProvider, SSR parsing). Use when the user asks to "add markdown content", "render rich text", "customize markdown components", or "render a markdown string".
|
|
4
|
+
metadata:
|
|
5
|
+
author: Intlayer
|
|
6
|
+
url: https://intlayer.org
|
|
7
|
+
license: Apache-2.0
|
|
8
|
+
mcp-server: "@intlayer/mcp"
|
|
9
|
+
category: productivity
|
|
10
|
+
tags: [i18n, markdown, mdx, rich-text]
|
|
11
|
+
documentation: https://intlayer.org/doc
|
|
12
|
+
support: contact@intlayer.org
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Intlayer Markdown
|
|
16
|
+
|
|
17
|
+
## Declaring Markdown Content
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { file, md, t, type Dictionary } from "intlayer";
|
|
21
|
+
|
|
22
|
+
const content = {
|
|
23
|
+
key: "app",
|
|
24
|
+
content: {
|
|
25
|
+
// Explicit markdown
|
|
26
|
+
intro: md("## My title \n\nLorem Ipsum"),
|
|
27
|
+
// Per-locale external files
|
|
28
|
+
article: t({
|
|
29
|
+
en: md(file("./article.en.md")),
|
|
30
|
+
fr: md(file("./article.fr.md")),
|
|
31
|
+
}),
|
|
32
|
+
},
|
|
33
|
+
} satisfies Dictionary;
|
|
34
|
+
|
|
35
|
+
export default content;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Other ways to declare it:
|
|
39
|
+
|
|
40
|
+
- **`.content.md` files** (since v8.10): a Markdown file with `key` (and optional `locale`) in its front-matter, e.g. `article.en.content.md`, `article.fr.content.md`.
|
|
41
|
+
- **Automatic detection**: set `contentAutoTransformation: true` (per dictionary or globally in `intlayer.config.ts`) and plain strings containing Markdown syntax are transformed.
|
|
42
|
+
|
|
43
|
+
## Rendering via `useIntlayer`
|
|
44
|
+
|
|
45
|
+
An `md` node renders directly as the framework's native output (JSX, VNode, HTML string). MDX is supported: component names used in the Markdown resolve against the `components` map.
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
const { intro } = useIntlayer("app");
|
|
49
|
+
|
|
50
|
+
<div>{intro}</div>; // Rendered markdown
|
|
51
|
+
intro.use({ h1: (props) => <h1 className="title" {...props} /> }); // Local override
|
|
52
|
+
intro.value; // Raw markdown string
|
|
53
|
+
intro.metadata.title; // Parsed front-matter
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Priority: `.use()` > global provider > default renderer.
|
|
57
|
+
|
|
58
|
+
## Global Configuration
|
|
59
|
+
|
|
60
|
+
Set default `components` and options once for the whole app:
|
|
61
|
+
|
|
62
|
+
| Framework | Global configuration |
|
|
63
|
+
| ------------------------------------- | --------------------------------------------------------------------- |
|
|
64
|
+
| React, Next.js, Preact, Solid, Svelte | `MarkdownProvider` from `<package>/markdown` |
|
|
65
|
+
| Vue | `app.use(intlayerMarkdown, options)` from `vue-intlayer/markdown` |
|
|
66
|
+
| Angular | `createIntlayerMarkdownProvider(options)` in `ApplicationConfig` |
|
|
67
|
+
| Astro | `installIntlayerMarkdown(options)` in the middleware and a `<script>` |
|
|
68
|
+
| Lit, Vanilla | `installIntlayerMarkdown()` next to `installIntlayer()` |
|
|
69
|
+
|
|
70
|
+
## Rendering Raw Markdown Strings
|
|
71
|
+
|
|
72
|
+
For Markdown that does not come from a dictionary, use the helpers from `<package>/markdown`: `<MarkdownRenderer />`, `useMarkdownRenderer()` and `renderMarkdown()`. They accept raw strings only, not `useIntlayer` nodes.
|
|
73
|
+
|
|
74
|
+
## Performance
|
|
75
|
+
|
|
76
|
+
- **Suspense (React)**: the parser (~55kb) is loaded lazily. Wrap components rendering Markdown in a `<Suspense>` boundary, otherwise React suspends at the root.
|
|
77
|
+
- **SSR**: call `parseMarkdown()` on the server and pass the serializable AST to the client; every rendering helper accepts it, so the browser skips parsing.
|
|
78
|
+
|
|
79
|
+
## Options
|
|
80
|
+
|
|
81
|
+
Accepted by the global configuration and the helpers: `forceBlock`, `forceInline`, `tagfilter` (default `true`, strips dangerous HTML), `preserveFrontmatter`, `components`, `wrapper`, `renderMarkdown`.
|
|
82
|
+
|
|
83
|
+
## References
|
|
84
|
+
|
|
85
|
+
- [Website](https://intlayer.org)
|
|
86
|
+
- [Doc](https://intlayer.org/doc)
|
|
87
|
+
|
|
88
|
+
### Concepts
|
|
89
|
+
|
|
90
|
+
- [Markdown](https://intlayer.org/doc/concept/content/markdown.md)
|
|
91
|
+
- [HTML](https://intlayer.org/doc/concept/content/html.md)
|
|
92
|
+
- [File](https://intlayer.org/doc/concept/content/file.md)
|
|
93
|
+
|
|
94
|
+
### Packages
|
|
95
|
+
|
|
96
|
+
- [React Intlayer MarkdownRenderer](https://intlayer.org/doc/packages/react-intlayer/MarkdownRenderer.md)
|
|
@@ -53,59 +53,32 @@ export default content;
|
|
|
53
53
|
- [Next.js](https://intlayer.org/doc/environment/nextjs.md)
|
|
54
54
|
- [Next.js 14](https://intlayer.org/doc/environment/nextjs/14.md)
|
|
55
55
|
- [Next.js 15](https://intlayer.org/doc/environment/nextjs/15.md)
|
|
56
|
-
- [No Locale Path](https://intlayer.org/doc/environment/nextjs/no-locale-path.md)
|
|
57
56
|
- [Page Router](https://intlayer.org/doc/environment/nextjs/next-with-page-router.md)
|
|
58
57
|
|
|
59
|
-
##
|
|
58
|
+
## Provider
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
Mount one `IntlayerProvider` (from `next-intlayer/server`) in the `[locale]` layout. It serves both server and client components, so pages don't wrap themselves (see the [Next.js guide](https://intlayer.org/doc/environment/nextjs.md)).
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
import { IntlayerServerProvider, useIntlayer } from "next-intlayer/server";
|
|
65
|
-
|
|
66
|
-
const MyServerComponent = () => {
|
|
67
|
-
const content = useIntlayer("my-component");
|
|
68
|
-
return (
|
|
69
|
-
<div>
|
|
70
|
-
<h1>{content.text}</h1>
|
|
71
|
-
</div>
|
|
72
|
-
);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const Page = async ({ params }) => {
|
|
76
|
-
const { locale } = await params;
|
|
77
|
-
return (
|
|
78
|
-
<IntlayerServerProvider locale={locale}>
|
|
79
|
-
<MyServerComponent />
|
|
80
|
-
</IntlayerServerProvider>
|
|
81
|
-
);
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
export default Page;
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## Client Components
|
|
62
|
+
## useIntlayer Hook
|
|
88
63
|
|
|
89
|
-
|
|
64
|
+
`next-intlayer` is isomorphic: the same `useIntlayer` import works in Server Components and in `"use client"` components.
|
|
90
65
|
|
|
91
66
|
```tsx
|
|
92
|
-
"use client";
|
|
93
|
-
|
|
94
67
|
import { useIntlayer } from "next-intlayer";
|
|
95
68
|
|
|
96
|
-
export const
|
|
69
|
+
export const MyComponent = () => {
|
|
97
70
|
const content = useIntlayer("my-component");
|
|
98
71
|
|
|
99
|
-
return
|
|
100
|
-
<div>
|
|
101
|
-
<h1>{content.text}</h1>
|
|
102
|
-
</div>
|
|
103
|
-
);
|
|
72
|
+
return <h1>{content.text}</h1>;
|
|
104
73
|
};
|
|
105
74
|
```
|
|
106
75
|
|
|
107
76
|
[Next.js package Documentation](https://intlayer.org/doc/packages/next-intlayer/exports.md)
|
|
108
77
|
|
|
78
|
+
## Compiler
|
|
79
|
+
|
|
80
|
+
The [Intlayer Compiler](https://intlayer.org/doc/compiler.md) can extract all your content keys from your components, using one CLI command (`npx intlayer extract`) or automatically at app build.
|
|
81
|
+
|
|
109
82
|
## References
|
|
110
83
|
|
|
111
84
|
- [Website](https://intlayer.org)
|
|
@@ -116,8 +89,16 @@ export const MyClientComponent = () => {
|
|
|
116
89
|
- [Next.js](https://intlayer.org/doc/environment/nextjs.md)
|
|
117
90
|
- [Next.js 14](https://intlayer.org/doc/environment/nextjs/14.md)
|
|
118
91
|
- [Next.js 15](https://intlayer.org/doc/environment/nextjs/15.md)
|
|
119
|
-
- [Next.js No Locale Path](https://intlayer.org/doc/environment/nextjs/no-locale-path.md)
|
|
120
92
|
- [Next.js with Page Router](https://intlayer.org/doc/environment/nextjs/next-with-page-router.md)
|
|
93
|
+
- [Intlayer with next-intl](https://intlayer.org/doc/next-intl.md)
|
|
94
|
+
- [Intlayer with next-i18next](https://intlayer.org/doc/next-i18next.md)
|
|
95
|
+
|
|
96
|
+
### Concepts
|
|
97
|
+
|
|
98
|
+
- [Variants](https://intlayer.org/doc/concept/variants.md)
|
|
99
|
+
- [Collections](https://intlayer.org/doc/concept/collections.md)
|
|
100
|
+
- [Compiler](https://intlayer.org/doc/compiler.md)
|
|
101
|
+
- [Formatters (number, currency, date, …)](https://intlayer.org/doc/formatters.md)
|
|
121
102
|
|
|
122
103
|
### Packages
|
|
123
104
|
|
|
@@ -128,3 +109,5 @@ export const MyClientComponent = () => {
|
|
|
128
109
|
- [Next Intlayer useDictionary](https://intlayer.org/doc/packages/next-intlayer/useDictionary.md)
|
|
129
110
|
- [Next Intlayer useIntlayer](https://intlayer.org/doc/packages/next-intlayer/useIntlayer.md)
|
|
130
111
|
- [Next Intlayer useLocale](https://intlayer.org/doc/packages/next-intlayer/useLocale.md)
|
|
112
|
+
- [next-intlayer usePathname](https://intlayer.org/doc/packages/next-intlayer/usePathname.md)
|
|
113
|
+
- [next-intlayer useRewriteURL](https://intlayer.org/doc/packages/next-intlayer/useRewriteURL.md)
|
|
@@ -73,11 +73,29 @@ const MyComponent = () => {
|
|
|
73
73
|
};
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
+
## Compiler
|
|
77
|
+
|
|
78
|
+
The [Intlayer Compiler](https://intlayer.org/doc/compiler.md) can extract all your content keys from your components, using one CLI command (`npx intlayer extract`) or automatically at app build.
|
|
79
|
+
|
|
76
80
|
## References
|
|
77
81
|
|
|
78
82
|
- [Website](https://intlayer.org)
|
|
79
83
|
- [Doc](https://intlayer.org/doc)
|
|
80
84
|
|
|
85
|
+
### Environments
|
|
86
|
+
|
|
81
87
|
- [Vite and Preact](https://intlayer.org/doc/environment/vite-and-preact.md)
|
|
88
|
+
- [Astro and Preact](https://intlayer.org/doc/environment/astro/preact.md)
|
|
89
|
+
|
|
90
|
+
### Concepts
|
|
91
|
+
|
|
92
|
+
- [Variants](https://intlayer.org/doc/concept/variants.md)
|
|
93
|
+
- [Collections](https://intlayer.org/doc/concept/collections.md)
|
|
94
|
+
- [Compiler](https://intlayer.org/doc/compiler.md)
|
|
95
|
+
- [Formatters (number, currency, date, …)](https://intlayer.org/doc/formatters.md)
|
|
96
|
+
|
|
97
|
+
### Packages
|
|
98
|
+
|
|
82
99
|
- [Intlayer Exports](https://intlayer.org/doc/packages/intlayer/exports.md)
|
|
83
100
|
- [Preact Intlayer Exports](https://intlayer.org/doc/packages/preact-intlayer/exports.md)
|
|
101
|
+
- [preact-intlayer usePathname](https://intlayer.org/doc/packages/preact-intlayer/usePathname.md)
|
|
@@ -49,17 +49,15 @@ const content = {
|
|
|
49
49
|
export default content;
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
# Intlayer React Usage
|
|
53
|
-
|
|
54
52
|
## Setup
|
|
55
53
|
|
|
56
54
|
- [Vite and React](https://intlayer.org/doc/environment/vite-and-react.md)
|
|
57
55
|
- [Create React App](https://intlayer.org/doc/environment/create-react-app.md)
|
|
58
56
|
- [React Router v7](https://intlayer.org/doc/environment/vite-and-react/react-router-v7.md)
|
|
59
|
-
- [React Router v7 (fs routes)](https://intlayer.org/doc/environment/vite-and-react/react-router-v7-fs-routes.md)
|
|
60
57
|
- [Tanstack Start](https://intlayer.org/doc/environment/tanstack-start.md)
|
|
61
58
|
- [React Native and Expo](https://intlayer.org/doc/environment/react-native-and-expo.md)
|
|
62
59
|
- [Lynx and React](https://intlayer.org/doc/environment/lynx-and-react.md)
|
|
60
|
+
- [Storybook](https://intlayer.org/doc/storybook.md)
|
|
63
61
|
|
|
64
62
|
## useIntlayer Hook
|
|
65
63
|
|
|
@@ -80,6 +78,10 @@ const MyComponent = () => {
|
|
|
80
78
|
};
|
|
81
79
|
```
|
|
82
80
|
|
|
81
|
+
## Compiler
|
|
82
|
+
|
|
83
|
+
The [Intlayer Compiler](https://intlayer.org/doc/compiler.md) can extract all your content keys from your components, using one CLI command (`npx intlayer extract`) or automatically at app build.
|
|
84
|
+
|
|
83
85
|
## References
|
|
84
86
|
|
|
85
87
|
- [Website](https://intlayer.org)
|
|
@@ -90,7 +92,18 @@ const MyComponent = () => {
|
|
|
90
92
|
- [Vite and React](https://intlayer.org/doc/environment/vite-and-react.md)
|
|
91
93
|
- [Create React App](https://intlayer.org/doc/environment/create-react-app.md)
|
|
92
94
|
- [Vite and React (React Router v7)](https://intlayer.org/doc/environment/vite-and-react/react-router-v7.md)
|
|
93
|
-
- [
|
|
95
|
+
- [Tanstack Start](https://intlayer.org/doc/environment/tanstack-start.md)
|
|
96
|
+
- [React Native and Expo](https://intlayer.org/doc/environment/react-native-and-expo.md)
|
|
97
|
+
- [Lynx and React](https://intlayer.org/doc/environment/lynx-and-react.md)
|
|
98
|
+
- [Astro and React](https://intlayer.org/doc/environment/astro/react.md)
|
|
99
|
+
- [Storybook](https://intlayer.org/doc/storybook.md)
|
|
100
|
+
|
|
101
|
+
### Concepts
|
|
102
|
+
|
|
103
|
+
- [Variants](https://intlayer.org/doc/concept/variants.md)
|
|
104
|
+
- [Collections](https://intlayer.org/doc/concept/collections.md)
|
|
105
|
+
- [Compiler](https://intlayer.org/doc/compiler.md)
|
|
106
|
+
- [Formatters (number, currency, date, …)](https://intlayer.org/doc/formatters.md)
|
|
94
107
|
|
|
95
108
|
### Packages
|
|
96
109
|
|
|
@@ -103,3 +116,7 @@ const MyComponent = () => {
|
|
|
103
116
|
- [React Intlayer useI18n](https://intlayer.org/doc/packages/react-intlayer/useI18n.md)
|
|
104
117
|
- [React Intlayer useIntlayer](https://intlayer.org/doc/packages/react-intlayer/useIntlayer.md)
|
|
105
118
|
- [React Intlayer useLocale](https://intlayer.org/doc/packages/react-intlayer/useLocale.md)
|
|
119
|
+
- [lynx-intlayer Exports](https://intlayer.org/doc/packages/lynx-intlayer/exports.md)
|
|
120
|
+
- [react-intlayer usePathname](https://intlayer.org/doc/packages/react-intlayer/usePathname.md)
|
|
121
|
+
- [react-intlayer useRewriteURL](https://intlayer.org/doc/packages/react-intlayer/useRewriteURL.md)
|
|
122
|
+
- [react-native-intlayer Exports](https://intlayer.org/doc/packages/react-native-intlayer/exports.md)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intlayer-remix
|
|
3
|
+
description: Integrates Intlayer internationalization with Remix 3 applications. Use when the user asks to "setup Remix i18n", register the Intlayer router middleware, or use the "useIntlayer" / "useLocale" hooks in Remix route handlers and views.
|
|
4
|
+
metadata:
|
|
5
|
+
author: Intlayer
|
|
6
|
+
url: https://intlayer.org
|
|
7
|
+
license: Apache-2.0
|
|
8
|
+
mcp-server: "@intlayer/mcp"
|
|
9
|
+
category: productivity
|
|
10
|
+
tags: [i18n, remix]
|
|
11
|
+
documentation: https://intlayer.org/doc
|
|
12
|
+
support: contact@intlayer.org
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Intlayer Remix Usage
|
|
16
|
+
|
|
17
|
+
## Core Philosophy
|
|
18
|
+
|
|
19
|
+
Intlayer promotes **Component-Level Content Declaration**. Instead of a massive global translation file, content is declared in `*.content.ts` files adjacent to the views that use them.
|
|
20
|
+
|
|
21
|
+
### Declare Content
|
|
22
|
+
|
|
23
|
+
**File:** `src/views/home.content.ts`
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { t, type Dictionary } from "intlayer";
|
|
27
|
+
|
|
28
|
+
const content = {
|
|
29
|
+
key: "home",
|
|
30
|
+
content: {
|
|
31
|
+
title: t({
|
|
32
|
+
en: "Welcome",
|
|
33
|
+
fr: "Bienvenue",
|
|
34
|
+
es: "Hola",
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
|
+
} satisfies Dictionary;
|
|
38
|
+
|
|
39
|
+
export default content;
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Setup
|
|
43
|
+
|
|
44
|
+
- [Remix 3](https://intlayer.org/doc/environment/remix-3.md)
|
|
45
|
+
|
|
46
|
+
Register the `intlayer()` [router middleware](https://intlayer.org/doc/packages/remix-intlayer/intlayerMiddleware.md) in `createRouter()`, before `render()`. It strips the locale prefix before route matching, so routes are declared once without a `:locale` segment.
|
|
47
|
+
|
|
48
|
+
## Hooks
|
|
49
|
+
|
|
50
|
+
`useIntlayer`, `useDictionary` and `useLocale` read the request locale with no argument, anywhere downstream of the middleware (route handlers and `remix/ui` views).
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
import { useIntlayer, useLocale } from "remix-intlayer";
|
|
54
|
+
|
|
55
|
+
export const HomePage = () => () => {
|
|
56
|
+
const { locale, availableLocales } = useLocale();
|
|
57
|
+
const home = useIntlayer("home");
|
|
58
|
+
|
|
59
|
+
return <h1>{home.title}</h1>;
|
|
60
|
+
};
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
> - `useIntlayer("home", "fr")` overrides the request locale for one call.
|
|
64
|
+
> - Remix JSX is not React: `class` is written as-is, and re-renders are triggered with `handle.update()`.
|
|
65
|
+
> - Outside of a request, the hooks fall back to the default locale.
|
|
66
|
+
|
|
67
|
+
## Compiler
|
|
68
|
+
|
|
69
|
+
The [Intlayer Compiler](https://intlayer.org/doc/compiler.md) can extract all your content keys from your components, using one CLI command (`npx intlayer extract`) or automatically at app build.
|
|
70
|
+
|
|
71
|
+
## References
|
|
72
|
+
|
|
73
|
+
- [Website](https://intlayer.org)
|
|
74
|
+
- [Doc](https://intlayer.org/doc)
|
|
75
|
+
|
|
76
|
+
### Environments
|
|
77
|
+
|
|
78
|
+
- [Remix 3](https://intlayer.org/doc/environment/remix-3.md)
|
|
79
|
+
|
|
80
|
+
### Concepts
|
|
81
|
+
|
|
82
|
+
- [Variants](https://intlayer.org/doc/concept/variants.md)
|
|
83
|
+
- [Collections](https://intlayer.org/doc/concept/collections.md)
|
|
84
|
+
- [Compiler](https://intlayer.org/doc/compiler.md)
|
|
85
|
+
- [Formatters (number, currency, date, …)](https://intlayer.org/doc/formatters.md)
|
|
86
|
+
|
|
87
|
+
### Packages
|
|
88
|
+
|
|
89
|
+
- [Intlayer Exports](https://intlayer.org/doc/packages/intlayer/exports.md)
|
|
90
|
+
- [Remix Intlayer Exports](https://intlayer.org/doc/packages/remix-intlayer/exports.md)
|
|
91
|
+
- [remix-intlayer Intlayer](https://intlayer.org/doc/packages/remix-intlayer/Intlayer.md)
|
|
92
|
+
- [remix-intlayer intlayerMiddleware](https://intlayer.org/doc/packages/remix-intlayer/intlayerMiddleware.md)
|
|
93
|
+
- [remix-intlayer useDictionary](https://intlayer.org/doc/packages/remix-intlayer/useDictionary.md)
|
|
94
|
+
- [remix-intlayer useIntlayer](https://intlayer.org/doc/packages/remix-intlayer/useIntlayer.md)
|
|
95
|
+
- [remix-intlayer useLocale](https://intlayer.org/doc/packages/remix-intlayer/useLocale.md)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: intlayer-
|
|
2
|
+
name: intlayer-remote-content
|
|
3
3
|
description: Manages remote content and server-side dictionaries using the Intlayer CMS. Use when the user asks to "fetch remote translations", "use Intlayer CMS", or "handle server-side content".
|
|
4
4
|
metadata:
|
|
5
5
|
author: Intlayer
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: intlayer-solid
|
|
2
|
+
name: intlayer-solid
|
|
3
3
|
description: Integrates Intlayer internationalization with SolidJS components. Use when the user asks to "setup SolidJS i18n", create a new translated component, use the "useIntlayer" hook in Solid, or configure providers.
|
|
4
4
|
metadata:
|
|
5
5
|
author: Intlayer
|
|
@@ -51,6 +51,8 @@ export default content;
|
|
|
51
51
|
## Setup
|
|
52
52
|
|
|
53
53
|
- [Vite and Solid](https://intlayer.org/doc/environment/vite-and-solid.md)
|
|
54
|
+
- [SolidStart](https://intlayer.org/doc/environment/solid-start.md)
|
|
55
|
+
- [TanStack Start and Solid](https://intlayer.org/doc/environment/tanstack-start/solid.md)
|
|
54
56
|
|
|
55
57
|
## useIntlayer Hook
|
|
56
58
|
|
|
@@ -76,6 +78,10 @@ const MyComponent = () => {
|
|
|
76
78
|
};
|
|
77
79
|
```
|
|
78
80
|
|
|
81
|
+
## Compiler
|
|
82
|
+
|
|
83
|
+
The [Intlayer Compiler](https://intlayer.org/doc/compiler.md) can extract all your content keys from your components, using one CLI command (`npx intlayer extract`) or automatically at app build.
|
|
84
|
+
|
|
79
85
|
## References
|
|
80
86
|
|
|
81
87
|
- [Website](https://intlayer.org)
|
|
@@ -84,7 +90,21 @@ const MyComponent = () => {
|
|
|
84
90
|
### Environments
|
|
85
91
|
|
|
86
92
|
- [Vite and Solid](https://intlayer.org/doc/environment/vite-and-solid.md)
|
|
93
|
+
- [SolidStart](https://intlayer.org/doc/environment/solid-start.md)
|
|
94
|
+
- [TanStack Start and Solid](https://intlayer.org/doc/environment/tanstack-start/solid.md)
|
|
95
|
+
|
|
96
|
+
### Concepts
|
|
97
|
+
|
|
98
|
+
- [Variants](https://intlayer.org/doc/concept/variants.md)
|
|
99
|
+
- [Collections](https://intlayer.org/doc/concept/collections.md)
|
|
100
|
+
- [Compiler](https://intlayer.org/doc/compiler.md)
|
|
101
|
+
- [Formatters (number, currency, date, …)](https://intlayer.org/doc/formatters.md)
|
|
87
102
|
|
|
88
103
|
### Packages
|
|
89
104
|
|
|
90
105
|
- [Solid Intlayer Exports](https://intlayer.org/doc/packages/solid-intlayer/exports.md)
|
|
106
|
+
- [solid-intlayer IntlayerProvider](https://intlayer.org/doc/packages/solid-intlayer/IntlayerProvider.md)
|
|
107
|
+
- [solid-intlayer useIntlayer](https://intlayer.org/doc/packages/solid-intlayer/useIntlayer.md)
|
|
108
|
+
- [solid-intlayer useLocale](https://intlayer.org/doc/packages/solid-intlayer/useLocale.md)
|
|
109
|
+
- [solid-intlayer usePathname](https://intlayer.org/doc/packages/solid-intlayer/usePathname.md)
|
|
110
|
+
- [solid-intlayer useRewriteURL](https://intlayer.org/doc/packages/solid-intlayer/useRewriteURL.md)
|
|
@@ -73,12 +73,33 @@ In Svelte, `useIntlayer` returns a **store**. You must use the `$` prefix to acc
|
|
|
73
73
|
</div>
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
+
## Compiler
|
|
77
|
+
|
|
78
|
+
The [Intlayer Compiler](https://intlayer.org/doc/compiler.md) can extract all your content keys from your components, using one CLI command (`npx intlayer extract`) or automatically at app build.
|
|
79
|
+
|
|
80
|
+
It activates once `compiler.enabled` and `compiler.output` are set: `.svelte` files additionally require `@intlayer/svelte-compiler`.
|
|
81
|
+
|
|
76
82
|
## References
|
|
77
83
|
|
|
78
84
|
- [Website](https://intlayer.org)
|
|
79
85
|
- [Doc](https://intlayer.org/doc)
|
|
80
86
|
|
|
81
|
-
|
|
87
|
+
### Environments
|
|
88
|
+
|
|
82
89
|
- [Vite and Svelte](https://intlayer.org/doc/environment/vite-and-svelte.md)
|
|
83
90
|
- [SvelteKit](https://intlayer.org/doc/environment/sveltekit.md)
|
|
91
|
+
- [Astro and Svelte](https://intlayer.org/doc/environment/astro/svelte.md)
|
|
92
|
+
|
|
93
|
+
### Concepts
|
|
94
|
+
|
|
95
|
+
- [Variants](https://intlayer.org/doc/concept/variants.md)
|
|
96
|
+
- [Collections](https://intlayer.org/doc/concept/collections.md)
|
|
97
|
+
- [Compiler](https://intlayer.org/doc/compiler.md)
|
|
98
|
+
- [Formatters (number, currency, date, …)](https://intlayer.org/doc/formatters.md)
|
|
99
|
+
|
|
100
|
+
### Packages
|
|
101
|
+
|
|
102
|
+
- [Intlayer Exports](https://intlayer.org/doc/packages/intlayer/exports.md)
|
|
84
103
|
- [Svelte Intlayer Exports](https://intlayer.org/doc/packages/svelte-intlayer/exports.md)
|
|
104
|
+
- [svelte-intlayer usePathname](https://intlayer.org/doc/packages/svelte-intlayer/usePathname.md)
|
|
105
|
+
- [svelte-intlayer useRewriteURL](https://intlayer.org/doc/packages/svelte-intlayer/useRewriteURL.md)
|