Comment internationaliser une application web Java?
J'ai appris à partir de Google que l'Internationalisation est le processus par lequel je peux faire mon
application web pour utiliser toutes les langues. Je veux comprendre Unicode pour le processus d'internationalisation, de sorte que j'ai appris sur Unicode à partir de ici et il y.
Je suis en mesure de comprendre sur Unicode que la manière d'un jeu de caractères défini dans codé d'octets et de nouveau octets décodé à charset. Mais je ne sais pas comment faire pour avancer plus loin. Je veux apprendre à comparer des chaînes et j'ai besoin de savoir comment mettre en œuvre l'internationalisation dans mon application web. Toutes Les Suggestions S'Il Vous Plaît? Merci de me guider.
Mon Objectif:
Mon objectif principal est de développer une Application Web pour la Traduction (de l'anglais vers l'arabe & vice-versa). Je veux suivre l'Internationalisation. Je veux exécuter mon Application web pour la traduction dans les trois navigateurs à savoir FF, Chrome, IE. Comment puis-je y parvenir?
Vous devez vous connecter pour publier un commentaire.
Dans le cas d'une base de JSP/Servlet webapplication, l'approche de base serait à l'aide de JSTL
fmt
taglib en combinaison avec des offres de ressources. Des offres de ressources contiennent des paires clé-valeur, où la clé est une constante qui est la même pour toutes les langues et la valeur varie en fonction de la langue. Des offres de ressources sont généralement des fichiers de propriétés qui sont chargés parResourceBundle
API. Cela peut toutefois être personnalisés afin que vous pouvez charger les paires clé-valeur, par exemple, dans une base de données.Voici un exemple comment internationaliser le formulaire de connexion de votre webapplication avec des propriétés de fichier de base de ressources.
Créer les fichiers suivants et les mettre dans un paquet, par exemple
com.example.i18n
(en cas de Maven, les mettre dans le package de la structure à l'intérieur desrc/main/resources
).text.properties
(contient des paires clé-valeur dans la langue par défaut, généralement l'anglais)text_nl.properties
(contient néerlandais (nl
) paires clé-valeur)text_es.properties
(contient de l'espagnol (es
) paires clé-valeur)Le regroupement de ressources de nom de fichier doit respecter le modèle suivant
name_ll_CC.properties
. Le_ll
partie devrait être le minuscule ISO 693-1 le code de langue. Il est facultatif et n'est nécessaire que lorsque le_CC
partie est présent. Le_CC
partie devrait être la majuscule La norme ISO 3166-1 Alpha-2 code de pays. Il est facultatif et est souvent utilisé pour distinguer entre les pays de langue propres dialectes, comme L'Anglais Américain (_en_US
) et L'Anglais Britannique (_en_GB
).Si pas encore fait, installez JSTL. Si vous êtes en cours d'exécution sur un conteneur de Servlet 2.5 ou plus récente (Tomcat 6.0 et ainsi de suite) et votre
web.xml
est déclarée conforme à la spécification Servlet 2.5, puis il suffit de mettre jstl-1.2.jar dans webapp est/WEB-INF/lib
dossier.Créer l'exemple suivant JSP fichier et le mettre dans le dossier de contenu web.
login.jsp
La
<c:set var="language">
gère le langage courant. Si la langue a été fourni en paramètre de la requête (par déroulante langue), puis il sera fixé. Sinon, si la langue était déjà auparavant dans la session, puis s'en tenir à elle à la place. D'autre utilisation que l'utilisateur fournit des paramètres régionaux dans l'entête de la requête.La
<fmt:setLocale>
définit les paramètres régionaux pour le regroupement de ressources. Il est important que cette ligne est avant la<fmt:setBundle>
.La
<fmt:setBundle>
initialise le regroupement de ressources par son nom de base (qui est, le complet nom du paquet jusqu'à ce que le seul nom sans le_ll_CC
prescripteur).La
<fmt:message>
récupère la valeur de message par le bundle clé.La
<html lang="${language}">
informe le searchbots quelle langue de la page en sorte qu'il ne sera pas marqué comme un contenu en double (et donc bon pour le RÉFÉRENCEMENT).Le déroulante langue sera immédiatement remise en JavaScript quand une autre langue est choisie, et la page sera actualisée avec la nouvelle langue choisie.
Toutefois, vous devez garder à l'esprit que les propriétés des fichiers sont par défaut en lecture à l'aide de l'ISO-8859-1 codage de caractères. Vous auriez besoin de leur échapper par unicode échappe. Cela peut être fait en utilisant le JDK fourni par
native2ascii.exe
outil. Voir aussi cet article section pour plus de détails.Théorique alternative serait de fournir un bundle avec une coutume
Control
pour charger les fichiers en UTF-8, mais c'est malheureusement pas pris en charge par la base de JSTLfmt
taglib. Vous devrez tout gérer vous-même avec l'aide d'unFilter
. Il y a (MVC), cadres de qui peut gérer cela de manière plus transparente, comme JSF, voir aussi cet article.param.language
d'être l'un depathInfo
. Cette réponse est, après tout juste un kickoff exemple.<c:url value="/register" />
j'aurais<c:url value"${language}/register" />
basename
doit représenter le nom de base sans extension de fichier. Pas à les structurer en un paquet n'est une mauvaise pratique.com.example.i18n.text
fucntion corps ? J'ai utiliséResourceBundle res = ResourceBundle.getBundle("ResourceBundle", locale);
de la méthode pour lire l'I18N propriétés. S'il vous plaît aider à résoudre de ma fautec:choose
?fmt:parseNumber
sur les param de le faire fonctionner.En plus de ce BalusC dit, vous devrez prendre soin de directivité (puisque l'anglais est écrit de Gauche À Droite et de l'arabe dans l'autre sens). Le plus simple serait d'ajouter
dir
attributhtml
élément de votre page JSP page web et externaliser elle, de sorte que la valeur vient de fichier de propriétés (comme avec d'autres éléments ou attributs):Aussi, il y a quelques problèmes avec style cette application, vous devriez pour le moins éviter de positionnement absolu. Si vous ne pouvez pas éviter que, pour une raison quelconque, vous pouvez soit utiliser les différentes feuilles de style pour chaque (?) de langue ou de faire quelque chose qui est verboten, c'est d'utiliser des tableaux pour la gestion de mise en page. Si vous souhaitez utiliser les éléments div, je vous suggère d'utiliser le positionnement relatif de "symétrique" à gauche et à droite des attributs de style (les deux ayant la même valeur), puisque c'est ce qui rend la commutation de la directivité de travail.
Vous pourriez trouver plus d'informations sur Bi-Directionnelle sites web ici.
<html dir="RTL">
OU<html dir="LTR">
. Par défaut est<html dir="LTR">
basé sur ce tutoriel, je suis en utilisant la suite sur GAE - App Engine de Google:
Un fichier jsp comme suit:
Et en ajoutant les fichiers nommés:
app.properties
(par défaut) etapp_fr.properties
(et ainsi de suite pour chaque langue). Chacun de ces fichiers doivent contenir les chaînes dont vous avez besoin comme suit: value_in_language, par exempleapp_fr.properties
contient:app.properties
contient:C'est tout