ページ 11

シェルスクリプトの日本語化

Posted: 13/04/21(日) 12:58
by シノバー
パピー独自の小さなアプリの多くはシェルスクリプトで書かれています。
昔はこれらを日本語化するのに、メッセージ部分を日本語に書き換えるなどで対応していました。
しかし最近は gettext による国際化に移行しています。gettext化されたシェルスクリプトの日本語化についてのメモ。

既存の mo ファイルから po ファイルを作るなどのツール Edit-mo は→ viewtopic.php?f=25&t=2276

また最近のパピーに組み込まれている MoManagerを使う方法もある。devxも必要。

以下はpoeditを使ったもの。poedit-1.4.2-4.sfs が http://shino.pos.to/party/bridge.cgi?puppy/opt/ にある。
Precise Puppy の場合は http://shino.pos.to/party/bridge.cgi?puppy/precise/opt/ にある poedit-1.4.6.1-1-presice.sfs 。

参考: poEdit で翻訳ファイルを作る

大きな流れ
手順1: 端末からのコマンドでpotファイルを作る。
例: /usr/sbin/dotpup を確認すると、始めの部分に export TEXTDOMAIN=dotpup とあるから、作るべき potファイルは dotpup.pot。

コード: 全て選択

# xgettext --lang=shell /usr/sbin/dotpup -o - > dotpup.pot
これをGUIで実行する PoConvert を作りました。2つ先の記事。

手順2: poファイルを作る。poedit のメニュー「ファイル」→「potファイルを元に新しいカタログを作成」
 例 dotpup.pot を選び、言語を「Japanese」、国を「Japan」とする。dotpup.po として保存。
手順3: moファイルを作る。各文の日本語訳を書き込み、保存すると dotpup.mo ができる。
手順4: moファイルを /usr/share/locale/ja/LC_MESSAGES に置く。例: /usr/share/locale/ja/LC_MESSAGES/dotpup.mo

poeditによる自動翻訳

Posted: 13/04/21(日) 14:24
by シノバー
poeditを使う大きなメリットは、その自動翻訳機能。
すでに gettextによる翻訳 moファイルがある場合、既訳のものは、この自動翻訳機能で再利用できる。

poeditのメニュー「編集」→ preferences → 翻訳メモリで、「利用できる言語」として ja(japanese) を追加、「データーベースの作成」を行なう。

こうしておくとカタログ(poファイル)作成・更新時、また poeditのメニュー「カタログ」→ 翻訳メモリを利用して自動翻訳 ができる。といっても、候補として挙げられるだけなので、各文ごとに内容を精査しなければならない。

PoConvert

Posted: 13/05/06(月) 13:12
by シノバー
さきの手順でシェルスクリプトからpotファイルを作成するところが面倒なので、GUI化。486HAさんのEdit-Moに触発され、PoCovertなるものを作りました。

添付のものを解凍、実行属性を付けます。どこに置いてもよいが、パスの通る /root/my-application/bin などに置くとコマンドラインからも使えます。devx あるいは poeditも必要。

使い方はシェルスクリプトを poconvert のアイコンの上にドラッグ・アンド・ドロップ。potファイルが作成されます。
このpotファイルを poconvert のアイコンの上に落とすと po ファイルができます。poファイルに翻訳を加え、ふたたび poconvert のアイコンの上に落とすと mo ファイルに変換されます。逆に moファイルから poファイルに逆変換もできます。

シェルスクリプト → pot → po ←→ mo

生成されるファイルは元ファイルと同じフォルダ内に作られます。作業用フォルダを用意して、そこにシェルスクリプトをコピーして作業するのが良いでしょう。
poファイルを poedit で編集するときは poedit の言語を japanese、国を JAPANに 設定してください。

さて、すでに mo あるいは poファイルがあって、それを更新する場合の手順を記します。
1. 作業用フォルダにシェルスクリプトとmoファイルをコピーする。
2. 作業用フォルダにあるmo ファイルを poconvert のアイコンの上に落とす。poファイルができる。
3. 作業用フォルダにあるシェルスクリプトを poconvert のアイコンの上に落とす。potファイルができる。
この時点でpotファイルは新しいもの、poファイルは古いもののまま。
4. potファイルを poconvert のアイコンの上に落とす。古いpoファイルが更新される。
5. 更新されたpoファイルの未翻訳部分などを追加修正。
6. poeditを使うと保存時にmoファイルも更新されるが、他のテキストエディタなどの場合は、更新されたpoファイルを poconvert のアイコンの上に落として moファイルを更新する。

Re: シェルスクリプトの日本語化

Posted: 13/05/07(火) 22:56
by 486HA
Poconvertorを早速いただいて試してみました。
poconvertor 自体がgettext形式になっているので拙い日本語化を行ってGoogle-driveに上げておきました。
例のmo-editについてもmoからpoに変換したときのデフォルト・エディターがpoeditになるように変更してみました。
mo-editはgettext形式ではなく、ja_JP:japaneseでローカライズを図る別方式のためエディターでの手作業です。
poconvertorは/usr/sbinに収め、任意のファイルをrox-filerの右クリックで開けるように対処してみました。
使用例:
1、potファイルを生成するスクリプトを右クリックして[open with]のpconvertをクリックする。
2、スクリプトと同じディレクトリィにpotファイルが生成される。
3、potファイルを右クリックして[open with]のpoeditをクリックして起動する。
poconvertor-1.0-ja.sfs
https://docs.google.com/file/d/0BxoqlpB ... hwSGM/edit
poconvertor-1.0-ja.pet
https://docs.google.com/file/d/0BxoqlpB ... NZTE0/edit

mopedit + poedit + poconvertor
mopo-poeditor-1.0-ja.sfs
https://docs.google.com/file/d/0BxoqlpB ... locXM/edit
mopo-poedit-1.0-ja.pet
https://docs.google.com/file/d/0BxoqlpB ... cwdTA/edit