воскресенье, 29 марта 2009 г.

GWT, интернационализация

Начал разбираться с GWT. И сразу же наткнулся на то, что "Привет, мир" можно только как "Hello? world". Однако чтение документации позволило вывести родное "Привет, мир".
Здесь напишу некоторые основные моменты
Итак интернационализация в GWT может быть как статической так и динамической. Здесь расскажу о статической.

Статическая.
Для реализации создаем интерфейс, наследуемый от i18.Constants

public interface Constants extends com.google.gwt.i18n.client.Constants
{
public String const1();
public String const2();
}

каждый метод этого интерфейса будет является константой. Сами константы хранятся в фалах с раcшрением .properties и именем интерфейса, для нашего случая это будут Constants.properties и родной :) Constants_ru.properties. Файл Constants_ru.properties должен быть в кодировке UTF-8. Если у Вас Eclipse тогда File-Properties
Примерно такого содержания.
const1=root
const2=Clic me

и
const1=Администратор
const2=Нажми меня

Теперь прописываем в <..>.gwt.xml наши локали.

<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="ru"/>

<extend-property name="locale" values="en"/>



На этом все подготовительные действия закончены.
Для использования дополнительно импортируем:
com.google.gwt.core.client.GWT, и созданный интерфейс.

constants = (Constants) GWT.create(Constants.class);//Создаем экземпляр интерфейса
Button button = new Button(constants.const2()); //создаем кнопочку с надписью "Нажми меня"

Все....
По умолчанию будет использоваться американская локализация, русскую можно получить передав в HTTP запрос значение переменной locale
http://www.example.org/myapp.html?locale=ru

или отредактировав начальный HTML

<html>
<head>
<meta name="gwt:property" content="locale=ru">
</head>
<body>
<script src="demo.app.nocache.js " />
</body>
</html>