コンテンツにスキップ

Glib-gettext

出典: フリー教科書『ウィキブックス(Wikibooks)』

GNU glib-gettext は、gettext ライブラリを使って Glib ベースのプロジェクトで国際化(i18n)を実現するためのツールとマクロ群です。Glib や GTK プロジェクトでよく利用され、アプリケーションやライブラリで多言語対応を簡単に実現します。

概要

[編集]
  • gettext: GNU プロジェクトの一部で、多言語対応のためのメッセージカタログを管理し、翻訳されたメッセージを実行時に提供します。
  • glib-gettext: Glib プロジェクト向けに最適化された gettext サポートを提供します。

これにより、C 言語で書かれた Glib ベースのアプリケーションで、翻訳ファイルを効率的に使用し、多言語対応を簡素化できます。

特徴

[編集]
  1. Glib 向けの gettext 拡張
    • Glib プロジェクトに特化したマクロや関数を提供し、gettext の統合をスムーズに行えます。
  2. 便利なマクロ
    • Glib のメッセージ変換を簡単に記述できるマクロを用意しています。
    • 例: _()N_() のようなショートカットが利用可能。
  3. Glib 特有のツールチェーンのサポート
    • glib-gettextize ツールを使ってプロジェクトの国際化対応を簡単に設定。

Glib における gettext の基本的な使い方

[編集]

翻訳用マクロの利用

[編集]

C プログラム内で以下のように gettext マクロを使用します。

  • _(): 翻訳可能な文字列を指定。
  • N_(): 翻訳対象としてマークするが、即時には翻訳しない(たとえば配列やデータ構造での利用に便利)。
#include <glib.h>
#include <locale.h>

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "");
    bindtextdomain("myapp", "/usr/share/locale");
    textdomain("myapp");

    g_print(_("Hello, World!\n"));
    return 0;
}

プロジェクトの初期化

[編集]

glib-gettextize ツールを使うことで、Glib プロジェクトの国際化を簡単に設定できます。

  1. プロジェクトディレクトリに移動
    cd myproject
    
  2. glib-gettextize の実行
    glib-gettextize
    
    このコマンドにより、以下のファイルが生成されます:
    • po/ ディレクトリ: 翻訳ファイル用ディレクトリ。
    • 必要なマクロが configure.ac に追加されます。
  3. Autotools 再生成
    autoreconf -i
    

翻訳ファイルの管理

[編集]

翻訳の設定と作成には、gettext ツールチェーンを使用します。

  1. テンプレートファイル(POT ファイル)の生成
    xgettext -k_ -o po/myapp.pot *.c
    
  2. 翻訳ファイル(PO ファイル)の作成
       msginit -i po/myapp.pot -o po/ja.po --locale=ja
    
  3. コンパイル済み翻訳ファイル(MO ファイル)の生成
    msgfmt -o /usr/share/locale/ja/LC_MESSAGES/myapp.mo po/ja.po
    

ツール: glib-gettextize

[編集]

glib-gettextize の機能

[編集]
  • Glib プロジェクトで gettext を簡単に統合するための設定を自動化するツールです。
  • 以下を行います:
    • 必要なマクロの追加。
    • po/ ディレクトリの作成。
    • テンプレートファイルや設定の初期化。

使い方

[編集]
glib-gettextize

これにより、必要な設定がプロジェクトに適用されます。

Glib + gettext のメリット

[編集]
  1. シンプルな統合
    • Glib 向けに最適化されたマクロとツールにより、gettext を簡単に統合可能。
  2. マルチプラットフォーム対応
    • gettext と Glib の組み合わせにより、Linux、macOS、FreeBSD、Windows など多くの環境で利用可能。
  3. メンテナンスの効率化
    • 翻訳ファイルの管理が標準化され、多数の言語をサポートするプロジェクトでもスケーラブル。

関連ツールと参考資料

[編集]

まとめ

[編集]

Glib-gettext は、Glib をベースにしたアプリケーションやライブラリで多言語対応を容易に実現するためのツールとマクロのセットです。gettext を活用し、シンプルかつ効率的に国際化を実現できます。これにより、ユーザーの母国語でのインタラクションが可能になり、アプリケーションの使いやすさが向上します。