[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: fr.po de dpkg




On 26 Oct 2000, Jérôme Marant wrote:

> Martin Quinson <mquinson@ens-lyon.fr> writes:
>  
> > Bye, Mt.
> > PS: en ce qui concerne le bug #65284, il risque de vivre encore longtemps
> > si on ne compte que sur moi. Help needed :)
> 
>   T'inquiètes pas je vais t'aider ! Reste que le code est un peu crade :)
>   Le tout que ce cela soit suffisamment bien fait pour que Wichert
>   l'accepte.
> 
>   Il risque d'avoir des implications pour les autres langues, mieux
>   vaudrait-il se renseigner auprès des autres pour avoir leur sentiment.
>   Qu'en penses-tu ?

Je pense qu'il faut faire une liste à trois étages, et convertir 
[from pkgdisplay.cc]
  *const priorityabbrevs[]=  { N_("Req"),
			       N_("Imp"),
			       N_("Std"),
			       N_("Rec"),
			       N_("Opt"),
			       N_("Xtr"),
			       N_("Ctb"),
			       N_("bUG"),
			       N_("?") };
  *const ssaabbrevs[]= { N_("Broken"),
                         N_("New"),
                         N_("Updated"),
                         N_("Obsolete/local"),
                         N_("Up-to-date"),
                         N_("Available"),
                         N_("Removed") },

[pkgtop.cc]
const char *pkgprioritystring(const struct pkginfo *pkg) {
  if (pkg->priority == pkginfo::pri_unset) {
    return 0;
  } else if (pkg->priority == pkginfo::pri_other) {
    return pkg->otherpriority;
  } else {
    assert(pkg->priority <= pkginfo::pri_unknown);
    return gettext(prioritystrings[pkg->priority]);
  }
}
[...]
  const char *priority= pkgprioritystring(table[cursorline]->pkg);
[...]
    ssoabbrev= ssaabbrevs[pps->ssavail];
[...] 
     sprintf(buf,_("%s %s packages"),gettext(ssoabbrev),prioritystring);

en 
N_("Broken Requiered packages"),
N_("New Requiered packages"),
N_("Updated Requiered packages"),
N_("Obsolete/local Requiered packages"),
N_("Up-to-date Requiered packages"),
N_("Available Requiered packages"),

N_("Broken Important packages"),
N_("New Important packages"),
...

N_("Broken Standard packages")

et ainsi de suite.
Ensuite, au lieu de
     sprintf(buf,_("%s %s packages"),gettext(ssoabbrev),prioritystring);
il faut :
     sprintf(buf,gettext("%s %s packages"),ssoabbrev,prioritystring);

Ca devrait marcher, et on ne change rien, juste ce qui est passé à
gettext: au lieu de l'appeler pour tous les bouts, on l'appelle sur
l'ensemble. On peut meme mettre la grosse liste 
"Broken Requiered packages" et ses potes dans un fichier qui n'est pas
linké à l'exécutable, mais qui est passé à xgettext quand on fait le
fichier pot.

(rappel, _("") est pour les chaines à traduire que l'on souhaite voir
chopée par xgettext, et gettext est pour les chaines à traduire qui ne
regardent pas xgettext. N_("") est pour les chaines constantes (à ne pas
traduire sur place, donc), mais désignées pour cible à xgettext.)

It should do the trick. Comments, véléité d'essayer, car je n'ai pas top
le temps ?

Le plus beau serait un ptit programme qui se lie à pkgdisplay.cc, où sont
définis tous les bouts de phrase et fait un dummy.h qui contient tous les
N_("phrase entiere"), qui n'est pas linké à l'exécutable, mais passé à
xgettext (ie, listé dans po/POTFILE.in). Pour dummy.h, on peut meme
imaginer:
 dummy = N_("Premiere phrase entiere");
 dummy = N_("deuxieme");
On se fout de la sémantique, on veut que ce soit syntaxiquement
juste.

Ca serait beau, non ? bon, d'accord, pas tres. C'est plutot un hack. mais
bon. Ca évite de trop influer sur le code, ce qui n'est pas négligeable...

Bye, Mt.



Reply to: