src/app.tsx і збережіть, щоб перевірити HMR
>
),
en: (
<>
Edit src/app.tsx and save to test HMR
>
),
fr: (
<>
Éditez src/app.tsx et enregistrez pour tester HMR
>
),
es: (
<>
Edita src/app.tsx y guarda para probar HMR
>
),
}),
readTheDocs: t({
uk: "Натисніть на логотипи Vite і Preact, щоб дізнатися більше",
en: "Click on the Vite and Preact logos to learn more",
fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
uk: "Клацніть на логотипи Vite та Preact, щоб дізнатися більше",
es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
}),
},
} satisfies Dictionary;
export default appContent;
```
```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
import { t } from "intlayer";
// import { h } from 'preact'; // Потрібно, якщо ви використовуєте JSX безпосередньо в .mjs
/** @type {import('intlayer').Dictionary} */
const appContent = {
key: "app",
content: {
viteLogo: t({
uk: "Логотип Vite",
en: "Vite logo",
fr: "Logo Vite",
es: "Logo Vite",
}),
preactLogo: t({
uk: "Логотип Preact",
en: "Preact logo",
fr: "Logo Preact",
es: "Logo Preact",
}),
title: "Vite + Preact",
count: t({
uk: "лічильник ",
en: "count is ",
fr: "le compte est ",
es: "el recuento es ",
}),
edit: t({
uk: (
<>
Редагуйте src/app.mjs і збережіть, щоб перевірити HMR
>
),
edit: t({
uk: "Редагуйте src/app.jsx і збережіть, щоб протестувати HMR",
en: "Edit src/app.jsx and save to test HMR",
fr: "Éditez src/app.jsx et enregistrez pour tester HMR",
es: "Edita src/app.jsx y guarda para probar HMR",
}),
readTheDocs: t({
uk: "Натисніть на логотипи Vite і Preact, щоб дізнатися більше",
en: "Click on the Vite and Preact logos to learn more",
fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
}),
},
};
export default appContent;
```
```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
const { t } = require("intlayer");
// const { h } = require('preact'); // Потрібно, якщо ви використовуєте JSX безпосередньо в .cjs
/** @type {import('intlayer').Dictionary} */
const appContent = {
key: "app",
content: {
viteLogo: t({
en: "Vite logo",
uk: "Логотип Vite",
fr: "Logo Vite",
es: "Logo Vite",
}),
preactLogo: t({
uk: "Логотип Preact",
en: "Preact logo",
fr: "Logo Preact",
es: "Logo Preact",
}),
title: "Vite + Preact",
count: t({
uk: "Кількість: ",
en: "count is ",
fr: "le compte est ",
es: "el recuento es ",
}),
edit: t({
uk: "Редагуйте src/app.tsx і збережіть, щоб протестувати HMR",
en: "Edit src/app.tsx and save to test HMR",
fr: "Éditez src/app.tsx et enregistrez pour tester HMR",
es: "Edita src/app.tsx y guarda para probar HMR",
}),
readTheDocs: t({
uk: "Натисніть на логотипи Vite і Preact, щоб дізнатися більше",
en: "Click on the Vite and Preact logos to learn more",
fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
}),
},
};
module.exports = appContent;
```
```json fileName="src/app.content.json" contentDeclarationFormat="json"
{
"$schema": "https://intlayer.org/schema.json",
"key": "app",
"content": {
"viteLogo": {
"nodeType": "translation",
"translation": {
"uk": "Логотип Vite",
"en": "Vite logo",
"fr": "Logo Vite",
"es": "Logo Vite"
}
},
"preactLogo": {
"nodeType": "translation",
"translation": {
"uk": "Логотип Preact",
"en": "Preact logo",
"fr": "Logo Preact",
"es": "Logo Preact"
}
},
"title": {
"nodeType": "translation",
"translation": {
"uk": "Vite + Preact",
"en": "Vite + Preact",
"fr": "Vite + Preact",
"es": "Vite + Preact"
}
},
"count": {
"nodeType": "translation",
"translation": {
"uk": "кількість ",
"en": "count is ",
"uk": "лічильник: ",
"fr": "le compte est ",
"es": "el recuento es "
}
},
"edit": {
"nodeType": "translation",
"translation": {
"uk": "Редагуйте src/app.tsx і збережіть, щоб перевірити HMR",
"en": "Edit src/app.tsx and save to test HMR",
"fr": "Éditez src/app.tsx et enregistrez pour tester HMR",
"es": "Edita src/app.tsx y guarda para probar HMR"
}
},
"readTheDocs": {
"nodeType": "translation",
"translation": {
"uk": "Натисніть на логотипи Vite та Preact, щоб дізнатися більше",
"en": "Click on the Vite and Preact logos to learn more",
"fr": "Cliquez sur les logos Vite et Preact pour en savoir plus",
"es": "Haga clic en los logotipos de Vite y Preact para obtener más información"
}
}
}
}
```
> Ваші декларації контенту можна розміщувати в будь-якій частині вашого застосунку, за умови, що вони включені в директорію `contentDir` (за замовчуванням `./src`). І вони повинні відповідати розширенню файлу декларації контенту (за замовчуванням `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
> Для детальнішої інформації див. [документацію з оголошень контенту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md).
> Якщо ваш файл контенту містить TSX-код, можливо, потрібно імпортувати `import { h } from "preact";` або переконатися, що JSX pragma правильно налаштований для Preact.
### Крок 5: Використання Intlayer у вашому коді
Отримуйте доступ до ваших словників контенту у всьому застосунку:
```tsx {6,10} fileName="src/app.tsx" codeFormat="typescript"
import { useState } from "preact/hooks";
import type { FunctionalComponent } from "preact";
import preactLogo from "./assets/preact.svg"; // Припускаємо, що у вас є preact.svg
import viteLogo from "/vite.svg";
import "./app.css"; // Припускаємо, що ваш файл CSS називається app.css
import { IntlayerProvider, useIntlayer } from "preact-intlayer";
const AppContent: FunctionalComponent = () => {
const [count, setCount] = useState(0);
const content = useIntlayer("app");
return (
<>
{content.edit}
{content.readTheDocs}
> ); }; const App: FunctionalComponent = () => ({content.edit}
{content.readTheDocs}
> ); }; const App = () => ({content.edit}
{content.readTheDocs}
> ); }; const App = () => (