2010-10-12 6 views
1

Ma question est la suivante:GWT GWT i18n Gin Module

Je suis une application en cours d'exécution avec GWT. Au démarrage de l'application, un GWTClientModule qui étend AbstractGinModule ou un autre GWTClientModule est chargé.

Basé sur ce commutateur, je voudrais définir le local. est-il un moyen de régler la non locale directement .html en faisant comme suit:

<meta name="gwt:property" content="locale=fr"> 

mais directement dans l'un des GWTClientModule sélectionné?

Merci beaucoup pour votre aimable assistance ;-)

+0

Apparemment, il n'y a que deux façons de spécifier les paramètres régionaux: 1/Dans la page d'accueil nous définissons . 2/en mettant "? Locale = fr" dans l'url. Est-ce vrai? Aucun autre moyen n'est possible côté serveur ou en utilisant web.xml ou dans le module gwtclient ou ... – AbstractMan

Répondre

1

Vous ne pouvez pas le faire si vous utilisez static String internationalization, car il utilise deferred binding: le compilateur GWT génère un fichier JavaScript par lieu, et, lorsque votre page est chargée , le script GWT bootstrap recherche la propriété "locale" dans la page (ou dans l'URL), avant de charger la version appropriée du code.

Choisir les paramètres régionaux par programme (dans votre GWTClientModule) est impossible, puisque la version localisée de votre code est déjà chargé une fois que le code exécute ...

Si vous avez vraiment besoin de choisir les paramètres régionaux lors de l'exécution, vous pourriez vouloir regarder dans dynamic String internationalization, mais il est moins performant et vous perdez la vérification de type statique.

+0

Merci pour votre message. Je vais regarder dans l'internationalisation dynamique String à première vue. Ou je peux remplacer le fichier .properties pendant la construction. De toute façon, merci pour votre explication :-) – AbstractMan

+0

Quand vous parlez de remplacer le fichier .properties pendant la construction, je dois demander: quel est votre objectif final? Voulez-vous simplement compiler pour un lieu spécifique? Parce que vous pouvez le faire facilement en ajoutant ce qui suit à votre Module.gwt.xml: Plus d'informations ici: http://stackoverflow.com/questions/1745315/comment-créer-un-développement-debug-et-production-setup/1749507 –

0

Nous avons utilisé une solution de contournement basée sur this pour définir les paramètres régionaux en fonction de la langue des navigateurs clients.

Il suffit d'ajouter le code JavaScript suivant à votre .html:

<script type="text/javascript"> 
var search = location.search; 
if(search.indexOf("locale") == -1){ 
    var lang = navigator.language!= null ? navigator.language : navigator.browserLanguage; 
    lang = lang.replace("-", "_"); 
    var metaTag = document.createElement('meta'); 
    metaTag.name = "gwt:property"; 
    metaTag.content = "locale=" + lang; 
    document.getElementsByTagName('head')[0].appendChild(metaTag); 
} 
</script> 

Il semble si la balise meta correspondant à l'environnement local n'est pas réglé, sinon il recherche la langue du navigateur et ajouter la balise meta appropriée , EG:

<meta name="gwt:property" content="locale=fr"> 
+0

Cela ne marchera pas pour GWT pour les raisons qu'Etienne Neveu explique plus haut. Lors de l'utilisation de l'internationalisation de chaînes statiques, le texte pour les autres locales n'est tout simplement pas disponible du tout. Il est codé en dur dans la compilation HTML/JS générée par GWT pour cette permutation spécifique. – Chepech

+0

Nous l'avons utilisé dans le projet interne où je travaillais, l'avez-vous essayé? – David

+0

Je suis assez sûr que vous n'utilisiez pas l'approche de chaîne statique. – Chepech