当前位置: 首页 > news >正文

Struts2国际化-getText()方法

转自https://blog.csdn.net/qq_43560838/article/details/83747604

一:简单理解

    国际化简称i18n,其来源是英文单词 internationalization的首末字符i 和n。18为中间的字符数。

    随着全球经济的一体化,软件开发者应该开发出支持多国语言、国际化的Web应用。对于Web应用来说,同样的页面在不同的语言环境下需要显示不同的效果。

    国际化文件的命名规则:

          1、基本名.properties 如:message.properties

          2、基本名_语言编码_国家编码.properties 如:message_zh_CN.properties, message_en_US.properties 其中语言编码和国家编码是固定的,可以在JDK中Locale类的常量中找到。

    Java中已经实现了国际化功能,struts2中只是对该功能进行了整合,以方便我们的使用。

    Struts2中使用到国际化的地方有: 1、jsp页面的国际化; 2、Action信息国际化; 3、转换错误信息的国际化; 4、校验错误信息的国际化;

    Struts2国际化文件分类: 1、全局范围国际化文件 2、包范围国际化文件 3、Action类范围国际化文件。

 

  

    全局范围国际化文件:

    编写一个messages_zh_CN.properties和messages_en_US.properties放在src下。

我在这里配置了两个属性:

messages_en_US:

login.username=username
login.password=password

 

messages_zh_CN:

login.username=\u767B\u5F55\u7528\u6237\u540D
login.password=\u767B\u5F55\u5BC6\u7801

 

在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件:

eg:

            <!-- 配置struts2国际化 value是国际化资源基本名message-->
            <constant name="struts.custom.i18n.resources" value="messages_en_US"/>

      或者

            <constant name="struts.custom.i18n.resources" value="messages_zh_CN"/>

 

(java代码中)国际化获取配置文件值使用:getText("键")

        eg:getText("login.username")  ---------》username。

              或者

           getText("login.username") ------------>登录用户名。

在jsp页面中使用国际化。这里需要使用标签:<s:i18n>标签

eg:

   

复制代码
 1  <!-- 局部定义使用哪一种国际化语音 -->
 2    <s:i18n name="messages_zh_CN">  3 <form action="<%=basePath%>login.action" method="post">  4 <table>  5 <tr>  6 <td><s:text name="login.username"/></td>  7 <td><input type="text" name="user.userName"/></td>  8 </tr>  9 <tr> 10 <td><s:text name="login.password"/></td> 11 <td><input type="text" name="user.password"/></td> 12 </tr> 13 <tr> 14 <td colspan="2"><input type="submit" value="<s:text name="login"/>"/></td> 15 </tr> 16 </table> 17 </form> 18 </s:i18n> 
复制代码

 

 浏览器显示为:

 

复制代码
 1  <!-- 局部定义使用哪一种国际化语音 -->
 2    <s:i18n name="messages_en_US">  3 <form action="<%=basePath%>login.action" method="post">  4 <table>  5 <tr>  6 <td><s:text name="login.username"/></td>  7 <td><input type="text" name="user.userName"/></td>  8 </tr>  9 <tr> 10 <td><s:text name="login.password"/></td> 11 <td><input type="text" name="user.password"/></td> 12 </tr> 13 <tr> 14 <td colspan="2"><input type="submit" value="<s:text name="login"/>"/></td> 15 </tr> 16 </table> 17 </form> 18 </s:i18n> 
复制代码

浏览器显示为

相关文章:

  • WDS部署服务之二镜像导入
  • 20170118修改商品流水
  • 如何轻松运维,你是救火队员还是工程师?
  • CentOS6.7 mysql 主从配置
  • Zookeeper的zoo.cfg的配置
  • 编写一个简单通用的makefile
  • ORA-00119: invalid specification for system parameter REMOTE_LISTENER
  • bootstrap-水平表单
  • MYSQL数据库字符编码设置
  • 网站测试自动化系统—数据驱动测试
  • LeetCode169. Majority Element C语言
  • CCNP综合实验2
  • *1 计算机基础和操作系统基础及几大协议
  • 没有ARM开发板一样移植uboot并用SKYEYE仿真
  • 如何通过httpclient获取访问域名的真实ip
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【node学习】协程
  • 【知识碎片】第三方登录弹窗效果
  • Angular Elements 及其运作原理
  • Docker下部署自己的LNMP工作环境
  • JS变量作用域
  • JS函数式编程 数组部分风格 ES6版
  • PHP的类修饰符与访问修饰符
  • Spring-boot 启动时碰到的错误
  • Sublime Text 2/3 绑定Eclipse快捷键
  • underscore源码剖析之整体架构
  • Vue2 SSR 的优化之旅
  • windows-nginx-https-本地配置
  • 阿里云应用高可用服务公测发布
  • 搭建gitbook 和 访问权限认证
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 将 Measurements 和 Units 应用到物理学
  • 每天一个设计模式之命令模式
  • 区块链技术特点之去中心化特性
  • 如何编写一个可升级的智能合约
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 06-01 点餐小程序前台界面搭建
  • ​决定德拉瓦州地区版图的关键历史事件
  • # 飞书APP集成平台-数字化落地
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (9)目标检测_SSD的原理
  • (Python第六天)文件处理
  • (三)Honghu Cloud云架构一定时调度平台
  • (十五)使用Nexus创建Maven私服
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • []串口通信 零星笔记
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)