CentOS- locale本地化设置
前言
CentOS 上,通过 locale 来设置运行环境语言。locale 就是某一个地域内的人们的语言习惯和文化传统和生活习惯, locale 是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory) 和字符集(Codeset)。一个 locale 的书写格式为: 语言[_地域[.字符集]]。
查看当前的语言
locale
LANG=zh_CN.UTF-8 # 本地语言默认值
LC_CTYPE="zh_CN.UTF-8" #语言符号及其分类(LC_CTYPE)
LC_NUMERIC=zh_CN.UTF-8 #数字格式
LC_TIME=zh_CN.UTF-8 #本地时间格式
LC_COLLATE="zh_CN.UTF-8" #比较和排序习惯
LC_MONETARY=zh_CN.UTF-8 #货币单位
LC_MESSAGES="zh_CN.UTF-8" #信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等
LC_PAPER=zh_CN.UTF-8 #默认纸张尺寸大小
LC_NAME=zh_CN.UTF-8 #姓名书写方式
LC_ADDRESS=zh_CN.UTF-8 #地址书写方式
LC_TELEPHONE=zh_CN.UTF-8 #电话号码书写方式
LC_MEASUREMENT=zh_CN.UTF-8 #度量衡表达方式
LC_IDENTIFICATION=zh_CN.UTF-8 #对locale自身包含信息的概述
LC_ALL= #设定或者强制设定语言
查看所有的语言
ls /usr/share/i18n/locales
POSIX en_HK ik_CA sat_IN
aa_DJ en_IE is_IS sc_IT
aa_ER en_IE@euro iso14651_t1 sd_IN
aa_ER@saaho en_IN iso14651_t1_common sd_IN@devanagari
aa_ET en_NG iso14651_t1_pinyin se_NO
af_ZA en_NZ it_CH shs_CA
am_ET en_PH it_IT si_LK
an_ES en_SG it_IT@euro sid_ET
ar_AE en_US iu_CA sk_SK
ar_BH en_ZA iw_IL sl_SI
ar_DZ en_ZM ja_JP so_DJ
ar_EG en_ZW ka_GE so_ET
ar_IN es_AR kk_KZ so_KE
ar_IQ es_BO kl_GL so_SO
ar_JO es_CL km_KH sq_AL
ar_KW es_CO kn_IN sq_MK
ar_LB es_CR ko_KR sr_ME
ar_LY es_CU kok_IN sr_RS
ar_MA es_DO ks_IN sr_RS@latin
ar_OM es_EC ks_IN@devanagari ss_ZA
ar_QA es_ES ku_TR st_ZA
ar_SA es_ES@euro kw_GB sv_FI
ar_SD es_GT ky_KG sv_FI@euro
ar_SY es_HN lb_LU sv_SE
ar_TN es_MX lg_UG sw_KE
ar_YE es_NI li_BE sw_TZ
as_IN es_PA li_NL szl_PL
ast_ES es_PE lij_IT ta_IN
ayc_PE es_PR lo_LA ta_LK
az_AZ es_PY lt_LT te_IN
be_BY es_SV lv_LV tg_TJ
be_BY@latin es_US mag_IN th_TH
bem_ZM es_UY mai_IN ti_ER
ber_DZ es_VE mg_MG ti_ET
ber_MA et_EE mhr_RU tig_ER
bg_BG eu_ES mi_NZ tk_TM
bho_IN eu_ES@euro mk_MK tl_PH
bn_BD fa_IR ml_IN tn_ZA
bn_IN ff_SN mn_MN tr_CY
bo_CN fi_FI mni_IN tr_TR
bo_IN fi_FI@euro mr_IN translit_circle
br_FR fil_PH ms_MY translit_cjk_compat
br_FR@euro fo_FO mt_MT translit_cjk_variants
brx_IN fr_BE my_MM translit_combining
bs_BA fr_BE@euro nan_TW@latin translit_compat
byn_ER fr_CA nb_NO translit_font
ca_AD fr_CH nds_DE translit_fraction
ca_ES fr_FR nds_NL translit_hangul
ca_ES@euro fr_FR@euro ne_NP translit_narrow
ca_FR fr_LU nhn_MX translit_neutral
ca_IT fr_LU@euro niu_NU translit_small
crh_UA fur_IT niu_NZ translit_wide
cs_CZ fy_DE nl_AW ts_ZA
csb_PL fy_NL nl_BE tt_RU
cv_RU ga_IE nl_BE@euro tt_RU@iqtelif
cy_GB ga_IE@euro nl_NL ug_CN
da_DK gd_GB nl_NL@euro uk_UA
de_AT gez_ER nn_NO unm_US
de_AT@euro gez_ER@abegede nr_ZA ur_IN
de_BE gez_ET nso_ZA ur_PK
de_BE@euro gez_ET@abegede oc_FR uz_UZ
de_CH gl_ES om_ET uz_UZ@cyrillic
de_DE gl_ES@euro om_KE ve_ZA
de_DE@euro gu_IN or_IN vi_VN
de_LU gv_GB os_RU wa_BE
de_LU@euro ha_NG pa_IN wa_BE@euro
doi_IN he_IL pa_PK wae_CH
dv_MV hi_IN pap_AN wal_ET
dz_BT hne_IN pl_PL wo_SN
el_CY hr_HR ps_AF xh_ZA
el_GR hsb_DE pt_BR yi_US
el_GR@euro ht_HT pt_PT yo_NG
en_AG hu_HU pt_PT@euro yue_HK
en_AU hy_AM ro_RO zh_CN
en_BW i18n ru_RU zh_HK
en_CA ia_FR ru_UA zh_SG
en_DK id_ID rw_RW zh_TW
en_GB ig_NG sa_IN zu_ZA
@后边是修正项,例如可以看到两个德国的 locale:/usr/share/i18n/locales/de_DE@euro 和/usr/share/i18n/locales/de_DE。
语言字符集
例如中文就有好几个字符集:zh_CN.GB2312 zh_CN.GB18030 zh_CN.UTF-8 zh_TW.BIG5,点后面就就是对应的字符集
带修正值的字符集,deDE.UTF-8@euro 德语德国.UTF-8 字符集@按照欧洲习惯加以修正,注意不是 de*DE@euro.UTF-8,所以完全的 locale 表达方式是 [语言[*地域][.字符集][@修正值]。
其中,与中文输入关系最密切的就是 LC_CTYPE,LC_CTYPE 规定了系统内有效的字符以及这些字符的分类,诸如什么是大写字母,小写字母,大小写转换,标点符号、可打印字符和其他的字符属性等方面。
而 locale 定 义 zh_CN 中最最重要的一项就是定义了汉字(Class“hanzi”)这一个大类,当然也是用 Unicode 描述的,这就让中文字符在 Linux 系统中成为合法的有效字符,而且不论它们是用什么字符集编码的。
变量优先级
设定 locale 就是设定 12 大类的 locale 分类属性,即 12 个 LC_*。除了这 12 个变量可以设定以外,还有两个变量:LC_ALL 和 LANG。
它们之间有一个优先级的关系:LCALL > LC* >LANG。LC_ALL 是优先级最高设定或者强制设定,而 LANG 是默认设定值。
1、如果你设定了 LCALL = zh_CN.UTF-8,那么不管 LC*和 LANG 设定成什么值,它们都会被强制服从 LC_ALL 的设定,成为 zh_CN.UTF-8。
2、假如你设定了 LANG = zhCN.UTF-8,而其他的 LC=enUS.UTF-8,并且没有设定 LC_ALL 的话,那么系统的 locale 设定以 LC=en_US.UTF-8。
3、假如你设定了 LANG = zhCN.UTF-8,而其他的 LC**,和 LCALL 均未设定的话,系统会将 LC**设定成默认值,也就是 LANG 的值 zh_CN.UTF-8。
4、假如你设定了 LANG = zhCN.UTF-8,而其他的 LC_CTYPE=en_US.UTF-8,其他的 LC*,和 LC_ALL 均未设定的话,那么系统的 locale 设定将是:LC_CTYPE=en_US.UTF-8,其余的 LC_COLLATE,LC_MESSAGES 等等均会采用默认值,也就是 LANG 的值,也就是 LC_COLLATE = LC_MESSAGES =……= LC_PAPER = LANG = zh_CN.UTF-8。
设置建议
1、如果需要一个纯中文的系统的话,设定 LC_ALL= zh_CN.UTF-8,或者 LANG=zh_CN.UTF-8 都可以。
2、如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE = zh_CN.UTF-8,LANG=en_US.UTF-8 就可以了。
3、如果什么都不设置,也就是 LCALL,LANG 和 LC*均不指定特定值的话,系统将采用 POSIX 作为 lcoale,也就是 C locale。
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2018/2018-12/centos_locale/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。