1。リソースファイルの命名
国際的なリソースファイルの命名形式は次のとおりです。
basename_language_country.properties basename_language.properties basename.properties
Basenameがリソースファイルの基本名である場合、言語と国はJavaがサポートする言語と国でなければなりません。 Javaサポートを取得する言語および国のコードは次のとおりです。
locale [] loceres = locale.getavailablelocales(); for(locale locale:loceres){system.out.println( "country:" + locale.getCountry() + "、言語:" + locale.getlanguage()); }2。リソースファイルの構成と取得
新しいリソースファイルを作成します。中国の環境では、リソースファイルの値値をASCIIに変換する必要があります。実行後、Native2asciiを入力できます。さらに、この記事ではEclipse属性ファイルプラグインを使用するため、中国語で直接表示されます。プロパティファイルは次のように構成されています。
info_en_us.properties
username = zhangsaninfo_zh_cn.propertiesussusername = zhangsaninfo_zh.propertiesussusname = li si password = lisiinfo.propertiesussusername = wangwu password = wangwuemail = mailbox
さらに、プロパティファイルの値を読み取る必要がある場合は、Struts-config.xmlファイルで定数を構成する必要があります。
<! - リソースファイル名を使用します。ここで、値値はリソースファイルのベースネームを表します - > <定数名= "struts.i18n.resources" value = "info"> </constant>
ページでリソースファイルを取得する方法は、以下に示すように、strutsタグ<s:text/>を使用することです。
<! - リソースファイルはキー値を取得します - > <s:テキスト名= "username"/> <s:text name = "password"/> <s:text name = "email"/>
さらに、フォームフォームのキー値を取得する場合、メソッドは次のとおりです。
<! - キー値がリソースファイルのキー値であり、関数はラベル名を入力ボックスに追加することです。これはラベルの属性値と同じです。ただし、定数では、属性ファイルからキー値を取得することはできません。 - > <s:textfield name = "login.username" key = "username"> </s:textfield>
また、定数<定数名= "struts.ui.theme" value = "simple"/>が使用される場合、<s:textfield/>のキー値は属性ファイルから対応する値を取得できないことに注意してください。
最終ページには、次のような結果が表示されます。
上記の構成ファイルから、これら3つの値の値のソースを確認できます。このことから、リソースファイルの検索順序は次のとおりであることがわかります。
まず、basename_language_country.propertiesから関連するキー値を探します。そうでない場合は、basename_language.propertiesで関連するキー値を探してください。そうでない場合は、Basename.Propertiesの関連するキー値を探してください。そうでない場合は、関連するキー値を探してください。そうでない場合は、名前として表示されます。
3。属性ファイルでのプレースホルダーの使用
プロパティファイルの構成コンテンツは次のとおりです。
username = zhang san、{0}、{1}
タグ<s:param> value </s:param>を使用して、JSPでパラメーターを渡します。
<s:text name = "username"> <s:param> hello </s:param> <s:param> welcome!</s:param> </s:text>
4。アクション中のアプリケーションリソースファイル
動作中のリソースファイルを使用するには、ActionSupportクラスを継承する必要があります。 ActionSupportクラスは、TextProviderとLocalEproviderの2つのインターフェイスを実装します。 TextProviderは、リソースファイル値getText()メソッドを取得する方法を提供しますが、LocaleProviderインターフェイスにはロケールを取得するための1つのgetLocale()メソッドのみがあります。
構成ファイルinfo_zh_cn.propertiesを変更する:
username = zhang san、{0}、{1} usernameerror =ユーザー名は空にすることはできません!確認してください!実行中、プロパティファイルを取得する方法は次のとおりです。
this.getText( "usernameerror");
動作中のプレースホルダーを使用して、コードは次のとおりです。
this.getText( "username"、new String [] {"hello"、 "welcome"});5。パッケージ全体のリソースファイル
このパッケージとサブパッケージの下のアクションは、リソースファイルにアクセスできます。配置は特定のパッケージの下にあり、ネーミング形式はpackage_language_country.propertiesです。パッケージは固定形式です。構成ファイルpackage_zh_cn.propertiesは次のとおりです。
username = package scopeの下のユーザー名
パッケージの下のアクションでは、getText( "username")を使用して取得できます。
6。アクション範囲内のリソースファイル
個別のアクション用にプロパティファイルを指定し、アクションと同じレベルのディレクトリに配置できます。名前形式はです
ActionName_language_country.properties
。
アクションスコープのプロパティファイルを構成します。
username =アクション範囲内のユーザー名
GetText( "username")メソッドもアクションで使用され、値を取得します。
7.リソースファイルのロード順序
アクションにgetText(key)値を使用するために、アクションスコープ内にプロパティファイル、パッケージスコープ内のプロパティファイル、グローバルプロパティファイルがある場合、ロード順序は次のとおりです。
まず、キー値が指定されたアクションの属性ファイルに存在するかどうか。それが存在する場合、値は取られます。存在しない場合は、指定されたキー値を持つパッケージ範囲属性ファイルが現在のアクションの上位レベルパッケージに存在するかどうかを調べます。存在しない場合は、以前のレベルパッケージで検索を続けてください。発見されていない場合は、指定されたキー値がグローバル属性ファイルに存在するかどうかを調べます。指定されたキー値が存在する場合、キー値に対応する値が取り出されます。存在しない場合、デフォルトはキー値です。
さらに、グローバル属性ファイルに複数のリソースファイルがある場合、basename_language_country、basename_language、およびbasenameの順序で検索する必要があります。
8。ページ上のリソースファイルを取得します
(1)<s:i18n/>を使用して、リソースファイルにアクセスします。
コードは次のとおりです。
<! - i18nタグを使用して属性ファイルを取得します - > <! - パッケージスコープでリソースファイルを取得 - > <s:i18n name = "com/struts/package"> <s:text name = "username"> </s:text> </s:i18n> <! - アクション範囲のリソースファイルを取得- <s:text name = "username"> </s:text> </s:i18n>
(2)<fmt/>の使用
JSTLには、国際化とフォーマットタグが含まれています。 Internationalizationタグを使用すると、JSPページは、訪問者が配置されているエリアに応じて、異なる言語でページ式を出力できます。ここでは、Mavenを使用して依存関係JARパッケージを追加する必要があります。構成ファイルは次のとおりです。
<! - JSTLタグライブラリの紹介 - > <依存> <GroupId> jstl </groupId> <artifactid> jstl </artifactid> <バージョン> 1.2 </version> </dependency>
JSPページでFMTタグを使用すると、アプリケーションコードは次のとおりです。
<! - JSTLタグFMTを使用 - > <! - ロケールの設定は、クライアントによって渡された苦情を上書きします - > <fmt:setlocale value = "zh_cn" scope = "request"/> <! - リソースセットをロードしてeL変数に保存します。 Basenameはベース名です。パッケージの範囲にある場合、それはcom.struts.packageであり、アクションスコープの下で、com.struts.service.loginservice-> <fmt:setbundle basename = "info" scope = "request" var = "basename"/> <fmt:message key = "username" bunder " <fmt:param value = "hello"/> <fmt:param value = "wamble"/> </fmt:message> <br/> <! - fmt:bundleタグ本体でのみアクセスできるリソースセット - > <! - パッケージスコープでのリソースファイル - > <fmt:fmd:bundle basename = "com.struts.package" </fmt:bundle> <! - アクションスコープのリソースファイル - > <fmt:bundle basename = "com.struts.service.loginservice"> <fmt:message key = "username"/> </fmt:bundle>