N
N
nepster-web2014-04-02 16:17:44
Yii
nepster-web, 2014-04-02 16:17:44

Translations, how to work with quantity names in Yii2?

Made a test output:

for($i=0; $i<100; $i++) {
                echo \Yii::t('app', 'Тут {n, plural, =0{нет собак} =1{одна собака} few{# собаки1} many{# собак2} other{# собак3} }!', ['n' => $i]);
                echo '<br/>';
            }

It went something like this:
Тут нет собак!
Тут одна собака!
Тут 2 собак3!
Тут 3 собак3!
Тут 4 собак3!
Тут 5 собак3!
Тут 6 собак3!
Тут 7 собак3!
Тут 8 собак3!
Тут 9 собак3!
Тут 10 собак3!
Тут 11 собак3!
Тут 12 собак3!
Тут 13 собак3!
Тут 14 собак3!
Тут 15 собак3!
Тут 16 собак3!
Тут 17 собак3!
Тут 18 собак3!
Тут 19 собак3!
Тут 20 собак3!
Тут 21 собак3!
Тут 22 собак3!
Тут 23 собак3!
Тут 24 собак3!
Тут 25 собак3!
Тут 26 собак3!
Тут 27 собак3!
Тут 28 собак3!
Тут 29 собак3!
Тут 30 собак3!
Тут 31 собак3!
Тут 32 собак3!
Тут 33 собак3!
Тут 34 собак3!
Тут 35 собак3!
Тут 36 собак3!
Тут 37 собак3!
Тут 38 собак3!
Тут 39 собак3!
Тут 40 собак3!

Can you please tell me why we are constantly hitting other{# dogs3} ?
I took this from the docs
https://github.com/yiisoft/yii2/blob/master/docs/g...
How to do it right:
Тут нет собак!
Тут одна собака!
Тут 2 собаки!
Тут 10 собак!
Тут 21 собака!

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Alexander Zelenin, 2014-04-02
@nepster-web

as I understand it, few and many are given as an example of the fact that in languages ​​other than English, there may be complex rules that do not fall under an unambiguous interpretation.

D
Denis Morozov, 2014-04-02
@morozovdenis

function getLabel($count)
{
if ($count == 0)
return "Нет собак";
if ($count == 1)
return "Одна собака";
if ($count % 100 > 10 && $count % 100 < 20)
return $count . " собак";
switch ($count % 10)
{
case 0: return $count . " собак";
case 1: return $count . " собака";
case 2: return $count . " собаки";
case 3: return $count . " собаки";
case 4: return $count . " собаки";
case 5: return $count . " собак";
case 6: return $count . " собак";
case 7: return $count . " собак";
case 8: return $count . " собак";
case 9: return $count . " собак";
}
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question