Reputation: 1141
I'm trying to translate results count to Lithuanian and there are some specific rules. I'll try to explain them:
I tried something like this (using YAML), but even number 40
doesn't match the rules:
'%count% Results, ': '{0,*0}%count% rezultatų |{1,*1}%count% rezultatas |]1,10[%count% rezultatai |]10,20[%count% rezultatų '
Is it even possible to do something like that using YAML? With the above example I get:
An exception has been thrown during the rendering of a template ("Unable to choose a translation for "{0,*0}%count% rezultatų |{1,*1}%count% rezultatas |]1,10[%count% rezultatai |]10,20[%count% rezultatų " with locale "lt". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %count% apples").")
Upvotes: 1
Views: 1897
Reputation: 41934
Symfony2's Translator only supports the ISO 31-11 notation. That format doesn't have the *
wildchart you are using. What you are trying to do is not possible with Symfony2 at te moment.
However, you can extend Symfony's Translator and add this functionality. You can do that by overriding the Symfony\Component\Translation\MessageSelector
class, adding the functionality and then change the service parameter translator.selector.class
to your class name. For instance:
// src/Acme/TranslationExtraBundle/Translation/MessageSelector.php
namespace Acme\TranslationExtraBundle\Translation;
use Symfony\Component\Translation\MessageSelector as BaseMessageSelector;
class MessageSelector extends BaseMessageSelector
{
public function choose($message, $number, $locale)
{
// ... your special logic
return parent::choose($message, $number, $locale);
}
}
parameters:
translator.selector.class: Acme\TranslationExtraBundle\Translation\MessageSelector
Upvotes: 4
Reputation: 1141
So I was trying to solve my problem following Wouters answer and found out that there is Symfony\Component\Translation\PluralizationRules
and Lithuanian is already there. All I had to do is remove intervals from my translation line and it works as expected now.
'%count% Results, ': '%count% rezultatas |%count% rezultatai |%count% rezultatų '
Upvotes: 3