第一部分 简介 2
第1章 理解国际化 2
1.1 区域 3
1.2 全球可用性 4
1.3 本地化 6
1.3.1 本地化过程 8
1.3.2 发布国际化产品 9
1.4 小结 11
第2章 设计全球可用程序 12
2.1 识别规范中的全球可用需求 13
2.3 定制功能特征 14
2.2 规划全球化 14
2.3.1 设计可本地化的国际用户界面 16
2.3.2 研究法律问题 17
2.3.3 保持功能特征的易用性 18
2.4 组建产品组 18
2.5 设置全球可用开发环境 20
2.6 减轻翻译人员的工作量 23
2.7 测试上的考虑事项 24
2.8 小结 25
第二部分 全球化 28
第3章 Unicode 28
3.1 传统的字符编码 29
3.2.1 Unicode的性能 36
3.2 考察Unicode 36
3.2.2 Unicode的功能 39
3.2.3 Windows对Unicode的支持 42
3.3 创建Win32 Unicode应用程序 42
3.3.1 WCHAR,一种16位的数据类型 43
3.3.2 Win32 API的W函数原型 44
3.3.3 Unicode文本宏 45
3.3.4 C运行库扩展 45
3.3.5 代码页和Unicode之间的转换函数 46
3.3.6 在Visual C++中编译Unicode应用程序 46
3.3.7 移植到Unicode中 46
3.3.8 移植到Unicode的选项 48
3.3.9 最优方法 49
3.4 Web页面中的编码 50
3.4.1 Web编码选项 50
3.4.2 设置并处理编码 51
3.4.3 用户覆盖 53
3.4.4 Internet Explorer的语言支持 54
3.5 NET框架中的编码 54
3.6 控制台或文本模式程序设计中的编码 56
3.6.1 CRT控制台I/O 58
3.6.2 Win32文本模式I/0 59
3.7 小结 59
第4章 区域和文化意识 61
4.1 区域的概念 62
4.1.1 区域变量 62
4.1.2 NLS和区域标识 69
4.1.3 NET框架中的CultureInfo类 71
4.2 检索正确的区域 72
4.2.1 检索Win32中的用户区域 72
4.2.2 检索浏览器语言设置 73
4.2.3 检索当前的CultureInfo 74
4.3 日期和日历格式 75
4.3.1 操纵Win32中的日历和格式化日期 77
4.3.2 Web页面中的日期格式 80
4.3.3 NET框架中的日期和日历格式 81
4.4 时间格式 84
4.4.1 Win32中的时间格式和时区 86
4.4.2 Web页面中的时间格式 88
4.4.3 NET框架中的时间格式和时区 89
4.5 货币格式 90
4.5.1 Win32中的货币格式 91
4.5.2 Web页面中的货币格式 93
4.5.3 NET框架中的货币格式 93
4.6 大小写转换 96
4.6.1 Win32中的大小写转换 97
4.6.2 Web页面中的大小写转换 97
4.6.3 NET框架中的大小写转换 98
4.7 排序和字符串比较 98
4.7.1 Win32中的字符串比较和排序 98
4.7.2 NET框架中的字符串比较和排序 101
4.8 数字格式 107
4.8.1 Win32中的数字格式 108
4.8.2 Web页面中的数字格式 109
4.8.3 NET框架中的数字格式 110
4.9 地址 111
4.10 纸张大小 111
4.11 电话号码 112
4.12 度量单位 113
4.12.1 Win32中的度量单位 113
4.12.2 NET框架中的度量单位 113
4.13 控制台的区域意识 113
4.13.2 Win32和.NET框架 114
4.14 小结 114
4.13.1 C运行库 114
第5章 文本输入、输出以及显示 116
5.1 输入语言 117
5.1.1 处理输入语言的技术 118
5.1.2 输入法编辑器 121
5.2 复杂文字 127
5.2.1 复杂文字中的字符 128
5.2.2 Windows对复杂文字的支持 130
5.3 文本显示选项 131
5.3.1 Win32应用程序的文本布局 131
5.3.2 Web内容和.NET框架中的输入、输出和显示 137
5.4 字体 137
5.4.1 Windows 2000和Windows XP中的字体支持 137
5.4.2 Win32应用程序中的字体选择 139
5.4.3 Web内容中的字体控制 145
5.5 小结 147
第6章 多语言用户界面 148
6.1 Windows中的多语言用户界面支持 148
6.1.1 可用性 149
6.1.2 多语言用户界面的好处 149
6.2 提供多语言用户界面解决方案的选项 151
6.2.1 方法1:语言相关二进制文件 151
6.2.2 方法2:一个多语言资源文件 152
6.2.3 方法3:辅助DLL 154
6.3 怎样实现自己的辅助DLL 155
6.3.1 Win32应用程序中的多语言用户界面 155
6.3.2 多语言Web内容 159
6.3.3 .NET框架中的资源处理 162
6.3.4 .NET框架中的资源装载 165
6.3.5 控制台应用程序中的资源处理 166
6.4 小结 168
第三部分 本地化能力 170
第7章 软件本地化能力准则 170
7.1 分离可本地化的资源 170
7.2 字符串处理 174
7.2.1 避免运行时组合字符串 174
7.2.2 当必须使用变量时,使用惟一的名称 175
7.2.3 不要组合多个变量 178
7.2.4 使句子保持在单个字符串中 178
7.2.5 查看字符串缓冲区大小 179
7.3 考虑UI的本地化能力 180
7.3.1 重新调整元素 180
7.3.2 UI控件的本地化能力 186
7.3.3 图像和图标 188
7.4 小结 192
第8章 镜像 194
8.1 技术 194
8.2 Win32应用程序中的镜像 195
8.2.1 启用资源镜像 196
8.2.2 启用代码镜像 196
8.2.3 镜像和属性页 199
8.2.4 映射坐标 200
8.2.5 处理方向敏感性图形 201
8.2.6 镜像和图像列表控件 205
8.3 Web页中的镜像 206
8.3.1 有向图像 209
8.3.2 文本的强制左对齐 210
8.3.3 绝对CSS定位 210
8.3.4 表提供的可翻转性 211
8.4 .NET框架中的镜像 211
8.4.1 被镜像的Web表单 211
8.4.2 被镜像的Windows窗体 212
8.4.3 消息框 214
8.5 小结 215
9.1 简化内容 216
第9章 内容本地化能力准则 216
9.2 遵循基本的书写风格原则 217
9.3 重视文化和本地敏感性 218
9.4 编写易于循环使用的程序并降低本地化代价 218
9.5 重视艺术作品和多媒体的文化敏感性 219
9.6 设计具有全球性功能的帮助系统 220
9.7 小结 220
第四部分 本地化 222
第10章 本地化简介 222
10.1 本地化要素 223
10.1.1 文本 223
10.1.2 布局 224
10.1.3 图形和多媒体 224
10.1.6 区域数据和字符设置 225
10.1.7 构建过程和包 225
10.1.4 键盘快捷键 225
10.1.5 字体 225
10.2 本地化工具 226
10.3 本地化工作组 226
10.4 建立本地化准则 228
10.4.1 保证有效的本地化 228
10.4.2 安排国际发布 228
10.4.3 本地化外购 229
10.5 内容本地化 230
10.6 小结 230
11.1 全球可用性的质量保证 234
第五部分 测试 234
第11章 测试全球可用性 234
11.2 全球可用的测试方法 235
11.3 测试的全球化 237
11.3.1 准备测试 237
11.3.2 进行测试 240
11.4 本地化能力测试 242
11.5 本地化测试 244
11.5.1 本地化测试的要点 244
11.5.2 本地化测试的平台 244
11.5.3 UI的本地化测试 245
11.6 测试工具的作用 245
11.8 国际化测试样例 247
11.7 小结 247
第12章 用伪本地化测试本地化能力 252
12.1 本地化能力故障目录 252
12.2 伪本地化的常见特征 253
12.3 伪本地化的其他用途 254
12.3.1 图形和音频的伪本地化 255
12.3.2 内容(帮助文件、Web内容)的伪本地化 255
12.3.3 BiDi语言的伪镜像 255
12.3.4 注释模型 256
12.4 小结 256
13.1.1 GDI+的新特性 259
13.1 技术概况 259
第13章 图形设备接口+(GDI+) 259
第六部分 工具和技术 259
13.1.2 编程模型 260
13.2 可用性 260
13.3 国际化特征 260
13.3.1 GDI+中的排印处理 260
13.3.2 字体回退 261
13.3.3 图形保真和CIearType 263
13.4 国际化最优方法 263
13.6 小结 264
13.5 其他资源 264
13.4.2 不要一次显示一个字符 264
13.4.1 考虑各种文字间的差异 264
第14章 超文本标记语言(HTML) 265
14.1 技术概况 265
14.2 国际化特征 266
14.2.1 字符实体引用 266
14.2.2 表单提交 267
14.2.3 URL编码 268
14.2.4 层叠样式单 268
14.2.5 LANG属性 269
14.2.8 BDO元素 270
14.2.9 用CSS设置方向 270
14.2.7 双向布局 270
14.2.6 其他语言属性 270
14.3 国际化最优方法 273
14.4 其他资源 273
14.5 小结 273
第15章 Microsoft Internet信息服务(IIS)和Microsoft活动服务器页面(ASP) 275
15.1 技术概况 275
15.2 可用性 275
15.3 国际化特征 275
15.3.1 代码页设置 276
15.3.2 请求集合 278
15.3.5 日志 279
15.3.4 其他方法和组件 279
15.3.3 URI处理 279
15.4 IIS 4和IIS 5的有关问题 280
15.5 国际化最优方法 280
15.6 其他资源 280
15.7 小结 282
第16章 Microsoft Office 283
16.1 工具概况 283
16.2 可用性 284
16.3 国际化特征 284
16.3.1 保证可用40多种语言 284
16.3.2 支持亚洲语言输入 284
16.3.5 支持任何编码形式的文本文件和Web页面I/O 285
16.3.6 为特定市场定制的应用程序专有的特征 285
16.3.4 正确的日期和货币格式 285
16.3.3 支持在各种语言中排序 285
16.4 国际化最优方法 286
16.4.1 维护单一代码库 286
16.4.2 考虑你的用户 286
16.4.3 记住使得应用程序可本地化 286
16.5 替代工具 287
16.6 其他资源 287
16.7 小结 287
17.3 国际化特征 289
17.2 可用性 289
17.1 技术概况 289
第17章 MLang 289
17.3.1 代码页和区域枚举 290
17.3.2 字符集转换 291
17.3.3 代码页检测 292
17.3.4 字体链接 292
17.4 替代技术 293
17.5 其他资源 293
17.6 小结 293
第18章 Unicode的Microsoft层(MSLU) 295
18.1 工具概况 295
18.1.1 MSLU的工作方式 297
18.1.2 怎样(以及何时)进行覆盖 297
18.3 其他资源 299
18.2 可用性 299
18.4 小结 300
第19章 Microsoft.NET框架 301
19.1 平台概况 301
19.2 可用性 301
19.3 国际化特征 302
19.4 其他资源 302
19.5 小结 303
第20章 OpenType字体 304
20.1 技术概况 304
20.2 可用性 304
20.3 国际化特征 305
20.3.1 置换可替换的字形形式 306
20.3.2 OpenType的工作方式 307
20.4 问题 308
20.5 国际化最优方法 308
20.5.1 重视所有语言特征 308
20.5.2 注意查询次序 309
20.5.3 考虑存储效率 309
20.5.4 使用设备表在尺寸很小的点上放置发音符号 309
20.5.5 熟悉关于OpenType字体的所有建议 309
20.6 替代技术 309
20.7 其他资源 309
20.8 小结 310
第21章 Rich Edit 311
21.1 技术概况 311
21.2 可用性 313
21.3.1 字体绑定 314
21.3 国际化特征 314
21.3.2 Unicode代用对 315
21.3.3 接口 315
21.3.4 对输入法编辑器的支持 316
21.4 问题 317
21.5 国际化最优方法 317
21.5.1 考虑向后兼容非Unicode文本 318
21.5.2 考虑字体缩放 318
21.5.3 了解怎样处理Multicode序列 318
21.6 替代技术 319
21.7 其他资源 319
21.8 小结 319
22.2 可用性 320
22.3 国际化特征 320
第22章 Microsoft SQL Server 320
22.1 技术概况 320
22.4 国际化最优方法 326
22.4.1 始终使用Unicode数据类型 326
22.4.2 只要有可能就标准化站点校对 327
22.4.3 如有可能就配置Unicode服务器和客户 327
22.4.4 考虑存储空间和存储性能 328
22.4.5 确定系统表中的对象标识符 329
22.5 其他资源 329
22.6 小结 329
23.1.1 TSF的性能 330
第23章 Microsoft Windows文本服务框架(TSF) 330
23.1 技术概况 330
23.1.2 体系结构和对象模型 331
23.1.3 在应用程序中使用TSF 334
23.2 可用性 334
23.3 国际化特征 334
23.3.1 为一般用户提供对新输入方法的支持 334
23.3.2 对东亚语言的语音和手写体支持 334
23.3.3 无需设备特定或者语言特定的API 335
23.4 其他资源 335
23.5 小结 335
24.1.1 文本行支持 337
24.1.2 文本库支持 337
24.1 技术概况 337
第24章 Uniscribe 337
24.1.3 Uniscribe的版本 338
24.2 可用性 338
24.3 国际化特征 338
24.3.1 字距调整 338
24.3.2 连字 339
24.3.3 组合标记和字符记录 340
24.3.4 RTL和LTR阅读顺序 340
24.3.5 字符和字形间的多对多关系 341
24.3.6 插入符定位 341
24.4 其他资源 341
24.5 小结 342
25.1 工具概况 343
25.2 可用性 343
第25章 Microsoft Visual Studio.NET 343
25.3 国际化特征 344
25.3.1 支持各种编码和字体链接 344
25.3.2 支持本地化的Windows窗体 344
25.3.3 支持本地化的Web应用程序 345
25.3.4 配置工程 346
25.3.5 Visual C++对各种字符编码的支持 346
25.3.6 区域模型 346
25.3.7 MFC和ATL库 346
25.5 小结 347
25.4 其他资源 347
第26章 可扩展标记语言(XML) 348
26.1 技术概况 348
26.2 可用性 349
26.3 国际化特性 350
26.4 国际化最优方法 352
26.4.1 使用UTF-8 352
26.4.2 保证XML数据区域中立以及文化中立 352
26.4.3 利用MSXML技巧 352
26.4.4 利用System.XML技巧 355
26.5 其他资源 357
26.6 小结 357
附录A Windows XP中的NLS信息——概述 361
第七部分 附录(在光盘中) 361
附录B Windows XP中的NLS信息——详述各个区域的约定 371
附录C 映射到代码页的区域表 506
附录D 语言标识符表 513
附录E GetLocaleInfo用到的LCTYPE常量 522
附录F 选取的一些语言的排序方法 531
附录G Unicode编码点分配 532
附录H Microsoft Windows 2000和Microsoft Windows XP的代码页支持 535
附录I 代码页表 539
附录J 编码Web文档 632
附录K Microsoft.NET框架中的Culturelnfo名称和标识符 640
附录L Microsoft.NET框架中的RegionInfo名称和标识符 646
附录M 挑选的国际标点符号 652
附录N 有危险的字符 654
附录O FONTSIGNATURE结构 666
附录P Microsoft Windows 2000和Microsoft Windows XP支持的键盘和IME列表 674
附录Q 国际键盘布局 678
附录R Microsoft Windows XP中的时区 730
附录S 国际地址格式 732
附录T 度量衡及换算 750
附录U 纸张和信封的类型和大小 752
附录V Microsoft Windows的本地化版本 755
附录W 准备开发国际化软件的商业案例 759
附录X Web资源 762
附录Y 其他读物 765
术语表 766