連絡先 トップに戻る 最初に戻る
$Date: 2017-05-06 22:21:48 +0900 (2017/05/06 (土)) $
$Revision: 1117 $

Subversion の ja.po を更新する

概要

Subversion では gettext によって、表示されるメッセージは各言語用に変換されて 表示されます。表示されるメッセージが格納される po ファイルの更新方法を説明します。

Subversion の翻訳に関するドキュメント

必要な環境

po ファイルの更新

cygwin のインストール

Windows 上で作業したい場合、gnu make や gettext 等がすべて利用可能な cygwin 環境で行うのがもっとも簡単です。UNIX 系のOS の場合、シェルを 起動して、コマンドを入力すれば OK です。

http://www.cygwin.com から setup.exe を取得して インストールする。

最新のソースコードのメッセージを po ファイルに反映

Start Menu から cygwin Bash Shell を起動して以下のコマンドを 入力する。
$ ./autogen.sh
$ ./configure
$ make locale-gnu-pot
$ make locale-gnu-po-update PO=ja

po ファイルの修正のときに気をつけること

c-format

printf の書式指定文字列を含むメッセージであることを示します。

fuzzy

locale-gnu-po-update で po ファイルを更新すると、fuzzy キーワードを 含むエントリーが作成されることがあります。この場合翻訳者がメッセージを 確認して、修正後 fuzzy キーワードを削除します。

po ファイルを msgmerge で更新したときに、英語のメッセージがちょっとだけ 変更されたことにより、曖昧になったことを表しています。 fuzzy というキーワードのあるメッセージは、翻訳されず英語のまま表示されます。

具体例

以下のようにメッセージが変更された場合を説明します。

libsvn_ra_dav => libsvn_ra_neon に名前変更されたために、このメッセージが 変更されました

元々の po ファイルの内容
#: libsvn_ra_dav/session.c:578
msgid "Module for accessing a repository via WebDAV (DeltaV) protocol."
msgstr "WebDAV (DeltaV) プロトコルを使ってリポジトリにアクセスするモジュール。"
make locale-gnu-po-update 実行後の po ファイルの内容
#: libsvn_ra_neon/session.c:578
#, fuzzy
msgid "Module for accessing a repository via WebDAV protocol using Neon."
msgstr "WebDAV (DeltaV) プロトコルを使ってリポジトリにアクセスするモジュール。"
翻訳メッセージを、正しいものに修正して fuzzy キーワードを削除します。
#: libsvn_ra_neon/session.c:578
msgid "Module for accessing a repository via WebDAV protocol using Neon."
msgstr "Neonを利用して WebDAV (DeltaV) プロトコル経由でリポジトリにアクセスするモジュール。"

参考

c-format の文字列で曖昧になった場合以下のようになります。
#: libsvn_fs_fs/fs_fs.c:651
#, fuzzy, c-format
msgid "Format file '%s' contains an unexpected non-digit"
msgstr "'%s' の 1 行目に数字以外が含まれています"
この場合 メッセージを直してから fuzzy を削除します。
#: libsvn_fs_fs/fs_fs.c:651
#, c-format
msgid "Format file '%s' contains an unexpected non-digit"
msgstr "format ファイル '%s' に予期しない数字以外が含まれています"

po ファイルのコンパイル

以下のコマンドを実行して po ファイルをコンパイルします。
$ make locale
/usr/bin/msgfmt -c -o subversion/po/ja.mo subversion/po/ja.po
/usr/bin/msgfmt -c -o subversion/po/ko.mo subversion/po/ko.po
/usr/bin/msgfmt -c -o subversion/po/nb.mo subversion/po/nb.po
/usr/bin/msgfmt -c -o subversion/po/pl.mo subversion/po/pl.po
/usr/bin/msgfmt -c -o subversion/po/pt_BR.mo subversion/po/pt_BR.po
/usr/bin/msgfmt -c -o subversion/po/sv.mo subversion/po/sv.po
/usr/bin/msgfmt -c -o subversion/po/zh_CN.mo subversion/po/zh_CN.po
/usr/bin/msgfmt -c -o subversion/po/zh_TW.mo subversion/po/zh_TW.po
ここでエラーが発生した場合、変更した po ファイルを修正します。

翻訳状況の確認

このスクリプトは svn revert を呼ぶようなので自分が翻訳を 追加したときに作業の確認に使用することはできないみたいです。
[hogehoge@localhost trunk]$ python ./tools/po/l10n-report.py

Translation status report for trunk r26631

  lang   trans untrans   fuzzy     obs
--------------------------------------
    de    1564      88     128      52
    es    1642      10      16     155
    fr    1652       0       1       0
    it    1645       7      18       6
    ja    1608      44      81     345
    ko    1580      72     104      51
    nb    1589      63      89      58
    pl    1648       4       4       2
 pt_BR    1608      44      75      36
    sv    1560      92     127      51
 zh_CN    1652       0       2       1
 zh_TW    1540     112     175     122

You have not passed '-m' option, so email is not sent.

リンク