16
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vim2Advent Calendar 2019

Day 23

Vim ヘルプの日本語翻訳プロジェクトにコントリビュートするために必要な技術

Last updated at Posted at 2019-12-22

Vim ヘルプの日本語翻訳プロジェクトに contribute するために必要な技術

何か OSS に貢献したいと思っていた私が、Vim help を翻訳するために使った技術を紹介したいと思います。
(初心者向けの記事です)

これらの技術さえ覚えれば、誰でも OSS にコントリビュートできる!

まずはドキュメントをしっかり読む

Vim help の翻訳作業にあたっては、その作業手順や注意事項に対して、非常に丁寧な解説が、有志の方によって準備されています。
まずは、これらの作業手順や注意事項に、しっかりと目を通しましょう。

Vim 付属のヘルプを日本語に翻訳するためのプロジェクト

必読ドキュメント(作業手順等)

翻訳するドキュメントを宣言する (作業の重複を避ける)

2019/12/21 現在、以下の issue において、未翻訳ファイル情報の一覧が、有志の方によって提供されています。
また、作業が重複しないように、翻訳すると決めたファイルをここで宣言しましょう。

未翻訳ファイル情報を貼り付けたり、「今からこのファイルを翻訳するぜ」と意思表示する場所 (1)

今回私は、 editing.txt の修正を行うことに決めました。

fork and git clone

まずは、プロジェクトのレポジトリを fork します。
github のページから、 自分の github アカウントへ、 vim-jp/vimdoc-ja-working を fork します。

その後、自分のローカル環境に、fork したレポジトリを clone します。
例えば、私のアカウントだと、

git clone https://github.com/hnishi/vimdoc-ja-working.git

作業環境の整備

基本的には、以下に記載されている内容を行います。

Guide · vim-jp/vimdoc-ja-working Wiki · GitHub

私は、.vimrc に以下のように追記しました。

.vimrc
" vim-plug
" https://github.com/junegunn/vim-plug
if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

call plug#begin()
Plug 'vim-jp/autofmt'
call plug#end()
" do :PlugInstall to install plugins

" for translate vimdoc
" https://github.com/vim-jp/vimdoc-ja-working/wiki/Guide
hi Ignore ctermfg=red
" autofmtの設定例
set formatexpr=autofmt#japanese#formatexpr()  " kaoriya版では設定済み
let autofmt_allow_over_tw=1                   " 全角文字がぶら下がりで1カラムはみ出すのを許可
" command gq to format by autofmt
" 以下のいずれかで、はみ出た部分の色を変える。
syn match Error /\%>79v.*/
set cc=+1
" ファイル形式
" 文字コードは UTF-8
" 改行文字は UNIX 形式(\n)
set modifiable
set fileencoding=utf-8 fileformat=unix

はじめに、 autofmt というフォーマットするためのプラグインを導入するために、 vim-plug という vim plugin マネージャーをインストールしています。
以下のように .vimrc に書いておくことで、 ~/.vim/autoload/plug.vim が存在しない場合に、自動でインストールされるようになっています。

if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

以下で、autofmt を vim-plug で install するように設定しています。
後からプラグインを追加する場合は、.vimrc を更新して、 :PlugInstall でインストールできます。

call plug#begin()
Plug 'vim-jp/autofmt'
call plug#end()

set formatexpr=autofmt#japanese#formatexpr()
let autofmt_allow_over_tw=1

autofmt が入った状態で、gq コマンドを vim で実行すると、78文字目で簡単に改行できるようになります(後述)。

また、注意点として、vim-plug でプラグインをインストールする際に、以下の設定が原因でエラーが出ました。

set fileencoding=utf-8 fileformat=unix

エラーメッセージ

Error detected while processing /root/.vimrc:
line  121:
E21: Cannot make changes, 'modifiable' is off: fileencoding=utf-8
Press ENTER or type command to continue

modifiable が off になっていたので、以下のように on になるように .vimrc に追記しました。

set modifiable

その他の設定は、Guide に記載の通りです。

作業用の branch を作る

作業用のブランチを作って、そこで翻訳作業を行います。
例えば、

git checkout -b update-editing

英語版ヘルプの update 差分を確認する

作業手順 にあるように、まずは、vim 本体の英語 txt ファイルを、vimdoc-ja-working/en/ にコピーします。
git diff で、差分を確認することができます。

対応する日本語ドキュメントを修正する

vimdoc-ja-working/doc/editing.jax

のように、英語に対応する日本語のファイルがあるので、英語版の差分を見ながら、変更箇所を修正します。

ちなみに、.jax という拡張子は、単にヘルプの言語の種類を示しているようです。

日本語に翻訳されたvimエディタのヘルプをインストールして使用する。 — 名無しのvim使い

今回、私が担当した editing.txt の修正は、

MS-DOS, Win32 and OS/2 --> Win32

と置換するだけの簡単な修正でした。
ただ、置換すると1行あたりの文字数が変わってしまうため、改行する位置を変更する必要がありました。

(MS-DOS、OS/2 と Win32 での既定値) では、<CR><NL> と <NL> の両方が <EOL> と解
釈される。 Note DOS 形式でファイルを保存するときには、<NL> 1 個ごとに対して
<CR> が追加されることに注意。|file-read| も参照。

これを修正すると、1行あたりの文字数が変わリます。

autofmt を使えば、(Win32 での既定値) ではから始まる行にカーソルがある状態で、gq2j と実行することで、以下のように1行あたり78文字までになるように、自動でフォーマットしてくれます。

(Win32 での既定値) では、<CR><NL> と <NL> の両方が <EOL> と解 釈される。 Note
DOS 形式でファイルを保存するときには、<NL> 1 個ごとに対して <CR> が追加されるこ
とに注意。|file-read| も参照。

修正したファイルをブラウザでプレビューする

レポジトリのルートディレクトリで、

make html

を実行すると、
例えば、 target/html/doc/editing.html のように、html が生成されます。
ただ、全ての help の html を生成するので時間はかかります。
この、html をダブルクリックで、ブラウザで修正したファイルを確認することができます。

もしくは、.jax ファイルを vim で開いて

:TOhtml|wq editing.html|q

を実行することで、カレントディレクトリに editing.html が作成されます。

ただし、この方法だと、ハイパーリンクなどは、ちゃんと処理されません。

git commit and git push

修正した変更を commit します。
例えば、

git commit -a -m "update editing.{txt,jax}"

フォークしたレポジトリに、現在のブランチを push します。

git push origin update-editing

PR の作成

github 上のページから、プルリクエスト (PR) を作成します。
先ほど push したブランチを、vim-jp/vimdoc-ja-working の master に対して、PR を作成します。

Review を受ける

この後、 レビューを受けて、問題なければマージされます。

まとめ

  • Vim help の翻訳を行ってみました
  • 出来るだけ初心者でもわかるように、手順を整理してみました
  • git, vim の知識があれば、誰でも Vim help の翻訳に Contribute できることがわかりました!(後、ほんのちょっと英語)
16
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?