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\u518Cname.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:submitvalue="%{getText('submit')}"></s:submit></td></tr></table></s:form>
</body>
</html>

注:

①将程序中的提示信息、错误信息等放在资源文件中,为不同国家/语言编写对应资源文件

②资源文件由很多key-value对组成,key保持不变,value随国家/语言不同而不同

③这些资源文件使用共同的基名,通过在基名后面添加语言代码、国家和地区代码来进行区分

创建Action类,并继承自ActionSupport类,重写execute(),封装对应的属性:

可以通过鼠标点击拖动更改语言设置

运行效果:

中文效果

英文效果

转载于:https://www.cnblogs.com/Smile-123/p/5958261.html

国际化(Internationalization)相关推荐

  1. SAP UI5应用和Hybris Commerce的国际化(internationalization)支持

    WebUI,UI5和Hybris的i18n support都是一个套路,developer在代码里不应hard code基于某一种特定language的text,而是用place holder代替. ...

  2. 云客Drupal源码分析之国际化Internationalization:核心翻译系统

    各位<云客drupal源码分析>系列的读者: 本系列一直以每周一篇的速度进行博客原创更新,希望帮助大家理解drupal底层原理,并缩短学习时间,但自<插件系统(上)>主题开始博 ...

  3. javaweb学习总结(三十一)——国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  4. java bundle_java.util.ResourceBundle国际化用法详解

    初识国际化和ResourceBundle 这个类主要用来解决国际化和本地化问题.国际化和本地化可不是两个概念,两者都是一起出现的.可以说,国际化的目的就是为了实现本地化,详细的介绍可以看本文的最后.比 ...

  5. Struts2国际化——完整实例代码

    一.介绍 国际化Internationalization的首末字符I和N之间字符数是18,简称I18N "国际化"是指一个应用程序在运行时,能够根据客户端请求所来自国家或地区语言的 ...

  6. java i18n_Java i18n – Java的国际化

    java i18n Internationalization in Java or Java i18n is a very important feature. Java provides inter ...

  7. struts 国际化

    国际化 1. 国际化与本地化 国际化 (Internationalization: I18N): 是程序在不做任何修改的情况下,就可以再不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示 ...

  8. 深入分析JavaWeb Item22 -- 国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  9. 编程小白的计算机毕业设计指导开发教程-javaweb i18n国际化的使用

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  10. 抖音前端团队国际化是怎么做的?

    邓敏捷,字节 Starling 国际化平台核心开发者. 大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 国际化简介 国际化概念 国际化 in ...

最新文章

  1. Oracle Job定时任务的使用详解
  2. openstack代码解读之 neutron.agent.linux.iptables_manager模块
  3. bzoj2091: [Poi2010]The Minima Game DP
  4. 谈谈你对面向过程与面向对象的理解
  5. 机器学习导论(张志华):多项式分布
  6. 华硕UX433FN安装Win黑苹果双系统
  7. 腾达Tenda 路由器后门分析
  8. IDEA中的SourceRoot含义及设置方法
  9. 机械CAD中如何设置重叠图形消隐?
  10. 关于破解邮箱的一点心得
  11. 信息收集总结(基本信息搜集思路)
  12. SpringBoot项目的Liunx服务器部署(一)
  13. UNIX 进程揭秘--进程的生命周期
  14. vinted是什么平台以及特点
  15. SAP 各大常用模块汇总介绍(一)
  16. 作业周转时间以及平均等待时间
  17. 【计算机网络】ICMP协议
  18. 一文读懂嵌入式FPGA,改变芯片设计方式岂是闹着玩的
  19. 2022保育员(初级)考试题库及模拟考试
  20. 解决 input 输入框在 iOS 系统中无法输入内容

热门文章

  1. Python线性规划
  2. ubuntu下,verdi语法错误Syntax error: “(“ unexpected
  3. Cesium无需KEY调用Bing地图
  4. 新西兰转基因奶牛,奶水质量高
  5. 1145: 有问题的里程表(2)
  6. 教你如何把自己的域名绑定到云服务器
  7. 星际无限董事长张智皓:与周期做朋友,做财富的主人
  8. 字节跳动CEO张一鸣致年轻人的一封信,文末有福利
  9. 对于应用系统服务器宕机的思考
  10. tf卡加卡套的区别_SD卡与TF的区别