www.91084.com

GVKun编程网logo

Struts 第八篇【资源国际化、对比 JSP 的资源国际化】(国际化资源文件)

7

本文将介绍Struts第八篇【资源国际化、对比JSP的资源国际化】的详细情况,特别是关于国际化资源文件的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关

本文将介绍Struts 第八篇【资源国际化、对比 JSP 的资源国际化】的详细情况,特别是关于国际化资源文件的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于3.5 Struts2国际化应用、EasyUI与Struts2国际化使用、iOS 国际化 (国际化文字内容不改变,app 名字国际化,一键切换语言)、iOS 本地化-国际化-(App名字国际化)的知识。

本文目录一览:

Struts 第八篇【资源国际化、对比 JSP 的资源国际化】(国际化资源文件)

Struts 第八篇【资源国际化、对比 JSP 的资源国际化】(国际化资源文件)

资源国际化

我们在学 JSTL 标签的时候就涉及到了资源国际化,,,但是呢,在 JSP 的章节我并没有写博文来讲解怎么弄…. 一方面感觉 JSP 的资源国际化好麻烦,另一方面是感觉用的地方很少….. 因此就没有深入去了解它…

今天呢,学习到了 Struts2 的资源国际化了。重新看回 JSP 资源国际化的步骤,再对比一下 Struts 的资源国际化

Servlet 和 Struts 资源国际化区别

在 Servlet 写资源国际化的步骤:

  • 写资源文件

    • 基础名.properties【默认】
    • 基础名语言简称 国家简称.properties
  • 读取配置文件

    • jstl 提供的格式化与国际化标签库。

在 Struts2 写资源国际化的步骤:

  • 写资源文件
    • 基础名.properties【默认】
    • 基础名语言简称 国家简称.properties
  • 读取配置文件再使用
    • struts 标签获取资源文件内容

区别:

Struts2 加载资源文件更加简单,通过常量配置即可!提供的 Struts 标签更简单使用


资源国际化 Demo

下面就使用 Struts 来写一个资源国际化的 Demo….

写资源文件

值得注意的是:在 IDEA 下写 properties 资源文件,如果涉及到中文,默认是不会帮我们编码的。它是不像 eclipse 的… 因此需要我们手动去设置的…… 设置的教程在我的 IDEA 博文中有… 如果出现了这个问题,那就去 IDEA 博文下找呗。。。

这里写图片描述

在 Struts 中使用常量加载资源文件

我们直接在 Struts 中使用 contant 节点来加载我们自己写的配置文件。值得注意的是:value 的值是文件的全名 (也就是说,如果有包,就把包名写上)…. 并且,不需要写上后缀

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

这里写图片描述


Struts 标签使用国际化

name 的值是配置文件中配置的信息,写上就行了!


<head>
    <title><s:text name="title"></s:text></title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
</head>

<body>
<form method="post" action="${pageContext.request.contextPath }/user_login.action">
    <s:text name="username"></s:text> <input name="admin.userName"><br/>
    <s:text name="psd"></s:text><input type="text" name="admin.pwd"><br/>
    <input type="submit" value="登陆"><br/>
</form>
</body>

测试

注意,title 已经替换成了中文了!!

这里写图片描述

3.5 Struts2国际化应用

3.5 Struts2国际化应用

下面以登录界面为例,讲解国际化应用内容。

1.建立项目

打开MyEclipse,建立一个Web项目,命名为“Struts2InternationalTest”。

 

2.加载Struts 2的基本类库

该步骤与3.2.1节中的第3步步骤相同,这里不再赘述。

 

3.修改web.xml

其内容见3.2.1节第4步。

 

4.建立资源文件

    Struts2提供了很多加载国际化资源文件的方法,最简单且最常用的是加载全局的国际化资源文件。需要在项目的src文件夹下建立一个名为“struts.properties”的文件。只需要在该文件中编写下面代码:

struts.custom.il8n.resources=资源文件名

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

    该例中资源文件名为“messgageResource”,故struts.properties应为:

struts.custom.i18n.resources = messgageResource

    下面来建立两个资源文件,分别为中文和英文。

username=DLM
password=KL
login=login

    可以看出,它们分别是一个key-value对。然后再提供下面的文件:

username=登录名
password=口令
login=登录

    将上面文件以“messageResource_temp.properties”为文件名保存在项目的WEB-INF/classes文件夹下,因为该文件包含了非西欧字符,所以必须用native2ascii命令来处理。选择【开始】→【运行】菜单项,输入“cmd”。

    然后输入找到项目的class路径下,如“D:\my\Documents\java\JavaEE\Struts2InternationalTest\WebRoot\WEB-INF\classes”。在命令行输入

native2ascii messageResource_temp.properties messageResource_zh_CN.properties

这样就会在class路径下产生messageResource_zh _CN.properties文件(如下)。

username=\u767b\u5f55\u540d
password=\u53e3\u4ee4
login=\u767b\u5f55

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

补充:

Eclipse中如何修改properties等文件的编码?

window-->Preferences-->General-->Content Types-->text-->Java Properties File-->Default encoding-->输入utf-8

就支持在properties文件中写中文注释了!

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

5.建立login.jsp文件

Struts 2访问国际化消息主要有以下三种方式:

    1)在JSP页面中输出国际化消息,可以使用Struts 2<s:text…/>标签,该标签可以指定name属性,该属性指定国际化资源文件中的key

    2)在Action中访问国际化消息,可以使用ActionSupport类的getText()方法,该方法可以接收一个参数,该参数指定了国际化资源文件中的key

    3)在表单元素的label属性里输出国际化信息,可以为该表单标签指定一个key属性,该属性指定了国际化资源文件中的key。

