@intlayer/docs 5.7.8 → 5.8.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/blog/ar/intlayer_with_next-i18next.md +5 -6
- package/blog/ar/intlayer_with_next-intl.md +3 -4
- package/blog/ar/intlayer_with_react-i18next.md +1 -1
- package/blog/ar/intlayer_with_react-intl.md +1 -1
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +96 -219
- package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +88 -129
- package/blog/ar/vue-i18n_vs_intlayer.md +268 -0
- package/blog/de/intlayer_with_next-i18next.md +5 -6
- package/blog/de/intlayer_with_react-intl.md +1 -1
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/de/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/de/vue-i18n_vs_intlayer.md +268 -0
- package/blog/en/intlayer_with_next-i18next.md +5 -6
- package/blog/en/intlayer_with_next-intl.md +3 -4
- package/blog/en/intlayer_with_react-i18next.md +1 -1
- package/blog/en/intlayer_with_react-intl.md +1 -1
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +89 -220
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +85 -123
- package/blog/en/vue-i18n_vs_intlayer.md +268 -0
- package/blog/en-GB/intlayer_with_next-i18next.md +5 -6
- package/blog/en-GB/intlayer_with_next-intl.md +3 -4
- package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_react-intl.md +1 -1
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +85 -218
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +80 -130
- package/blog/en-GB/vue-i18n_vs_intlayer.md +258 -0
- package/blog/es/intlayer_with_next-i18next.md +5 -6
- package/blog/es/intlayer_with_next-intl.md +3 -4
- package/blog/es/intlayer_with_react-i18next.md +1 -1
- package/blog/es/intlayer_with_react-intl.md +1 -1
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/es/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/es/vue-i18n_vs_intlayer.md +268 -0
- package/blog/fr/intlayer_with_next-i18next.md +5 -6
- package/blog/fr/intlayer_with_next-intl.md +3 -4
- package/blog/fr/intlayer_with_react-i18next.md +1 -1
- package/blog/fr/intlayer_with_react-intl.md +1 -1
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
- package/blog/fr/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
- package/blog/fr/vue-i18n_vs_intlayer.md +269 -0
- package/blog/hi/intlayer_with_next-i18next.md +5 -6
- package/blog/hi/intlayer_with_next-intl.md +3 -4
- package/blog/hi/intlayer_with_react-i18next.md +1 -1
- package/blog/hi/intlayer_with_react-intl.md +1 -1
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +97 -220
- package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
- package/blog/hi/vue-i18n_vs_intlayer.md +268 -0
- package/blog/it/intlayer_with_next-i18next.md +5 -6
- package/blog/it/intlayer_with_next-intl.md +3 -4
- package/blog/it/intlayer_with_react-i18next.md +1 -1
- package/blog/it/intlayer_with_react-intl.md +1 -1
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
- package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
- package/blog/it/vue-i18n_vs_intlayer.md +268 -0
- package/blog/ja/intlayer_with_next-i18next.md +5 -6
- package/blog/ja/intlayer_with_next-intl.md +3 -4
- package/blog/ja/intlayer_with_react-intl.md +1 -1
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/ja/vue-i18n_vs_intlayer.md +268 -0
- package/blog/ko/intlayer_with_next-i18next.md +5 -6
- package/blog/ko/intlayer_with_next-intl.md +3 -4
- package/blog/ko/intlayer_with_react-intl.md +1 -1
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +95 -217
- package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
- package/blog/ko/vue-i18n_vs_intlayer.md +268 -0
- package/blog/pt/intlayer_with_next-i18next.md +5 -6
- package/blog/pt/intlayer_with_next-intl.md +3 -4
- package/blog/pt/intlayer_with_react-intl.md +1 -1
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/pt/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/pt/vue-i18n_vs_intlayer.md +268 -0
- package/blog/ru/intlayer_with_next-i18next.md +5 -6
- package/blog/ru/intlayer_with_next-intl.md +3 -4
- package/blog/ru/intlayer_with_react-i18next.md +1 -1
- package/blog/ru/intlayer_with_react-intl.md +1 -1
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +94 -217
- package/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/ru/vue-i18n_vs_intlayer.md +268 -0
- package/blog/zh/intlayer_with_next-i18next.md +5 -6
- package/blog/zh/intlayer_with_next-intl.md +3 -4
- package/blog/zh/intlayer_with_react-i18next.md +1 -1
- package/blog/zh/intlayer_with_react-intl.md +1 -1
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/zh/vue-i18n_vs_intlayer.md +269 -0
- package/dist/cjs/generated/blog.entry.cjs +41 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +41 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +41 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +41 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.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/formatters.md +625 -0
- package/docs/ar/how_works_intlayer.md +2 -4
- package/docs/ar/interest_of_intlayer.md +159 -49
- package/docs/ar/intlayer_CMS.md +2 -3
- package/docs/ar/intlayer_visual_editor.md +2 -3
- package/docs/ar/intlayer_with_tanstack.md +1 -1
- package/docs/ar/introduction.md +7 -7
- package/docs/ar/packages/intlayer/index.md +3 -3
- package/docs/ar/packages/next-intlayer/index.md +3 -3
- package/docs/de/formatters.md +649 -0
- package/docs/de/interest_of_intlayer.md +161 -47
- package/docs/de/introduction.md +5 -5
- package/docs/de/packages/intlayer/index.md +3 -3
- package/docs/de/packages/next-intlayer/index.md +3 -3
- package/docs/de/packages/react-intlayer/index.md +3 -3
- package/docs/en/dictionary/enumeration.md +2 -2
- package/docs/en/dictionary/function_fetching.md +2 -2
- package/docs/en/dictionary/get_started.md +2 -2
- package/docs/en/dictionary/translation.md +2 -2
- package/docs/en/formatters.md +618 -0
- package/docs/en/how_works_intlayer.md +2 -4
- package/docs/en/interest_of_intlayer.md +170 -46
- package/docs/en/intlayer_CMS.md +2 -3
- package/docs/en/intlayer_visual_editor.md +2 -3
- package/docs/en/intlayer_with_create_react_app.md +2 -2
- package/docs/en/intlayer_with_express.md +2 -2
- package/docs/en/intlayer_with_tanstack.md +1 -1
- package/docs/en/introduction.md +7 -7
- package/docs/en/packages/express-intlayer/index.md +2 -2
- package/docs/en/packages/intlayer/getConfiguration.md +2 -3
- package/docs/en/packages/intlayer/getEnumeration.md +2 -7
- package/docs/en/packages/intlayer/getHTMLTextDir.md +2 -4
- package/docs/en/packages/intlayer/getLocaleLang.md +2 -4
- package/docs/en/packages/intlayer/getLocaleName.md +2 -3
- package/docs/en/packages/intlayer/getLocalizedUrl.md +2 -8
- package/docs/en/packages/intlayer/getMultilingualUrls.md +2 -7
- package/docs/en/packages/intlayer/getPathWithoutLocale.md +2 -3
- package/docs/en/packages/intlayer/getTranslation.md +2 -4
- package/docs/en/packages/intlayer/index.md +5 -5
- package/docs/en/packages/next-intlayer/index.md +5 -5
- package/docs/en/packages/next-intlayer/t.md +2 -2
- package/docs/en/packages/next-intlayer/useDictionary.md +2 -2
- package/docs/en/packages/next-intlayer/useIntlayer.md +2 -2
- package/docs/en/packages/next-intlayer/useLocale.md +2 -2
- package/docs/en/packages/react-intlayer/index.md +5 -5
- package/docs/en/packages/react-intlayer/t.md +2 -2
- package/docs/en/packages/react-intlayer/useI18n.md +2 -2
- package/docs/en/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/en/packages/react-intlayer/useLocale.md +2 -2
- package/docs/en/packages/react-scripts-intlayer/index.md +2 -2
- package/docs/en/packages/solid-intlayer/index.md +2 -2
- package/docs/en/packages/vite-intlayer/index.md +2 -2
- package/docs/en-GB/formatters.md +625 -0
- package/docs/en-GB/how_works_intlayer.md +2 -4
- package/docs/en-GB/interest_of_intlayer.md +157 -53
- package/docs/en-GB/intlayer_with_tanstack.md +1 -1
- package/docs/en-GB/introduction.md +2 -2
- package/docs/en-GB/packages/intlayer/index.md +3 -3
- package/docs/en-GB/packages/next-intlayer/index.md +3 -3
- package/docs/en-GB/packages/react-intlayer/index.md +3 -3
- package/docs/es/formatters.md +649 -0
- package/docs/es/how_works_intlayer.md +2 -4
- package/docs/es/interest_of_intlayer.md +156 -47
- package/docs/es/intlayer_with_tanstack.md +1 -1
- package/docs/es/introduction.md +5 -5
- package/docs/es/packages/intlayer/index.md +3 -3
- package/docs/es/packages/next-intlayer/index.md +3 -3
- package/docs/fr/formatters.md +649 -0
- package/docs/fr/how_works_intlayer.md +2 -4
- package/docs/fr/interest_of_intlayer.md +157 -46
- package/docs/fr/intlayer_with_tanstack.md +1 -1
- package/docs/fr/introduction.md +5 -5
- package/docs/fr/packages/intlayer/index.md +3 -3
- package/docs/fr/packages/next-intlayer/index.md +3 -3
- package/docs/fr/packages/react-intlayer/index.md +3 -3
- package/docs/hi/formatters.md +630 -0
- package/docs/hi/how_works_intlayer.md +2 -4
- package/docs/hi/interest_of_intlayer.md +155 -42
- package/docs/hi/intlayer_with_tanstack.md +1 -1
- package/docs/hi/introduction.md +5 -5
- package/docs/hi/packages/intlayer/index.md +3 -3
- package/docs/hi/packages/next-intlayer/index.md +3 -3
- package/docs/hi/packages/react-intlayer/index.md +3 -3
- package/docs/it/formatters.md +647 -0
- package/docs/it/how_works_intlayer.md +2 -4
- package/docs/it/interest_of_intlayer.md +157 -46
- package/docs/it/intlayer_with_tanstack.md +1 -1
- package/docs/it/introduction.md +5 -5
- package/docs/it/packages/intlayer/index.md +3 -3
- package/docs/it/packages/next-intlayer/index.md +3 -3
- package/docs/it/packages/react-intlayer/index.md +3 -3
- package/docs/ja/formatters.md +649 -0
- package/docs/ja/how_works_intlayer.md +2 -4
- package/docs/ja/interest_of_intlayer.md +154 -48
- package/docs/ja/intlayer_with_tanstack.md +1 -1
- package/docs/ja/introduction.md +5 -5
- package/docs/ja/packages/intlayer/index.md +3 -3
- package/docs/ja/packages/next-intlayer/index.md +3 -3
- package/docs/ja/packages/react-intlayer/index.md +3 -3
- package/docs/ko/formatters.md +649 -0
- package/docs/ko/how_works_intlayer.md +2 -4
- package/docs/ko/interest_of_intlayer.md +157 -48
- package/docs/ko/intlayer_with_tanstack.md +1 -1
- package/docs/ko/introduction.md +5 -5
- package/docs/ko/packages/intlayer/index.md +3 -3
- package/docs/ko/packages/next-intlayer/index.md +3 -3
- package/docs/ko/packages/react-intlayer/index.md +3 -3
- package/docs/pt/formatters.md +625 -0
- package/docs/pt/how_works_intlayer.md +2 -4
- package/docs/pt/interest_of_intlayer.md +162 -47
- package/docs/pt/intlayer_with_tanstack.md +1 -1
- package/docs/pt/introduction.md +5 -5
- package/docs/pt/packages/intlayer/index.md +3 -3
- package/docs/pt/packages/next-intlayer/index.md +3 -3
- package/docs/pt/packages/react-intlayer/index.md +3 -3
- package/docs/ru/autoFill.md +2 -2
- package/docs/ru/configuration.md +1 -40
- package/docs/ru/formatters.md +649 -0
- package/docs/ru/how_works_intlayer.md +5 -7
- package/docs/ru/index.md +1 -1
- package/docs/ru/interest_of_intlayer.md +165 -50
- package/docs/ru/intlayer_CMS.md +7 -8
- package/docs/ru/intlayer_cli.md +4 -7
- package/docs/ru/intlayer_visual_editor.md +5 -6
- package/docs/ru/intlayer_with_angular.md +1 -1
- package/docs/ru/intlayer_with_create_react_app.md +5 -5
- package/docs/ru/intlayer_with_lynx+react.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +3 -3
- package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/ru/intlayer_with_nuxt.md +1 -1
- package/docs/ru/intlayer_with_react_native+expo.md +2 -2
- package/docs/ru/intlayer_with_tanstack.md +3 -3
- package/docs/ru/intlayer_with_vite+preact.md +3 -3
- package/docs/ru/intlayer_with_vite+react.md +3 -3
- package/docs/ru/intlayer_with_vite+solid.md +1 -1
- package/docs/ru/intlayer_with_vite+svelte.md +1 -1
- package/docs/ru/intlayer_with_vite+vue.md +2 -2
- package/docs/ru/introduction.md +8 -8
- package/docs/ru/locale_mapper.md +1 -1
- package/docs/ru/packages/@intlayer/api/index.md +2 -2
- package/docs/ru/packages/@intlayer/chokidar/index.md +1 -1
- package/docs/ru/packages/@intlayer/cli/index.md +2 -2
- package/docs/ru/packages/@intlayer/config/index.md +2 -2
- package/docs/ru/packages/@intlayer/core/index.md +2 -2
- package/docs/ru/packages/@intlayer/design-system/index.md +2 -2
- package/docs/ru/packages/@intlayer/dictionary-entry/index.md +2 -2
- package/docs/ru/packages/@intlayer/editor/index.md +1 -1
- package/docs/ru/packages/@intlayer/editor-react/index.md +1 -1
- package/docs/ru/packages/@intlayer/webpack/index.md +1 -1
- package/docs/ru/packages/angular-intlayer/index.md +1 -1
- package/docs/ru/packages/express-intlayer/index.md +3 -3
- package/docs/ru/packages/express-intlayer/t.md +1 -1
- package/docs/ru/packages/intlayer/getEnumeration.md +3 -8
- package/docs/ru/packages/intlayer/getTranslation.md +3 -5
- package/docs/ru/packages/intlayer/getTranslationContent.md +1 -3
- package/docs/ru/packages/intlayer/index.md +6 -6
- package/docs/ru/packages/intlayer-cli/index.md +1 -1
- package/docs/ru/packages/intlayer-editor/index.md +2 -2
- package/docs/ru/packages/lynx-intlayer/index.md +1 -1
- package/docs/ru/packages/next-intlayer/index.md +7 -7
- package/docs/ru/packages/next-intlayer/t.md +4 -4
- package/docs/ru/packages/next-intlayer/useLocale.md +3 -3
- package/docs/ru/packages/nuxt-intlayer/index.md +1 -1
- package/docs/ru/packages/preact-intlayer/index.md +1 -1
- package/docs/ru/packages/react-intlayer/index.md +7 -7
- package/docs/ru/packages/react-intlayer/t.md +4 -4
- package/docs/ru/packages/react-native-intlayer/index.md +1 -1
- package/docs/ru/packages/react-scripts-intlayer/index.md +3 -3
- package/docs/ru/packages/solid-intlayer/index.md +3 -3
- package/docs/ru/packages/svelte-intlayer/index.md +1 -1
- package/docs/ru/packages/vite-intlayer/index.md +3 -3
- package/docs/ru/packages/vue-intlayer/index.md +1 -1
- package/docs/ru/per_locale_file.md +1 -1
- package/docs/ru/roadmap.md +3 -5
- package/docs/ru/vs_code_extension.md +1 -1
- package/docs/zh/formatters.md +647 -0
- package/docs/zh/how_works_intlayer.md +2 -4
- package/docs/zh/interest_of_intlayer.md +155 -48
- package/docs/zh/intlayer_with_tanstack.md +1 -1
- package/docs/zh/introduction.md +5 -5
- package/docs/zh/packages/intlayer/index.md +3 -3
- package/docs/zh/packages/next-intlayer/index.md +3 -3
- package/docs/zh/packages/react-intlayer/index.md +3 -3
- package/frequent_questions/ar/domain_routing.md +1 -1
- package/frequent_questions/en/domain_routing.md +1 -1
- package/frequent_questions/en-GB/domain_routing.md +1 -1
- package/frequent_questions/es/domain_routing.md +1 -1
- package/frequent_questions/fr/domain_routing.md +1 -1
- package/frequent_questions/hi/domain_routing.md +1 -1
- package/frequent_questions/it/domain_routing.md +1 -1
- package/frequent_questions/ko/domain_routing.md +1 -1
- package/frequent_questions/pt/domain_routing.md +1 -1
- package/frequent_questions/ru/domain_routing.md +1 -1
- package/frequent_questions/ru/get_locale_cookie.md +4 -4
- package/frequent_questions/ru/static_rendering.md +1 -2
- package/frequent_questions/zh/domain_routing.md +1 -1
- package/package.json +11 -11
- package/src/generated/blog.entry.ts +41 -0
- package/src/generated/docs.entry.ts +41 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация пакета | intlayer
|
|
5
5
|
description: Узнайте, как использовать пакет intlayer
|
|
6
6
|
keywords:
|
|
@@ -19,7 +19,7 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# intlayer: NPM пакет для управления многоязычным словарём (i18n)
|
|
21
21
|
|
|
22
|
-
**Intlayer**
|
|
22
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, Next.js и Express.js.
|
|
23
23
|
|
|
24
24
|
**Пакет `intlayer`** позволяет объявлять ваш контент в любом месте вашего кода. Он преобразует многоязычные объявления контента в структурированные словари, которые бесшовно интегрируются в ваше приложение. С TypeScript **Intlayer** улучшает процесс разработки, предоставляя более мощные и эффективные инструменты.
|
|
25
25
|
|
|
@@ -148,8 +148,8 @@ const clientComponentContent = {
|
|
|
148
148
|
content: {
|
|
149
149
|
myTranslatedContent: t({
|
|
150
150
|
en: "Hello World",
|
|
151
|
-
fr: "Bonjour le monde",
|
|
152
151
|
es: "Hola Mundo",
|
|
152
|
+
fr: "Bonjour le monde",
|
|
153
153
|
}),
|
|
154
154
|
numberOfCar: enu({
|
|
155
155
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -174,8 +174,8 @@ const clientComponentContent = {
|
|
|
174
174
|
content: {
|
|
175
175
|
myTranslatedContent: t({
|
|
176
176
|
en: "Hello World",
|
|
177
|
-
fr: "Bonjour le monde",
|
|
178
177
|
es: "Hola Mundo",
|
|
178
|
+
fr: "Bonjour le monde",
|
|
179
179
|
}),
|
|
180
180
|
numberOfCar: enu({
|
|
181
181
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -200,8 +200,8 @@ const clientComponentContent = {
|
|
|
200
200
|
content: {
|
|
201
201
|
myTranslatedContent: t({
|
|
202
202
|
en: "Hello World",
|
|
203
|
-
fr: "Bonjour le monde",
|
|
204
203
|
es: "Hola Mundo",
|
|
204
|
+
fr: "Bonjour le monde",
|
|
205
205
|
}),
|
|
206
206
|
numberOfCar: enu({
|
|
207
207
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -20,7 +20,7 @@ slugs:
|
|
|
20
20
|
|
|
21
21
|
# intlayer-cli: NPM пакет для использования Intlayer CLI
|
|
22
22
|
|
|
23
|
-
**Intlayer**
|
|
23
|
+
**Intlayer** - это набор пакетов, разработанных специально для разработчиков на JavaScript. Он совместим с такими фреймворками, как React, React и Express.js.
|
|
24
24
|
|
|
25
25
|
Пакет **`intlayer-cli`** является NPM-пакетом, который использует пакет `@intlayer/cli` и делает его доступным для интерфейсов командной строки `intlayer`.
|
|
26
26
|
|
|
@@ -20,9 +20,9 @@ slugs:
|
|
|
20
20
|
|
|
21
21
|
# intlayer-editor: NPM пакет для использования визуального редактора Intlayer
|
|
22
22
|
|
|
23
|
-
**Intlayer**
|
|
23
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, React и Express.js.
|
|
24
24
|
|
|
25
|
-
Пакет **`intlayer-editor`**
|
|
25
|
+
Пакет **`intlayer-editor`** - это NPM-пакет, который интегрирует визуальный редактор Intlayer в ваш проект на React.
|
|
26
26
|
|
|
27
27
|
## Как работает редактор Intlayer
|
|
28
28
|
|
|
@@ -19,7 +19,7 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# lynx-intlayer: Интернационализация (i18n) приложения Lynx
|
|
21
21
|
|
|
22
|
-
**Intlayer**
|
|
22
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, React и Express.js.
|
|
23
23
|
|
|
24
24
|
**Пакет `lynx-intlayer`** позволяет интернационализировать ваше приложение на Vite. В него включён плагин Metro, который настраивает конфигурацию через переменные окружения для [сборщика Lynx](https://lynxjs.org/index.html).
|
|
25
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация пакета | next-intlayer
|
|
5
5
|
description: Узнайте, как использовать пакет next-intlayer
|
|
6
6
|
keywords:
|
|
@@ -19,7 +19,7 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# next-intlayer: NPM пакет для интернационализации (i18n) приложения Next.js
|
|
21
21
|
|
|
22
|
-
**Intlayer**
|
|
22
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, Next.js и Express.js.
|
|
23
23
|
|
|
24
24
|
**Пакет `next-intlayer`** позволяет интернационализировать ваше приложение Next.js. Он предоставляет провайдеры контекста и хуки для интернационализации в Next.js. Кроме того, в него входит плагин Next.js для интеграции Intlayer с [Webpack](https://webpack.js.org/) или [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack), а также middleware для определения предпочтительной локали пользователя, управления cookies и обработки перенаправления URL.
|
|
25
25
|
|
|
@@ -98,7 +98,7 @@ pnpm add next-intlayer
|
|
|
98
98
|
|
|
99
99
|
### Объявите ваш контент
|
|
100
100
|
|
|
101
|
-
`next-intlayer` создан для работы с пакетом [`intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/index.md). `intlayer`
|
|
101
|
+
`next-intlayer` создан для работы с пакетом [`intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/index.md). `intlayer` - это пакет, который позволяет объявлять ваш контент в любом месте кода. Он преобразует многоязычные объявления контента в структурированные словари, которые бесшовно интегрируются в ваше приложение.
|
|
102
102
|
|
|
103
103
|
Вот пример объявления контента:
|
|
104
104
|
|
|
@@ -110,8 +110,8 @@ const clientComponentContent = {
|
|
|
110
110
|
content: {
|
|
111
111
|
myTranslatedContent: t({
|
|
112
112
|
en: "Hello World",
|
|
113
|
-
fr: "Bonjour le monde",
|
|
114
113
|
es: "Hola Mundo",
|
|
114
|
+
fr: "Bonjour le monde",
|
|
115
115
|
}),
|
|
116
116
|
numberOfCar: enu({
|
|
117
117
|
"<-1": "Less than minus one car",
|
|
@@ -136,8 +136,8 @@ const clientComponentContent = {
|
|
|
136
136
|
content: {
|
|
137
137
|
myTranslatedContent: t({
|
|
138
138
|
en: "Hello World",
|
|
139
|
-
fr: "Bonjour le monde",
|
|
140
139
|
es: "Hola Mundo",
|
|
140
|
+
fr: "Bonjour le monde",
|
|
141
141
|
}),
|
|
142
142
|
numberOfCar: enu({
|
|
143
143
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -162,8 +162,8 @@ const clientComponentContent = {
|
|
|
162
162
|
content: {
|
|
163
163
|
myTranslatedContent: t({
|
|
164
164
|
en: "Hello World",
|
|
165
|
-
fr: "Bonjour le monde",
|
|
166
165
|
es: "Hola Mundo",
|
|
166
|
+
fr: "Bonjour le monde",
|
|
167
167
|
}),
|
|
168
168
|
numberOfCar: enu({
|
|
169
169
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация функции t | next-intlayer
|
|
5
5
|
description: Узнайте, как использовать функцию t в пакете next-intlayer
|
|
6
6
|
keywords:
|
|
@@ -49,7 +49,7 @@ t<T extends string>(content: Record<LocalesValues, T>, locale?: Locales): string
|
|
|
49
49
|
|
|
50
50
|
### Параметры
|
|
51
51
|
|
|
52
|
-
- `translations`: Объект, где ключами являются коды локалей (например, `en`, `fr`, `es`), а значениями
|
|
52
|
+
- `translations`: Объект, где ключами являются коды локалей (например, `en`, `fr`, `es`), а значениями - соответствующие переведённые строки.
|
|
53
53
|
|
|
54
54
|
### Возвращает
|
|
55
55
|
|
|
@@ -341,7 +341,7 @@ const text = t(translations);
|
|
|
341
341
|
|
|
342
342
|
## Заключение
|
|
343
343
|
|
|
344
|
-
Функция `t` в `next-intlayer`
|
|
344
|
+
Функция `t` в `next-intlayer` - это мощный и удобный инструмент для управления встроенными переводами в ваших приложениях Next.js. Эффективно интегрируя её, вы улучшаете возможности интернационализации вашего приложения, обеспечивая лучший опыт для пользователей по всему миру.
|
|
345
345
|
|
|
346
346
|
Для более подробного использования и расширенных возможностей обратитесь к [документации next-intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md).
|
|
347
347
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация по хуку useLocale | next-intlayer
|
|
5
5
|
description: Узнайте, как использовать хук useLocale в пакете next-intlayer
|
|
6
6
|
keywords:
|
|
@@ -120,7 +120,7 @@ const LocaleSwitcher = () => {
|
|
|
120
120
|
- **`defaultLocale`**: Основная локаль, определённая в конфигурации.
|
|
121
121
|
- **`availableLocales`**: Список всех доступных локалей, определённых в конфигурации.
|
|
122
122
|
- **`setLocale`**: Функция для изменения локали приложения и соответствующего обновления URL. Она учитывает правила префиксов, добавлять ли локаль в путь или нет, в зависимости от конфигурации. Использует `useRouter` из `next/navigation` для навигационных функций, таких как `push` и `refresh`.
|
|
123
|
-
- **`pathWithoutLocale`**: Вычисляемое свойство, возвращающее путь без локали. Полезно для сравнения URL. Например, если текущая локаль
|
|
123
|
+
- **`pathWithoutLocale`**: Вычисляемое свойство, возвращающее путь без локали. Полезно для сравнения URL. Например, если текущая локаль - `fr`, а URL - `fr/my_path`, путь без локали будет `/my_path`. Использует `usePathname` из `next/navigation` для получения текущего пути.
|
|
124
124
|
|
|
125
125
|
## Заключение
|
|
126
126
|
|
|
@@ -18,7 +18,7 @@ slugs:
|
|
|
18
18
|
|
|
19
19
|
# nuxt-intlayer: NPM пакет для интернационализации (i18n) приложения на Vue
|
|
20
20
|
|
|
21
|
-
**Intlayer**
|
|
21
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как Vue, Vue и Express.js.
|
|
22
22
|
|
|
23
23
|
**Пакет `nuxt-intlayer`** позволяет интернационализировать ваше приложение на Vue. Он предоставляет провайдеры контекста и хуки для интернационализации Vue.
|
|
24
24
|
|
|
@@ -18,7 +18,7 @@ slugs:
|
|
|
18
18
|
|
|
19
19
|
# preact-intlayer: NPM-пакет для интернационализации (i18n) приложения на Preact
|
|
20
20
|
|
|
21
|
-
**Intlayer**
|
|
21
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как Preact, Preact и Express.js.
|
|
22
22
|
|
|
23
23
|
**Пакет `preact-intlayer`** позволяет интернационализировать ваше приложение на Preact. Он предоставляет провайдеры контекста и хуки для интернационализации в Preact.
|
|
24
24
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация пакета | react-intlayer
|
|
5
5
|
description: Узнайте, как использовать пакет react-intlayer
|
|
6
6
|
keywords:
|
|
@@ -19,7 +19,7 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# react-intlayer: NPM пакет для интернационализации (i18n) React-приложения
|
|
21
21
|
|
|
22
|
-
**Intlayer**
|
|
22
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, React и Express.js.
|
|
23
23
|
|
|
24
24
|
**Пакет `react-intlayer`** позволяет интернационализировать ваше React-приложение. Он предоставляет провайдеры контекста и хуки для интернационализации в React.
|
|
25
25
|
|
|
@@ -98,7 +98,7 @@ pnpm add react-intlayer
|
|
|
98
98
|
|
|
99
99
|
### Объявление вашего контента
|
|
100
100
|
|
|
101
|
-
`react-intlayer` создан для работы с пакетом [`intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/index.md). `intlayer`
|
|
101
|
+
`react-intlayer` создан для работы с пакетом [`intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/index.md). `intlayer` - это пакет, который позволяет объявлять ваш контент в любом месте вашего кода. Он преобразует многоязычные объявления контента в структурированные словари, которые бесшовно интегрируются в ваше приложение.
|
|
102
102
|
|
|
103
103
|
Вот пример объявления контента:
|
|
104
104
|
|
|
@@ -110,8 +110,8 @@ const component1Content = {
|
|
|
110
110
|
content: {
|
|
111
111
|
myTranslatedContent: t({
|
|
112
112
|
en: "Hello World",
|
|
113
|
-
fr: "Bonjour le monde",
|
|
114
113
|
es: "Hola Mundo",
|
|
114
|
+
fr: "Bonjour le monde",
|
|
115
115
|
}),
|
|
116
116
|
numberOfCar: enu({
|
|
117
117
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -136,8 +136,8 @@ const component1Content = {
|
|
|
136
136
|
content: {
|
|
137
137
|
myTranslatedContent: t({
|
|
138
138
|
en: "Hello World",
|
|
139
|
-
fr: "Bonjour le monde",
|
|
140
139
|
es: "Hola Mundo",
|
|
140
|
+
fr: "Bonjour le monde",
|
|
141
141
|
}),
|
|
142
142
|
numberOfCar: enu({
|
|
143
143
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -162,8 +162,8 @@ const component1Content = {
|
|
|
162
162
|
content: {
|
|
163
163
|
myTranslatedContent: t({
|
|
164
164
|
en: "Hello World",
|
|
165
|
-
fr: "Bonjour le monde",
|
|
166
165
|
es: "Hola Mundo",
|
|
166
|
+
fr: "Bonjour le monde",
|
|
167
167
|
}),
|
|
168
168
|
numberOfCar: enu({
|
|
169
169
|
"<-1": "Меньше чем минус одна машина",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация функции t | react-intlayer
|
|
5
5
|
description: Узнайте, как использовать функцию t в пакете react-intlayer
|
|
6
6
|
keywords:
|
|
@@ -48,7 +48,7 @@ t<T extends string>(content: Record<LocalesValues, T>, locale?: Locales): string
|
|
|
48
48
|
|
|
49
49
|
### Параметры
|
|
50
50
|
|
|
51
|
-
- `translations`: Объект, где ключи
|
|
51
|
+
- `translations`: Объект, где ключи - коды локалей (например, `en`, `fr`, `es`), а значения - соответствующие переведённые строки.
|
|
52
52
|
|
|
53
53
|
### Возвращает
|
|
54
54
|
|
|
@@ -291,7 +291,7 @@ const text = t(translations);
|
|
|
291
291
|
|
|
292
292
|
## Заключение
|
|
293
293
|
|
|
294
|
-
Функция `t` в `react-intlayer`
|
|
294
|
+
Функция `t` в `react-intlayer` - это мощный и удобный инструмент для управления встроенными переводами в ваших React-приложениях. Эффективно интегрируя её, вы улучшаете возможности интернационализации вашего приложения, обеспечивая лучший опыт для пользователей по всему миру.
|
|
295
295
|
|
|
296
296
|
Для более подробного использования и продвинутых возможностей обратитесь к [документации react-intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md).
|
|
297
297
|
|
|
@@ -20,7 +20,7 @@ slugs:
|
|
|
20
20
|
|
|
21
21
|
# react-native-intlayer: Интернационализация (i18n) приложения React Native
|
|
22
22
|
|
|
23
|
-
**Intlayer**
|
|
23
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, React и Express.js.
|
|
24
24
|
|
|
25
25
|
**Пакет `react-native-intlayer`** позволяет интернационализировать ваше приложение Vite. В него включён плагин Metro, который настраивает конфигурацию через переменные окружения в [Metro bundлере](https://docs.expo.dev/guides/customizing-metro/).
|
|
26
26
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация пакета | react-scripts-intlayer
|
|
5
5
|
description: Узнайте, как использовать пакет react-scripts-intlayer
|
|
6
6
|
keywords:
|
|
@@ -19,7 +19,7 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# react-scripts-intlayer: NPM-пакет для использования Intlayer в приложении React Create App
|
|
21
21
|
|
|
22
|
-
**Intlayer**
|
|
22
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, React и Express.js.
|
|
23
23
|
|
|
24
24
|
**Пакет `react-scripts-intlayer`** включает команды и плагины `react-scripts-intlayer` для интеграции Intlayer с приложением на базе Create React App. Эти плагины основаны на [craco](https://craco.js.org/) и содержат дополнительную конфигурацию для сборщика [Webpack](https://webpack.js.org/).
|
|
25
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация пакета | solid-intlayer
|
|
5
5
|
description: Узнайте, как использовать пакет solid-intlayer
|
|
6
6
|
keywords:
|
|
@@ -19,7 +19,7 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# solid-intlayer: NPM-пакет для интернационализации (i18n) приложения на Solid
|
|
21
21
|
|
|
22
|
-
**Intlayer**
|
|
22
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как Solid, Solid и Express.js.
|
|
23
23
|
|
|
24
24
|
**Пакет `solid-intlayer`** позволяет интернационализировать ваше приложение на Solid. Он предоставляет провайдеры контекста и хуки для интернационализации в Solid.
|
|
25
25
|
|
|
@@ -18,7 +18,7 @@ slugs:
|
|
|
18
18
|
|
|
19
19
|
# svelte-intlayer: NPM пакет для интернационализации (i18n) приложения Solid
|
|
20
20
|
|
|
21
|
-
**Intlayer**
|
|
21
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как Solid, Solid и Express.js.
|
|
22
22
|
|
|
23
23
|
**Пакет `svelte-intlayer`** позволяет интернационализировать ваше приложение Solid. Он предоставляет провайдеры контекста и хуки для интернационализации в Solid.
|
|
24
24
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
4
|
title: Документация пакета | vite-intlayer
|
|
5
5
|
description: Узнайте, как использовать пакет vite-intlayer
|
|
6
6
|
keywords:
|
|
@@ -19,7 +19,7 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# vite-intlayer: NPM пакет для интернационализации (i18n) приложения на Vite
|
|
21
21
|
|
|
22
|
-
**Intlayer**
|
|
22
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как React, React и Express.js.
|
|
23
23
|
|
|
24
24
|
**Пакет `vite-intlayer`** позволяет интернационализировать ваше приложение на Vite. Он включает плагин Vite для настройки конфигурации через переменные окружения в [сборщике Vite](https://vitejs.dev/guide/why.html#why-bundle-for-production). Также он предоставляет middleware для определения предпочтительной локали пользователя и перенаправления пользователя на соответствующий URL, как указано в [конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
|
|
25
25
|
|
|
@@ -18,7 +18,7 @@ slugs:
|
|
|
18
18
|
|
|
19
19
|
# vue-intlayer: NPM-пакет для интернационализации (i18n) приложения на Vue
|
|
20
20
|
|
|
21
|
-
**Intlayer**
|
|
21
|
+
**Intlayer** - это набор пакетов, разработанных специально для JavaScript-разработчиков. Он совместим с такими фреймворками, как Vue, Vue и Express.js.
|
|
22
22
|
|
|
23
23
|
**Пакет `vue-intlayer`** позволяет интернационализировать ваше приложение на Vue. Он предоставляет провайдеры контекста и хуки для интернационализации Vue.
|
|
24
24
|
|
|
@@ -286,7 +286,7 @@ Intlayer автоматически объединяет мультиязычн
|
|
|
286
286
|
```tsx fileName="Components/MyComponent/index.ts"
|
|
287
287
|
import { getIntlayer, Locales } from "intlayer";
|
|
288
288
|
|
|
289
|
-
const intlayer = getIntlayer("hello-world"); // Локаль по умолчанию
|
|
289
|
+
const intlayer = getIntlayer("hello-world"); // Локаль по умолчанию - ENGLISH, поэтому будет возвращено содержимое на английском
|
|
290
290
|
|
|
291
291
|
console.log(JSON.stringify(intlayer, null, 2));
|
|
292
292
|
// Результат:
|
package/docs/ru/roadmap.md
CHANGED
|
@@ -17,7 +17,7 @@ slugs:
|
|
|
17
17
|
|
|
18
18
|
# Intlayer: Обзор функций и дорожная карта
|
|
19
19
|
|
|
20
|
-
Intlayer
|
|
20
|
+
Intlayer - это решение для управления контентом и интернационализации, разработанное для упрощения процесса объявления, управления и обновления контента в ваших приложениях. Оно предлагает мощные функции, такие как централизованное или распределённое объявление контента, обширные возможности интернационализации, поддержку Markdown, условный рендеринг, интеграцию с TypeScript/JavaScript/JSON и многое другое. Ниже представлен подробный обзор текущих возможностей Intlayer, а также планируемых функций в дорожной карте.
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -112,13 +112,11 @@ Intlayer предоставляет различные методы для вс
|
|
|
112
112
|
Intlayer поддерживает **TypeScript** (также JavaScript) и **JSON** для объявления контента.
|
|
113
113
|
|
|
114
114
|
- **TypeScript**:
|
|
115
|
-
|
|
116
115
|
- Обеспечивает правильную структуру вашего контента и отсутствие пропущенных переводов.
|
|
117
116
|
- Предлагает строгие или более гибкие режимы валидации.
|
|
118
117
|
- Позволяет динамически получать данные из переменных, функций или внешних API.
|
|
119
118
|
|
|
120
119
|
- **JSON**:
|
|
121
|
-
|
|
122
120
|
- Облегчает интеграцию с внешними инструментами (например, визуальными редакторами) благодаря своему стандартизированному формату.
|
|
123
121
|
|
|
124
122
|
> Ресурсы:
|
|
@@ -308,7 +306,7 @@ Intlayer поддерживает **TypeScript** (также JavaScript) и **JS
|
|
|
308
306
|
|
|
309
307
|
### 3. Автоматический перевод
|
|
310
308
|
|
|
311
|
-
- Для пользователей удалённого CMS
|
|
309
|
+
- Для пользователей удалённого CMS - **генерация перевода в один клик** для любого поддерживаемого языка.
|
|
312
310
|
- Система будет генерировать переводы в фоновом режиме, а затем запрашивать у вас подтверждение или правки.
|
|
313
311
|
|
|
314
312
|
### 4. Улучшения SEO
|
|
@@ -319,7 +317,7 @@ Intlayer поддерживает **TypeScript** (также JavaScript) и **JS
|
|
|
319
317
|
### 5. Совместимость с большим количеством фреймворков
|
|
320
318
|
|
|
321
319
|
- Ведутся работы по поддержке **Solid, Svelte, Angular** и других.
|
|
322
|
-
- Цель
|
|
320
|
+
- Цель - сделать Intlayer совместимым с **любым приложением на JavaScript**.
|
|
323
321
|
|
|
324
322
|
---
|
|
325
323
|
|
|
@@ -21,7 +21,7 @@ slugs:
|
|
|
21
21
|
|
|
22
22
|
## Обзор
|
|
23
23
|
|
|
24
|
-
[**Intlayer**](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension)
|
|
24
|
+
[**Intlayer**](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension) - официальное расширение Visual Studio Code для **Intlayer**, созданное для улучшения опыта разработчика при работе с локализованным контентом в ваших проектах.
|
|
25
25
|
|
|
26
26
|

|
|
27
27
|
|