📜  Struts2-本地化,国际化(i18n)

📅  最后修改于: 2020-11-11 05:02:04             🧑  作者: Mango


国际化(i18n)是规划和实施产品和服务的过程,以便可以轻松地将其适应特定的本地语言和文化,这一过程称为本地化。国际化过程称为翻译或本地化支持。

国际化缩写为i18n,因为该词以字母“ i”开头并以“ n”结尾,并且第一个i和最后一个n之间有18个字符。

Struts2通过以下位置的资源包,拦截器和标签库提供本地化,即国际化(i18n)支持-

  • UI标签

  • 消息和错误。

  • 在动作课中。

资源包

Struts2使用资源包为Web应用程序的用户提供多种语言和区域设置选项。您无需担心用不同语言编写页面。您要做的就是为所需的每种语言创建一个资源包。资源束将包含标题,消息和其他以您的用户语言显示的文本。资源束是包含应用程序默认语言的键/值对的文件。

资源文件的最简单命名格式是-

bundlename_language_country.properties

在这里, bundlename可以是ActionClass,Interface,SuperClass,Model,Package,Global资源属性。下一部分language_country表示国家/地区语言环境,例如,西班牙(西班牙)语言环境由es_ES表示,英语(美国)语言环境由en_US表示,等等。您可以跳过可选的国家/地区部分。

当您通过消息元素的键引用消息元素时,Struts框架将按以下顺序搜索相应的消息束-

  • ActionClass.properties
  • Interface.properties
  • SuperClass.properties
  • model.properties
  • package.properties
  • struts.properties
  • global.properties

要使用多种语言开发应用程序,您应该维护与这些语言/语言环境相对应的多个属性文件,并根据键/值对定义所有内容。

例如,如果要为美国英语(默认),西班牙语和法语开发应用程序,则必须创建三个属性文件。在这里,我将仅使用global.properties文件,也可以使用不同的属性文件来分隔不同类型的消息。

  • global.properties-默认情况下将应用英语(美国)

  • global_fr.properties-这将用于Franch语言环境。

  • global_es.properties-这将用于西班牙语语言环境。

访问消息

有多种访问消息资源的方法,包括getText,文本标记,UI标记的键属性和i18n标记。让我们简要地看到他们-

要显示i18n文本,请在property标签或任何其他标签(如UI标签)中使用getText调用,如下所示:


文本标签从默认资源包即struts.properties中检索消息。


i18n标记将任意资源束压入值堆栈。 i18n标签范围内的其他标签可以显示来自该资源束的消息-


   

大多数UI标签的key属性可用于从资源包生成消息-


本地化示例

让我们的目标是从上一章以多种语言创建index.jsp 。同一文件将被写入如下-

Employee Form with Multilingual Support
   

   
      

en es fr English Spanish France

我们将创建success.jsp文件,如果定义的操作返回SUCCESS ,则将调用该文件。

Success
   
   
   
      
   

在这里,我们需要创建以下两个动作。 (a)第一个操作a是照顾语言环境,并以不同的语言显示相同的index.jsp文件。(b)另一个操作是照顾提交表单本身。这两个动作都将返回SUCCESS,但是我们将基于返回值执行不同的动作,因为这两个动作的目的都不同

照顾语言环境的行动

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Locale extends ActionSupport {
   public String execute() {
       return SUCCESS;
   }
}

提交表格的动作

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Employee extends ActionSupport{
   private String name;
   private int age;
   
   public String execute() {
      return SUCCESS;
   }
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }
   
   public int getAge() {
      return age;
   }
   
   public void setAge(int age) {
      this.age = age;
   }
}

现在,让我们创建以下三个global.properties文件,并将其放入CLASSPATH中

global.properties

global.name = Name
global.age = Age
global.submit = Submit
global.heading = Select Locale
global.success = Successfully authenticated

global_fr.properties

global.name = Nom d'utilisateur 
global.age = l'âge
global.submit = Soumettre des
global.heading = Sé lectionnez Local
global.success = Authentifi    é  avec succès

global_es.properties

global.name = Nombre de usuario
global.age = Edad
global.submit = Presentar
global.heading = seleccionar la configuracion regional
global.success = Autenticado correctamente

我们将通过以下两个操作创建struts.xml





   
   
   
      
         /index.jsp
         /success.jsp
      
      
      
         /index.jsp
      
   


以下是web.xml文件的内容-




   Struts 2
   
      index.jsp
   

   
      struts2
      
         org.apache.struts2.dispatcher.FilterDispatcher
      
   

   
      struts2
      /*
   

现在,右键单击项目名称,然后单击导出> WAR文件以创建War文件。然后,将此WAR部署在Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将产生以下屏幕-

英文输出

现在选择任何一种语言,假设我们选择西班牙语,它将显示以下结果:

西班牙文输出

您也可以尝试法语。最后,当我们使用西班牙语时,让我们尝试单击Submit按钮,它将显示以下屏幕-

西班牙成功

恭喜,您现在拥有一个多语言的网页,您可以在全球范围内启动您的网站。