@intlayer/docs 9.5.5 → 9.5.6
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 +0 -1
- package/blog/ar/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/de/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/en/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/en-GB/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/es/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/fr/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/hi/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/id/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/it/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/ja/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/ko/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/pl/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/pt/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/ru/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/tr/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/uk/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/vi/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/blog/zh/transform_existing_vite_react_app_using_compiler.md +4 -2
- package/docs/ar/intlayer_with_astro.md +19 -32
- package/docs/ar/intlayer_with_astro_lit.md +32 -36
- package/docs/ar/intlayer_with_astro_preact.md +32 -36
- package/docs/ar/intlayer_with_astro_react.md +32 -36
- package/docs/ar/intlayer_with_astro_solid.md +32 -36
- package/docs/ar/intlayer_with_astro_svelte.md +32 -36
- package/docs/ar/intlayer_with_astro_vue.md +32 -36
- package/docs/ar/intlayer_with_react_router_v7.md +12 -1
- package/docs/ar/intlayer_with_solid_start.md +14 -7
- package/docs/ar/intlayer_with_svelte_kit.md +12 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +13 -2
- package/docs/ar/intlayer_with_tanstack.md +13 -6
- package/docs/ar/intlayer_with_vite+lit.md +75 -3
- package/docs/ar/intlayer_with_vite+preact.md +27 -19
- package/docs/ar/intlayer_with_vite+react.md +27 -19
- package/docs/ar/intlayer_with_vite+solid.md +27 -19
- package/docs/ar/intlayer_with_vite+svelte.md +27 -19
- package/docs/ar/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ar/intlayer_with_vite+vue.md +27 -19
- package/docs/ar/introduction.md +0 -1
- package/docs/ar/readme.md +0 -1
- package/docs/ar/releases/v8.md +1 -5
- package/docs/bn/intlayer_with_vite+lit.md +75 -3
- package/docs/bn/intlayer_with_vite+vanilla.md +16 -3
- package/docs/bn/introduction.md +0 -1
- package/docs/cs/intlayer_with_vite+lit.md +75 -3
- package/docs/cs/intlayer_with_vite+vanilla.md +16 -3
- package/docs/cs/introduction.md +0 -1
- package/docs/de/intlayer_with_astro.md +12 -25
- package/docs/de/intlayer_with_astro_lit.md +23 -27
- package/docs/de/intlayer_with_astro_preact.md +23 -27
- package/docs/de/intlayer_with_astro_react.md +23 -27
- package/docs/de/intlayer_with_astro_solid.md +23 -27
- package/docs/de/intlayer_with_astro_svelte.md +23 -27
- package/docs/de/intlayer_with_astro_vue.md +23 -27
- package/docs/de/intlayer_with_react_router_v7.md +12 -1
- package/docs/de/intlayer_with_solid_start.md +14 -7
- package/docs/de/intlayer_with_svelte_kit.md +12 -1
- package/docs/de/intlayer_with_tanstack+solid.md +13 -2
- package/docs/de/intlayer_with_tanstack.md +13 -6
- package/docs/de/intlayer_with_vite+lit.md +75 -3
- package/docs/de/intlayer_with_vite+preact.md +16 -3
- package/docs/de/intlayer_with_vite+react.md +16 -3
- package/docs/de/intlayer_with_vite+solid.md +16 -3
- package/docs/de/intlayer_with_vite+svelte.md +16 -3
- package/docs/de/intlayer_with_vite+vanilla.md +16 -3
- package/docs/de/intlayer_with_vite+vue.md +16 -3
- package/docs/de/introduction.md +0 -1
- package/docs/de/readme.md +0 -1
- package/docs/de/releases/v8.md +1 -5
- package/docs/en/intlayer_with_astro.md +5 -20
- package/docs/en/intlayer_with_astro_lit.md +22 -26
- package/docs/en/intlayer_with_astro_preact.md +22 -26
- package/docs/en/intlayer_with_astro_react.md +22 -26
- package/docs/en/intlayer_with_astro_solid.md +22 -26
- package/docs/en/intlayer_with_astro_svelte.md +22 -26
- package/docs/en/intlayer_with_astro_vanilla.md +20 -13
- package/docs/en/intlayer_with_astro_vue.md +22 -26
- package/docs/en/intlayer_with_react_router_v7.md +12 -1
- package/docs/en/intlayer_with_solid_start.md +14 -7
- package/docs/en/intlayer_with_svelte_kit.md +12 -1
- package/docs/en/intlayer_with_tanstack+solid.md +13 -2
- package/docs/en/intlayer_with_tanstack.md +12 -5
- package/docs/en/intlayer_with_vite+lit.md +75 -3
- package/docs/en/intlayer_with_vite+preact.md +16 -3
- package/docs/en/intlayer_with_vite+react.md +16 -3
- package/docs/en/intlayer_with_vite+solid.md +16 -3
- package/docs/en/intlayer_with_vite+svelte.md +16 -3
- package/docs/en/intlayer_with_vite+vanilla.md +16 -3
- package/docs/en/intlayer_with_vite+vue.md +16 -3
- package/docs/en/introduction.md +0 -1
- package/docs/en/readme.md +0 -1
- package/docs/en/releases/v8.md +1 -5
- package/docs/en-GB/intlayer_with_astro.md +12 -25
- package/docs/en-GB/intlayer_with_astro_lit.md +23 -27
- package/docs/en-GB/intlayer_with_astro_preact.md +23 -27
- package/docs/en-GB/intlayer_with_astro_react.md +23 -27
- package/docs/en-GB/intlayer_with_astro_solid.md +23 -27
- package/docs/en-GB/intlayer_with_astro_svelte.md +23 -27
- package/docs/en-GB/intlayer_with_astro_vue.md +23 -27
- package/docs/en-GB/intlayer_with_react_router_v7.md +12 -1
- package/docs/en-GB/intlayer_with_solid_start.md +14 -7
- package/docs/en-GB/intlayer_with_svelte_kit.md +12 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +13 -2
- package/docs/en-GB/intlayer_with_tanstack.md +13 -6
- package/docs/en-GB/intlayer_with_vite+lit.md +75 -3
- package/docs/en-GB/intlayer_with_vite+preact.md +16 -3
- package/docs/en-GB/intlayer_with_vite+react.md +16 -3
- package/docs/en-GB/intlayer_with_vite+solid.md +25 -15
- package/docs/en-GB/intlayer_with_vite+svelte.md +16 -3
- package/docs/en-GB/intlayer_with_vite+vanilla.md +16 -3
- package/docs/en-GB/intlayer_with_vite+vue.md +16 -3
- package/docs/en-GB/introduction.md +0 -1
- package/docs/en-GB/readme.md +0 -1
- package/docs/en-GB/releases/v8.md +1 -5
- package/docs/es/intlayer_with_astro.md +12 -25
- package/docs/es/intlayer_with_astro_lit.md +23 -27
- package/docs/es/intlayer_with_astro_preact.md +23 -27
- package/docs/es/intlayer_with_astro_react.md +23 -27
- package/docs/es/intlayer_with_astro_solid.md +23 -27
- package/docs/es/intlayer_with_astro_svelte.md +23 -27
- package/docs/es/intlayer_with_astro_vue.md +23 -27
- package/docs/es/intlayer_with_react_router_v7.md +12 -1
- package/docs/es/intlayer_with_solid_start.md +14 -7
- package/docs/es/intlayer_with_svelte_kit.md +12 -1
- package/docs/es/intlayer_with_tanstack+solid.md +13 -2
- package/docs/es/intlayer_with_tanstack.md +13 -6
- package/docs/es/intlayer_with_vite+lit.md +75 -3
- package/docs/es/intlayer_with_vite+preact.md +16 -3
- package/docs/es/intlayer_with_vite+react.md +16 -3
- package/docs/es/intlayer_with_vite+solid.md +16 -3
- package/docs/es/intlayer_with_vite+svelte.md +16 -3
- package/docs/es/intlayer_with_vite+vanilla.md +16 -3
- package/docs/es/intlayer_with_vite+vue.md +16 -3
- package/docs/es/introduction.md +0 -1
- package/docs/es/readme.md +0 -1
- package/docs/es/releases/v8.md +1 -5
- package/docs/fr/intlayer_with_astro.md +13 -26
- package/docs/fr/intlayer_with_astro_lit.md +24 -28
- package/docs/fr/intlayer_with_astro_preact.md +24 -28
- package/docs/fr/intlayer_with_astro_react.md +24 -28
- package/docs/fr/intlayer_with_astro_solid.md +24 -28
- package/docs/fr/intlayer_with_astro_svelte.md +24 -28
- package/docs/fr/intlayer_with_astro_vue.md +24 -28
- package/docs/fr/intlayer_with_react_router_v7.md +15 -4
- package/docs/fr/intlayer_with_solid_start.md +14 -7
- package/docs/fr/intlayer_with_svelte_kit.md +15 -4
- package/docs/fr/intlayer_with_tanstack+solid.md +15 -4
- package/docs/fr/intlayer_with_tanstack.md +13 -6
- package/docs/fr/intlayer_with_vite+lit.md +75 -3
- package/docs/fr/intlayer_with_vite+preact.md +19 -6
- package/docs/fr/intlayer_with_vite+react.md +19 -6
- package/docs/fr/intlayer_with_vite+solid.md +19 -6
- package/docs/fr/intlayer_with_vite+svelte.md +19 -6
- package/docs/fr/intlayer_with_vite+vanilla.md +19 -6
- package/docs/fr/intlayer_with_vite+vue.md +19 -6
- package/docs/fr/introduction.md +0 -1
- package/docs/fr/readme.md +0 -1
- package/docs/fr/releases/v8.md +1 -5
- package/docs/hi/intlayer_with_astro.md +15 -31
- package/docs/hi/intlayer_with_astro_lit.md +26 -33
- package/docs/hi/intlayer_with_astro_preact.md +26 -33
- package/docs/hi/intlayer_with_astro_react.md +26 -33
- package/docs/hi/intlayer_with_astro_solid.md +26 -33
- package/docs/hi/intlayer_with_astro_svelte.md +26 -33
- package/docs/hi/intlayer_with_astro_vue.md +26 -33
- package/docs/hi/intlayer_with_react_router_v7.md +20 -12
- package/docs/hi/intlayer_with_solid_start.md +14 -7
- package/docs/hi/intlayer_with_svelte_kit.md +20 -12
- package/docs/hi/intlayer_with_tanstack+solid.md +13 -2
- package/docs/hi/intlayer_with_tanstack.md +21 -17
- package/docs/hi/intlayer_with_vite+lit.md +75 -3
- package/docs/hi/intlayer_with_vite+preact.md +24 -14
- package/docs/hi/intlayer_with_vite+react.md +24 -14
- package/docs/hi/intlayer_with_vite+solid.md +24 -14
- package/docs/hi/intlayer_with_vite+svelte.md +24 -14
- package/docs/hi/intlayer_with_vite+vanilla.md +16 -3
- package/docs/hi/intlayer_with_vite+vue.md +24 -14
- package/docs/hi/introduction.md +0 -1
- package/docs/hi/readme.md +0 -1
- package/docs/hi/releases/v8.md +1 -5
- package/docs/id/intlayer_with_astro.md +12 -25
- package/docs/id/intlayer_with_astro_lit.md +23 -27
- package/docs/id/intlayer_with_astro_preact.md +23 -27
- package/docs/id/intlayer_with_astro_react.md +23 -27
- package/docs/id/intlayer_with_astro_solid.md +23 -27
- package/docs/id/intlayer_with_astro_svelte.md +23 -27
- package/docs/id/intlayer_with_astro_vue.md +23 -27
- package/docs/id/intlayer_with_react_router_v7.md +12 -1
- package/docs/id/intlayer_with_solid_start.md +14 -7
- package/docs/id/intlayer_with_svelte_kit.md +12 -1
- package/docs/id/intlayer_with_tanstack+solid.md +13 -2
- package/docs/id/intlayer_with_tanstack.md +13 -6
- package/docs/id/intlayer_with_vite+lit.md +75 -3
- package/docs/id/intlayer_with_vite+preact.md +16 -3
- package/docs/id/intlayer_with_vite+react.md +16 -3
- package/docs/id/intlayer_with_vite+solid.md +16 -3
- package/docs/id/intlayer_with_vite+svelte.md +16 -3
- package/docs/id/intlayer_with_vite+vanilla.md +16 -3
- package/docs/id/intlayer_with_vite+vue.md +16 -3
- package/docs/id/introduction.md +0 -1
- package/docs/id/readme.md +0 -1
- package/docs/id/releases/v8.md +1 -5
- package/docs/it/intlayer_with_astro.md +12 -25
- package/docs/it/intlayer_with_astro_lit.md +23 -27
- package/docs/it/intlayer_with_astro_preact.md +23 -27
- package/docs/it/intlayer_with_astro_react.md +23 -27
- package/docs/it/intlayer_with_astro_solid.md +23 -27
- package/docs/it/intlayer_with_astro_svelte.md +23 -27
- package/docs/it/intlayer_with_astro_vue.md +23 -27
- package/docs/it/intlayer_with_react_router_v7.md +12 -1
- package/docs/it/intlayer_with_solid_start.md +14 -7
- package/docs/it/intlayer_with_svelte_kit.md +12 -1
- package/docs/it/intlayer_with_tanstack+solid.md +13 -2
- package/docs/it/intlayer_with_tanstack.md +13 -6
- package/docs/it/intlayer_with_vite+lit.md +75 -3
- package/docs/it/intlayer_with_vite+preact.md +16 -3
- package/docs/it/intlayer_with_vite+react.md +16 -3
- package/docs/it/intlayer_with_vite+solid.md +16 -3
- package/docs/it/intlayer_with_vite+svelte.md +16 -3
- package/docs/it/intlayer_with_vite+vanilla.md +16 -3
- package/docs/it/intlayer_with_vite+vue.md +16 -3
- package/docs/it/introduction.md +0 -1
- package/docs/it/readme.md +0 -1
- package/docs/it/releases/v8.md +1 -5
- package/docs/ja/intlayer_with_astro.md +12 -25
- package/docs/ja/intlayer_with_astro_lit.md +23 -27
- package/docs/ja/intlayer_with_astro_preact.md +23 -27
- package/docs/ja/intlayer_with_astro_react.md +23 -27
- package/docs/ja/intlayer_with_astro_solid.md +23 -27
- package/docs/ja/intlayer_with_astro_svelte.md +23 -27
- package/docs/ja/intlayer_with_astro_vue.md +23 -27
- package/docs/ja/intlayer_with_react_router_v7.md +12 -1
- package/docs/ja/intlayer_with_solid_start.md +14 -7
- package/docs/ja/intlayer_with_svelte_kit.md +21 -15
- package/docs/ja/intlayer_with_tanstack+solid.md +13 -2
- package/docs/ja/intlayer_with_tanstack.md +13 -6
- package/docs/ja/intlayer_with_vite+lit.md +75 -3
- package/docs/ja/intlayer_with_vite+preact.md +16 -3
- package/docs/ja/intlayer_with_vite+react.md +16 -3
- package/docs/ja/intlayer_with_vite+solid.md +16 -3
- package/docs/ja/intlayer_with_vite+svelte.md +16 -3
- package/docs/ja/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ja/intlayer_with_vite+vue.md +16 -3
- package/docs/ja/introduction.md +0 -1
- package/docs/ja/readme.md +0 -1
- package/docs/ja/releases/v8.md +1 -5
- package/docs/ko/intlayer_with_astro.md +6 -21
- package/docs/ko/intlayer_with_astro_lit.md +23 -27
- package/docs/ko/intlayer_with_astro_preact.md +23 -27
- package/docs/ko/intlayer_with_astro_react.md +23 -27
- package/docs/ko/intlayer_with_astro_solid.md +23 -27
- package/docs/ko/intlayer_with_astro_svelte.md +23 -27
- package/docs/ko/intlayer_with_astro_vue.md +23 -27
- package/docs/ko/intlayer_with_react_router_v7.md +12 -1
- package/docs/ko/intlayer_with_solid_start.md +14 -7
- package/docs/ko/intlayer_with_svelte_kit.md +12 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +13 -2
- package/docs/ko/intlayer_with_tanstack.md +13 -6
- package/docs/ko/intlayer_with_vite+lit.md +75 -3
- package/docs/ko/intlayer_with_vite+preact.md +16 -3
- package/docs/ko/intlayer_with_vite+react.md +16 -3
- package/docs/ko/intlayer_with_vite+solid.md +26 -16
- package/docs/ko/intlayer_with_vite+svelte.md +16 -3
- package/docs/ko/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ko/intlayer_with_vite+vue.md +16 -3
- package/docs/ko/introduction.md +0 -1
- package/docs/ko/readme.md +0 -1
- package/docs/ko/releases/v8.md +1 -5
- package/docs/nl/intlayer_with_vite+lit.md +75 -3
- package/docs/nl/intlayer_with_vite+vanilla.md +16 -3
- package/docs/nl/introduction.md +0 -1
- package/docs/pl/intlayer_with_astro.md +6 -21
- package/docs/pl/intlayer_with_astro_lit.md +23 -27
- package/docs/pl/intlayer_with_astro_preact.md +23 -27
- package/docs/pl/intlayer_with_astro_react.md +23 -27
- package/docs/pl/intlayer_with_astro_solid.md +23 -27
- package/docs/pl/intlayer_with_astro_svelte.md +23 -27
- package/docs/pl/intlayer_with_astro_vue.md +23 -27
- package/docs/pl/intlayer_with_react_router_v7.md +12 -1
- package/docs/pl/intlayer_with_solid_start.md +14 -7
- package/docs/pl/intlayer_with_svelte_kit.md +12 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +13 -2
- package/docs/pl/intlayer_with_tanstack.md +13 -6
- package/docs/pl/intlayer_with_vite+lit.md +75 -3
- package/docs/pl/intlayer_with_vite+preact.md +16 -3
- package/docs/pl/intlayer_with_vite+react.md +16 -3
- package/docs/pl/intlayer_with_vite+solid.md +16 -3
- package/docs/pl/intlayer_with_vite+svelte.md +16 -3
- package/docs/pl/intlayer_with_vite+vanilla.md +16 -3
- package/docs/pl/intlayer_with_vite+vue.md +16 -3
- package/docs/pl/introduction.md +0 -1
- package/docs/pl/readme.md +0 -1
- package/docs/pl/releases/v8.md +1 -5
- package/docs/pt/intlayer_with_astro.md +6 -21
- package/docs/pt/intlayer_with_astro_lit.md +23 -27
- package/docs/pt/intlayer_with_astro_preact.md +23 -27
- package/docs/pt/intlayer_with_astro_react.md +23 -27
- package/docs/pt/intlayer_with_astro_solid.md +23 -27
- package/docs/pt/intlayer_with_astro_svelte.md +23 -27
- package/docs/pt/intlayer_with_astro_vue.md +23 -27
- package/docs/pt/intlayer_with_react_router_v7.md +12 -1
- package/docs/pt/intlayer_with_solid_start.md +14 -7
- package/docs/pt/intlayer_with_svelte_kit.md +12 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +13 -2
- package/docs/pt/intlayer_with_tanstack.md +13 -6
- package/docs/pt/intlayer_with_vite+lit.md +75 -3
- package/docs/pt/intlayer_with_vite+preact.md +16 -3
- package/docs/pt/intlayer_with_vite+react.md +16 -3
- package/docs/pt/intlayer_with_vite+solid.md +16 -3
- package/docs/pt/intlayer_with_vite+svelte.md +16 -3
- package/docs/pt/intlayer_with_vite+vanilla.md +16 -3
- package/docs/pt/intlayer_with_vite+vue.md +16 -3
- package/docs/pt/introduction.md +0 -1
- package/docs/pt/readme.md +0 -1
- package/docs/pt/releases/v8.md +1 -5
- package/docs/ru/intlayer_with_astro.md +12 -25
- package/docs/ru/intlayer_with_astro_lit.md +23 -27
- package/docs/ru/intlayer_with_astro_preact.md +23 -27
- package/docs/ru/intlayer_with_astro_react.md +23 -27
- package/docs/ru/intlayer_with_astro_solid.md +23 -27
- package/docs/ru/intlayer_with_astro_svelte.md +23 -27
- package/docs/ru/intlayer_with_astro_vue.md +23 -27
- package/docs/ru/intlayer_with_react_router_v7.md +12 -1
- package/docs/ru/intlayer_with_solid_start.md +14 -7
- package/docs/ru/intlayer_with_svelte_kit.md +12 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +13 -2
- package/docs/ru/intlayer_with_tanstack.md +13 -6
- package/docs/ru/intlayer_with_vite+lit.md +75 -3
- package/docs/ru/intlayer_with_vite+preact.md +16 -3
- package/docs/ru/intlayer_with_vite+react.md +16 -3
- package/docs/ru/intlayer_with_vite+solid.md +16 -3
- package/docs/ru/intlayer_with_vite+svelte.md +16 -3
- package/docs/ru/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ru/intlayer_with_vite+vue.md +16 -3
- package/docs/ru/introduction.md +0 -1
- package/docs/ru/readme.md +0 -1
- package/docs/ru/releases/v8.md +1 -5
- package/docs/tr/intlayer_with_astro.md +12 -25
- package/docs/tr/intlayer_with_astro_lit.md +24 -28
- package/docs/tr/intlayer_with_astro_preact.md +24 -28
- package/docs/tr/intlayer_with_astro_react.md +24 -28
- package/docs/tr/intlayer_with_astro_solid.md +24 -28
- package/docs/tr/intlayer_with_astro_svelte.md +24 -28
- package/docs/tr/intlayer_with_astro_vue.md +24 -28
- package/docs/tr/intlayer_with_react_router_v7.md +12 -1
- package/docs/tr/intlayer_with_solid_start.md +14 -7
- package/docs/tr/intlayer_with_svelte_kit.md +12 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +13 -2
- package/docs/tr/intlayer_with_tanstack.md +13 -6
- package/docs/tr/intlayer_with_vite+lit.md +75 -3
- package/docs/tr/intlayer_with_vite+preact.md +16 -3
- package/docs/tr/intlayer_with_vite+react.md +16 -3
- package/docs/tr/intlayer_with_vite+solid.md +16 -3
- package/docs/tr/intlayer_with_vite+svelte.md +16 -3
- package/docs/tr/intlayer_with_vite+vanilla.md +16 -3
- package/docs/tr/intlayer_with_vite+vue.md +16 -3
- package/docs/tr/introduction.md +0 -1
- package/docs/tr/readme.md +0 -1
- package/docs/tr/releases/v8.md +1 -5
- package/docs/uk/intlayer_with_astro.md +12 -25
- package/docs/uk/intlayer_with_astro_lit.md +23 -27
- package/docs/uk/intlayer_with_astro_preact.md +23 -27
- package/docs/uk/intlayer_with_astro_react.md +23 -27
- package/docs/uk/intlayer_with_astro_solid.md +23 -27
- package/docs/uk/intlayer_with_astro_svelte.md +23 -27
- package/docs/uk/intlayer_with_astro_vue.md +23 -27
- package/docs/uk/intlayer_with_react_router_v7.md +12 -1
- package/docs/uk/intlayer_with_solid_start.md +14 -7
- package/docs/uk/intlayer_with_svelte_kit.md +12 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +13 -2
- package/docs/uk/intlayer_with_tanstack.md +13 -6
- package/docs/uk/intlayer_with_vite+lit.md +75 -3
- package/docs/uk/intlayer_with_vite+preact.md +16 -3
- package/docs/uk/intlayer_with_vite+react.md +16 -3
- package/docs/uk/intlayer_with_vite+solid.md +16 -3
- package/docs/uk/intlayer_with_vite+svelte.md +16 -3
- package/docs/uk/intlayer_with_vite+vanilla.md +16 -3
- package/docs/uk/intlayer_with_vite+vue.md +16 -3
- package/docs/uk/introduction.md +0 -1
- package/docs/uk/readme.md +0 -1
- package/docs/uk/releases/v8.md +1 -5
- package/docs/ur/intlayer_with_vite+lit.md +75 -3
- package/docs/ur/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ur/introduction.md +0 -1
- package/docs/vi/intlayer_with_astro.md +12 -25
- package/docs/vi/intlayer_with_astro_lit.md +23 -27
- package/docs/vi/intlayer_with_astro_preact.md +23 -27
- package/docs/vi/intlayer_with_astro_react.md +23 -27
- package/docs/vi/intlayer_with_astro_solid.md +23 -27
- package/docs/vi/intlayer_with_astro_svelte.md +23 -27
- package/docs/vi/intlayer_with_astro_vue.md +23 -27
- package/docs/vi/intlayer_with_react_router_v7.md +12 -1
- package/docs/vi/intlayer_with_solid_start.md +14 -7
- package/docs/vi/intlayer_with_svelte_kit.md +12 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +13 -2
- package/docs/vi/intlayer_with_tanstack.md +13 -6
- package/docs/vi/intlayer_with_vite+lit.md +75 -3
- package/docs/vi/intlayer_with_vite+preact.md +16 -3
- package/docs/vi/intlayer_with_vite+react.md +16 -3
- package/docs/vi/intlayer_with_vite+solid.md +16 -3
- package/docs/vi/intlayer_with_vite+svelte.md +16 -3
- package/docs/vi/intlayer_with_vite+vanilla.md +16 -3
- package/docs/vi/intlayer_with_vite+vue.md +16 -3
- package/docs/vi/introduction.md +0 -1
- package/docs/vi/readme.md +0 -1
- package/docs/vi/releases/v8.md +1 -5
- package/docs/zh/intlayer_with_astro.md +6 -21
- package/docs/zh/intlayer_with_astro_lit.md +23 -27
- package/docs/zh/intlayer_with_astro_preact.md +23 -27
- package/docs/zh/intlayer_with_astro_react.md +23 -27
- package/docs/zh/intlayer_with_astro_solid.md +23 -27
- package/docs/zh/intlayer_with_astro_svelte.md +23 -27
- package/docs/zh/intlayer_with_astro_vue.md +23 -27
- package/docs/zh/intlayer_with_react_router_v7.md +12 -1
- package/docs/zh/intlayer_with_solid_start.md +14 -7
- package/docs/zh/intlayer_with_svelte_kit.md +12 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +13 -2
- package/docs/zh/intlayer_with_tanstack.md +13 -6
- package/docs/zh/intlayer_with_vite+lit.md +75 -3
- package/docs/zh/intlayer_with_vite+preact.md +16 -3
- package/docs/zh/intlayer_with_vite+react.md +16 -3
- package/docs/zh/intlayer_with_vite+solid.md +16 -3
- package/docs/zh/intlayer_with_vite+svelte.md +16 -3
- package/docs/zh/intlayer_with_vite+vanilla.md +16 -3
- package/docs/zh/intlayer_with_vite+vue.md +16 -3
- package/docs/zh/introduction.md +0 -1
- package/docs/zh/readme.md +0 -1
- package/docs/zh/releases/v8.md +1 -5
- package/docs/zh-TW/introduction.md +0 -1
- package/package.json +6 -6
- package/docs/ar/intlayer_with_astro_vanilla.md +0 -709
- package/docs/de/intlayer_with_astro_vanilla.md +0 -705
- package/docs/en-GB/intlayer_with_astro_vanilla.md +0 -709
- package/docs/es/intlayer_with_astro_vanilla.md +0 -701
- package/docs/fr/intlayer_with_astro_vanilla.md +0 -701
- package/docs/hi/intlayer_with_astro_vanilla.md +0 -720
- package/docs/id/intlayer_with_astro_vanilla.md +0 -705
- package/docs/it/intlayer_with_astro_vanilla.md +0 -705
- package/docs/ja/intlayer_with_astro_vanilla.md +0 -708
- package/docs/ko/intlayer_with_astro_vanilla.md +0 -720
- package/docs/pl/intlayer_with_astro_vanilla.md +0 -705
- package/docs/pt/intlayer_with_astro_vanilla.md +0 -705
- package/docs/ru/intlayer_with_astro_vanilla.md +0 -716
- package/docs/tr/intlayer_with_astro_vanilla.md +0 -705
- package/docs/uk/intlayer_with_astro_vanilla.md +0 -705
- package/docs/vi/intlayer_with_astro_vanilla.md +0 -705
- package/docs/zh/intlayer_with_astro_vanilla.md +0 -704
|
@@ -1,705 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
createdAt: 2026-04-24
|
|
3
|
-
updatedAt: 2026-06-23
|
|
4
|
-
title: "Astro + Vanilla JS i18n - Повний посібник з перекладу вашого застосунку"
|
|
5
|
-
description: "Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Astro + Vanilla JS. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність."
|
|
6
|
-
keywords:
|
|
7
|
-
- інтернаціоналізація
|
|
8
|
-
- документація
|
|
9
|
-
- Intlayer
|
|
10
|
-
- Astro
|
|
11
|
-
- Vanilla JS
|
|
12
|
-
- JavaScript
|
|
13
|
-
- TypeScript
|
|
14
|
-
slugs:
|
|
15
|
-
- doc
|
|
16
|
-
- environment
|
|
17
|
-
- astro
|
|
18
|
-
- vanilla
|
|
19
|
-
applicationTemplate: https://github.com/aymericzip/intlayer-astro-template
|
|
20
|
-
applicationShowcase: https://intlayer-astro-template.vercel.app
|
|
21
|
-
history:
|
|
22
|
-
- version: 8.9.0
|
|
23
|
-
date: 2026-05-04
|
|
24
|
-
changes: "Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей"
|
|
25
|
-
- version: 8.7.7
|
|
26
|
-
date: 2026-04-24
|
|
27
|
-
changes: "Початкова документація для Astro + Vanilla JS"
|
|
28
|
-
author: aymericzip
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
# Перекладіть свій сайт Astro + Vanilla JS за допомогою Intlayer | Інтернаціоналізація (i18n)
|
|
32
|
-
|
|
33
|
-
<Tabs defaultTab="code">
|
|
34
|
-
<Tab label="Код" value="code">
|
|
35
|
-
|
|
36
|
-
<iframe
|
|
37
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-astro-template?file=intlayer.config.ts"
|
|
38
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
39
|
-
title="Demo CodeSandbox - Як інтернаціоналізувати ваш додаток за допомогою Intlayer"
|
|
40
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
41
|
-
loading="lazy"
|
|
42
|
-
/>
|
|
43
|
-
|
|
44
|
-
</Tab>
|
|
45
|
-
<Tab label="Демо" value="demo">
|
|
46
|
-
|
|
47
|
-
<iframe
|
|
48
|
-
src="https://intlayer-astro-template.vercel.app"
|
|
49
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
50
|
-
title="Демо - intlayer-astro-template"
|
|
51
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
52
|
-
loading="lazy"
|
|
53
|
-
/>
|
|
54
|
-
|
|
55
|
-
</Tab>
|
|
56
|
-
</Tabs>
|
|
57
|
-
|
|
58
|
-
## Зміст
|
|
59
|
-
|
|
60
|
-
<TOC/>
|
|
61
|
-
|
|
62
|
-
## Чому варто обрати Intlayer, а не альтернативи?
|
|
63
|
-
|
|
64
|
-
Порівняно з основними рішеннями, такими як `astro-i18n` або `i18next`, Intlayer — це рішення, яке має такі інтегровані оптимізації, як:
|
|
65
|
-
|
|
66
|
-
<AccordionGroup>
|
|
67
|
-
<Accordion header="Повна підтримка Astro">
|
|
68
|
-
|
|
69
|
-
Intlayer оптимізовано для ідеальної роботи з Astro, пропонуючи **багатомовну маршрутизацію**, **карту сайту** та всі функції, необхідні для масштабування інтернаціоналізації (i18n).
|
|
70
|
-
|
|
71
|
-
</Accordion>
|
|
72
|
-
<Accordion header="Розмір бандлу">
|
|
73
|
-
|
|
74
|
-
Замість того, щоб завантажувати великі файли JSON на свої сторінки, завантажуйте лише необхідний вміст. Intlayer допомагає **зменшити розмір бандлу і сторінок до 50%**.
|
|
75
|
-
|
|
76
|
-
</Accordion>
|
|
77
|
-
<Accordion header="Підтримуваність">
|
|
78
|
-
|
|
79
|
-
Організація вмісту за окремими областями (scoping) **полегшує технічне обслуговування** великомасштабних програм. Ви можете скопіювати або видалити окрему папку функцій без розумового навантаження перегляду всієї кодової бази вмісту. Крім того, Intlayer **повністю типізований (fully typed)**, щоб забезпечити точність вашого вмісту.
|
|
80
|
-
|
|
81
|
-
</Accordion>
|
|
82
|
-
<Accordion header="Агент AI">
|
|
83
|
-
|
|
84
|
-
Спільне розміщення вмісту **зменшує контекст, необхідний** для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад **CLI** для перевірки відсутніх перекладів,**[LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/lsp.md)**, **[MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md)** і **[agent skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/agent_skills.md)**, щоб зробити роботу розробника (DX) ще зручнішою для агентів ШІ.
|
|
85
|
-
|
|
86
|
-
</Accordion>
|
|
87
|
-
<Accordion header="Автоматизація">
|
|
88
|
-
|
|
89
|
-
Використовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує **компілятор** для автоматизації екстракція вмісту, а також [веб-платформу](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md), щоб допомогти **перекладати у фоновому режимі**.
|
|
90
|
-
|
|
91
|
-
</Accordion>
|
|
92
|
-
<Accordion header="Продуктивність">
|
|
93
|
-
|
|
94
|
-
Підключення великих файлів JSON до компонентів може призвести до проблем з продуктивністю та реакцією. Intlayer оптимізує завантаження вмісту під час збірки (build time).
|
|
95
|
-
|
|
96
|
-
</Accordion>
|
|
97
|
-
<Accordion header="Співпраця з не-розробниками">
|
|
98
|
-
|
|
99
|
-
Більше ніж просто рішення i18n, Intlayer пропонує **власний [візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md)** і **[повний CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md)**, щоб допомогти вам керувати своїм багатомовним вмістом у **реальному часі**, спрощуючи співпрацю з перекладачами, копірайтерами та іншими членами команди. Контент можна зберігати локально та/або віддалено.
|
|
100
|
-
|
|
101
|
-
</Accordion>
|
|
102
|
-
</AccordionGroup>
|
|
103
|
-
|
|
104
|
-
## Покрокова інструкція з налаштування Intlayer в Astro + Vanilla JS
|
|
105
|
-
|
|
106
|
-
Перегляньте [шаблон додатка](https://github.com/aymericzip/intlayer-astro-template) на GitHub.
|
|
107
|
-
|
|
108
|
-
<Steps>
|
|
109
|
-
<Step number={1} title="Встановіть залежності">
|
|
110
|
-
|
|
111
|
-
Встановіть необхідні пакети за допомогою бажаного менеджера пакетів:
|
|
112
|
-
|
|
113
|
-
```bash packageManager="npm"
|
|
114
|
-
npx intlayer init --interactive
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
```bash packageManager="pnpm"
|
|
118
|
-
pnpm dlx intlayer init --interactive
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
```bash packageManager="yarn"
|
|
122
|
-
yarn dlx intlayer init --interactive
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
```bash packageManager="bun"
|
|
126
|
-
bunx intlayer init --interactive
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
> прапорець `--interactive` не є обов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
|
|
130
|
-
|
|
131
|
-
> Ця команда виявить ваше середовище та встановить необхідні пакети. Наприклад:
|
|
132
|
-
|
|
133
|
-
```bash packageManager="npm"
|
|
134
|
-
npm install intlayer astro-intlayer vanilla-intlayer
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
```bash packageManager="pnpm"
|
|
138
|
-
pnpm add intlayer astro-intlayer vanilla-intlayer
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
```bash packageManager="yarn"
|
|
142
|
-
yarn add intlayer astro-intlayer vanilla-intlayer
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
```bash packageManager="bun"
|
|
146
|
-
bun add intlayer astro-intlayer vanilla-intlayer
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
- **intlayer**
|
|
150
|
-
Основний пакет, що надає інструменти i18n для керування конфігурацією, перекладами, [декларацією вмісту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md), транспіляцією та [командами CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md).
|
|
151
|
-
|
|
152
|
-
- **astro-intlayer**
|
|
153
|
-
Плагін інтеграції Astro для зв'язку Intlayer з [бандлером Vite](https://vite.dev/guide/why.html#why-bundle-for-production); він також включає middleware для визначення бажаної мови користувача, керування cookie та обробки перенаправлень URL.
|
|
154
|
-
|
|
155
|
-
- **vanilla-intlayer**
|
|
156
|
-
Пакет для інтеграції Intlayer у додатки Vanilla JavaScript / TypeScript. Він надає синглтон Pub/Sub (`IntlayerClient`) та допоміжні функції на основі callback-функцій (`useIntlayer`, `useLocale` тощо), щоб будь-яка частина вашого `<script>` в Astro могла реагувати на зміни мови без потреби у фреймворку UI.
|
|
157
|
-
|
|
158
|
-
</Step>
|
|
159
|
-
<Step number={2} title="Налаштуйте свій проект">
|
|
160
|
-
|
|
161
|
-
Створіть конфігураційний файл, щоб визначити мови вашого додатка:
|
|
162
|
-
|
|
163
|
-
```typescript fileName="intlayer.config.ts"
|
|
164
|
-
import { Locales, type IntlayerConfig } from "intlayer";
|
|
165
|
-
|
|
166
|
-
const config: IntlayerConfig = {
|
|
167
|
-
internationalization: {
|
|
168
|
-
locales: [
|
|
169
|
-
Locales.ENGLISH,
|
|
170
|
-
Locales.FRENCH,
|
|
171
|
-
Locales.SPANISH,
|
|
172
|
-
Locales.UKRAINIAN,
|
|
173
|
-
// Ваші інші локалі
|
|
174
|
-
],
|
|
175
|
-
defaultLocale: Locales.ENGLISH,
|
|
176
|
-
},
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
export default config;
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
> Через цей конфігураційний файл ви можете налаштувати локалізовані URL-адреси, перенаправлення middleware, імена cookie, розташування та розширення декларацій вмісту, вимкнути логи Intlayer у консолі та багато іншого. Повний список доступних параметрів дивіться в [документації з конфігурації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md).
|
|
183
|
-
|
|
184
|
-
</Step>
|
|
185
|
-
<Step number={3} title="Інтегруйте Intlayer у вашу конфігурацію Astro">
|
|
186
|
-
|
|
187
|
-
Додайте плагін `intlayer` до вашої конфігурації Astro. Для Vanilla JS не потрібні додаткові інтеграції фреймворків UI.
|
|
188
|
-
|
|
189
|
-
```typescript fileName="astro.config.ts"
|
|
190
|
-
// @ts-check
|
|
191
|
-
|
|
192
|
-
import { intlayer } from "astro-intlayer";
|
|
193
|
-
import { defineConfig } from "astro/config";
|
|
194
|
-
|
|
195
|
-
// https://astro.build/config
|
|
196
|
-
export default defineConfig({
|
|
197
|
-
integrations: [intlayer()],
|
|
198
|
-
});
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
> Плагін інтеграції `intlayer()` використовується для інтеграції Intlayer з Astro. Він забезпечує генерацію файлів декларації вмісту та стежить за ними в режимі розробки. Він визначає змінні середовища Intlayer всередині додатка Astro та надає аліаси для оптимізації продуктивності.
|
|
202
|
-
|
|
203
|
-
</Step>
|
|
204
|
-
<Step number={4} title="Декларуйте свій вміст">
|
|
205
|
-
|
|
206
|
-
Створюйте та керуйте своїми деклараціями вмісту для зберігання перекладів:
|
|
207
|
-
|
|
208
|
-
```typescript fileName="src/app.content.ts"
|
|
209
|
-
import { t, type Dictionary } from "intlayer";
|
|
210
|
-
|
|
211
|
-
const appContent = {
|
|
212
|
-
key: "app",
|
|
213
|
-
content: {
|
|
214
|
-
greeting: t({
|
|
215
|
-
en: "Hello World",
|
|
216
|
-
fr: "Bonjour le monde",
|
|
217
|
-
es: "Hola mundo",
|
|
218
|
-
uk: "Привіт Світе",
|
|
219
|
-
}),
|
|
220
|
-
description: t({
|
|
221
|
-
en: "Welcome to my multilingual Astro site.",
|
|
222
|
-
fr: "Bienvenue sur mon site Astro multilingue.",
|
|
223
|
-
es: "Bienvenido a mi sitio Astro multilingüe.",
|
|
224
|
-
uk: "Ласкаво просимо на мій багатомовний сайт Astro.",
|
|
225
|
-
}),
|
|
226
|
-
switchLocale: t({
|
|
227
|
-
en: "Switch language:",
|
|
228
|
-
fr: "Changer de langue :",
|
|
229
|
-
es: "Cambiar idioma:",
|
|
230
|
-
uk: "Змінити мову:",
|
|
231
|
-
}),
|
|
232
|
-
},
|
|
233
|
-
} satisfies Dictionary;
|
|
234
|
-
|
|
235
|
-
export default appContent;
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
> Декларації вмісту можна визначати в будь-якому місці вашого додатка, за умови, що вони включені в `contentDir` (за замовчуванням `./src`) і відповідають розширенню файлів декларації вмісту (за замовчуванням `.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}`).
|
|
239
|
-
|
|
240
|
-
> Для отримання додаткової інформації дивіться [документацію з декларації вмісту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md).
|
|
241
|
-
|
|
242
|
-
</Step>
|
|
243
|
-
<Step number={5} title="Використання вмісту в Astro">
|
|
244
|
-
|
|
245
|
-
З Vanilla JS весь серверний рендеринг (SSR) відбувається безпосередньо у файлах `.astro` за допомогою `getIntlayer`. Потім на стороні клієнта блок `<script>` ініціалізує бібліотеку `vanilla-intlayer` для увімкнення перемикання мов.
|
|
246
|
-
|
|
247
|
-
```astro fileName="src/pages/[...locale]/index.astro"
|
|
248
|
-
---
|
|
249
|
-
import {
|
|
250
|
-
getIntlayer,
|
|
251
|
-
getLocaleFromPath,
|
|
252
|
-
getLocalizedUrl,
|
|
253
|
-
getPrefix,
|
|
254
|
-
getLocaleName,
|
|
255
|
-
localeMap,
|
|
256
|
-
locales,
|
|
257
|
-
defaultLocale,
|
|
258
|
-
getPathWithoutLocale,
|
|
259
|
-
type LocalesValues,
|
|
260
|
-
} from "intlayer";
|
|
261
|
-
|
|
262
|
-
export const getStaticPaths = () => {
|
|
263
|
-
return localeMap(({ locale }) => ({
|
|
264
|
-
params: { locale: getPrefix(locale).localePrefix },
|
|
265
|
-
}));
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
const locale = getLocaleFromPath(Astro.url.pathname) as LocalesValues;
|
|
269
|
-
const pathWithoutLocale = getPathWithoutLocale(Astro.url.pathname);
|
|
270
|
-
const { greeting, description, switchLocale } = getIntlayer("app", locale);
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
<!doctype html>
|
|
274
|
-
<html lang={locale} dir={getHTMLTextDir(locale)}>
|
|
275
|
-
<head>
|
|
276
|
-
<meta charset="utf-8" />
|
|
277
|
-
<meta name="viewport" content="width=device-width" />
|
|
278
|
-
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
279
|
-
<title>{greeting}</title>
|
|
280
|
-
|
|
281
|
-
<!-- Канонічне посилання -->
|
|
282
|
-
<link
|
|
283
|
-
rel="canonical"
|
|
284
|
-
href={new URL(getLocalizedUrl(Astro.url.pathname, locale), Astro.site)}
|
|
285
|
-
/>
|
|
286
|
-
|
|
287
|
-
<!-- Посилання Hreflang -->
|
|
288
|
-
{
|
|
289
|
-
localeMap(({ locale: mapLocale }) => (
|
|
290
|
-
<link
|
|
291
|
-
rel="alternate"
|
|
292
|
-
hreflang={mapLocale}
|
|
293
|
-
href={new URL(
|
|
294
|
-
getLocalizedUrl(Astro.url.pathname, mapLocale),
|
|
295
|
-
Astro.site
|
|
296
|
-
)}
|
|
297
|
-
/>
|
|
298
|
-
))
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
<link
|
|
302
|
-
rel="alternate"
|
|
303
|
-
hreflang="x-default"
|
|
304
|
-
href={new URL(
|
|
305
|
-
getLocalizedUrl(Astro.url.pathname, defaultLocale),
|
|
306
|
-
Astro.site
|
|
307
|
-
)}
|
|
308
|
-
/>
|
|
309
|
-
</head>
|
|
310
|
-
<body>
|
|
311
|
-
<main>
|
|
312
|
-
<h1 id="greeting">{greeting}</h1>
|
|
313
|
-
<p id="description">{description}</p>
|
|
314
|
-
|
|
315
|
-
<div class="locale-switcher">
|
|
316
|
-
<span class="switcher-label">{switchLocale}</span>
|
|
317
|
-
<div class="locale-buttons">
|
|
318
|
-
{
|
|
319
|
-
locales.map((localeItem) => (
|
|
320
|
-
<a
|
|
321
|
-
href={localeItem === locale ? undefined : getLocalizedUrl(pathWithoutLocale, localeItem)}
|
|
322
|
-
class={`locale-btn ${localeItem === locale ? "active" : ""}`}
|
|
323
|
-
data-locale={localeItem}
|
|
324
|
-
aria-disabled={localeItem === locale}
|
|
325
|
-
>
|
|
326
|
-
{getLocaleName(localeItem)}
|
|
327
|
-
</a>
|
|
328
|
-
))
|
|
329
|
-
}
|
|
330
|
-
</div>
|
|
331
|
-
</div>
|
|
332
|
-
</main>
|
|
333
|
-
</body>
|
|
334
|
-
</html>
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
> Якщо ви хочете використовувати свій контент в атрибуті `рядка`, такому як `alt`, `title`, `href`, `aria-label` тощо, ви можете використовувати значення функції, наприклад:
|
|
338
|
-
|
|
339
|
-
> ```tsx
|
|
340
|
-
> <img src={content.image.src.value} alt={content.image.value} />
|
|
341
|
-
> <img src={content.image.src.toString()} alt={content.image.toString()} />
|
|
342
|
-
> <img src={String(content.image.src)} alt={String(content.image)} />
|
|
343
|
-
> ```
|
|
344
|
-
|
|
345
|
-
> **Примітка щодо налаштування маршрутизації:**
|
|
346
|
-
> Структура каталогів, яку ви використовуєте, залежить від параметра `middleware.routing` у `intlayer.config.ts`:
|
|
347
|
-
>
|
|
348
|
-
> - **`prefix-no-default` (за замовчуванням):** Зберігає мову за замовчуванням у корені (без префікса) та додає префікси до інших. Використовуйте `[...locale]`, щоб охопити всі випадки.
|
|
349
|
-
> - **`prefix-all`:** Усі URL-адреси отримують префікс мови. Ви можете використовувати стандартний `[locale]`, якщо вам не потрібно окремо обробляти корінь.
|
|
350
|
-
> - **`search-param` або `no-prefix`:** Каталоги мов не потрібні. Мова керується за допомогою параметрів запиту або cookie.
|
|
351
|
-
|
|
352
|
-
</Step>
|
|
353
|
-
<Step number={6} title="Додавання перемикача мов">
|
|
354
|
-
|
|
355
|
-
В Astro з Vanilla JS перемикач мов генерується на сервері як звичайні посилання і активується на стороні клієнта за допомогою блоку `<script>`. Коли користувач натискає на посилання мови, `vanilla-intlayer` встановлює cookie мови за допомогою `setLocale` перед переходом на локалізовану URL-адресу.
|
|
356
|
-
|
|
357
|
-
```astro fileName="src/pages/[...locale]/index.astro"
|
|
358
|
-
<!-- Включіть розрітку серверної частини з кроку 5 сюди -->
|
|
359
|
-
|
|
360
|
-
<script>
|
|
361
|
-
import { installIntlayer, useLocale } from "vanilla-intlayer";
|
|
362
|
-
import { getLocaleFromPath, getLocalizedUrl, type LocalesValues } from "intlayer";
|
|
363
|
-
|
|
364
|
-
// Ініціалізувати Intlayer на клієнті з мовою, взятою з поточного шляху
|
|
365
|
-
const locale = getLocaleFromPath(window.location.pathname);
|
|
366
|
-
installIntlayer({ locale: locale as LocalesValues });
|
|
367
|
-
|
|
368
|
-
const { setLocale } = useLocale({
|
|
369
|
-
onLocaleChange: (newLocale: LocalesValues) => {
|
|
370
|
-
window.location.href = getLocalizedUrl(window.location.pathname, newLocale);
|
|
371
|
-
},
|
|
372
|
-
});
|
|
373
|
-
|
|
374
|
-
// Підключити події кліку на посилання перемикача мов
|
|
375
|
-
const localeLinks = document.querySelectorAll("[data-locale]");
|
|
376
|
-
localeLinks.forEach((link) => {
|
|
377
|
-
link.addEventListener("click", (e) => {
|
|
378
|
-
const localeValue = link.getAttribute("data-locale") as LocalesValues;
|
|
379
|
-
if (localeValue && localeValue !== locale) {
|
|
380
|
-
e.preventDefault();
|
|
381
|
-
setLocale(localeValue);
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
});
|
|
385
|
-
</script>
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
> **Примітка щодо стійкості:**
|
|
389
|
-
> `installIntlayer` ініціалізує синглтон Intlayer з мовою, визначеною сервером. `useLocale` разом з `onLocaleChange` забезпечують встановлення cookie мови перед перенаправленням через middleware, що дозволяє мові користувача зберігатися для майбутніх візитів.
|
|
390
|
-
|
|
391
|
-
> **Примітка щодо Progressive Enhancement:**
|
|
392
|
-
> Посилання всередині перемикача мов працюватимуть як стандартні теги `<a>` навіть без JavaScript. Коли JavaScript доступний, виклик `setLocale` оновлює cookie перед перенаправленням, забезпечуючи правильну обробку вибору мови посередником (middleware).
|
|
393
|
-
|
|
394
|
-
</Step>
|
|
395
|
-
<Step number={7} title="Sitemap та Robots.txt">
|
|
396
|
-
|
|
397
|
-
Intlayer пропонує інструменти для динамічного створення локалізованої карти сайту та файлу robots.txt.
|
|
398
|
-
|
|
399
|
-
#### Sitemap
|
|
400
|
-
|
|
401
|
-
Intlayer comes with a built-in sitemap generator to help you create a sitemap for your application easily. It handles localized routes and adds the necessary metadata for search engines.
|
|
402
|
-
|
|
403
|
-
> The Intlayer generated sitemap supports the `xhtml:link` namespace (Hreflang XML Extensions). Unlike the default sitemap generators that only list raw URLs, Intlayer automatically creates the required bidirectional links between all language versions of a page (e.g., `/about`, `/about?lang=fr`, and `/about?lang=es`). This ensures search engines correctly index and serve the right language version to the right audience.
|
|
404
|
-
|
|
405
|
-
Створіть `src/pages/sitemap.xml.ts` для генерації карти сайту, що охоплює всі ваші локалізовані маршрути.
|
|
406
|
-
|
|
407
|
-
```typescript fileName="src/pages/sitemap.xml.ts"
|
|
408
|
-
import type { APIRoute } from "astro";
|
|
409
|
-
import { generateSitemap, type SitemapUrlEntry } from "intlayer";
|
|
410
|
-
|
|
411
|
-
const pathList: SitemapUrlEntry[] = [
|
|
412
|
-
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
413
|
-
{ path: "/about", changefreq: "monthly", priority: 0.7 },
|
|
414
|
-
];
|
|
415
|
-
|
|
416
|
-
const SITE_URL = import.meta.env.SITE ?? "http://localhost:4321";
|
|
417
|
-
|
|
418
|
-
export const GET: APIRoute = async ({ site }) => {
|
|
419
|
-
const xmlOutput = generateSitemap(pathList, { siteUrl: SITE_URL });
|
|
420
|
-
|
|
421
|
-
return new Response(xmlOutput, {
|
|
422
|
-
headers: { "Content-Type": "application/xml" },
|
|
423
|
-
});
|
|
424
|
-
};
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
#### Robots.txt
|
|
428
|
-
|
|
429
|
-
Створіть `src/pages/robots.txt.ts` для керування скануванням пошуковими системами.
|
|
430
|
-
|
|
431
|
-
```typescript fileName="src/pages/robots.txt.ts"
|
|
432
|
-
import type { APIRoute } from "astro";
|
|
433
|
-
import { getMultilingualUrls } from "intlayer";
|
|
434
|
-
|
|
435
|
-
const getAllMultilingualUrls = (urls: string[]) =>
|
|
436
|
-
urls.flatMap((url) => Object.values(getMultilingualUrls(url)) as string[]);
|
|
437
|
-
|
|
438
|
-
const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);
|
|
439
|
-
|
|
440
|
-
export const GET: APIRoute = ({ site }) => {
|
|
441
|
-
const robotsTxt = [
|
|
442
|
-
"User-agent: *",
|
|
443
|
-
"Allow: /",
|
|
444
|
-
...disallowedPaths.map((path) => `Disallow: ${path}`),
|
|
445
|
-
"",
|
|
446
|
-
`Sitemap: ${new URL("/sitemap.xml", site).href}`,
|
|
447
|
-
].join("\n");
|
|
448
|
-
|
|
449
|
-
return new Response(robotsTxt, {
|
|
450
|
-
headers: { "Content-Type": "text/plain" },
|
|
451
|
-
});
|
|
452
|
-
};
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
</Step>
|
|
456
|
-
<Step number={1} title="Витягніть вміст ваших компонентів" isOptional={true}>
|
|
457
|
-
|
|
458
|
-
Якщо у вас є існуюча кодова база, перетворення тисяч файлів може зайняти багато часу.
|
|
459
|
-
|
|
460
|
-
Щоб спростити цей процес, Intlayer пропонує [компілятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md) / [екстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md) для перетворення ваших компонентів і витягування вмісту.
|
|
461
|
-
|
|
462
|
-
Щоб налаштувати його, ви можете додати розділ `compiler` у свій файл `intlayer.config.ts`:
|
|
463
|
-
|
|
464
|
-
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
465
|
-
import { type IntlayerConfig } from "intlayer";
|
|
466
|
-
|
|
467
|
-
const config: IntlayerConfig = {
|
|
468
|
-
// ... Інша частина вашої конфігурації
|
|
469
|
-
compiler: {
|
|
470
|
-
/**
|
|
471
|
-
* Вказує, чи повинен бути включений компілятор.
|
|
472
|
-
*/
|
|
473
|
-
enabled: true,
|
|
474
|
-
|
|
475
|
-
/**
|
|
476
|
-
* Визначає шлях до вихідних файлів
|
|
477
|
-
*/
|
|
478
|
-
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.
|
|
482
|
-
*/
|
|
483
|
-
saveComponents: false,
|
|
484
|
-
|
|
485
|
-
/**
|
|
486
|
-
* Префікс ключа словника
|
|
487
|
-
*/
|
|
488
|
-
dictionaryKeyPrefix: "",
|
|
489
|
-
},
|
|
490
|
-
};
|
|
491
|
-
|
|
492
|
-
export default config;
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
<Tabs>
|
|
496
|
-
<Tab value='Команда витягування'>
|
|
497
|
-
|
|
498
|
-
Запустіть екстрактор для перетворення компонентів і витягування вмісту
|
|
499
|
-
|
|
500
|
-
```bash packageManager="npm"
|
|
501
|
-
npx intlayer extract
|
|
502
|
-
```
|
|
503
|
-
|
|
504
|
-
```bash packageManager="pnpm"
|
|
505
|
-
pnpm intlayer extract
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
```bash packageManager="yarn"
|
|
509
|
-
yarn intlayer extract
|
|
510
|
-
```
|
|
511
|
-
|
|
512
|
-
```bash packageManager="bun"
|
|
513
|
-
bun x intlayer extract
|
|
514
|
-
```
|
|
515
|
-
|
|
516
|
-
</Tab>
|
|
517
|
-
<Tab value='Компілятор Babel'>
|
|
518
|
-
|
|
519
|
-
> Since v9, the `intlayerCompiler` is included in the `intlayer` plugin. So you don't need to add it manually.
|
|
520
|
-
|
|
521
|
-
Оновіть свій `vite.config.ts`, щоб включити плагін `intlayerCompiler`:
|
|
522
|
-
|
|
523
|
-
```ts fileName="vite.config.ts"
|
|
524
|
-
import { defineConfig } from "vite";
|
|
525
|
-
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
526
|
-
|
|
527
|
-
export default defineConfig({
|
|
528
|
-
plugins: [
|
|
529
|
-
intlayer(),
|
|
530
|
-
intlayerCompiler(), // Adds the compiler plugin
|
|
531
|
-
],
|
|
532
|
-
});
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
```bash packageManager="npm"
|
|
536
|
-
npm run build # Або npm run dev
|
|
537
|
-
```
|
|
538
|
-
|
|
539
|
-
```bash packageManager="pnpm"
|
|
540
|
-
pnpm run build # Or pnpm run dev
|
|
541
|
-
```
|
|
542
|
-
|
|
543
|
-
```bash packageManager="yarn"
|
|
544
|
-
yarn build # Or yarn dev
|
|
545
|
-
```
|
|
546
|
-
|
|
547
|
-
```bash packageManager="bun"
|
|
548
|
-
bun run build # Or bun run dev
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
</Tab>
|
|
552
|
-
</Tabs>
|
|
553
|
-
|
|
554
|
-
</Step>
|
|
555
|
-
|
|
556
|
-
</Steps>
|
|
557
|
-
|
|
558
|
-
### Конфігурація TypeScript
|
|
559
|
-
|
|
560
|
-
Intlayer використовує розширення модулів (module augmentation), щоб отримати переваги від TypeScript, роблячи вашу кодову базу надійнішою.
|
|
561
|
-
|
|
562
|
-

|
|
563
|
-
|
|
564
|
-

|
|
565
|
-
|
|
566
|
-
Переконайтеся, що ваша конфігурація TypeScript включає автоматично згенеровані типи.
|
|
567
|
-
|
|
568
|
-
```json5 fileName="tsconfig.json"
|
|
569
|
-
{
|
|
570
|
-
// ... ваша існуюча конфігурація TypeScript
|
|
571
|
-
"include": [
|
|
572
|
-
// ... ваша існуюча конфігурація TypeScript
|
|
573
|
-
".intlayer/**/*.ts", // Включити автоматично згенеровані типи
|
|
574
|
-
],
|
|
575
|
-
}
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
### Конфігурація Git
|
|
579
|
-
|
|
580
|
-
Ми рекомендуємо ігнорувати файли, згенеровані Intlayer. Це запобігає їх потраплянню до вашого Git-репозиторію.
|
|
581
|
-
|
|
582
|
-
Для цього додайте наступні інструкції до вашого файлу `.gitignore`:
|
|
583
|
-
|
|
584
|
-
```bash
|
|
585
|
-
# Ігнорувати файли, згенеровані Intlayer
|
|
586
|
-
.intlayer
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
### Розширення для VS Code
|
|
590
|
-
|
|
591
|
-
Щоб покращити ваш досвід розробки з Intlayer, ви можете встановити **офіційне розширення Intlayer для VS Code**.
|
|
592
|
-
|
|
593
|
-
[Встановити з VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
594
|
-
|
|
595
|
-
Це розширення забезпечує:
|
|
596
|
-
|
|
597
|
-
- **Автозаповнення** ключів перекладу.
|
|
598
|
-
- **Виявлення помилок у реальному часі** для відсутніх перекладів.
|
|
599
|
-
- **Попередній перегляд** перекладеного вмісту.
|
|
600
|
-
- **Швидкі дії** для легкого створення та оновлення перекладів.
|
|
601
|
-
|
|
602
|
-
Для отримання додаткової інформації про використання розширення дивіться [документацію розширення VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
603
|
-
|
|
604
|
-
### Поглиблюйте свої знання
|
|
605
|
-
|
|
606
|
-
Якщо ви хочете дізнатися більше, ви також можете впровадити [Візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/uk/intlayer_visual_editor.md) або використовувати [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/uk/intlayer_CMS.md), щоб винести ваш вміст назовні.
|
|
607
|
-
|
|
608
|
-
## Часто задавані запитання
|
|
609
|
-
|
|
610
|
-
<FAQ>
|
|
611
|
-
|
|
612
|
-
<Question title="Які є різні рішення для інтернаціоналізації сайту Astro без UI фреймворку?">
|
|
613
|
-
|
|
614
|
-
Опція `i18n` в Astro обробляє префікси адрес, але керування вмістом залишається за вами:
|
|
615
|
-
|
|
616
|
-
- **Власні об'єкти словників**: прості об'єкти JSON/TS, імпортовані на рівні сторінок: без типізації, множини та автоматичних тестів.
|
|
617
|
-
- **`Intlayer`**: вміст оголошується поруч із компонентами ([локально або централізовано](https://intlayer.org/blog/per-component-vs-centralized-i18n)), компілюється під час збирання, перевіряється в CI, підтримує переклад AI та візуальний редактор.
|
|
618
|
-
|
|
619
|
-
Без UI фреймворку важливо уникати додаткового розміру бібліотеки під час виконання. Intlayer вирішує контент на етапі збирання, тому статичні сторінки Astro містять готовий HTML без зайвого коду. Див. [чому Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/interest_of_intlayer.md).
|
|
620
|
-
|
|
621
|
-
</Question>
|
|
622
|
-
<Question title="Скільки i18n додає до розміру бандла Astro?">
|
|
623
|
-
|
|
624
|
-
Значно менше, ніж рішення на основі просторів імен, оскільки сторінка ніколи не завантажує каталог, який вона не рендерить. Сторінки Astro рендеряться під час збирання, тому клієнту надсилається лише готовий HTML без додаткових словників; словники отримують лише інтерактивні острови (islands). [Динамічні словники](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/index.md) розділяють контент за локалями, зменшуючи бандл до 50%. Див. [оптимізацію бандла](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/bundle_optimization.md) та [бенчмарк](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/benchmark/index.md).
|
|
625
|
-
|
|
626
|
-
</Question>
|
|
627
|
-
<Question title="Чи можу я мігрувати з i18next або власного словника без переписування компонентів?">
|
|
628
|
-
|
|
629
|
-
Більшою мірою так. Скористайтеся [посібником з міграції з i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/migration_from_i18next_to_intlayer.md).
|
|
630
|
-
|
|
631
|
-
</Question>
|
|
632
|
-
<Question title="Чи можу я зберігати мої існуючі JSON файли перекладів?">
|
|
633
|
-
|
|
634
|
-
Так. [sync JSON плагін](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/plugins/sync-json.md) зберігає ваші файли `/messages/{locale}/{namespace}.json` як джерело істини та генерує словники Intlayer з них в обох напрямках. [sync PO плагін](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/plugins/sync-po.md) робить те ж саме для gettext каталогів, а [файли для окремих локалей](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/per_locale_file.md) дозволяють розділити вміст за мовами замість групування локалей в один файл.
|
|
635
|
-
|
|
636
|
-
</Question>
|
|
637
|
-
<Question title="Чи потрібно переносити вміст ключ за ключем?">
|
|
638
|
-
|
|
639
|
-
Ні. Запустіть `npx intlayer extract`, і Intlayer прочитає ваші файли, витягне призначені для користувача рядки і створить файл `.content` поруч із кожним компонентом, завдяки чому ви переглядаєте diff замість копіювання рядків у каталог вручну. Крок 15 цього посібника пояснює це.
|
|
640
|
-
|
|
641
|
-
Для повної автоматизації [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md) робить те саме під час збирання: сканує код під час кожної зміни, генерує словники та синхронізує їх із HMR.
|
|
642
|
-
|
|
643
|
-
Варто знати два обмеження перед увімкненням компілятора. Він працює за допомогою статичного аналізу, тому рядки, які існують лише під час виконання, такі як коди помилок API або поля CMS, залишаються недосяжними. І він повинен відрізняти текст для користувача від логіки додатка, як-от `className="active"` або код статусу, що вимагає кількох анотацій у великій кодовій базі. [Команда extract](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md) уникає обох проблем, тримаючи вас у курсі.
|
|
644
|
-
|
|
645
|
-
</Question>
|
|
646
|
-
<Question title="Які інструменти для редактора та AI агентів доступні?">
|
|
647
|
-
|
|
648
|
-
П'ять інструментів, усі опціональні:
|
|
649
|
-
|
|
650
|
-
- **[Розширення VS Code](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/vs_code_extension.md)**: перехід від ключа `useIntlayer` до файлу контенту, вилучення рядків із компонента та запуск build, fill, test, push і pull із палітри команд або вкладки Intlayer.
|
|
651
|
-
- **[LSP сервер](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/lsp.md)**: та сама функціональність у будь-якому редакторі з підтримкою LSP, включно з переходом до визначення, переглядом перекладеного значення під час наведення та автодоповненням ключів. Також підтримує виклики `i18next`, `react-i18next`, `next-intl` та `use-intl`.
|
|
652
|
-
- **[MCP сервер](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/mcp_server.md)**: надає документацію та CLI Intlayer для Cursor, VS Code, Claude Desktop, Claude Code та ChatGPT.
|
|
653
|
-
- **[Навички агента (Agent skills)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/agent_skills.md)**: спеціалізовані навички `intlayer-config`, `intlayer-cli` та `intlayer-content`.
|
|
654
|
-
- **[Плагін ESLint](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/eslint.md)**: правило `no-raw-text` відстежує жорстко закодовані рядки.
|
|
655
|
-
|
|
656
|
-
</Question>
|
|
657
|
-
<Question title="Чи потрібен JavaScript на сторінці для роботи перекладів?">
|
|
658
|
-
|
|
659
|
-
Ні. Сторінки Astro рендеряться під час збирання, і Intlayer вирішує контент на цьому етапі, тому згенерований HTML уже містить перекладений текст. Пакет `vanilla-intlayer` потрібен лише для тих фрагментів, які стають інтерактивними в браузері.
|
|
660
|
-
|
|
661
|
-
</Question>
|
|
662
|
-
<Question title="Чи можу я пізніше додати інтерактивний острів без зміни контенту?">
|
|
663
|
-
|
|
664
|
-
Так, у цьому головна перевага єдиного шару вмісту. Ті самі оголошення читаються `astro-intlayer` на сторінці та біндингом фреймворку острова, чи то [React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_react.md), [Vue](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_vue.md), [Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_svelte.md), [Solid](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_solid.md), [Preact](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_preact.md) чи [Lit](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_astro_lit.md).
|
|
665
|
-
|
|
666
|
-
</Question>
|
|
667
|
-
<Question title="Як налаштувати локалізовану маршрутизацію та перемикач мов?">
|
|
668
|
-
|
|
669
|
-
Кроки 6 та 7 цього посібника описують це. `routing.mode` визначає, чи отримує основна мова префікс (`"prefix-no-default"`), чи всі мови (`"prefix-all"`), чи мова не залежить від шляху (`"no-prefix"`). `getLocalizedUrl` перетворює поточний шлях на цільову мову, зберігаючи відвідувача на тій самій сторінці.
|
|
670
|
-
|
|
671
|
-
</Question>
|
|
672
|
-
<Question title="Як створити локалізовану карту сайту та теги hreflang?">
|
|
673
|
-
|
|
674
|
-
Крок 8 описує налаштування `sitemap.xml` та `robots.txt`. Функція `getMultilingualUrls` створює альтернативні адреси для кожної оголошеної мови, включно з `x-default`, для правильного індексування пошуковими системами.
|
|
675
|
-
|
|
676
|
-
</Question>
|
|
677
|
-
<Question title="Як автоматично перекласти сайт за допомогою AI?">
|
|
678
|
-
|
|
679
|
-
Запустіть `npx intlayer fill`. Утиліта заповнює відсутні переклади через обрану LLM з вашим провайдером та ключем API, а прапорець `--git-diff` обмежує обробку зміненими файлами. Див. [команду fill](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/fill.md) та [інтеграцію CI/CD](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/CI_CD.md).
|
|
680
|
-
|
|
681
|
-
</Question>
|
|
682
|
-
<Question title="Чи підтримує Intlayer форми множини, стать та форматований текст?">
|
|
683
|
-
|
|
684
|
-
Так: [форми множини](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/plurial.md), [контент з урахуванням статі](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/gender.md), умови, [вставки (insertions)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/insertion.md) та [форматування](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/formatters.md) чисел, дат і валют.
|
|
685
|
-
|
|
686
|
-
</Question>
|
|
687
|
-
<Question title="Як перекладачі можуть редагувати вміст без втручання в код?">
|
|
688
|
-
|
|
689
|
-
Через [візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md), який дозволяє будь-кому редагувати тексти безпосередньо у працюючому додатку, або через [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md), яка відокремлює вміст і дозволяє оновлювати його без повторного розгортання коду.
|
|
690
|
-
|
|
691
|
-
</Question>
|
|
692
|
-
<Question title="Яка вартість візуального редактора? Чи не є він надлишковим, якщо він мені не потрібен?">
|
|
693
|
-
|
|
694
|
-
[Візуальний редактор Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md) має **нульову вартість** для вашого застосунку, якщо він не налаштований. Додаткова логіка завантажується лише тоді, коли вона явно увімкнена та необхідна.
|
|
695
|
-
|
|
696
|
-
Навіть якщо він увімкнений, вплив є надзвичайно малим (+5 кБ, завантажується динамічно лише під час активації), оскільки основна логіка обробляється серверним редактором на [app.intlayer.org](https://app.intlayer.org) або через пакет `intlayer-editor`. Якщо вам потрібне просте рішення для перекладу без візуального редагування, Intlayer не створює жодних накладних витрат для вашого застосунку.
|
|
697
|
-
|
|
698
|
-
</Question>
|
|
699
|
-
<Question title="Чи є Intlayer безкоштовним та відкритим кодом?">
|
|
700
|
-
|
|
701
|
-
Так, під ліцензією Apache 2.0, включно з комерційним використанням. Хмарна CMS - це додаткова платна послуга, яку також можна [розгорнути самостійно (self-host)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/self_hosting.md).
|
|
702
|
-
|
|
703
|
-
</Question>
|
|
704
|
-
|
|
705
|
-
</FAQ>
|