perl-i18n

Re: long strings and xgettext.pl

2005-11-04 04:08:43
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Sava Chankov wrote:
| However, they doesn't look good in indented code. So I split them in
smaller strings, as C gettext allows:
|
| _(   "If you want to receive mail in the folder, add addresses."
|      "A message sent to an address that you add will be delivered to
the folder."
|      "If you don't want to receive mail in the folder, click 'Next'
button"
|      "You will still be able to drag'n'drop messages into it."
| );
|
| Unfortunately, xgettext.pl [or Locale::Maketext::Extract::extract, to
be precise] doesn't understand that gettext is variadic function and the
result looks like this (comment
| line truncated by me to 80 characters):

The code is syntactically wrong.  You have to concatenate the strings by
the dot operator:

_("If you ..."
~  . "A message ..."
~  . "If you ..."
~  etc.

But Locale::Maketext:::Extract will still only extract the first part of
the message because it does not handle the concatenation operator.

You should give the standard C version of gettext a try.  Beginning with
version 1.12 GNU gettext supports Perl, and it recognizes almost all
string types that Perl knows, for example:

print _<<EOF;
If you ...
A message ...
If you ...
EOF

Just try "xgettext yourscript.pl YourModule.pm ..."

BTW, gettext() is not a variadic function, neither in Perl nor in C.  It
takes exactly one argument, the msgid.

Still BTW, it is generally a bad idea to use a single underscore as an
alias for gettext().  That function is automatically global.

Regards,
Guido
- --
Imperia AG, Development
Leyboldstr. 10 - D-50354 Hürth - http://www.imperia.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQFDa0EiOo0HNPWNDz0RAmKbAKCC1Y+hzw05icMYQ6wfBIV0/xLyzQCgln+o
UzU1fiP8iF1buvBRZ2APrw8=
=mWnr
-----END PGP SIGNATURE-----

<Prev in Thread] Current Thread [Next in Thread>