aboutsummaryrefslogblamecommitdiff
path: root/ja_JP.eucJP/man/man3/setlocale.3
blob: 36bf5a93263dc676559f1f8909f2265869d2a1c9 (plain) (tree)


































                                                                              
                                                                                     
   
             





                


                        







                                                 


                                                                
            
                                                              
              
                                                            

             

                                                      


                           
                                  
                 
                                                  
           
      

















                                                            
                                          


                        


                                                  
          
      
         
                                                            

              
                                                              

   
                                                               
             
                                    


                
                                 


          
            
             
                                                           


                                                                
                                                                      

              
                                            



























                                        
                              
                    
                                                          
               

                                        
        


                                                                      
            

                                                                     
            
                                                          
                      
                                  
                      
                        
                        
                              
                        
                                                

                   
                                
                    
                                                                  
                    

                                          
                      
                                                  
                  
                                                      
                    

                                                          
                       

                                                                    
                     
              
                 
            
                     
              
                  
            




                   
                                  

                           
                            
        
                
        
                

                   
            

                   
            

                  
                  
               
            













                                                            
                                      
        
                                    




              
                                                                            























                                                          
      
              


                  

             
      
              
        
       
                      
        
              



                
                    


                
                                








                                                              
      
           
                                                                  
.\" Copyright (c) 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Donn Seeley at BSDI.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"	@(#)setlocale.3	8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/lib/libc/locale/setlocale.3,v 1.15.2.2 2001/03/06 16:45:58 ru Exp %
.\"
.\" $FreeBSD$
.Dd June 9, 1993
.Dt SETLOCALE 3
.Os
.Sh 名称
.Nm setlocale ,
.Nm localeconv
.Nd C 用の自然言語の整形
.Sh ライブラリ
.Lb libc
.Sh 書式
.Fd #include <locale.h>
.Ft char *
.Fn setlocale "int category" "const char *locale"
.Ft struct lconv *
.Fn localeconv "void"
.Sh 解説
.Fn setlocale
関数は、特定のルーチンの集合について、C ライブラリでいうところの
自然言語整形のスタイルを設定します。
それぞれのスタイルを
.Sq ロケール
と呼び、C 文字列として渡される適切な名前によって呼び出します。
.Fn localeconv
ルーチンは、現在のロケールの数値整形用パラメータを返します。
.Pp
.Fn setlocale
関数は、いくつかのルーチンのカテゴリを識別します。
以下は、カテゴリとカテゴリが選択したルーチンの組です。
.Pp
.Bl -tag -width LC_MONETARY
.It Dv LC_ALL
ロケール全体をまとめて設定します。
.It Dv LC_COLLATE
文字列照合ルーチン用のロケールを設定します。これは
.Fn strcoll
および
.Fn strxfrm
でのアルファベット順を制御します。
.It Dv LC_CTYPE
.Xr ctype 3 ,
.Xr mbrune 3 ,
.Xr multibyte 3
および
.Xr rune 3
の各関数のロケールを設定します。
これは、大文字と小文字、アルファベットと非アルファベット文字
などの識別を制御します。実際の作業は
.Fn setrunelocale
関数によって行われます。
.It Dv LC_MESSAGES
メッセージカタログのロケールを設定します。
.Xr catopen 3
関数を参照してください。
.It Dv LC_MONETARY
通貨値の整形用ロケールを設定します。これは
.Fn localeconv
関数に影響を及ぼします。
.It Dv LC_NUMERIC
数字を整形するためのロケールを設定します。これは、
.Fn localeconv
によって返される値を制御するのに加えて、
.Fn printf
および
.Fn scanf
のような関数の浮動小数点入出力の小数点整形方法も制御します。
.It Dv LC_TIME
.Fn strftime
関数を使用して日付と時刻を整形するためのロケールを設定します。
.El
.Pp
デフォルトでは 3 つのロケールだけが定義されています。空の文字列
.Li "\&""\|""
はネイティブの環境を表します。そして
.Li "\&""C""
および
.Li "\&""POSIX""
ロケールは C 言語環境を表します。
.Fa locale
引数が
.Dv NULL
の場合には、
.Fn setlocale
は現在のロケールを戻します。デフォルトでは、 C プログラムは
.Li "\&""C""
ロケールで開始します。ロケールを設定する唯一のライブラリ内関数は
.Fn setlocale
です。ロケールは他のルーチンの副作用として変更されることはありません。
.Pp
.Fn localeconv
関数は、数字、特に通貨値の整形用パラメータを
提供する構造体を指すポインタを返します。
.Bd -literal -offset indent
struct lconv {
	char	*decimal_point;
	char	*thousands_sep;
	char	*grouping;
	char	*int_curr_symbol;
	char	*currency_symbol;
	char	*mon_decimal_point;
	char	*mon_thousands_sep;
	char	*mon_grouping;
	char	*positive_sign;
	char	*negative_sign;
	char	int_frac_digits;
	char	frac_digits;
	char	p_cs_precedes;
	char	p_sep_by_space;
	char	n_cs_precedes;
	char	n_sep_by_space;
	char	p_sign_posn;
	char	n_sign_posn;
};
.Ed
.Pp
個々のフィールドには次の意味があります。
.Pp
.Bl -tag -width mon_decimal_point
.It Fa decimal_point
通貨値を除く、小数点文字です。
.It Fa thousands_sep
通貨値を除く、小数点の前の桁のグループ間の区切り文字です。
.It Fa grouping
通貨値を除く、桁のグループの大きさです。
これは、
.Va char
型の、低い位の桁から高い位の桁 (右から左) までのグループの大きさを表す
整数の配列を指すポインタです。
そのリストは、0 または
.Dv CHAR_MAX
で終わります。リストが 0 で終了する場合には、0 の前の最後のグループの
大きさを、全ての桁が埋まるまで繰り返し用います。
.Dv CHAR_MAX
で終了する場合には、それ以上のグループ化は実行されません。
.It Fa int_curr_symbol
標準で定められた国際通貨記号です。
.It Fa currency_symbol
ローカルな通貨記号です。
.It Fa mon_decimal_point
通貨値に対する小数点文字です。
.It Fa mon_thousands_sep
通貨値内の桁のグループについての区切り文字です。
.It Fa mon_grouping
.Fa grouping
に類似していますが、通貨用です。
.It Fa positive_sign
非負の通貨値を表記するのに使用される文字で、通常は空の文字列です。
.It Fa negative_sign
負の通貨値を表現するのに使用される文字で、
通常はマイナス符号です。
.It Fa int_frac_digits
国際スタイルの通貨値における小数点以下の桁数です。
.It Fa frac_digits
ローカルスタイルの通貨値における小数点以下の桁数です。
.It Fa p_cs_precedes
非負の値に対して通貨値の前に通貨記号が置かれる場合には 1、
そうでない場合には 0 です。
.It Fa p_sep_by_space  
非負の値に対して通貨記号と通貨値の間に空白が挿入されている場合は 1、
そうでない場合には 0 です。
.It Fa n_cs_precedes 
負の値に対して
.Fa p_cs_precedes
と同様です。
.It Fa n_sep_by_space
負の値に対して
.Fa p_sep_by_space
と同様です。
.It Fa p_sign_posn
非負の量および
.Fa currency_symbol
に関する
.Fa positive_sign
の位置です。コードは次の通りです。
.Bl -tag -width 3n -compact
.It Li 0
文字列全体を囲む丸括弧です。
.It Li 1
文字列の前です。
.It Li 2
文字列の後です。
.It Li 3
.Fa currency_symbol
の直前です。
.It Li 4
.Fa currency_symbol
の直後です。
.El
.It Fa n_sign_posn
負の通貨値に対して
.Fa p_sign_posn
と同様です。
.El
.Pp
前述した場合を除いて、フィールドの値としての空の文字列は、
結果の長さがゼロであるか、または現在のロケール内にはない値で
あることを示します。
同様に
.Dv CHAR_MAX
の結果は利用できない値を表記します。
.Sh 戻り値
.Fn setlocale
関数は、指定の
.Fa category
と
.Fa locale
の組み合わせが意味をなさない場合には、
.Dv NULL
を返してロケールの変更は失敗します。
.Fn localeconv
関数は、後の
.Fn setlocale
または
.Fn localeconv
の呼び出しで変更される可能性のある静的オブジェクトを指すポインタを返します。
.Sh ファイル
.Bl -tag -width /usr/share/locale/locale/category -compact
.It Pa $PATH_LOCALE/ Ns Em locale/category
.It Pa /usr/share/locale/ Ns Em locale/category
ロケール
.Em locale
とカテゴリ
.Em category
用のロケールファイル
.El
.Sh 関連項目
.Xr colldef 1 ,
.Xr mklocale 1 ,
.Xr catopen 3 ,
.Xr ctype 3 ,
.Xr mbrune 3 ,
.Xr multibyte 3 ,
.Xr rune 3 ,
.Xr strcoll 3 ,
.Xr strxfrm 3 ,
.Xr euc 4 ,
.Xr utf2 4
.Sh 規格
.Fn setlocale
および
.Fn localeconv
関数は、
.St -isoC
に適合しています。
.Sh 歴史
.Fn setlocale
および
.Fn localeconv
関数は、
.Bx 4.4
で初めて登場しました。
.Sh バグ
現在の実装は、
.Dv LC_COLLATE ,
.Dv LC_CTYPE
および
.Dv LC_TIME
のカテゴリ以外では、
.Li "\&""C""
と
.Li "\&""POSIX""
ロケールのみサポートしています。
.Pp
.Fn localeconv
における整然としない通貨サポートにも関わらず、規格は、
一般化された通貨フォーマットのための関数を組み入れていません。
.Pp
われわれがリアルタイムの通貨変換機能を持つまでは、
.Dv LC_MONETARY
の使用は間違った結果を導く可能性があります。
.Dv LC_NUMERIC
および
.Dv LC_TIME
は個人的な選択肢であり、他のカテゴリで覆い隠すべきではありません。