Java 国际化与参数传递机制详解
1. 国际化概述
在当今全球化的软件市场中,大量软件产品需要部署到世界各地。仅仅开发支持母语的应用程序已远远不够,像魁北克这样的地区就要求所有软件必须支持两种或更多语言。软件在全球市场的成功,很大程度上取决于能否以多种语言在多个国家销售。
- 国际化(Internationalization) :开发支持不同语言和文化的软件的过程,简称为 i18n。
- 本地化(Localization) :为特定地区准备软件的过程。地区(Locale)可以由地理、文化或政治因素来定义。
对现有的大型应用程序进行改造以支持多语言可能成本高昂,因此在开发初期就考虑国际化是个不错的选择。遵循“无重复”原则有助于设计出能快速过渡到国际化的软件架构,同时构建国际化基础也能让后续工作更轻松,因为这些基础工作有助于消除代码重复。
2. 资源束(Resource Bundles)
直接将字符串字面量嵌入代码会带来诸多问题,主要是会造成代码重复。如果一个字面量出现在生产代码中,并且进行了全面测试,那么测试代码中很可能会重复这个字面量,而且字面量的含义也不总是清晰的。在敏捷 Java 开发中,通常会将字符串字面量提取为类常量,这样测试代码和生产代码都可以引用同一个常量,常量名能赋予其明确的含义。但维护大量类常量也是一件麻烦事。对于国际化应用来说,理想的解决方案是将所有字面量提取到一个公共文件中。当需要将软件部署到不同地区时,只需提供一个包含翻译文本的新文件即可。
Java 中的 ja