JavaWeb開発 - ソフトウェアの国際化(国際テキスト要素)

数日前にJDBCプログラミングを中心に、我々は、システムを学ばなければなりませんでした。今、私たちは、Javaプログラムが既に十分活用するために配置されているデータベース上で動作しています。また、私は、私たちは、プログラミングを簡素化するために様々なフレームワークを使用する方法を学びました。
数日前に学習のための情熱は高くないものの、今日は、プログラムを学ぶ七日目です。しかし、習慣はそれに固執する必要がありまとめブログを書きます。騒ぎ。
ソフトウェアの国際化-今日は、コンテンツの開発を学習JavaWebです。

ソフトウェアの国際化:ソフトウェア開発時間は、世界と国のさまざまな部分へのアクセスと同時に契約でそれを作るために、異なる地域や国へのアクセスのために、訪問者やデータの読書習慣に沿った適切なページを提供しています。
国際化:国際化も国際化として知られています。
、対応するインターフェースを表示従って、訪問者の国や言語に依存して、インターフェイスの異なるセットを提供するソフトウェアのセットで人気のあるポイント。

実際には、JDKソフトウェアの国際化を達成するために、DOSウィンドウでjavacコマンドを入力し、DOSウィンドウが中国の情報をポップアップ表示されます。ときに、コンピュータの言語を変更すると、javacコマンドを入力し、再び英語、DOSウィンドウであると、ポップアップするDOSウィンドウは、英語での情報です。

必要性を特徴とするソフトウェア国際化、:

  • など、メニューバー、ナビゲーションバー、で使用されるテキスト要素、またはその他のエラーメッセージ、ステータス情報、として定置使用のためのテキスト要素プログラムについて、地域や国の訪問者のニーズに応じて、提供するために、さまざまな言語でテキストを選択します。
  • 動的にプログラムを生成されたデータには、例えば(日付、通貨など)のために、ソフトウェアは、現在の国や地域の文化的習慣に応じて表示されることができるはずです。

私たちは、第一の特徴を見て

国際固定テキスト要素

  • これらのエラーは、などのテキスト情報、ステータス情報を、固定メニューバー、ナビゲーションバーのソフトウェアについては、プロパティファイルでそれらを書いて、国によって異なる特性のファイルを書き込むことができます。プロパティファイルのこのグループは、リソースパッケージと呼ばれます。
  • リソース・バンドルを説明するためのResourceBundleクラスに設けのにJavaAPIとのResourceBundleクラスがgetBundleの対応する方法を提供し、この方法は、自動的に国の訪問者に応じて表示することに対応するリソースファイルを取得することができます。
バンドルおよびリソースファイルにいくつかのメモを作成します。
  • 各リソースファイルは、リソースのパッケージには、共通のベース名を持つ必要があります。ベース名に加えて、各リソースファイルの名前は、そのローカル情報の追加部品を特定する必要があります。たとえば:資源基盤パッケージの名前は「myproperties」であり、中国、ファイル名に対応する英語の環境資源はでした:「myproperites_zh.properties」「myproperites_en.properties」。
  • 各リソースのパッケージには、追加のローカル情報と識別の一部ではないデフォルトのリソース・ファイルを、持っている必要があります。ResourceBundleオブジェクトのリソースパッケージ内のユーザーのリソースファイルに一致する見つからない場合、我々は、デフォルトのリソース・ファイルを見つけることができない場合、それは、ユーザーのリソースファイルに最も近いリソースパッケージを選択します。例myproperites.propertiesため。

言語と国コードを貼り付けます

































































言語コード 説明 | 国番号 説明
ドイツ人 | CN 中国
これは スペイン語 | CA カナダ
英語 分割 OF ドイツ
神父 フランス語 FR フランス
日本人 ライン インド
JW ジャワ | 米国 合衆国
私の 韓国語 |
ZH 中国の |

このテーブル将来では、それが各国語リソースファイルのための比較表で書かれていてもよいです。
リソースファイルの命名規則は次のとおりです。国を省略することができ、言語ベースの名前_ _国民の.properties、。
例:中国に代わってmyproperties_zh_CN.properties、国コードは、一般的に、小文字の言語コードを大文字にしています。
米国に代わってmyproperties_en_US.properties。

