I know we T() for this, but there are some shortcoming. As I'm dealing
with more languages than it's probably healthy, the T() approach seems
to have significant drawbacks compared to good (?) old gettext. I want
to see whether some solutions already exist that I don't know about,
or we need to do something about this to accomodate.

a) string arguments. I tried something along the lines of T('User %s
not available') % username, but that's a no go (TypeError: unsupported
operand type(s) for %: 'lazyT' and 'str'). Obviously If I do the
replacement within T, I cannot translate the string. I know I could
rearrange the text so the parameter comes up on the beginning or the
end of the string, but I'm talking concepts here. Preferably, this
should work with dict arguments to be able to preserve word ordering
and make translations easier. (think '%(obj)s not found in %(loc)s',
some languages will have the parameters reversed). T('text with
parameters', mydict) would be also ok.

b) numerical parameters. It gets even more complex here. Unfortunately
some words change shape depending on argument value (in english, this
would be the plural 's' on the end). Some languages don't have this
(like hungarian), others have a more complex scheme (like russian with
3 plurals). Gettext gets around this by having a ngettext, which takes
a parameter, like ngettext('% files copied', n) which returns the
string for the particular argument value. This is regulated through a
header (an example for aforementioned russian):

 Plural-Forms: nplurals=3; \
              plural=n%10==1 && n%100!=11 ? 0 : \
                     n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ?
1 : 2;

For this functionality we probably we either need to change how T()
works, or make a two-parameter NT() and have a special dict for that
(just a mockup idea, the selector could of course be a separate dict
in itself):
{
  '%s kralj_selector' : logical-expression-similar-to-the-example-
above
  '%s kralj' : ('%s kralj', '%s kralja', '%s kraljeva')
}

I'd like to keep the logic as close to that of gettext's to able to
make a convertes as there are thousands of gettext editors translators
are familiar with, it would be a shame to use a scheme which could not
be converted back and forth.


Thoughts, comments ?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to