随着国际化的深入,越来越多的网站提供多语言版本给不同国家的用户。最近做的一个项目也涉及到这块,顺便做个总结。
一、通常实现方法有两种:
1、采用多语言模板,通过程序渲染不同语言版本的模板。
比如:
简体版: 文件名.zh_CN.后缀
繁体版: 文件名.zh_TW.后缀
英文版: 文件名.en_US后缀
优点:
(1) 不同语言版本有各自的模板,维护量大,但维护简单。甚至不同版本的模板在显示风格上都可以不同。
缺点:
(1) 同一商业逻辑的页面,需要维护多套模板,有重复工作。
2、采用同一模板,利用ResourceBundle配置多语言resource文件,实现网页上不同语言版本的显示。
优点:
(1) 同一商业逻辑的页面,只需要维护一套模板。
缺点:
(2) 模板的设计难度比较大,需要适应不同语言版本的需求。这个我们在实际工作中遇到过,有些显示英文字符没有问题的样式,在显示中文会出现问题,单个模板的维护难度比较大些。
二、我们先了解一下基础知识,这些会在实际开发中会用到。
1、 java.util.Locale
System.out.println(Locale.getDefault().toString());
输出:zh_CN 表示语言_国家/地区
常用的Locale为
Locale.TRADITIONAL_CHINESE zh_TW
Locale. SIMPLIFIED_CHINESE zh_CN
Locale.US en_US
2、 字符集
我们常用的字符集:GBK, UTF-8, ISO8859-1。
三、网页中如何实现多语言版本显示?
1、 我们将网页的输出字符集采用UTF-8,即返回网页的http头为:
Content-Type: text/html;charset=UTF-8
这个就需要我们在返回网页内容时候,调用以下语句设置网页的字符集。
servletResponse.setCharacterEncoding("UTF-8")
2、 网页GET/POST提交的时候采用UTF-8的方式。
(1) GET方式:
URL中的非ASCII采用UTF-8的方式编码,比如
http://www.test.com/中国.html?keywords=中国
页面显示的链接为:
http://www.test.com/E4%B8%AD%E5%9B%BD.html?keywords=E4%B8%AD%E5%9B%BD
(2) POST方式:
如果网页的输出字符集为UTF-8,则POST提交的时候表单的数据也是采用UTF-8编码的。
3、 在服务器端我们要设置服务器的字符集。
如果是jboss服务器的话,则需设置tomcat的server.xml
${jboss-home}\server\default\deploy\jbossweb-tomcat55.sar\server.xml
<Connector port="80" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
4、 在应用程序,在调用HttpServletRequest.getParameters(),需要调用HttpServletRequest.setCharacterEncoding("UTF-8");
5、 采用第一种方案:采用多语言模板。我们可以定义:
Index_zh_CN.html
Index_zh_TW.html
Index_en_US.html
我们可以通过不同的URL,或者用户的IP等信息,选择不同的模板进行渲染。
6、 采用第二种方案:采用单一模板。通过不同语言版本的配置文件获得不同的多语言版本字符串。
java.util.ResourceBundle提供的properties文件本身并很好的支持非ASCII的字符集,我们建议用户采用XMLResourceBundle,采用xml文件的方式定义配置文件。Xml文件本身可以很好的描述自己的编码格式。
<?xml version="1.0" encoding="UTF-8"?>。
分享到:
相关推荐
实现多语言后,必须进行详尽的测试,确保所有语言版本的功能完整且无误。这包括对界面布局、文本长度、日期和货币格式等方面的验证。 9. **语言包分发** 最后,为了让用户能够获取和安装额外的语言包,开发者需要...
为《使用C# 完美实现多语言版本Windows应用程序》所附源代码,以便更好的学习C#窗体程序多语言版本的制作。 本源代码可以任何方式免费使用,但转载请注明出处 另:代码中仅处理资源,没有本地格式信息的处理,有这...
### 多语言Web网站的设计与实现 #### 引言与背景 随着全球经济一体化的加深,企业面临着越来越多的国际用户,语言成为了沟通的重要障碍之一。为了打破这一障碍,多语言Web网站成为了连接全球用户与企业之间的桥梁...
以下是对"VC INI文件实现多语言版本"这一主题的详细说明。 在Visual C++(VC)开发环境中,我们可以利用Windows API函数来读写INI文件,如`WritePrivateProfileString`和`GetPrivateProfileString`。为了实现多语言...
本示例"html多语言切换demo"提供了一种高效且易于理解的解决方案,特别适合初学者和那些希望快速实现多语言功能的开发者。这个压缩包包含了实现这一功能所需的文件,可以直接运行,无需额外配置。 首先,我们要了解...
让我们深入探讨如何在Angular应用中实现多语言,以及如何使用提供的示例代码进行配置。 首先,Angular的i18n功能是通过Angular的编译过程来实现的。它允许我们为不同的语言创建多个版本的应用,每个版本都有相应的...
在.NET框架中,开发Windows Forms(WinForm)应用程序时,我们常常需要实现多语言支持,以便用户可以根据他们的语言偏好来使用软件。VB.NET是.NET框架下的一种编程语言,完全支持多语言应用程序的开发。本篇文章将...
使用Visual C++(简称VC)进行开发时,如何在一个工程项目中实现多语言版本的功能是一个常见且实用的需求。本文将详细介绍在一个VC工程中实现多语言版本的具体步骤,帮助开发者更加高效地完成多语言版本的开发工作。...
在SAP系统中,为了满足全球化业务的需求,配置客商(客户和供应商)的多语言版本是至关重要的。这使得不同语言背景的用户能够方便地查看和处理相关数据,提高工作效率,减少沟通误解。以下是对"SAP客商多语言国际...
5. 多语言视图:在ASP.NET MVC框架中,可以使用视图本地化,即为每个语言创建一个视图,或者使用共享视图和局部视图来实现多语言。视图中的文本可以通过 Razor 语法`@Resources.WelcomeMessage`来引用资源文件。 6....
本教程将详细解释如何利用C#中的资源文件,特别是`App_GlobalResources`目录,来实现多语言版本控制。 首先,`App_GlobalResources`是一个特殊目录,用于存放全局资源文件,这些文件可以被应用程序的任何部分访问。...
本话题聚焦于“上位机Winform实现多语言国际化”,这涉及到Windows Forms应用程序的开发,以及如何让其支持多种语言,以满足全球用户的使用需求。同时,描述中提到的“与西门子PLC通讯的代码”意味着我们还会讨论...
7. **测试与调试**:在实现多语言版本后,必须进行全面的测试,确保所有语言的UI布局、文字显示和功能都能正常工作。此外,还要注意字符编码问题,以防止乱码出现。 综上所述,多RC语言版本实现是一种通过动态DLL...
在开发Web应用程序时,尤其是面向全球用户群的网站,实现多语言支持是非常关键的一步。本项目"**C# ASP.NET 最佳的实现多语言网站的例子**"提供了一个高效的解决方案,它展示了如何在C# ASP.NET环境中优雅地处理多...
VC在一个工程中实现多语言版本.rar
本篇文章将详细探讨如何利用Delphi来设计和实现多语言界面。 首先,理解多语言支持的基本原理。在Delphi中,通常通过资源文件(如*.res或*.dfm)来存储不同语言的字符串和UI元素。每种语言对应一个资源文件,这些...
网站多语言解决方案 1. 页面多语言 在网站多语言解决方案中,页面多语言是指外观的多语言化。我们可以采用静态的语言包的方式,设计时候就应该包括 language 的目录,针对不同语言有独立的子目录。例如英文 ...
资源库的切换实现,把自己的资源编译成一个dll,在exe中通过调用AfxSetResourceHandle的方式来切换当前资源从而实现语言的切换 1.实现简单 2.对于不同语言,可以修改相应资源适应界面,不会出现界面显示不完整的问题
在开发ASP.NET Web应用程序时,实现多语言支持是常见的需求,尤其对于面向全球用户的网站至关重要。C#作为ASP.NET的主要编程语言,提供了丰富的工具和框架来实现这一目标。本项目"**c#网站实现多语言转换**"的核心是...
在网页开发中,实现多语言功能对于扩大网站的受众范围和提供更好的用户体验至关重要。HTML(超文本标记语言)本身并不具备直接处理多语言的能力,但我们可以利用其他技术和方法来实现这一目标。以下是一个关于如何在...