Forum Programmation.autre Traduction d'une application française : problème d'accents

Posté par  .
Étiquettes : aucune
0
2
juil.
2004
J'ai un problème :
je veux traduire une de mes applications en français vers l'espagnol, l'allemand et d'autres langues, or ça ne fonctionne pas quand le libellé d'origine comporte un accent.

Les données du problème :
j'utilise gettext (en fait le package liblocale-gettext-perl de debian), mon fichier .po est en ISO-8859-15, mes variables d'environnement sont en principe positionnées correctement.

Et il y a quelques mois, je n'avais pas ce problème !
J'ai retrouvé le fichier .po de novembre, ainsi que le fichier compilé .mo associé (merci cvs) et ce fichier .mo fonctionne parfaitement aujourd'hui, seulement il n'est plus à jour...

Ce que je n'arrive pas à faire, c'est régénérer correctement le .mo à partir du .po

Dans un précédent journal il y a longtemps, j'avais eu à peu près le même problème et je l'avais contourné en utilisant iconv, mais là... c'est peut-être un problème différent car la solution ne marche pas.

Alors voila, après avoir passé deux jours sur ce problème, lu et relu le manuel de gettext, invoqué des dieux vaudous, je tente ma chance sur linuxfr :-/
Y'aurait-il une bonne âme avec une super idée ou une indication d'un endroit où je pourrais demander ou chercher ?

Day
  • # En C en tout cas

    Posté par  (site web personnel) . Évalué à 1.

    il vaut mieux mettre les libelles en anglais et les langues accentuées en ficher po/mo. Ca evite plein d'emmerdes.

    PAr contre je suis curieux de savoir comment cela marche en perl, si tu avait un exemple qque part ca m'interesserait.
    • [^] # Re: En C en tout cas

      Posté par  . Évalué à 1.

      Je sais qu'il fait mettre les libellés en anglais !
      Mais là, il s'agit d'une appli existante, assez énorme, et qui est en français :-/
      
      En perl ?
      Simple :
      tu installes le package liblocale-gettext-perl, tu déclares ton domaine, et tu utilises la commande gettext()
      
      C'est tout :-)
      
      exemple :
      
      #!/usr/bin/perl -w
      use strict;
      use Locale::gettext;
      use POSIX;
                                                                                      
      $ENV{LC_MESSAGES} = 'es_ES';
      $ENV{LC_TIME} = 'es_ES';
      $ENV{LC_ALL} = 'es_ES';
      $ENV{LC_CTYPE} = 'es_ES';
      $ENV{LC_LANG} = 'es_ES';
      POSIX::setlocale(&POSIX::LC_MESSAGES, 'es_ES');
      POSIX::setlocale(&POSIX::LC_TIME, 'es_ES');
      POSIX::setlocale(&POSIX::LC_ALL, 'es_ES');
      POSIX::setlocale(&POSIX::LC_CTYPE, 'es_ES');
      bindtextdomain('mon_projet', '/var/www/mon_projet/locale');
      textdomain('mon_projet');
                                                                                      
      print gettext("code_libelle_a_traduire")."\n";
      

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.