第4章 国际化与本地化
提到应用程序的国际化和本地化,可能大多数开发人员不是特别熟悉,或者觉得与自己的日常开发关系并不大。实际上,很多开发人员一直对国际化和本地化存在着不少误解,其中最常见的一种观点是,如果一个程序只面向某种特定的区域设置(locale)中的用户,那就不需要提供国际化的支持。比如,某个程序只是针对中国用户开发的,那么在源程序中直接使用中文字符串也有可取之处。这种观点似乎有它的道理,但是实际上国际化更多地表示的是一种程序应该具有的能力。程序都应该具有国际化的能力,只不过可以根据自己的需要选择对哪些区域设置提供本地化支持,而不是因为仅打算支持一种本地化区域设置,就放弃国际化的能力。另外的一种观点是国际化只需要把程序中出现的用户会看到的字符串都提取出来,然后加上翻译就可以了。虽然展示给用户的消息的国际化是实现国际化的重要部分,但并不是全部。除了消息之外,日期和时间、数字和货币等内容也是需要提供国际化支持的。任何不是随便写着玩的程序,都应该具备相关的国际化的能力。
本章将要对Java提供的国际化和本地化支持进行详细介绍。从实际开发的角度来说,为Java程序添加国际化的支持并不是一件很困难的事情。Java平台已经为开发人员提供了很多的抽象和简化。本章会介绍使用Java标准库的基本实践方式。除了与实际开发相关的部分之外,本章还会占用一些篇幅来介绍国际化底层的相关知识,尤其在Unicode和字符编码方面会着重介绍。Java 7中新增的对区域设置的支持也是重点内容。