Ticket #1386 (closed enhancement: fixed)
Gestion des pluriels dans les traductions
Reported by: | JcDenis | Owned by: | JcDenis |
---|---|---|---|
Priority: | high | Milestone: | 2.5.2 |
Component: | module:clearbricks | Version: | 2.5 |
Severity: | major | Keywords: | l10n, pluriel, traduction, langue |
Cc: |
Description
Clearbricks et Dotclear ne prennent pas en compte la gestion des formes plurielles dans la traduction.
Bien entendu il faut trouver un compromis pour rester compatible avec l'existant et avec la gestion du pluriel des fichiers .po et .pot tirés de gettext.
Ceci est faisable en modifiant la classe l10n de Clearbricks et sa fonction __() ainsi que les fonctions de création/installation (debian) de Dotclear
Change History
comment:2 Changed 12 years ago by franck
- Status changed from closed to reopened
- Resolution fixed deleted
- Severity changed from normal to major
Apparemment la modif de la lib dans Clearbrick a quelques effets de bord gênants côté DC.
comment:4 Changed 12 years ago by franck
- Owner changed from xave to JcDenis
- Status changed from reopened to new
comment:6 Changed 12 years ago by franck
Je pense avoir déniché un truc :
echo '<p>DEBUG : __(\'\')'.__('').'</p>';
Renvoie : DEBUG : () Activer cette option permet le remplacement des éléments typographiques pour les commentaires (rétroliens exclus)
Soit a priori la dernière chaîne parsée (c'est dans le plugin typo, probablement un des derniers de ma liste).
comment:7 follow-up: ↓ 9 Changed 12 years ago by franck
dans la fonction trans(), au début, j'ai testé en ajoutant ça :
// If no string to translate, return no string if ($singular == '') return '';
Ça marche beaucoup mieux.
comment:8 Changed 12 years ago by franck
Un autre problème rencontré :
Dans PHP, j'ai :
echo __('This category will be excluded from home and it\'s RSS/Atom feeds only.')
Dans le .po j'ai :
msgid "This category will be excluded from home and it\'s RSS/Atom feeds only." msgstr "Cette catégorie sera exclue de la page d'accueil et de flux RSS/Atom seulement."
La chaîne n'est pas traduite à l'affichage.
comment:9 in reply to: ↑ 7 Changed 12 years ago by JcDenis
Replying to franck:
dans la fonction trans(), au début, j'ai testé en ajoutant ça :
// If no string to translate, return no string if ($singular == '') return '';Ça marche beaucoup mieux.
Oui je l'ai trouvé celui la, mais j'aimerais anticiper (dans parsePoString), car dans la version originale, c'était possible ça.
Sinon merci pour les autres erreurs.
comment:10 Changed 12 years ago by franck
Tu vas avoir du mal à anticiper un () dans parsePoString puisque on n'y passe pas dans ce cas là, non ?
comment:11 Changed 12 years ago by JcDenis
Je me suis mal exprimé, je voulais dire que j'utilise la classe l10n de clearbricks dans différents cas ou je ne passe pas forcément par ( ' ' ) et que je ne voudrais pas corriger le bug dans l10n::trans ( ) si il existe plus tôt.
Dans la version nouvelle, je complète le tableau de traduction en ajoutant (et écrasant) les headers des .po faut que je regarde ce que faisaient les regexp dans l'ancien code...
comment:12 Changed 12 years ago by franck
En fait j'ai compris où est le problème sur trans() :
/ !empty($GLOBALS__l10n?[$singular]) avec $singular =
donne !empty($GLOBALS__l10n?[]) qui je suppose doit retourner le dernier élément du tableau /
Ce qui veut dire que même si tu corriges ailleurs, il faudra gérer le cas où on fera un
/ $msg = (); /
Ce qui est utilisé dans le plugin simpleMenu par exemple.
comment:13 Changed 12 years ago by franck
Autre chose, le dernier couple msgid/msgstr des .po n'est pas pris en compte. Si on en rajoute un bidon, ça marche pour les précédents.