プログラミング

GLib Ref. translation progress (TAKE 5).

第四章の途中まで翻訳が完了した:

  • 文字列のユーティリティ関数
  • 文字集合の変換
  • Unicode の取り扱い
  • Base64 のエンコーディング
  • データのチェックサム

このうち最後の二つは前の翻訳 (GLib バージョン 2.8 系) 以降に追加されたユーティリティ関数 (それぞれバージョン 2.12 と 2.16) で、翻訳の ChangeLog は次のとおり:
文字列のユーティリティ関数

  • 前の翻訳では文字数でカウントしていた関数が全てバイト数でカウントするよう仕様が変わった。
  • UTF-8 エンコーディングの文字列の場合は別の g_utf8_*() を使うこと:
    • g_strdup()
    • g_strnfill()
  • g_strcmp0、g_ascii_strtoll ()が追加された
  • 返り値が文字数からバイト数へ変更された:
    • g_printf()
    • g_vfprintf()
    • g_sprintf()
    • g_vsprintf()
    • g_vasprintf()
    • g_ascii_strncasecmp()
  • 引数が文字数ではなくバイト数で in/out するようになった:
    • g_snprintf()
    • g_vsnprintf()
  • 標準関数に対するmanページへのリンクを追加した

文字集合の変換

  • 日本語訳の見直し
  • g_filename_to_utf8() の説明が増えたので翻訳した
  • g_filename_display_name() はベンダ依存文字などを使っているため妥当なエンコーディングを検出できない場合、Unicode の置換文字 (U+FFFD) で置き換えるようになった

Unicode の取り扱い

  • GLib のバージョン毎にサポートしている Unicode バージョンが異なる
  • 日本語訳の見直し
  • gucharmap のja.poとの統一と修正
  • 新しい関数が追加された:
    • g_unichar_ismark()
    • g_unichar_iswide_cjk()
    • g_unichar_iszerowidth()
  • pangoの関数と等価なものがいくつかある
  • g_utf8_offset_to_pointer() の @offset で負の値を指定できるようになった

Base64のエンコーディング
データのチェックサム

  • 新規の翻訳

See Also GLib リファレンスマニュアル: v2.18.1 版の API リファレンス (翻訳中)
See Also SVN リポジトリ: 翻訳作業の SVN リポジトリ
See Also GLib Utilities: オリジナルのドキュメント (第四章)
See Also バグ報告と追跡: 翻訳バグなどの報告はこちらへどうぞ
引き続き第四章の翻訳を進めていく予定。

GLib Ref. translation progress (TAKE 4).

第三章の翻訳が完了した。翻訳中に GTK-Doc ツールのアップデートがあったので、新しいバージョンでコンパイルしておいた。
ちなみに ChangeLog はというと:
メイン・イベント・ループ

  • 前の翻訳の Copy & Paste で済むだろうと思ったけど、念のため通しで読んでみると結構誤訳が残っていた。読みづらい文章なども校正してみた。
  • g_timeout_source_new() や g_timeout_add (ミリ秒) の秒版が追加されていた。
  • g_main_current_source() なんてのも追加されている。リクエストが多かったんだなぁ。


スレッド

  • 説明の訳を全体的に見直した。
  • g_thread_foreach () が追加された。

スレッド・プール

  • スレッド・プールの中にあるタスクを並べ替える関数を指定できるようになったので、スレッド・プールでタスクを実行する順番を制御できるようになったが、スケジューリングするのはOSだから意味あるのかなぁ。
  • 新しいタスクとして起動する前のアイドル時間を制御できる関数が追加された。

非同期キュー

  • 説明の訳文を校正した。

モジュールの動的な読み込み

  • 日本語訳の見直し。

メモリの割り当て
IOチャンネル
メッセージの記録

  • 日本語訳の見直しと誤訳の修正。

メッセージの出力とデバッグ関数

  • 説明が追加された。
  • g_warn_if_*()関数が追加された。
  • g_assert_*()関数がなくなった。
  • x86 以外のアーキテクチャでも G_BREAKPOINT() マクロを利用できるようになった。

