国际化

Posted hero96

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国际化相关的知识,希望对你有一定的参考价值。

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\\u518C

name.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:submit
    value="%{getText(\'submit\')}"></s:submit></td>
    </tr>
    </table>
    </s:form>
</body>
</html>
复制代码

注:

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

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

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

 

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

以上是关于国际化的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 国际化(messages.properties)

Ionic App之国际化 json数组的处理

20160222.CCPP体系详解(0032天)

SQL:按电子邮件域名排序

jsp简介

微信小程序代码片段