Choisir son langage sous Mandriva

J’ai décidé de faire un article sur la manière dont Mandriva traite la problèmatique des langues des logiciels car certains points ne sont pas si évidents pour un débutant (et même certains confirmés). Cet article peut très bien d’appliquer aussi à d’autres distributions, mais pour avoir essayé OpenSuse, je sais que le problème est parfois abordé différemment.

Tout d’abord commençons par un problème (que justement, il me semble qu’OpenSuse ne connaît pas) : il n’est pas possible d’ajouter une langue à son système après l’installation. Pourquoi ? L’explication n’est pas si simple, mais on va essayer de la démystifier.

Dès qu’un logiciel souhaite afficher un mot ou une phrase, il fait appel à une fonction qui va tenter de traduire la phrase ou le mot : on appelle cela internationaliser le logiciel (définition sur wikipedia). Sous linux, le système le plus utilisé (si ce n’est l’unique) est gettext qui fournit justement cette fonction et tout un tas d’outils pour aider à traduire un logiciel. Internationaliser n’est qu’une affaire de code , mais pour qu’un logiciel soit traduit, il faut aussi le localiser ou le régionaliser (définition sur wikipedia), ce qui signifie traduire chacune des phrases utilisée et stocker tout cela dans un fichier « .mo » (qui est généré par gettext).

Lorsqu’un logiciel est traduit en plusieurs langues, on se retrouve avec un fichier « .mo » par langue. Tous ces fichiers sont inclus dans le paquetage RPM du logiciel. La taille de tout cela est parfois importante et l’utilisateur n’a généralement que faire des langues qu’il n’utilisera pas. C’est pourquoi lorsque l’on installe un fichier RPM, le logiciel rpm (et donc urpmi et drakrpm bénéficient de cette fonctionnalité aussi) détermine quelles langues doivent être installées (et quels fichiers .mo se retrouveront sur le système). Sous Mandriva, rpm détermine cela grâce au fichier /etc/rpm/macros. Ce fichier est créé à l’installation : il contient les langues que vous avez choisi avec l’installateur Mandriva. Il n’existe aucun outil graphique, à ma connaissance, qui modifie ce fichier et si vous voulez le modifier après coup, il vous faudra le faire à la main. C’est pourquoi le choix des langues à l’installation est capital.

Justement, j’ai dit plus-haut qu’il n’était pas possible de rajouter une langue après installation de Mandriva. Aurais-je menti si finalement on peut le faire à la main ? Et bien en fait, je n’ai pas menti car ce n’est pas si simple. Si vous avez bien suivi les paragraphes précédents, c’est rpm qui détermine les langues dont vous avez besoin et rpm n’est utilisé qu’à l’installation d’un paquetage. Donc si vous modifiez le fichier macros, vos modifications ne seront prises en compte que lors de l’installation de nouveaux paquetages. Si vous voulez changer la langue d’un logiciel déjà installé, il vous faudra modifier le fichier macros, désinstaller le logiciel, puis le réinstaller. Et si vous voulez avoir tous les logiciels isntallés dans une langue que vous n’avez pas choisi à l’installation de la distribution, il vous faudra désinstaller et réinstaller chaque paquetage, ce qui revient à tout réinstaller, CQFD.

J’ai néanmoins parlé « d’ajouter » une langue parceque le système peut gérer plusieurs langues. Et c’est là une caractéristique intéressante des systèmes linux. Chaque utilisateur est libre d’utiliser la langue qu’il souhaite pourvu qu’elle soit installée sur le système. D’où un immense avantage lorsque vous avez plusieurs utilisateurs sur un même système, mais dans des régions du monde très différentes et qui aimeraient avoir leur environnement dans la langue de leur choix.

Passons un peu à la pratique : sur mon système, le fichier /etc/rpm/macros contient %_install_langs en_US:en:en_GB:en:fr_FR:fr. Je peux donc avoir mes applications en français et en anglais. Pour le choix de ma langue, il suffit de lancer localedrake et j’aurais accès à toutes les langues de mon système parmi lesquelles je pourrais faire mon choix mais le problème est que cela nécessite de sortir de ma session. Plus simplement, il suffit de changer une variable d’environnement pour avoir l’application dans la langue de mon choix : c’est la variable « LANGUAGE ».

Ainsi la ligne de commande suivante lance gcalctool en français :
LANGUAGE=fr gcalctool
La ligne suivante lance le calculateur en anglais :
LANGUAGE=en gcalctool
Et il existe une variable spéciale qui va lancer gcalctool sans traduire du tout le logiciel (ce qui dans le cas présent revient à l’avoir en anglais, mais certains logiciels présentent des différences) :
LANGUAGE=C gcaltool

