hypersig_i18n クレート
1 つの文はその訳を 1 つの値にまとめて持つので、どれかの訳が欠けた文はコンパイルエラーになります。言語は各ページのルートの一部で、/ はブラウザが求める言語のページへリダイレクトします。
文は言語ごとに 1 つのフィールドを持つ構造体なので、日本語の訳がない文や、文を書かずに足した言語はコンパイルエラーになります。
言語はページのルートの最初のセグメントなので、別の言語のページへのリンクも、ほかのリンクと同じく検査されます。
文はただの構造体のリテラルで、言語はただの enum です。欠けているものは、コンパイラの通常の検査が見つけます。
文の日本語を書き忘れると、その行がコンパイルエラーになります。言語の宣言のしかたは 概要 で説明します。
// error[E0063]: missing field `ja` in initializer of `ByLang<_>`
let title = ByLang { en: "Settings" };このサイトもこのクレートで翻訳しています。どのページも同じ Rust の関数から言語ごとに 1 回ずつレンダリングしています。