Of the two, I prefer the all in one way, because the localizer needs to see the entire structure and modify it appropriately for the language, grammar and rules.
If the programmer creates a format_plural function, then the function is not likely to cover all the needs of all languages, nor the reordering of the text that a localizer might choose for correct grammar. That said, I try to avoid the problem altogether by putting the text in a form of label:value, since this can almost always be accommodated by an unchanging label in all languages. Number of comments: (0, 1, 2 whatever...) It is not as engaging as writing "You have n comments" but it can be done so it is not offputting and you can use the rest of the text to better engage the audience. tex > -----Original Message----- > From: Stanislav Malyshev [mailto:[EMAIL PROTECTED] > Sent: Monday, May 12, 2008 5:23 PM > To: Gergely Hodicska > Cc: php-i18n@lists.php.net > Subject: Re: [PHP-I18N] intl extension > > Hi! > > > 1.) Gettext way: I call a format_plural($count, '1 > comment', '$count > > comments'), and this function can handle special cases (for example > > Russian), and the given language file can store multiple > plural format. > > > > 2.) "All-in-one" way: only one string belongs to one string id, and > > this string holds the different versions of the given > word/sentence, > > and the rules too on which we can decide which version > should be used. For example: > > "[0]No comment.|[1]1 comment.|[2,]$count comments." > > Here you'd probably want to use {1,number,integer} instead of > $count and provide $count as parameter, otherwise you'd lose > local number formatting. > > > o Maybe the most obvious one is that the rules are > repeated in every > > entry and the fact that the rules belongs to the language not to an > > entry (so the data model is a little strange, it holds some > redundancy). > > Yes, that's correct - but you could always isolate it into > specific printing function - i.e. create function > print_comments_count($count) and use the pattern there, and > then insert it into bigger pattern. > Depends on how often that pattern repeats, I guess. > > > o My other problem is that for this structure it would be > not easy to > > create a logical/usable user interface for translating. > > Well, here I don't have any meaningful experience, but I > think since ICU uses it there must be some tools that support > it. Right now the extension does not deal with the question > where you get the patterns from or how you switch between > pattern sets (we planned to add support for resource bundles, > etc. later). Maybe other people on the list could help more > with that :) > -- > Stanislav Malyshev, Zend Software Architect > [EMAIL PROTECTED] http://www.zend.com/ > (408)253-8829 MSN: [EMAIL PROTECTED] > > -- > PHP Unicode & I18N Mailing List (http://www.php.net/) To > unsubscribe, visit: http://www.php.net/unsub.php > >