struts学习笔记三-国际化
在程序设计领域,人们把能够在无需改写有关代码的前提下,让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化技术。
国际化简称为 i18n,根据internationalization简化而来。
本地化简称为l10n,根据localization简化而来,与国际化对应。
struts2框架从一开始就是用java内建的国际化来实现国际化。
在程序中一个特定的语言由三部分组成,语言、国家、变体,一般的系统变体会很少考虑。语言就是指汉语、英语等,国家指中国、美国、英国等,这两部分组合起来就是一个标准语言,比如中国汉语,美国英语,英国英语,日本日语等,美国日语这种组合方式也是可以的,但是没人会这样做,没有任何实际意义。程序中为各种语言和国家定义了简称,在国际标准ISO中,中文简体是zh,中国是CN,暂且不考虑中国的其他语言形式。
要实现struts国际化,最主要的就是配置properties文件和struts.xml。
下面以login,username,userpassword为例,如果系统呈现中文,那么这三个字就是"登录","用户名","密码",呈现美式英语就是"Login","User Name","User Password",在程序中,需要将这些信息放入一个properties文件中,分别是message_zh_CN.properties,message_en_US.properties,格式:自定义部分_语言简写_国家简写.properties。
message_zh_CN.properties
login | 登录 |
username | 用户名 |
password | 密码 |
message_en_US.properties
login | Login |
username | User Name |
password | User Password |
注:打开中文properties文件源代码会看到,编码是字节形式存在的,因为中文是特殊字符,而java内部是使用Unicode存储的,所以这里会发声转换。
在文件名命中,message是自定义的,然后再struts.xml中需要配置这些文件,在xml增加下面常量
1 <constant name="struts.custom.i18n.resources" value="message"/>
这样就配置了两个properties的头部文件,置于后面部分是不用配置的,页面显示时会选择一个message开头的文件,在后面会做解释。
在页面使用验证国际化效果,jsp页面代码:
<s:property value="${getText('login')}"/> //显示结果为"登录",struts通过ActionSupport类的getText方法寻找属性文件中的login
<s:text name="login"/> //显示结果为"用户名",相当于上一句。<s:textfield name="username" label="${getText('username')}"/> //显示"用户名"<s:textfield name="username" key="username"/> //key专门去寻找配置的属性,
实现国际化Action类必须继承ActionSupport获得struts内建的国际化支持,通过ActionSupport的方法getText(String key)可以获得对应的国际化信息。如果使用默认的国际化,服务器在哪里就会使用哪里的语言,在美国就会使用美国英语,在中国就会是简体中文。
另一种常用的方式是由用户指定,比如某网站有中英文可以选择,点击中文,那么将使用message_zh_CN.properties中的配置,点击英文将启用message_en_US.properties中的配置,这样就能做到中英文切换,达到国际化的效果。
转载于:https://www.cnblogs.com/CHSelf/p/3526063.html
struts学习笔记三-国际化相关推荐
- Struts学习笔记总结
Struts学习笔记总结 一.Struts是由Apache开源联盟提供的一套用于构建 Java web应用程序的框架,它的目标是希望分离Web程序的表示层.控制层和模型层,即MVC框架,使程序员将更多 ...
- J2EE学习笔记三:EJB基础概念和知识 收藏
J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- Ethernet/IP 学习笔记三
Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...
- iView学习笔记(三):表格搜索,过滤及隐藏列操作
iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...
- 吴恩达《机器学习》学习笔记三——多变量线性回归
吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...
- Python基础学习笔记三
Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...
- Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装
扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
最新文章
- Java 获取 Julian Day (Calendar)
- 物理机与虚拟机IP互ping通,而互ping主机名不通
- uniapp 单元测试_单元测试不够验收测试凑,编写验收测试有什么技巧?
- 10亿个字符串的排序问题
- c++ 怎样连接两个链表_LeetCode | 链表的入口,一文帮你搞定“环形链表”(python版,最简单解析)...
- libiconv字符集转换库使用方法
- php 环境优化,[笔记] 使用 opcache 优化生产环境 PHP
- 通俗了解神经网络如何避免陷入局部最优
- MYSQL的三种注释
- 10个线程同时执行i++操作1000次,如何保证结果是1w
- h文件中报错 unterminated conditional directive的原因
- linux 下拉式 终端,Gnome桌面的下拉式终端: Guake
- 令人疑惑的defaultValueAttribute
- 魔力服务器修改器,魔力宝贝修改器
- 低代码平台集成方案,打通企业内部业务管理系统
- 计算机笔记检讨,上课没做笔记的反省检讨书范文550字
- C语言打印数据的二进制格式-原理解析与编程实现
- java初级中级高级区分_初级、中级、高级程序员之间的区别,最后的顶级程序员很秀...
- 抖音搬运视频热门技巧 剪辑后会修改视频md5
- 第十一天 乐在其中-Android与远端之JDBC
热门文章
- oracle实例包括用户进程吗,ORACLE实例和ORACLE数据库详解(三)
- cli vue 卸载,vue Cli 环境删除与重装教程 - 版本文档
- mysql 插入删除操作_MySQL——增删改操作
- php中介模式,中介者模式(Mediator pattern)详解及PHP实现
- aspx跳转页面的符号_解决SpringBoot+MyBatis框架下页面跳转问题与代码优化处理。...
- 北理工计算机学院专业确认,北理工 2021 强基计划报名增加确认环节,限报 1 校 1 专业...
- (曲率系列3:)PCL:PCL库中的两种曲率表示方法pcl::NormalEstimation和PrincipalCurvaturesEstimation
- 和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓
- 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集
- easy-x库graphics.h图形库安装