xgettext mon amour

Je causais il y a quelques jours d’un problème que j’avais avec la construction des fichiers de traduction ; et je soupçonnais en particulier un problème avec xgettext. Après quelques tests ce matin, j’ai trouvé ce qui empêche xgettext de correctement trouver les chaînes à traduire dans un fichier en particulier.

Ce fichier comporte, quelques lignes avant le début des chaînes à traduire, un code qui utilise une syntaxe heredoc pour définir une chaîne de caractères :

        $css = <<<EOT
            body {
                color: #000;
                background: #f9f9f9;
                margin: 0;
                padding: 2px;
                border: none;
                $rtl
            }
            code {
                color: #666;
                font-weight: bold;
            }
            body > p:first-child {
                margin-top: 0;
            }
            EOT;
        $js = [
            'dialog_url'            => 'popup.php',
            'iframe_css'            => $css,
            'base_url'              => $GLOBALS['core']->blog->host,
            'switcher_visual_title' => __('visual'),
            'switcher_source_title' => __('source'),
…

Or, depuis PHP 7.3, l’identifiant de fin de la syntaxe heredoc peut être ailleurs que sur la première colonne et je pense que xgettext n’apprécie pas du tout cette possibilité :

L’identifiant de fin peut être indenté par des espaces ou tabulations, au quel cas l’indentation sera retirée de toutes les lignes dans la chaîne de caractères doc. Antérieur à PHP 7.3.0, l’identifiant de fin doit commencer à la première colonne de la ligne.

J’ai donc refait un test en mettant cet identifiant (EOT) en 1re colonne et bingo, ça refonctionne \o/

Un ticket a été ouvert récemment à ce sujet sur le bugtracker du projet GNU gettext, on verra si c’est suivi d’effet…

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15299

Haut de page