Проверьте GWT Internationalize.
Если вы хотите интернационализировать сообщения с помощью GWT , проверьте Интернационализация статических строк и Динамическая интернационализация строк.
Я использовал GWT ConstantsWithLookup для постоянных данных (таких как текст кнопок, Текст этикетки).
И я использую сообщения GWT для моих данных сообщений (таких как предупреждения, предупреждения, подтверждения, диалоговые окна подсказок).
Не забудьте добавить конфигурацию в файл gwt.xml, как показано ниже...
<extend-property name="locale" values="en"/>
<extend-property name="locale" values="ja"/>
<!-- set the fallback for locale default Japan -->
<set-property-fallback name="locale" value="ja"/>
........
Я использовал Local en для английского и ja для японского. Я создал ListBox, чтобы пользователь мог выбирать локаль по своему усмотрению, и использовал Cookie для сохранения в качестве предпочтения пользователя. Ниже приведены мои примеры кодов для сохранения локали в файле cookie для интернационализации при следующем открытии...
public static void initializeLocaleBox(final ListBox localeBox) {
String currentLocale = LocaleInfo.getCurrentLocale().getLocaleName();
if (currentLocale.equals("default")) {
currentLocale = "ja";
}
String[] localeNames = LocaleInfo.getAvailableLocaleNames();
for (String localeName : localeNames) {
if (!localeName.equals("default")) {
String nativeName = LocaleInfo.getLocaleNativeDisplayName(localeName);
localeBox.addItem(nativeName, localeName);
if (localeName.equals(currentLocale)) {
localeBox.setSelectedIndex(localeBox.getItemCount() - 1);
}
}
}
localeBox.addChangeHandler(new ChangeHandler() {
public void onChange(final ChangeEvent event) {
String localeName = localeBox.getValue(localeBox.getSelectedIndex());
Date now = new Date();
long sevenDays = now.getTime();
// seven days
sevenDays = sevenDays + (1000 * 60 * 60 * 24 * 7);
now.setTime(sevenDays);
Cookies.setCookie("locale", localeName, now);
UrlBuilder builder = Location.createUrlBuilder().setParameter("locale", localeName);
Window.Location.replace(builder.buildString());
}
});
}
public static boolean isLocaleJapan() {
String currentLocale = LocaleInfo.getCurrentLocale().getLocaleName();
return currentLocale != null && currentLocale.equals("ja") ? true : false;
}
public static boolean isLocaleEnglish() {
String currentLocale = LocaleInfo.getCurrentLocale().getLocaleName();
return currentLocale != null && currentLocale.equals("en") ? true : false;
}
Для изменения URL на локализацию я преобразовал GWT следующим образом.
public static final String getBaseUrl(final int codesvrPort) {
String locale = Cookies.getCookie("locale");
if (locale == null || locale.equals("")) {
locale = "en";
}
String baseUrl = GWT.getHostPageBaseURL() + GWT.getModuleName() + ".html";
if (GWT.getHostPageBaseURL().contains("localhost")
|| GWT.getHostPageBaseURL().contains("127.0.0.1")) {
return baseUrl + "?locale=" + locale + "&gwt.codesvr=127.0.0.1:" + codesvrPort;
}
return "";
}
Вот полезная ссылка для вас. Прошу прощения за слишком много ссылок. Есть для вас полезное :)
Изменить (Добавить суффикс к файлу свойств)
Цитата из этой ссылки.
Примечание. Добавление суффикса к файлу свойств
Если вы никогда раньше не сталкивались с интернационализацией, вам может быть интересно, почему к немецкому файлу свойств добавляется суффикс _de. . Суффикс _de является стандартным языковым тегом для немецкого языка (Deutsch). Теги языков — это аббревиатуры, указывающие на язык документа или приложения. Помимо указания языка, они также могут содержать вложенный тег, указывающий регион локали. Например, языковой тег для франкоязычной Канады — fr_CA.
В GWT файлы свойств указывают локаль с суффиксом кода языка (точно так же, как пакеты ресурсов Java). Исключением является файл свойств для локали по умолчанию. Если языковой стандарт явно не задан во время выполнения, используется файл свойств без суффикса кода языка. Для StockWatcher вы указали перевод по умолчанию с аннотациями вместо использования файла свойств по умолчанию.
person
Cataclysm
schedule
20.02.2014