i18n Failing

83 views
Skip to first unread message

Andrew Buck

unread,
Jan 31, 2020, 4:36:48 AM1/31/20
to GWT Users
I am trying to add a second locale to my GWT app, but I'm unable to make it work.

Up until now, I've had:
<extend-property name="locale" values="en" />
<set-property name="locale" value="en" />
<set-property-fallback name="locale" value="en"/>

And now if I change it to:
<extend-property name="locale" values="en,es" />
<set-property name="locale" value="en" />
<set-property-fallback name="locale" value="en"/>

And add a tag in the page header:
<meta name='gwt:property' content='locale=es'/>

I still always see the page in English.

If I instead do:
<extend-property name="locale" values="en,es" />
<set-property name="locale" value="es" />
<set-property-fallback name="locale" value="en"/>

Then I always see the page in Spanish.

The <set-property...> tag is not shown in the GWT documentation, but if I remove it, then I get a compile error: 
"Failed to resolve '[package-name].i18n.FixedStrings' via deferred binding"

Thomas Broyer

unread,
Jan 31, 2020, 8:11:28 AM1/31/20
to GWT Users
You'll want to
<set-property name="locale" value="en,es" />

The reason for this set-property is to remove the "default" value from the available values (the locale property is defined with a single "default" initial value, you later extend it to add en and es, so it's now default,en,es, and then you overwrite it with this set-property to just en,es).

Actually, if you support an English locale, you don't really need the remove the "default" value, as it'll be equivalent to "en" (in most cases at least) thus won't produce an additional permutation anyway. To make it work though, you need to put your English translations in the FixedStrings (or other localizable interfaces) annotations and/or in the non-suffixed .properties file (i.e. rename FixedStrings_en.properties to FixedStrings.properties).

foal

unread,
Jan 31, 2020, 8:28:41 AM1/31/20
to GWT Users
Hi,

For EN and DE I have the following

<!-- Locale -->
<inherits name="com.google.gwt.i18n.I18N" />

<!-- German language, independent of country -->
<extend-property name="locale" values="de" />
<extend-property name='locale' values='de_DE' />
<!-- English language, independent of country -->
<extend-property name="locale" values="en" />
<set-property-fallback name='locale' value='en' />
<set-property name='locale' value='de_DE' />

extend-property - add support for a specific locale, set-property, in the end, sets the "default" locale. 

Best,
Stas


On Friday, January 31, 2020 at 10:36:48 AM UTC+1, Andrew Buck wrote:

Andrew Buck

unread,
Jan 31, 2020, 11:36:23 AM1/31/20
to GWT Users
<set-property name="locale" value="en,es" />
That fixed it. Thanks.
Reply all
Reply to author
Forward
0 new messages