FreeNASの言語ファイルの翻訳に協力するには、現行では GitHub を利用するらしい。
現行11.2-U7の22.Contributing to FreeNAS
https://www.ixsystems.com/documentation/freenas/11.2-U7/contribute.html
に従って設定してみた。
なお、11.3-RC1のドキュメント
https://www.ixsystems.com/documentation/freenas/11.3-RC1/contribute.html
でも同様の記述なので、次のバージョンでの日本語化を進めたい方は参加してみてもいいのではないでしょうか?
また、Legacy UIについては、
https://www.ixsystems.com/documentation/freenas/11.2-U7-legacy/contribute.html
によると、
Weblate
https://weblate.org/en/
を利用していたらしいんだけど、FreeNASのプロジェクト
https://weblate.trueos.org/projects/freenas/
はすでに利用できない模様。
現在は、GitHubを使ってwebuiが共有されている。
https://github.com/freenas/webui
で、このリポジトリに翻訳のしかたの説明があるので試してみた。
README.md
FreeNAS 11 WebUI
これは、FreeNAS 11用の新しい angular.io WebUIのプロジェクトです。現在のFreeNAS 11 Django / Dojo WebUIと共存することを意図しています。
開発に必要な環境
・ yarn >= 1.12
・ Node.js >= 8.9
・ 稼働している FreeNAS 11 Nightly (仮想マシンでOK)
・(元のドキュメントには書いてないけど FreeBSD 11)
yarnとNode.js のバージョンについては知らない。
Angular を利用して、逐次翻訳結果を反映させることができるらしい。そのために、稼働しているFreeNAS 11 Nightly のマシン(仮想マシンでやるのがやっぱり楽かな)と、翻訳結果のテキストを差し替える動作をするFreeBSD 11のマシンが必要。現在だと、FreeNASは 11.3 MASTER 。12 でも同様の手が使えそうな気はするけど、次のリリースで反映される可能性を考えたらUIの翻訳は、最新のリリースのMASTERブランチを追いかけるのがいいのではないかと。12を試してみたところ、つながりはするもののダッシュボードからちゃんと表示されない。まあ翻訳プロジェクトは、本体の機能が揃ってからが本番な気もするのでこれで終了。
FreeNAS 11 Nightly の準備
https://download.freenas.org/11.3/MASTER/ から最新のISOを取ってきてインストールするのが手っ取り早いか。とりあえずいつものようにESXi上に仮想マシンを設定してインストールして起動してIPアドレスを確認しておく。
GitHubのi18nのファイル群には「PO File automated PR 20191229 master」って表示されているので、20191229の FreeNAS-11.3-MASTER-201912290956-23a3dc7.iso を使うのがいいかも。Nightly Buildなので、動作しなければ少し前の日付のにするとか臨機応変に。20191231と20200102で動作を確認。
FreeBSD 11 の準備
(元のドキュメントでは明示されていないけど、Angularを動作させて翻訳結果を確認するためにFreeBSD 11以降が必要になる。FreeBSD の構築自体についても何もアドバイスされていない。ざっとググったけど、シンプルにまとめられているページにヒットしなかったので、ESXi上に仮想マシンを公式に沿って設定)
第2章 FreeBSD のインストール
https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/bsdinstall.html
ISOファイルを取得
https://download.freebsd.org/ftp/releases/ISO-IMAGES/11.3/
より
FreeBSD-11.3-RELEASE-amd64-disc1.iso
このためだけのFreeBSDなのであまり環境構築する気がないし、どうせあとは pkg で依存関係に従ってインストールされるんだろうから、DVDイメージじゃなくていいだろう、と。minimalでもいいのかもしれないが、それを試すことが目的ではないので未確認。
あと、11.2ではなく11.3にしたのもなんとなく。11.2は過去リリースになってるっぽいので。
ISOイメージをESXiのデータストアにアップロードする。
新規仮想マシン 標準 その他 FreeBSD (64ビット)
ディスクは 40GB の Thin Provision
完了前に仮想マシンの環境を編集
メモリ4GB、CPUコア2、
新規 CD/DVD に データストアISOファイルで先ほどのISOファイルを指定して、パワーオン時に接続
終了
コンソールを表示してパワーオン
ほとんどデフォルトでいきたいところだけど、キーボードがjp106じゃないとあとで設定ファイルをいじったりするときに記号キーの違いで気が遠くなるので選択しておく
Keymap Selection
下の方にある
Japanese 106
までカーソルを移動してEnter(Select)
Continue with jp.kbd keymapでEnter
ホスト名設定 適当に決めてEnter
Destribution Select そのままEnter
Partitioning そのままEnter
Partition そのままEnter
Partition Scheme そのままEnter
Partition Editor そのままEnter
Confirmation そのままEnter
しばらく経つと白黒の画面になり、rootのパスワード設定。
適当に設定する。
同じのを2回入力
Network Configuration そのままEnter
もういちどそのままEnter、Enter
Would you like to configure IPv6 for this interface? →、Enter(No)
そのままEnter
Time Zone Selector
5 Asia に合わせて Enter
18 の Japan に合わせて Enter
Confirmation
Does the abbrevation 'JST' look reasonable? Enter
Time & Date Enter、Enter
System Condifuration Enter
System Hardening Enter
Add User Accounts →、Enter(No)
Final Configuration Enter
Manual Configuration Enter
Complete Enter
これで再起動する。
再起動後、rootでログインして、
dhcpの取得結果は
arp -a
で確認できる。
(このIPアドレスに後でアクセスしてUIの言語書き換えを確認する)
環境設定
FreeBSDにrootでログインしている状態で続ける。
yarnのインストール
# pkg install yarn
y[Enter]
y[Enter]
gitのインストール
FreeNASのGitリポジトリをチェックアウトするのですが、先ほどのセットアップのFreeBSDにはGitはインストールされていないので。
pkg install git
y[Enter]
FreeNASのwebuiのリポジトリをチェックアウト
$ git clone https://github.com/freenas/webui.git $ cd webui
yarn パッケージをインストール
$ yarn install
環境設定スクリプトを実行
ターゲットとなる 11 Nightly の走ってるFreeNASのIPアドレスを指定する。
$ ./setup_env.js -i <ip address or FQDN of the server where FreeNAS is running>
# ./setup_env.js -i 192.168.0.96
みたいな感じ。
設定ファイルの変更
このままだと、ローカルウェブサーバーを外部から参照できないので、他のマシンのブラウザから確認したい場合は、
webui/package.json
の
の12行目に
"start": "yarn run ie-support && yarn run po2json && node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng serve --proxy-config proxy.config.json --aot --source-map",
という記述があるので、これを書き換える。
"start": "yarn run ie-support && yarn run po2json && node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng serve --host=0.0.0.0 --proxy-config proxy.config.json --aot --source-map",
とする。
なお、上記(serve のあとに --host=0.0.0.0 の追加)だけではうまくいかないときは、
--disable-host-check
も追加するらしい。うまくいったので未確認。
実行
yarn start
これにより、新しいWebUIのローカルウェブサーバーが稼働するらしい。このウェブサーバーが実行している間は、プロジェクトの更新はインクリメンタルに反映されるらしい。
** Angular Live Development Server is listening on 0.0.0.0:4200, open your browser on http://localhost:4200/ **
? ?wdm?: Compiled with warnings.
と表示されると準備完了。
(0.0.0.0:4200のところがlocalhost:4200となっている場合は、webui/package.json の書き換えができてない。ちゃんと"start":の行に追記しているかチェック。)
うまくいっていれば、別のWindows マシンなどからブラウザで、
http://このFreeBSDのIPアドレス:4200
で新UI(というか指定した言語ファイルが反映されている状態)を試せる。
で、このサーバー上の webui/src/assets/i18n にある
ja.po
を書き換えることで反映結果を確認しながらUIの翻訳ができるっぽい。
とはいえFreeBSD上で翻訳作業などできないので、
SSHを有効にして、WindowsのSSHクライアントから翻訳済みのja.poファイルを転送することにした。
SSHでリモートログインを許可する
「etc/rc.conf」への追加
sshd_enable="YES"
PermitRootLogin yes
PasswordAuthentication yes
面倒なのでrootでのログインを許可します。
rebootすると反映される
rloginなどのWindows用sshクライアントソフトで接続し、
rloginのsftpでWindowsマシン上で編集済みのja.poで上書きする。
転送すると、検知してなんかやってるみたいだけど、
タイムリーにUIに反映されないので、
[Ctrl]+[C]で一旦サーバーを止めて、
もう一度、
# yarn start
の方がよさそう。
(ビルドに時間かかるので、ある程度マシンパワーは割り当てた方がいいかも)
で、翻訳し終わったpoファイルを、Gitでコミットしてプルリクエストを送るか、
GitHubにログインして、当該poファイルのページで鉛筆アイコンをクリックして
オンラインエディタで編集してプルリクエストを送るという感じでしょうか。
無事マージされれば、次のFreeNASの日本語化が進むかと。
(Gitはあんまり詳しくないのでまだ手探り)
なお、
https://github.com/freenas/webui/blob/master/src/assets/i18n/README.md
によると、言語ファイルを更新したらこちらのファイルもアップデートして欲しいみたいです。
FreeNAS 11 Nightly の上で、JailでFreeBSDを使って翻訳環境を構築できたりしないかな、とチラッと思ったけど試してない。
英語表示では11.3 MASTERはこんな画面ですが、翻訳環境でUIを上書きすると、
ただ、プールとかジェイルとかカタカナにするしかない項目が多いのと、テキストが日本語になっていると、検束しても情報が見つからないのではないかと危惧しています。
また、翻訳ファイルの生成方法の都合か、同じ英単語は同じように翻訳されるので、使われている場所によっては意図と違う意味になってしまう、という問題点も指摘されています。
どうしてもと言う場合は、ソースコードの方の英語の文字列を区別がつくように書き換えるプルリクエストを送らなければならないかも知れませんね。
--
追記
FreeNAS上で、Jailでやってみたけど、動くことは動くみたい。
ただ、試したのがCPUパワーのあるFreeNASじゃないので、ESXiの仮想マシンの方が遥かにビルドが早いので、FreeNASでやる必要性がない感じ。
(パワフルなFreeNAS機なんてもってないけど)