Astro: はじめに
パッケージをインストールする
セクションタイトル “パッケージをインストールする”vp add @lingui/core lingui-for-astrovp add -D @lingui/cli @lingui/conf unplugin-lingui-macronpm install @lingui/core lingui-for-astronpm install -D @lingui/cli @lingui/conf unplugin-lingui-macropnpm add @lingui/core lingui-for-astropnpm add -D @lingui/cli @lingui/conf unplugin-lingui-macroyarn add @lingui/core lingui-for-astroyarn add -D @lingui/cli @lingui/conf unplugin-lingui-macroAstro を設定する
セクションタイトル “Astro を設定する”import { defineConfig } from "astro/config";import linguiForAstro from "lingui-for-astro/integration";import linguiMacro from "unplugin-lingui-macro/vite";
export default defineConfig({ integrations: [linguiForAstro()], vite: { plugins: [linguiMacro()], },});Lingui を設定する
セクションタイトル “Lingui を設定する”import babelExtractor from "@lingui/cli/api/extractors/babel";import { defineConfig } from "lingui-for-astro/config";import { astroExtractor } from "lingui-for-astro/extractor";
export default defineConfig({ locales: ["en", "ja"], sourceLocale: "en", catalogs: [{ path: "src/lib/i18n/locales/{locale}" }], extractors: [astroExtractor, babelExtractor],});カスタムのマクロパッケージ名、空白処理、実行時警告の切り替えなど、Astro 固有のオプションが必要な場合は、framework.astro フィールドを設定してください。
詳細は フレームワーク設定 を参照してください。
出力モードに応じて Lingui を初期化する
セクションタイトル “出力モードに応じて Lingui を初期化する”server と hybrid 出力では、ページが描画される前にミドルウェアから setLinguiContext を呼びます。
ここで、そのリクエスト向けのコンパイル済みカタログを読み込みます。
import { defineMiddleware } from "astro:middleware";import { setupI18n } from "@lingui/core";import { setLinguiContext } from "lingui-for-astro";import { catalog } from "./lib/i18n/catalog";
export const onRequest = defineMiddleware((context, next) => { const locale = resolveLocale(context); // 独自のロケール解決ロジック const i18n = setupI18n({ locale, messages: catalog }); setLinguiContext(context.locals, i18n); return next();});.astro でマクロを使う
セクションタイトル “.astro でマクロを使う”---import { Trans, t } from "lingui-for-astro/macro";---
<h1>{t`Hello from Astro`}</h1><p><Trans>Macro-first translation in Astro</Trans></p>次に読むページ
セクションタイトル “次に読むページ”Astro.localsが i18n インスタンスをどう保持するか、静的サイトとリクエスト依存の初期化がどう違うか、手動でどうアクセスするかは i18n コンテキスト を参照してください。- クライアントフレームワークのアイランドで翻訳が必要なら アイランドを使う を参照してください。
- サーバーと実行時の境界については Astro の注意点 を参照してください。