国际化(Internationalization)
1:什么是国际化?
国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。
它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,
其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。
2:在什么样的状况下使用国际化?
国际化是指的多语言支持,比方说你登录一个系统后,页面上的标签可以默认显示中文,
或者默认显示英文。国际化在web开发中比较常用,以便于不同母语的用户使用系统。
3:为什么使用国际化?
原因:因为语言种类繁多 将项目国际化 1.
在struts.xml文件中配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 在struts2.xml中配置指定资源文件的基名 -->
<constant name="struts.custom.i18n.resources" value="message"></constant>
<!-- 指定编码方案,如果想要转换国际化 必须指定为UTF-8 默认就是u8-->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- -->
<constant name="struts.ui.theme" value="simple"></constant>
<!-- 修改该文件,tomcat不用重启 -->
<constant name="struts.devMode" value="true"/>
<package name="default" namespace="/" extends="struts-default">
<action name="loignAction" class="cn.action.languageAction">
<result name="success">/success.jsp</result>
<result name="input">/regist.jsp</result>
</action>
</package>
</struts>
2.
配置资源文件
中文:message.properties
register.page=\u7528\u6237\u6CE8\u518C
register.title=\u65B0\u7528\u6237\u6CE8\u518C
name=\u59D3\u540D
password=\u5BC6\u7801
repassword=\u786E\u8BA4\u5BC6\u7801
telephone=\u7535\u8BDD\u53F7\u7801
username=\u7528\u6237\u540D
submit=\u7ACB\u5373\u6CE8\u518C name.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
英文:message_en.properties
register.page=HouserRent-User Register
register.title=New User Register
name=Name
password=Password
repassword=RePassword
telephone=Telephone
username=UserName
submit=Register Now
name.null=Name cannot be null
3.准备界面:
注:使用ognl表达式展示国际化!<s:text>,也可以放在<s:i81n>标签中。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><s:text name="register.page"></s:text></title>
</head>
<body>
<s:fielderror></s:fielderror>
<h2><s:text name="register.title"></s:text></h2>
<s:form action="loignAction">
<table>
<tr>
<td><s:text name="name" ></s:text></td>
<td><s:textfield name="name" key="name"></s:textfield><td>
</tr>
<tr>
<td><s:text name="password"></s:text></td>
<td><s:textfield name="password"></s:textfield></td>
</tr>
<tr>
<td><s:text name="repassword"></s:text></td>
<td><s:textfield name="repassword"></s:textfield></td>
</tr>
<tr>
<td><s:text name="telephone"></s:text></td>
<td><s:textfield name="telephone"></s:textfield></td>
</tr>
<tr>
<td><s:text name="username"></s:text></td>
<td><s:textfield name="username"></s:textfield></td>
</tr>
<tr>
<td colspan="2"><s:submit
value="%{getText('submit')}"></s:submit></td>
</tr>
</table>
</s:form>
</body>
</html>
注:
①将程序中的提示信息、错误信息等放在资源文件中,为不同国家/语言编写对应资源文件
②资源文件由很多key-value对组成,key保持不变,value随国家/语言不同而不同
③这些资源文件使用共同的基名,通过在基名后面添加语言代码、国家和地区代码来进行区分
创建Action类,并继承自ActionSupport类,重写execute(),封装对应的属性:
可以通过鼠标点击拖动更改语言设置
运行效果:
中文效果
英文效果
国际化(Internationalization)的更多相关文章
- Struts2(十三)国际化-internationalization
一.国际化是什么--I18N 即internationalization 首字母i-结束字母n之间有18个字母 特征:在程序不做修改的情况下,可以根据不同的语言环境显示相应内容 二.Java内置国际化 ...
- Struts2入门(六)——国际化
一.前言 1.1.国际化简介 国际化是指应用程序在运行的时候,根据客户端请求来自的国家地区.语言的不同而显示不同的界面(简单说就是根据你的地区显示相关地区的语言,如果你现在在英国,那么显示的语言就是英 ...
- [Java 进阶]Java中的国际化
背景知识 现代软件开发,往往做出的应用程序不止给一个国家的人去使用.不同国家的人往往存在语言文字不通的问题.由此产生了国际化(internationalization).多语言(multi-langu ...
- struts 国际化
国际化 1. 国际化与本地化 国际化 (Internationalization: I18N): 是程序在不做任何修改的情况下,就可以再不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示 ...
- 国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- javaweb学习总结(三十一)——国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- android学习笔记40——国际化和资源自适应
国际化——Internationalization,简称I18N. 本地化——Localization,检查L10N. java国际化资源的思路: java提供国际化资源的思路,是将程序中的标签.提示 ...
- 菜鸟学习SSH(二)——Struts国际化
国际化(internationalization,i18n)和本地化(localization,l10n)指让产品(出版物,软件,硬件等)能够适应非本地环境,特别是其他的语言和文化.程序在不修改内部代 ...
- Spring国际化
国际化(Internationalization)有时候被简称为i18n,因为有18个字母在国际化的英文单词的字母i和n之间.Spring对国际化的支持示例如下所示. 需要将spring.tld放到工 ...
- 13.Java国际化.md
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
随机推荐
- SQL Server-聚焦NOT EXISTS AND NOT IN性能分析(十五)
前言 上一节我们分析了INNER JOIN和IN,对于不同场景其性能是不一样的,本节我们接着分析NOT EXISTS和NOT IN,简短的内容,深入的理解,Always to review the b ...
- OCP考点实战演练02-日常维护篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练02-日常维护篇 1.数据库体系结构和AS ...
- 【分布式】Zookeeper客户端
一.前言 前篇博客分析了Zookeeper的序列化和通信协议,接着继续学习客户端,客户端是开发人员使用Zookeeper最主要的途径,很有必要弄懂客户端是如何与服务端通信的. 二.客户端 2.1 客户 ...
- 如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具
今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只分享一下如何在Windows Server 2008 R2没有磁盘清理工具 ...
- 【Android】 context.getSystemService()浅析
同事在进行code review的时候问到我context中的getSystemService方法在哪实现的,他看到了一个ClipBoardManager来进行剪切板存储数据的工具方法中用到了cont ...
- 用CIL写程序:从“call vs callvirt”看方法调用
前文回顾:<用CIL写程序系列> 前言: 最近的时间都奉献给了加班,距离上一篇文章也有半个多月了.不过在上一篇文章<用CIL写程序:定义一个叫“慕容小匹夫”的类>中,匹夫和各位 ...
- 使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本
打开PD软件: 1.新建概念模型(conceptual Data Model) File-->New Model-->Conceptual Data Mode 或者点击工作区,右键--&g ...
- C#开发微信门户及应用(3)--文本消息和图文消息的应答
微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为计划的安排事情之一了.本系列文章希望从一个循序渐进的角度上,全面介绍微 ...
- ASP.NET从MVC5升级到MVC6 RC2 总目录 - 发布在RC2Release之后
序言 随着MVC6RC2的推出,MVC6的脚步越来越近了.但是在我们的手里,有大批量的MVC5的项目.如何将MVC5升级到MVC6,将是一个很大的课题.微软官方暂时没有一个升级指导,或者一个迁移工具, ...
- Java基础知识笔记(五:多线程的同步问题)
编写多线程程序往往是为了提高资源的利用率,或者提高程序的运行效率,或者更好地监控程序的运行过程等.多线程同步处理的目的是为了让多个线程协调地并发工作.对多线程进行同步处理可以通过同步方法和同步语句块实 ...