rfc-translater
rfc-translater copied to clipboard
RFCを翻訳するツール群 & 翻訳済みRFCサイト
RFC Translater
RFCを翻訳するツール群 & 翻訳済みRFCサイト
目的
- RFCの英語を読むのが辛いので、Google翻訳した文を横に並べたものを読みたい。 RFCの日本語訳リンク集では原文と日本語訳が別々のページで、日本語訳が正しいのか判断しにくい問題がある。
- RFCの本文は改行済みのため、改行を削除してからGoogle翻訳に貼り付けないと正しく翻訳されない。改行を削除する煩わしさを解決する。
流れ
- src/fetch_index.py: RFC一覧の取得。取得先: https://tools.ietf.org/rfc/index
- src/fetch_rfc.py: 個別RFCの取得。取得先: https://datatracker.ietf.org/doc/html/rfcXXXX
- src/fetch_rfc.py: セクション毎に分割 & 改行の除去
- src/trans_rfc.py: Google翻訳で英語を日本語に変換
- src/make_html.py: セクション毎に英文と日本語文を並べて表示するページの生成
- 人手: 有名なRFCやアクセス数の多いページは翻訳修正作業などを行う
注意事項
- 複数ページにまたがる図表は適切に解釈できない場合があります。
- 図や表の中に空行が含まれるときも適切に解釈できない場合があります。
- RFCのHTMLが例外的な構造になっている場合も適切に解釈できません (特に番号の小さいRFC)。
- 翻訳はRFC2220以降を対象とします (http://rfc-jp.nic.ad.jp/copyright/translate.html)。
翻訳を修正したいときは
当サイトをご利用いただきありがとうございます。 翻訳修正の手順は以下の通りです。
翻訳修正者
- html/rfcXXXX.htmlの翻訳を修正します。
-
見出しは
<h5 class="text mt-2">
を使います。1番目に英文、2番目に和文を書きます。<div class="row"> <div class="col-sm-12 col-md-6"> <h5 class="text mt-2"> 1. Introduction </h5> </div> <div class="col-sm-12 col-md-6"> <h5 class="text mt-2"> 1. はじめに </h5> </div> </div>
-
文章は
<p class="text indent-X">
を使います。「indent-X」classでインデントの深さを指定します。<div class="row"> <div class="col-sm-12 col-md-6"> <p class="text indent-3"> Hello, world! </p> </div> <div class="col-sm-12 col-md-6"> <p class="text indent-3"> こんにちは世界! </p> </div> </div>
-
図表やプログラムは
<pre class="text text-monospace">
を使います。英文のみです。<div class="row"> <div class="col-sm-12 col-md-12"> <pre class="text text-monospace"> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | Option Type | Opt Data Len | Option Data +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - </pre> </div> </div>
-
見出しは
- 修正したHTMLをブラウザで開いて正しく表示されるか確認します。
- GitHub上でPullRequestを出します。
管理者
- PullRequestの差分を確認し、HTML構造に問題がないか確認します。
- PullRequestのブランチをローカルにPullします。
-
python main.py --make-json --rfc <対象RFC>
でHTMLからJSONを逆作成し、変更差分を確認します。 -
python main.py --make --rfc <対象RFC>
でJSONからHTMLを作成し、変更差分を確認します。 - 問題点があれば
git checkout -- html/rfc<対象RFC>.html
で元に戻して、元データの JSON やプログラムの不備を調査します。 - 問題がなければMergeし、リモートにPushします。
開発者向け
実装機能
- 文章のみ翻訳し、図や表はそのまま表示する。
- 文章がページ区切りで分割されていても1つの段落として翻訳する。
- インデントの深さも反映させる。
- 箇条書き(o + * - など)の記号はそのまま表示する。
- 表題(1.2.~ など)は見出しとして文字を大きくする。
- 原本(英語RFC)へのリンクをスクロールしても常に表示する。
- 廃止されたRFCの場合、廃止されたことと修正版RFCへのリンクを表示する (例:RFC2246, RFC2616)。
動作環境
Python3 + Selenium (FireFox) on Windows / MacOS / Ubuntu (headless)
requests, lxml, beautifulsoup4, Mako, tqdm, seleniumなどのライブラリが実行に必要のためインストールしてください。Windowsの場合は、py -m pip に読み替えてください。
pip3 install -r requirements.txt
加えてSeleniumを動かすために以下のツールが実行に必要です。
- Windows: FireFox のサイトから geckodriver.exe をダウンロードし、src/trans_rfc.py から呼び出せるように環境変数 WEBDRIVER_EXE_PATH に exe のパスを設定ください。
-
Linux (Ubuntu) の場合は、以下のパッケージをインストールください。
sudo apt install python3-pip firefox sudo pip install selenium
実行コマンド例
注意:翻訳処理は非常に時間がかかります。1個のRFCを翻訳するのに短いものは5分、長いものは30分〜1時間程度かかります。 開発初期には複数のインスタンスを起動して同時並行で24時間回し続けたのを半年くらいしていました。
取得・翻訳・生成
python3 main.py --rfc 1234 # RFC1234を翻訳する(取得+翻訳+HTML生成)
python3 main.py --rfc 1234 --fetch # RFCの取得だけ
python3 main.py --rfc 1234 --trans # RFCの翻訳だけ
python3 main.py --rfc 1234 --make # HTMLの生成だけ
python3 main.py --begin 2220 --end 10000 # RFC2220〜10000を翻訳する
python3 main.py --make --begin 2220 --end 10000 # RFC2220〜10000のHTMLを生成する
python3 main.py # 未翻訳RFCを順番に翻訳する
python3 main.py --begin 8000 --only-first # RFC8000以降の未翻訳RFCを1つ選択して翻訳する
生成物:
ファイルパス | 説明 | 生成元プログラム |
---|---|---|
html/obsoletes.json | 廃止RFCの一覧 | fetch_index (取得) |
data/A000/rfcABCD.json | 段落区切りで文章化した情報 | fetch_rfc(取得) |
data/A000/rfcABCD-trans.json | 各文章の翻訳を付与した情報 | trans_rfc(翻訳) |
html/rfcABCD.html | 原文と翻訳を並べて表示するHTML | make_html(生成) |
トップページの生成
python3 main.py --make-index # インデックスページの作成
生成物:
ファイルパス | 説明 | 生成元プログラム |
---|---|---|
html/index.html | トップページ | make_index (生成) |
翻訳結果確認
ローカルで成果物の確認:
python3 -m http.server
# localhost:8000/htmlにアクセス
RFC Draft
RFCドラフトを翻訳することもできます。
python3 main.py --draft draft-ietf-quic-v2-04 # 指定したRFCドラフトの翻訳
python3 main.py --make-index-draft # Draft版のインデックスページの作成
その他
RFCを解析した結果、本来プログラムとして解釈すべき部分を文章として解釈してしまった場合、プログラムのインデントを削除してJSON化するツール: https://tex2e.github.io/rfc-translater/html/format.html