@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 - Panduan lengkap menerjemahkan aplikasi Anda"
|
|
5
|
-
description: "Tidak ada lagi i18next. Panduan 2026 untuk membangun aplikasi Astro + Vanilla JS multibahasa (i18n). Terjemahkan dengan agen AI dan optimalkan ukuran bundle, SEO, dan performa."
|
|
6
|
-
keywords:
|
|
7
|
-
- internasionalisasi
|
|
8
|
-
- dokumentasi
|
|
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: "Perbarui penggunaan API useIntlayer Solid ke akses properti langsung"
|
|
25
|
-
- version: 8.7.7
|
|
26
|
-
date: 2026-04-24
|
|
27
|
-
changes: "Dokumentasi awal untuk Astro + Vanilla JS"
|
|
28
|
-
author: aymericzip
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
# Terjemahkan Situs Astro + Vanilla JS Anda dengan Intlayer | Internasionalisasi (i18n)
|
|
32
|
-
|
|
33
|
-
<Tabs defaultTab="code">
|
|
34
|
-
<Tab label="Kode" 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 - Cara menginternasionalisasi aplikasi Anda dengan 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="Demo" 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="Demo - 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
|
-
## Daftar Isi
|
|
59
|
-
|
|
60
|
-
<TOC/>
|
|
61
|
-
|
|
62
|
-
## Mengapa Intlayer dibandingkan alternatif?
|
|
63
|
-
|
|
64
|
-
Dibandingkan dengan solusi utama seperti `astro-i18n` atau `i18next`, Intlayer adalah solusi yang hadir dengan pengoptimalan terintegrasi seperti:
|
|
65
|
-
|
|
66
|
-
<AccordionGroup>
|
|
67
|
-
<Accordion header="Cakupan Astro penuh">
|
|
68
|
-
|
|
69
|
-
Intlayer dioptimalkan untuk bekerja sempurna dengan Astro dengan menawarkan **perutean multibahasa**, **peta situs**, dan semua fitur yang diperlukan untuk penskalaan internasionalisasi (i18n).
|
|
70
|
-
|
|
71
|
-
</Accordion>
|
|
72
|
-
<Accordion header="Ukuran bundle">
|
|
73
|
-
|
|
74
|
-
Daripada memuat file JSON berukuran besar ke halaman Anda, muat saja konten yang diperlukan. Intlayer membantu **mengurangi ukuran bundle dan halaman Anda hingga 50%**.
|
|
75
|
-
|
|
76
|
-
</Accordion>
|
|
77
|
-
<Accordion header="Kemampuan Pemeliharaan">
|
|
78
|
-
|
|
79
|
-
Mencakup konten aplikasi Anda **memfasilitasi pemeliharaan** untuk aplikasi berskala besar. Anda dapat menduplikasi atau menghapus satu folder fitur tanpa beban mental untuk meninjau seluruh basis kode konten Anda. Selain itu, Intlayer **diketik sepenuhnya** untuk memastikan keakuratan konten Anda.
|
|
80
|
-
|
|
81
|
-
</Accordion>
|
|
82
|
-
<Accordion header="Agen AI">
|
|
83
|
-
|
|
84
|
-
Menempatkan konten bersama **mengurangi konteks yang diperlukan** dengan Model Bahasa Besar (LLM). Intlayer juga dilengkapi dengan serangkaian alat, seperti **CLI** untuk menguji terjemahan yang hilang,**[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)**, dan **[agent skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/agent_skills.md)**, untuk menjadikan pengalaman pengembang (DX) lebih lancar bagi agen AI.
|
|
85
|
-
|
|
86
|
-
</Accordion>
|
|
87
|
-
<Accordion header="Otomatisasi">
|
|
88
|
-
|
|
89
|
-
Gunakan otomatisasi untuk menerjemahkan dalam saluran CI/CD Anda menggunakan LLM pilihan Anda dengan biaya penyedia AI Anda. Intlayer juga menawarkan **compiler** untuk mengotomatiskan ekstraksi konten, serta [platform web](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md) untuk membantu **menerjemahkan di latar belakang**.
|
|
90
|
-
|
|
91
|
-
</Accordion>
|
|
92
|
-
<Accordion header="Pertunjukan">
|
|
93
|
-
|
|
94
|
-
Menghubungkan file JSON berukuran besar ke komponen dapat menyebabkan masalah kinerja dan reaktivitas. Intlayer mengoptimalkan pemuatan konten Anda pada waktu pembuatan.
|
|
95
|
-
|
|
96
|
-
</Accordion>
|
|
97
|
-
<Accordion header="Menskalakan tanpa pengembang">
|
|
98
|
-
|
|
99
|
-
Lebih dari sekedar solusi i18n, Intlayer menyediakan **[editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md)** yang dihosting sendiri dan **[CMS lengkap](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md)** untuk membantu Anda mengelola konten multibahasa secara **real-time**, membuat kolaborasi dengan penerjemah, copywriter, dan anggota tim lainnya menjadi lancar. Konten dapat disimpan secara lokal dan/atau jarak jauh.
|
|
100
|
-
|
|
101
|
-
</Accordion>
|
|
102
|
-
</AccordionGroup>
|
|
103
|
-
|
|
104
|
-
## Panduan Langkah-demi-Langkah untuk Mengonfigurasi Intlayer di Astro + Vanilla JS
|
|
105
|
-
|
|
106
|
-
Lihat [templat aplikasi](https://github.com/aymericzip/intlayer-astro-template) di GitHub.
|
|
107
|
-
|
|
108
|
-
<Steps>
|
|
109
|
-
<Step number={1} title="Instal Dependensi">
|
|
110
|
-
|
|
111
|
-
Instal paket yang diperlukan menggunakan manajer paket pilihan Anda:
|
|
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
|
-
> flag `--interactive` bersifat opsional. Gunakan `intlayer-cli init` jika Anda adalah agen AI.
|
|
130
|
-
|
|
131
|
-
> Perintah ini akan mendeteksi lingkungan Anda dan menginstal paket yang diperlukan. Misalnya:
|
|
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
|
-
Paket inti yang menyediakan alat i18n untuk manajemen konfigurasi, terjemahan, [deklarasi konten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/content_file.md), transpilasi, dan [perintah CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/index.md).
|
|
151
|
-
|
|
152
|
-
- **astro-intlayer**
|
|
153
|
-
Plugin integrasi Astro untuk menghubungkan Intlayer dengan [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production); juga mencakup middleware untuk mendeteksi bahasa pilihan pengguna, mengelola cookie, dan menangani pengalihan URL.
|
|
154
|
-
|
|
155
|
-
- **vanilla-intlayer**
|
|
156
|
-
Paket untuk mengintegrasikan Intlayer ke dalam aplikasi Vanilla JavaScript / TypeScript. Paket ini menyediakan singleton Pub/Sub (`IntlayerClient`) dan pembantu berbasis callback (`useIntlayer`, `useLocale`, dll.) agar bagian mana pun dari Astro `<script>` Anda dapat bereaksi terhadap perubahan bahasa tanpa memerlukan framework UI.
|
|
157
|
-
|
|
158
|
-
</Step>
|
|
159
|
-
<Step number={2} title="Konfigurasikan Proyek Anda">
|
|
160
|
-
|
|
161
|
-
Buat file konfigurasi untuk menentukan bahasa aplikasi Anda:
|
|
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.INDONESIAN,
|
|
173
|
-
// Bahasa Anda yang lain
|
|
174
|
-
],
|
|
175
|
-
defaultLocale: Locales.ENGLISH,
|
|
176
|
-
},
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
export default config;
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
> Melalui file konfigurasi ini, Anda dapat mengatur URL yang dilokalkan, pengalihan middleware, nama cookie, lokasi dan ekstensi deklarasi konten, menonaktifkan log Intlayer di konsole, dan banyak lagi. Untuk daftar lengkap parameter yang tersedia, lihat [dokumentasi konfigurasi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md).
|
|
183
|
-
|
|
184
|
-
</Step>
|
|
185
|
-
<Step number={3} title="Integrasikan Intlayer ke dalam konfigurasi Astro Anda">
|
|
186
|
-
|
|
187
|
-
Tambahkan plugin `intlayer` ke konfigurasi Astro Anda. Tidak diperlukan integrasi framework UI tambahan untuk Vanilla JS.
|
|
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
|
-
> Plugin integrasi `intlayer()` digunakan untuk mengintegrasikan Intlayer dengan Astro. Plugin ini memastikan pembuatan file deklarasi konten dan memantaunya dalam mode pengembangan. Plugin ini mendefinisikan variabel lingkungan Intlayer di dalam aplikasi Astro dan menyediakan alias untuk mengoptimalkan kinerja.
|
|
202
|
-
|
|
203
|
-
</Step>
|
|
204
|
-
<Step number={4} title="Deklarasikan Konten Anda">
|
|
205
|
-
|
|
206
|
-
Buat dan kelola deklarasi konten Anda untuk menyimpan terjemahan:
|
|
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
|
-
id: "Halo Dunia",
|
|
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
|
-
id: "Selamat datang di situs Astro multibahasa saya.",
|
|
225
|
-
}),
|
|
226
|
-
switchLocale: t({
|
|
227
|
-
en: "Switch language:",
|
|
228
|
-
fr: "Changer de langue :",
|
|
229
|
-
es: "Cambiar idioma:",
|
|
230
|
-
id: "Ganti bahasa:",
|
|
231
|
-
}),
|
|
232
|
-
},
|
|
233
|
-
} satisfies Dictionary;
|
|
234
|
-
|
|
235
|
-
export default appContent;
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
> Deklarasi konten dapat didefinisikan di mana saja dalam aplikasi Anda, asalkan disertakan dalam `contentDir` (secara default `./src`) dan cocok dengan ekstensi file deklarasi konten (secara default `.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}`).
|
|
239
|
-
|
|
240
|
-
> Untuk informasi selengkapnya, lihat [dokumentasi deklarasi konten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/content_file.md).
|
|
241
|
-
|
|
242
|
-
</Step>
|
|
243
|
-
<Step number={5} title="Menggunakan Konten di Astro">
|
|
244
|
-
|
|
245
|
-
Dengan Vanilla JS, semua server-side rendering (SSR) terjadi langsung di file `.astro` menggunakan `getIntlayer`. Kemudian, di sisi klien, blok `<script>` menginisialisasi pustaka `vanilla-intlayer` untuk mengaktifkan peralihan bahasa.
|
|
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
|
-
<!-- Tautan Kanonikal -->
|
|
282
|
-
<link
|
|
283
|
-
rel="canonical"
|
|
284
|
-
href={new URL(getLocalizedUrl(Astro.url.pathname, locale), Astro.site)}
|
|
285
|
-
/>
|
|
286
|
-
|
|
287
|
-
<!-- Tautan 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
|
-
> Jika Anda ingin menggunakan konten Anda dalam atribut `string`, seperti `alt`, `title`, `href`, `aria-label`, dll., Anda dapat menggunakan nilai fungsi, seperti:
|
|
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
|
-
> **Catatan tentang Penyiapan Perutean:**
|
|
346
|
-
> Struktur direktori yang Anda gunakan bergantung pada pengaturan `middleware.routing` di `intlayer.config.ts`:
|
|
347
|
-
>
|
|
348
|
-
> - **`prefix-no-default` (default):** Mempertahankan bahasa default di root (tanpa awalan) dan mengawali bahasa lainnya. Gunakan `[...locale]` untuk menangkap semua kasus.
|
|
349
|
-
> - **`prefix-all`:** Semua URL mendapatkan awalan bahasa. Anda dapat menggunakan `[locale]` standar jika tidak perlu menangani root secara terpisah.
|
|
350
|
-
> - **`search-param` atau `no-prefix`:** Direktori bahasa tidak diperlukan. Bahasa dikelola melalui parameter kueri atau cookie.
|
|
351
|
-
|
|
352
|
-
</Step>
|
|
353
|
-
<Step number={6} title="Menambahkan Pengalih Bahasa">
|
|
354
|
-
|
|
355
|
-
Di Astro dengan Vanilla JS, pengalih bahasa dihasilkan di server sebagai tautan biasa dan diaktifkan di sisi klien melalui blok `<script>`. Saat pengguna mengklik tautan bahasa, `vanilla-intlayer` menyetel cookie bahasa melalui `setLocale` sebelum menavigasi ke URL yang dilokalkan.
|
|
356
|
-
|
|
357
|
-
```astro fileName="src/pages/[...locale]/index.astro"
|
|
358
|
-
<!-- Sertakan markup sisi server dari Langkah 5 di sini -->
|
|
359
|
-
|
|
360
|
-
<script>
|
|
361
|
-
import { installIntlayer, useLocale } from "vanilla-intlayer";
|
|
362
|
-
import { getLocaleFromPath, getLocalizedUrl, type LocalesValues } from "intlayer";
|
|
363
|
-
|
|
364
|
-
// Inisialisasi Intlayer di klien dengan bahasa yang diambil dari jalur saat ini
|
|
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
|
-
// Hubungkan peristiwa klik pada tautan pengalih bahasa
|
|
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
|
-
> **Catatan tentang Persistensi:**
|
|
389
|
-
> `installIntlayer` menginisialisasi singleton Intlayer dengan bahasa yang ditentukan server. `useLocale` bersama dengan `onLocaleChange` memastikan bahwa cookie bahasa disetel sebelum pengalihan melalui middleware, memungkinkan preferensi bahasa pengguna diingat untuk kunjungan mendatang.
|
|
390
|
-
|
|
391
|
-
> **Catatan tentang Progressive Enhancement:**
|
|
392
|
-
> Tautan di dalam pengalih bahasa akan berfungsi sebagai tag `<a>` standar bahkan tanpa JavaScript. Saat JavaScript tersedia, panggilan `setLocale` memperbarui cookie sebelum mengarahkan ulang, memastikan middleware menangani pilihan bahasa dengan benar.
|
|
393
|
-
|
|
394
|
-
</Step>
|
|
395
|
-
<Step number={7} title="Sitemap dan Robots.txt">
|
|
396
|
-
|
|
397
|
-
Intlayer menawarkan utilitas untuk secara dinamis membuat peta situs yang dilokalkan dan file robots.txt Anda.
|
|
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
|
-
Buat `src/pages/sitemap.xml.ts` untuk menghasilkan peta situs yang mencakup semua rute yang dilokalkan.
|
|
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
|
-
Buat `src/pages/robots.txt.ts` untuk mengontrol perayapan mesin pencari.
|
|
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="Ekstrak konten komponen Anda" isOptional={true}>
|
|
457
|
-
|
|
458
|
-
Jika Anda memiliki basis kode yang ada, mengubah ribuan file bisa memakan waktu lama.
|
|
459
|
-
|
|
460
|
-
Untuk memudahkan proses ini, Intlayer mengusulkan [compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/compiler.md) / [extractor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/extract.md) untuk mengubah komponen Anda dan mengekstrak kontennya.
|
|
461
|
-
|
|
462
|
-
Untuk mengaturnya, Anda dapat menambahkan bagian `compiler` di file `intlayer.config.ts` Anda:
|
|
463
|
-
|
|
464
|
-
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
465
|
-
import { type IntlayerConfig } from "intlayer";
|
|
466
|
-
|
|
467
|
-
const config: IntlayerConfig = {
|
|
468
|
-
// ... Sisa konfigurasi Anda
|
|
469
|
-
compiler: {
|
|
470
|
-
/**
|
|
471
|
-
* Menunjukkan apakah compiler harus diaktifkan.
|
|
472
|
-
*/
|
|
473
|
-
enabled: true,
|
|
474
|
-
|
|
475
|
-
/**
|
|
476
|
-
* Menentukan jalur file output
|
|
477
|
-
*/
|
|
478
|
-
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Menunjukkan apakah komponen harus disimpan setelah diubah. Dengan begitu, compiler dapat dijalankan satu kali saja untuk mengubah aplikasi, lalu dapat dihapus.
|
|
482
|
-
*/
|
|
483
|
-
saveComponents: false,
|
|
484
|
-
|
|
485
|
-
/**
|
|
486
|
-
* Prefiks kunci kamus
|
|
487
|
-
*/
|
|
488
|
-
dictionaryKeyPrefix: "",
|
|
489
|
-
},
|
|
490
|
-
};
|
|
491
|
-
|
|
492
|
-
export default config;
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
<Tabs>
|
|
496
|
-
<Tab value='Perintah ekstrak'>
|
|
497
|
-
|
|
498
|
-
Jalankan extractor untuk mengubah komponen Anda dan mengekstrak kontennya
|
|
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='Compiler Babel'>
|
|
518
|
-
|
|
519
|
-
> Since v9, the `intlayerCompiler` is included in the `intlayer` plugin. So you don't need to add it manually.
|
|
520
|
-
|
|
521
|
-
Perbarui `vite.config.ts` Anda untuk menyertakan plugin `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 # Atau 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
|
-
### Konfigurasi TypeScript
|
|
559
|
-
|
|
560
|
-
Intlayer menggunakan augmentasi modul (module augmentation) untuk memanfaatkan TypeScript, membuat basis kode Anda lebih kuat.
|
|
561
|
-
|
|
562
|
-

