Comment internationaliser une application Web Java?

J’ai appris de Google que l’internationalisation est le processus par lequel je peux faire en sorte que mon application Web utilise toutes les langues. Je veux comprendre Unicode pour le processus d’internationalisation, alors j’ai appris à propos d’Unicode ici et là .

Je suis capable de comprendre à propos d’Unicode comment un jeu de caractères défini dans codé en octets et encore octets décodé en jeu de caractères. Mais je ne sais pas comment aller plus loin. Je veux apprendre à comparer des chaînes de caractères et à mettre en œuvre l’internationalisation dans mon application Web. Any Suggestions Please? Guidez-moi s’il-vous-plaît.

Mon objective:

Mon objective principal est de développer une application Web pour la traduction (anglais vers arabe et vice versa). Je veux suivre l’internationalisation. Je souhaite utiliser mon application Web pour traduction dans les trois navigateurs, à savoir FF, Chrome, IE. Comment puis-je y arriver?

    Dans le cas d’une application Web JSP / Servlet de base, l’approche de base consisterait à utiliser JSTL fmt taglib en combinaison avec des regroupements de ressources . Les regroupements de ressources contiennent des paires clé-valeur dont la clé est une constante identique pour toutes les langues et dont la valeur diffère selon la langue. Les regroupements de ressources sont généralement des fichiers de propriétés chargés par l’API ResourceBundle . Cela peut cependant être personnalisé afin que vous puissiez charger les paires clé-valeur à partir d’une firebase database par exemple.

    Voici un exemple d’internationalisation du formulaire de connexion de votre application Web avec des regroupements de ressources basés sur des fichiers de propriétés.


    1. Créez les fichiers suivants et placez-les dans un paquet, par exemple com.example.i18n (dans le cas de Maven, placez-les dans la structure du paquet dans src/main/resources ).

      text.properties (contient des paires clé-valeur dans la langue par défaut, généralement l’anglais)

       login.label.username = Nom d'utilisateur
       login.label.password = Mot de passe
       login.button.submit = Connectez-vous
      

      text_nl.properties (contient des paires clé-valeur en néerlandais ( nl ))

       login.label.username = Gebruikersnaam
       login.label.password = Wachtwoord
       login.button.submit = Inloggen
      

      text_es.properties (contient des paires clé-valeur en espagnol)

       login.label.username = Nombre de usuario
       login.label.password = Contraseña
       login.button.submit = Acceder
      

      Le nom de fichier du regroupement de ressources doit respecter le modèle suivant name_ll_CC.properties . La partie _ll devrait être le code de langue ISO 693-1 minuscule. Il est facultatif et requirejs uniquement lorsque la partie _CC est présente. La partie _CC doit être le code de pays majuscule ISO 3166-1 Alpha-2 . Il est facultatif et souvent utilisé uniquement pour distinguer les dialectes linguistiques spécifiques à un pays, comme l’anglais américain ( _en_US ) et l’anglais britannique ( _en_GB ).


    2. Si ce n’est pas encore fait, installez JSTL. Si vous utilisez un conteneur Servlet 2.5 ou plus récent (Tomcat 6.0, etc.) et que votre web.xml est déclaré conforme à la spécification Servlet 2.5, placez simplement jstl-1.2.jar dans le dossier /WEB-INF/lib webapp.


    3. Créez l’exemple de fichier JSP suivant et placez-le dans le dossier de contenu Web.

      login.jsp

       <%@ page pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>       JSP/JSTL i18n demo   


      Le gère le langage actuel. Si la langue a été fournie comme paramètre de requête (par liste déroulante de langue), elle sera alors définie. Sinon, si la langue a déjà été définie précédemment dans la session, respectez-la. Sinon, utilisez les parameters régionaux fournis par l’utilisateur dans l’en-tête de la demande.

      Le définit les parameters régionaux pour le regroupement de ressources. Il est important que cette ligne soit avant le .

      Le initialise le regroupement de ressources par son nom de base (c’est-à-dire, le nom complet du package qualifié avec le seul nom sans le spécificateur _ll_CC ).

      Le récupère la valeur du message par la clé de regroupement spécifiée.

      Le informe les robots de recherche dans quelle langue se trouve la page afin qu’elle ne soit pas marquée comme du contenu en double (donc, bonne pour le référencement).

      La liste déroulante des langues sera immédiatement envoyée par JavaScript lorsqu’une autre langue est choisie et que la page sera actualisée avec la nouvelle langue choisie.


    Vous devez cependant garder à l’esprit que les fichiers de propriétés sont lus par défaut à l’aide du codage de caractères ISO-8859-1. Vous devriez leur échapper par des échappements Unicode. Cela peut être fait en utilisant l’outil native2ascii.exe fourni par JDK. Voir aussi cette section d’ article pour plus de détails.

    Une alternative théorique serait de fournir un bundle avec un Control personnalisé pour charger ces fichiers en UTF-8, mais ce n’est malheureusement pas supporté par le taglib fmt base JSTL. Vous devrez tout gérer vous-même avec l’aide d’un Filter . Il existe des frameworks (MVC) qui peuvent gérer cela de manière plus transparente, comme JSF, voir aussi cet article .

    En plus de ce que BalusC a dit, vous devez prendre en compte la directionnalité (puisque l’anglais est écrit de gauche à droite et l’arabe l’inverse). Le plus simple serait d’append un atsortingbut dir à html élément html de votre page Web JSP et de l’externaliser afin que la valeur provienne du fichier de propriétés (comme avec d’autres éléments ou atsortingbuts):

      ...  

    En outre, il y a peu de problèmes avec le style de cette application – vous devriez dire le moins éviter le positionnement absolu. Si vous ne pouvez pas éviter cela pour une raison quelconque, vous pouvez soit utiliser différentes feuilles de style par langue (chaque?) Ou faire quelque chose qui est verboten , c’est-à-dire utiliser des tables pour gérer la présentation. Si vous voulez utiliser des éléments div, je vous suggère d’utiliser le positionnement relatif avec les atsortingbuts de style gauche et droit “symésortingques” (tous deux ayant la même valeur), car c’est ce qui fait le changement de direction.

    Vous pouvez trouver plus d’informations sur les sites bidirectionnels ici .

    sur la base de ce tutoriel , j’utilise les éléments suivants sur GAE – Google App Engine:

    Un fichier jsp comme suit:

     <%@ page import="java.io.* %> <% String lang = "fr"; //Assign the correct language either by page or user-selected or browser language etc. ResourceBundle RB = ResourceBundle.getBundle("app", new Locale(lang)); %>  <%@ page contentType="text/html;charset=UTF-8" language="java"%>    

    <%= RB.getString("greeting") %>

    Et append les fichiers nommés: app.properties (par défaut) et app_fr.properties (et ainsi de suite pour chaque langue). Chacun de ces fichiers doit contenir les chaînes dont vous avez besoin comme suit: key: value_in_language, par exemple app_fr.properties contient:

     greeting=Bonjour! 

    app.properties contient:

     greeting=Hello! 

    C’est tout