Rust公式ドキュメントの多言語対応について
はじめに
ここしばらくRustの公式ドキュメントの多言語対応についての活動をいろいろしていました。
ここで言う公式ドキュメントとは https://doc.rust-lang.org でホストされているドキュメント群のことで、"The Rust Programming Language" や "Rust By Example" など多くのドキュメントが存在します。各ドキュメントの翻訳については各地域のRustコミュニティあるいは個人がそれぞれ個別に行っている状況が長く続いてきました。
ですが、この1年で "Rust By Example" の日本語版 を公式から公開することができました。他の言語や他のドキュメントについても同様にできればいいのではないかと思い動いてきましたので、現在の状況と今後の見通しなどをまとめてみます。
Rust By Example
Rust By Exampleについては、日本語版がマージされたころに他言語向けに翻訳されているリポジトリにIssueを立てに行き、公式へのマージを呼びかけました。
ポルトガル語と中国語の方がそれぞれ興味を示してくださり、中国語の方にはすぐに移植作業を始めていただくことができました。
中国語版は現在betaまで来ているので、2025/1/9予定の Rust 1.84 でstableとして公開される予定です。
The Rust Programming Language
The Rust Programming Languageについては公式版をホストしているGitHubリポジトリに対して翻訳フレームワークを導入するPRを出しました。
ですが、こちらは著者の方から翻訳版の更新PRをレビュー・マージするコストについて懸念が示されました。確かにこのリポジトリにはすでに多くのPRがたまっている状態ですし、"asyncの章"を追加するなど多くの作業が予定されており、これ以上時間をかけられないというのはもっともです。
これについてはGitHub Actionsによる自動マージなどでコストを低減できるのではないかとコメントしましたが、他ドキュメントでも同様の状況になると思われ、もっと根本的な解決として次の提案に移行しました。
翻訳サブリポジトリの追加
現在取り組んでいるのが、 rust-lang/rust に翻訳のデータベースだけを含んだサブリポジトリを追加する、というものです。
Rustの公式ドキュメントのビルドはRustコンパイラのビルドプロセスの一部として行われており、任意の前処理・後処理を追加することが可能です。そこで翻訳データベースだけを含んだサブリポジトリを別途用意し、そこに翻訳リソースがある場合はドキュメントビルドに割り込んで翻訳版を追加する処理を挟むようにしています。これにより、各ドキュメント側での対応は一切不要で翻訳版を追加できる仕組みが作れると考えています。
比較的大きな変更になるのでマージされるとしてもそれなりに時間がかかるかな、と思っています。とりあえずレビュワーからの最初のコメントは「いまはやってる余裕がないけど、いずれ入れられるといいね」という感じでやんわり断られおり、先は長そうです。
おわりに
Rust公式ドキュメントの多言語対応について現状と今後の見通しをまとめました。根本的な仕組みを変えるのはなかなか時間がかかるので、来年も引き続きやっていきたいと思っています。
Discussion