java資源國際化,java中的國際化

本文目錄一覽:

java 所說的國際化是什麼意思?

國際化就是在你導入struts之後工程目錄下的ApplicationResources.properties文件當你在struts-config.xml配置了:message-resources parameter=”xxx.xx.xxx.ApplicationResources” /比如簡體中文的是:ApplicationResources_zh_CN.properties會自動根據你操作系統的語言環境轉換語言,但是在你JSP網頁上,必須要用struts標籤

Java如何國際化

建立消息資源文件.

在消息資源文件中。分別寫入各國語言。需要統一編碼。在jdk的安裝目錄有個編碼工具

用到jstl的國際化標籤。寫入消息資源文件中的key

如果用struts框架的話。struts有個html:message key=””的標籤可以做到

我說了這些不知道你能否聽懂。呵呵!

java注釋怎麼做到國際化

使用Struts2的方式實現國際化

1、實現原理

Struts 2國際化是建立在Java國際化的基礎之上,一樣也是通過提供不同國家/語言環境的消息資源,然後通過ResourceBundle加載指定Locale對應的資源文件,再取得該資源文件中指定key對應的消息—整個過程與Java程序的國際化完全相同,只是Struts2框架對Java程序國際化進行了進一步封裝,從而簡化了應用程序的國際化。

java國際化怎麼實現

以下分3點進行講述

1、我們使用java.lang.Locale來實現java國際化。

java.lang.Locale代表特定的地理、政治和文化。需要Locale來執行其任務的操作叫語言環境敏感的操作。

構造一個系統默認的Locale:

Locale defaultLocale = Locale.getDefault();

String country = defaultLocale.getCountry();//返回國家地區代碼

String language = defaultLocale.getLanguage();//返回國家的語言

String displayCountry = defaultLocale.getDisplayCountry();//返回適合向用戶顯示的國家信息

String displayLanaguage = defaultLocale.getDisplayLanaguage();//返回適合向用戶展示的語言信息

String displayName = defaultLocale.getDisplayName();//返回適合向用戶展示的語言環境名

加入當前Java虛擬機線程所處的操作系統的區域語言設置為「中文(簡體,中國)」,則上邊的運行結果依次將會是:

CN

zh

中國

中文

中文(中國)

根據國家地區和語言構造一個Locale(語言環境)

Locale currentLocale = new Locale(「zh」, 」CN」);

構造方法為:Locale(String language, String country);

2、使用ResouceBundle讀取國際化資源文件

ResourceBundle資源包包含特定語言環境的對象。使用其可以加載並讀取語言環境資源。

1. 輕鬆的本地化或者翻譯成不同的語言

2. 一次處理多個語言環境

3. 以後可以輕鬆的進行修改,一遍支持更多的語言環境。

當程序需要特定於語言環境的對象時,它使用getBundle()方法加載ResourceBundle類

ResourceBundle rb = ResourceBundle.getBundle(「res.MessageBundle」, currentLocale);

其中,res.MessageBundle代表的是我們在src下建立了一個res文件夾,而res文件夾下有一個名為MessageBundle.properteis的資源文件。我們允許在此建立多個國際化資源文件:MessageBundle_zh_CN.properties;

MessageBundle_en_US.properteis;

其中MessageBundle就是要在構造ResourceBundle時使用的字符串,這個名字合法即可,不需要特定約束。後邊的名字一定要遵循規則,resourceName_language_country.properteis;

然後我們使用rb.getString(key);就可以獲取資源文件中的Key對應的value。

3、實際應用距離:struts

在jsp頁面中,即可直接使用s:text name=”key”/來調用ResourceBundle資源文件中的內容

如何創建java國際化類資源文件

問題:關於一些大型項目中會使用不同語言版本的視圖,比如在一個Java Web開發中,在struts中九提供了改種文件的配置項及在View中通過標籤bean:message value=””來根據瀏覽器不同語言形式來展示頁面,實現多語言的互操作。

這裡自己將所遇到的這類問題,查看相關資料,通過JDK自帶的相關API實現這種國際化操作。

使用到的類主要有:import Java.util.Locale; import java.util.ResourceBundle;還需要簡單的國家化資源文件(針對不同語言有不同文件 .properties文件,鍵值對)

比如新建一個包com.xiaoli.test,裏面放置兩個國際化文件,中文(LDPC.properties)和英文(LDPE.properties)支持:

[java] view plain copy

psys.login.index=index.jsp\u9875/p

[java] view plain copy

sys.login.index=index.jsp page

上面鍵值對是指:index.jsp 頁

而後建立相關測試類實現如下:

[java] view plain copy

package com.xiaoli.test;

import java.util.Locale;

import java.util.ResourceBundle;

public class ResourceMessage

{

private static ResourceMessage resourceMessage = null;

private ResourceBundle resourceMessage_zh = null;

private ResourceBundle resourceMessage_en = null;

private Locale local;

//此時該國際化資源文件為下面的完全限定類名訪問,LDP為資源文件前綴

private static final String SOURCE_FILE_ZH= “com.xiaoli.test.LDPC”;

private static final String SOURCE_FILE_EN= “com.xiaoli.test.LDPE”;

private ResourceMessage()

{

//分別將兩個文件綁定到相應的語言環境下

resourceMessage_zh = ResourceBundle.getBundle(SOURCE_FILE_ZH, Locale.CHINA);

resourceMessage_en = ResourceBundle.getBundle(SOURCE_FILE_EN,

Locale.ENGLISH);

}

/**

* 單例模式

* 只創建一個實例

* @return

* @see [類、類#方法、類#成員]

*/

public static ResourceMessage getInstance()

{

if (null == resourceMessage)

{

synchronized (ResourceMessage.class)

{

resourceMessage = new ResourceMessage();

}

}

return resourceMessage;

}

public String getMessage(String key)

{

return getMessage(key, local);

}

public String getMessage(String key, Locale local)

{

if (null == local)

{

local = Locale.getDefault();

}

String msg = null;

if (Locale.CHINA.equals(local))

{

msg = resourceMessage_zh.getString(key);

}

else if (Locale.ENGLISH.equals(local))

{

msg = resourceMessage_en.getString(key);

}

//如果找不到資源文件,返回key

if (null == msg || “”.equals(msg))

{

return key;

}

return msg;

}

/** 測試方法

* @param args

* @see [類、類#方法、類#成員]

*/

public static void main(String[] args)

{

String key = “sys.login.index”;

// String value = ResourceMessage.getInstance().getMessage(key, Locale.ENGLISH);

//使用當前默認的語言環境獲取,這裡為中文支持

String value = ResourceMessage.getInstance().getMessage(key);

System.out.println(value);

}

}