ファイルのリソースバンドルは、一般的にsrcディレクトリに確立されています。
示しています。
新しいWebプロジェクトは、day07と呼ばれます。
新しい3つの構成srcディレクトリ内のファイル、それぞれmyproperties.properties、myproperties_zh_CN.properties、myproperties_en_US.properties。
myproperties.properties書かれた文書ではname = default
myproperties_zh_CN.properties文書の下準備name = 张三
myproperties_en_US.properties下準備・ファイルname = mary
、一部の学生は、設定ファイルが中国語で保存されていないため、名前=ジョー・スミスプロファイルは、保存することはできません書き込みを見つけます。道の科学リソースファイル形式について書きます。

  • コンテンツのリソースファイルが表示された値に基づいて、ページのキーワード検索ソフトウェア上で、「キー=値」の形式で通常です。リソースパッケージのすべての主要なリソースファイルは、対応するテキスト諸国と比較して、同じ値でなければなりません。
  • そして、リソースファイルは、プロパティファイル形式を使用するため、ファイル内のすべての文字は、このような非ACSII漢字用としてASCII文字コード、最初に符号化されなければならなければなりません。(ジャワのnative2asciiは、符号化のためのコマンドを提供します)。

あなたは、設定ファイルで中国語を保存したいのであれば、あなたは最初の中国のUnicodeに変身しなければならない、ということは、どのようにそれを変換するには?
私たちは、最初のウィンドウでDOSウィンドウと種類を開くことができnative2ascii、DOSウィンドウを入力し、ユーザの入力を待ちます、そしてあなたは、このようなジョー・スミス入力として、中国を変換したい情報を入力することができ、ウィンドウは、対応するUnicodeのエンコーディングが表示されます。
ここに画像を挿入説明
いくつかの中国語の文字がUnicodeにエンコードされます今、私たちは、達成することができていますが、バッチに必要中国人データの数が多い場合は、私はそれを行う必要がありますどのように変換していますか?
A.propertiesがあなたのデスクトップにファイルを作成し、入力した
名前=ジョー・スミス
市=北京を
私たちの目的は、Unicodeエンコーディングにファイルのすべての内容ということです。
DOSウィンドウを開きますが、あなたのファイルディレクトリのパスに切り替え、つまり、デスクトップディレクトリに切り替えて入力してください

native2ascii a.properties b.properties

トランスコードされるべきファイルの最初のファイルは、第二のファイルは、Unicode符号化によって生成されたファイルです。
ここに画像を挿入説明
戻るデスクトップに、b.propertiesファイル以上のものを見つけ、2つの中国の情報は、Unicodeエンコーディングに変換された、それを開きました。
このガジェットで簡単に中国のUnicodeエンコーディングの問題を回すことができます。
それは少しオフトピックです。母は、私を許してください風雲は心を共有するのが大好きです。

エヘン、今日のカザフスタンに移動。
以下の構成ファイルで、我々は文書をお読みください。
新しいテストクラス、書き込みテストコード

    @Test
    public void demo1(){
        //使用ResourceBundle读取配置文件,不设置国家
        ResourceBundle bundle = ResourceBundle.getBundle("myproperties");
        
        //默认根据系统语言选择配置文件
        System.out.println(bundle.getString("name"));
    }

コードの実行
ここに画像を挿入説明
プロファイル中国の情報を実行するための指示を。

国と言語を表し、このようなクラス、JavaでのLocaleクラスの存在。それを何をしますか?
ケースを通して感じます。
テストコードを書きます

    @Test
    public void demo2(){
        //读取文件时,设置国家
        Locale locale = new Locale("en","US");//指定国家为美国
        ResourceBundle bundle = ResourceBundle.getBundle("myproperties",locale);
        
        System.out.println(bundle.getString("name"));
    }

コードを実行し
ここに画像を挿入説明
、英語での設定ファイルの情報を実行するための命令が。ロケールのクラスアクションは現在、明確にする必要があります。
優先課題の優先順位は、Localeクラスが最高で、あなたがの言語が設定ファイルを実行している国や言語、設定された設定されては、国のシステム設定、そして最終的にデフォルトに続く、があります。

