すべてをまとめる — 演習

この演習では、これまでに学んだことをすべて組み合わせて、 Chromium のまったく新しい機能を追加します。

プロダクトマネジメントからの依頼

人里離れた熱帯雨林に暮らすピクシーのコミュニティが発見されました。できる だけ早く彼らにピクシー向け Chromium を届けることが重要です。

要件は、Chromium の UI 文字列をすべてピクシー語に翻訳することです。

適切な翻訳を待っている時間はありませんが、幸いにもピクシー語は英語に非常 に近く、翻訳を行う Rust crate があることがわかっています。

実際、その crate は前の演習であなたがすでにインポートしています

(もちろん、Chrome の実際の翻訳には並外れた注意と入念さが必要です。これ は出荷しないでください!)

手順

ResourceBundle::MaybeMangleLocalizedString を変更して、表示前にすべて の文字列を uwu化するようにしてください。この特別な Chromium ビルドでは、 mangle_localized_strings_ の設定に関係なく、常にこれを行うようにする 必要があります。

これらの演習を通してすべてを正しくできていれば、おめでとうございます。あ なたはピクシー向け Chrome を作り上げたことになります!

uwu 言語の Chromium UI のスクリーンショット
ここでは学生にいくつかヒントが必要になるでしょう。ヒントの例:
  • UTF-16 と UTF-8。Rust の文字列は常に UTF-8 であることを、学生は認識し ておく必要があります。そのため通常は、base::UTF16ToUTF8 を使って C++ 側で変換し、また戻す方がよいと判断するでしょう。
  • 学生が Rust 側で変換することにした場合は、String::from_utf16、 エラーハンドリング、そして多数の u16 を転送できる CXX 対応型 のど れを使うかを検討する必要があります。
  • 学生は C++/Rust 間の境界を、いくつか異なる方法で設計するかもしれません。 たとえば、文字列を値渡しで受け取り値として返す方法や、文字列への可変参照 を受け取る方法です。可変参照を使う場合、CXX はおそらく学生に Pin を使う必要があると伝えるでしょう。Pin が何をするのか、そ して C++ データへの可変参照に対して CXX がそれを必要とする理由を説明す る必要があるかもしれません。答えは、C++ のデータには自己参照ポインタが 含まれている可能性があるため、Rust のデータのように移動させることができ ないからです。
  • ResourceBundle::MaybeMangleLocalizedString を含む C++ ターゲットは、 rust_static_library ターゲットに依存する必要があります。学生はおそら くすでにこれを行っています。
  • rust_static_library ターゲットは、次に依存する必要があります。 //third_party/rust/uwuify/v0_2:lib