两天前,我去了一家电子商务公司接受采访:
访调员:您在春季使用过这个东西吗?您可以介绍吗?
我:春天对国际化有很好的支持,并且相对简单。您只需要根据该语言配置一些涂鸦文件,然后注册国际相关的bean。同时,您需要指定配置文件的位置。
访调员:如果配置文件的内容更改?您是如何求解的?
我:这是春季国际化的实施班。您可以检测到配置文件中的更改,这可以解决您的问题
访调员:我们可以将这些国际配置投入到DB中吗?
我:我还没有做这个地方。基本上,我们都将国际配置文件放在项目中的属性文件中。但是,鉴于我对春季的理解,春季扩张非常好。
访调员:预期的薪水是多少?
我:20,000
访调员:恭喜,下周上班!
为了促进所有人,准备完善这些知识,以便每个人面试和使用。
简单的理解是对不同语言做出不同的响应。
例如,有一个表格填写页面上的用户信息,并且有一个带有名称的输入框
您可以在浏览器中选择一种语言
选择中文时,将显示:
选择英语时,将显示:
国际化正在这样做,根据不同的语言显示不同的信息。
因此,您需要支持国际化。您必须首先知道您选择的语言。Java用来指示包含国家和语言信息的区域语言的对象。
语言环境中有一种更常用的施工方法
2个参数:
语言:语言
国家:国家
语言和国家的两个参数的值并不凌乱,在国际上有统一的标准:
例如,语言的价值:zh表示中文,恩表示英语和中文可能在许多地区,例如在大陆地区:CN,新加坡:SG;许多国家也使用英语。
民族语言缩写格式:语言国家,例如:ZH-CN(中国[中国]),ZH-SG(中国[新加坡]),EN-GB(英语[英国]),
en-CA(英语[加拿大])。
还有更多,我们不要在这里谈论它。《国家语言法典》为您提供:http://www.itsoku.com/article/282
许多常用的语言环境对象是在该语言环境类中创建的。您可以直接使用它并随便列出它们:
回顾上一个问题:与名称相对应的标签显示在页面上。我们需要根据密钥和本地信息获得相应的国际信息。春季提供了实施的这一部分。让我们看看下面的详细信息。
春季中国通过Messageource支持了此界面
内部有3种常用的方法来获取国际信息。让我们看一下
ResourceBundleMessagesource这是基于Java的ResourceBundle基本类,该类允许仅通过资源名称加载国际资源来加载国际资源
ReloadableReSorceBundleMessarce函数与第一类的功能相似。它具有更及时的刷新功能,允许在不重新启动系统的情况下提供资源信息
StaticMessagesource允许其通过编程提供国际信息。一段时间以来,我们可以使用它来实施将国际信息存储在数据库中的功能。
通常,当我们使用Spring时,我们将Spring容器与单词ApplicationContext一起使用。这些容器通常继承AbstractApplicationContext接口。该界面实现了上面的国际接口消息程序,因此通常使用具有国际功能的ApplicationContext容器。
通常我们在应用程序容器中使用国际化的三个步骤
步骤1:创建国际化文件
步骤2:在容器中注册Messages程序键入BEAN。
步骤3:致电AccractActactantex中的GetMessage获取国际信息。
创建国际文档国际文档命名格式:name_ne语言_ region.properties
我们有3个文件,这些文件放在以下目录中
Message.Properties
该文件的名称未指定本地信息。当系统找不到它时,它将使用此默认
消息_zh_cn.properties:中文[中国]
消息_en_gb.properties:英语[英国]
在春季注册的Bean注册国际化必须是Messageource类型。bean名称必须为messageource。在这里,我们使用ResourceBundleMessagesOurcesourcesourcesourcesourcesourcesourceource
@1:您需要注意这个地方的写作。您可以指定国际配置文件的位置。格式:路径/文件名,请注意,它不包括[语言_国家。属性]
让我们服用测试案例
运行输出
第一行未指定语言环境。此时,系统将采用默认的语言环境对象。本地默认值中文[中国],即:zh_cn,因此您将获得媒介的内容。
后两行指定语言环境对象以查找相应的国际文件并获取值。
动态参数注意配置文件。个人介绍更为特别,包括内容的一部分。这是动态参数。打电话时,将其通过第二个参数以查看用法:
运行输出
在此类中,该功能与上述情况相似,但是有一个函数可以监视国际资源文档中的更改。有一种设置缓存时间的方法:
-1:永远指示缓存
0:每次获得国际化信息时,您都会再次阅读国际文件
大于0:配置文件的最后读取时间超过了当前时间,并再次读取国际文档
还有一种将缓存时间设置为几秒钟的方法,类似于类似
让我们来这里示例
message_zh_cn.properties
相应的测试用例
上面有一个周期。第一个输出后,修改中的地址如下,最终操作结果如下:
使用注意:在线环境,最好设置缓存时间,并且性能会更好。
我们介绍了上面的课程:此类允许通过编程进行国际信息,我们使用此类来实现从数据库获得国际信息的功能。
该课程中有两种方法更重要:
通过这两种方法添加国际配置信息。
让我们看下面的案例
自定义staticmessagesource类
上类实现了Spring的初始化接口,并在接口中重写了AfterPropertiesset方法。此方法将在当前BEAN初始化后调用。在此方法中,模拟来自DB的国际信息,然后致电AddMessage配置国际信息信息
参加Spring配置类,注册MessageFromDB到Spring Container
测试示例
运行输出
当我的容器上方启动时,将调用该方法。该过程如下:
如果您想使用国际化,则要使用国际化,这相对简单。只要实现以下接口,弹簧容器将自动调用此方法,注入它,然后我们可以使用国际化信息。
本文介绍了国际化的使用,并涉及Java的语言环境类。该课程用于表示语言状态信息。在获取国际信息时,您需要带上此参数。常用的实施类需要了解,支持硬编码,配置国际信息。
如果需要弹簧以支持国际化,则需要在MessageRece注册MessageRece的BEAN名称。这必须注意。
在这一点上,每个人都可以轻松地应对上面的采访中的三个问题。