2010年10月22日金曜日

AWKの国際化対応機能 i18n(Gawk専用) - AWK

AWKの関数、変数、制御文 ▲
**** 国際化対応の手引き
Windows用のmsgfmtを入手する方法(gettext)


**** 組み込み関数
bindtextdomain
dcgettext
dcngettext


**** 関連する変数
TEXTDOMAIN


**** 関連する拡張表現
_(アンダーライン) = 国際化する文字列を指定する(Gawk専用)


**** メモ
o AWKプログラムで使用する文字列を、翻訳ファイルを使って置き変える事が出来る機能です。
o Gawk専用の機能ですが、今の所、Windows版Gawkで動作確認出来ていません。

**
o 10月28日現在、Windows版のGawk2つ共、文字列切り替えに失敗中です。
   + bindtextdomain 関数でディレクトリを指定しても、moファイル(= 翻訳ファイル)を認識してくれない模様です。
   + そして、Windowsにおける既定のメッセージ置き場の場所が分かりません。


==
関連ページ:
    ▼AWKの関数、変数、制御文(▼ABC順)
    ▼AWKプログラムを書く
    ▼AWK
    ▼制作メモ
    > ▼AWKのパターンと制御文
    ▼AWKの配列操作関数と関連機能

複数の初音ミクを明確に区別する方法 - 初音ミク

初音ミクの精神衛生 ▲
初音ミクを2人(= 2製品)以上揃えると、人によっては、個々の認識で苦労する事があります。
全員、初音ミクですから。

そのような時は、個別に呼び方を変えてみると、頭の中がすっきりします。


**** 呼び方の例
o 例えば、初音ミクとねんどろいど初音ミクを持っていて、頭の中で区別する場合
o 製品全体を指す時は
   + 初音ミク
   + ねんどろいど初音ミク
o 自分が持っている製品を指す時は
   + (うちの)ミクさん
   + (うちの)ねんどろいどミクさん


**** メモ
o 作曲中に、複数の初音ミクトラックや初音ミクオブジェクトを区別したくなった時にも便利です。
o 実際に呼ぶ事が無くても効果があります。
   + 名前を付ける事で、個々の初音ミクを別のものとして認識し易くなります。
o 上の呼び方は一例です。
   + 「ミクさん」という言葉は、初音ミク全体を指す事があります。
   + 実際に読み書きする時は、状況に応じて使い分けます。
o 区別しなくても混乱しない方は、呼び方を変える必要はありません。


==
関連ページ:
    ▼初音ミクの精神衛生
    ▼初音ミクで作曲する
    ▼初音ミク
    ▼制作メモ
    > パソコンの電源を気軽に切れなくなった時の対応方法
    ねんどろいど初音ミクの首関節が折れた時の治療手順
    初音ミクの頭を撫でる方法
(2010年10月26日追加。作曲への適用)

2010年10月21日木曜日

_(アンダーライン) = 国際化する文字列を指定する(Gawk専用) - AWK

AWKの国際化対応 <▲
○Gawk on Windows ○Gawk ×mawk32 ×Mawk ×awk
AWKプログラムの国際化対応は、国際化したい文字列の前に「_」(アンダーライン)を入れる事から始まります。
o 国際化対応は、Gawk専用の機能です。


**** 書式
--------
_"国際化したい文字列"
--------

o 国際化したい文字列 -- 日本語や英語など、環境によって置き換えたい文字列


**** 使用例
--------
BEGIN {
print _"Miku-san" " 393";
print _"Negi";
}
--------

o この例の場合、" 393" は国際化しません。
o ちなみに、葱に相当する英語は、英国の leek / 米国の green onion


**** 機能
o 国際化したい文字列を指定します。
   + 指定する文字列は、半角の英数記号が理想です。
   + 全角文字に指定すると、翻訳作業する時に全角文字が記号化するからです。
   + 具体例は、下のメモ欄をご覧ください。
o 翻訳ファイルを作って所定の位置に置くと、設定した言語に応じて文字列が切り替わります。
o 翻訳ファイルが無い時は、文字列がそのまま表示されます。
o この機能をサポートしていない処理系があります。
   + ですので、複数のAWK処理系で動かしたい時は、この機能を使う事は出来ません。


** 処理系に依存する動作
o この機能をサポートしている処理系は、次の通りです。
   + Gawk on Windows 3.1.7
   + Gawk for Windows 3.1.6


**** メモ
o リソースファイルの置き場所を変更したりしたい時は、専用の関数を使います。

** おまけ。翻訳作業の流れ
o 翻訳前のAWKプログラム
--------
BEGIN {
print _"Miku-san";
print _"ミクさん";
}
--------

o 必要に応じて、bindtextdomain 関数などを呼び出します。
o 全角文字の "ミクさん" に指定すると、翻訳が大変です。理由は、下を見ると分かります。

o 「-W gen-po」オプションで生成する翻訳作業用ファイル
--------
#: test.awk:2
msgid "Miku-san"
msgstr ""

#: test.awk:3
msgid "\203~\203N\202\263\202\361"
msgstr ""
--------

o 全角文字の「ミクさん」が記号化しています。
o この作業用ファイルの、msgstr に翻訳後の文字列を入れていきます。
o 翻訳が終わったら msgfmt ツールを使って moファイル形式に変換し、所定の場所に配置します。


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3 -- 非対応
o Mawk for Windows 1.3.3 -- 非対応
o original = the one true awk(updated May 1, 2007) -- 非対応


==
関連ページ:
    ▼AWKの国際化対応 i18n
    ▼AWKプログラムを書く(▼ABC順)
    ▼AWK
    ▼制作メモ
    > ▼AWKのパターンと制御文