Internationalisation: RISC OS en Français


 Risc Os a été conçu avec la possibilité d'être internationalisé : voir PRM3-777 et PRM3-427
Le module International permet à l'utilisateur d'adapter la machine à une utilisation dans différents pays en définissant:

Ce module, en association avec le noyau du système d’exploitation RISC OS, contrôle la sélection de ces mappages, Chaque pays est représenté par un nom et un numéro (pour la France, repectivement 6 et "France"). Le clavier partage cette liste et est normalement sur le même réglage. Un pays ne peut être associé qu'à un seul alphabet, mais de nombreux pays peuvent utiliser un alphabet. Par exemple, l'alphabet Latin1 contient un ensemble de caractères suffisamment général pour être utilisé par la plupart des pays d'Europe occidentale.


Installation de Territory:
Un classeur !Territory doit être créé dans la racine du disque de démarrage, il doit contenir:

Celui que j'utilise. (ARMX6)

 Ce classeur sera "vu" au démarrage. Pour qu'il soit pris en compte il faut modifier la configuration:
*CONFIGURE TERRITORY <number>, 6 pour la France connu par le module TerritoryManager.
Il est nécessaire de rebooter après pour que configuer soit pris en compte. Territory_FR

Si on le souhaite, il y a une application à mettre dans Configure pour pouvoir changer de Territory, mais cela nécessite quand même un redémarrage.


Tests:

1) J'utilise !Organiser qui est francisé et pour afficher les jours de semaine en français, l'application se base sur Territory. Une fois l'installation précédente faite l'affichage des dates est correct sinon, elle sont en anglais.

2) En voulant utiliser !SciCalc, je ne pouvais plus utiliser de nombres décimaux car la virgule est prise en compte par !SciCalc en fonction de Territory et elle a remplacé le point. Mais il y a un problème avec l'interpréteur Basic, bien que gérant parfaitement la virgule au lieu du point dans le reste du programme, la fonction EVAL n'en tient pas compte => mauvais calcul.
J'ai donc modifié le programme en Basic pour que cela fonctionne et j'en ai profité pour faire fonctionner la touche point du clavier numérique comme virgule lors de l'utilisation de !SciCalc.


Traduction des Messages


 Les informations pour la traduction des textes ou internationalisation de RISC OS sont en principe dans les fichiers Messages et les fichiers Res ou Templates.

Intérêt: L'aide interactive, les messages d'erreurs, les menus etc....


Fichiers Messages Applications


 Classeur d'Application
Classeur d'une Application.

En général les fichiers Messages dans les applications sont en clairs et rangés par pays. (voir PRM 3-66) .
 Dans le cas ci dessus chaque pays possède son fichier Messages qu'il "suffit" de traduire avec l'aide de google translate. c'est du boulot  


Test avec !SciCalc

J'ai essayé avec SciCalc (dans le classeur Apps). J'avais déjà modifié le RunImage pour que l'on puisse utiliser la virgule au lieu du point, ce qui est bien prévu par RiscOs et ajouté les classeurs Resources.UK et Resources.France dans celui de l'application.
Ce n'est pas prévu dans le RunImage.
 Donc j'ai ajouté un fichier SetPath (emprunté à !AppsClock ) , lancé par !Run qui permet de déclarer une variable d'environnement utilisée par le fichier RunImage.
Dans celui-ci la ligne 7 a été modifiée pour charger le bon fichier Messages en fonction du territory.
Il faudrait aussi traduire le fichier Templates, pour que la traduction soit complète...

Mais il fallait donc avoir un fichier Messages en Français....
En partant du fichier Messages en Anglais, il a fallu le mettre d'abord en Anglais lisible. Ce fichier ne comporte pas de Token en [1B][xx] mais par contre il utilise les Token du fichier Resources$:Resources.Help.Messages.
Il faut donc les transformer à l'aide d'un petit programme: HelpDeToken.
Puis ensuite vient la traduction en Français de chaque Token du fichier Messages. Cela marche très bien avec google translate (conseil de David Feugey). On peut l'utiliser avec !Netsurf en ajoutant /m après google.com (info Rick Murray) : Lien  
Conseil: Bien relire et attention google translate modifie les pseudos variables: '%0' devient '% 0'
Il ajoute un espace après les deux points.
 On peut traduire plusieurs Token d'un coup, il suffit de les remettre en place!
