Internacionalizace
Starter je z krabice jen v angličtině, ale i18n engine je plně zapojený, takže můžete přidávat jazyky bez toho, abyste cokoli přearchitektovávali.
Jak to funguje
Section titled “Jak to funguje”i18n systém stojí na třech vrstvách:
- Vestavěné i18n Astra — locale routing nakonfigurovaný v
astro.config.ts - Pole locale u kolekcí obsahu — každý záznam obsahu deklaruje svůj
locale - Překladové soubory — UI řetězce žijí v
src/i18n/<locale>.json
Jediný zdroj pravdy pro aktivní locale je src/config/i18n.config.ts
(zrcadlený v src/lib/site-config.ts a astro.config.ts).
UI překlady
Section titled “UI překlady”UI řetězce žijí v src/i18n/en.json a čtou se přes helper t():
---import { t } from "../i18n/ui";const locale = (Astro.currentLocale || "en") as "en";---<p>{t(locale, "nav.home")}</p>t() spadne zpět na samotný klíč, když řetězec chybí, takže dev buildy selžou
hlasitě, když překlad chybí.
Přidání nového locale
Section titled “Přidání nového locale”-
Rozšiřte typ v
src/lib/site-config.ts:export type Locale = "en" | "id"; -
Zaregistrujte locale v konfiguračních souborech:
src/lib/site-config.ts locales: ["en", "id"] as const,localeLabels: { en: "English", id: "Indonesia" } as const,localePrefixes: { en: "en", id: "id" } as const,// src/config/i18n.config.ts → locales: ["en", "id"]// astro.config.ts → i18n.locales + sitemap.i18n.locales -
Přidejte překladový soubor
src/i18n/id.jsona zaregistrujte ho vsrc/i18n/ui.ts:import id from "./id.json";export const translations = { en, id }; -
Přidejte lokalizovaný obsah nastavením frontmatteru
localena kopii každého záznamu (např.about.mdproen,about.id.mdproid) a rozšiřte enumlocalevsrc/content.config.ts. -
Přidejte prefixované routy pod
src/pages/[locale]/pro non-výchozí locale (výchozí locale se servíruje v kořeni bez prefixu).
Jakmile je zaregistrovaný druhý locale, přepínač jazyků v hlavičce se objeví automaticky.