GWT динамическая строка i18n с uibinder - PullRequest
1 голос
/ 11 января 2012

Я пытаюсь интернационализировать свое приложение, работающее с GWT UI Binder, используя динамическую строку i18n.Поддерживает ли интерфейс пользователя динамическую строку i18n?Пожалуйста, дайте мне знать, возможно ли это.

Ответы [ 3 ]

1 голос
/ 11 января 2012

Шаблоны UiBinder могут быть размечены для локализации. Вы используете <ui:msg> и <ui:attribute> элементов, чтобы указать, какие части шаблон должен быть переведен, а затем предоставить файлы свойств с локализованные версии сообщений при создании приложения. Подробнее Об этом

Изменено: Посмотрите эту GWT динамическую интернационализацию строк , я думаю, вы можете найти решение оттуда.

0 голосов
/ 28 января 2015

Мы сделали это, используя Словарь .В основном вы используете динамическую страницу хоста (например, jsp) для динамического создания констант на странице хоста.Чтобы использовать их с UiBinder, у вас есть несколько вариантов, но самое простое - создать класс-оболочку вокруг словаря, например

package org.gwt.dictionary.test

public class CurrentTheme {

    Dictionary theme = Dictionary.getDictionary("CurrentTheme");

    public String highlightColor() {
        return theme.get("highlightColor");
    }

    public String shadowColor() {
        return theme.get("shadowColor");
    }

    public String errorColor() {
        return theme.get("errorColor");
    }

    public String errorIconSrc() {
        return theme.get("errorIconSrc");
    }

    public String errorLabel() {
        return theme.get("errorLabel");
    }

    public String someTextContent() {
        return theme.get("someTextContent");
    }
}

. Затем вы можете использовать его в gwt.xml, например,

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <ui:with field="themeConstants" type="org.gwt.dictionary.test.CurrentTheme"/>
    <g:HTMLPanel>
        <g:Label text="{themeConstants.errorLabel}" styleName="{themeConstants.errorColor}"/>
        <div class="aler alert-info"><ui:text from="{themeConstants.someTextContent}"/></div>
    </g:HTMLPanel>
</ui:UiBinder>

Надеюсь, это поможет

0 голосов
/ 11 января 2012

Чтобы ответить на ваш вопрос - да, i18n поддерживается пользовательским интерфейсом Binder .Пожалуйста, обратитесь к документации здесь и здесь .Чтобы поддержать мое заявление, вот прямая цитата:

UiBinder ... предлагает прямую поддержку интернационализации, которая хорошо работает с GWT i18n;

Вы просто делаете некоторые *Файлы .properties с указанным языковым стандартом, включите модуль i18n в gwt-xml, создайте интерфейс, методы которого (возвращающие String) будут доступны как в коде Java, так и в файлах ui-xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...