下面是login.jsp文件代码:

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
    <head></head>
    <body>
        <s:i18n name="messageResource">
            <s:form action="login.action" method="post">
                <s:textfield name="user.XH" key="username" size= "20"></s:textfield>
                <s:password name="user.KL" key="password" size= "20"></s:password>
                <s:submit value="%{getText(''login'')}"/>
            </s:form>
        </s:i18n>
    </body>
</html>

 

6.部署运行

    部署运行项目,打开浏览器,单击“Internet 选项”>“常规”>“语言”,修改浏览器应用语言,当中文在最上方时表示当前为中文环境,而相应的英文在最上面时表示当前为英文环境。可以发现中文环境时登录界面如图3.15所示,英文环境时,登录界面如图3.16所示。

图3.15 中文环境时登录界面

图3.16 英文环境时登录界面

 

 

 

7.用ResourceBundleEditor插件实现国际化资源的生成

1)下载地址 http://sourceforge.net/projects/eclipse-rbe/

2)安装:解压,复制到Eclipse插件安装目录下,重启Eclipse。 

3)使用

在你的项目,WEB-INF上面点击右键->new->other然后进入到如图所示的界面

然后点击下一步进入如下图所示页面,选择你要配置使用的语言,可以多选 

完成后,选择你新建立的文件ApplicationResources_zh.properties,右击资源文件,选择【Open With】--【ResourceBundleEditor】

 

附:目录《JavaEE基础实用教程》笔记说明  

EasyUI与Struts2国际化使用

EasyUI与Struts2国际化使用

datagrid的title属性:<s:text name=''key''/>

confirm确认框提示:<s:text name=''key''/> (标签外面要加双引号)

<div>的title属性:<s:property value="%{getText(''key'')}"/>

页面打印文字:<s:property value="%{getText(''key'')}"/>

iOS 国际化 (国际化文字内容不改变,app 名字国际化,一键切换语言)

iOS 国际化 (国际化文字内容不改变,app 名字国际化,一键切换语言)

首先我们要分三个步骤讲解怎么一步步实现 app 名字国际化、内容国际化、一键切换国际化的:

一、app 设置内容或者可以说是 app 名字或者可以说 Info.Plist 中的东西国际化

 app 名字国际化

 1、首先新建文件 command+N 选择,然后 next

记住文件名字必须为:InfoPlist,要不然系统识别会失败!

然后点击 create,文件工程中会多一个不带箭头的文件

2、添加需要用到的语言

添加需要的语言(简体中文、繁体中文)英文为默认的语言不需要添加! 

然后直接点击 finish

3、添加语言文件到 InfoPlist.Strings 文件夹下边

 

这时候就可以写代码了

在 InfoPlist.Strings (English) 文件下写

"CFBundleDisplayName" = "Weibo";

同样的在另外两个文件夹写上对应的国际语言

"CFBundleDisplayName" = "微博";//InfoPlist.Strings(chinnese(simplified))

这时候系统模拟器或者真机切换语言看下,app 的名字就是对应的(Weibo 和微博了)

二、本地应用文字内容国际化

 基本步骤和第一步资源国际化是一样的,只需要新建上边 InfoPlist 名字的时候换成 Localizable!!!!!

 1、同样的三个文件夹

内容非别是:

"key" = "home";//
"key" = "首页";
"key" = "首頁";

然后在 viewcontroller 中写入代码

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 300, 200, 20)];
    label.textColor = [UIColor blueColor];
    [self.view addSubview:label];
    label.text = NSLocalizedString(@"key", @"这个是前边词的注解,可以不用填写");
}

这是后本地内容国际化就完成了!切换本地模拟器环境和真机环境就能看到本地的文案的改变!

 

三、一键切换国际化语言,这篇博客写的比较清楚(https://www.jianshu.com/p/57f240f2a180),但是这个在你切换本地语言的时候对其改变无效 (引文本地储存了你上次记忆的 appLanguage)!和二配合使用比较好!

iOS 本地化-国际化-(App名字国际化)

iOS 本地化-国际化-(App名字国际化)

本地化:根据不同的语言切换不同的文字(localization)

国际化:i18n(其他语言)

 

格式:左边是key,右边是value

"Cancel" = "取消";

让项目支持中文和英文

 

 取文字

// 英文 : Cancel
// 中文 : 取消

NSString * title =[[NSBundle mainBundle] localizedStringForKey:@"Cancel" value:@"Cancel" table:@"Test"];
//简写
//NSLocalizedStringFromTable(@"Cancel", @"Test", @"A title on cancel button")
[self.button setTitle:title forState:UIControlStateNormal];
// 如果字符串文件名是空的,就会去加载Localizable.strings文件

// genstrings指令的作用:自动生成strings文件 

 App软件名的本地化

创建名为InfoPlist.string的语言包

Base

"CFBundleName" = "111";

English

"CFBundleName" = "Test";

Chinese(Simplified)

"CFBundleName" = "测试";

 

 

 

 

 

 

 

 

 

 

 

今天关于Struts 第八篇【资源国际化、对比 JSP 的资源国际化】国际化资源文件的讲解已经结束,谢谢您的阅读,如果想了解更多关于3.5 Struts2国际化应用、EasyUI与Struts2国际化使用、iOS 国际化 (国际化文字内容不改变,app 名字国际化,一键切换语言)、iOS 本地化-国际化-(App名字国际化)的相关知识,请在本站搜索。

本文标签: