• [原创]java WEB学习笔记52:国际化 fmt 标签,国际化的总结


    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

    内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

    本人互联网技术爱好者,互联网技术发烧友

    微博:伊直都在0221

    QQ:951226918

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    1.Web 应用程序的国际化

      实现 web 应用国际化有两种方式

      1)针对不同语言和地区的用户开发出不同的 JSP 网页版本,当用户请求资源时,根据请求消息中携带的本地信息为用户提供合适的版本

      2)将对本地环境敏感的资源数据(例如:错误提示信息,菜单文字等)从网页中分离出来,放在 .properties 属性资源文件中。对于应用程序中的数值,货币和日期/时间等本地敏感数据,可以通过占位符的方式设置它们的格式类型和格式模式。

    2.获取 web 应用中的本地信息

      1)要实现 web 应用的国际化,首先要获得客户端浏览器的本地信息。

      2)在 Servlet 程序中,调用 HttpServletRequest 对象的 方法获得代表客户端本地信息的 Locale 对象:

        ① getLocale():返回代表客户端的首选本地信息的 Locale 对象

        ② getLocales():返回一个包含客户端支持的所有本地信息的 Locale 对象的 Enumeration 对象,这些Locale 对象按照客户端支持的所有本地信息的优先级在集合中一次排列

    3.国际化格式标签简介

         1)<fmt:bundle>标签用于绑定数据源.properties文件(基名): <fmt:bundle basename="源文件名(且不能带后缀哦)" prefix="">  语句,代码等 </fmt:bundle>

         2)<fmt:message>标签用于从指定的资源文件中把指定的键值取来: <fmt:message key="" [var="varname"] [bundle=""] [scope="page|..."] />  如果用到var的话就不会在页面直接输出,而需要用到<c:out>标签来进行页面 的输出

         3)<fmt:message>必须和<fmt:bundle >搭配使用

           4)<fmt:message>标签可以配合<fmt:param>标签来进行设定,<fmt:message>标签指向键的动态值

           5)<fmt:setBundle>标签用于设置默认的数据来源:

           6)<fmt:formatNumber>标签用于根据设定的区域将数据格式化输出;

           7)<fmt:formatDate>标签用于格式化输出日期和时间;

           8)<fmt:parseDate>标签用于把字符串类型的日期和时间转换成日期型数据类型;

           9)<fmt:setTimeZone>标签用于设定默认的时区;

         10)<fmt:timeZone>标签用于设定在本签体内有效的时区

    jsp

     1 <%@page import="java.util.Date"%>
     2 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
     3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>Insert title here</title>
     9 </head>
    10 <body>
    11 
    12     <%
    13         Date date = new Date();
    14         request.setAttribute("date", date);
    15         request.setAttribute("salary", 12345.78);
    16     
    17     %>
    18     
    19     <fmt:setBundle basename="i18n"/>
    20     <fmt:message key="date"></fmt:message>
    21     <fmt:formatDate value="${date}"/>
    22     <fmt:message key="salary"></fmt:message>
    23     <fmt:formatNumber value="${salary}"></fmt:formatNumber>
    24     <br><br>
    25     
    26     <a href="">English</a>
    27     <a href="">中文</a>
    28     
    29     
    30 
    31 </body>
    32 </html>

    4.关于国际化的总结
      1)关于国际化和本地化

        本地化:一个软件在某个国家或地区使用时,采用该国家或地区的语言,数字,货币,日期等习惯。

        国际化:软件开发时,让它能支持多个国家和地区的本地化应用。使得应用软件能够适应多个地区的语言和文化风俗习惯。

      2)随用户区域信息而变化的数据称为本地信息敏感数据。例如数字,货币等数据

      3)相关API

        DateFormat  和 SimpleDateFormat 

        NumberFormat

           MessageFormat

        ResourceBundle

      4)关于国际化资源文件

        ① 必须提供 基名.properties 文件 和 基名_语言代码_国家代码.properties 文件

        ② 相同的基名 的资源文件必须有相同的key

        ③ 可能使用 native2ascii 工具把非asc 码转化为 asc 码

      5)关于国际化资源文件

        ① 可以使用request.getLocale() 获取locale对象

        ② 可以使用JSTL 的fmt标签完成国际化,后面使用框架提供的标签完成

        ③  实现"中文"  “英文”的切换:

          >提供两个超链接。携带不懂的变量值

          >根据变量值确定对应的Locale 对象

          >把 Locale 对象放入 session中

          > 绑定Locale 对应的资源文件

  • 相关阅读:
    webFlux&Reactor
    Docker镜像使用
    Docker的使用
    Docker的容器使用
    为什么样本方差除以(n-1)而不是n ?(自由度)
    机器学习(一)—— 线性回归
    线性、逻辑回归的java实现
    整合多个网络的拓扑结构并降维(Mashup)
    KS检验统计量的扩展应用(CMap)
    p-value
  • 原文地址:https://www.cnblogs.com/jasonHome/p/5725583.html
Copyright © 2020-2023  润新知