Str_replace avec Gettext

Eléphant du PHP | 256 Messages

13 avr. 2011, 11:13

Bonjour,

J'aimerai savoir si on peut, à la volée, remplacer certaines chaînes de traduction affichées avec Gettext.

Je n'ai rien trouvé sur ce sujet, car mon idée est peut-être saugrenue. :mrgreen:

Le but est de fournir une typographie soignée sans forcément alourdir le fichier .po avec des entités Html, comme par exemple ajouter un espace insécable devant un point d'exclamation ou d'interrogation pour le français.

Voici le code de mon fichier localization.php...
$locale = 'fr_FR';
if (isset($_GET['locale'])) $locale = $_GET['locale'];
putenv('LC_ALL = $locale');
setlocale(LC_ALL, $locale);
bindtextdomain('messages', './locale');
bind_textdomain_codeset('messages', 'UTF-8');
textdomain('messages');
Si je fais sur la ligne suivante...
str_replace('jour', 'nuit', 'messages');
"jour" reste affiché.

J'ai aussi essayé après l'appel du fichier de localisation dans la page principale avec...
require_once('localization.php');
str_replace('jour', 'nuit, 'localization.php');
Au demeurant, je préfèrerai agir dans le fichier localization.php lui même pour n'affecter que l'affichage du français.

J'espère avoir été clair.

Mille mercis pour votre aide précieuse. :D

Cordialement,

Gaspard

Eléphant du PHP | 256 Messages

14 avr. 2011, 08:17

Bonjour,

Bah, je me suis tourné vers une solution en JavaScript. Tant pis pour les clients ayant désactivé cette fonctionnalité : le site sera quand même accessible, sans perte d'information.

Merci de votre attention.

Cordialement,

Gaspard

ViPHP
ViPHP | 2577 Messages

14 avr. 2011, 09:14

Bonjour,

Le fonctionnement du str_replace est différent .

Il faut faire un truc du genre :
$text = gettext('Ma phrase à traduire');
$text = str_replace('jour','nuit',$text);
str_replace('jour','nuit','localisation.php'); ne change rien puisque 'jour' n'est pas dans la chaine 'localisation.php'

Eléphant du PHP | 256 Messages

14 avr. 2011, 11:49

Hé, hé,

Merci, Mazarini, de ton observation. C'est pour ça que je suis un éternel débutant. :)

Cordialement,

Gaspard