多言語化(Localization)
1つのサイトで複数の言語のコンテンツを配信できるようにするl10nプラグインです。ノートの言語を検出し、翻訳をまとめ、言語スイッチャーを公開します。
言語の検出方法
- frontmatterの
langフィールド。 - 設定されていれば、カスタムのdetect関数。
.ja.mdのようなファイル名の接尾辞。- 設定された既定言語。
追加されるもの
l10nオプションのリファレンス
l10nプラグインは、packages/plugins/l10n/src/l10n.ts で定義された次のオプションを受け付けます。
| オプション | 目的 |
|---|---|
defaultLang |
接頭辞なしのURLを使う言語。必須で、languages に含める必要があります。 |
languages |
認識する言語。ここに挙げた言語だけがロケールとして扱われます。 |
strict |
言語の競合や翻訳の重複をビルド失敗にします。 |
detect |
カスタム検出。{ lang, translationId } か undefined を返します。 |
import { l10n } from "@riebeckite/plugin-l10n";
export default defineConfig({
plugins: [l10n({ defaultLang: "ja", languages: ["ja", "en", "zh-CN"] })],
});
オプションの全一覧と実装上の注意はプラグインのREADMEにあります。
headタグの生成
l10nプラグインは、ノートの翻訳版ごとに hreflang リンクタグを生成します。タグはマニフェスト作成時にノートの headTags へ追加され、packages/plugins/l10n/src/l10n.ts の addLocalizationHeadTags 関数で定義されています。各翻訳エントリは、存在する翻訳1つにつき1つの <link rel="alternate" hreflang="…"> を受け取ります。サイトシェルがこれらのタグを描画し、リクエストに応じて <html lang> を選びます。
これはSEO pluginと組み合わせて動作し、SEO向けに言語の代替バージョンを出力します。