本地语言中的java国际化

本地语言中的java国际化,java,internationalization,Java,Internationalization,我住在印度(有20多种语言),我试图在网站上实现java国际化 但是在Locale.getAvailableLocales()中,本地语言不可用。在我的案例中,有可能实现国际化吗 如果可能,字体会发生什么变化?如何在客户端浏览器中加载正确的字体 实现Struts或Spring的框架是什么?我认为您在这里提出了多个问题,它们相互正交 对于Locale.getAvailableLocales()问题。如果内置区域设置不够,您可以简单地创建更多。locale对象只是表示您的程序知道的区域设置,它与系统

我住在印度(有20多种语言),我试图在网站上实现java国际化

但是在Locale.getAvailableLocales()中,本地语言不可用。在我的案例中,有可能实现国际化吗

如果可能,字体会发生什么变化?如何在客户端浏览器中加载正确的字体


实现Struts或Spring的框架是什么?

我认为您在这里提出了多个问题,它们相互正交

对于Locale.getAvailableLocales()问题。如果内置区域设置不够,您可以简单地创建更多。locale对象只是表示您的程序知道的区域设置,它与系统执行的操作无关——更具体地说,没有相应的区域设置对象并不意味着您不能支持该区域设置

对于字体,通常您将在i18n站点上使用UTF-8,因此只要内容类型和字符集设置正确,它就应该在客户端浏览器中正确呈现


框架问题实际上取决于你想要完成什么,你想从中获得什么。

我相信使用JDK时可用的地区比使用JRE时可用的地区更多。

我不能说自己是Java国际化方面的专家——我所有关于本地化的工作都可以追溯到我们必须手工完成这些工作的时候

如果您不想这样做(现在并不比当时困难),那么您仍然可以使用Java的自动化I18N服务

似乎为了支持语言、数字格式等,而这些语言、数字格式等都是针对尚未支持的区域设置的,您必须创建一个对区域设置敏感的服务提供程序,这在6中变得容易多了


这里有一个很好的教程。

Locale.getAvailableLocales()返回一个Locale列表,其中LocalData安装在JRE的sun.text.resources包中

这份清单对你可能并不重要。目前,LocalData仅包含本地编号和日期格式信息。如果您没有任何特殊格式,您可以选择一个与您的格式相同的区域设置,如“en_IN”

字符集是另一个问题。如果您的本地化资源是Unicode格式的,则所有资源都已设置好。否则,您需要确保Java支持字符集/编码,以便它能够正确地转换它

不要担心字体。它与服务器无关。它是用HTML或CSS指定的。只要浏览器支持字体,您就可以了


Java本身是I18N就绪的,所以使用哪个框架并不重要。Struts为I18N提供了taglib(
bean:message
),但您也可以使用JSTL(
fmt:message
)。

我认为您对字体的评论有误导性;用于对页面进行编码的编码与最终用户PC上可用的字体中的一组图形几乎没有关系(使用UTF-8是一个好主意,但它不能解决所有字符问题)。你说得对,我过于简化了。使用UTF-8作为输出编码使其适用于大多数场景;但是,这是假设用户拥有现代浏览器、您希望在用户机器上找到的常用字体以及可能的语言支持包。@McDowell:我不同意。任何人访问一个网站,使用一个没有安装显示汉字所需字体的系统发送汉字,都已经死在水中了。主机不能做更多的事情来提供正确编码的Unicode,并为字符集和内容编码提供适当的头。事实上,目前使用的主流O/S几乎都默认安装了字体,涵盖了除亚洲表意文字以外的所有当前使用的语言;由于它们的巨大尺寸,通常可以单独下载。