説明
ロケール (locale)
定義ファイルは localedef(1)
コマンドがバイナリのロケールデータベースに変換するのに
必要な全ての情報を含んでいる。
定義ファイルは、いくつかのセクションから構成されており、各セクション
にはロケールのカテゴリーが詳細に記述される。
文法
ロケール定義ファイルは以下のキーワードから構成されるヘッダーで始まる:
- <escape_char>
- ファイルの残りの部分でエスケープキャラクターとして使用する文字を
指定する。これは特殊な意味に解釈される文字をエスケープするのに使用する。
デフォルトはバックスラッシュ
(\) である。
- <comment_char>
- ファイルの残りの部分でコメントキャラクターとして使用する文字
を指定する。デフォルトではシャープ
(#) である。
ロケールの定義はロケールのカテゴリー毎の定義を行う部分から構成される。
各部分は、定義済みの他のロケールのコピーを元に定義することもできるし、
最初から定義することもできる。カテゴリーをコピーする場合、定義の中に
copy
というキーワードに続けてコピーするロケールの名前をダブルクォートの中に書く。
カテゴリーを一から定義する際には、
すべてのフィールドの説明と文字列を、
Unicode
コードポイントをかぎ括弧で囲って定義する必要がある。
下記の説明で定義しなくてもよいと書かれている場合はこの限りではない。
例えば、 "€" は
"<U20AC>"、 "%a" は
"<U0025><U0061>"、 "Monday" は
"<U0053><U0075><U006E><U0064><U0061><U0079>"
と表現される。 Unicode
コードポイントとして定義される値は二重引用符で囲まなければならず、
通常の数値は引用符で囲まれない
(ただし、 LC_CTYPE と LC_COLLATE
は特別なフォーマットを使用しており、
例についてはシステムが提供するロケールファイルを参照)。
ロケールカテゴリー
以下のカテゴリーが
POSIX
で定義されている。
- LC_CTYPE
- LC_COLLATE
- LC_MESSAGES
- LC_MONETARY
- LC_NUMERIC
- LC_TIME
また、バージョン
2.2 以降の GNU C
ライブラリでは以下の非標準のカテゴリーにも対応している。
- LC_ADDRESS
- LC_IDENTIFICATION
- LC_MEASUREMENT
- LC_NAME
- LC_PAPER
- LC_TELEPHONE
各カテゴリーの詳細な説明は
locale(7) を参照。
このカテゴリーの定義は最初のカラムに
LC_ADDRESS
という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
- postal_fmt
- このロケールでの郵便の住所に使用するフォーマットを定義するフィールド記述子が入った文字列を指定する。
以下のフィールド指定子を使用できる。
- %a
- 気付、組織
- %f
- 社名
- %d
- 部署名
- %b
- ビル名
- %s
- 通り、ブロック名
- %h
- 番地
- %N
- 直前の記述子の値が空でない場合
end-of-line を挿入する。
そうでない場合は無視される。
- %t
- 直前の記述子の値が空でない場合、
スペースを挿入する。
そうでない場合は無視される。
- %r
- 部屋番号
- %e
- フロア番号
- %C
- 国、 <country_post>
キーワードから指定する
- %z
- 郵便番号
- %T
- 町、市
- %S
- 州、省、県
- %c
- 国。
データレコードから取得される。
各フィールドでは
'%' の後ろに 'R'
を置いて、
その要素のローマ字版の文字列を使用するように指定することができる。
- country_name
- そのドキュメントの言語での国名を指定する
(例えば、 de_DE
ロケールでは
"Deutschland")
- country_post
- 国の省略名を指定する
(CERT_MAILCODES 参照)
- country_ab2
- 国の 2
文字の省略形を指定する
(ISO 3166)
- country_ab3
- 国の 3
文字の省略形を指定する
(ISO 3166)
- country_num
- 数字の国コードを通常の数字として指定する
(ISO 3166)
- country_car
- 自動車番号の国コードを指定する
- country_isbn
- (書籍用の) ISBN
コードを通常の数字として指定する
- lang_name
- そのドキュメントの言語での言語名を指定する
- lang_ab
- 言語の 2
文字の省略形を指定する
(ISO 639)
- lang_term
- 言語の 3
文字の省略形を指定する
(ISO 639-2/T)
- lang_lib
- ライブラリで使用する言語の
3
文字の省略形を指定する
(ISO 639-2/B)。
一般には、アプリケーションは
lang_lib よりも lang_term
を優先すべきである。
LC_ADDRESS の定義は END
LC_ADDRESS
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_CTYPE
という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
- upper
- 大文字 (uppercase letter)
のリストを指定する。
A から Z
までの文字は自動的に含まれる。
cntrl, digit, punct, space
に指定された文字を指定することはできない。
- lower
- 小文字 (lowercase letter)
のリストを指定する。
a から z
までの文字は自動的に含まれる。
cntrl, digit, punct, space
に指定された文字を指定することはできない。
- alpha
- アルファベットの文字を指定する。
upper と lower
を指定した全ての文字は自動的に含まれる。
cntrl, digit, punct, space
に指定された文字を指定することはできない。
- digit
- 数字として使用される文字を指定する。数字としては
0 から 9
のみが使用できる。これらはデフォルトで含まれている。
- space
- 空白として使用する文字のリストを指定する。
upper, lower, alpha, digit, graph,
xdigit
に指定された文字を指定することはできない。
<space>, <form-feed>, <newline>,
<carriage-return>, <tab>,
<vertical-tab>
は自動的に含まれる。
- cntrl
- コントロールキャラクターのリストを指定する。
upper, lower, alpha, digit, punct,
graph, print, xdigit
に指定された文字を指定することはできない。
- punct
- 句読点文字のリストを指定する。
upper, lower, alpha, digit, cntrl,
xdigit, <space>
に指定された文字を指定することはできない。
- graph
- 表示可能文字のリストを指定するが、
<space>
文字は含まない。
upper, lower, alpha, digit, xdigit,
punct
を指定した文字は自動的に含まれる。
cntrl
に指定された文字を指定することはできない。
- print
- <space>
文字を含めた表示可能文字のリストを指定する。
upper, lower, alpha, digit, xdigit,
punct, <space>
に指定した文字は自動的に含まれる。
cntrl
に指定された文字を指定することはできない。
- xdigit
- 16
進数として使用する文字のリストを指定する。10
進の数字に加えて、 6
文字を昇順で続ける。デフォルトでは以下の文字が含まれている:
0 から 9、 a から
f、 A から F。
- blank
- 無地 (blank)
に分類される文字のリストを指定する。
<space> と <tab>
は自動的に含まれる。
- toupper
- 小文字から大文字への対応リストを指定する。各対応は小文字と大文字のペアを
,
で区切って括弧で括って指定する。
リストの各メンバーはセミコロンで区切る。
- tolower
- 大文字から小文字への対応リストを指定する。tolower
という
キーワードが無い場合には
toupper
を逆にしたものが使用される。
LC_CTYPE の定義は END
LC_CTYPE
という文字列で終了する。
glibc
による制限のため POSIX
オプションの全てが実装されているわけではない。
このカテゴリーの定義は最初のカラムに
LC_COLLATE
を置くことで始める。
ここでは以下のキーワードが使用できる:
- collating-element
- 複数文字からなる照合要素を表す照合要素シンボル
(collating-element symbol)
の定義を指定する。
- collating-symbol
- 照合順序定義 (order_start)
で使用できる照合シンボル
(collating symbol)
の定義を指定する。
順序の定義は以下の行で始める:
- order_start
- これに forward, backward, position
のいずれかのキーワードが続く。
順序を記述する行が続き、キーワード
order_end で終る:
LC_COLLATE 定義は END LC_COLLATE
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_IDENTIFICATION
という文字列を置くことで始める。
このカテゴリーの値は普通の文字列として定義される。
ここでは以下のキーワードが使用できる:
- title
- このロケール文書のタイトル
(例えば "Maori language locale for New
Zealand"
(「ニュージーランドのマオリ語のロケール」))。
- source
- この文書を管理している組織名。
- address
- この文書を管理している組織の住所。
- contact
- この文書を管理している組織の担当者の名前。
- email
- この文書を管理している組織の担当者の電子メールアドレス。
- tel
- この文書を管理している組織の
(国際的なフォーマットでの)
電話番号。
- fax
- この文書を管理している組織の
(国際的なフォーマットでの)
FAX 番号。
- language
- この文書が適用される言語名。
- territory
- この文書が適用される国や地理的範囲の名前。
- audience
- この文書が想定する対象者の説明。
- application
- この文書が想定する特別な適用先を記載する。
- abbreviation
- この文書の省略名。
- revision
- この文書の版数。
- date
- この文書のこの版の日付。
さらに、
この文書で定義されるカテゴリー毎に、キーワード
category
で始まり以下の内容が続く行を用意する必要がある。
- このロケールカテゴリー定義を識別する文字列
- セミコロン
- LC_*
識別子のいずれか 1
つ
LC_IDENTIFICATION の定義は END
LC_IDENTIFICATION
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_MESSAGES
という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
- yesexpr
- 「はい
(yes)」を意味する正規表現を指定する。
- noexpr
- 「いいえ
(no)」を意味する正規表現を指定する。
- yesstr
- "yes"
に対応する出力文字列を指定する。
- nostr
- "no"
に対応する出力文字列を指定する。
LC_MESSAGES の定義は END
LC_MESSAGES
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_MEASUREMENT
という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
- measurement
- 単位系として使用される標準を指定する数値。
以下の値が使用できる。
LC_MEASUREMENT の定義は END
LC_MEASUREMENT
という文字列で終了する。
LC_MONETARY
の定義は最初のカラムに
LC_MONETARY
を置くことで始める。
int_curr_symbol, currency_symbol,
mon_decimal_point, mon_thousands_sep, positive_sign,
negative_sign は Unicode
コードポイントとして定義されている。
それ以外には通常の数字を指定する。
ここでは以下のキーワードが使用できる:
- int_curr_symbol
- 国際通貨記号を指定する。これは
ISO 4217
規格に定義された国際通貨
記号 (3 文字)
に区切り文字を続けた
4
文字である必要がある。
- currency_symbol
- 地域的な通貨記号を指定する。
- mon_decimal_point
- 金額をフォーマットする際の小数点に使用する文字列を指定する。
- mon_thousands_sep
- 金額をフォーマットする際に桁の区切りに使用する文字列を指定する。
- mon_grouping
- 金額の表示方法を規定する整数の列。
セミコロン区切りの通常の数字。
詳細は下記の grouping
を参照。
- positive_sign
- 数値において正の符号に使用する文字列を指定する。
- negative_sign
- 数値において負の符号に使用する文字列を指定する。
- int_frac_digits
- int_curr_symbol
でフォーマットする時に使用すべき端数の桁数を指定する。
- frac_digits
- currency_symbol
でフォーマットする際に使用すべき端数の桁数を指定する。
- p_cs_precedes
- 負でない金額を表示する際に
currency_symbol
を置く位置を示す数字を指定する。
- 0
- 記号は数値の後におく。
- 1
- 記号は数値の前におく。
- n_cs_precedes
- 負の金額を表示する際に
currency_symbol
を置く位置を示す数字を指定する。
指定できる値は
p_cs_precedes
と同じである。
- int_p_cs_precedes
- 負でない金額を国際的なフォーマットで表示する際に
int_currency_symbol
を置く位置を示す数字を指定する。
指定できる値は
p_cs_precedes
と同じである。
- int_n_cs_precedes
- 負の金額を国際的なフォーマットで表示する際に
int_currency_symbol
を置く位置を示す数字を指定する。
指定できる値は
p_cs_precedes
と同じである。
- p_sep_by_space
- 負でない金額を表示する際に、
currency_symbol、 符号記号、
値の区切り方を示す数値を指定する。
以下の値が使用できる。
- 0
- 通貨記号と値の間にスペースを入れない。
- 1
- 通貨記号と符号記号が隣り合う場合、
値との間にスペースを入れる。
そうでない場合、通貨記号と値の間スペースを置く。
- 2
- 通貨記号と符号記号が隣り合う場合、
値との間にスペースを入れる。
そうでない場合、符号記号と値はそれぞれスペースで区切られる。
- n_sep_by_space
- 負の金額を表示する際に、
currency_symbol、 符号記号、
値の区切り方を示す数値を指定する。
指定できる値は
p_sep_by_space である。
- int_p_sep_by_space
- 負でない金額を国際的なフォーマットで表示する際に、
int_currency_symbol、
符号記号、
値の区切り方を示す数値を指定する。
指定できる値は
p_sep_by_space である。
- int_n_sep_by_space
- 負の金額を国際的なフォーマットで表示する際に、
int_currency_symbol、
符号記号、
値の区切り方を示す数値を指定する。
指定できる値は
p_sep_by_space である。
- p_sign_posn
- 負でない金額の場合に
positive_sign
を置く必要があるかを示す整数を指定する。
- 0
- 値と currency_symbol または
int_curr_symbol
を括弧で括る。
- 1
- 符号を値と currency_symbol
または int_curr_symbol
の前に置く。
- 2
- 符号を値と currency_symbol
または int_curr_symbol
の後に置く。
- 3
- 符号を currency_symbol または
int_curr_symbol
の前に置く。
- 4
- 符号を currency_symbol または
int_curr_symbol
の後に置く。
- n_sign_posn
- 負の金額の場合に
negative_sign
を置く必要があるかを示す整数を指定する。
指定できる値は
p_sign_posn
と同じである。
- int_p_sign_posn
- 負でない金額を国際的なフォーマットで表示する際に
positive_sign
を置く必要があるかを示す整数を指定する。
指定できる値は
p_sign_posn
と同じである。
- int_n_sign_posn
- 負の金額を国際的なフォーマットで表示する際に
negative_sign
を置く必要があるかを示す整数を指定する。
指定できる値は
p_sign_posn
と同じである。
LC_MONETARY の定義は END
LC_MONETARY
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_NAME
という文字列を置くことで始める。
様々なキーワードを指定できるが、
必須なのは name_fmt
だけである。
それ以外のキーワードは、
このロケールで、
対応するあいさつを使う慣習が普及している場合にのみ指定が必要である。
指定できるキーワードは以下のとおりである。
- name_fmt
- このロケールで名前に対して使用する表示方法を定義するフィールド記述子が入った文字列を指定する。
以下のフィールド記述子を使用できる。
- %f
- 姓 (family name)
- %F
- 大文字の姓 (family name)
- %g
- 名 (first given name)
- %G
- 名の頭文字
- %l
- ラテン文字での名 (first
given name)
- %o
- 他の短い名前
- %m
- 追加の名前 (given name)
- %M
- 追加の名前の頭文字
- %p
- 職業
- %s
- 呼びかけの言葉
(例えば「Doctor」など)
- %S
- 省略形の呼びかけの言葉
("Mr." や "Dr.")
- %d
- FDCC (Formal Definitions of Cultural Convention)
集合で使用される呼びかけの言葉
- %t
- 直前のフィールド記述子が空文字列になった場合、
空文字列となる。
それ以外の場合、
スペース文字となる。
- name_gen
- 男性・女性を問わず使える一般的な呼びかけの言葉
- name_mr
- 男性に対する呼びかけの言葉
- name_mrs
- 既婚女性に対する呼びかけの言葉
- name_miss
- 未婚女性に対する呼びかけの言葉
- name_ms
- どの女性にも使用できる呼びかけの言葉
LC_NAME の定義は END LC_NAME
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_NUMERIC
という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
- decimal_point
- 数値をフォーマットする際に小数点に使用する文字列を指定する。
- thousands_sep
- 数値をフォーマットする際に桁の区切りに使用する文字列を指定する。
- grouping
- 数値の表示方法を規定する整数の列。
セミコロン区切りの通常の数字。
- 各数字はグループ内の数字の桁数を指定する。
最初の整数は小数点のすぐ左側のグループのサイズを規定する。
それ以降の数字は一つ前のグループの左側のグループのサイズを順に規定する。
最後の数字が -1
でない場合、
(グループがある場合)
直前のグループのサイズがそれ以降の桁についても使用される。
最後の整数が -1
の場合、
それ以降はグループ化を行わない。
The LC_NUMERIC の定義は END
LC_NUMERIC
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_PAPER
という文字列を置くことで始める。
このカテゴリーの値は通常の数字で指定する。
ここでは以下のキーワードが使用できる:
- height
- 標準の紙のサイズの高さをミリメートル単位で指定する。
- width
- 標準の紙のサイズの幅をミリメートル単位で指定する。
LC_PAPER の定義は END
LC_PAPER
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_TELEPHONE
という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
- tel_int_fmt
- 国際番号に電話をかける場合に使用するフォーマットを示すフィールド記述子を含む文字列を指定する。
以下のフィールド記述子を使用できる。
- %a
- 全国で一意なプレフィックスを含まないエリアコード
(多くの場合、プレフィックスは
"00")。
- %A
- 全国で一意なプレフィックスを含んだエリアコード。
- %l
- (エリア内の)
市内局番。
- %e
- (市内局番に対する)
内線番号。
- %c
- 国番号。
- %C
- 海外通話の際に使用される代わりのキャリアーサービスコード。
- %t
- 直前のフィールド記述子が空文字列になった場合、
空文字列となる。
それ以外の場合、
スペース文字となる。
- tel_dom_fmt
- 国内番号に電話をかける場合に使用するフォーマットを示すフィールド記述子を含む文字列を指定する。
使用できるフィールド記述子は
tel_int_fmt
と同じである。
- int_select
- 国際電話番号に電話をかける際に使用するプレフィックスを指定する。
- int_prefix
- 他の国からこの国に電話をかける際に使用するプレフィックスを指定する。
LC_TELEPHONE の定義は END
LC_TELEPHONE
という文字列で終了する。
このカテゴリーの定義は最初のカラムに
LC_TIME
という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
- abday
- 曜日の名前の省略形のリストを指定する。
リストは week
で指定された週の開始曜日
(デフォルトでは日曜日)
から始める。
「注意」を参照。
- day
- 曜日の名前のリストを指定する。
リストは week
で指定された週の開始曜日
(デフォルトでは日曜日)
から始める。
「注意」を参照。
- abmon
- 月の名前の省略形のリストを指定する。
- mon
- 月の名前のリストを指定する。
- am_pm
- それぞれ 午前 (am) と
午後 (pm)
に対応する文字列を指定する。
AM/PM
を使う慣習がないロケールでは、このフィールドは空にすべきである。
- d_t_fmt
- 適切な日付け (date)
と時刻 (time)
のフォーマットを指定する。
- d_fmt
- 適切な日付け (date)
のフォーマットを指定する。
- t_fmt
- 適切な時刻 (time)
のフォーマットを指定する。
- t_fmt_ampm
- 12
時間時計を使う際に使用する時刻形式を指定する。
午前/午後の表記を使用しないロケールではこのフィールドは空にすること。
- week
- 3
つの通常の数字からなるリストを指定する。
リストは、一週間の日数
(デフォルトでは 7)、
週の開始曜日
(デフォルトでは日曜に対応)、
一年の最初の週の最小の長さ
(デフォルトでは 4)
から構成される。
週の開始曜日については、週の開始日が日曜日の場合には
19971130
を、月曜日の場合には
19971201 を使用する。
「注意」を参照。
- first_weekday
(glibc 2.2 以降)
- カレンダーアプリケーションで最初に表示する曜日の
day
リストにおける番号。
デフォルト値の 1
(通常の数字)
は日曜日か月曜日に対応する。
どちらに対応するかは
week
リストの二番目の項目の値で決まる。
「注意」を参照。
- first_workday
(glibc 2.2 以降)
- 最初の就業日を示す
day
リストにおける曜日の番号。
デフォルト値は 2
(通常の数字)
である。
「注意」を参照。
- cal_direction
- カレンダーの日付を表示する方向を示す通常の数字を指定する。指定できる値は以下のとおり。
- 1
- 左から右を、上から順に。
- 2
- 上から下を、左から順に。
- 3
- 右から左を、上から順に。
- date_fmt
- date(1)
に適した日付の表現を指定する。
LC_TIME の定義は END LC_TIME
という文字列で終了する。