Localisation Cours 2 Introduction à l'internationalisation via la programmation eplanas@uco.fr
Langages de programmation
Qu est-ce qu un langage de programmation? C est un langage artificiel qui permet d écrire des programmes. Il comprend : Un vocabulaire, une grammaire Un programme un texte écrit dans un langage artificiel Une fois transformé en langage machine, il réalise une ou plusieurs actions La transformation du texte en langage machine s appelle la compilation Le langage machine est capable de communiquer directement avec les composants électroniques : on parle d exécution du programme
Communication Programme - Machine Code source compilation Exécutable binaire 010001 exécution ordinateur Quelques langages de programmation communs : Java, C, C++, Basic, Fortran, COBOL, Lisp, Pascal, Prolog, PHP, Perl, Ruby,
IDE : Éditeur de logiciels
IDE Pour écrire un programme en code source, n importe quel éditeur de texte peut a priori convenir Certains éditeurs permettent cependant une écriture plus aisée : jedit, Notepad++, Les Integrated Development Environment (IDE) sont des «Studios» de développement facilitant encore plus l écriture de code : Eclipse, Netbeans, Visual C++, Borland, CodeWarrior,..
Langage et IDE choisis Nous allons développer de petits programmes en Java, qui a les avantages suivants: Il est de «haut niveau», donc intuitif De nombreux IDE existent pour le manipuler Il manipule bien les différentes langues Le même code source fonctionne indifféremment sur Windows, Mac ou Unix (Linux) Il possède un mécanisme clair de Locales NetBeans est l IDE officiel pour Java Il est intuitif et puissant Il est gratuit
Installation de l ide netbeans
Téléchargement NetBeans est téléchargeable à cette adresse : http:// www.oracle.com/technetwork/java/javase/down loads/index.html (Bouton «NetBeans») La version que nous utilisons est couplée (bundle) à l environnement de développement de Java Le téléchargement étant assez long, vous le copierez directement depuis le disque G : 2013-2014/Master TPS M2/Localisation/NetBeans jdk-7u40-nb-7_3_1-windows-i586.exe
Installation Double cliquer sur : jdk-7u40-nb-7_3_1-windows-i586.exe Choisir d installer Java (JDK) et Netbeans dans D:\Applications\ Laisser l installeur mettre une icône sur le bureau
Lancement Cliquer sur l icône NetBeans IDE sur le bureau Cela donne l interface suivante
Création d un projet - 1 Créons d abord un projet pour travailler : Fichier / New Projet Laisser Java et Java Application sélectionnés, faire «Next»
Création d un projet - 2 Appelez le projet : 20131001_Java_Locales_01 Enregistrez-le dans un sous-répertoire de votre répertoire sous D: D:\Documents\PLANAS_Emmanuel\20131001_Java Cliquez sur «finish» pour obtenir ceci :
Défrichons ce projet Java (NetBeans) c est votre Composition du projet : des fichiers source et des librairies Voilà, premier fichier source Les sources sont regroupés en un «package» Les méthodes de Main sont listées ici La classe Main est celle qui est exécutée au lancement de la classe Pour le moment, le contenu de Main est vide
Tutoriel Java en Localisation Le tutoriel se trouve à cette adresse : http://docs.oracle.com/javase/tutorial/i18n/intro/index.html Nous allons suivre la leçon en cliquant systématiquement sur Next
Début du tutoriel Java Le début du tutoriel Java rappelle des généralités vues au Cours 1 de Localisation Le parcourir pour fixer ces notions : Lire la page suivante: Lesson : Introduction Cliquer sur Next et lire sans cliquer sur les liens : A Quick Example Se positionner sur la page suivante et la lire : Before Internationalization
Premier programme La page Before Internationalization présente un programme simple non internationalisé. Il est non internalisé car les messages sont codés directement Remplacez dans votre code NetBeans : // TODO code application logic here Par la copie depuis le tutoriel de : System.out.println("Hello."); System.out.println("How are you?"); System.out.println("Goodbye."); Faites attention à bien repositionner les tabulations et retours à la ligne pour que cela donne ce qui suit
Programme Java non localisé Les caractères /* et */ délimitent des commentaires, neutres pour le programme NetBeans colore le code pour une meilleure visibilité Ces instructions demandent l affichage du texte entre guillemets Changez «UCO» par votre nom Le texte à afficher est directement écrit dans le code
Exécution du code NetBeans permet de compiler et exécuter le code avec la flèche verte : essayez! Une fenêtre de «Sortie» (Output) s ouvre et le résultat s affiche
Première localisation «brutale» Il fut un temps (sur lequel nous jetterons un voile pudique) où les localisateurs devaient traduire directement dans le code. Ainsi, ils devaient deviner que dans ce code : System.out.println("Hello."); Le texte à traduire était entre guillemets et qu il ne fallait surtout pas toucher au reste
Expérience 1 : touchons au code.. Effacez le dernier point virgule : System.out.println("Hello."); System.out.println("Hello.") et lancez le programme avec la flèche verte Erreur signalée par le soulignement rouge Erreur à l exécution du programme Cette fois, l erreur n est pas assez forte pour empêcher l exécution forcée : Run Anyway fonctionne
Corrigez le code Localisons Positionnez le bon pilote de clavier pour la langue vers laquelle vous voulez traduire Traduisez les trois messages directement dans le code, comme dans le passé : System.out.println(" こんにちは "); System.out.println(" お 元 気 ですか "); System.out.println( さようなら "); Exécutez le programme
Programme localisé à la hache
Analyse Le programme précédent a fonctionné mais : Le traducteur doit naviguer dans le code, ce qui est dangereux Il y aura dans ce cas, une version du code par langue! Donc à chaque modification de code (non relative à une langue), les informaticiens devront éditer autant de versions qu il y a de langues (80 chez Microsoft?!!)
Nouvelle classe - 1 Créons une nouvelle classe dans le même projet que nous appelons «I18NSample» : Bouton droit sur «pkg20131001_java_locales_01» New / Java Class
Nouvelle classe - 2 Renseignez simplement Class Name : «I18NSample» et faites «Finish»
Nouvelle classe - 3 Onglets pour passer de l édition d un classe à l autre Le projet comporte now deux classes Code vide de la classe I18NSample Reste ici les traces de l exécution précédente
Création de la méthode Affiche() - 1 Entre «public class I28NSample {» Et «}» Ajouter le code suivant
Création de la méthode Affiche() - 2 Cliquez «Next» dans le cours Oracle pour aller sur la page After Internationalization Copiez le code du Tutoriel entre «static public void main(strings[] args)» Et l accolade fermante correspondante } Dans: public void Affiche(String[] args){ }
Création de la méthode Affiche() - 3 Remarquez le code en rouge signalant des erreurs
Réparer les imports Placez la souris sur «Locale» qui est souligné et faites un bouton droit pour demander : «Fix Imports» Les soulignements disparaissent Deux imports apparaissent en début de programme Faire un CTRL+S
Main Nouveau code Double cliquez sur Main.java pour l'afficher Commentez le code précédent en sélectionnant tout sauf le package et en faisant CTRL+SHIFT+C
Appel de Affiche() dans Main Créez maintenant ce nouveau code :
Exécutez le code : erreur Les erreurs nous indiquent qu'il manque les fichiers ressources
Création de fichiers.properties - 1 Bouton DR sur «Source packages» New / Other
Création de fichiers.properties - 2
Création de fichiers.properties - 3 Donner au fichier le nom : MessagesBundle_fr_FR Attention : ne pas inclure l extension dans le nom : elle est ajoutée automatiquement Puis validez avec «Finish»
Création de fichiers.properties - 4 Un nouveau fichier apparaît dans le projet Il s agit d un simple fichier texte d extension.properties Ce fichier ressources contient les traductions vers le français Ajoutez-les et faire CTRL + S
.properties pour les autres langues Creez les mêmes fichiers.properties pour l américain (en_us) greetings = Hello. farewell = Goodbye. inquiry = How are you? Et pour une autre langue de votre choix (jp_jp) greetings = こんにちは farewell = お 元 気 ですか inquiry = さようなら NB : pour ces fichiers suivants, placer le bouton droit sur <default package>
Projet contenant les trois fichiers.properties
Exécution Double-cliquez sur Main.java pour le sélectionner et Lancez le programme avec la flèche verte. Les messages en français s affichent
Autres appels de langues Copiez les deux lignes suivantes args[0]="fr"; args[1]="fr"; Commentez (Sélection, CTRL+SHIFT+C) les deux premières lignes // args[0]="fr"; // args[1]="fr"; args[0]="fr"; args[1]="fr"; Changez la locale (langue + pays) des deux dernières // args[0]="fr"; // args[1]="fr"; args[0]="en"; args[1]="us"; Lancez le programme pour voir apparaît les messages en en_us
Explications - 1 Le programme Main appelle le programme I18NSample.Affiche() Il suffit de changer le code de langue et de pays dans Main() pour obtenir un affichage dans une autre Locale Le code de I10NSample.Affiche() est maintenant indépendant de la langue On a séparé le code des textes affichés qui se trouve maintenant dans les ressources Ces ressources sont de simples fichiers textes éditables facilement par les traducteur Les traducteurs localisent ces ressources et n ont plus à naviguer dans le code Il y a une ressource par langue, ce qui permet de n'envoyer au traducteur que la langue qui le concerne Pour plus d'explications, lire le tutoriel Java : Internationalizing the Sample Program