Forums / National / Russian / Зоопарк с окончаниями

<<<1...56789>>>

Ratibor
#106 2009-02-15 04:08
# dervan : Так я тебя сразу и спросил - а что считать дробью? И точки, и запятые могут ставиться в числе по разным причинам.

А в sed_declention() можно добавить параметр, считать ли число с точкой дробью, по умолчанию - не считать.
Ну это наверное наилучший вариант.
И что там с сетлокалью ?
Всмысле если в ен это точка, а в ру запятая, то как тогда ?

dervan
У тебя ошибка, ты проверяешь просто точку,
а если будет 5.0 ?
Или после phpшных фукнций так не может получится ?
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-15 04:13, 15 years ago)
esclkm
#107 2009-02-15 04:12
да я думаю именно так делать - но поумолчанию в двиге надро будет эти локали задать
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
dervan
#108 2009-02-15 04:22
Тогда давай так сделаем:
function sed_declension($digit, $expr, $onlyword = false, $canfrac = false)
{

...

	$i = preg_replace($canfrac ? '#[^.\d]+#' : '#\D+#', '', $digit);
Плюс переделки sed_get_plural(), о которых было выше.

А с setlocale IMHO лучше не связываться - сильно от системы зависит, оно надо?

# Ratibor : У тебя ошибка, ты проверяешь просто точку,
а если будет 5.0 ?
Или после phpшных фукнций так не может получится ?
Не знаю, но если даже и так, то для фразы "пять целых ноль десятых" sed_declension() всё равно должен вернуть 2.
This post was edited by dervan (2009-02-15 04:25, 15 years ago)
Ratibor
#109 2009-02-15 04:32
# dervan : Не знаю, но если даже и так, то для фразы "пять целых ноль десятых" sed_declension() всё равно должен вернуть 2.
а для 2.0 должно 1 вернуться :-)
В общем лучше зделать чтото типа:
$x = $x - floor($x);
или
fmod($x,1);

И потом проверить на 0
Не задавай глупых вопросов, не услышишь вранья.
dervan
#110 2009-02-15 04:36
# Ratibor : а для 2.0 должно 1 вернуться :-)
В общем лучше зделать чтото типа:
$x = $x - floor($x);
или
fmod($x,1);
"две целых ноль десятых" - всё равно 2, как ни крути. А как делать - так это сам решай, что тебе больше нравится. :)
Ratibor
#111 2009-02-15 05:00
# dervan : "две целых ноль десятых" - всё равно 2, как ни крути.
Если стрингом, то да :-)

Но правильней Сгенерирована за 5.0 секунд или Сгенерирована за 2.0 секунды,
т.е. если .0, то 0 опускается.

в общем с русским мы разобрались более-менее,
теперь осталось разобраться с en и uk, что им возвращать если число не целое ?
Кто у нас тут хорошо знает английский и американский английский ?
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-15 05:03, 15 years ago)
dervan
#112 2009-02-15 05:19
# Ratibor : Но правильней Сгенерирована за 5.0 секунд или Сгенерирована за 2.0 секунды,
т.е. если .0, то 0 опускается.
Разве это обязательно? Раз дробь стоит, значит она произносится, никакой ошибки в этом нет.
Ratibor
#113 2009-02-15 05:25
# dervan : Разве это обязательно? Раз дробь стоит, значит она произносится
Ну давай это дробью будем считать, не столь важно.
Главное нам осталось с двумя группами разобраться, с en и с uk.
Что им возвращать ?
Или пошли они в баню, пусть сами голову ломают над дробями :-)
Переделать только саму функцию и правило для русского языка, а также русский ланг файл,
а англичане если это им надо сами пусть свой ланг файл переделывают и правило для своего языка :-)
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-15 05:32, 15 years ago)
esclkm
#114 2009-02-15 05:31
http://www.trilinguis.ru/linguistic/english/numerals.htm (в самом низу)
оттуда я понял что до единицы это единственное число, в противном случе plural
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
dervan
#115 2009-02-15 05:35
Не знаю, к сожалению.

Слушай, а ты до этого про что говорил - как сделать отдельную от sed_declension() функцищу? А то если ты про то, как поправить
$is_frac = strpos($plural, '.') !== false;
так там просто:
$is_frac = floor($plural) != $plural;
и при этом числа типа 5.0 не будут считаться дробью. И ещё там можно регулярками побаловаться, если жизнь заставит.
Ratibor
#116 2009-02-15 05:37
esclkm :
Оттуда вычитал:
Существительное, которое следует за десятичной дробью, стоит в единственном числе, если в дробном количестве нет целых единиц, и во множественном числе, если в дробном количестве есть целые единицы:
Это для en или для uk ?
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-15 05:50, 15 years ago)
dervan
#117 2009-02-15 05:48
Ratibor, кстати добавь в группу где
case 'en':
ещё и
case 'us':
с этим сомнений нет, а из штатов народу на сайте хватает.
Ratibor
#118 2009-02-15 05:50
Короче наверное так:
для uk все что больше 1 пишется в множественном, а в остальных случаях в единственном,
для en 1 в единственном, все остальное в множественном.

Правильно ?
Если так, то им вообще правила дорабатывать не надо :)
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-15 06:06, 15 years ago)
esclkm
#119 2009-02-15 06:14
вроде так если верить тому что мне рассказал яша. коль что киландор дорисует.
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Ratibor
#120 2009-02-15 06:18
# esclkm : вроде так если верить тому что мне рассказал яша. коль что киландор дорисует.
Тогда ок, завтра все доработаю на свежую голову,
а то уже четвертый час ночи :)
Не задавай глупых вопросов, не услышишь вранья.

<<<1...56789>>>