2016-11-05 2 views
1

JSTL <fmt:message>タグをプロパティファイルとともに使用して、JSP上のテキストをローカライズします。異なる言語のテキストは、キーに関連付けられたそれぞれのプロパティファイルに保持されます。私は数システムをこのようにローカライズするにはどうすればよいJavaで数値システムをローカライズする方法ヒンディー語やマラーティー語で?

そして、そのキーをJSPで使用されているような、<fmt:message key="somekey"/>

?例えば。 Marathiロケールを使用すると、ラテン数字456は456として印刷されます。

+0

2つの別々の問題があります.1)JSTLでの数値書式設定、2)JavaでのMarathiサポートです。 2番目の問題でもっと面白かったら、質問のタイトルにそれを言いなさい。 – kgeorgiy

答えて

1

マラーティー語

残念ながら、マラーティー語のための標準的な実装はありません。しかし、ICUのRuleBasedNumberFormatを使って独自の翻訳を作成することができます。

また、もあります。これは、マラーティー番号をフォーマットするために使用するので、自分でthe rulesと書く必要はありません。複数の言語を扱い、カスタムタグを作成するために簡単に拡張することができます。

ヒンディー語

ヒンディー語は、JavaのNumberFormatによってサポートされていますが、fmt:numberFormatしたがって、あなたはまだカスタムタグを作成する必要があり、それを直接使用しません。

-1

数字は<fmt:numberFormat>を使用してフォーマットする必要があります。 J2EE tutorialの例を参照してください。

+0

数字を書式化したくありません。異なる言語は数字のために異なる文字を持ちます。e..g in English = 456、Marathi = 456 – ashishjmeshram

+0

そして、期待される結果は何ですか?なぜですか? – kgeorgiy

+0

ロケールが英語の場合は456が表示され、ロケールがMarathiの場合は456が表示されます。アプリケーションのエンドユーザは英語を知らなくてもよく、その場合、英語の数字は認識されません。エンドユーザーは、優先言語を選択するオプションがあります。テキストはプロパティファイルを使用して変換されます。 – ashishjmeshram

0

数字をMarathiの同等の数字に変換したい場合は、 次に、以下のようなクラスを作成します。このクラスはあなたの数字をマラソンだけでなく、パンジャビ、グジャラート、ウンディーに変換するのにも役立ちます。同様に多くを追加することができます。

HashMap<String, String> unicodeConversionList = new HashMap<>(); 

