Go to main content
マニュアルページ セクション 5: 標準、環境、マクロ

印刷ビューの終了

更新: 2016年12月6日
 
 

locale(5)

名前

locale - 言語や文化規約によるユーザー環境のサブセット

説明

locale とは、言語や文化規約によるユーザー環境のサブセットを定義したものです。1 つ以上のカテゴリで構成されます。各カテゴリはその名前によって識別され、システムコンポーネントの動作の特定の側面を制御します。カテゴリ名は次の環境変数名に対応しています:

LC_CTYPE

文字の分類および大文字/小文字の変換。

LC_COLLATE

照合順序。

LC_TIME

日付と時間の書式。

LC_NUMERIC

数値の書式設定。

LC_MONETARY

通貨の書式設定。

LC_MESSAGES

情報メッセージや診断メッセージおよび対話式応答の書式。

これらの標準ユーティリティーは、各ユーティリティーの「環境変数」セクションに定義されているように、現在のロケールに基づいて動作します。一部の C 言語関数の動作も、setlocale(3C) の最後の呼び出しで定義されているように、現在のロケールに基づいて変更されます。

実装によって提供される以外のロケールは、localedef(1) ユーティリティーを通じてアプリケーションで作成できます。環境変数の使用時にロケールの指定に使われる値は、そのロケールが作成されたときに localedefname オペランドとして指定された文字列になります。文字列「C」および「POSIX」は POSIX ロケールの識別子として予約されています。

必要なロケールをアプリケーションで選択するには、適切な値を指定して setlocale() 関数を呼び出します。この関数を次のような空の文字列で呼び出した場合:

setlocale(LC_ALL, "");

対応する環境変数の値が使用されます。環境変数が未設定か、または空の文字列に設定されている場合は、setlocale() 関数によって適切な環境が設定されます。

ロケール定義

ロケールは、localedef ユーティリティーで受け入れられるファイル形式を使って記述できます。

ロケール定義ファイルにはロケールカテゴリのソース定義が 1 つ以上含まれている必要があり、同じロケールカテゴリの定義が複数あってはいけません。

カテゴリソース定義は、カテゴリヘッダー、カテゴリ本体、およびカテゴリトレーラで構成されます。カテゴリヘッダーは、文字 LC_ で始まる、カテゴリ名を表す文字列で構成されます。カテゴリトレーラは、文字列 END とそれに続く 1 つ以上の空白文字、および対応するカテゴリヘッダーで使用される文字列で構成されます。

カテゴリ本体は、1 行以上のテキストで構成されます。各行には識別子が 1 つ含まれ、そのあとに必要に応じて 1 つ以上のオペランドが続きます。識別子は、特定のロケール要素を識別するキーワードか、または照合要素のどちらかです。ロケール内の各キーワードには一意の名前を付ける必要があります (つまり、2 つのカテゴリに一般的な名前のキーワードを含めることはできません)。キーワードを文字 LC_ で始めることはできません。識別子とオペランドは 1 つ以上の空白文字で区切る必要があります。

オペランドは、文字、照合要素、または文字列である必要があります。文字列は二重引用符 () で囲む必要があります。文字列内のリテラルの二重引用符の前には、次のように <escape character> を付ける必要があります。キーワードのあとに複数のオペランドが続く場合は、それらのオペランドをセミコロン (;) で区切る必要があります。セミコロンの前後に空白文字を入れてもかまいません。

ファイル内の最初のカテゴリヘッダーの前に、コメント文字を変更する行を付けることができます。それは 1 列目から始まり、次のような形式になります:

"comment_char %c\n",<comment character>