基本的な紹介の知識、その後、我々は理解を深めについてのケースを書くにはログイン。
新しいのlogin.jspファイル

<%@page import="java.util.ResourceBundle"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
    <%
        ResourceBundle bundle = ResourceBundle.getBundle("myproperties");
    %>
    <h1><%=bundle.getString("forminfo") %></h1>
    <form>
        <%=bundle.getString("username") %><input type="text" name="username" /><br /> 
        <%=bundle.getString("password") %><input type="password" name="password" /><br /> 
        <input type="submit" value="<%=bundle.getString("submit") %>" />
    </form>
</body>
</html>

国際化の今、JSPテキスト要素。
それぞれのファイルmyproperties.propertiesを変更する最初の、設定ファイルを変更します

forminfo = default Login Form
username = default Username
password = default Password
submit = default Submit

次に、ファイルmyproperties_en_US.propertiesを変更

forminfo = Login Form
username = Username
password = Password
submit = Submit

最終更新myproperties_zh_CN.propertiesファイル

forminfo = \u767B\u5F55\u8868\u5355
username = \u7528\u6237\u540D
password = \u5BC6\u7801
submit = \u63D0\u4EA4

展開プロジェクトが実行し
ここに画像を挿入説明
、私たちが国を指定していないので、それはシステムのデフォルトの対象とすべき、中国の情報を示しているため。
今、私たちは手動でどの国を指定します。
ファイルを変更login.jspを

ResourceBundle bundle = ResourceBundle.getBundle("myproperties",Locale.US);

のみ変更することができる上記のようにコードのResourceBundleオブジェクトを作成する必要があり、種々の定数を定義し、国に対応するので、我々は直接Localeクラスのフィールドの着信クラスのResourceBundle Localeオブジェクトを構築することができます。
今、プログラムを再実行します。
ここに画像を挿入説明
私はすでに国家の優先度クラスのロケール設定が最高なので、英語での情報を表示する、と述べています。
上記のコードは、煩雑でなく、見苦しいだけでなく、<%=%>の広範な使用を使用し、我々は、データを表示するためにJSTLを使用することができます。
ファイルを変更しlogin.jspを

<%@page import="java.util.Locale"%>
<%@page import="java.util.ResourceBundle"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%--引入国际化标签库--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<html>
<head>
<title>Insert title here</title>
</head>
<body>
    <%
        ResourceBundle bundle = ResourceBundle.getBundle("myproperties",Locale.US);
    %>
    <h1><%=bundle.getString("forminfo") %></h1>
    <form>
        <%=bundle.getString("username") %><input type="text" name="username" /><br /> 
        <%=bundle.getString("password") %><input type="password" name="password" /><br /> 
        <input type="submit" value="<%=bundle.getString("submit") %>" />
    </form>
    
    <hr/>
    
    <fmt:setLocale value="zh_CN"/>
    <fmt:setBundle basename="myproperties" var="bundle" scope="page"/>
    <h1><fmt:message key="forminfo" bundle="${bundle }"/></h1>
    <form>
        <fmt:message key="username" bundle="${bundle }"/><input type="text" name="username" /><br /> 
        <fmt:message key="password" bundle="${bundle }"/><input type="password" name="password" /><br /> 
        <input type="submit" value="<fmt:message key="submit" bundle="${bundle }"/>" />
    </form>
</body>
</html>

プロジェクトを実行し
ここに画像を挿入説明
均等に成功した結果が達成さが、コードは、快適な最初の実装よりも簡潔になります。

紙面の都合で、ソフトウェアの国際化は、ブログ記事の内容は非常に現実的ではない、三つの部分の内容のこの部分は、私はおそらく説明して行きますので、これはシリーズで終了し、それが分割され

  • テキスト要素の国際化
  • 動的データの国際化
  • ダイナミックテキスト国際化

それの三つの部分。あなたは上から下へ順番に読むことができるときは、お読みください。

おすすめ

転載: www.cnblogs.com/blizzawang/p/11411797.html