AstroGlass Astro-ның файлға негізделген маршрутизация жүйесін реттелмелі интернационализация (i18n) стратегиясымен біріктіріп пайдаланады.
Беттерді маршруттау
Беттер src/pages/ ішінде орналасқан. Папка құрылымы URL жолын анықтайды.
Оқшауланған беттер үшін біз бөлек каталогтарды пайдаланамыз:
- src/
- pages/
- […lang]/ — Динамикалық локаль маршрутизациясы
- index.astro — Басты бет (Барлық тілдер)
- [theme].astro — Динамикалық тақырып деңгейіндегі демо беттері (мысалы, /liquid, /kk/glass)
- [theme]/portfolio.astro — Динамикалық портфолио беттері
- blog/ — Блог беттері
- docs/ — Құжаттама беттері
- privacy.astro — Құпиялылық саясаты
- terms.astro — Қызмет көрсету шарттары
- 404.astro — /404 Қателік беті
- about.astro — /about (Аударылмаған)
- […lang]/ — Динамикалық локаль маршрутизациясы
- pages/
Тақырыптарды көрсету (Demo) маршрутизациясы
Тақырып беттері тақырыптар тізілімінен динамикалық түрде құрылады. src/config/themes.ts файлына enabled: true параметрімен тақырып қосу автоматты түрде /{themeId} мекенжайын жасайды.
Құжаттама маршрутизациясы
Құжаттама беттері src/content/docs/[lang]/ ішінде орналасқан:
- src/
- content/
- docs/
- en/
- ru/
- fr/
- es/
- ja/
- zh/
- kk/
- docs/
- content/
Құжаттамаға арналған URL автоматты түрде файл жолы негізінде құрылады, мысалы, /docs/kk/getting-started/introduction.
Интернационализация (i18n)
Аудармалар екі жолмен өңделеді:
- Динамикалық бетті маршруттау: Орталықтандырылған
src/pages/[...lang]/каталогыgetStaticPaths()арқылы барлық маршрут алмастыруларын динамикалық түрде өңдейді. - UI Мәтіндері:
src/locales/ішіндегі орталықтандырылған JSON файлдары.
UI аудармалары
Жалпы мәтіндер (навигация элементтері, батырмалар, секция мәтіні т.б.) секция бойынша ұйымдастырылған JSON файлдары ретінде сақталады:
src/locales/├── en/├── ru/├── fr/├── es/├── ja/├── zh/└── kk/Компоненттерде useTranslations көмекшісін пайдаланыңыз:
---import { useTranslations } from '../utils/i18n';import { getLocaleFromUrl } from '../utils/locale-utils';
const locale = getLocaleFromUrl(Astro.url);const t = useTranslations(locale);---<p>{t('hero.title')}</p><p>{t('pricing.tier2Name')}</p>Аударма кілттері ұяшықталған мәндер үшін нүктелі белгілеуді (dot notation) қолдайды. common.json кілттері түбірлік деңгейде орналасса, ал басқа файлдар файл атауы бойынша ажыратылады (мысалы, hero.title, pricing.plans).
Жаңа тіл қосу
-
Локальді тіркеу (локль)
src/config/locales.tsфайлынаenabled: trueетіп жазба қосыңыз. -
Аударма файлдарын жасау
Ағылшын тілінің құрылымына сәйкес келетін JSON файлдары бар
src/locales/{code}/каталогын жасаңыз. -
Құжаттама мазмұнын құру
Аударылған MDX файлдарымен бірге
src/content/docs/{code}/құрыңыз. (мысалы,src/content/docs/kk/getting-started/introduction.mdx) -
Блог мазмұнын құру
Аударылған Markdown/MDX файлдарымен бірге
src/content/blog/{code}/құрыңыз. (мысалы,src/content/blog/kk/my-post.md)
i18n жүйесі src/locales/ ішіндегі барлық JSON файлдарын автоматты түрде табу үшін Vite-тің import.meta.glob функциясын пайдаланады. Қолмен импорттаудың қажеті жоқ — файлдарды жасасаңыз, олар useTranslations() арқылы қолжетімді болады.