locale − ロケール定義ファイル
ロケール (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
このカテゴリーの定義は最初のカラムに 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
このカテゴリーの定義は最初のカラムに 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 に指定された文字を指定することはできない。 |
||
|
<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 という文字列で終了する。
LC_COLLATE
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
このカテゴリーの定義は最初のカラムに LC_IDENTIFICATION という文字列を置くことで始める。
このカテゴリーの値は普通の文字列として定義される。
ここでは以下のキーワードが使用できる:
title |
このロケール文書のタイトル (例えば "Maori language locale for New Zealand" (「ニュージーランドのマオリ語のロケール」))。 |
||
source |
この文書を管理している組織名。 |
address
この文書を管理している組織の住所。
contact
この文書を管理している組織の担当者の名前。
|
この文書を管理している組織の担当者の電子メールアドレス。 |
||
tel |
この文書を管理している組織の (国際的なフォーマットでの) 電話番号。 |
||
fax |
この文書を管理している組織の (国際的なフォーマットでの) FAX 番号。 |
language
この文書が適用される言語名。
territory
この文書が適用される国や地理的範囲の名前。
audience
この文書が想定する対象者の説明。
application
この文書が想定する特別な適用先を記載する。
abbreviation
この文書の省略名。
revision
この文書の版数。
date |
この文書のこの版の日付。 |
さらに、 この文書で定義されるカテゴリー毎に、キーワード category で始まり以下の内容が続く行を用意する必要がある。
* |
このロケールカテゴリー定義を識別する文字列 |
||
* |
セミコロン |
||
* |
LC_* 識別子のいずれか 1 つ |
LC_IDENTIFICATION の定義は END LC_IDENTIFICATION という文字列で終了する。
LC_MESSAGES
このカテゴリーの定義は最初のカラムに LC_MESSAGES という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
yesexpr
「はい (yes)」を意味する正規表現を指定する。
noexpr |
「いいえ (no)」を意味する正規表現を指定する。 |
||
yesstr |
"yes" に対応する出力文字列を指定する。 |
||
nostr |
"no" に対応する出力文字列を指定する。 |
LC_MESSAGES の定義は END LC_MESSAGES という文字列で終了する。
LC_MEASUREMENT
このカテゴリーの定義は最初のカラムに LC_MEASUREMENT という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
measurement
単位系として使用される標準を指定する数値。 以下の値が使用できる。
1 |
メートル法 |
||
2 |
US で使用される単位系 |
LC_MEASUREMENT の定義は END LC_MEASUREMENT という文字列で終了する。
LC_MONETARY
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
このカテゴリーの定義は最初のカラムに 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
このカテゴリーの定義は最初のカラムに LC_NUMERIC という文字列を置くことで始める。
ここでは以下のキーワードが使用できる:
decimal_point
数値をフォーマットする際に小数点に使用する文字列を指定する。
thousands_sep
数値をフォーマットする際に桁の区切りに使用する文字列を指定する。
grouping
数値の表示方法を規定する整数の列。 セミコロン区切りの通常の数字。
各数字はグループ内の数字の桁数を指定する。 最初の整数は小数点のすぐ左側のグループのサイズを規定する。 それ以降の数字は一つ前のグループの左側のグループのサイズを順に規定する。 最後の数字が −1 でない場合、 (グループがある場合) 直前のグループのサイズがそれ以降の桁についても使用される。 最後の整数が −1 の場合、 それ以降はグループ化を行わない。
The LC_NUMERIC の定義は END LC_NUMERIC という文字列で終了する。
LC_PAPER
このカテゴリーの定義は最初のカラムに LC_PAPER という文字列を置くことで始める。
このカテゴリーの値は通常の数字で指定する。
ここでは以下のキーワードが使用できる:
height |
標準の紙のサイズの高さをミリメートル単位で指定する。 |
||
width |
標準の紙のサイズの幅をミリメートル単位で指定する。 |
LC_PAPER の定義は END LC_PAPER という文字列で終了する。
LC_TELEPHONE
このカテゴリーの定義は最初のカラムに 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
このカテゴリーの定義は最初のカラムに 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 という文字列で終了する。
/usr/lib/locale/locale−archive
通常のデフォルトのロケールアーカイブファイル
/usr/share/i18n/locales
ロケール定義ファイルの通常のデフォルトパス
POSIX.2, ISO/IEC TR 14652.
abday, day, week, first_weekday, first_workday に関する GNU C ライブラリコミュニティーで培ったノウハウについて https://sourceware.org/glibc/wiki/Locales で以下のように書かれている。
* |
week リストの 2 番目の項目の値は abday と day のリストの起点となる日を指定する。 |
||
* |
first_weekday は abday と day のリストの中で最初に表示する週の曜日 (オフセット) を指定する。 |
||
* |
For compatibility reasons, all glibc locales should set the value of the second week list item to 19971130 (Sunday) and base the abday and day lists appropriately, and set first_weekday and first_workday to 1 or 2, depending on whether the week and work week actually starts on Sunday or Monday for the locale. |
このマニュアルは完全ではない。
locale(1), localedef(1), localeconv(3), newlocale(3), setlocale(3), uselocale(3), charmap(5), charsets(7), locale(7), unicode(7), utf−8(7)
この man ページは Linux man−pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man−pages/ に書かれている。