.\" (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) .\" .\" 在包括本版權通告和許可聲明的前提下,允許一字不捺地生成和發佈本篇的拷貝版本. .\" .\" 在遵照本許可聲明的條款完整地發佈了原作品的前提下,允許複製和發佈本手冊的修改版本. .\" .\" 因爲Linux內核和庫經常修改,本手冊頁可能會出現錯誤或者過時.作者(們)對文中錯誤或者行文繁冗不 .\" 承擔責任,對因爲使用包含在內的信息而造成的損失也不負責.對於許可免費的本手冊,作者(們)可能在創 .\" 作它時考慮層次各有不同,當工作專業化之後,也許能夠達到一致. .\" .\" 將該手冊版式化或者加工處理,如果沒有包括原本,則必須公認本作品的版權和作者. .\" .TH LOCALE 7 "1993年4月24日" "Linux" "Linux Programmer's Manual(Linux程序員手冊)" .SH NAME(名稱) locale \- 描述多語言支持 .SH SYNOPSIS(總覽) .nf .B #include .fi .SH DESCRIPTION(描述) locale 就是一系列語言文化規則. 它包括如下一些方面: 訊息的語言, 不同字符設置, 文字慣例, 等等. 程序需要能夠判斷其 locale 並根據適合於不同文化的要求來運行. .PP 頭文件 .B 聲明瞭用於該項作業中的數據類型,函數和宏. .PP 它聲明的函數有: .B setlocale() 用來設置當前 locale, .B localeconv() 用來獲得數字格式方面的信息. .PP 程序可能需要的本地化信息會有不同的種類; 它們都以宏的方式聲明 把它們當做 .B setlocale() 的第一個參數來用, 就可以把其中一個設置爲需要的 locale: .TP .B LC_COLLATE 這用來修改函數 .B strcoll() 和 .BR strxfrm() 的執行方式, 其中 strxfrm() 函數用來以本地化字母表進行字符串比較. 例如, 德國升半音的 s 排序爲 "ss". .TP .B LC_CTYPE 修改字符處理分類函數如 .B isupper() 和 .BR toupper() 的執行方式, 還修改多字節字符函數如 .B mblen() 或者 .BR wctomb() 的執行方式. .TP .B LC_MONETARY 修改由 .B localeconv() 返回的信息, 這些信息描述了數字, 以及諸如 小數點和千進位逗號之類輸出的常見格式的細節. 這些信息由函數 .BR strfmon() 在內部調用. .TP .B LC_MESSAGES 修改顯示的語言信息以及正值和負值的表達方式. GNU C-library包含: .B rpmatch() 函數用於方便地使用這些信息. .TP .B LC_NUMERIC 在考慮使用 locale 設置時,修改 .B printf() 和 .B scanf() 函數族使用的信息.該信息也可以由 .B localeconv() 函數讀取. .TP .B LC_TIME 修改 .B strftime() 函數的執行方式以顯示適於當地格式的當前時間; 例如,歐洲的絕大部分地區使用的是 24 小時的時鐘, 而美國則是 12 小時的時鐘. .TP .B LC_ALL 上述所有的. .PP 如果 .B setlocale() 的第二個參數爲空, 則設置 .BR """""" , 爲默認的locale,它通過以下幾步來確定: .IP 1. 如果有非空的環境變量 .BR LC_ALL , 則使用 .B LC_ALL 的值. .IP 2. 如果存在一個與上述列出的種類同名的環境變量並且其不爲空, 則使用該分類的值. .IP 3. 如果有非空的環境變量 .BR LANG , 則使用 .B LANG 的值. .PP 關於本地數字格式的值用於由 .B localeconv() 函數返回的 .B struct lconv , 其有以下聲明: .nf struct lconv { /* 數碼(非貨幣形式)信息. */ char *decimal_point; /* 小數點字符. */ char *thousands_sep; /* 千數的分隔符. */ /* 每個元素就是每組的阿拉伯數字;指數越高的元素在越左邊.一個值爲CHAR_MAX的元素表示不需繼續 分組了.一個值爲0的元素表示前面的字符用於所有更左邊的組. */ char *grouping; /* 貨幣信息. */ /* 前三個字符是ISO 4217定義的流通符號. 第四個字符是分隔符. 第五個字符是'\0'. */ 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; /* 本地使用的數字. */ /* 如果currency_symbol後跟着一個正值則爲1,如果順序相反爲0. */ char p_cs_precedes; /* 如果在currency_symbol和正值之間是一個空格則爲1. */ char p_sep_by_space; /* 如果currency_symbol後跟着一個負值則爲1,如果順序相反爲0. */ char n_cs_precedes; /* 如果在currency_symbol和正值之間是一個空格則爲1. */ char n_sep_by_space; /* 正值和負值符號位置: 數量值和currency_symbol在圓括號內則爲0. 符號字符串先於數量值和currency_symbol則爲1. 符號字符串在數量值和currency_symbol之後則爲2. 符號字符串後緊跟數量值和currency_symbol則爲3. 符號字符串緊跟在數量值和currency_symbol之後則爲4. */ char p_sign_posn; char n_sign_posn; }; .fi .SH "CONFORMS TO(遵循規則)" POSIX.1 .SH "SEE ALSO(另見)" .BR setlocale (3), .BR localeconv (3), .BR locale (1), .BR localedef (1), .BR rpmatch (3), .BR strfmon (3), .BR strcoll (3), .BR strxfrm (3), .BR strftime (3) .SH "[中文版維護人]" .B riser .\" 中文版版權所有 riser,BitBIRD www.linuxforum.net 2000 .\" 1993年7月24日由Rik Faith (faith@cs.unc.edu)修改 .\" 1997年6月1日由Jochen Hein(jochen.hein@delphi.central.de)修改 .SH "[中文版最新更新]" .BR 2001/07/19 .SH "《中國linux論壇man手冊頁翻譯計劃》:" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR