MDN翻訳ツールについて:その3

この記事はMDNとかをみんなで編集!翻訳! Advent Calendar 2018 - Adventarの 17日目の記事です。
昨日はic_lifewoodさんのCSP: base-uri | MDN(https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Security-Policy/base-uri)でした。
グレ蔵さん、さいきんあまり絡めてないですが、お元気でしょうか?
明日はいないので…あさってはKenji Yamasakiさんのアドオンをサイドローディングする - Mozilla | MDNです。
Kenji Yamasakiさんは今年のmonthlyミーティングにもよく来られて(リモートなんでリアルでお会いしたことないかな)、
MDNもSUMOも積極的に活動されてます。新しい人も古い人も、できる人ができる範囲で頑張れる、そんなのがオープンソースコミュニティのいいところですね。

実はこの週末に元MJ六本木オフィスの近くを通りかかりました。まだWebDINOのオフィスにお邪魔したことないので一回機会を持ちたいですね。

さて、今日は3日目(2018-12-05 - Uemmra3のフルスタックエンジニア?日記)と
10日目(MDN翻訳ツールについて:その2 - Uemmra3のフルスタックエンジニア?日記)にお伝えしたMDN翻訳ツールのいいところをお伝えします。

README(translation/README.md at master · mozilla-japan/translation · GitHub)には

新規翻訳
● 見出しのidを英語のままにするためのname属性付与(参考)
● 自動翻訳もとい置換
◯ 見出しや互換性表などのよくある語句
◯ アルファベットと日本語の間に半角スペースを自動挿入
◯ 実装・継承するプロパティ・メソッドがないことを示す文
◯ The hogehoge interface → hogehoge インターフェイス
● /en-US/docs/ → /ja/docs/
● 翻訳中フラグをオフに、編集レビューをオンに
● タグを元記事からコピー
● 編集コメントに元記事のリビジョン番号を自動入力

とあり、メインの機能である自動翻訳機能
● 自動翻訳もとい置換
◯ 見出しや互換性表などのよくある語句
◯ アルファベットと日本語の間に半角スペースを自動挿入
◯ 実装・継承するプロパティ・メソッドがないことを示す文
◯ The hogehoge interface → hogehoge インターフェイス
をご紹介しましょうか。

◯ 見出しや互換性表などのよくある語句
については、MDNの見出しや互換性表には、よくあるパターンが決まっています。
たとえばソースコード(TranslationHelper.user.js
)の
このあたり(https://github.com/mozilla-japan/translation/blob/99ce920f2896aedcd6ce00bcd9f1d4f6988c7936/MDN/TranslationHelper.user.js#L116-L121)
を見て、英語版の

見出しで、「Specifications」となっているものは「仕様」に変換します(詳細は略)。
同じく

で「Examples?」を「例」にします。
末尾に「?」が付いてるのは正規表現で、Example も Examples も例になるハズ。

◯ アルファベットと日本語の間に半角スペースを自動挿入
これは
「Webの進化」を
「Web の進化」とかにする変換です。
アルファベットと日本語の間にスペースを入れるか入れないかはスタイルにもよりますが、
スペースつきのほうが見やすいという声があった気がするのでこのようにしています。
ちなみにすべての漢字を表す正規表現がわからないので現状はひらがな・カタカナとアルファベットの間だけに対応してるハズ

◯ 実装・継承するプロパティ・メソッドがないことを示す文
◯ The hogehoge interface → hogehoge インターフェイス
この2つはこのへんですね(https://github.com/mozilla-japan/translation/blob/99ce920f2896aedcd6ce00bcd9f1d4f6988c7936/MDN/TranslationHelper.user.js#L210-L223)。
要は単純な単語ではなく、定型文的な文章を自動変換します。

少し年末進行で、ていねいなスクショが添付できませんが、、、
今日はメインの機能である自動翻訳機能についてお伝えしました。
よくわからない場合はGitHubにあるソースコードをcloneしていろいろいじくってみてはいかがでしょうか。
もちろん質問や、コードのPRなどもお待ちしています。

では!

ではでは。