[#49148] Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます — Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>

はじめまして。横塚と申します。

16 messages 2013/01/29

[ruby-list:49128] [ANN] gettext 2.3.7

From: Haruka Yoshihara <yoshihara@...>
Date: 2013-01-11 07:06:35 UTC
List: ruby-list #49128
吉原と申します。

gettext 2.3.7をリリースしました。

gettextはGNUのgettextパッケージをモデルに実装した地域化(L10N)用の
ライブラリとツール群です。
バージョン2.3.0からはプロジェクトでメンテナンスしています。

今回のリリースでは、rmsgmergeコマンドのfuzzy-matching機能を改善しました。

fuzzy-matchingとは、もともとあるPOファイルに、新しい翻訳対象文字列(以
下、msgid)を含むPOTファイルをrmsgmergeコマンドでマージするときに、POの
中のmsgidと似ているPOTファイルのmsgidに対して、POにある該当するmsgidに
あてられた翻訳(以下、msgstr)を新しい翻訳として使用するというものです。
これは、msgidにtypoがあって、POファイルを作りなおすときに便利です。

簡単な例を示すと、まず次のようなPOファイルがあったとします。

$ cat old.po
#: test.rb:10
msgid "helol" # typoしている
msgstr "こんにちは"

これは、test.rbの10行目に"helol"という文字列があり、その翻訳として"こん
にちは"があてられていることを示します。
しかし、"helol"はtypoなので、test.rbの10行目の"helol"を"hello"に修正し、
rxgettextコマンドでPOTファイルを作り直します。

$ rxgettext test.rb -o new.pot

結果のPOTファイルは次のようになります。

$ cat new.pot
#: test.rb:10
msgid "hello"
msgstr ""

このPOファイルとPOTファイルをrmsgmergeコマンドでマージすると次のようになります。

$ rmsgmerge old.po new.pot
#: test.rb:10
#,fuzzy
msgid "hello"
msgstr "こんにちは"

結果を見ると、typoが修正され、さらに"こんにちは"という翻訳が、修正後の
msgidである"hello"にあてられていることがわかります。
なお、上記の中にある"fuzzy"という文字列は、自動で翻訳を割り当てたことを示すフラグです。

このように、fuzzy-matching機能があると、翻訳をし直す作業を減らすことが
でき、作業が楽になります。
今回のリリースはこのfuzzy-matching機能の速度を改善しました。
本来ならfuzzy-matchingの対象にならないエントリ(上記の例で出てきたよう
な、msgidとmsgstrの組)までマージ対象としていたのを修正しました。
また、rmsgmergeコマンドで生成したPOファイルに、余計な"fuzzy"フラグがつ
くことがあったのを改善しました。

Web: http://ruby-gettext.github.com/
インストール: gem install gettext

2.3.7からの変更点は以下のとおりです。

## 2.3.7: 2013-01-11

### 改善

  * [msgmerge] fuzzy-matchingを高速化した。

### 修正

  * [msgmerge] POの中のfuzzyでないエントリにfuzzyフラグがつくバグを修正
    した。
  * [POEntry] msgstr以外のメッセージ(msgidなど)が整形表示されていなかっ
    たのを修正した。

---
Haruka Yoshihara <yoshihara@clear-code.com>

In This Thread

Prev Next