--- Begin Message ---
花高です。
この版で各メーリングリストに投げました。
Linux における日本語ロケールに関する指針
1999年11月14日
バージョン: 1.0
草稿(7)
以下の文書はあくまでも「草稿」であり広く意見を求めるため叩き台に過ぎ
ません。この段階で文書が一人歩きしないことを望みます。
この文書の目的について
この文書は Linux における当面の日本語ロケールの運用に関する指針を
提供することにより、ディストリビューション間の不必要な異差をなくし、
Linux においてより積極的に日本語を利用可能とすることを目的とする。
また文書として公開することにより、現状の問題点が明らかになり将来の
改訂による日本語環境の改善に役立つことを期待する。
要約
この文書は Linux で使用する日本語ロケールの「名称」を提案する。また
そのロケールがどのような機能を提供すべきかの指針と、日本語ロケール
におけるアプリケーションプログラムをどのように実装すべきかの指針を
述べる。また各規定に対して背景を示す。
この文書の適用範囲
この文書は実装と運用の指針を提供するものであり既存の規格の拡張を行
うものではない。1999 年 11 月現在の Linux の日本語環境を念頭におい
て記述されており、この時点におけるロケールの名称と運用の指針を提供
する。この文書の記述は将来における運用を規定するものではなく、あく
までも現時点での過渡的な運用の指針をまとめている。実状の変化に合わ
せての改訂はむしろ積極に期待される。また日本語ローカライゼーション
について情報のみを提供するものでありインタナショナライゼーションに
ついての指針を提供するものではない。
規格
この文書におけるロケール(locale)とは、以下に挙げる規格の文化圏固有
操作(locale)を指す
POSIX.1
(IEEE 1003.1:1990, ISO/IEC 9945-1:1990s)
(翻訳規格 JIS X 3030-1994)
Programing Language C
(ISO/IEC 9899:1990)
(翻訳規格 JIS X 3010-1993)
Programing Language C (Amendment 1)
(ISO/IEC 9899:1990/Amd.1:1995)
(翻訳規格 JIS X 3010-1996)
1. はじめに
Linux における日本語ロケールの名称には決まった名称が存在せず、どの
ようなロケール名称を使用すべきかについて、色々な場所でたびたび議論
されてきたが結論をみていない。
歴史的には日本の Linux の黎明期においては真鍋氏の手による JE がほぼ
唯一の日本語環境であり、それが採用していた "ja_JP.ujis" が事実上の
標準のロケール名称であった。しかし現在に至り Linux のディストリビュー
ションは多種提供されており、それに合わせて多種の日本語環境が提供さ
れている。
また過去においては Linux の C Library にはロケール機構の実装は行わ
れておらず X Window System の提供するロケール機構を使用していた。
近年になって X のロケールから GNU C Library version 2 に実装された
ロケールへの移行が進んでいる。残念ながら現時点では日本語をはじめと
する多バイト文字のロケール機構は機能していないが実装作業が進行中で
あり、近日中に利用可能になるものと思わる。
この時期に日本語ロケール名称の不統一という状況を放置していた場合に
は各ディストリビューションの日本語環境で独自の名称や機能が採用され
ることになり、不要な差異をもたらすことになる。このためアプリケーショ
ンの開発者や利用者に混乱をもたらすことになりかねない。この問題を指
摘し、混乱を事前に防ぐ目的でこの文書を記述する。
2. ロケール名称
ここでのロケール名称とは環境とは環境変数 LANG や LC_ALL 等に設定す
べき値であり、 C ライブラリ関数 setlocale() に与えるべき値である。
・Linux における日本語環境において使用する文字コードは日本語 EUCと
し、そのロケール名称は
ja_JP.eucJP
を推奨する。eucJP の部分の大文字/小文字の区別を期待しないことが
望ましい。
その他の名称に関しては以下の指針を示す。
ja_JP ja_JP.eucJP の別名とみなす。
ja_JP.ujis ja_JP.eucJP の別名とみなす。今後の使用は推奨されない
が歴史的な経緯から当面は使用可能とするのが望ましい。
ja_JP.SJIS 文字コードとして shift JIS を使用する場合のロケール
名称とする。
ja_JP.ISO-2022-JP 文字コードとして ISO-2022-JP を使用する場合の
ロケール名称とする。実質的なサポートされないと思わ
れる。
ja_JP.UTF-8 文字コードとして UTF-8 を使用する場合のロケール名称
とする。現状では実質的にはサポートされていない。
ja ロケール名称としては使用しないことを推奨する。しか
しながら互換性の目的で、他に特に指定がない場合には
ja_JP.eucJP が指定されたかのように動作することが望
ましい。
japanese ロケール名称として推奨しない。
japanese.euc ロケール名称として推奨しない。
ja_JP.JIS ロケール名称として推奨しない。
ja_JP.EUC ロケール名称として推奨しない。
3. 文字コード
Linux で日本語を扱う場合の標準の文字コードは「日本語 EUC コード」
を推奨する。Linux における日本語 EUC コードの構成は以下の通りとす
る。
ISO-2022 の符号化方式で暗黙のうちに
G0 ISO 646 IRV (ISO 646 の国際基準版)
G1 JIS X 0208-1990 (JIS 漢字)
G2 JIS X 0201-1976 のカタカナ部分 (俗称 半角カナ)
G3 JIS X 0212-1990 (JIS 補助漢字)
が指示されており、GL に G0 が、GR に G1 が呼び出されているものとす
る。 G2 および G3 の文字コードの使用にはそれぞれ SS2 および SS3 の
みを使用する。
指針として G2 および G3 に配した文字コードは他の環境との互換のため
のみに使用し、できる限り使用しないことが望ましい。将来の変更におい
てこの位置に別の文字コードを割り当てる場合もありえる。
G0 は JIS X 0201 ではなく ISO 646 IRV であることに注意すること。
他の環境との互換のためにやむえない場合を除いては、JIS X 0201 の円
記号およびオーバースコアは利用しないことを推奨する。
各文字集合の未割り当て部分は全て将来の拡張のために予約されている。
ユーザ定義文字(いわゆる外字)は使用できない。
補足) この文字コードの定義は「日本語 EUC」以外の文字コードの利用を
禁止するものではない。ユーザの設定により他の文字コードに切り
換えることができた方が望ましい。あくまでも利便性のために、
「文字コードとして少なくとも日本語 EUC が利用できること」
「デフォルトを日本語 EUC にすること」を推奨するものである。
また他の環境との互換性のため外字を必要とする場合には ja_JP.eucJP
ではなく別の名前を使用することが望ましい。
4. ロケール定義
標準的な日本語ロケールが ja_JP.eucJP として提供すべき機能を示す。
注) GNU C Library version 2 のロケール機構は多バイト文字コードへ
の対応が不十分なためこの章は11月14日現在では機能していない。
近い将来の目標である。
4.1 LC_CTYPE
○基本クラスは規格に従って以下のように定義する。
upper/lower/alpha ISO 646 IRV/JIS X 0208/JIS X 0212 のアルファベット
文字(ギリシャ文字/ロシア文字)を含むものとする。
digit 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
ISO 646 IRVの数字のみを含むものとする。
JIS の数字を含んではならない。
xdigit 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f,
A, B, C, D, E, F
ISO 646 IRV の英数字のみを含むものとする。
JIS の英数字を含んではならない。
blank ISO 646 IRV の SPACE, TAB を含み
JIS X 0208 の空白(1区1点)は含まないものとする。
space ISO 646 IRV の TAB,LF,VT,FF,LF,SPACE を含み
JIS X 0208 の空白(1区1点)を含むものとする。
cntrl ISO 646 IRV の制御文字を含むものとする。
punct 各文字集合の特殊文字を含むものとする。
graph 各文字集合の図形文字を含むものとする。
print 各文字集合の表示可能文字を含むものとする。
toupper 同じ文字集合の内部において大文字へと置換する
tolower 同じ文字集合の内部において小文字へと置換する
○可能ならば追加クラスを追加する。
jdigit JIS X 0208 の数字を含むものとする。
jhira JIS X 0208 の平仮名を含むものとする。
(゛゜ーゝゞ も含む。)
jkata JIS X 0208 の片仮名を含むものとする。
(゛゜ーヽヾ ヵヶ も含む。)
JIS X 0201 のカタカナを含むものとする。
jkanji JIS X 0208 および JIS X 0212 の漢字を含むものとする。
(仝々〇 も含む。)
jspace JIS X 0208 の空白(1区1点)のみを含むものとする。
○可能ならば以下の変換を追加する。
tojhira JIS X 0208 の内で片仮名を平仮名に変換する。
tojkata JIS X 0208 の内で平仮名を片仮名に変換する。
4.2 LC_COLLATE
当面、文字の照合順序は文字コードの順番とする。
各文字コードは次の順序とする。
1) ISO 646 IRV
2) JIS X 0201 カタカナ
3) JIS X 0208
4) JIS X 0212
4.3 LC_MESSAGES
以下とする
yesexpr ^[yYyY]
noexpr ^[nNnN]
4.4 LC_MONETARY
国際通貨記号は "JPY "
通貨記号は "¥"
金額は3桁ごとに "," で区切る。小数は使用しない。
通貨記号、符号、金額の順とする。正符号は使用しない。
4.5 LC_NUMERIC
小数点は "." とする。
3桁ごとの区切りは "," とする。
4.6 LC_TIME
以下のような表現を与えるように定義する。
abday "日", "月", "火", "水", "木", "金", "土"
day "日曜日", "月曜日", "火曜日", "水曜日", "木曜日",
"金曜日", "土曜日"
abmon " 1月", " 2月", " 3月", " 4月", " 5月", " 6月",
" 7月", " 8月", " 9月", "10月", "11月", "12月"
mon "1月", "2月", "3月", "4月", "5月", "6月",
"7月", "8月", "9月", "10月", "11月", "12月"
d_t_fmt "1999年01月02日 01時23分45秒"
d_fmt "1999年01月02日"
t_fmt "01時23分45秒"
am_pm "午前", "午後"
t_fmt_ampm "午後01時23分45秒"
era_d_fmt "平成元年03月21日"
5. アプリケーション実装の指針
アプリケーションの作成やディストリビューションの構成、またバイナリ
配布のコンパイル・オプションには以下の方針を取るのが望ましい。
・どれか一つの文字コードのみを扱うアプリケーションの場合には
「日本語 EUC」が扱えるべきである。ただし他の環境と情報をや
りとりすることを主目的としたプログラムはこの限りではない。
・日本語マニュアルやドキュメントはできる限り「日本語 EUC」で
提供する。
・複数の文字コードが扱える日本語アプリケーションで、文字コード
の指定が省略された場合には「日本語 EUC」が指定されたように
動作する。
・当面、ファイル名およびディレクトリ名には日本語は使用しない。
敢えて日本語を使用する場合には「日本語 EUC」にする。
・ディストリビューション等で日本語ユーザ環境のデフォルトを準
備する場合には LANG=ja_JP.eucJP とする。
・ja_JP.eucJP ではユーザ定義文字(いわゆる外字)はサポートしな
い。ユーザ定義文字が必要な場合は別ロケール名称を用いる。
6. フィードバック
この文書に関連する議論は当面は linux-tech メーリングリストで行
う予定です。この文章に関する意見、感想、要望などがある場合には
linux-tech@debian.or.jp までお願いします。
7. 参考文献
略
8. 謝辞
略
--- End Message ---