Pages

Ads 468x60px

2016年11月23日水曜日

日本語翻訳ファイル mo,qmの作成

linuxのソフトは国際化が進んでいて翻訳ファイル(moファイル)でローカル表示をしています
/usr/share/locale に翻訳ファイルが入っています
/usr/share/locale/ja が日本語用です

現状のmoファイルはテキストファイルではないので作業しやすいようにテキストファイルに変換します
gettext ソフトが使われています

1.moファイルはそのままでは編集できない
moからテキストファイルのfile.poへ変換
$msgunfmt file.mo -o file.po

2.file.poをテキストエディターで編集

3.編集済みfile.poをfile.moに変換
$msgfmt -o file.mo file po 

端末に
msgunfmt /usr/share/locale/ja/LC_MESSAGES/wizardwizard.mo -o /usr/share/locale/ja/LC_MESSAGES/wizardwizard.po
タイプするとwizardwizard.poが作成されます

テキストで開くと
msgid ""
msgstr ""
"Project-Id-Version: WixardWizard\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-31 20:56+0900\n"
"PO-Revision-Date: 2015-12-31 21:00+0900\n"
"Last-Translator: Masaki Shinomiya \n"
"Language-Team: 486HA \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Japanese\n"
"X-Poedit-Country: Japan\n"

msgid "Desktop"
msgstr "デスクトップ"

msgid "Printer"
msgstr "プリンタ"

msgid "Puppy Setup"
msgstr "パピーの設定"

これは"/usr/sbin/wizardwizard"の日本語化の為のファイルですので"/usr/sbin/wizardwizard"をテキストで開くと
#!/bin/sh
#Barry Kauler www.puppylinux.com
#2007 Lesser GPL licence v2 (http://www.fsf.org/licensing/licenses/lgpl.html)
#v411 modified network-connect button.
#100215 fix exit button.
#101019 added video upgrade wizard.
#120202 BK: internationalized.
#130216 BK: change text for mouse.
#131210 zigbert: gui (gtkdialog) improvements.

export TEXTDOMAIN=wizardwizard
export OUTPUT_CHARSET=UTF-8

[ -s /usr/sbin/pdesktop ] && BUTTON_33='<button image-position="2"><label>'$(gettext 'Desktop')'</label>'"`/usr/lib/gtkdialog/xml_button-icon windows.svg huge`"'<action>/usr/sbin/pdesktop &</action></button>' || BUTTON_33='<text><label>""</label></text>' export WizardWizard='
<window title="'$(gettext 'Puppy Setup')'" icon-name="gtk-preferences">
<vbox space-expand="true" space-fill="true">

$(gettext 'Desktop')   →   msgid "Desktop"
日本語表示   →    msgstr "デスクトップ"
$(gettext 'Puppy Setup')   →   msgid "Puppy Setup"
日本語表示   →    msgstr "パピーの設定"
上記のような法則があることがわかる

編集が終えたら 編集者と日付けを記入
"POT-Creation-Date: 2015-03-21 09:03+0900\n"     起表日   世界標準時
"PO-Revision-Date: 2016-03-21 09:05+0900\n"    修正日   世界標準時
"Last-Translator: damboard\n"    作者または修正者
"Language: Japanese\n"

編集後 file.poをfile.moに変換
msgfmt -o /usr/share/locale/ja/LC_MESSAGES/wizardwizard.mo /usr/share/locale/ja/LC_MESSAGES/wizardwizard.po

パピー固有のソフトはこのようにして 翻訳ファイルを作成することができます
ただパピーは英語圏の作者が多いので"gettext"が抜けているソフトがあり 実行ファイルの修正が必要なものもあります

オープンソースのアプリケーションは、メッセージの国際化にgettextを利用している場合が多いのですが、Qtを利用して作られたアプリケーションはQt自体にgettext的な機能を持っており、メッセージを翻訳するにはgettextと違った手順になります
簡易に作成する例として
ubuntu等のバックアップツール「Systemback(https://sourceforge.net/projects/systemback/)」は日本語表示がされていません
そこで
systemback_1.8.402_source.tar.xz を展開
/systemback_1.8.402/lang/systemback_zh_CN.ts をテキストで開く
systemback_zh_CN.tsは中国語の表示ファイルなので中国語の部分を日本語に変更
systemback_ja.ts として保存
端末より作成コマンド
lrelease-qt4 systemback_ja.ts
とタイプすると
systemback_ja.qm が作成されます
有効にする為
/usr/share/systemback/lang/systemback_ja.qm に配置する

tahrpup-6.0.5-JPNには"gettext"と"Qtの翻訳ソフト"を組み込んであります