public void prepareList(String lang) 
{ 
    unicodeConversionList.clear(); 
    if("marathi".equalsIgnoreCase(lang)) 
    { 
     unicodeConversionList.put("0", "\u0966"); 
     unicodeConversionList.put("1", "\u0967"); 
     unicodeConversionList.put("2", "\u0968"); 
     unicodeConversionList.put("3", "\u0969"); 
     unicodeConversionList.put("4", "\u096A"); 
     unicodeConversionList.put("5", "\u096B"); 
     unicodeConversionList.put("6", "\u096C"); 
     unicodeConversionList.put("7", "\u096D"); 
     unicodeConversionList.put("8", "\u096E"); 
     unicodeConversionList.put("9", "\u096F"); 
    } 
    else if("hindi".equalsIgnoreCase(lang)) 
    { 
     unicodeConversionList.put("0", "\u0966"); 
     unicodeConversionList.put("1", "\u0967"); 
     unicodeConversionList.put("2", "\u0968"); 
     unicodeConversionList.put("3", "\u0969"); 
     unicodeConversionList.put("4", "\u096A"); 
     unicodeConversionList.put("5", "\u096B"); 
     unicodeConversionList.put("6", "\u096C"); 
     unicodeConversionList.put("7", "\u096D"); 
     unicodeConversionList.put("8", "\u096E"); 
     unicodeConversionList.put("9", "\u096F"); 
    }else if("gujarati".equalsIgnoreCase(lang)) 
    { 
     unicodeConversionList.put("0", "\u0AE6"); 
     unicodeConversionList.put("1", "\u0AE7"); 
     unicodeConversionList.put("2", "\u0AE8"); 
     unicodeConversionList.put("3", "\u0AE9"); 
     unicodeConversionList.put("4", "\u0AEA"); 
     unicodeConversionList.put("5", "\u0AEB"); 
     unicodeConversionList.put("6", "\u0AEC"); 
     unicodeConversionList.put("7", "\u0AED"); 
     unicodeConversionList.put("8", "\u0AEE"); 
     unicodeConversionList.put("9", "\u0AEF"); 
    }else if("punjabi".equalsIgnoreCase(lang)) 
    { 
     unicodeConversionList.put("0", "\u0AE6"); 
     unicodeConversionList.put("1", "\u0AE7"); 
     unicodeConversionList.put("2", "\u0AE8"); 
     unicodeConversionList.put("3", "\u0AE9"); 
     unicodeConversionList.put("4", "\u0AEA"); 
     unicodeConversionList.put("5", "\u0AEB"); 
     unicodeConversionList.put("6", "\u0AEC"); 
     unicodeConversionList.put("7", "\u0AED"); 
     unicodeConversionList.put("8", "\u0AEE"); 
     unicodeConversionList.put("9", "\u0AEF"); 
    }else if("urdu".equalsIgnoreCase(lang)) 
    { 
     unicodeConversionList.put("0", "\u06F0"); 
     unicodeConversionList.put("1", "\u06F1"); 
     unicodeConversionList.put("2", "\u0682"); 
     unicodeConversionList.put("3", "\u0693"); 
     unicodeConversionList.put("4", "\u06A4"); 
     unicodeConversionList.put("5", "\u06B5"); 
     unicodeConversionList.put("6", "\u06C6"); 
     unicodeConversionList.put("7", "\u06D7"); 
     unicodeConversionList.put("8", "\u06E8"); 
     unicodeConversionList.put("9", "\u06F9"); 
    }else{ 
     unicodeConversionList.put("0", "0"); 
     unicodeConversionList.put("1", "1"); 
     unicodeConversionList.put("2", "2"); 
     unicodeConversionList.put("3", "3"); 
     unicodeConversionList.put("4", "4"); 
     unicodeConversionList.put("5", "5"); 
     unicodeConversionList.put("6", "6"); 
     unicodeConversionList.put("7", "7"); 
     unicodeConversionList.put("8", "8"); 
     unicodeConversionList.put("9", "9"); 
    } 
} 

public String convertToMarathi(String lang,String str) 
{ 
    prepareList(lang); 

    StringBuilder response = new StringBuilder(""); 
    if(str!=null && str.trim().length()>0 && unicodeConversionList.size()==10) 
     for (int i = 0; i < str.length(); i++) 
     { 
      String temp = "" + str.charAt(i); 
      if (unicodeConversionList.containsKey(temp)) 
       response.append(unicodeConversionList.get(temp)); 
      else 
       response.append(temp); 
     } 
    else 
     response.append(str); 

    return response.toString(); 
} 

ELでこれらのコードを使用するのは非常に簡単です。

あなたが

//Add This code to your filters 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, 
     ServletException 
{ 
    HttpServletRequest req = (HttpServletRequest) request; 
    if (req.getSession().isNew()) 
    { 
     HttpSession session=req.getSession(); 
     session.setAttribute("converter", new ConverterUtil()); 
    } 
    // pass the request along the filter chain 
    chain.doFilter(request, response); 
} 

そして、あなたはそれから

以下のコードを実行しますすべてのページに手動で書きたいならば、あなたは JSPで行う必要があるすべては

${converter.convertToMarathi("Gujarati","1234 u 567 z 890") } 

あるフィルタを使用している場合

<jsp:useBean id="converter2" class="digimation.bestowBucket.util.ConverterUtil"></jsp:useBean> 
${converter2.convertToMarathi("maRatHi","1234 u 567 z 890") } 
関連する問題