2010-07-02 3 views
1

Je suis en train de traduire mon application PHP en utilisant gettext avec POEdit. Depuis que je respecte la marge d'impression dans mon code source, j'étais habitué à des chaînes d'écriture comme ça:Comment ignorer les lignes de rupture PHP avec l'analyseur POEdit?

print $this->translate("A long string of text 
    that needs to follow the print margin and since 
    php outputs whitespaces for every break line I do 
    my sites renders correctly."); 

Cependant, dans POEdit, comme prévu, les sauts de ligne ne sont pas échappés à des espaces.

A long string of text\n 
    that needs to follow the print margin and since\n 
    php outputs whitespaces for every break line I do\n 
    my websites render correctly.\n 

Je sais une approche serait de fermer les cordes lors du changement de lignes dans le code source comme ça:

print $this->translate("A long string of text " . 
    "that needs to follow the print margin and since " . 
    "php outputs whitespaces for every break line I do " . 
    "my sites renders correctly. "); 

Mais ce n'est pas une approche qui est extensible pour moi lorsque les textes doivent changer et la marge d'impression toujours respecté, sauf si netbeans (l'IDE que j'utilise) peut le faire automatiquement pour moi tout comme eclipse en java. Donc, en conclusion, y a-t-il un moyen de dire à l'analyseur POEdit d'échapper aux sauts de ligne en tant qu'espaces dans les préférences? Je sais que les chaînes sont toujours traduisibles même si les sauts de ligne ne sont pas échappés, je demande ceci pour que mon traductor (parfois même le client/utilisateur) évite la confusion en pensant qu'il doit dupliquer les sauts de ligne pendant qu'il traduit en POEdit.

Répondre

0

Vous devez vous assurer que votre utilisation des sauts de ligne droite dans votre script et votre application

LF: Line Feed, U+000A 
FF: Form Feed, U+000C 
CR: Carriage Return, U+000D 
CR+LF: CR (U+000D) followed by LF (U+000A) 
NEL: Next Line, U+0085 
LS: Line Separator, U+2028 
PS: Paragraph Separator, U+2029 

Dans les systèmes Windows (MS-DOS), il saut de ligne est CR+LF, Et dans les « Unix » systèmes de son LF adn 8bit un CR commodore de son

Vous devez vous assurer que l'emplacement de la source contient le même type de flux à votre emplacement modifier.

poignées Votre serveur sa ligne alimente différente de l'hôte que l'éditeur est en cours d'exécution, juste vérifier ce point et develope des moyens d'auto remplacement des caractères Unicode en fonction de votre OS


Comme vous dites que votre "traduire mon application PHP en utilisant gettext avec POEdit", je créerais un script pour lancer tous vos fichiers via shell/doss/php et convertir automatiquement les codes de caractères au type de système que vous utilisez.

donc si votre travail sur Windows alors vous rechercher tous les caractères qui sont U+000A et le remplacer par U+000DU+000A

+1

Je n'ai des problèmes de sauts de ligne à travers les systèmes d'exploitation puisque je fais en sorte d'utiliser des sauts de ligne Unix dans mon code source (ou peut-être que je n'ai pas compris clairement votre déclaration). Je pensais qu'il y aurait un moyen facile d'interpréter les flux de ligne comme des espaces dans la commande xgettext parser. Est-ce possible? –

Questions connexes