`

I18N

阅读更多
	I18N
	public class I18N {
		public static void main(String[] args){
			Locale defaultL=Locale.getDefault();
			System.out.println(defaultL.getCountry());
			System.out.println(defaultL.getLanguage());
			Locale my=new Locale("en","US");
			ResourceBundle r=ResourceBundle.getBundle("Message",my);
			System.out.println(r.getString("k1")+"---");
			System.out.println(r.getString("k2")+"222");
			MessageFormat mf=new MessageFormat(r.getString("k1"));
			System.out.println(mf.format(new Object[]{"aaa"}));
		}
	}

	public class I18nSample {

		public static void main(String[] args) {
			Locale defaultLocale = Locale.getDefault();  
			System.out.println("default country=" + defaultLocale.getCountry());
			System.out.println("defalut language=" + defaultLocale.getLanguage());
			
			//Locale currentLocale = new Locale("zh", "CN");
			Locale currentLocale = new Locale("en", "US");
			//Locale currentLocale = new Locale("aaa", "asdfdsf");
			
			ResourceBundle rb = ResourceBundle.getBundle("MessagesBundle", currentLocale);
			
	//		System.out.println(rb.getString("k1"));
	//		System.out.println(rb.getString("k2"));
			
			MessageFormat mf = new MessageFormat(rb.getString("k1"));
			System.out.println(mf.format(new Object[]{"张三"}));
			
		}
	}

	中文 乱码  转成 unicode
		native2ascii Message_zh_CN1.properties Message_zh_CN.properties


1、struts的国际化配置
	* 在struts-config.xml文件中加入<message-resources parameter="MessageResources" />	
	* 将MessageResources.propertis文件拷贝到src下
	
2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换为unicode


3、在jsp中采用<bean:message/>标签读取国际化资源文件
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>

 <form action="login.do" method="post">
    	<bean:message key="id" />:<input name="id" type="text"><br>
    	<bean:message key="pw"/>:<input name="pw" type="text"><br>
    	<input type="submit" >
    </form>

4、利用struts默认把Locale放到session中的特性,可以采用编程的方式手动切换语言设置


	参见:ChangeLanguageAction.java
public class LangAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		Locale l=null;
		//Locale locale = Locale.getDefault();
		String lang=request.getParameter("lang");
		if("cn".equals(lang)){
			l=new Locale("zh","CN");
		}else if("en".equals(lang)){
			l=new Locale("en","US");
		}
		//request.getSession().setAttribute(Globals.LOCALE_KEY, l);
		this.setLocale(request, l);
		return mapping.findForward("success");
	}

}
-------------------------------------
jstl

	<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>    
<fmt:setLocale value="${header['accept-language']}"/>
<fmt:setBundle basename="res.MessageResources"/>
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title><fmt:message key="user.title"/></title>
</head>
<body>
	<h1><fmt:message key="user.title"/></h1>
	<hr>
	<form action="login.do" method="post">
		<fmt:message key="user.username"/>:<input type="text" name="username"><br>
		<fmt:message key="user.password"/>:<input type="password" name="password"><br>
		<input type="submit" value="<fmt:message key="user.login"/>">
	</form>
</body>
</html>


消息文本的国际化,分为三个步骤:
	* 创建消息
	* 传递消息
	* 显示消息
	

public class LoginAction extends Action {
 @Override
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  LoginActionForm laf = (LoginActionForm)form;
  String username = laf.getUsername();
  String password = laf.getPassword();
  ActionMessages messages = new ActionMessages();
  try {
   UserManager.getInstance().validate(username, password);
   
   //创建国际化消息文本
   ActionMessage message = new ActionMessage("user.login.success", username);
   //ActionMessage message = new ActionMessage("user.login.success", new Object[]{username});
   messages.add("loginSuccess1", message);
   
   messages.add("loginSuccess2", message);
   //传递国际化消息文本
   this.saveMessages(request, messages);
   return mapping.findForward("success");
  }catch(UserNotFoundException unfe) {
   //创建国际化消息文本
   ActionMessage message = new ActionMessage("user.not.found", username);
   messages.add("error1", message);
   
   //传递国际化消息文本
   this.saveErrors(request, messages);
  }catch(PasswordErrorException pee ) {
   //创建国际化消息文本
   ActionMessage message = new ActionMessage("user.password.error");
   messages.add("error2", message);
   
   //传递国际化消息文本
   this.saveErrors(request, messages);
  }
  //return mapping.findForward("error");
  return mapping.getInputForward();
 }
}
如何创建消息?
 * 理解ActionMessage和ActionMessages的区别

如何传递消息?
 * 理解saveMessages和saveErrors的区别
如何显示消息?
 * 通过<html:messages/>标签显示消息(可以显示提示消息和错误消息,既能读取MESSAGE_KEY也能读取ERROR_KEY)
 <font color="red">
 <html:messages id="msg" property="error1">
  <bean:write name="msg"/>
 </html:messages>
 </font>
 
 <font color="blue">
 <html:messages id="msg" property="error2">
  <bean:write name="msg"/>
 </html:messages>
 </font>
-----------------------
 <html:messages id="msg" message="true" property="loginSuccess1">
  <bean:write name="msg"/>
 </html:messages>
 
 * 通过<html:errors/>标签显示消息(只能显示错误消息),只能读取ERROR_KEY
 <html:errors/>
-----------------------------			

 

分享到:
评论

相关推荐

    js使用i18n实现页面国际化的方法

    在现代Web开发中,随着互联网的全球化,网站国际化(i18n)变得越来越重要。一个好的网站不仅需要提供精准且丰富的功能,还应该能够在不同的语言环境下为用户提供良好的浏览体验。本文将详细探讨如何使用JavaScript...

    黑群晖安装arpl-i18n

    "黑群晖安装arpl-i18n"这个主题主要涉及到的是在黑群晖系统上安装和使用arpl-i18n的过程。黑群晖是一款基于Linux的网络存储解决方案,它允许用户创建个人云存储中心,进行数据备份、共享和远程访问。而arpl-i18n...

    jquery.i18n.properties和jquery.easyui.min

    js使用i18n实现页面国际化 var webLanguage = ['zh-CN', 'en']; //获取网站语言 function getWebLanguage(){ //1.cookie是否存在 if (jQuery.cookie("userLanguage")) { i18nLanguage = jQuery.cookie(...

    i18n国际化插件

    i18n(Internationalization,国际化)是一种软件设计方法,旨在使软件能够在不同的语言和文化环境中使用,无需进行大规模的代码修改。在本项目中,我们关注的是一个基于Eclipse、Tomcat和JavaScript开发的i18n国际...

    jquery.i18n.properties-min-1.0.9.js文件下载

    《jQuery i18n Properties Minified 1.0.9.js:前端国际化的关键》 在Web开发领域,为了提供全球化的用户体验,前端国际化的功能是必不可少的。jQuery i18n Properties Minified 1.0.9.js,作为一款优秀的jQuery...

    vue项目中基于i18n的多语言的中文提取与写入的工具.zip

    这个压缩包“vue项目中基于i18n的多语言的中文提取与写入的工具.zip”似乎包含了一个名为“i18n-collect-cli-master”的项目,它可能是一个命令行工具,用于帮助Vue项目自动收集和管理中文翻译。 Vue-i18n 工作原理...

    vue3+vite+monorepo+qiankun+pnpm+vue-i18n、lodash、dayjs、windicss

    vue3+vite+monorepo+qiankun+pnpm+vue-i18n、lodash、dayjs、windicss vue3+vite+monorepo+qiankun+pnpm+vue-i18n、lodash、dayjs、windicss vue3+vite+monorepo+qiankun+pnpm+vue-i18n、lodash、dayjs、windicss ...

    jquery-i18n-properties.zip

    《jQuery i18n Properties:实现前端国际化的关键组件》 在现代Web开发中,随着全球化需求的日益增强,网站和应用程序需要支持多种语言,以便更好地服务于全球用户。jQuery i18n Properties 就是这样一个关键工具,...

    vue 国际化 vue-i18n 双语言 语言包

    Vue 国际化 vue-i18n 双语言语言包 在本文中,我们将详细介绍 Vue 国际化 vue-i18n 双语言语言包的相关知识,包括安装、配置、使用等方面的内容。 1. 安装 vue-i18n 首先,我们需要安装 vue-i18n 插件,可以使用 ...

    基于jQuery.i18n.properties插件实现前端页面国际化demo

    前端页面的国际化(i18n)是现代Web应用中不可或缺的一个特性,它允许网站内容根据不同地区的语言习惯进行展示。jQuery.i18n.properties插件是实现这一目标的一个强大工具,尤其适合那些基于jQuery构建的项目。这个...

    jquery-i18n-properties-1.0.9.js

    《jQuery i18n Properties 1.0.9:实现多语言支持的关键库》 在Web开发中,为用户提供多语言支持是至关重要的,尤其是在全球化的互联网环境中。jQuery i18n Properties 1.0.9 是一个专门针对这一需求而设计的...

    Vue或UniApp 前端语言国际化 i18n lang.js包

    在开发Web应用时,语言国际化(i18n)是一个重要的功能,允许应用程序根据用户的地域设置展示相应的语言内容。Vue.js和UniApp都是常见的前端框架,它们提供了方便的国际化插件来实现这一功能。本篇将详细介绍Vue和...

    国际化-i18n

    国际化(i18n)是软件开发中的一个重要概念,它指的是使软件能够适应不同语言和地区的过程。这个术语“i18n”是由“internationalization”这个单词的首字母和中间的18个字母组成的,意在简洁地表示这个复杂的主题。在...

    vue3+vite+monorepo+qiankun+pnpm+ vue-i18n、lodash、dayjs、windicss

    vue3+vite+monorepo+qiankun+pnpm+ vue-i18n、lodash、dayjs、windicss vue3+vite+monorepo+qiankun+pnpm+ vue-i18n、lodash、dayjs、windicss vue3+vite+monorepo+qiankun+pnpm+ vue-i18n、lodash、dayjs、windicss...

    基于i18n国际化微服务统一处理错误码

    本项目“基于i18n国际化微服务统一处理错误码”就是针对这一需求而设计的。通过结合SpringBoot框架和i18n(国际化)技术,我们可以实现错误信息的多语言支持,让错误信息能够适应不同的用户群体。 首先,让我们来...

    jquery.i18n.properties.zip

    在Web开发领域,为了满足全球用户的需求,网站和应用的界面需要能够适应多种语言环境,这一过程称为“国际化”(Internationalization,简称i18n)。本文将深入探讨一个用于HTML和JSP前端页面国际化的关键工具——...

    JS i18n实现,支持带参数的功能

    JavaScript(简称JS)i18n(国际化)实现是指在Web应用中,为了支持不同地区的用户,使用JS进行多语言切换的技术。i18n这个术语来源于“internationalization”,其中的18代表字母数,n代表最后两个字母。在本文中,...

    i18n.dll + i18n.west.dll

    标题中的“i18n.dll + i18n.west.dll”是指两个重要的动态链接库文件,它们在软件开发中扮演着关键角色。i18n是“国际化”(Internationalization)的缩写,通常用于处理多语言环境,确保软件能够适应不同地区的语言...

    优雅集成i18n实现国际化信息返回.zip

    优雅集成i18n实现国际化信息返回是SpringBoot框架中一个重要的功能,它使得应用程序能够支持多语言环境,为全球用户提供更加友好的交互体验。在SpringBoot中,i18n(Internationalization)通常通过资源文件来实现,...

    I18N.DLL和I18N.CJK.DLL

    Unity在发布时并没有包含这些字符集,需要手动加进去,将I18N.DLL和I18N.CJK.DLL从Unity安装目录(Editor\Data\Mono\lib\mono\2.0目录下)拷贝到项目目录的Assets目录下,然后重新编译出包,即可正常运行。 Encoding....

Global site tag (gtag.js) - Google Analytics