Java Struts2 本地化/國際化(i18n)淺析
國際化(i18n)是規劃和實施的產品和服務,使他們能很容易地適應特定的本地語言和文化的過程中,這個過程被稱為本地化。國際化的過程有時也被稱為翻譯或本地化啟用。國際化是縮寫i18n,因為我和兩端用n字打頭,並有18個字元之間的第i個和最後n。
訪問方式:
有幾種方法可以訪問的資訊資源,包括gettext的,文字標籤,UI標籤的關鍵屬性,國際化標籤。讓我們來看看他們簡單:
要顯示i18n的文字,使用的呼叫屬性標記gettext,或其他任何標記,例如UI標籤如下:
<s:property value="getText('some.key')" />
文字標記檢索從預設的資源包,即一個訊息 struts.properties
<s:text name="some.key" />
i18n標籤推值棧上的任意資源束。 i18n標籤範圍內的其他標籤可以顯示該資源包的訊息:
<s:i18n name="some.package.bundle"> <s:text name="some.key" /> </s:i18n>
大多數UI標籤的鍵屬性,可以用來檢索的訊息,從一個資源包:
<s:textfield key="some.key" name="textfieldName"/>
下面實現國際化處理
結構目錄:
配置檔案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> <constant name="struts.devMode" value="true" /> <!-- 掃描資源目錄下以global開頭的檔案 --> <constant name="struts.custom.i18n.resources" value="global" /> <package name="helloworld" extends="struts-default" namespace="/"> <action name="empinfo" class="com.oumyye.action.Employee" method="execute"> <result name="input">/index.jsp</result> <result name="success">/success.jsp</result> </action> <action name="locale" class="com.oumyye.action.Locale" method="execute"> <result name="success">/index.jsp</result> </action> </package> </struts>
處理類 Employee .java
package com.oumyye.action; 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; } }
處理類Locale.java
package com.oumyye.action; import com.opensymphony.xwork2.ActionSupport; public class Locale extends ActionSupport{ public String execute() { return SUCCESS; } }
檢視index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Employee Form with Multilingual Support</title> </head> <body> <h1><s:text name="global.heading"/></h1> <s:url id="indexUS" namespace="/" action="locale" > <s:param name="request_locale" >us</s:param> </s:url> <s:url id="indexZH" namespace="/" action="locale" > <s:param name="request_locale" >zh</s:param> </s:url> <s:url id="indexFR" namespace="/" action="locale" > <s:param name="request_locale" >fr</s:param> </s:url> <s:a href="%{indexUS}" >English</s:a> <s:a href="%{indexZH}" >中文</s:a> <s:a href="%{indexFR}" >France</s:a> <s:form action="empinfo" method="post" namespace="/"> <s:textfield name="name" key="global.name" size="20" /> <s:textfield name="age" key="global.age" size="20" /> <s:submit name="submit" key="global.submit" /> </s:form> </body> </html>
跳轉成功頁Success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Success</title> </head> <body> <s:property value="getText('global.success')" /> </body> </html>
global_fr.properties
global.name = Nom d'utilisateur global.age = l'âge global.submit = Soumettre des global.heading = Sé lectionnez Local global.success =Authentifi/t/u00E9 avec succ/u00E8s
global_us.properties
global.name = Name global.age = Age global.submit = Submit global.heading = Select Locale global.success =Successfully authenticated
global_zh.properties
global.name = /u59D3/u540D global.age = /u5E74/u9F84 global.submit = /u63D0/u4EA4 global.heading = /u9009/u62E9/u4E00/u79CD/u8BED/u8A00 global.success =/u6210/u529F
效果介面
注意訪問時的url地址。
相關文章
- struts2 國際化(本地化)
- MasaFramework -- i18n (國際化)Framework
- Django國際化與本地化指南Django
- nuxt2 國際化i18n使用UX
- vue中如何使用i18n實現國際化Vue
- Flask教程第十三章:國際化和本地化Flask
- iOS語言國際化/本地化-實踐總結iOS
- Spring Boot應用的國際化與本地化支援Spring Boot
- 淺析Java反射--JavaJava反射
- Angular primeNg i18n 國際化多語言處理Angular
- 現代 Vue 工程之「國際化 i18n 開發」Vue
- 對國際化 i18n 專案的一點思考
- 淺析Java NIOJava
- 淺析JAVA反射Java反射
- Angular 18+ 高階教程 – 國際化 Internationalization i18n (Draft)AngularRaft
- 鴻蒙Next應用全球化之路:國際化與本地化鴻蒙
- Java快取淺析Java快取
- Java偏向鎖淺析Java
- 淺析Java斷言Java
- 淺析Java常量池Java
- Struts2【UI標籤、資料回顯、資源國際化】UI
- Netflix推薦系統(Part Five)-國際化和本地化推薦
- 使用Vue i18n對前端頁面進行國際化處理Vue前端
- java多型性淺析Java多型
- 淺析單例模式--Java單例模式Java
- Java中的國際化Java
- 淺析EF效能優化優化
- js效能優化淺析JS優化
- 淺析Android外掛化Android
- JAVA動態繫結淺析Java
- 淺析Java8 Stream原理Java
- 淺析Java Web框架技術JavaWeb框架
- 淺析java中的IO流Java
- iOS 介面效能優化淺析iOS優化
- JavaScript模組化原理淺析JavaScript
- 模組化開發淺析
- 淺析“程式碼視覺化”視覺化
- 淺析前端的模組化前端
- OpenAI的結構化淺析OpenAI