導航:首頁 > 文件教程 > 國際化資源文件

國際化資源文件

發布時間:2023-01-02 15:31:58

⑴ 如何創建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
<p>sys.login.index=index.jsp\u9875</p>
[java] view plain
sys.login.index=index.jsp page

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

而後建立相關測試類實現如下:
[java] view plain
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

⑵ 求解:maven實現國際化資源文件的部署

你可以在pom.xml中配置:內
<plugins>
...
<plugin>
容<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ant_gen</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<ant antfile="${basedir}/build.xml">
<target name="xxx" />
</ant>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
使得maven調用ant

⑶ java國際化怎麼實現

以下分3點進行講述

1、我們使用java.lang.Locale來實現國際化。
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資源文件中的內容

⑷ SpringBoot如何配置和引用國際化資源

第一種將資源文件放在源碼裡面:

那麼配置文件信息如下:
<!-- 讀取國際化資源文件 == 資源文件在WEB-INF下面 ,可以配置多個 -->
<bean id="messageSource"
class="org.springframework.context.support.">
<property name="basenames">
<list>
<value>/WEB-INF/lang/messages</value>
</list>
</property>
</bean>

需要注意的是兩者配置的class不同

配置文件路徑中的「messages」為資源文件名稱中_en_US.properties的前面部分,可以自定義。

⑸ java 多語言國際化

國際化的英文為Internationalization,這個也太長了,所以它又稱為I18n(英文單詞 internationalization的首末字元i和n,18為中間的字元數)。
除了i18n還有L10n(localization),(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就要加上包名了,否則找不到。

附上出處鏈接:http://www.cnblogs.com/jyh317/p/3608048.html

閱讀全文

與國際化資源文件相關的資料

熱點內容
如何從殺毒軟體裡面恢復出文件 瀏覽:972
越獄iphone如何備份 瀏覽:124
蘋果四S萬能鑰匙怎麼破不開 瀏覽:603
網路列印機共享怎麼連接 瀏覽:313
fme系統找不到指定文件 瀏覽:301
iphoneid和密碼忘了怎麼辦 瀏覽:238
蘋果電腦優盤里的文件如何加密 瀏覽:284
word標題名和文件名一致 瀏覽:957
excel修改後的文件保持了怎麼恢復 瀏覽:340
社保網路認證怎麼弄 瀏覽:92
蘋果手機怎麼傳數據到新手機相冊 瀏覽:50
5s升級ios92無服務 瀏覽:354
ubuntu翻譯工具 瀏覽:665
wifi安裝教程 瀏覽:398
蘋果有些qq文件打不開 瀏覽:139
微信分身圖片緩存在哪個文件 瀏覽:544
眾籌用什麼網站 瀏覽:1
天馬座的幻想版本 瀏覽:536
微雲保存文件圖片沒有了 瀏覽:236
如何把excel表格圖片導出到文件夾 瀏覽:387

友情鏈接