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

在SpringMVC中用fmt标签实现国际化/多语言

SpringMVC中用fmt标签实现国际化主要解决界面的多语言化,ftm标签会根据浏览器的语言值来先择对应的文件配置,如中文简体的浏览器值是zh_CN,那么ftm标签就会用以zh_CN.properties结尾的配置文件中的key来取值,从而实现自多语言的自动切换,配置应用如下:

  1. 引用JSTL相关依赖包

    <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope>
    </dependency>
    <!-- jstl相关jar包 --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency>

  2. 在Springmvc配置文件中国际化bean
     

    	<bean id="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource"><!-- 表示语言配置文件是以language开头的文件,(如果是简体中文语言的浏览器则会读取language_zh_CN.properties文件) --><property name="basename" value="language" /></bean>

  3. 创建language.properties文件,并同时创建对应语言语文件,如简体中文则为zh_CN.properties结尾,美国英文则为 en_US.properties结尾
     

    -----language.properties------language.username=username
    language.password=password-----language_en_US.properties-----
    language.username=Username
    language.password=Password------language_zh_CN.properties-----language.username=\u7528\u6237\u540D
    language.password=\u5BC6\u7801
    

    如图:

  4. 在JSP页面中使用
     

    <%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>国际化语言</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}/testConsumes" method="post">
    <fmt:message key="language.username"></fmt:message><input  type="text" name="username" value="">
    <fmt:message key="language.password"></fmt:message><input  type="text" name="password" value="">
    <input type="submit" value="提交">
    </form>
    当前语言: ${pageContext.response.locale}
    </body>
    </html>

  5. 测试结果

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Express与SQLite集成教程:轻松实现数据库操作
  • 每周12600元奖金池,邀你与昇腾算力共舞,openMind开发者盛宴启幕!
  • 专利申请全攻略:一步一步详解申请流程
  • “Flash闪存”介绍 及 “SD NAND Flash”产品的测试含例程
  • 手撕Python之散列类型
  • n*n矩阵,输出矩阵中任意两点之间所有路径
  • 代码随想录第六天|454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
  • Unity数据持久化 之 二进制存储法
  • 企业微信dll,最新版dll
  • 快速掌握GPTEngineer:用AI创建网页应用的实用教程
  • Pandas 1- 创建文件
  • 网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。
  • 个人怎么注册商标需要什么条件!
  • 局域网通信时,解决在一些设备上NsdManager发现服务失败的问题
  • easyPOI生成的excel添加水印
  • [译]Python中的类属性与实例属性的区别
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • CSS实用技巧干货
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • k8s如何管理Pod
  • 从零搭建Koa2 Server
  • 将 Measurements 和 Units 应用到物理学
  • 你真的知道 == 和 equals 的区别吗?
  • 学习笔记TF060:图像语音结合,看图说话
  • 一个JAVA程序员成长之路分享
  • 找一份好的前端工作,起点很重要
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 阿里云服务器购买完整流程
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1)Nginx简介和安装教程
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Git) gitignore基础使用
  • (二)丶RabbitMQ的六大核心
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四) 虚拟摄像头vivi体验
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)认识微服务
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .apk 成为历史!
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 4.0中的泛型协变和反变
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值