[Zope-dev] Re: [Checkins] SVN:
zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/
Changed the API. It's unwieldy as it is, so better have separate methods
Hanno Schlichting
plone at hannosch.info
Wed Jul 16 16:36:30 EDT 2008
Hi.
It's awesome to see some progress on this. You are aware of the Gettext
manual at
http://www.gnu.org/software/gettext/manual/gettext.html#Plural-forms right?
Stephan Richter wrote:
> On Wednesday 16 July 2008, Lennart Regebro wrote:
>> While talking about this, what would a ZPT implementation of this best
>> look like? An i18n:count statement that takes expressions?
>>
>> <p i18n:translate="" i18n:count="view/file_count">There are %d files</p>
>>
>> Or?
>
> Good question! The ZPT above is not correct; once we write a correct one, it
> becomes more obvious:
>
> <p i18n:translate="">There are <span tal:content="view/num" i18n:name="num"
> i18n:count="view/num">10</span> files.</p>
>
> Alternatively we could just evaluate the tal:content or tal:replace
> expression.
So here's a set of additional use-cases:
<p i18n:translate="">
You selected the book called
<span tal:content="title" i18n:name="title">Python for dummies</span>.
</p>
In this case, the i18n:name shouldn't be treated as a number, so I think
we need an explicit statement like i18n:count to signal this. We could
have the i18n:count default to taking the expression if it is empty.
<p i18n:translate="">
You have to pay
<span tal:content="view/formatted_amount" i18n:name="amount"
i18n:count="view/amount">6 dollars</span>.
</p>
In this case the underlying value is a simple integer, but the actual
presentation might be locale dependent, like currency formatting.
<p i18n:translate="">
You selected
<span tal:content="num" i18n:name="num">5</span>
out of
<span tal:content="total" i18n:name="total">10</span>
files.
</p>
I'm not sure what to do with this actually. How does multiple numbers in
the same sentence are handled? I think this is just not allowed and
should cause a syntax error, as there's no general way to translate
those sentences with Gettext. Or does it result in a n-dimensional matrix?
<br i18n:attributes="">
You selected
<span tal:content="num" i18n:name="num">5</span>
out of
<span tal:content="total" i18n:name="total">10</span>
files.
</p>
Can someone think about an example involving i18n:attributes? In TAL I
cannot construct a dynamic one it seems.
How does this behave in regard to zope.i18nmessageid?
from zope.i18nmessageid import MessageFactory
_ = MessageFactory('domain')
mapping=dict(num=10)
foo = _(u'There are ${num} files.', mapping=mapping)
mapping=dict(num=10, name='/foo/bar')
foo = _(u'There are ${num} files in the folder named ${name}.',
mapping=mapping)
So I think we need to signal to the messageid which variable in the
mapping is significant for the i18n count, right?
Hanno
More information about the Zope-Dev
mailing list