本文へスキップ
執筆
2025年12月 1 分で読めます

正気を保ったまま三言語に対応する

URL ベースのロケール、コンパイル時メッセージ、そして document の lang 属性が省略不可な理由について。

i18nSvelteKit

i18n 最大の誤りは、言語をランタイムの状態として扱うことです。URL に入れましょう。各ロケールが実在しクロール可能で共有可能なアドレスを持ち、hreflang は推測でなくなります。

コンパイル時のメッセージカタログは、翻訳漏れを本番の空白ではなくビルドエラーに変えます。型付きのメッセージ関数はこうなります:

import * as m from '$lib/paraglide/messages';

// ビルド時に解決される — キー欠落はページではなくビルドを失敗させる
const title = m.site_title();
const read = m.min_read({ minutes: 6 });

そして html の lang 属性をページごとに設定すること。スクリーンリーダーは音声を、検索エンジンは信頼をそこから得ます。英語を宣言した日本語ページは、見える語が全て正しくてもバグです。

コメント

コメントを読み込み中…