Склонение

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Склонение

Сообщение jakiro »

Приветы, кто-либо пробвоал склонения реализовывать через t()?
1 день, 2 дня, 5 дней, 101 день?

Код: Выделить всё

$n = 21;
    echo \Yii::t('app', '{n,plural,=0{дней} =1{день} =5{дней} other{# дня}}', ['n' => $n]);
Курил мануал, что то наполовину только дошел
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Склонение

Сообщение zelenin »

jakiro писал(а):Приветы, кто-либо пробвоал склонения реализовывать через t()?
1 день, 2 дня, 5 дней, 101 день?

Код: Выделить всё

$n = 21;
    echo \Yii::t('app', '{n,plural,=0{дней} =1{день} =5{дней} other{# дня}}', ['n' => $n]); 
Курил мануал, что то наполовину только дошел
конечно пробовали. конкретнее вопрос.
Rom
Сообщения: 81
Зарегистрирован: 2014.12.22, 11:56

Re: Склонение

Сообщение Rom »

Передайте в параметрах циферку 0 а затем 5 и посмотрите что получится.

Код: Выделить всё

['n' => 5]
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

zelenin писал(а):
jakiro писал(а):Приветы, кто-либо пробвоал склонения реализовывать через t()?
1 день, 2 дня, 5 дней, 101 день?

Код: Выделить всё

$n = 21;
    echo \Yii::t('app', '{n,plural,=0{дней} =1{день} =5{дней} other{# дня}}', ['n' => $n]);
Курил мануал, что то наполовину только дошел
конечно пробовали. конкретнее вопрос.
Не могу шаблон написать :) для день, дня, дней
=1, это конкретно, но все же дни я не буду перечислять ;( Я вот не пойму, он умеет как то сам вычислять, по шаблону или тут только конкретные значения
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

Rom писал(а):Передайте в параметрах циферку 0 а затем 5 и посмотрите что получится.

Код: Выделить всё

['n' => 5]
 
Спасибо конечно, но я не на столько олигофрен, чтобы совсем не понимать, что вокруг происходит
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Склонение

Сообщение zelenin »

jakiro писал(а):
zelenin писал(а):
jakiro писал(а):Приветы, кто-либо пробвоал склонения реализовывать через t()?
1 день, 2 дня, 5 дней, 101 день?

Код: Выделить всё

$n = 21;
    echo \Yii::t('app', '{n,plural,=0{дней} =1{день} =5{дней} other{# дня}}', ['n' => $n]);
Курил мануал, что то наполовину только дошел
конечно пробовали. конкретнее вопрос.
Не могу шаблон написать :) для день, дня, дней
=1, это конкретно, но все же дни я не буду перечислять ;( Я вот не пойму, он умеет как то сам вычислять, по шаблону или тут только конкретные значения
дл каждого языка есть свои правила склонений, обычно по последней цифре:
= 1 - один день, двадцать один день, сто один день
= 2 - два дня, сто двадцать два дня
итд
http://cldr.unicode.org/index/cldr-spec/plural-rules
http://www.unicode.org/cldr/charts/late ... rules.html
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

zelenin писал(а):
jakiro писал(а):
zelenin писал(а): конечно пробовали. конкретнее вопрос.
Не могу шаблон написать :) для день, дня, дней
=1, это конкретно, но все же дни я не буду перечислять ;( Я вот не пойму, он умеет как то сам вычислять, по шаблону или тут только конкретные значения
дл каждого языка есть свои правила склонений, обычно по последней цифре:
= 1 - один день, двадцать один день, сто один день
= 2 - два дня, сто двадцать два дня
итд
http://cldr.unicode.org/index/cldr-spec/plural-rules
http://www.unicode.org/cldr/charts/late ... rules.html
1 день, 11 дней, 21 день, а тут как быть? :)
2 дня, 12 дней, 22 дня
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Склонение

Сообщение zelenin »

jakiro писал(а):
zelenin писал(а):
jakiro писал(а): Не могу шаблон написать :) для день, дня, дней
=1, это конкретно, но все же дни я не буду перечислять ;( Я вот не пойму, он умеет как то сам вычислять, по шаблону или тут только конкретные значения
дл каждого языка есть свои правила склонений, обычно по последней цифре:
= 1 - один день, двадцать один день, сто один день
= 2 - два дня, сто двадцать два дня
итд
http://cldr.unicode.org/index/cldr-spec/plural-rules
http://www.unicode.org/cldr/charts/late ... rules.html
1 день, 11 дней, 21 день, а тут как быть? :)
2 дня, 12 дней, 22 дня
ссылки посмотрите
1 - 1
2-4 - few
5-19 - many
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

zelenin писал(а):
jakiro писал(а):
zelenin писал(а): дл каждого языка есть свои правила склонений, обычно по последней цифре:
= 1 - один день, двадцать один день, сто один день
= 2 - два дня, сто двадцать два дня
итд
http://cldr.unicode.org/index/cldr-spec/plural-rules
http://www.unicode.org/cldr/charts/late ... rules.html
1 день, 11 дней, 21 день, а тут как быть? :)
2 дня, 12 дней, 22 дня
ссылки посмотрите
1 - 1
2-4 - few
5-19 - many
Аа, это что то вроде алиасов, синонимов
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Склонение

