エンド・ユーザー向けのプログラムは、 エンド・ユーザーの母国語に対応する必要があります。 このような機能については古くから提案があり、 Xchars
(see Xchars and Unicode)や Substitute (see Substitute)
などの国際文字セットに関する他の提案から分割されました。 画面に表示されるメッセージは、 開発者の母国語(native
language)からユーザーの現地言語(local languages)に翻訳する必要があります(訳注: gforth
に最初から組み込まれていないので都度 require i18n.fs
等する必要ある。 本マニュアルに掲載が無いが i18n な
日付用として require i18n-date.fs
するのもいいかもしれない)。
翻訳対象の文字列は L"
string"
で宣言します。 これにより、
ロケール文字列識別子(LSID)が返されます。 LSID は不明瞭なタイプ(opaque types)であり、 スタック上のセルとして扱われます。
LSID はロケールに変換できます。 ロケールは、 言語およびその言語の国固有のバリエーションです。
L"
( "lsid<">" – lsid ) gforth-experimental “l-quote”
文字列が一意に新しい場合は、 文字列をパースし、 新しい lsid を定義します。 同一文字列は同一の lsid となり、 同一文字列を使用して複数の場所から同じ lsid を参照できます。
LU"
( "lsid<">" – lsid ) gforth-experimental “l-unique-quote”
文字列がユニークでない場合でも(重複してても)、 文字列をパースし、 常に新しい lsid を定義します。
native@
( lsid – addr u ) gforth-experimental “native-fetch”
lsid からネイティブ文字列(native string)を取得します
locale@
( lsid – addr u ) gforth-experimental “locale-fetch”
現在の言語 かつ 現在の国(country)でローカライズされた文字列を取得します
locale!
( addr u lsid – ) gforth-experimental “locale-store”
現在のロケール かつ 現在の国の、 ローカライズされた文字列 addr u を lsid に保存します。
Language
( "name" – ) gforth-experimental “Language”
ロケールを定義します。 そのロケールを実行すると、 それが現在のロケールになります。
Country
( <lang> "name" – ) gforth-experimental “Country”
現在のロケールのバリエーション(通常: 国;country)を定義します。 そのロケールを実行すると、それが現在のロケールになります。 バリエーションのバリエーションを作成できます(国によってはバリエーションが存在する場合があります。たとえば、 多くの言語で rolls/buns を表す単語が何語あるかを考えてください)。
locale-file
( fid – ) gforth-experimental “locale-file”
fid から現在のロケールに行(lines)を読み取ります。
included-locale
( addr u – ) gforth-experimental “included-locale”
ファイル addr u から現在のロケールに行(lines)を読み取ります。
include-locale
( "name" – ) gforth-experimental “include-locale”
指定のファイル "name" から現在のロケールに行(lines)を読み取ります。
locale-csv
( "name" – ) gforth-experimental “locale-csv”
カンマ区切り値テーブルをロケールにインポートします。 最初の行にはロケール名が含まれます。 “program” と “default” は特別なエントリです。 generic languages は特定の国(specific countries)向けの翻訳よりも優先しなければなりません。 “program” の下のエントリ(一番左にある必要があります) は、 lsid の検索に使用されます。 空の場合、 行番号 1 は lsid インデックスです。
.locale-csv
( – ) gforth-experimental “dot-locale-csv”
ロケール・データベースを CSV 形式で端末に出力します。
locale-csv-out
( "name" – ) gforth-experimental “locale-csv”
ファイル "name" を作成し、 ロケール・データベースを CSV 形式でファイル "name" に書き込みます。