Lorsque vous changez la variable LANGUAGE, la fonction chargée de traduire le logiciel va rechercher le fichier .mo correspondant dans le répertoire /usr/share/locale/LANGUAGE/LC_MESSAGES/ : s’il existe, il sera utilisé et toutes les phrases traduites dans ce fichier seront affichées à la place de la phrase non-traduite (généralement en anglais). Si elle n’existe pas, alors la traduction échoue et vous retrouverez une phrase non-traduite. C’est pourquoi dans certains logiciels, vous aurez un mélange d’anglais et de français : certaines phrases n’ont pas été traduites. Si vous voulez aller plus loin, la page d’info sur gettext regorge d’informations à ce sujet (dans konqueror, il suffit de taper « info:/gettext ») ou alors sur le site de gnu.

Il me reste une dernière chose à signaler qui peut coûter cher, surtout en cette période de beta test où certains seront tentés par la mise à jour vers un béta, une RC ou vers la 2008. Quand le paquetage « rpm » est mis à jour, le fichier /etc/rpm/macros étant vu comme un fichier de configuration, drakrpm ne l’écrase pas mais affiche une boîte de dialogue qui peut en dérouter plus. En effet, il pose la question de savoir s’il faut utiliser le .rpmnew ou supprimer le .rpmnew. Lorsqu’on ne sait pas exactement ce que cela signifie, on est tenté de ne rien supprimer et on se dit « je vais choisir le premier », ce qui consistue une erreur, puisque votre fichier macros sera remplacé par un fichier vide et toutes les applications que vous installerez par la suite ne seront pas traduites. Faîtes donc attention à ce fichier car même s’il est peu connu il est assez capital pour un non-anglophone.

Powered by ScribeFire.

Publié dans Mandriva. 7 Comments »

7 Réponses to “Choisir son langage sous Mandriva”

  1. esfa Says:

    Merci pour l’info

  2. AshLeDombos Says:

    Yoho, c’est génial ta connaissance sur la régionalisation, serait-il possible de faire un article sur le wiki. Mon article sur skim, que je n’ai pas le temps de finir ces derniers temps pour cause vacances😉 , essaie d’approcher la régionalisation et des infos complémentaires ne seraient pas de refus🙂

  3. yoho Says:

    Et bien j’ai pensé mettre cela sur le wiki effectivement, mais comme je pars un peu dans plusieurs sens, j’ai préféré le mettre sur mon blog… dans un premier temps. De plus, il reste certains points qui ne sont pas très clairs pour moi dans ce système, je ne suis pas une référence en la matière.

    Pour revenir 2s sur OpenSuse : lorsque j’avais installé la distribution, il me semble qu’après coup, il est possible d’installer des RPMs qui rajoutent des langues au système ou qui en enlèvent, mais il faudrait que je teste plus.

  4. Jérôme Martin Says:

    Si le système est bien fait, il devrait être possible de mettre à jour (afin d’ajouter les chaînes) tous les rpms contenant des chaînes. Ne serait-ce pas une petite amélioration à demander à urpmi ?

    Pour revenir sur le système gettext, les applications qt (kde peut-être aussi) utilise un autre système équivalent : les fichiers sont généralement des .qt sous forme binaire.

  5. yoho Says:

    Oui, je me suis dit la même chose : il devrait être possible de créer un script qui va rechercher tous les rpms installés sur le système (fastoche) et qui installe les .mo manquants qui figurent dans /etc/rpm/macros.

    Je crois même que rpm possède déjà une fonction de « mise à jour » ou « réparation » : il installe les fichiers qui n’existent pas déjà dans le système de fichier mais qui sont dans un rpm : il suffit de lancer cette commande sur tous les rpm installés sur le système et le tour doit être joué. Je vais tester cela.

  6. yoho Says:

    J’ai trouvé la commande pour installer ce qui manque dans un RPM :

    rpm -ivh –notriggers –nodeps –noscripts –replacepkgs –allfiles ./gcalctool-5.9.14-1mdv2007.1.i586.rpm

    Mais malheureusement, elle répare aussi les fichiers déjà installés dans le système en réinstallant la version dans le RPM. J’aimerais qu’elle n’y touche pas (pourtant, au vu de la description de l’option –allfiles, rpm ne devrait toucher qu’aux fichiers manquants) car il est possible qu’un fichier de conf, ou même un binaire ait été modifé…

    Je pense qu’il faut donc passer par un script en utilisant rpm2cpio, ce qui n’est finalement pas beaucoup plus compliqué que lire la page de man de rpm…🙂

    Mais en tout cas, c’est faisable car en utilisant la commande ci-dessus, j’ai bien eu mon nouveau fichier de langue installé et ça marche.

  7. yoho Says:

    Ah, pour répondre à ta question, pour les applis kde, elles semblent utiliser gettext aussi : il y a bien des fichiers .mo qui sont dans /usr/share/locale . En revanche, il faut se déconnecter et se reconnecter pour que la langue soit réellement appliquée (je pense que les applications KDE font plus que simplement lire une variable d’environnement pour connaître la langue de l’utilisateur).


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :