java國際化,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 所說的國際化是什麼意思?

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

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-hant/n/283038.html

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

相關推薦

  • 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
  • Java判斷字符串是否存在多個

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

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

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

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

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

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論