AstroGlass использует файловую маршрутизацию Astro в сочетании с пользовательской стратегией интернационализации (i18n).
Маршрутизация страниц
Страницы расположены в src/pages/. Структура папок определяет URL.
- src/
- pages/
- […lang]/ — Динамическая маршрутизация локалей
- index.astro — Главная (Все языки)
- [theme].astro — Демо-страницы тем (/liquid, /ru/glass)
- [theme]/portfolio.astro — Страницы портфолио
- docs/ — Страницы документации
- blog/ — Страницы блога
- privacy.astro — Политика конфиденциальности
- terms.astro — Условия использования
- 404.astro — Страница ошибки 404
- […lang]/ — Динамическая маршрутизация локалей
- pages/
Маршрутизация документации
Документация находится в src/content/docs/[lang]/:
- src/
- content/
- docs/
- en/
- getting-started/
- introduction.mdx
- installation.mdx
- getting-started/
- ru/
- getting-started/
- introduction.mdx
- getting-started/
- en/
- docs/
- content/
Интернационализация (i18n)
Переводы обрабатываются двумя способами:
- Динамическая маршрутизация страниц: Централизована в
src/pages/[...lang]/, обрабатывает все языки динамически черезgetStaticPaths(). - UI-строки: Централизованные JSON-файлы в
src/locales/.
UI-переводы
Используйте хелпер 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>Добавление нового языка
- Зарегистрируйте локаль в
src/config/locales.tsсenabled: true. - Создайте файлы переводов в
src/locales/{code}/. - Создайте контент документации в
src/content/docs/{code}/. - Создайте контент блога в
src/content/blog/{code}/.
ℹ️
Автоматическое обнаружение
Система i18n использует import.meta.glob для автоматического обнаружения JSON-файлов. Просто создайте файлы — они будут доступны через useTranslations().