Comment puis-je internationaliser une GWT UIBinder page avec des Messages?
Je suis en train d'internationaliser une UIBinder application avec les fichiers de propriétés. Puisque nous avons déjà beaucoup de traductions exposés par le com.google.gwt.i18n.client.Les Messages de l'interface (GWT 1.7.1), nous tenons à réutiliser ces messages.
J'ai essayé ce qui suit:
<!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"
xmlns:res="ui:with:be.credoc.iov.webapp.client.MessageConstants">
<g:HTMLPanel>
<div>
<res:msg key="email">Emaileke</res:msg>:
<g:TextBox ui:field="email" />
</div>
</g:HTMLPanel>
</ui:UiBinder>
La MessageConstants classe ressemble à ceci:
@DefaultLocale("nl")
public interface MessageConstants extends Messages {
String email();
}
Toutefois, cela ne fonctionne pas. Comment puis-je faire cela?
Vous devez vous connecter pour publier un commentaire.
Mise à jour:
Depuis Igor a écrit sa réponse, il y a eu une nouvelle méthode d'utilisation des messages dans l'interface utilisateur de liant.
Cette méthode utilise GWT est texte de ressources UiBinder intégration
Mise à jour:
veuillez vérifier logan répondre ci-dessous pour une solution disponible dans les versions récentes de GWT.
J'ai eu (en fait, ont) le même problème que vous n' - après la migration de GWT 2.0 j'ai eu un fichier de propriétés, j'ai voulu l'utiliser dans mes fichiers UiBinder. Malheureusement, je ne pouvais pas le faire fonctionner comme je le voulais, il semble que le GWT devs veulent les gens à utiliser la syntaxe décrite dans la i18n guide pour UiBinder - où un Message de l'interface est créé lors de la compilation pour chaque UiBinder modèle, etc.
De toute façon, vous pouvez toujours utiliser externes
Messages
interfaces comme ceci:Cependant, cela ne fonctionne que pour des trucs comme
Button
titre, etc, pas contenu de divs :/Vous pouvez remplir ceux de la classe derrière la UiBinder modèle, mais il devrait y avoir une meilleure façon.J'espérais que vous pourriez mettre l'intérieur HTML via
innerHTML
(depuis UiBinder doivent reconnaître que la méthode et permettent de mettre en valeur via XML/UiBinder modèle) mais hélas, la dernière fois que j'ai vérifié, il ne fonctionne pas :/Il y a un problème connu avec UiBinder en combinaison avec l'internationalisation, voir aussi le récent sujet sur le gwt bugtracker: http://code.google.com/p/google-web-toolkit/issues/detail?id=4355.
Dans commentaire 4 une solution est donnée: