このエントリーをはてなブックマークに追加

公式(英語)に沢山方法が紹介されています。

ここでは、Constantsを元に日本語化する方法を説明します。

Eclipseを使いますので、日本語対応のプロパティーEditorをインストールしておいた方がいいです。

作成・修正するファイル

例として以下の様なコードで日本語するとどうなるか説明します。

public String test(){
return "Hello";
}

Constantsを拡張したクラスを作成

名前は何でもいいのですが、プロパティーと揃えます。
メソッドで使用可能な文字列はそのまま使えます。

TextConstants.java

import com.google.gwt.i18n.client.Constants;

public interface TextConstants extends Constants {
public String Hello();
}

デフォルト(英語)の値を持つPropetyファイルを作成

Javaではおなじみのプロパティーファイルです。

TextConstants.properties

Hello=Hello

日本語の値を持つPropertyファイルを作成

日本語なので言語コードのjaをファイル名に付けます。

TextConstants_ja.properties

Hello=こんにちは

別途日本語版のHTMLを作成

日本語を使う場合、HTMLに別途localを明示するメタをhead部分に記述します。

<html>
<head>
 <meta name="gwt:property" content="locale=ja">
..
</head>
<body>..</body>
</html>

モジュールxmlに国際化モジュールの使用を追加

国際化に対応するなら、I18Nを追加して、使用する言語も指定します。

<?xml version="1.0" encoding="UTF-8"?>
<module>
<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="ja"/>
..
</module>

Constantsのインスタンスを作成する部分をJavaコードに追加

GWT.createでインスタンスを作成します。
それに最初のサンプルと混ぜるとこうなります。

public class Dummy implements EntryPoint {
public static TextConstants textConstants=GWT.create(TextConstants.class);

public String test(){
return textConstants.Hello();
}

}

チップス

文字の置き換え方

Eclipseの置き換えで、探す文字列は "(.+?)"
置き換える文字列は textConstants.$1() でそこそこうまく置き換わります。

別途スペースやハイフンなどの修正必要ですが

自動翻訳

プロパティーファイルは、Google 翻訳者ツールキットで一括翻訳可能です。

おまけ

私は、自作のテンプレート作成ツールで置き換えて作っています。

Input部分に置き換えたいキー一覧入れるだけで、上記の6つのファイルを生成してくれます。

まあ実際には、3つは内容固定なので、面倒なConstantsとpropertyを置き換えて生成してくれます。

テンプレート

##MULTI,false
##INPUT,0
##FILENAME,TextConstants.java
##HEADER
import com.google.gwt.i18n.client.Constants;

public interface TextConstants extends Constants {

##FOOTER
}
##ROW
public String ${_+value}();

##FILENAME,TextConstants.properties
##HEADER

##FOOTER

##ROW
${_+value}=${value}

##FILENAME,TextConstants_ja.properties
##HEADER

##FOOTER

##ROW
${_+value}=${value}

##FILENAME,Dummy.java
##HEADER
public class Dummy implements EntryPoint {
public static TextConstants textConstants=GWT.create(TextConstants.class);

public void list(){

##FOOTER
}
}
##ROW
textConstants.${_+value}();

##FILENAME,Dummy.html
##HEADER
<html>
<head>
 <meta name="gwt:property" content="locale=ja">

##FOOTER
</head>
</html>
##ROW

##FILENAME,Dummy.gwt.xml
##HEADER
<?xml version="1.0" encoding="UTF-8"?>
<module>
<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="ja"/>

##FOOTER
</module>
##ROW