Note: les éditeurs comme StrongEd et Zap ont des modes Messages.

Résultats:

Avec l'aide interactive tous les messages sont en français, ainsi que les messages d'erreurs, (sauf la division par zéro???) et la virgule fonctionne....

 SciCalc Téléchargement des modifications. 


Fichiers Messages Resources:$

C'est le point central des applications Acorn (!Alarm,...) et applications System( CDFS,....)
On retrouve dans le classeur Resources:$.Resources des classeurs aux noms de ces diverses applications.
Il y en a prés de 200 !


Les ressources nécessaires en Anglais sont disponibles sur ROOL dans RPi 5.24 resources par exemple ou Omap4 5.24 pour l'ARMX6
On les retrouve, toujours sur ROOL , dans source code à télécharger suivant la machine.

J'ai préféré utiliser les resources présentent sur ma machine dans Resources:$.Resources.

Test avec l'application !Alarm

Contrairement à !SciCalc , les ressources sont en ROM, donc on ne risque rien, il suffut de redémarrer pour retrouver l'original. Par contre c'est un peu plus compliquer de tester les traductions.

Pour commencer j'ai créé un classeur que j'ai appelé MessageDeTok pour pouvoir travailler et le classeur MessageDeTok.~Bin, contenant les utilitaires de décodage. 
Puis dans on ajoute dans MessageDeTok le classeur Alarm.
On récupère Resources$:Resources.Alarm.Messages => Alarm

Dans le classeur Alarm, il y a 3 scripts,.
 Mais il faut d'abord ouvrir ~Bin, pour lancer le module RSFiles (Steve Drain) , il sert à remplacer les fichiers dans Resources:$.Resources.

  1. !Install , remplace Resources$:Resources.Alarm.Messages par le contenu de MessagesFR
  2. !Un_Install, permet de remettre le fichier initial sans redémarrer. (On fait des erreurs en traduisant!)
  3. !Detoken, prendra me fichier message original le recopie en MessagesUK et fais 3 traitements.

Traduction :

Le fichier MessageUk comporte des Token en [1B][xx] et des Token du fichier Resources$:Resources.Help.Messages => plusieurs Traitement
On lance d'abord !Detoken et on obtient un fichier MessagesFR bien lisible, même procédé que pour !SciCalc

Test de MessageFR

On peut le tester quand on veut avec !Install, il est nécessaire de revenir à l'original avec !Un_Install pour faire des comparaisons, notamment quand les phrases traduites sont trop longues, les champs de texte Toolbox n'aiment pas si ils n'ont pas été prévu assez grands!

 Pour compléter le test, les resources ToolBox et les fichiers DeTok d' !Alarm: téléchargement
Le fichier TemplatesFR plus un petit script à mettre dans le classeur MessagesDeTok.Alarm et à exécuter pour l'installation des nouveaux Templates. Ca fonctionne aussi...


 Utilitaires:

Il faut avoir Perl-5_001 fournit avec le DDE pour exécuter Mess01. Si vous ne l'avez pas, avec un éditeur !Zap / !StrongEd, il faut supprimer tous les [1B][00], qui ne servent à rien. et gènent au décodage. Il faudra aussi adapter le script !DeToken pour supprimer l'appel à Mess01.
RunImageT décode les Token [1B][xx], et RunImageH décode les Token Help.
Pour décoder les Token Help RunImageH a besoin du fichier Resources$:Resources.Help.Messages.
Dans le téléchargement c'est celui de la ROM de l'ARMX6, on peut prendre celui de sa propre machine, il peut y avoir des différences.....

  Le fichier ~Bin: téléchargement