8
votes

Support multiconnage en JSP / servlet

Comment fournir une prise en charge multilingue via JSP / servlet? Comment inclure des données statiques de différentes langues au moment de l'exécution sur la base de la langue sélectionnée?


0 commentaires

3 Réponses :


-1
votes

Il y a plusieurs aspects importants à ce problème. La première partie est la détermination des paramètres régionaux de chaque requête. Vous pouvez utiliser quelque chose comme ceci:

HttpServletRequest req ...;
String browserLocale = req.getHeader("Accept-Language"); // typically something like 'en'


1 commentaires

servletrequest.getlocale () existe pour une raison!



10
votes

dans une application JSP / servlet "de vanille simple", la meilleure solution est le JSTL FMT TagLib . (Il suffit de tomber jstl-1.2.jar code > dans / web-inf / lib code>) Comment l'utiliser est couvert dans Oracle Java EE 5 Tutoriel Partie II Chapitre 7 et dans cette réponse: Comment internationaliser une application Web Java? .

Si vous utilisez un cadre MVC tel que Oracle JSF ou Apache Struts, vous devez consulter sa spécificité. Documentation utilisant des mots-clés "Internationalisation" (I18N) ou "Localisation" (L10N). Dans la plupart des cas, ils fournissent également des étiquettes spécifiques pour cela, tels que code> dans le cas de JSF, qui est à son tour couvert dans Oracle Java EE 5 PARTIE PARTIE II CHAPITRE 15 . P>

Ces balises I18N vérifient déjà la langue par défaut / Locale par ServluRequest # GetLocale () code> (vous n'avez pas besoin de le faire "de faible niveau" en cochant l'en-tête comme suggéré avant --Quchique impliquerait plus de travail pour analyser l'en-tête selon le Spec HTTP ). Vous pouvez laisser l'utilisateur choisir la langue elle-même (liste déroulante?) Et le stocker dans la portée de la session et demander à ces taglibs de l'utiliser. Voici un exemple avec JSTL FMT TagLib: P>

<fmt:setLocale value="${someSessionBean.locale}" />


0 commentaires

-1
votes

Nous pouvons créer des messages.Properties, des messages _ ?? ??. Propriétés et pour placer ce répertoire SCR / Java. (Où ?? em> ?? - EN_US, RU_RUT et d'autres)

Exemple de lignes dans des messages.Properties:

   Locale locale = Locale.getDefault(); 
   String lng = locale.getCountry(); 

   session.setAttribute( "language", lng);

   if (lng.equals( "UA"))
       locale = new Locale( "uk", "UA");
   else if (lng.equals( "RU"))
       locale = new Locale( "ru", "RU");
   else
       locale = Locale.US;

   ResourceBundle boundle = ResourceBundle.getBundle( "messages", locale);

   for (Enumeration e = boundle.getKeys(); e.hasMoreElements(); ) {
       String key = (String) e.nextElement();
       String s = boundle.getString(key);
       session.setAttribute( key, s);
   }


1 commentaires

Ceci est pas la façon dont vous utilisez le de ressources et local classes! Cela montre un manque fondamental de compréhension du sujet.