ロケール定義ソース・ファイルは,ロケールを記述する 1つ以上のカテゴリで構成されます。ロケール定義ソース・ファイルは, LOCALE COMPILEコマンドを使用することによって,ロケールに変換できます。 ロケールの変更は,ロケール定義ソース・ファイルを編集し, その新しいソース・ファイルに対してもう一度 LOCALE COMPILEコマンドを実行することによってのみ行うことができます。 ロケール・ソース・ファイルの各セクションが, ロケール・データのカテゴリを定義します。ソース・ファイルは, 同じカテゴリに対して複数のセクションを持つことはできません。
次の標準ロケール・カテゴリがサポートされます。
ロケール・ソース・ファイルの先頭に,オプションの宣言を指定することによって, ロケール・カテゴリ定義で使用される, 省略時のコメント文字およびエスケープ文字を変更できます。
エスケープ文字は,ロケール・ファイルの中で10進または 16進定数を指定するときに使用します。省略時のエスケープ文字は, バックスラッシュ(\)です。別のエスケープ文字を定義するには, 次の形式で行を指定します。
escape_char <char_symbol>
コメント文字は,ロケール・ファイル内の,コメント・エントリの先頭文字です。 省略時のコメント文字は,番号記号(#)です。別のコメント文字を定義するには, 次の形式を使用します。
comment_char <char_symbol>
上の例で,<char_symbol>は,ロケール・コードセットを作成するのに使用された charmapファイルで定義されている,文字のシンボル名です。escape_charまたは comment_charと,<char_symbol>とのあいだは,1つ以上の空白文字 (スペースまたはタブ)で区切らなければなりません。
各カテゴリ・ソース定義は,次の内容で構成されます。
例を次に示します。
LC_CTYPE <source for LC_CTYPE category> END LC_CTYPE
すべてのカテゴリについて,ソースは,キーワード,文字列,文字リテラル, および文字シンボルを使用して指定します。各キーワードは, 定義と規則のいずれかを示しています。 キーワードが含まれている文の残りの部分には, キーワードに対するオペランドが含まれます。オペランドとキーワードは, 1つ以上の空白文字(スペースまたはタブ)で区切ります。なお, 行を終了する改行文字の前に,最終文字としてバックスラッシュ(\)を入力すると, 文は次の行に継続します。1桁目にコメント文字(#)がある行は, コメント行として扱われます。
シンボル名は,左山括弧文字(<)ではじまり,右山括弧文字(>)で終了します。 <および>のあいだには,制御文字およびスペース文字を除く, Portable Character Setのすべての文字を指定できます。たとえば, <A- diaeresis>という指定は,ある文字のシンボル名として有効です。 ロケール・ソース・ファイルの中で参照されるシンボル名は, Portable Character Setを使用して,またはそのロケール用の文字セット記述 (charmap)ファイルの中で定義する必要があります。
文字リテラルは,文字そのもの,あるいは10進,16進,または8進定数です。 10進定数は,2桁または3桁の10進数により,次の形式で構成されます。ここで, nは10進数を表します。
\dnn or \dnnn
16進定数は,2桁の16進数により,次の形式で構成されます。ここで, nは16進数を表します。
\xnn
8進定数は,2桁または3桁の8進数により,次の形式で構成されます。ここで, nは8進数を表します。
\nn or \nnn
ロケール定義ソース・ファイル内で, すべてのカテゴリを明示的に定義する必要はありません。 ロケール定義ソース・ファイルの中でカテゴリが定義されていない場合, LOCALE COMPILEコマンドの出力するロケール・ファイルには, このカテゴリのデータは何も格納されません。
LC_COLLATEカテゴリは,照合項目間の相対順序を定義します。このカテゴリは, LC_COLLATEヘッダではじまり,END LC_COLLATEトレーラで終了します。
照合項目は,照合を行う上での比較の単位であり,文字または文字の並びです。 ロケール内の照合項目はすべて,これがロケール内の別の照合項目より以前,等しい, または以降であるかどうかを決定する重みのセットを持っています。ロケール項目は それぞれ,ロケール・ソース・ファイルをコンパイルするときに, LOCALE COMPILEコマンドによって,照合重みが割り当てられます。 これらの照合重みは, 文字列を比較するアプリケーション・プログラムによって使用されます。
文字列の比較は,文字列内の各文字の照合重みの比較を,相違が検出されるまで, または文字列が等しいと判断されるまで実行することによって行われます。 この比較は,ロケールが複数の照合順序を定義している場合は, 数回に渡って行われることがあります。たとえば,フランスのロケールの場合, 文字列は,照合重みの1次セットを使用して比較されます。 この比較の段階で両者が等しいと判断されると,照合重みの 2次セットを使用してもう一度比較が行われます。照合項目は, ロケールに対して定義されている照合ソート規則の数だけ, 関連する照合重みのセットを持ちます。
charmapファイル内で定義される各文字(charmapファイルが指定されていない場合は, Portable Character Set内のすべての文字)は,これ自体が照合項目です。 新たな照合項目は,collating-element文を使用して定義できます(次の説明参照)。
表 2-1は, LC_COLLATEカテゴリで認識される文キーワードの一覧です。
キーワード | 説明 |
---|---|
copy | このカテゴリの定義として使用する, 既存のロケール名を指定する。copy文を指定すると, このカテゴリの中で他のキーワードを指定する必要はない。 |
collating-element | 複数文字の照合項目を指定する。 |
collating-symbol | 照合シーケンス文で使用する照合シンボルを指定する。 |
order_start | 照合重みを照合項目に割り当てる照合シーケンス文を指定する。 |
collating-element文,collating-symbol文,およびorder_start文については, 以降の項で詳しく説明します。
collating-element文は,複数文字の照合項目を指定します。
構文
collating-element <character_symbol> from <string>
character_symbol引数は,1文字以上の文字列の照合項目を, 1つの照合項目として定義します。character_symbolは,現在の charmapファイル内のシンボル名, またはこの照合定義の中で定義されている他のシンボル名と重複することはできません。
string引数は,character_symbol引数を定義する 2文字以上の文字列を指定します。collating-element文の例を次に示します。
collating-element <ch> from "<c><h>" collating-element <e-acute> from "<acute><e>" collating-element <11> from "<1><1>"
collating-element文で定義されるcharacter_symbol引数は, LC_COLLATEカテゴリの中に限って認識されます。
collating-symbol文は,照合シーケンス文で使用する照合シンボルを指定します。
構文
collating-symbol <collating_symbol>
collating_symbol引数は,現在のcharmapファイル内のシンボル名, またはこの照合定義の中で定義されている他のシンボル名と重複することはできません。 collating-symbol文の例を次に示します。
collating-symbol <UPPER_CASE> collating-symbol <HIGH>
collating_symbol文で定義される引数は, LC_COLLATEカテゴリの中に限って認識されます。
order_start文には,照合重みを照合項目に割り当てる1つ以上の照合順序文,および order_endキーワードが続きます。order_start文は,必ず指定する必要があります。
構文
order_start sort_rules;sort_rules;...;sort_rules collation_order_statements order_end
sort_rules指示文は,次の構文で指定します。
keyword, keyword,...,keyword
ここで,keywordはFORWARD,BACKWARD,POSITIONのいずれかです。
sort_rules指示文はオプションです。指定された場合には, 文字列比較に適用される規則を定義します。指定されたsort_rules 指示文の数は,各照合項目に割り当てられる重みの数を定義します(つまり, 指示文は,ロケールの中での照合順序数を定義します)。 sort_rules指示文が指定されない場合,1つの forward指示文が想定され,文字列ではなく,文字単位に比較が行われます。
sort_rules指示文がある場合, 1次重みを使用して文字列を比較するときに先頭の指示文, 2次重みを使用して文字列を比較するときに2番目の指示文がそれぞれ適用されます。 以降についても同様です。各sort_rules指示文のセットは, セミコロン(;)で区切ります。sort_rules指示文は,コンマで区切った 1つ以上のキーワードで構成されます。次のキーワードがサポートされています。
forwardキーワードおよびbackwardキーワードは,相互に排他的です。
sort_rules指示文の例を次に示します。
order_start forward;backward
照合順序文には次の構文規則が適用されます。
照合項目の1次重み,2次重み,または以降の重みを定義するには, 各照合項目に対してオプションのオペランドを使用します。また, 文字列を比較する場合に無視される照合項目を指定するには,特殊シンボル IGNOREを使用します。
collating_element_listの位置に指定される反復記号キーワードは, 指定範囲内の文字に対して,先行する文の左側にある文字シンボルの重みを基準に, 昇順で,重みが割り当てられることを表します。
反復記号キーワードを使用すると,異なる文字セット記述(charmap) ソース・ファイルでコンパイルした場合に,異なる照合を行うロケールが作成されます。
UNDEFINED特殊シンボルは,明示的に,または反復記号シンボルで指定されていない, すべてのコード化文字セット値を含みます。これらの文字は, UNDEFINED特殊シンボルで指示される位置に,文字照合順序に従って挿入され, 同じ重みがすべて割り当てられます。UNDEFINED特殊シンボルがなく,照合順序が, コード化文字セットからすべての照合項目を指定していない場合, 警告メッセージが表示され,未定義文字がすべて,文字照合順序の最後に設定されます。
LC_COLLATEロケール定義ソース・ファイル・カテゴリ内の, 照合順序文セクションの例を次に示します。
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> <ss> <s><s>;<s><s> <eszet> <s><s>;<eszet><eszet> ... <HIGH>;... <HIGH> order_end
この例は,次のように解釈されます。
LC_CTYPEカテゴリは,文字分類,大文字/小文字変換, および他の文字属性を定義します。このカテゴリはLC_CTYPEヘッダではじまり, END LC_CTYPEトレーラで終了します。
LC_CTYPEカテゴリ文に対するオペランドはすべて,文字のリストとして定義されます。 各リストは,セミコロンで区切られた 1つ以上の文字またはシンボル文字名で構成されます。反復記号(...)は, 一連の文字を表します。たとえば,<a>;...;<z>という指定は, a〜zの範囲を表します。
表 2-2は, LC_CTYPEカテゴリで認識される文キーワードの一覧です。キーワードの説明の中で, 「自動的に含まれる」という表現は,参照文字が含まれる場合も含まれない場合も, エラーが発生しないことを表します。指定がない場合は文字が提供され, 指定されている場合はその指定が適用されます。
新たなキーワードを指定することで,新しい文字分類を定義できます。 この例を次に示します。
charclass vowel vowel <a>;<e>;<i>;<o>;<u>;<y>
LC_CTYPEカテゴリは,複数文字要素をサポートしません(たとえば,ドイツ語の Eszet文字は,通常,小文字として分類されます)。 ドイツ語テキストの適切な大文字使用では,Eszet文字はSSの 2文字で置き換えられます。これは,対応する大文字がないためです。 この種の変換は,toupperおよびtolowerキーワードの範囲を超えています。
ロケール定義ソース・ファイルに指定されたLC_CTYPEカテゴリの例を,次に示します。
LC_CTYPE #"alpha" is by default "upper" and "lower" #"alnum" is by definition "alpha" and "digit" #"print" is by default "alnum", "punct" and the space character #"graph" is by default "alnum" and "punct" #"tolower" is by default the reverse mapping of "toupper" # upper <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> # lower <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> # digit <zero>;<one>;<two>;<three>;<four>;<five>;<six>;\ <seven>;<eight>;<nine> # space <tab>;<newline>;<vertical-tab>;<form-feed>;\ <carriage-return>;<space> # cntrl <alert>;<backspace>;<tab>;<newline>;<vertical-tab>;\ <form-feed>;<carriage-return>;<NUL>;<SOH>;<STX>;\ <ETX>;<EOT>;<ENQ>;<ACK>;<SO>;<SI>;<DLE>;<DC1>;<DC2>;\ <DC3>;<DC4>;<NAK>;<SYN>;<ETB>;<CAN>;<B>;<SUB>;\ <ESC>;<IS4>;<IS3>;<IS2>;<IS1>;<DEL> # punct <exclamation-mark>;<quotation-mark>;<number-sign>;\ <dollar-sign>;<percent-sign>;<ampersand>;<asterisk>;\ <apostrophe>;<left-parenthesis>;<right-parenthesis>;\ <plus-sign>;<comma>;<hyphen>;<period>;<slash>;\ <colon>;<semicolon>;<less-than-sign>;<equals-sign>;\ <greater-than-sign>;<question-mark>;<commercial-at>;\ <left-square-bracket>;<backslash>;<circumflex>;\ <right-square-bracket>;<underline>;<grave-accent>;\ <left-curly-bracket>;<vertical-line>;<tilde>;\ <right-curly-bracket> # xdigit <zero>;<one>;<two>;<three>;<four>;<five>;<six>;\ <seven>;<eight>;<nine>;<A>;<B>;<C>;<D>;<E>;<F>;\ <a>;<b>;<c>;<d>;<e>;<f> # blank <space>;<tab> # toupper (<a>,<A>);(<b>,<B>);(<c>,<C>);(<d>,<D>);(<e>,<E>);\ (<f>,<F>);(<g>,<G>);(<h>,<H>);(<i>,<I>);(<j>,<J>);\ (<k>,<K>);(<l>,<L>);(<m>,<M>);(<n>,<N>);(<o>,<O>);\ (<P>,<P>);(<q>,<Q>);(<r>,<R>);(<s>,<S>);(<t>,<T>);\ (<u>,<U>);(<v>,<V>);(<w>,<W>);(<X>,<X>);(<y>,<Y>);\ (<z>,<Z>) # END LC_CTYPE
LC_MESSAGESカテゴリは,肯定および否定のシステム応答の形式を定義します。 このカテゴリはLC_MESSAGESヘッダではじまり,END LC_MESSAGESトレーラで終了します。
LC_MESSAGESカテゴリに対するオペランドはすべて,二重引用符(")で囲まれた文字列, または拡張正規表現として定義されます。これらのオペランドは,1つ以上の空白文字 (スペースまたはタブ)によって,定義しているキーワードと区切られます。 二重引用符が2つ並んでいる場合("")は,未定義値を指定します。
表 2-3は, LC_MESSAGESカテゴリで認識される文キーワードの一覧です。
キーワード | 説明 |
---|---|
copy | このカテゴリの定義として使用する,既存のロケール名を指定する。
copy文を指定すると,他のキーワードは指定できない。 |
yesexpr | 肯定または否定応答を求める質問に対する, 適切な肯定応答を記述する拡張正規表現を指定する。 |
noexpr | 肯定または否定応答を求める質問に対する, 適切な否定応答を記述する拡張正規表現を指定する。 |
yesstr | 適切な肯定応答の,ロケールにおける同値を指定する。
この文字列は,nl_langinfoサブルーチンを使用すると,nl_langinfo(YESSTR)として, アプリケーションからアクセスできる。なお,yesstrは, XPG4標準で使用されなくなる可能性があるため,代わりに yesexprを使用する方が望ましい。 |
nostr | 適切な否定応答の,ロケールにおける同値を指定する。
この文字列は,nl_langinfoサブルーチンを使用すると,nl_langinfo(NOSTR)として, アプリケーションからアクセスできる。なお,nostrは, XPG4標準で使用されなくなる可能性があるため,代わりに noexprを使用する方が望ましい。 |
ロケール定義ソース・ファイルに指定されたLC_MESSAGESカテゴリの例を,次に示します。
LC_MESSAGES # yesexpr "<circumflex><left-square-bracket><y><Y>\ <right-square-bracket>" noexpr "<circumflex><left-square-bracket><n><N>\ <right-square-bracket>" yesstr "<y><e><s>" nostr "<n><o>" # END LC_MESSAGES
LC_MONETARYカテゴリは, 通貨数値情報を書式化する上での規則および記号を定義します。このカテゴリは LC_MONETARYヘッダではじまり,END LC_MONETARYトレーラで終了します。
LC_MONETARYカテゴリ・キーワードに対するオペランドはすべて, 文字列または整数値として定義されます。文字列値は,二重引用符(")で囲まれます。 値はすべて,定義しているキーワードと,1つ以上の空白文字(スペースまたはタブ) で区切られます。二重引用符が2つ並んでいる場合("")は, 未定義の文字列値を示します。また,マイナス1 (-1)は,未定義の整数値を示します。
表 2-4は, LC_MONETARYカテゴリで認識される文キーワードの一覧です。
1つの文の値を変更することによって, 独自のカスタマイズされた通貨編集形式を作成できます。 表 2-5は, p_cs_precedes,p_sep_by_space,および p_sign_posn文に対して定義されている値のすべての組み合わせを使用した結果です。
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$+ |
ロケール定義ソース・ファイルに指定されるLC_MONETARYカテゴリの例を次に示します。
LC_MONETARY # int_curr_symbol "<U><S><D><space>" currency_symbol "<dollar-sign>" mon_decimal_point "<period>" mon_thousands_sep "<comma>" mon_grouping 3 positive_sign "<plus-sign>" negative_sign "<hyphen>" int_frac_digits 2 frac_digits 2 p_cs_precedes 1 p_sep_by_space 2 n_cs_precedes 1 n_sep_by_space 2 p_sign_posn 3 n_sign_posn 3 # END LC_MONETARY
LC_NUMERICカテゴリは, 通貨以外の数値情報を書式化する上での規則およびシンボルを定義します。 このカテゴリはLC_NUMERICヘッダではじまり,END LC_NUMERICトレーラで終了します。
LC_NUMERICカテゴリ・キーワードに対するオペランドはすべて, 文字列または整数値として定義されます。文字列値は,二重引用符(")で囲まれます。 値はすべて,1つ以上の空白文字(スペースまたはタブ)により, 定義しているキーワードと区切られます。二重引用符が2つ並んでいる場合("")は, 未定義の文字列値を示します。また,マイナス1(-1)は,未定義の整数値を示します。
表 2-6は, LC_NUMERICカテゴリで認識される文キーワードの一覧です。
キーワード | 説明 |
---|---|
copy | このカテゴリの定義として使用する,既存のロケール名を指定する。
copy文を指定すると,他のキーワードは指定できない。 |
decimal_point | 金額以外の数値を書式化する上で使用される,小数点文字列を指定する。
このキーワードの指定を省略することはできない。また, 未定義文字列値に設定することはできない。 |
thousands_sep | 書式化された金額以外の数値で, 小数点の左側で数字を位取りするのに使用される,文字セパレータを指定する。 |
grouping | 書式化された金額以外の数値で,数値の位取りの桁数を定義する。
このキーワードに対するオペランドは, セミコロンで区切られた整数の並びで構成される。各整数は, 位取りの桁数を指定する。先頭の整数は,小数点のすぐ左側の桁数を定義し, 以降の整数は,その左側の桁数を順次定義する。位取りは, groupingキーワードで指定されている整数ごとに行われる。最後の整数が -1でない場合,その整数が残りのすべての数値に対して繰り返し適用される。 これに対して最後の整数が-1の場合,以降の位取りは行われない。 grouping文の例を次に示す。値は123456789で,thousands_sepオペランドが '(単一引用符)と仮定すると,次の結果が得られる。 grouping Formatted Value 3;-1 123456'789 3 123'456'789 3;2;-1 1234'56'789 3;2 12'34'56'789 |
ロケール定義ソース・ファイルに指定されるLC_NUMERICカテゴリの例を次に示します。
LC_NUMERIC # decimal_point "<period>" thousands_sep "<comma>" grouping <3> # END LC_NUMERIC
LC_TIMEカテゴリは,日付/時刻情報を書式化する上での規則および記号を定義します。 このカテゴリはLC_TIMEヘッダではじまり,END LC_TIMEトレーラで終了します。
LC_TIMEカテゴリ・キーワードに対するオペランドはすべて, 文字列または整数値として定義されます。文字列値は,二重引用符(")で囲まれます。 値はすべて,1つ以上の空白文字(スペースまたはタブ)により, 定義しているキーワードと区切られます。二重引用符が2つ並んでいる場合("")は, 未定義の文字列値を示します。なお,LC_TIMEカテゴリを照会して, 日付/時刻形式の要素を表すコマンドおよびサブルーチンは, フィールド記述子を使用します。このフィールド記述子については,後で説明します。
表 2-7 は,LC_TIMEカテゴリで認識される文キーワードの一覧です。
LC_TIMEロケール定義ソース・ファイルは,フィールド記述子を使用して, 日付/時刻形式の要素を表します。これらのフィールド記述子を組み合わせて, 別のフィールド記述子を作成したり,日付/時刻形式文字列を作成することができます。 フィールド記述子と他の文字を含む書式化文字列で使用される場合, フィールド記述子は,その現在の値で置き換えられます。他の文字はすべて, 変更されることなくコピーされます。表 2-8 は,時刻を書式化するときに LC_TIMEカテゴリを照会するコマンドおよびサブルーチンによって使用される, フィールド記述子の一覧です。
ロケール定義ソース・ファイルに指定される LC_TIMEカテゴリのサンプルを次に示します。
LC_TIME # #Abbreviated weekday names (%a) abday "<S><u><n>";"<M><o><n>";"<T><u><e>";"<W><e><d>";\ "<T><h><u>";"<F><r><i>";"<S><a><t>" #Full weekday names (%A) day "<S><u><n><d><a><y>";"<M><o><n><d><a><y>";\ "<T><u><e><s><d><a><y>";"<W><e><d><n><e><s><d><a><y>";\ <T><h><u><r><s><d><a><y>";"<F><r><i><d><a><y>";\ <S><a><t><u><r><d><a><y>" #Abbreviated month names (%b) abmon "<J><a><n>";"<F><e><b>";"<M><a><r>";"<A><P><r>";\ "<M><a><y>";"<J><u><n>";"<J><u><l>";"<A><u><g>";\ <S><e><P>";"<O><c><t>";"<N><o><v>";"<D><e><c>" #Full month names (%B) mon "<J><a><n><u><a><r><y>";"<F><e><b><r><u><a><r><y>";\ "<M><a><r><c><h>";"<A><P><r><i><l>";"<M><a><y>";\ <J><u><n><e>";"<J><u><l><y>";"<A><u><g><u><s><t>";\ "<S><e><P><t><e><m><b><e><r>";"<O><c><t><o><b><e><r>";\ <N><o><v><e><m><b><e><r>";"<D><e><c><e><m><b><e><r>" #Date-and-time format (%c) #Note that for improved readability, this section uses actual #characters, rather than symbolic names, and is inconsistent with #the other sections in this example. This is bad form. #In practice, symbolic names should be used. d_t_fmt "%a %b %d %H:%M:%S %Y" # #Date format (%x) d_fmt "%m/%d/%y" # #Time format (%X) t_fmt "%H:%M:%S" # #Equivalent of AM/PM (%p) am_pm "<A><M>";"<P><M>" # #12-hour time format (%r) #Note that for improved readability, this section uses actual #characters, rather than symbolic names, and is inconsistent with #the other sections in this example. This is bad form. #In practice, symbolic names should be used. t_fmt_ampm "%I:%M:%S %p" # era "+:0:0000/01/01:+*:AD:%Ey %EC";\ "+:1:-0001/12/31:-*:BC:%Ey %EC" era_d_fmt "" alt_digits "<0><t><h>";"<1><s><t>";"<2><n><d>";"<3><r><d>";\ "<4><t><h>";"<5><t><h>";"<6><t><h>";"<7><t><h>";\ "<8><t><h>";"<9><t><h>";"<1><0><t><h>" # END LC_TIME