[PHP + gettext] xgettext escaped \" niet goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Topicstarter
Ik ben bezig met de l10n van onze web applicatie dmv. gettext en loop tegen een simpel maar vervelend probleem aan met (x)gettext. De volgende PHP strings worden niet goed escaped:
PHP:
1
2
echo _( "1st: backslash \ quote \" single '" );
echo _( '2nd: backslash \ quote " single \'' );
xgettext op deze code levert op:
code:
1
2
msgid "1st: backslash \\ quote \" single '"
msgid "2nd: backslash \\ quote \" single '"

Het probleem hier is dat we twee identieke msgids krijgen, terwijl de PHP source toch wel degelijk verschillen. Bij beide strings zijn trouwens de backslashes verkeerd escaped! De po file zou er zo uit moeten zien:
code:
1
2
msgid "1st: backslash \\ quote \\\" single '"
msgid "2nd: backslash \\ quote \" single \\'"


Zie ik iets over het hoofd? De -e en -E flags voor xgettext maken geen enkel verschil hier. Ik draai dit trouwens op een debian ("testing") bak met xgettext (GNU gettext-tools) 0.16.1 (gewoon via apt-get geinstalleerd).

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

Verwijderd

Je hebt ongelijk. De eerste string is exact gelijk aan de tweede string, met het verschil dat in de 2e string 2nd staat in plaats van 1st.

Bedenk je dat het voor PHP niet uitmaakt hoe een string is "opgegeven". Binnen PHP is het op een gegeven moment gewoon het volgende:
code:
1
1st: backslash \ quote " single '


Waarom zouden die slashes en/of quotes volgens jou extra geëscapet moeten worden?

Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Topicstarter
Verwijderd schreef op zondag 23 september 2007 @ 16:23:
Je hebt ongelijk. De eerste string is exact gelijk aan de tweede string, met het verschil dat in de 2e string 2nd staat in plaats van 1st.

Bedenk je dat het voor PHP niet uitmaakt hoe een string is "opgegeven". Binnen PHP is het op een gegeven moment gewoon het volgende:
code:
1
1st: backslash \ quote " single '


Waarom zouden die slashes en/of quotes volgens jou extra geëscapet moeten worden?
Je hebt gelijk, de strings zijn hetzelfde, alleen anders opgeschreven. xgettext is dus slimmer dan ik dacht, en geeft als msgid de strings zo als ze "uiteindelijk" door PHP "gezien" worden...

ASCII stupid question, get a stupid ANSI!