Hellow Worldを日本語化する


UTF-8ソースの使い方を参考に漢字コードとして UTF-8 を使えば日本語アプリを作成することができるが、ここでは gtk 流の国際化の方法を紹介する。

Glade で生成されたソースには gettext を使った国際化機能が内臓されている。これを使って日本語化しよう 。

(1)messages.po ファイルの作成
glade は po ディレクトリに POTFILES.in というファイルを生成してるはずだこれが getttext 化されてるcファイルのリストだ。
このファイルから po ファイルを作成するには xgettext を使う。MSYS 環境で以下のようにすればいい。
$cd /i/Dev-Cpp/projects/projects/hellow_w/
$xgettext -k_ -f po/POTFILES.in -o po/messages.po

(2hellow_w.mo の作成
message.po ファイルを ja.po にコピー編集する。ユニコードが使えるエディタを使って。 caraset= を UTF-8 にして msgstr に日 本語をいれていけばよい。
----(ja.po)----
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2004-06-08 00:41+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: ..\src\interface.c:36 ..\src\interface.c:38
msgid "Hellow World !!"
msgstr "こんにちは世界"

#: ..\src\support.c:90 ..\src\support.c:114
#, possible-c-format
msgid "Couldn't find pixmap file: %s"
msgstr "ピクセルマップが見つかりません: %$s"
---- ----
次に これを msgfmt にかける。
$msgfmt ja.po -o hello_w.mo

(3)hello_w.mo の配置
hello_w.mo を置く位置は、(実行ファイルがある位置)\share\locale\ja\LC_MESSAGES\hello_w.moだ。

これで"実行 / コンパイル&実行"をすれば以下のようにメッセージが日本語化される。
gtk2 glade 1 日本語
 
 
(不定期コラム)glibを使って機種依存性を無くそう

gbooleanという型が本文中でてきたがこれはどこで定義されてるのか?

基 本的な型が<glib.h>で再定義されてる。これを使うようにすれば基本的な型の機種依存性(たとえはintの大きさが32ビット なのか64ビットなのか等)を気にしないでよくなる。
基本的な関数もglib内部で定義されている。strdupはg_strdup()、 malloc()はg_malloc()という具合だ。
g_error(); g_waring(); g_message(); g_print(); g_strdup(); g_strerror(); g_malloc(); g_malloc0(); g_realloc(); g_free(); タイマ 関数など多量にあるのでできるだけ使用するようにしよう。

僕もつい慣れし親しんだ基本的な関数や型を使ってしまうが、こういうのを使ってGTK2らしいプログラミングを目指してほしい。



このHPの内容について問題があればsけいしまでご連絡願います。
sけいし(s_keishi@yahoo.co.jp)
DevCPPの使い方に戻る
sけいし発HPに戻る
inserted by FC2 system