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 champs suivis d'un * sont obligatoires

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