コメント文字はデフォルトで番号記号 (#) になっています。先頭位置にある空白行と、<comment character> を含む行は無視されます。

ファイル内の最初のカテゴリヘッダーの前に、そのファイル内で使用されるエスケープ文字を変更する行を付けることができます。それは 1 列目から始まり、次のような形式になります:

"escape_char %c\n",<escape character>

エスケープ文字はデフォルトでバックスラッシュになっています。

行を継続するには、その行の最後の文字としてエスケープ文字を配置します。この継続文字は入力から破棄されます。実装では、長さが {LINE_MAX} バイトを超える継続行のいずれの部分も受け入れる必要はありませんが、継続行の累積の長さには制限を設けていません。コメント行は、エスケープされた改行文字を使って次の行に継続することはできません。

個々の文字、文字列内の文字、および照合要素は、次に定義しているように、シンボリック名を使用して表現する必要があります。また、文字は文字そのものを使用して表現することも、8 進定数、16 進定数、または 10 進定数として表現することもできます。シンボリック以外の表記法を使用すると、結果として得られるロケール定義は多くの場合、システム間で移植できなくなります。左山括弧 (<) はシンボリック名の開始を意味する予約シンボルであり、それ自体を表現するために使用するときは、その前にエスケープ文字を付ける必要があります。文字表現には次の規則が適用されます:

  1. 山括弧 <> で囲んだシンボリック名で文字を表現できます。シンボリック名 (山括弧を含む) は、localedef –f オプションで指定された charmap ファイルに定義されているシンボリック名と正確に一致する必要があり、charmap ファイル内のシンボリック名に関連付けられた値から特定される文字値に置き換えられます。charmap ファイルに存在しないシンボリック名を使用すると、エラーが発生しますが、カテゴリが LC_CTYPE または LC_COLLATE の場合は例外で、その場合は警告状態になります (エラーや警告がもたらす影響については localedef(1) を参照)。collating-element または collating-symbol セクションでのシンボリック名の指定のうち、charmap ファイル (存在する場合) 内でシンボリック名が重複しているものはエラーです。シンボリック名の内部でのエスケープ文字または右山括弧の使用は、文字の前にエスケープ文字を付ける場合を除いて無効です。

    例:

    <C>;<c-cedilla> "<M><a><y>"
  2. 文字はその文字自体で表現することができ、その場合、文字の値は実装に依存します。文字列の内部では、二重引用符文字、エスケープ文字、および右山括弧文字についてはエスケープして (エスケープ文字を前に付ける)、文字自体として解釈されるようにする必要があります。文字列の外側では、文字

    ,     ;     <     > escape_char

    をエスケープして文字自体として解釈されるようにする必要があります。

    例:

    c       "May"
  3. 文字を 8 進定数で表現できます。8 進定数は、エスケープ文字のあとに 8 進数字が 2 つ以上続く形式で指定されます。各定数はバイト値を表します。複数バイト値は、定数の最後の文字が最下位バイトを示すようなバイト順序で指定された連結定数によって表現できます。

    例:

    \143;\347;\143\150    "\115\141\171"
  4. 文字を 16 進定数で表現できます。16 進定数は、エスケープ文字のあとに x が 1 つ続き、そのあとに 16 進数字が 2 つ以上続く形式で指定されます。各定数はバイト値を表します。複数バイト値は、定数の最後の文字が最下位バイトを示すようなバイト順序で指定された連結定数によって表現できます。

    例:

    \x63;\xe7;\x63\x68    "\x4d\x61\x79"
  5. 文字を 10 進定数で表現できます。10 進定数は、エスケープ文字のあとに d が 1 つ続き、そのあとに 10 進数字が 2 つ以上続く形式で指定されます。各定数はバイト値を表します。複数バイト値は、定数の最後の文字が最下位バイトを示すようなバイト順序で指定された連結定数によって表現できます。

    例:

    \d99;\d231;\d99\d104   "\d77\d97\d121"

    シンボリック名、文字自体、8 進定数、10 進定数、または 16 進定数のどれを使用しても、ロケール定義が作成される文字セット内に存在する文字しか指定できません。charmap ファイルが存在する場合は、その charmap 内に定義されている文字のみを 8 進定数、10 進定数、または 16 進定数を使って指定できます。charmap ファイルに存在しないシンボリック名は、上記の項目 1 で規定されているように、指定することはできますが、無視されます。

LC_CTYPE

LC_CTYPE カテゴリは、文字の分類、大文字/小文字の変換、およびその他の文字属性を定義します。また、一連の文字を、省略記号 (...) を表す 3 つの隣接するピリオドで表現できます。省略記号の指定は、省略記号の前と後にある値の間にあるすべての値が有効な文字であるという意味に解釈されます。省略記号の指定はエンコードされた単一の文字セット内、つまり同じサイズの文字のグループ内でのみ有効です。省略記号は、その省略記号の前にある文字のエンコードされた値よりも大きく、その省略記号の後ろにある文字のエンコードされた値よりも小さいエンコードされた値を持つすべての文字をリストに含めるものと解釈されます。

例:

\x30;...;\x39;

エンドポイント間にあるエンコードされた値を持つすべての文字を文字クラスに含めます。

次のキーワードが認識されています。説明の中で、「自動的に含まれる」という用語は参照文字のいずれかを含めても、省略してもエラーにならないことを意味します。

文字クラス digitxdigitlowerupper、および space には、自動的に含まれる文字セットがあります。これらは、文字値 (つまりエンコーディング) が実装のデフォルト値と異なっている場合にのみ指定する必要があります。

upper

大文字に分類される文字を定義します。

POSIX ロケールでは、26 個の大文字が含まれます:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ロケール定義ファイルでは、キーワード cntrldigitpunct、または space で指定された文字は指定できません。大文字 A - Z がこのクラスに自動的に含まれます。

lower

小文字に分類される文字を定義します。POSIX ロケールでは、26 個の小文字が含まれます:

a b c d e f g h i j k l m n o p q r s t u v w x y z

ロケール定義ファイルでは、キーワード cntrldigitpunct、または space で指定された文字は指定できません。移植可能な文字セットの小文字 a - z がこのクラスに自動的に含まれます。

alpha

アルファベット文字に分類される文字を定義します。

POSIX ロケールでは、クラス upperlower に含まれるすべての文字が含まれます。

ロケール定義ファイルでは、キーワード cntrldigitpunct、または space で指定された文字は指定できません。upper または lower のどちらかに分類された文字がこのクラスに自動的に含まれます。

digit

数字に分類される文字を定義します。

POSIX ロケールでは、

0 1 2 3 4 5 6 7 8 9

のみが含まれます。

ロケール定義ファイルでは、数字 012345678、および 9 のみを、昇順の連続する数値で指定できます。移植可能な文字セットの数字 0 - 9 がこのクラスに自動的に含まれます。

文字クラス digit の定義に必要なのはそれらの 10 文字のみです。数字を定義するそれらの文字は指定できますが、代替の数字 (ヒンディー語や漢字など) をここで指定することはできません。

alnum

文字および数字に分類される文字を定義します。alpha および digit キーワードで指定された文字のみが指定されます。キーワード alpha および digit で指定された文字がこのクラスに自動的に含まれます。

space

空白文字に分類される文字を定義します。

POSIX ロケールでは、少なくとも文字 SPACEFORMFEEDNEWLINECARRIAGE RETURNTAB、および VERTICAL TAB が含まれます。

ロケール定義ファイルでは、キーワード upperloweralphadigitgraph、または xdigit で指定された文字は指定できません。移植可能な文字セットの文字 SPACEFORMFEEDNEWLINECARRIAGE RETURNTAB、および VERTICAL TAB と、クラス blank に含まれるすべての文字がこのクラスに自動的に含まれます。

cntrl

制御文字に分類される文字を定義します。

POSIX ロケールでは、クラス alpha または print 内の文字は含まれません。

ロケール定義ファイルでは、キーワード upperloweralphadigitpunctgraphprint、または xdigit で指定された文字は指定できません。

punct

句読文字に分類される文字を定義します。

POSIX ロケールでは、空白文字も、クラス alphadigit、または cntrl 内のどの文字も含まれません。

ロケール定義ファイルでは、キーワード upperloweralphadigitcntrlxdigit で指定された文字と空白文字は指定できません。

graph

出力可能文字に分類される文字 (空白文字は含まない) を定義します。

POSIX ロケールでは、クラス alphadigit、および punct 内の文字はすべて含まれますが、クラス cntrl 内の文字は含まれません。

ロケール定義ファイルでは、キーワード upperloweralphadigitxdigit、および punct で指定された文字がこのクラスに自動的に含まれます。キーワード cntrl で指定された文字は指定できません。

print

出力可能文字に分類される文字 (空白文字を含む) を定義します。

POSIX ロケールでは、クラス graph 内の文字はすべて含まれますが、クラス cntrl 内の文字は含まれません。

ロケール定義ファイルでは、キーワード upperloweralphadigitxdigit、および punct で指定された文字と空白文字がこのクラスに自動的に含まれます。キーワード cntrl で指定された文字は指定できません。

xdigit

16 進数字に分類される文字を定義します。

POSIX ロケールでは:

0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f

のみが含まれます。

ロケール定義ファイルでは、クラス digit で指定された文字のみを昇順の連続する数値で指定し、そのあとに 16 進数字 10 - 15 (15 を含む) を表す 6 文字のセット (各セットは昇順に指定) を 1 つ以上続けることができます (ABCDEFabcdef など)。移植可能な文字セットの数字 0 - 9、大文字 A - F、および小文字 a - f がこのクラスに自動的に含まれます。

文字クラス xdigit の定義では、文字クラス digit に含まれる文字もここに含まれることが必要です。

blank

空白文字に分類される文字を定義します。

POSIX ロケールでは、空白文字とタブ文字のみが含まれます。

ロケール定義ファイルでは、空白文字とタブ文字がこのクラスに自動的に含まれます。

charclass

1 つ以上のロケール固有の文字クラス名をセミコロンで区切られた文字列として定義します。その後、それぞれの名前付き文字クラスを LC_CTYPE 定義内に定義できます。文字クラス名は、移植可能なファイル名文字セットからの 1 バイト以上 {CHARCLASS_NAME_MAX} バイト以下の英数字で構成されます。文字クラス名の最初の文字を数字にすることはできません。その名前をこのドキュメントに定義されている LC_CTYPE キーワードのいずれとも同じにすることはできません。

charclass-name

名前付きのロケール固有の文字クラスに属するものとして分類される文字を定義します。POSIX ロケールでは、ロケール固有の名前付き文字クラスは必要ありません。クラス名が charclass キーワードで定義されているが、その後に文字が割り当てられていない場合、これはエラーではなく、どの文字も属していないクラスを表しています。charclass-name は、wctype(3C) 関数の property 引数として、正規表現とシェルパターンマッチングのブラケット表現で、および tr(1) コマンドによって使用できます。

toupper

小文字から大文字へのマッピングを定義します。

POSIX ロケールでは、少なくとも 26 個の小文字:

a b c d e f g h i j k l m n o p q r s t u v w x y z

が対応する 26 個の大文字にマップされます:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ロケール定義ファイルでは、このオペランドはセミコロンで区切られた文字ペアで構成されます。各文字ペアの文字はコンマで区切られ、ペアは括弧で囲まれます。各ペアの最初の文字は小文字で、2 番目の文字は対応する大文字です。キーワード lower および upper で指定された文字のみを指定できます。移植可能な文字セットの小文字 a - z とそれに対応する大文字 A - Z がこのマッピングに自動的に含まれますが、toupper キーワードがロケール定義で省略されている場合だけは除きます。

tolower

大文字から小文字へのマッピングを定義します。

POSIX ロケールでは、少なくとも 26 個の大文字:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

が対応する 26 個の小文字にマップされます:

a b c d e f g h i j k l m n o p q r s t u v w x y z

ロケール定義ファイルでは、このオペランドはセミコロンで区切られた文字ペアで構成されます。各文字ペアの文字はコンマで区切られ、ペアは括弧で囲まれます。各ペアの最初の文字は大文字で、2 番目の文字は対応する小文字です。キーワード lower および upper で指定された文字のみを指定できます。tolower キーワードがロケール定義で省略されている場合、マッピングは toupper に指定されたものの逆マッピングになります。

LC_COLLATE

LC_COLLATE カテゴリは、多数のユーティリティー (sort(1)uniq(1) など)、正規表現照合 (regex(5) を参照)、そして strcoll(3C)strxfrm(3C)wcscoll(3C)、および wcsxfrm(3C) 関数のための照合順序定義を提供します。

照合順序定義では、ロケール内の照合要素 (文字および複数文字の照合要素) 間の相対的な順序を定義します。この順序は、照合値によって、つまり各要素に 1 つ以上の照合値 (照合ウェイトとも呼ばれる) を割り当てることによって表されます。次の機能があります:

  1. 複数文字の照合要素。複数文字の照合要素の指定 (つまり、1 つのエンティティーとして照合される 2 つ以上の文字のシーケンス)。

  2. ユーザー定義の照合要素順序。各照合要素には、文字 (基本) 照合順序におけるその順番を定義する照合値が割り当てられます。この順序付けは、正規表現やパターンマッチングによって使用され、また照合ウェイトが明示的に指定されていない場合はソートで使用される照合ウェイトとしても使用されます。

  3. 複数のウェイトと等価クラス。照合要素には、ソートで使用する照合ウェイトを 1 つ以上 (制限値 {COLL_WEIGHTS_MAX} まで) 割り当てることができます。以降は、最初のウェイトをプライマリウェイトと呼びます。

  4. 1 対多のマッピング。1 つの文字が一連の照合要素にマッピングされます。

  5. 等価クラス定義。2 つ以上の照合要素が同じ照合値 (プライマリウェイト) を持ちます。

  6. ウェイトによる順序付け。2 つの文字列を比較してその相対的な順序を判定する場合、それらの 2 つの文字列は最初に一連の照合要素に分割されます。次に、それらの要素の相対的なプライマリウェイトに従って、連続する要素ペア内の要素が比較されます。等しい場合、複数のウェイトが割り当てられていれば、照合要素ペアの 1 つが等しくないと判断されるか、またはウェイトが使い果たされるまで、相対的な以降のウェイトに従って照合要素ペアが再度比較されます。

照合順序定義では、次のキーワードが認識されています。それらについては、以降のセクションで詳しく説明します。

copy

このカテゴリの定義として使用される、既存のロケールの名前を指定します。このキーワードを指定した場合は、ほかのキーワードは指定しません。

collating-element

複数文字の照合要素を表す照合要素シンボルを定義します。このキーワードはオプションです。

collating-symbol

照合順序文で使用する照合シンボルを定義します。このキーワードはオプションです。

order_start

照合規則を定義します。この文のあとに、文字の照合値と照合ウェイトを照合要素に割り当てる、1 つ以上の照合順序文が続きます。

order_end

照合順序文の終了を指定します。

collating-element キーワード

文字セット内の照合要素に加えて、collating-element キーワードを使用すると、複数文字の照合要素を定義できます。構文は次のとおりです:

"collating-element %s from \"%s\"\n",<collating-symbol>,<string>

<collating-symbol> オペランドは山括弧 (<>) で囲まれたシンボリック名であり、現在の charmap ファイル (存在する場合) 内のシンボリック名、またはこの照合定義内で定義されているほかのシンボリック名と重複してはいけません。string オペランドは、1 つのエンティティーとして照合される 2 文字以上の文字列です。このキーワードで定義される <collating-element> は、LC_COLLATE カテゴリでのみ認識されます。

例:

collating-element <ch> from “<c><h>”
collating-element <e-acute> from “<acute><e>”
collating-element <ll> from “ll

collating-symbol キーワード

このキーワードは、照合順序文、つまり order_start キーワードと order_end キーワードの間で使用するシンボルの定義に使われます。構文は次のとおりです:

"collating-symbol %s\n",<collating-symbol>

<collating-symbol> は山括弧 (<>) で囲まれたシンボリック名であり、現在の charmap ファイル (存在する場合) 内のシンボリック名、またはこの照合定義内で定義されているほかのシンボリック名と重複してはいけません。

このキーワードによって定義される collating-symbol は、LC_COLLATE カテゴリでのみ認識されます。

例:

collating-symbol <UPPER_CASE>
collating-symbol <HIGH>

collating-symbol キーワードは、文字順序シーケンス内の相対位置に関連付けることができるシンボリック名を定義します。そのようなシンボリック名はいずれの照合要素も表しませんが、ウェイトとして使用できます。

order_start キーワード

order_start キーワードは、照合順序エントリの前に置く必要があり、この照合順序定義のウェイトの数とその他の照合規則を定義します。

order_start キーワードの構文は次のとおりです:

"order_start %s;%s;...;%s\n",<sort-rules>,<sort-rules>

order_start キーワードのオペランドはオプションです。存在する場合、オペランドは文字列が比較されるときに適用される規則を定義します。オペランドの数は、各要素に割り当てられているウェイトの数を定義します。オペランドが存在しない場合は、1 つの forward オペランドが想定されます。存在する場合は、最初のオペランドが最初の (プライマリ) ウェイトを使って文字列を比較するときに適用される規則を定義し、2 番目のオペランドが 2 番目のウェイトを使って文字列を比較するときに適用される規則を定義し、以下同様になります。オペランドはセミコロン (;) で区切ります。各オペランドは、コンマ (,) で区切った 1 つ以上の照合指令で構成されます。オペランドの数が制限値 {COLL_WEIGHTS_MAX} を超えると、ユーティリティーによって警告メッセージが発行されます。次の指令がサポートされています:

forward

ウェイトレベルの比較演算が文字列の先頭から文字列の終わりに向かって行われることを指定します。

backward

ウェイトレベルの比較演算が文字列の終わりから文字列の先頭に向かって行われることを指定します。

position

ウェイトレベルの比較演算で、IGNORE の対象とならない文字列内の要素の相対位置が考慮されることを指定します。比較の開始から IGNORE の対象となる最少の照合要素の後ろにある、IGNORE の対象とならない要素を含む文字列が最初に照合されます。両方の文字列内で、IGNORE の対象とならない文字が同じ相対位置に含まれている場合、それらの要素に割り当てられた照合値によって順序付けが決められます。同等の場合、IGNORE の対象とならない後続の文字が同様に考慮されます。

指令 forward および backward は相互に排他的です。

例:

order_start	forward;backward

オペランドを指定しない場合は、1 つの forward オペランドが想定されます。

照合順序

order_start キーワードのあとには照合識別子エントリが続きます。照合要素エントリの構文は次のとおりです:

"%s %s;%s;...;%s\n"<collating-identifier>,<weight>,<weight>,...

collating-identifier は、上記の「ロケール定義」で説明している文字、<collating-element>、<collating-symbol>、省略記号、または特殊シンボル UNDEFINED で構成されます。照合要素が指定される順序によって、各照合要素がそれに続く要素に比べて小さくなるように文字順序シーケンスが決められます。NUL 文字はほかのどの文字と比べても小さくなります。

<collating-element> は、複数文字の照合要素を指定するために使用され、<collating-element> で指定された文字シーケンスが 1 つの単位として、その場所によって指定された相対的な順序で照合されることを示します。

<collating-symbol> は、ウェイトで使用する、相対的な順序での位置を定義するために使用します。 <collating-symbol> ではウェイトは指定されません。

省略記号は、一連の文字がそれらのエンコードされた文字値に従って照合されることを指定します。それは、現在のコード化文字セット内にある、前の行の文字の値よりも大きく、次の行の文字の値よりも小さいコード化文字セット値を持つすべての文字が、それらのコード化文字セット値に従って昇順に、前の文字と次の文字間に文字照合順序で配置されることを示すものと解釈されます。現在のコード化文字セット内で、最初の省略記号は前の行に NUL 文字が指定されているかのように解釈され、末尾の省略記号は次の行にもっとも大きいコード化文字セット値が指定されているかのように解釈されます。現在のコード化文字セット内で前の行と次の行に文字が指定されていない場合、省略記号は無効とみなされます。省略記号の使用により、定義が特定のコード化文字セットに結び付けられ、実装間で定義を移植できないようにすることができます。

シンボル UNDEFINED は、明示的にも、または省略記号によっても指定されていないすべてのコード化文字セット値を含むものと解釈されます。このような文字は、文字照合順序内の、このシンボルで指示された位置に、それらのコード化文字セット値に従って昇順に挿入されます。UNDEFINED シンボルが指定されず、現在のコード化文字セットに、このセクションで定められていない文字が含まれている場合、ユーティリティーによって警告メッセージが発行され、そのような文字は文字照合順序の最後に置かれます。

各照合要素のオプションのオペランドは、照合要素のプライマリ、セカンダリ、またはそれ以降のウェイトを定義するために使用されます。最初のオペランドは相対的なプライマリウェイトを指定し、2 番目は相対的なセカンダリウェイトを指定し、以下同様になります。2 つ以上の照合要素に同じウェイトを割り当てることができます。つまり、それらが同じプライマリウェイトを持つ場合、それらは同じ等価クラスに属します。order_start キーワードで対応するレベルに対して position 照合指令が指定されていなければ、照合はウェイトレベルごとに、IGNORE の対象となる要素が削除されたかのように動作します。そして、次の要素ペアがそれらの要素の相対的なウェイトに従って比較されます。2 つの文字列を比較して等しい場合は、制限値 {COLL_WEIGHTS_MAX} に達するまで、次のウェイトレベルに対してこのプロセスが繰り返されます。

ウェイトは、上記の「ロケール定義」で説明している文字、<collating-symbol>、<collating-element>、省略記号、または特殊シンボル IGNORE として表されます。1 つの文字、< collating–symbol>、または <collating–element> は、文字または文字自体ではなく、文字またはシンボルの文字照合順序における相対位置を表します。このように、絶対値をウェイトに割り当てるのではなく、特定のウェイトが、文字照合順序での順序に基づいて照合要素に割り当てられた相対的な順序値を使って表されます。

1 対多のマッピングは、2 つ以上の連結された文字またはシンボリック名を指定することで示されます。たとえば、文字 <eszet> に文字列 “<s><s>” をウェイトとして指定した場合は、文字 <eszet> のすべてのオカレンスが <s><s> によって置き換えられたかのように比較が行われます (<s> には照合ウェイト <s> が割り当てられているものとします)。<eszet> と <s><s> を等価クラスとして定義する必要がある場合は、文字列 ss に対して照合要素を定義する必要があります。

省略記号で指定されたすべての文字にはデフォルトで、文字の相対的な順序に等しい、一意のウェイトが割り当てられます。明示的または暗黙的な UNDEFINED 特殊シンボルで指定された文字には、デフォルトで同じプライマリウェイトが割り当てられます (つまり、それらは同じ等価クラスに属します)。ウェイトとしての省略記号は、シーケンス内の各文字が、文字照合順序でのそれらの文字の相対的な順序に等しい、一意のウェイトを持つことを意味するものと解釈されます。省略記号のウェイトとしての使用は、照合要素が省略記号でも特殊シンボル UNDEFINED でもない場合、エラーとして扱われます。

ウェイトとしての特殊なキーワード IGNORE は、IGNORE が指定されているレベルのウェイトを使用して文字列を比較するときに、その照合要素が無視される、つまり文字列にその照合要素が含まれていなかったかのようになることを示します。正規表現およびパターンマッチングでは、プライマリウェイトで IGNORE の対象となるすべての文字によって等価クラスが形成されます。

空のオペランドは、照合要素そのものとして解釈されます。

たとえば、順序文:

<a>	 <a>;<a>

は次と同じです:

<a>

省略記号は、照合要素が省略記号だった場合はオペランドとして使用でき、その省略記号によって定義された各文字の値として解釈されます。

このセクションで定義されている照合順序は、正規表現におけるブラケット表現の解釈を定義します。

例:

order_start
forward;backward
UNDEFINED
IGNORE;IGNORE
<LOW>
<space>
<LOW>;<space>
. . .
<LOW>;. . .
<a>
<a>;<a>
<a-acute>
<a>;<a-acute>
<a-grave>
<a>;<a-grave>
<A>
<a>;<A>
<A-acute>
<a>;<A-acute>
<A-grave>
<a>;<A-grave>
<ch>
<ch>;<ch>
<Ch>
<ch>;<Ch>
<s>
<s>;<s>
<eszet>
"<s><s>";"<eszet><eszet>"
order_end

この例は、次のように解釈されます:

  1. UNDEFINED は、この定義内に (明示的に、または省略記号で) 指定されていないすべての文字が照合の際に無視されることを意味します。正規表現の際には、それらは先頭に順序付けられます。

  2. <space> と <a> の間にあるすべての文字は同じプライマリ等価クラスと、エンコードされた序数値に基づく個別のセカンダリウェイトを持ちます。

  3. 大文字または小文字の a に基づいた文字はすべて同じ 1 次等価クラスに属します。

  4. 複数文字の照合要素 <ch> は照合シンボル <ch> で表され、複数文字の照合要素 <Ch> と同じ 1 次等価クラスに属します。

order_end キーワード

照合順序エントリは、order_end キーワードで終了させる必要があります。

LC_MONETARY

LC_MONETARY カテゴリは、通貨の数値情報の書式設定に使用される規則と記号を定義します。この情報は、localeconv(3C) 関数によって入手できます

ロケールのこのカテゴリには、次の項目が定義されています。項目名は、ロケールの定義時に localedef(1) ユーティリティーによって認識されるキーワードです。それらは、<locale.h> に定義されている lconv 構造のメンバー名にも似ています。localeconv 関数は、未定義の整数項目に対して {CHAR_MAX} を返し、未定義またはサイズが 0 の文字列項目に対して空の文字列 ("") を返します。

ロケール定義ファイルでは、オペランドは文字列です。一部のキーワードでは、文字列に整数しか含めることができません。提供されていないキーワード、空の文字列 ("") に設定された文字列値、–1 に設定された整数のキーワードは、その値がロケールで使用できないことを示すために使われます。

int_curr_symbol

国際通貨記号。オペランドは 4 文字からなる文字列であり、最初の 3 文字には ISO 4217 標準に指定されたものに合致した英字の国際通貨記号が含まれます。4 番目の文字は、国際通貨記号と金額を区切るために使われる文字です。

currency_symbol

ローカルの通貨記号として使用される文字列。

mon_decimal_point

オペランドは、金額を書式設定する際に小数点 (基数文字) として使用される記号を含む文字列です。

mon_thousands_sep

オペランドは、書式設定された金額の中で小数点の左側にある数字の位取り記号として使用される記号を含む文字列です。

mon_grouping

書式設定された金額の中で数字の位取りの桁数を定義します。オペランドは、セミコロンで区切られた一連の整数です。各整数は位取りの桁数を指定します。最初の整数は小数点のすぐ左側の桁数を定義し、以降の整数はその左側の桁数を定義します。最後の整数が –1 でない場合、その前の桁数 (存在する場合) が残りの数字に対して繰り返し使用されます。最後の整数が –1 の場合、これ以上の位取りは行われません。

mon_grouping キーワードの解釈の例を次に示します。書式設定される値は 123456789 で、mon_thousands_sep' であると仮定して、次の表にその結果が表示されています。3 列目には、この位取りに対応するために localeconv 関数で使用される、ISO C 標準に含まれているのと同等の文字列が表示されています。

mon_grouping   Formatted Value  ISO C String

3;-1           123456'789       "\3\177"
3              123'456'789      "\3"
3;2;-1         1234'56'789      "\3\2\177"
3;2            12'34'56'789     "\3\2"
-1             1234567898       "\177"

これらの例では、{CHAR_MAX} の 8 進値は 177 です。

positive_sign

書式設定された負でない金額を示すために使用される文字列。

negative_sign

書式設定された負の金額を示すために使用される文字列。

int_frac_digits

int_curr_symbol を使用して書式設定された金額の中で記述される小数点以下の桁数 (小数点の右側の桁数) を表す整数。

frac_digits

currency_symbol を使用して書式設定された金額の中で記述される小数点以下の桁数 (小数点の右側の桁数) を表す整数。

p_cs_precedes

SUSv3 標準に準拠したアプリケーションでは、currency_symbol が、負でない金額値の前に置かれる場合は 1 に設定され、その記号がその値のあとに続く場合は 0 に設定される整数。

SUSv3 標準に準拠しないアプリケーションでは、currency_symbol または int_currency_symbol が、負でない金額値の前に置かれる場合は 1 に設定され、その記号がその値のあとに続く場合は 0 に設定される整数。

p_sep_by_space

SUSv3 標準に準拠したアプリケーションでは、currency_symbol と負でない金額値が空白で区切られない場合は 0 に設定され、その記号とその値が空白で区切られる場合は 1 に設定され、その記号と符号文字列が隣接する場合に両者が空白で区切られる場合は 2 に設定される整数。

SUSv3 標準に準拠しないアプリケーションでは、currency_symbol または int_curr_symbol と負でない金額値が空白で区切られない場合は 0 に設定され、その記号とその値が空白で区切られる場合は 1 に設定され、その記号と符号文字列が隣接する場合に両者が空白で区切られる場合は 2 に設定される整数。

n_cs_precedes

SUSv3 標準に準拠したアプリケーションでは、currency_symbol が、負の金額値の前に置かれる場合は 1 に設定され、その記号がその値のあとに続く場合は 0 に設定される整数。

SUSv3 標準に準拠しないアプリケーションでは、currency_symbol または int_currency_symbol が、負の金額値の前に置かれる場合は 1 に設定され、その記号がその値のあとに続く場合は 0 に設定される整数。

n_sep_by_space

SUSv3 標準に準拠したアプリケーションでは、currency_symbol と負の金額値が空白で区切られない場合は 0 に設定され、その記号とその値が空白で区切られる場合は 1 に設定され、その記号と符号文字列が隣接する場合に両者が空白で区切られる場合は 2 に設定される整数。

SUSv3 標準に準拠しないアプリケーションでは、currency_symbol または int_curr_symbol と負の金額値が空白で区切られない場合は 0 に設定され、その記号とその値が空白で区切られる場合は 1 に設定され、その記号と符号文字列が隣接する場合に両者が空白で区切られる場合は 2 に設定される整数。

p_sign_posn

負でない金額値における、positive_sign の位置を示す値に設定される整数。p_sign_posnn_sign_posn の両方に対して、次の整数値が認識されています:

SUSv3 標準に準拠したアプリケーションでは:

0

金額と currency_symbol を括弧で囲みます。

1

金額と currency_symbol の前に符号文字列が置かれます。

2

金額と currency_symbol のあとに符号文字列が続きます。

3

currency_symbol の前に符号文字列が置かれます。

4

currency_symbol のあとに符号文字列が続きます。

SUSv3 標準に準拠しないアプリケーションでは:

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 の位置を示す値に設定される整数。

int_p_cs_precedes

int_curr_symbol が、負でない金額値の前に置かれる場合は 1 に設定され、その記号がその値のあとに続く場合は 0 に設定される整数。

int_n_cs_precedes

int_curr_symbol が、負の金額値の前に置かれる場合は 1 に設定され、その記号がその値のあとに続く場合は 0 に設定される整数。

int_p_sep_by_space

int_curr_symbol と負でない金額値が空白で区切られない場合は 0 に設定され、その記号とその値が空白で区切られる場合は 1 に設定され、その記号と符号文字列が隣接する場合に両者が空白で区切られる場合は 2 に設定される整数。

int_n_sep_by_space

int_curr_symbol と負の金額値が空白で区切られない場合は 0 に設定され、その記号とその値が空白で区切られる場合は 1 に設定され、その記号と符号文字列が隣接する場合に両者が空白で区切られる場合は 2 に設定される整数。

int_p_sign_posn

国際書式で書式設定された正の金額値における、positive_sign の位置を示す値に設定される整数。int_p_sign_posnint_n_sign_posn に対して、次の整数値が認識されています:

0

金額と int_curr_symbol を括弧で囲みます。

1

金額と int_curr_symbol の前に符号文字列が置かれます。

2

金額と int_curr_symbol の前に符号文字列が置かれます。

3

int_curr_symbol の前に符号文字列が置かれます。

4

int_curr_symbol のあとに符号文字列が続きます。

int_n_sign_posn

国際書式で書式設定された負の金額値における、negative_sign の位置を示す値に設定される整数。

さまざまな組み合わせの結果を次の表に示します:

p_sep_by_space
2
1
0
p_cs_precedes= 1
p_sign_posn= 0
($1.25)
($1.25)
($1.25)
p_sign_posn= 1
+$1.25
+$1.25
+$1.25
p_sign_posn= 2
$1.25+
$1.25+
$1.25+
p_sign_posn= 3
+$1.25
+$1.25
+$1.25
p_sign_posn= 4
$+1.25
$+1.25
$+1.25
p_cs_precedes= 0
p_sign_posn= 0
(1.25 $)
(1.25 $)
(1.25$)
p_sign_posn= 1
+1.25 $
+1.25 $
+1.25$
p_sign_posn= 2
1.25$ +
1.25 $+
1.25$+
p_sign_posn= 3
1.25+ $
1.25 +$
1.25+$
p_sign_posn= 4
1.25$ +
1.25 $+
1.25$+

POSIX ロケールでの金額の書式設定定義は次に従います。コードリストは localedef(1) の入力を表し、表は同じ情報に localeconv(3C) および nl_langinfo(3C) 形式を加えたものを表しています。すべての値は POSIX ロケールで未指定です。

LC_MONETARY
# This is the POSIX locale definition for
# the LC_MONETARY category.
#
int_curr_symbol       ""
currency_symbol       ""
mon_decimal_point     ""
mon_thousands_sep     ""
mon_grouping          -1
positive_sign         ""
negative_sign         ""
int_frac_digits       -1
frac_digits           -1
p_cs_precedes         -1
p_sep_by_space        -1
n_cs_precedes         -1
n_sep_by_space        -1
p_sign_posn           -1
n_sign_posn           -1
int_p_cs_precedes     -1
int_p_sep_by_space    -1
int_n_cs_precedes     -1
int_n_sep_by_space    -1
int_p_sign_posn       -1
int_n_sign_posn       -1
#
END LC_MONETARY

エントリ n/a は、その値が POSIX ロケールで使用できないことを示します。

LC_NUMERIC

LC_NUMERIC カテゴリは、通貨以外の数値情報の書式設定に使用される規則と記号を定義します。この情報は、localeconv(3C) 関数によって入手できます。

ロケールのこのカテゴリには、次の項目が定義されています。項目名は、ロケールの定義時に localedef ユーティリティーによって認識されるキーワードです。それらは、<locale.h> に定義されている lconv 構造のメンバー名にも似ています。localeconv() 関数は、未指定の整数項目に対して {CHAR_MAX} を返し、未指定またはサイズが 0 の文字列項目に対して空の文字列 (“”) を返します。

ロケール定義ファイルでは、オペランドは文字列です。一部のキーワードでは、文字列に整数しか含めることができません。提供されていないキーワード、空の文字列 (“”) に設定された文字列値、–1 に設定された整数のキーワードは、その値がロケールで使用できないことを示すために使われます。次のキーワードが認識されています:

decimal_point

オペランドは、金額以外の数を書式設定する際に小数点 (基数文字) として使用される記号を含む文字列です。このキーワードを省略することも、空の文字列に設定することもできません。標準によって decimal_point が単一バイトに制限されているコンテキストでは、複数バイトのオペランドを指定した結果は不確定です。

thousands_sep

オペランドは、書式設定された金額以外の数の中で小数点の左側にある数字の位取り記号として使用される記号を含む文字列です。標準によって thousands_sep が単一バイトに制限されている状況では、複数バイトのオペランドを指定した結果は不確定です。

grouping

書式設定された金額以外の数の中で数字の位取りの桁数を定義します。オペランドは、セミコロンで区切られた一連の整数です。各整数は位取りの桁数を指定します。最初の整数は小数点のすぐ左側の桁数を定義し、以降の整数はその左側の桁数を定義します。最後の整数が -1 でない場合、その前の桁数 (存在する場合) が残りの数字に対して繰り返し使用されます。最後の整数が –1 の場合、これ以上の位取りは行われません。POSIX ロケールでの金額以外の数の書式設定定義は次に従います。コードリストは localedef の入力を表し、表は同じ情報に localeconv 値と nl_langinfo 定数を加えたものを表しています。

LC_NUMERIC
# This is the POSIX locale definition for
# the LC_NUMERIC category.
#
decimal_point	"<period>"
thousands_sep	""
grouping	-1
#
END LC_NUMERIC
POSIX ロケール
langinfo
localeconv()
localedef
項目
定数
decimal_point
"."
RADIXCHAR
"."
.
thousands_sep
n/a
THOUSEP
""
""
grouping
n/a
-
""
-1

エントリ n/a は、その値が POSIX ロケールで使用できないことを示します。

LC_TIME

LC_TIME カテゴリは、date(1) によってサポートされるフィールド記述子の解釈を定義し、strftime(3C)wcsftime(3C)strptime(3C)、および nl_langinfo(3C) 関数の動作に影響を及ぼします。C 言語へのアクセスとロケール定義のインタフェースはかなり異なっているため、それらについては個別に説明します。ロケール定義では、次の必須キーワードが認識されています:

abday

%a フィールド記述子に対応する、曜日の短縮名を定義します (strftime()wcsftime()、および strptime() 関数の変換仕様)。オペランドは、セミコロンで区切られた 7 つの文字列で構成され、それぞれが二重引用符で囲まれています。最初の文字列が Sunday に対応する曜日の短縮名で、2 番目が Monday に対応する曜日の短縮名となり、以下同様です。

day

%A フィールド記述子に対応する、曜日の完全な名前を定義します。オペランドは、セミコロンで区切られた 7 つの文字列で構成され、それぞれが二重引用符で囲まれています。最初の文字列が Sunday に対応する曜日の完全な名前で、2 番目が Monday に対応する曜日の完全な名前となり、以下同様です。

abmon

%b フィールド記述子に対応する、月の短縮名を定義します。オペランドは、セミコロンで区切られた 12 個の文字列で構成され、それぞれが二重引用符で囲まれています。最初の文字列が 1 年の最初の月 (January) の短縮名で、2 番目が 2 番目の月の短縮名となり、以下同様です。

mon

%B フィールド記述子に対応する、月の完全な名前を定義します。オペランドは、セミコロンで区切られた 12 個の文字列で構成され、それぞれが二重引用符で囲まれています。最初の文字列が 1 年の最初の月 (January) の完全な名前で、2 番目が 2 番目の月の完全な名前となり、以下同様です。

d_t_fmt

%c フィールド記述子に対応する、日付と時間の適切な表現を定義します。オペランドは 1 つの文字列で構成され、文字とフィールド記述子の任意の組み合わせを含めることができます。また、この文字列にはエスケープシーケンス \\、 \a\b\f\n\r\t\v を含めることもできます。

date_fmt

%C フィールド記述子に対応する、日付と時間の適切な表現を定義します。オペランドは 1 つの文字列で構成され、文字とフィールド記述子の任意の組み合わせを含めることができます。また、この文字列にはエスケープシーケンス \\ \a\b\f\n\r\t\v を含めることもできます。

d_fmt

%x フィールド記述子に対応する、適切な日付表現を定義します。オペランドは 1 つの文字列で構成され、文字とフィールド記述子の任意の組み合わせを含めることができます。また、この文字列にはエスケープシーケンス \\ \a\b\f\n\r\t\v を含めることもできます。

t_fmt

%X フィールド記述子に対応する、適切な時間表現を定義します。オペランドは 1 つの文字列で構成され、文字とフィールド記述子の任意の組み合わせを含めることができます。また、この文字列にはエスケープシーケンス \\ \a\b\f\n\r\t\v を含めることもできます。

am_pm

%p フィールド記述子に対応する、ante meridiem および post meridiem 文字列の適切な表現を定義します。オペランドは、セミコロンで区切られた 2 つの文字列で構成され、それぞれが二重引用符で囲まれています。最初の文字列が ante meridiem 指定を表し、最後の文字列が post meridiem 指定を表します。

t_fmt_ampm

%r フィールド記述子に対応する、am_pm を含む 12 時間形式による適切な時間表現を定義します。オペランドは 1 つの文字列で構成され、文字とフィールド記述子の任意の組み合わせを含めることができます。文字列が空の場合、12 時間形式はこのロケールでサポートされません。

era

ロケールにおける、年号ごとの年の数え方や表示の仕方を定義します。オペランドは、セミコロンで区切られた文字列で構成されます。各文字列は、次の形式による年号記述セグメントです:

direction:offset:start_date:end_date:era_name:era_format

次の定義に従います。各種年号を記述するのに必要な数だけ年号記述セグメントを指定できます。

年号の開始はもっとも初期の時点ではないことがあります。たとえば、西暦紀元前は西暦元年 1 月 1 日の前日に始まり、時間をさかのぼるにつれて増えていきます。

direction

+ または 文字のどちらか。+ 文字は、start_date に近い年の方が end_date に近い年よりも小さい数字になっていることを示します。 文字は、start_date に近い年の方が end_date に近い年よりも大きい数字になっていることを示します。

offset

%Eg および %Ey フィールド記述子に対応する、年号の start_date にもっとも近い年を表す数値。

start_date

形式 yyyy/mm/dd による日付。ここでの yyyymm、および dd はそれぞれ、年号の開始の年、月、および日を表す数値です。西暦元年より以前の年は、負の数で表されます。

end_date

start_date と同じ形式、または 2 つの特殊な値 –* または +* のいずれかによる年号の終了日付。–* 値は、最終日付が時の始まりになることを示します。+* 値は、最終日付が時の終わりになることを示します。

era_name

%EC フィールド記述子に対応する、年号の名前を表す文字列。

era_format

%EG および %EY フィールド記述子に対応する、年号における年を書式設定するための文字列。

era_d_fmt

%Ex フィールド記述子に対応する、代替年号表記による日付の形式を定義します。

era_t_fmt

%EX フィールド記述子に対応する、ロケールの適切な代替時間形式を定義します。

era_d_t_fmt

%Ec フィールド記述子に対応する、ロケールの適切な代替日付/時間形式を定義します。

alt_digits

%O フィールド記述子修飾子に対応する、数字用の代替シンボルを定義します。オペランドは、セミコロンで区切られた文字列で構成され、それぞれが二重引用符で囲まれています。最初の文字列が 0 に対応する代替シンボルで、2 番目の文字列が 1 に対応する代替シンボルとなり、以下同様です。最大 100 個の代替シンボル文字列を指定できます。%O 修飾子は、そのフィールド記述子によって指定された値に対応する文字列がその値の代わりに使用されることを示します。

LC_TIME の C 言語へのアクセス

次の情報にアクセスできます。これらは <langinfo.h> に定義されている定数に対応しており、nl_langinfo(3C) 関数の引数として使用できます。

ABDAY_x

曜日の短縮名 (Sun など)。x は 1 - 7 の数値です。

DAY_x

曜日の完全な名前 (Sunday など)。x は 1 - 7 の数値です。

ABMON_x

月の短縮名 (Jan など)。x は 1 - 12 の数値です。

MON_x

月の完全な名前 (January など)。x は 1 - 12 の数値です。

D_T_FMT

適切な日付と時間の表現。

D_FMT

適切な日付表現。

T_FMT

適切な時間表現。

AM_STR

適切な a.m. 接辞。

PM_STR

適切な p.m. 接辞。

T_FMT_AMPM

AM_STRPM_STR を含む 12 時間形式による適切な時間表現。

ERA

年号記述セグメント。ロケールにおける、年号ごとの年の数え方や表示の仕方を記述します。各年号記述セグメントの形式は次のとおりです:

direction:offset:start_date:end_date:era_name:era_format

次の定義に従います。各種年号を記述するのに必要な数だけ年号記述セグメントがあります。年号記述セグメントはセミコロンで区切られます。

年号の開始はもっとも初期の時点ではないことがあります。たとえば、西暦紀元前は西暦元年 1 月 1 日の前日に始まり、時間をさかのぼるにつれて増えていきます。

direction

+ または – 文字のどちらか。+ 文字は、start_date に近い年の方が end_date に近い年よりも小さい数字になっていることを示します。– 文字は、start_date に近い年の方が end_date に近い年よりも大きい数字になっていることを示します。

offset

年号の start_date にもっとも近い年を表す数値。

start_date

形式 yyyy/mm/dd による日付。ここでの yyyymm、および dd はそれぞれ、年号の開始の年、月、および日を表す数値です。西暦元年より以前の年は、負の数で表されます。

end_date

start_date と同じ形式、または 2 つの特殊な値 –* または +* のいずれかによる年号の終了日付。–* 値は、最終日付が時の始まりになることを示します。+* 値は、最終日付が時の終わりになることを示します。

era_name

%EC 変換仕様に対応する年号。

era_format

%EY および %EY 変換仕様に対応する、年号における年の形式。

ERA_D_FMT

年号の日付の形式。

ERA_T_FMT

%EX フィールド記述子に対応する、ロケールの適切な代替時間形式。

ERA_D_T_FMT

%Ec フィールド記述子に対応する、ロケールの適切な代替日付/時間形式。

ALT_DIGITS

%O 変換仕様修飾子に対応する、数字用の代替シンボル。この値はセミコロンで区切られたシンボルで構成されます。最初が 0 に対応する代替シンボルで、2 番目が 1 に対応する代替シンボルとなり、以下同様です。最大 100 個の代替シンボルを指定できます。次の表に、前述の項目間の対応関係と、date(1)strftime(3C)wcsftime(3C)、および strptime(3C) 関数で使用される変換指示子を示します。

localedef
langinfo
変換
キーワード
定数
指示子
abday
ABDAY_x
%a
day
DAY_x
%A
abmon
ABMON_x
%b
mon
MON
%B
d_t_fmt
D_T_FMT
%c
date_fmt
DATE_FMT
%C
d_fmt
D_FMT
%x
t_fmt
T_FMT
%X
am_pm
AM_STR
%p
am_pm
PM_STR
%p
t_fmt_ampm
T_FMT_AMPM
%r
era
ERA
%EC, %Eg,
%EG, %Ey, %EY
era_d_fmt
ERA_D_FMT
%Ex
era_t_fmt
ERA_T_FMT
%EX
era_d_t_fmt
ERA_D_T_FMT
%Ec
alt_digits
ALT_DIGITS
%O

LC_TIME の一般情報

POSIX ロケールのフィールド記述子のいくつか (月の名前など) は頭文字を大文字にして示しますが、ほかのロケールではその必要はありません。これらのフィールドを使用するプログラムでは、出力が文頭に使用される場合に大文字使用の調整が必要になることがあります。

LC_TIME での abdaydaymon、および abmon の説明では、グレゴリオ暦様式のカレンダー (1 週間は 7 日、1 年は 12 か月、うるう年など) を暗に示しています。ほかの種類のカレンダーの時間文字列の書式設定については、このドキュメントでは扱っていません。

ロケール定義」の date と、strftime(3C) で規定されているように、オプションのキーワードに対応するフィールド記述子は、修飾子とそのあとに続く従来のフィールド記述子 (%Ex など) で構成されています。オプションのキーワードが実装によってサポートされていなかったり、現在のロケールで未定義だったりする場合、これらのフィールド記述子は従来のフィールド記述子として扱われます。たとえば、次のキーワードがあると想定します:

alt_digits	"0th" ; "1st" ; "2nd" ; "3rd" ; "4th" ; "5th" ; \
"6th" ; "7th" ; "8th" ; "9th" ; "10th">
d_fmt	"The %Od day of %B in %Y"

7/4/1776 については、%x フィールド記述子によって「The 4th day of July in 1776」となる一方、7/14/1789 は「The 14 day of July in 1789」と表示されます。上記の例は、実例を示すためだけのものです。%O 修飾子は主に、date 形式での漢字またはヒンディー語の数字での使用を意図しています。

LC_MESSAGES

LC_MESSAGES カテゴリは、肯定応答および否定応答の形式と値を定義します。

次のキーワードがロケール定義ファイルの一部として認識されています。nl_langinfo(3C) 関数は、最初の 4 つのキーワードの大文字バージョンを受け入れます。

yesexpr

オペランドは、肯定または否定応答を求める質問への受け入れ可能な肯定応答を記述する拡張正規表現 (regex(5) を参照) で構成されます。

noexpr

オペランドは、肯定または否定応答を求める質問への受け入れ可能な否定応答を記述する拡張正規表現で構成されます。

yesstr

オペランドは、プロンプトなどで受け入れ可能な肯定応答を一覧表示するメッセージを作成するためにアプリケーションで使用できる固定文字列 (正規表現ではなく) で構成されます。

nostr

オペランドは、受け入れ可能な否定応答を一覧表示するメッセージを作成するためにアプリケーションで使用できる固定文字列で構成されます。POSIX ロケールの肯定および否定応答の形式と値は、localedef の入力を表すコードリスト、同じ情報に nl_langinfo() 定数を加えたものを表す表に従います。

LC_MESSAGES
# This is the POSIX locale definition for
# the LC_MESSAGES category.
#
yesexpr "<circumflex><left-square-bracket><y><Y>\
        <right-square-bracket>"
#
noexpr  "<circumflex><left-square-bracket><n><N>\
        <right-square-bracket>"
#
yesstr	"yes"
nostr	"no"
END LC_MESSAGES
localedef キーワード
langinfo 定数
POSIX ロケールの値
yesexpr
YESEXPR
"^[yY]"
noexpr
NOEXPR
"^[nN]"
yesstr
YESSTR
"yes"
nostr
NOSTR
"no"

SUSv3 標準に準拠したアプリケーションでは、yesstr および nostr に関する情報は使用できません。

関連項目

date(1), locale(1), localedef(1), sort(1), tr(1), uniq(1), localeconv(3C), nl_langinfo(3C), setlocale(3C), strcoll(3C), strftime(3C), strptime(3C), strxfrm(3C), wcscoll(3C), wcsftime(3C), wcsxfrm(3C), wctype(3C), attributes(5), charmap(5), extensions(5), regex(5)