サーブレット国際
私たちは始める前に、のは、3つの重要な用語を見てみましょう:
- 国際化(i18n):これは、ウェブサイトは訪問者の言語や国籍に翻訳されたコンテンツの異なるバージョンを提供することを意味します。
- ローカライズ(l10n):これは、サイトは、そのようなヒンディー語(ヒンディー語)に翻訳サイトとして、特定の地理的領域または文化に適応するためのリソースに追加されたことを意味します。
- ロケール(ロケール):これは特別な文化や地理的領域です。これは通常、下線と国の象徴に続く言語のシンボルを参照します。 このような米国英語設定の場合の "en_US"などの領域を表します。
グローバルなウェブサイトを作成する際に、いくつかの考慮事項があります。 このチュートリアルでは、これらの考慮事項の完全な詳細が説明されていない、それは、異なる言語で提示Webページを作成する方法を差別ポジショニング(すなわちロケール)をお見せする良い例を渡します。
サーブレットは、要求側のロケールに応じて、サイトの適切なバージョンを選択し、現地の言語、文化やニーズに応じて、サイトの適切なバージョンを提供することができます。 以下は、Localeオブジェクト返されたリクエスト・オブジェクトです。
java.util.Localeのrequest.getLocale()
検出ロケール
以下に記載されているあなたは、地理的位置、言語、および地域の設定依頼を検出するためにそれらを使用することができ、重要な地域の設定方法です。 国の名前と言語名依頼者のブラウザの設定を表示するには、次の方法のすべて。
序号 | 方法 & 描述 |
---|---|
1 | String getCountry() 该方法以 2 个大写字母形式的 ISO 3166 格式返回该区域设置的国家/地区代码。 |
2 | String getDisplayCountry() 该方法返回适合向用户显示的区域设置的国家的名称。 |
3 | String getLanguage() 该方法以小写字母形式的 ISO 639 格式返回该区域设置的语言代码。 |
4 | String getDisplayLanguage() 该方法返回适合向用户显示的区域设置的语言的名称。 |
5 | String getISO3Country() 该方法返回该区域设置的国家的三个字母缩写。 |
6 | String getISO3Language() 该方法返回该区域设置的语言的三个字母的缩写。 |
例
この例では、関連する国家の言語と要求を表示する方法を示します。
輸入java.io. *; インポートのjavax.servlet *; 輸入のjavax.servlet.http *; インポートたjava.util.Locale; パブリッククラスのgetLocaleはHttpServletを拡張{ ます。public void doGetメソッド(HttpServletRequestのリクエスト、 HttpServletResponseの応答) ServletExceptionが、IOExceptionがスローされます { //クライアントのロケールロケールのロケール= request.getLocale()を取得します。 文字列言語= locale.getLanguage(); String型の国= locale.getCountry(); 応答のコンテンツタイプresponse.setContentTypeを設定//( "text / htmlの;のcharset = UTF-8"); PrintWriterのうち= response.getWriter(); 文字列タイトル=「検出ゾーンの設定 "; 文字列DOCTYPE = "\ nは<!DOCTYPE htmlの!>"; out.printlnを(DOCTYPE + "<HTML> \ n"は+ "<ヘッド> <タイトル>" +タイトル+ "</タイトル> </ head>の\ n"は+ 「<BODY BGCOLOR = \ "#のf0f0f0 \"> \ n "は+ 「<H1 ALIGN = \ "センター\"> "+言語+" </ H1> \ n "は+ 「<H2 ALIGN = \ "センター\"> "+国+" </ H2> \ n "は+ "</ BODY> </ HTML>"); } }
言語設定
サーブレットは、(など、英語、スペイン語、ドイツ語、フランス語、イタリア語、オランダ語、など)西ヨーロッパ言語記述されたページにエクスポートすることができます。 ここでは、正常にすべての文字を表示するために、コンテンツ-Languageヘッダは非常に重要ですし。
、「N」を表す "&#161;"; "&#241「第二の点は、次のようなすべての特殊文字を表示するためにHTMLエンティティを使用することで、次のように"¡ "を意味します。
輸入java.io. *; インポートのjavax.servlet *; 輸入のjavax.servlet.http *; インポートたjava.util.Locale; パブリッククラスDisplaySpanishはHttpServletを拡張{ ます。public void doGetメソッド(HttpServletRequestのリクエスト、 HttpServletResponseの応答) ServletExceptionが、IOExceptionがスローされます { 応答のコンテンツタイプresponse.setContentTypeを設定//( "text / htmlの;のcharset = UTF-8"); PrintWriterのうち= response.getWriter(); //スペイン語言語コードresponse.setHeader(「コンテンツ言語」、「ES」)を設定します。 文字列タイトル= "エンエスパ&ntilde;オール"; 文字列DOCTYPE = "\ nは<!DOCTYPE htmlの!>"; out.printlnを(DOCTYPE + "<HTML> \ n"は+ "<ヘッド> <タイトル>" +タイトル+ "</タイトル> </ head>の\ n"は+ 「<BODY BGCOLOR = \ "#のf0f0f0 \"> \ n "は+ "<H1>" + "エンエスパ&ntilde;オール:" + "</ H1> \ n"は+ "<H1>" + "&iexcl ;!オラムンド" + "</ H1> \ n"は+ "</ BODY> </ HTML>"); } }
日付特定のロケール
あなたは、ロケールに固有の形式の日付と時刻にjava.text.DateFormatのクラスと静的メソッドに、getDateTimeInstance()を使用することができます。 次の例では、指定されたロケールに特定の日付の書式を設定する方法を示しています。
輸入java.io. *; インポートのjavax.servlet *; 輸入のjavax.servlet.http *; インポートたjava.util.Locale; 輸入java.text.DateFormatの; 輸入java.util.Date; パブリッククラスDateLocaleはHttpServletを拡張{ ます。public void doGetメソッド(HttpServletRequestのリクエスト、 HttpServletResponseの応答) ServletExceptionが、IOExceptionがスローされます { 応答のコンテンツタイプresponse.setContentTypeを設定//( "text / htmlの;のcharset = UTF-8"); PrintWriterのうち= response.getWriter(); //クライアントのロケールロケールのロケール= request.getLocale()を取得します。 文字列、日付= DateFormat.getDateTimeInstance( DateFormat.FULL、 DateFormat.SHORT、 ロケール).format(新しいDate()); 文字列タイトル= "ロケール固有の日」。 文字列DOCTYPE = "\ nは<!DOCTYPE htmlの!>"; out.printlnを(DOCTYPE + "<HTML> \ n"は+ "<ヘッド> <タイトル>" +タイトル+ "</タイトル> </ head>の\ n"は+ 「<BODY BGCOLOR = \ "#のf0f0f0 \"> \ n "は+ 「<H1 ALIGN = \ "センター\"> "+日付+" </ H1> \ n "は+ "</ BODY> </ HTML>"); } }
通貨特定のロケール
あなたは、通貨固有のロケールとして(そのような長いdouble型やタイプなど)形式番号にjava.text.NumberFormatクラスと静的メソッドは、getCurrencyInstance()を使用することができます。 次の例では、指定されたロケールに固有の通貨をフォーマットする方法を示しています。
輸入java.io. *; インポートのjavax.servlet *; 輸入のjavax.servlet.http *; インポートたjava.util.Locale; 輸入java.text.NumberFormat; 輸入java.util.Date; パブリッククラスCurrencyLocaleはHttpServletを拡張{ ます。public void doGetメソッド(HttpServletRequestのリクエスト、 HttpServletResponseの応答) ServletExceptionが、IOExceptionがスローされます { 応答のコンテンツタイプresponse.setContentTypeを設定//( "text / htmlの;のcharset = UTF-8"); PrintWriterのうち= response.getWriter(); //クライアントのロケールロケールのロケール= request.getLocale()を取得します。 NumberFormatをNFT = NumberFormat.getCurrencyInstance(ロケール); 文字列formattedCurr = nft.format(1000000)。 文字列タイトル= "ロケール固有の通貨」。 文字列DOCTYPE = "\ nは<!DOCTYPE htmlの!>"; out.printlnを(DOCTYPE + "<HTML> \ n"は+ "<ヘッド> <タイトル>" +タイトル+ "</タイトル> </ head>の\ n"は+ 「<BODY BGCOLOR = \ "#のf0f0f0 \"> \ n "は+ 「<H1 ALIGN = \ "センター\"> "+ formattedCurr +" </ H1> \ n "は+ "</ BODY> </ HTML>"); } }
パーセンテージ特定のロケール
あなたはパーセンテージ特定のロケールをフォーマットするjava.text.NumberFormatクラスと静的メソッドのgetPercentInstance()を使用することができます。 次の例では、指定されたロケールに固有の割合をフォーマットする方法を示しています。
輸入java.io. *; インポートのjavax.servlet *; 輸入のjavax.servlet.http *; インポートたjava.util.Locale; 輸入java.text.NumberFormat; 輸入java.util.Date; パブリッククラスPercentageLocaleはHttpServletを拡張{ ます。public void doGetメソッド(HttpServletRequestのリクエスト、 HttpServletResponseの応答) ServletExceptionが、IOExceptionがスローされます { 応答のコンテンツタイプresponse.setContentTypeを設定//( "text / htmlの;のcharset = UTF-8"); PrintWriterのうち= response.getWriter(); //クライアントのロケールロケールのロケール= request.getLocale()を取得します。 NumberFormatをNFT = NumberFormat.getPercentInstance(ロケール); 文字列formattedPerc = nft.format(0.51); 文字列タイトルは= "ロケール固有の割合」。 文字列DOCTYPE = "\ nは<!DOCTYPE htmlの!>"; out.printlnを(DOCTYPE + "<HTML> \ n"は+ "<ヘッド> <タイトル>" +タイトル+ "</タイトル> </ head>の\ n"は+ 「<BODY BGCOLOR = \ "#のf0f0f0 \"> \ n "は+ 「<H1 ALIGN = \ "センター\"> "+ formattedPerc +" </ H1> \ n "は+ "</ BODY> </ HTML>"); } }