| 网站首页 | 硬件维修 | 应用学院 | 网络组建 | 网站制作 | 菜鸟黑客 | 编程之道 | 数码大全 | 娱乐休闲 | 软件下载 | 在线视频 | 请您留言 | 技术论坛 | 
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
  • Alumin远程访问控制软件 让你…

  • 浏览器操作记录工具Internet…

  • 让Google Deskbar实现简体中…

  • 网页打不开 Windows的Hosts表…

  • windows IE浏览器精典技巧两…

  • 实现了!中文WinXP安装IE7 B…

  • 腾讯TT浏览器V2.03简体中文版

  • 解决珊瑚虫QQ不能在Win2003运…

  • 在Win XP中让QQ跑得更快

  • Authorware特效字专辑(1)

  • Q
    您现在的位置: 我是IT人 >> 应用学院 >> 操作系统 >> Linux >> 教程正文
    Linux 国际化本地化和中文化 (1)           
    Linux 国际化本地化和中文化 (1)
    作者:网络 文章来源:转载 点击数: 更新时间:2005-8-15
    [ 字体:缩小 正常 放大 | 双击自动滚屏 ]
    请选择合适的字体颜色:

    几 个公司组成了一个非正式的论坛, 接着IBM, Microsoft等公司迅速加入.
    Unicode研讨会在1990年发表了Unicode标准版本1, 同时国际标准化组织完
    成 了一种类似的编码----ISO 10646. 因为没有必要存在两套标准, 所以
    Unicode 研讨会和国际标准化组织在1991到1992合二为一. 1994年, 中国和
    日本开始对 基于ISO10646上的国家标准进行工作. 现在, Unicode 开始用
    在许多产品中.

    Unicode包含了当今计算机领域中广泛使用的所由字符, 如世界上大部分 的
    书面语言, 印刷字符, 数字和技术符号, 地理图形和标点符号. 由于
    Unicode 的一致性, 它在大多数情况下都可能简化软件的国际化过程. 它取
    消了处理 多种代码页的必要, 并且由于是16位编码, 因此由双字节字符集
    所引起的额外 处理也不必要了.

    但是, Unicode作为一种编码也有它的缺陷, 比如编码的位置与排序无关,
    所以使软件支持Unicode仅仅是国际化的第一步, 实际情况中还需要与语言
    相关 的信息和规则. 所以Unicode一般作为程序的内部处理编码, 必须提供
    与其它 编码的双向转换表.

    最后需要说明的是, 虽然使用Unicode会使普通的英文文本大两倍, 但是 使
    用Unicode的整个系统却不会增加太大, 因为系统存放的文件大部分是二进
    制 文件格式, 同时, 使用针对Unicode的压缩方式, 可以把文件压缩成和使
    用对应 的8位正文一样大小.

    4. 字体(Font)和字体集(FontSet)

    在X窗口系统下使用的字体都必须在X服务器中注册X逻辑字体描述(X
    Logical Font Description)名. 它包括了字体的许多信息, 例如以下为西
    文字体和中文 字体的两个例子.

    1. -adobe-times-medium-r-normal--14-140-75-75-p-74-iso8859-1
    2. -tlc-song-medium-r-normal--24-240-75-75-c-240-gbk-0

    为了方便使用, 用户还可以给每一个字体加一个或多个别名, 别名文件
    fonts.alias 放在字体目录下, 可以手工编辑. 当字体目录变更或别名变更
    后, 必须使用命令 "xset fp rehash"或重新启动X才起作用.

    X 字体也可以通过字体服务器(Font Server)加载. 这对于本地不放字体 的
    系统或X终端特别有用. 加载的协议可以是TCP或DECNET.

    X 窗口系统的字体在X Server中之存在一份, 当所由软件都不使用它时, 字
    体的内存自动施放.

    字体中包含了制造商名, 字体类型, 权重, 字体大小, 字符集等信息. 它们
    也 可以缩写, 省去的部分用星号代替, 比如对上面的中文字体, 可以缩写
    为:

    -*-song-*-24-*-gbk-0

    在实际应用中, 字符串往往是中文和英文的混和字符串, 所以必须使用两种
    字体来绘出该字符串, 这种指定两种或两种以上的字体的描述就是字体集.
    字体 集一般的格式是把多种字体用逗号隔开, 比如, 指定下列字体集:

    "-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-*,\
    -tlc-song-medium-r-normal--14-*-*-*-*-*-gbk-0"

    令人遗憾的是, 中文的GB编码和Big5编码有重叠区域, 不能区分开来, 所以
    字体集并不能同时指定GB和Big5的字体.

    字体集的具体载入受到Locale的影响.

    在许多已经国际化的软件和图形库中, 一般通过资源文件让用户指定字体
    集, 比如gtk的简体中文资源文件为/etc/gtk/gtkrc.zh_CN, qt-1.44(国际
    化的)的 资源文件是 ~/.qti18nrc 等等.

    2. 信息的国际化

    信息(Message)国际化是软件国际化中比较重要的一环, 如果使软件可以 支持多
    种语言, 在设计时就应当考虑到信息的国际化问题. 现在的绝大多数 软件使用
    GNU的gettext作为基本工具. 信息国际化的基本步骤是:
    o 在软件初始化时设置使用setlocale()设置Locale
    o 使用gettext宏定义, 使程序看上去比较方便:
    o 指定信息的位置:
    o 指定翻译信息: _("Some Strings");
    o 在软件完成后,使用 xgettext 提取信息并翻译
    o 使用msgfmt把信息文件转换为.mo文件, 安装到locale目录下

    /* file this_app.c */
    #include
    #include
    #define _(String) gettext(String)
    #define N_(String) gettext(String)
    #define __(String) (String)

    int main(){
    //由环境变量决定locale
    setlocale(LC_ALL, "");

    //设置message的位置和文件名
    bindtextdomain("this_app", "/usr/share/locale");
    textdomain("this_app");

    printf(_("Some String"));
    }


    至此, 本程序的国际化过程已完成. 编译并联接成可执行文件this_app.

    gcc -o this_app this_app.c

    下面是本地化的过程.

    o 提取要翻译的信息: xgettext -a -o this_app.po this_app.c
    o 翻译信息

    在文件this_app.po 中含有"Some String":

    msgid "Some String"
    msgstr ""

    翻译成:

    msgid "Some String"
    msgstr "一些字符串"

    o 格式化信息文件: msgfmt -o this_app.mo this_app.po
    o 拷贝信息文件到locale的目录下, 比如对于中文zh_CN, cp this_app.mo
    /usr/share/locale/zh_CN/LC_MESSAGES
    o 执行文件: LC_ALL=zh_CN ./this_app

    上一页  [1] [2] [3] [4] 

    教程录入:小秦    责任编辑:小秦 
  • 上一篇教程:

  • 下一篇教程:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 关于我们 | 友情链接 | 版权申明 |