`
56553655
  • 浏览: 197280 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

linux中的多语言环境(LC_ALL, LANG, locale)

阅读更多

多语言环境支持

为了在Linux下实现多语言支持,必须在定制安装程序时,引入与glibc和图形环境两者对应的多语言环境支持。对于glibc环境而言,它是整个Linux中文化的基础,我们需要在/usr/share/locale目录下保存Locale信息,在/usr/share/consolefonts目录下保存字体信息,在/usr/lib/gconv目录下保存字符转换模块的信息。

对于X Windows环境,我们需要在/usr/X11R6/lib/X11/locale目录下保存X Locale的配置,同时在/usr/X11R6/lib/X11/fonts目录下保存正常显示所需要的字体集。

在安装程序启动之后,必须正确设置LC_*变量同时调用setlocale函数。为了能显示中文,安装程序还必须加载正确的中文字体。

1.1. 国际化的基本概念

国际化(Internationalization,简写为I18N)是指软件在设计结构和机制上支持多语言的扩展特性,其功能和代码设计不针对某一特定语言和地域。Locale是ANSI C语言中最基本的支持国际化的标志,对中文Linux来说,支持中文Locale是最基本的要求。

1.1.1. Locale环境
Locale的命名规则:<语言>_<地区名>.<字符编码名称>

对于zh_CN.GB2312而言,zh表示中文,CN表示大陆地区,GB2312表示使用的字符集为GB2312。

Locale使用一组分类,用户可以独立的操纵每一组分类。用户既能用设置环境变量的方法,也能使用setlocale设置它们。这些分类都保存在/usr/share/locale下。它们包含了:

  1. LC_COLLATE
    用于比较和排序。
  2. LC_CTYPE
    用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。
  3. LC_MONETORY
    用于格式化货币单位。
  4. LC_NUMERIC
    用于格式化非货币的数字显示。
  5. LC_TIME
    用于格式化时间和日期。
  6. LC_MESSAGES
    用于控制程序输出时所使用的语言,主要是提示信息,错误信息,状态信息, 标题,标签, 按钮和菜单等。
  7. LC_ALL
    它不是环境变量,只是一个宏,可使用setlocale设置所有的LC_*环境变量。这个变量设置之后,可以废除LC_*和LANG的设置值,使得这些变量的设置值与LC_ALL的值一致。
  8. LANG
    它的值用于指定上面环境变量没有设置的所有变量值。如果指定了上面任何一个变量的值,则会废除对应的LANG值的缺省设置。

还可以包括其他的环境变量LC_ADDRESS,LC_IDENTIFICATION,LC_PAPER,LC_NAME,LC_TELEPHONE,LC_MEASUREMENT。

标准Locale:

"C"
这是标准的C Locale。它所指定的属性和行为由ISO C标准所指定。它是程序启动时缺省使用Locale。

"POSIX"
这是标准的POSIX Locale。它是标准的C Locale的别名。

""
空名字是让程序选择当前环境设置值。

设置一个中文环境需要正确的设置上述Locale变量,举例来说,在使用zh_CN.GB2312环境时,使用locale命令,所见到的系统环境为:

   LANG="zh_CN.GB2312"
    LC_CTYPE="zh_CN.GB2312"
    LC_NUMERIC="zh_CN.GB2312"
    LC_TIME="zh_CN.GB2312"
    LC_COLLATE="zh_CN.GB2312"
    LC_MONETARY="zh_CN.GB2312"
    LC_MESSAGES="zh_CN.GB2312"
    LC_PAPER="zh_CN.GB2312"
    LC_NAME="zh_CN.GB2312"
    LC_ADDRESS="zh_CN.GB2312"
    LC_TELEPHONE="zh_CN.GB2312"
    LC_MEASUREMENT="zh_CN.GB2312"
    LC_IDENTIFICATION="zh_CN.GB2312"
    LC_ALL=

优先级: LC_ALL>LC_*>LANG


1.1.2. 创建Locale环境

为了建立locale环境,我们必须具备下面的描述文件:
locale-data
这个文件定义了Locale环境(LC_*)的所有细节,包括字符的分类与转换,字符排序,区域显示时间,货币显示格式等等。通常是保存在系统的/usr/share/i18n/locales目录下。

charmap
这个文件定义了Locale中所有字符与内码的对应关系。通常是保存在系统的/usr/share/i18n/charmaps目录下。

这两个文件都是纯文本文件,可以使用文本编辑器直接察看和修改。通过这两个文件就可以生成对应的locale环境。缺省条件下,生成的locale环境是以二进制的形式保存在/usr/share/locale目录下。把这两个文本文件生成locale环境的工作是由localedef程序实现的。举例来说,生成zh_CN.GB2312的locale环境:

mkdir /home/usr/share/locale/zh_CN.gb2312
localedef -I zh_CN -f GB2312 zh_CN.GB2312 --prefix=/home
cd /home/usr/share/locale/
mv zh_CN.gb2312 zh_CN.GB2312

这几条命令在/home目录下,生成Locale环境zh_CN.GB2312。因为按照POSIX标准,一个Locale的编码名称是大小写无关的。虽然我们指定的是大写的GB2312,但是glibc为了统一起见,它会生成一个小写的编码名称。但是由于很多程序依赖于zh_CN.GB2312,因此对这个文件进行了改名。

除了Locale环境之外,您还需要gconv文件。这一组文件是用来定义glibc的gconv系统在遇到GB2312编码的字符时,应使用哪一个模块来处理。gconv-modules文件描述了字符编码和处理模块文件对应关系。例如,在/usr/lib/gconv/gonv-modules文件中,需要包含下列行:

alias GB2312// EUC-CN//

转自:http://blog.chinaunix.net/u2/86696/showart_2076988.html

分享到:
评论

相关推荐

    go-locale:Golang的跨平台语言环境检测

    查找环境LC_ALL 查找环境LC_MESSAGES 查找环境LANG 读取文件$XDG_CONFIG_HOME/locale.conf 读取文件$HOME/.config/locale.conf 读取文件/etc/locale.conf s 查找环境LANGUAGE 查找环境LC_ALL 视窗

    PyPI 官网下载 | django_suit_locale-1.0.1-py2.py3-none-any.whl

    资源来自pypi官网。 资源全名:django_suit_locale-1.0.1-py2.py3-none-any.whl

    中文man压缩包

    LC_ALL,LC_CTYPE 和 LANG 变量的值。如果语言环境是 zh_CN.UTF-8,可以运行 make u8 && make install-u8;如果语言环境是 GB2312,GBK 或者 GB18030,可 以运行 make gb && make install-gb;或者,可以下载对应的...

    linux中locale自用总结

    linux中locale自用总结 locale是根据计算机用户所使用的语言、所在国家或者地区、以及当地的文化传统所定义的一个软件运行时的语言环境。

    系统区域信息:返回系统区域信息。-matlab开发

    输入:无输出: LOCALE_SHORT_STRING - 语言环境短字符串,小写并用下划线分隔LCID_HEX_STRING - 语言环境 ID 十六进制值字符串LCID_VALUE - 双精度的区域设置 ID 值LOCALE_DESCRIPTION - 语言环境描述字符串例子:...

    C语言头文件 LOCALE.H

    C语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE.HC语言头文件 LOCALE....

    linux登录时候提示字符集有问题解决方法

    locale: Cannot set LC_ALL to default locale: No such file or directory 背景 公司有台jenkins服务器,因历史原因一直使用centos6.5,突然登录时候提示字符集有问题,本人其实已经使用centos7很

    便携中文linux操作系统tinycorelinux_4.2.1.cn.plus.iso

    便携中文linux操作系统,约37M,以tinycore linux 4.2.1为基础,内核是3.0.3。集成了常用的基本功能,可进行文件管理,文字、图像处理,简单的网络浏览和下载,硬盘分区维护等,同时支持一些常用的压缩格式。更多...

    fileinput_locale_zh.js

    fileinput_locale_zh文件上传 图片上传 英文转中文 这是一个增强的 HTML5 文件输入控件,是一个 Bootstrap 3.x 的扩展,实现文件上传预览,多文件上传等功能。

    C语言中的locale

    C语言中的locale,使用C++标准库的iostream,可以方便地将控制台、文件、字符串以及其它可扩充的外部表示作为流来处理,但要处理中文,却会碰到很多问题。

    go-locale:GoLang库,用于检索操作系统的当前语言环境

    类似于Unix的系统(Linux,BSD等) 使用LANGUAGE , LC_ALL , LC_MESSAGES和LANG环境变量。 WASM(JavaScript) 使用和 。 的iOS 使用 。 安卓对于Android N或更高版本,请使用 ,否则,请使用 。 注意:对于...

    grid.locale-cn.js 自家博客专用

    很多时候在网上下载一段代码,结果引用的CSS和JS文件不知道从哪里弄,结果上网下载,不是版本不对,就是完全不对。这里的JS是有对应的代码段的。请参考博客 ====&gt; Jqgrid学习笔记__01__初来乍到

    linux查看系统编码和修改系统编码的方法

    代码如下:# localeLANG=en_US.UTF-8LC_CTYPE=”en_US.UTF-8″LC_NUMERIC=”en_US.UTF-8″LC_TIME=”en_US.UTF-8″LC_COLLATE=”en_US.UTF-8″LC_MONETARY=”en_US.UTF-8″LC_MESSAGES=”en_US.UTF-8″LC_PAPER=”en...

    linux全志R16的linux系统编译的资料_20170502_1655.7z

    Preparing to unpack .../libencode-locale-perl_1.03-1_all.deb ... Unpacking libencode-locale-perl (1.03-1) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../libhttp...

    语言环境模拟器(locale emulator)v2.5.0.1

    语言环境模拟器(locale emulator)专门为广大玩家们打造的,当我们玩外服的游戏时候,出现的是其他国家的语言,很多人都看不懂,可以使用这款软件,将它们使用中文语言进行模拟安装或者运行,然后就可以得到中文的...

    rails_locale_detection:Rails项目的语言环境设置

    rails_locale_detection 结合使用参数,cookie,http标头和可选的用户对象来设置请求的当前语言环境。 反过来,它检查params[:locale] , cookies[:locale]和HTTP_ACCEPT_LANGUAGE标头的值,以找到与可用语言环境...

    jqgrid demo 中文语言文件(grid.locale-zh_CN.js)

    jqgrid demo 中文语言文件(grid.locale-zh_CN.js)

    我的emacs配置

    1.查看当前系统语言环境 locale 2.查看系统内安装的locale root@ubuntu-vps:~# locale -a locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to ...

    语言环境敏感排序:函数 sort_locale 在 MATLAB 中执行语言环境敏感排序。-matlab开发

    函数 sort_locale 在 MATLAB 中执行区域设置敏感的排序。 输入参数可以是字符向量元胞数组或字符串数​​组。 默认语言环境是 cs_CZ。 其他支持的语言可以在这里找到: ...

Global site tag (gtag.js) - Google Analytics