Faire un programme multi-lingue - Algo - Programmation
Marsh Posté le 07-05-2004 à 14:36:16
c'est succin.
j'ai posté dans "algo" pas dans "la librairie C qui va bien"
le but, c'est que moi je bosse principalement en VB, mais je peux aussi intervenir sur des projets Java ou C, et j'aimerais pouvoir gérer tout ça proprement... Et pour certaines applis, si possible avec une DLL, centraliser les textes (entre la version telnet d'un programme ou sa version cliente graphique, c'est vraiment chiant de dupliquer tout le code, surtout quand il s'agit de libellés)
Or on n'utilise pas les même langages d'un bout à l'autre, donc pas question de bosser avec une lib intégrées sans se poser la question de comment elle marche...
Marsh Posté le 07-05-2004 à 15:10:35
bas je sais pas. j'utilise gettext, il est présent dans tous les langages du monde unix
Marsh Posté le 07-05-2004 à 16:29:40
et le XML ? (j'ai utilisé ça pour une applic en .NET, pas de soucis)
Marsh Posté le 07-05-2004 à 16:33:07
En effet... Mais disons que niveau perfs, le XML me semble pire qu'un gros tableau de bourrin
Ceci-dit, pour la maintenance c'est par contre bien mieu en effet.
Marsh Posté le 07-05-2004 à 19:19:36
Arjuna a écrit : En effet... Mais disons que niveau perfs, le XML me semble pire qu'un gros tableau de bourrin |
oui, c'est pour ça que le fichier XML en question était chargé en mémoire au démarrage du serveur
Marsh Posté le 07-05-2004 à 10:05:11
Il y a une question que je me pose depuis un bout de temps...

Comment faire "proprement" un programme multi-lingue ?
Actuellement, j'ai utilisé deux systèmes (qui reviennent au même) au niveau de sites internet.
Le premier consiste à créer une page d'include contenant un "maxi-tableau" avec autant de lignes que de libéllés dans le site, et autant de colonnes que de langues gérer...
Avec plus de 800 labels et 5 langues, mon include est un peu monstrueux, et même si ça ne se fait pas sentir au niveau perfs, je ne suis pas certain que le serveur aime beaucoup se prendre dans la tête un tableau aussi énorme à chaque chargement de page...
La seconde solution, impossible avec un programme compilé, et non pas de gérer ce "tableau des libellés" dans une page, mais dans une base de données (clé langue/code label). Niveau perfs de base, c'est pas meilleur, mais niveau montée en charge c'est incomparable, niveau maintenance aussi.
Mais bon, mettons un programme en C. Pas de base de données. Totalement inconcevable de charger 25 Mo de textes en mémoire pour n'en afficher que 10 lignes à la fois... Donc je me demande comment faire pour que ce soit le plus performant possible (rapport rapidité/montée en charge/occupation mémoire/maintenance <- très important)
Souvent, on a une DLL "english.dll" et une autre "french.dll" et le programme charge la DLL qui correspond au langage choisi. J'en déduit que ces DLL contienent un tableau avec tous les labels localisés pour une seule langue. Comment se fait l'accès à ce tableau, afin d'éviter d'avoir à charger toute la DLL d'un coup (pour une petit appli, ok, mais pour un truc style ERP ou autre, là y'a 500 écrans à gérer, j'ai du mal à concevoir de charger 25 Mo de mémoire juste pour les libellés concernant 95% d'écran auxquels on n'a peut-être même pas accès !)
Bref... Vous utilisez quel système ? Y'a un comparatif des méthodes quelquepart ?
-- Edit : 5 langues pas 54
Message édité par Arjuna le 07-05-2004 à 16:34:29