使用ICU4C进行多国语言应用程序开发(1) —— 发布多国语言库
2011-03-08 13:31
477 查看
使用ICU4C进行多国语言应用程序开发(1) —— 发布多国语言库
ICU中定义的资源树结构(resource tree structure),主要用于打包构建多语言环境时查找指定语言内容时的一种规范(自己理解)。
root Root
|
+-------+---+---+---+---+
| | | | |
en de ja ru zh Language
| | | | |
+---+ +---+ | | +-----+
| | | | | | | |
| | | | | | Hans Hant Script
| | | | | | | |
| | | | | | | +---+
| | | | | | | | |
US IE DE AT JP RU CN HK TW Country or Region
|
POSIX Variant
注:在打包发布语言包时,这个资源树结构是非常重要的,如:要有zh_CN.res的资源文件,必须有zh.res的文件。
root.txt文件的内容最好和en.txt的内容一样,这样可以在默认语言的时候自动定位到最通用的语言英语(en)上。下面是root.txt文件的示例内容:
root {
city{
CITY1001{ "New York" }
CITY1002{ "Shanghai" }
}
language{
Lan_en_US {"English"}
Lan_zh_CN {"Simplified Chinese"}
}
}
对于zh_CN.txt文件的内容,可以如下:
zh_CN {
city{
CITY1001{ "纽约" }
CITY1002{ "上海" }
}
language{
Lan_en_US {"英语"}
Lan_zh_CN {"简体中文"}
}
}
对于zh_CN.res要进行打包发布语言包的话,就必须有一个zh.res文件与其对应,zh.res文件可以为空,也可以和zh_CN.res的内容相同。
zh {
}
然后就是调用ICU4C的资源文件生成的命令方法:
genrb root.txt en.txt en_US.txt zh.txt zh_CN.txt
这样就会在当前目录下生成root.res en.res en_US.res zh.res zh_CN.res这五个文件。到这一步,我们的资源文件就可以与应用程序一同使用了,但是,这样发布的应用程序不够完美(程序目录中存在大量的res文件)。为了更加友好地与应用程序结合,ICU4C还提供了pkgdata命令用于将多个res文件打包为一个dll或lib库文件。
生成文件列表(file list)文件,可以用如下的指令完成,方法很简单,只是为了便于程序的自动化。
echo root.res en.res en_US.res zh.res zh_CN.res > reslist.txt
最后就是用生成的资源文件列表文件打包资源到一个二进制文件中。
pkgdata -p common_res -m static reslist.txt
执行完上面这条指令后在当前目录中就会产生名为common_res.lib的静态文件。
也可以使用“-m dll”生成动态链接库,这样就会在当前目录中产生名为common_res.dll和common_res.lib的动态链接文件,其中common_res.lib是在exe文件编译时使用的链接文件。
ICU中定义的资源树结构(resource tree structure),主要用于打包构建多语言环境时查找指定语言内容时的一种规范(自己理解)。
root Root
|
+-------+---+---+---+---+
| | | | |
en de ja ru zh Language
| | | | |
+---+ +---+ | | +-----+
| | | | | | | |
| | | | | | Hans Hant Script
| | | | | | | |
| | | | | | | +---+
| | | | | | | | |
US IE DE AT JP RU CN HK TW Country or Region
|
POSIX Variant
注:在打包发布语言包时,这个资源树结构是非常重要的,如:要有zh_CN.res的资源文件,必须有zh.res的文件。
root.txt文件的内容最好和en.txt的内容一样,这样可以在默认语言的时候自动定位到最通用的语言英语(en)上。下面是root.txt文件的示例内容:
root {
city{
CITY1001{ "New York" }
CITY1002{ "Shanghai" }
}
language{
Lan_en_US {"English"}
Lan_zh_CN {"Simplified Chinese"}
}
}
对于zh_CN.txt文件的内容,可以如下:
zh_CN {
city{
CITY1001{ "纽约" }
CITY1002{ "上海" }
}
language{
Lan_en_US {"英语"}
Lan_zh_CN {"简体中文"}
}
}
对于zh_CN.res要进行打包发布语言包的话,就必须有一个zh.res文件与其对应,zh.res文件可以为空,也可以和zh_CN.res的内容相同。
zh {
}
然后就是调用ICU4C的资源文件生成的命令方法:
genrb root.txt en.txt en_US.txt zh.txt zh_CN.txt
这样就会在当前目录下生成root.res en.res en_US.res zh.res zh_CN.res这五个文件。到这一步,我们的资源文件就可以与应用程序一同使用了,但是,这样发布的应用程序不够完美(程序目录中存在大量的res文件)。为了更加友好地与应用程序结合,ICU4C还提供了pkgdata命令用于将多个res文件打包为一个dll或lib库文件。
生成文件列表(file list)文件,可以用如下的指令完成,方法很简单,只是为了便于程序的自动化。
echo root.res en.res en_US.res zh.res zh_CN.res > reslist.txt
最后就是用生成的资源文件列表文件打包资源到一个二进制文件中。
pkgdata -p common_res -m static reslist.txt
执行完上面这条指令后在当前目录中就会产生名为common_res.lib的静态文件。
也可以使用“-m dll”生成动态链接库,这样就会在当前目录中产生名为common_res.dll和common_res.lib的动态链接文件,其中common_res.lib是在exe文件编译时使用的链接文件。
相关文章推荐
- 在myeclipse中使用Java语言进行spark Standalone模式应用程序开发
- 使用procdump工具监视已发布的应用程序,如崩溃产生dmp文件进行调试
- ZZ:使用.NET语言开发Silverlight应用程序入门(二):界面和对象模型
- ZZ:使用.NET语言开发Silverlight应用程序入门(一):了解项目结构
- ZZ:使用.NET语言开发Silverlight应用程序入门(二):界面和对象模型
- 使用AJAX进行应用程序开发
- 在 Visual C++ 开发环境下使用ADO来进行数据库应用程序开发
- IPHONE开发---本地化的使用(支持多国语言)
- ZZ:使用.NET语言开发Silverlight应用程序入门(一):了解项目结构
- ZZ:使用.NET语言开发Silverlight应用程序入门(一):了解项目结构
- 使用Scala语言开发Spark应用程序是自然而然的事情
- 使用 IntelliJ IDEA 开发 Android 应用程序时配置 Allatori 进行代码混淆
- 使用delphi+intraweb进行微信开发2—intraweb以.net方式发布(以asp.net mvc4模式部署)在IIS(.net虚拟主机)上
- ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧
- 使用AJAXRequest进行AJAX应用程序开发_ajax代码
- iPhone开发技巧之发布篇(4)--- 使用 Ad Hoc 发布自己的应用程序
- ZZ:使用.NET语言开发Silverlight应用程序入门(二):界面和对象模型
- 如何使用Visual Studio 2008打包发布开发好的应用程序
- iOS将产品进行多语言发布,开发
- iOS与H5交互 H5与App原生交互,一般会是前端页面中的JavaScript与App使用的原生开发语言的交互。技术方案应能达到以下要求: 在js与原生进行交互的时候能保证正常的正向调用逻辑返回