Сообщение zelenin »

да, просто опишите все варианты (около шести?) и во всех языках будет правильно склоняться.
кстати, ;
echo \Yii::t('app', '{n,plural,=0{дней} =1{день} =5{дней} other{# дня}}', ['n' => $n]); вы тут с русского переводите?) обычно наоборот.
Rom
Сообщения: 81
Зарегистрирован: 2014.12.22, 11:56

Re: Склонение

Сообщение Rom »

jakiro писал(а):
Rom писал(а):Передайте в параметрах циферку 0 а затем 5 и посмотрите что получится.

Код: Выделить всё

['n' => 5]
 
Спасибо конечно, но я не на столько олигофрен, чтобы совсем не понимать, что вокруг происходит
Такое обычно бывает когда нет конкретного вопроса.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

zelenin писал(а):да, просто опишите все варианты (около шести?) и во всех языках будет правильно склоняться.
кстати, ;
echo \Yii::t('app', '{n,plural,=0{дней} =1{день} =5{дней} other{# дня}}', ['n' => $n]); вы тут с русского переводите?) обычно наоборот.
Дане, тут вообще нкиакого перевода :) Просто надо выводить срок доставки.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

zelenin писал(а):да, просто опишите все варианты (около шести?) и во всех языках будет правильно склоняться.
кстати, ;
echo \Yii::t('app', '{n,plural,=0{дней} =1{день} =5{дней} other{# дня}}', ['n' => $n]); вы тут с русского переводите?) обычно наоборот.
few и many не работают :(
выводит как есть, шаблон

Код: Выделить всё

{n,plural,few{# дней}}  
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

c two тоже странное поведение, он шаболн не вываливает, но и не заменяет

Код: Выделить всё

    return \Yii::t(null, '{n,plural, one{# день} two{# дня} other{# дней}}', ['n' => $days]);
 
1 день, 2 дней
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Склонение

Сообщение zelenin »

jakiro писал(а):c two тоже странное поведение, он шаболн не вываливает, но и не заменяет

Код: Выделить всё

    return \Yii::t(null, '{n,plural, one{# день} two{# дня} other{# дней}}', ['n' => $days]);
1 день, 2 дней
с какого на какой язык переводите?
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

zelenin писал(а):
jakiro писал(а):c two тоже странное поведение, он шаболн не вываливает, но и не заменяет

Код: Выделить всё

    return \Yii::t(null, '{n,plural, one{# день} two{# дня} other{# дней}}', ['n' => $days]);
 
1 день, 2 дней
с какого на какой язык переводите?
Ни с какого :) Из русского в русский
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Склонение

Сообщение zelenin »

jakiro писал(а):
zelenin писал(а):
jakiro писал(а):c two тоже странное поведение, он шаболн не вываливает, но и не заменяет

Код: Выделить всё

    return \Yii::t(null, '{n,plural, one{# день} two{# дня} other{# дней}}', ['n' => $days]);
1 день, 2 дней
с какого на какой язык переводите?
Ни с какого :) Из русского в русский
t() - функция перевода, правила, указанные вами - часть intl, при переводе указывается язык. Не уверен, что t() бдует в такой ситуации переводить.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Склонение

Сообщение Nerf »

Yii::t зависит от настроек приложения: sourceLanguage, language. Они корректно настроены?
Если нет, то переводит он исходя из правил склонений англ. языка.

ПС: http://www.yiiframework.com/doc-2.0/yii ... t()-detail
Последний раз редактировалось Nerf 2016.04.22, 20:55, всего редактировалось 2 раза.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Склонение

Сообщение jakiro »

zelenin писал(а):
jakiro писал(а):
zelenin писал(а): с какого на какой язык переводите?
Ни с какого :) Из русского в русский
t() - функция перевода, правила, указанные вами - часть intl, при переводе указывается язык. Не уверен, что t() бдует в такой ситуации переводить.
Ну в доках пишут:
Note: The above example Russian message is mainly used as a translated message, not an original message, unless you set the source language of your application as ru-RU and translating from Russian.

When a translation is not found for an original message specified in Yii::t() call, the plural rules for the source language will be applied to the original message.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Склонение

Сообщение zelenin »

jakiro писал(а):
zelenin писал(а):
jakiro писал(а): Ни с какого :) Из русского в русский
t() - функция перевода, правила, указанные вами - часть intl, при переводе указывается язык. Не уверен, что t() бдует в такой ситуации переводить.
Ну в доках пишут:
Note: The above example Russian message is mainly used as a translated message, not an original message, unless you set the source language of your application as ru-RU and translating from Russian.

When a translation is not found for an original message specified in Yii::t() call, the plural rules for the source language will be applied to the original message.
а sourelanguage прописали? т. к у вас похоже на английские правила.
Ответить