Bonjour, bonsoir,
Je souhaiterais rendre des pages php traduisibles en utilisant gettext. Ça fonctionne sans problème sauf que lorsqu'on ajoute une traduction, on est obligé de redémarrer le serveur afin que les modifications dans le fichier .mo soient prises en compte. Pour info voici le code testé :
Le troisième paragraphe a été traduit dans un deuxième temps (en éditant le fichier .po adéquat) et est resté en anglais. Après redémarrage du serveur (en local), la chaîne s'est bien affichée en français.
Le problème vient du fait que gettext met les fichiers .mo en cache pour accélérer l'accès.
J'ai trouvé des astuces pour contourner ce problème mais elles ne devraient pas être appliquées en production : Voir par exemple le deuxième commentaire de la doc sur gettext.
Ma question donc : connaissez-vous une bibliothèque php (restant simple d'utilisation) permettant d'utiliser gettext tout en s'affranchissant de redémarrer le serveur ?
J'ai beau chercher, je ne trouve rien hormis des framework du type zend qui me semble être beaucoup trop développé pour que je l'utilise juste pour de la localisation (et même si je l'utilisais pour cela, je ne suis pas sûr de savoir comment faire...).
Merci d'avance pour votre aide.
Modifié par jojaba (11 Mar 2015 - 10:28)
Je souhaiterais rendre des pages php traduisibles en utilisant gettext. Ça fonctionne sans problème sauf que lorsqu'on ajoute une traduction, on est obligé de redémarrer le serveur afin que les modifications dans le fichier .mo soient prises en compte. Pour info voici le code testé :
<?php
$lang = "fr";
$domain = "mondomaine";
putenv("LC_ALL=$lang");
setlocale(LC_ALL, $lang);
bindtextdomain($domain, "lang");
textdomain($domain);
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Test localisation</title>
</head>
<body>
<h1>Test localisation</h1>
<p><?php echo _("This string is localized using getetext") ?></p>
<p><?php echo _("I hope it works!!!") ?></p>
<p><?php echo _("Adding some other string...") ?></p>
</body>
</html>
Le troisième paragraphe a été traduit dans un deuxième temps (en éditant le fichier .po adéquat) et est resté en anglais. Après redémarrage du serveur (en local), la chaîne s'est bien affichée en français.
Le problème vient du fait que gettext met les fichiers .mo en cache pour accélérer l'accès.
J'ai trouvé des astuces pour contourner ce problème mais elles ne devraient pas être appliquées en production : Voir par exemple le deuxième commentaire de la doc sur gettext.
Ma question donc : connaissez-vous une bibliothèque php (restant simple d'utilisation) permettant d'utiliser gettext tout en s'affranchissant de redémarrer le serveur ?
J'ai beau chercher, je ne trouve rien hormis des framework du type zend qui me semble être beaucoup trop développé pour que je l'utilise juste pour de la localisation (et même si je l'utilisais pour cela, je ne suis pas sûr de savoir comment faire...).
Merci d'avance pour votre aide.
Modifié par jojaba (11 Mar 2015 - 10:28)