|
|
563
|
-
|
|
564
|
-

|
|
565
|
-
|
|
566
|
-
Pastikan konfigurasi TypeScript Anda menyertakan tipe yang dibuat secara otomatis.
|
|
567
|
-
|
|
568
|
-
```json5 fileName="tsconfig.json"
|
|
569
|
-
{
|
|
570
|
-
// ... konfigurasi TypeScript Anda yang sudah ada
|
|
571
|
-
"include": [
|
|
572
|
-
// ... konfigurasi TypeScript Anda yang sudah ada
|
|
573
|
-
".intlayer/**/*.ts", // Sertakan tipe yang dibuat secara otomatis
|
|
574
|
-
],
|
|
575
|
-
}
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
### Konfigurasi Git
|
|
579
|
-
|
|
580
|
-
Disarankan untuk mengabaikan file yang dihasilkan oleh Intlayer. Ini mencegah file tersebut di-commit ke repositori Git Anda.
|
|
581
|
-
|
|
582
|
-
Untuk melakukannya, tambahkan instruksi berikut ke file `.gitignore` Anda:
|
|
583
|
-
|
|
584
|
-
```bash
|
|
585
|
-
# Abaikan file yang dihasilkan oleh Intlayer
|
|
586
|
-
.intlayer
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
### Ekstensi VS Code
|
|
590
|
-
|
|
591
|
-
Untuk meningkatkan pengalaman pengembangan Anda dengan Intlayer, Anda dapat menginstal **ekstensi resmi Intlayer untuk VS Code**.
|
|
592
|
-
|
|
593
|
-
[Instalasi dari VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
594
|
-
|
|
595
|
-
Ekstensi ini menyediakan:
|
|
596
|
-
|
|
597
|
-
- **Autocompletion** untuk kunci terjemahan.
|
|
598
|
-
- **Deteksi kesalahan waktu nyata** untuk terjemahan yang hilang.
|
|
599
|
-
- **Pratinjau inline** untuk konten yang diterjemahkan.
|
|
600
|
-
- **Tindakan cepat** untuk membuat dan memperbarui terjemahan dengan mudah.
|
|
601
|
-
|
|
602
|
-
Untuk informasi selengkapnya tentang cara menggunakan ekstensi, lihat [dokumentasi ekstensi VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
603
|
-
|
|
604
|
-
### Perdalam Pengetahuan Anda
|
|
605
|
-
|
|
606
|
-
Jika Anda ingin mempelajari lebih lanjut, Anda juga dapat menerapkan [Editor Visual](https://github.com/aymericzip/intlayer/blob/main/docs/id/intlayer_visual_editor.md) atau menggunakan [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/id/intlayer_CMS.md) untuk mengeksternalisasi konten Anda.
|
|
607
|
-
|
|
608
|
-
## Pertanyaan yang Sering Diajukan
|
|
609
|
-
|
|
610
|
-
<FAQ>
|
|
611
|
-
|
|
612
|
-
<Question title="Apa saja solusi berbeda yang tersedia untuk menginternasionalkan situs Astro tanpa framework UI?">
|
|
613
|
-
|
|
614
|
-
Opsi `i18n` bawaan Astro mengelola prefix alamat, tetapi menyerahkan pengelolaan konten kepada Anda:
|
|
615
|
-
|
|
616
|
-
- **Objek kamus manual**: objek JSON/TS sederhana yang diimpor per halaman: tanpa typing, aturan jamak, atau alat audit.
|
|
617
|
-
- **`Intlayer`**: konten dideklarasikan di sebelah komponen ([lokal atau terpusat](https://intlayer.org/blog/per-component-vs-centralized-i18n)), dikompilasi saat build time, diaudit di CI, didukung terjemahan AI dan visual editor.
|
|
618
|
-
|
|
619
|
-
Tanpa framework UI, Anda ingin menghindari ukuran library i18n runtime, dan Intlayer menyelesaikan konten saat build time sehingga halaman statis Astro berisi HTML jadi tanpa kamus tambahan. Lihat [mengapa Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/interest_of_intlayer.md).
|
|
620
|
-
|
|
621
|
-
</Question>
|
|
622
|
-
<Question title="Berapa banyak i18n menambah ukuran bundle Astro saya?">
|
|
623
|
-
|
|
624
|
-
Jauh lebih sedikit daripada solusi berbasis namespace, karena halaman tidak pernah mengunduh katalog yang tidak di-render. Halaman Astro di-render saat build time, jadi hanya HTML terjemahan yang dikirim tanpa kamus tambahan; hanya komponen pulau (island) interaktif yang menerima kamus. [Kamus dinamis](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dynamic_dictionaries/index.md) membagi konten per locale, mengurangi bundle hingga 50%. Lihat [optimasi bundle](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/bundle_optimization.md) dan [benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/benchmark/index.md).
|
|
625
|
-
|
|
626
|
-
</Question>
|
|
627
|
-
<Question title="Bisakah saya bermigrasi dari i18next atau kamus manual tanpa menulis ulang komponen?">
|
|
628
|
-
|
|
629
|
-
Sebagian besar ya. Ikuti [panduan migrasi i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/migration_from_i18next_to_intlayer.md).
|
|
630
|
-
|
|
631
|
-
</Question>
|
|
632
|
-
<Question title="Bisakah saya menyimpan file terjemahan JSON yang sudah ada?">
|
|
633
|
-
|
|
634
|
-
Ya. Plugin [sync JSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/plugins/sync-json.md) menjaga file `/messages/{locale}/{namespace}.json` Anda sebagai sumber kebenaran dan menghasilkan kamus Intlayer darinya, di kedua arah. Plugin [sync PO](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/plugins/sync-po.md) melakukan hal yang sama untuk katalog gettext, dan [file per locale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/per_locale_file.md) memungkinkan Anda membagi konten berdasarkan bahasa daripada mengelompokkan lokal dalam satu file.
|
|
635
|
-
|
|
636
|
-
</Question>
|
|
637
|
-
<Question title="Apakah saya harus memindahkan konten saya key by key?">
|
|
638
|
-
|
|
639
|
-
Tidak. Jalankan `npx intlayer extract` dan Intlayer membaca file Anda, mengeluarkan string yang dihadapi pengguna, dan menulis file `.content` di sebelah masing-masing, sehingga Anda meninjau diff alih-alih menyalin string ke dalam katalog satu per satu. Langkah 15 panduan ini menjelaskannya.
|
|
640
|
-
|
|
641
|
-
Untuk proses otomatis penuh, [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/compiler.md) melakukan hal yang sama saat build time: memindai kode pada setiap perubahan, menghasilkan kamus, dan menyinkronkannya dengan HMR.
|
|
642
|
-
|
|
643
|
-
Dua batasan perlu diketahui sebelum Anda mengaktifkan compiler. Ini bekerja dengan analisis statis, jadi string yang hanya ada saat runtime, seperti kode kesalahan API atau field CMS, tetap berada di luar jangkauan. Dan ini harus membedakan teks yang dilihat pengguna dari logika aplikasi seperti `className="active"` atau kode status, yang memerlukan beberapa anotasi di basis kode yang besar. [Perintah extract](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/extract.md) menghindari keduanya dengan menjaga Anda tetap memegang kendali.
|
|
644
|
-
|
|
645
|
-
</Question>
|
|
646
|
-
<Question title="Apa tooling editor dan agen AI yang tersedia?">
|
|
647
|
-
|
|
648
|
-
Lima bagian, semuanya opsional:
|
|
649
|
-
|
|
650
|
-
- **[Ekstensi VS Code](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/vs_code_extension.md)**: lompat dari kunci `useIntlayer` ke file konten yang mendeklarasikannya, ekstrak konten dari komponen, dan jalankan build, fill, test, push dan pull dari command palette atau tab Intlayer.
|
|
651
|
-
- **[Server LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/lsp.md)**: pengalaman yang sama di editor mana pun yang mendukung LSP, dengan go to definition, hover preview dari nilai terjemahan, autocompletion kunci, dan peringatan ketika kunci tidak dideklarasikan. Ini juga menyelesaikan panggilan `i18next`, `react-i18next`, `next-intl` dan `use-intl`.
|
|
652
|
-
- **[Server MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/mcp_server.md)**: mengekspos dokumentasi Intlayer dan CLI ke Cursor, VS Code, Claude Desktop, Claude Code dan ChatGPT.
|
|
653
|
-
- **[Agent skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/agent_skills.md)**: keahlian terfokus seperti `intlayer-config`, `intlayer-cli` dan `intlayer-content`.
|
|
654
|
-
- **[Plugin ESLint](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/eslint.md)**: aturan `no-raw-text` menandai string hardcoded.
|
|
655
|
-
|
|
656
|
-
</Question>
|
|
657
|
-
<Question title="Apakah saya memerlukan JavaScript di halaman agar terjemahan berfungsi?">
|
|
658
|
-
|
|
659
|
-
Tidak. Halaman Astro di-render saat build time, dan Intlayer menyelesaikan konten selama render tersebut, jadi HTML yang dihasilkan sudah berisi teks terjemahan. Paket `vanilla-intlayer` hanya diperlukan untuk bagian yang Anda buat interaktif di browser.
|
|
660
|
-
|
|
661
|
-
</Question>
|
|
662
|
-
<Question title="Bisakah saya menambahkan pulau interaktif nanti tanpa mengubah konten saya?">
|
|
663
|
-
|
|
664
|
-
Ya, itu adalah tujuan utama dari satu lapisan konten. Deklarasi yang sama dibaca oleh `astro-intlayer` di halaman dan oleh binding framework pulau yang Anda tambahkan, baik itu [React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_with_astro_react.md), [Vue](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_with_astro_vue.md), [Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_with_astro_svelte.md), [Solid](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_with_astro_solid.md), [Preact](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_with_astro_preact.md), atau [Lit](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_with_astro_lit.md).
|
|
665
|
-
|
|
666
|
-
</Question>
|
|
667
|
-
<Question title="Bagaimana cara mengatur routing terlokalisasi dan pengalih bahasa?">
|
|
668
|
-
|
|
669
|
-
Langkah 6 dan 7 dari panduan ini membahas hal ini. `routing.mode` menentukan apakah bahasa default mendapatkan prefix (`"prefix-no-default"`), semua bahasa mendapatkannya (`"prefix-all"`), atau bahasa terlepas dari path (`"no-prefix"`). `getLocalizedUrl` mengubah path saat ini ke bahasa target, menjaga pengunjung tetap di halaman yang sama.
|
|
670
|
-
|
|
671
|
-
</Question>
|
|
672
|
-
<Question title="Bagaimana cara membuat sitemap terlokalisasi dan tag hreflang?">
|
|
673
|
-
|
|
674
|
-
Langkah 8 membahas konfigurasi `sitemap.xml` dan `robots.txt`. Fungsi `getMultilingualUrls` menghasilkan alternatif untuk setiap locale yang dideklarasikan, termasuk `x-default`, agar mesin pencari mengindeks dengan benar.
|
|
675
|
-
|
|
676
|
-
</Question>
|
|
677
|
-
<Question title="Bagaimana cara menerjemahkan situs secara otomatis dengan AI?">
|
|
678
|
-
|
|
679
|
-
Jalankan `npx intlayer fill`. Perintah ini mengisi terjemahan yang hilang menggunakan LLM pilihan Anda dengan provider dan API key Anda sendiri, dan `--git-diff` membatasi proses ke file yang diubah. Lihat [perintah fill](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/fill.md) dan [integrasi CI/CD](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/CI_CD.md).
|
|
680
|
-
|
|
681
|
-
</Question>
|
|
682
|
-
<Question title="Apakah Intlayer mendukung bentuk jamak, gender dan rich text?">
|
|
683
|
-
|
|
684
|
-
Ya: [bentuk jamak (plurals)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/plurial.md), [konten berbasis gender](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/gender.md), kondisi, [penyisipan (insertions)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/insertion.md), dan [formatter](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/formatters.md) untuk angka, tanggal, dan mata uang.
|
|
685
|
-
|
|
686
|
-
</Question>
|
|
687
|
-
<Question title="Bagaimana penerjemah dapat mengedit konten tanpa menyentuh kode?">
|
|
688
|
-
|
|
689
|
-
Melalui [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_visual_editor.md), yang memungkinkan siapa saja mengedit teks langsung di aplikasi yang berjalan, atau melalui [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_CMS.md), yang memisahkan konten sehingga dapat diubah tanpa perlu redeploy kode.
|
|
690
|
-
|
|
691
|
-
</Question>
|
|
692
|
-
<Question title="Berapa biaya dari visual editor? Apakah berlebihan jika saya tidak membutuhkannya?">
|
|
693
|
-
|
|
694
|
-
[Visual editor Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_visual_editor.md) memiliki **biaya nol** pada aplikasi Anda jika tidak disiapkan. Logika tambahan hanya dimuat jika diaktifkan secara eksplisit dan dibutuhkan.
|
|
695
|
-
|
|
696
|
-
Bahkan jika diaktifkan, bebannya sangat ringan (+5 KB, dimuat secara dinamis hanya saat diaktifkan) karena sebagian besar logika ditangani oleh server editor di [app.intlayer.org](https://app.intlayer.org) atau melalui paket `intlayer-editor`. Jika Anda hanya memerlukan solusi terjemahan sederhana tanpa pengeditan visual, Intlayer tidak menambahkan overhead apa pun ke aplikasi Anda.
|
|
697
|
-
|
|
698
|
-
</Question>
|
|
699
|
-
<Question title="Apakah Intlayer gratis dan open source?">
|
|
700
|
-
|
|
701
|
-
Ya, di bawah lisensi Apache 2.0, termasuk penggunaan komersial. CMS yang di-host adalah layanan berbayar opsional yang juga dapat [di-host sendiri (self-host)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/self_hosting.md).
|
|
702
|
-
|
|
703
|
-
</Question>
|
|
704
|
-
|
|
705
|
-
</FAQ>
|