See Also GLib リファレンスマニュアル: v2.18.1 版の API リファレンス (翻訳中)
See Also SVN リポジトリ: 翻訳作業の SVN リポジトリ
See Also GLib Core Application Support: オリジナルのドキュメント (第三章)
See Also バグ報告と追跡: 翻訳バグなどの報告はこちらへどうぞ
次の章からはセクションが増えてくるので数回に分けて報告する予定。

GLib Ref. translation progress (TAKE 3).

第二章の翻訳が完了した。
前のと比較すると、更新内容はというと「その他のマクロ」で新しいマクロが追加されたことと誤訳/誤植の修正 (最大値を最小値と翻訳していたり)。
See Also GLib リファレンスマニュアル: v2.18.1 版の API リファレンス (翻訳中)
See Also SVN リポジトリ: 翻訳作業の SVN リポジトリ

GLib Ref. translation progress (TAKE 2).

第一章の翻訳が完了した。
この章で最大の難関は、GLib バージョン 2.13 で実装された GRegex の機能に関して、PCRE ベースな Perl の正規表現の文法を説明した正規表現の文法というセクション。その実体は man 3 pcrepattern と同等の内容なんだけれど、この原文がひどかった。まるで呪文のような英語。そのまま読んで理解して日本語に直すには時間がかかりそうだったので、だれか先に手を付けていないか調べてみるとなんと、ありましたSo cool! 8)。そこで公開しているものは PHP 向けに翻訳されたもののようで、若干バージョン違いがあるものの、先人の成果に感謝しつつ、全体的に参考にさせていただいた。ありがとうございました。原文は語彙が狭く、一般的な使い回しではない単語が多々あったため、辞書とにらめっこすることで途方もない時間を消費せずにすんだのは大変助かった。
ちなみに、configure のオプションで説明しているように、GLib では PCRE ライブラリの任意のバージョンの実装を GLib のユーティリティ (Unicode やメモリ管理関連) を使って書き直している。PCRE_* で始まるような定数なんかも G_REGEX_* で置き換えたりしてシームレスな実装を提供していて、原則的には GLib 埋め込みの正規表現サポートを推奨している。
See Also GLib リファレンスマニュアル: v2.18.1 版の API リファレンス (翻訳中)
See Also SVN リポジトリ: 翻訳作業の SVN リポジトリ

Devhelp new feature.

devhelp の Emacs/Vim 連携に新しい機能が追加されたそうだ。なんか面白そうなのでメッセージ・カタログの更新も兼ねてビルドしてみた。
従来は [F6] キーでカーソル位置にある単語を devhelp -s KEYWORD という Lisp インタフェースに渡し、devhelp を起動して表示していた:

devhelp-search-20081026.png

今回新しく追加された機能は DevHelp アシスタント という小さなウィンドウの中にインクリメンタル検索に近い (まだ完全ではないように思える) 結果を表示するというもの。この機能が ON になっている時 (デフォルトでは [F6] キーで ON/OFF を切り替える) に、関数名や型名、構造体名といった GTK-Doc でサポートしているキーワードを入力し [TAB] キーを押すと入力したところまでで検索した結果を・ウィンドウに表示する:

devhelp-assist-20081026.png

久しぶりに ffmpeg を使って、彼のブログ同様に、screencast を撮ってみた:

devhelp-assistant-in-action

しかし実際のところ需要はあるかな、この機能 :X
ところで devhelp は通常 $datadir/gtk-doc/html 配下にインストールされているドキュメント (ブックと呼ぶ) を閲覧したりキーワード検索することができるようになっているので、独自に翻訳したドキュメントなんかもコピーするなりリンクをはるなりして同様に参照できる。その場合ディレクトリが重複することになるのだけれど別名で問題ない。但し、GTK-Doc で生成した .devhelp2 というファイルをディレクトリ名と同じ名前がついた DIRNAME.devhelp2 に変更しておく必要がある。英語と日本語と重複したブックの場合、検索結果は先に読んだ英語の方が優先される。