結果,根據手動設置的不同語言環境可以打印不同的值:

index.jsp頁 和 index.jsp page

java 多語言國際化

國際化的英文為Internationalization,這個也太長了,所以它又稱為I18n(英文單詞 internationalization的首末字符i和n,18為中間的字符數)。

除了i18n還有L10n(localization),g11n(globalization),還有m17n(multilingualization),它們的區別是:

i18n支持多種語言,但是同一時間只能是英文和一種選定的語言,例如英文+中文、英文+德文、英文+韓文等等;

L10n(localization),支持2種語言,英文和另外一種語言(例如中文);

g11n(globalization),簡單的理解可以認為g11n = i18n + L10n。

m17n(multilingualization)可以在同一時間支持多種語言,例如你可以在一個頁面里看到中文、英文、德文和韓文。

為了使不同國家地區的人使用到適應他們環境和語言的軟件或網站,國際化成為了Java的必要因素之一。

國際化機制在軟件開發過程中,使得軟件與特定的語言或地區脫鉤。當我們做的軟件被移植到其他國家時,不必更改軟件本身的代碼就可以適應當地區的使用了,所以,國際化是必須的。

那麼在Java中如何實現國際化呢?

通過學習後,我也了解了一些必要的入門知識。

首先,我們可以通過測試代碼獲得本機操作系統的默認語言和區域。

查看默認語言和區域:

測試代碼:

1 /**

2 * @author 巨亞紅

3 * @date 2014-3-18 下午2:47:06

4 * @版本 V1.0 作者: 時間: 修改:

5 * @param args

6 */

7 public static void main(String[] args) {

8 Locale defaultLocale=Locale.getDefault();

9 System.out.println(“country=”+defaultLocale.getCountry());

10 System.out.println(“language=”+defaultLocale.getLanguage());

11 }

測試結果:

 

 如果將默認地區修改為美國的話,測試結果為:

 我們需要將硬編碼文本轉移到外部的資源文件里,建立兩個國際化資源文件:

 名稱=基本名稱+Locale

1、設置資源文件。

MessgesBundle_en_US.properties:

k1=hello

k2=good bye

MessgesBundle_zh_CN.properties:

k1=\u4F60\u597D

k2=\u518D\u89C1

2、利用ResourceBundle.getBundle(baseName, locale)來找到MessgesBundle_en_US.properties文件。

ResourceBundle rb=ResourceBundle.getBundle(“MessgesBundle”, defaultLocale);

3、拿到k1和k2的value值。

System.out.println(“k1=”+rb.getString(“k1”));

System.out.println(“k2=”+rb.getString(“k2”));

結果是:

當前的地區設置成為英語(美國):

當前的地區設置成為中文(簡體,中國):

 

4、佔位符的使用。

設置當前Locale 

//Locale currentLocale=new Locale(“zh”, “CN”);

Locale currentLocale=new Locale(“en”, “US”);

添加佔位符:

利用類MessageFormat

1 Locale currentLocale=new Locale(“en”, “US”);

2 ResourceBundle rb=ResourceBundle.getBundle(“MessgesBundle”, currentLocale);

3 MessageFormat mf=new MessageFormat(rb.getString(“k1”));

4 System.out.println(“k1=”+mf.format(new Object[]{“Jessica”}));

結果為:

如果改成中文:

1 Locale currentLocale=new Locale(“zh”, “CN”); //中文

2 ResourceBundle rb=ResourceBundle.getBundle(“MessgesBundle”, currentLocale);

3 MessageFormat mf=new MessageFormat(rb.getString(“k1”));

4 System.out.println(“k1=”+mf.format(new Object[]{“巨亞紅”}));

結果為:

5、設置缺省國際化資源文件。

上面中我們設置的兩個Locale已有資源文件,但是如果我們隨便設置一個Locale,如果沒有它對應的資源文件怎麼辦?那麼就需要設置一個缺省的國際化資源文件了。只要添加一個名為MessgesBundle.properties的資源文件可以了,在裏面進行相應的設置就OK了。

注意點:

缺省的Locale是由操作系統決定的。

Locale由語言和國家代碼構成。

國際化資源文件是由baseName+Locale構成,如: MessgesBundle_en_US.properties

缺省的國際化資源文件是由baseName.properties命名的,如:MessgesBundle.properties

如果資源文件放在了包里,那麼baseName就要加上包名了,否則找不到。

附上出處鏈接:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/289266.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 03:02
下一篇 2024-12-24 03:02

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python飛機大戰中文字資源分析

    Python飛機大戰是一款經典的飛行射擊遊戲,在遊戲過程中,玩家需要控制一架飛機不斷消滅敵人,生存到最後。該遊戲使用Python語言編寫,其中涉及到的文字資源對遊戲的整體體驗有重要…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論