Ratibor |
|
---|---|
# dervan : Так я тебя сразу и спросил - а что считать дробью? И точки, и запятые могут ставиться в числе по разным причинам.Ну это наверное наилучший вариант. И что там с сетлокалью ? Всмысле если в ен это точка, а в ру запятая, то как тогда ? dervan У тебя ошибка, ты проверяешь просто точку, а если будет 5.0 ? Или после phpшных фукнций так не может получится ? Не задавай глупых вопросов, не услышишь вранья.
|
|
Bu konu Ratibor tarafından düzenlendi(2009-02-15 04:13, 15 yıllar önce) |
esclkm |
|
---|---|
да я думаю именно так делать - но поумолчанию в двиге надро будет эти локали задать
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
dervan |
|
---|---|
Тогда давай так сделаем:
function sed_declension($digit, $expr, $onlyword = false, $canfrac = false)
{
...
$i = preg_replace($canfrac ? '#[^.\d]+#' : '#\D+#', '', $digit);
А с setlocale IMHO лучше не связываться - сильно от системы зависит, оно надо? # Ratibor : У тебя ошибка, ты проверяешь просто точку,Не знаю, но если даже и так, то для фразы "пять целых ноль десятых" sed_declension() всё равно должен вернуть 2. |
|
Bu konu dervan tarafından düzenlendi(2009-02-15 04:25, 15 yıllar önce) |
Ratibor |
|
---|---|
# dervan : Не знаю, но если даже и так, то для фразы "пять целых ноль десятых" sed_declension() всё равно должен вернуть 2.а для 2.0 должно 1 вернуться В общем лучше зделать чтото типа: $x = $x - floor($x); или fmod($x,1); И потом проверить на 0 Не задавай глупых вопросов, не услышишь вранья.
|
dervan |
|
---|---|
# Ratibor : а для 2.0 должно 1 вернуться"две целых ноль десятых" - всё равно 2, как ни крути. А как делать - так это сам решай, что тебе больше нравится. :) |
Ratibor |
|
---|---|
# dervan : "две целых ноль десятых" - всё равно 2, как ни крути.Если стрингом, то да Но правильней Сгенерирована за 5.0 секунд или Сгенерирована за 2.0 секунды, т.е. если .0, то 0 опускается. в общем с русским мы разобрались более-менее, теперь осталось разобраться с en и uk, что им возвращать если число не целое ? Кто у нас тут хорошо знает английский и американский английский ? Не задавай глупых вопросов, не услышишь вранья.
|
|
Bu konu Ratibor tarafından düzenlendi(2009-02-15 05:03, 15 yıllar önce) |
dervan |
|
---|---|
# Ratibor : Но правильней Сгенерирована за 5.0 секунд или Сгенерирована за 2.0 секунды,Разве это обязательно? Раз дробь стоит, значит она произносится, никакой ошибки в этом нет. |
Ratibor |
|
---|---|
# dervan : Разве это обязательно? Раз дробь стоит, значит она произноситсяНу давай это дробью будем считать, не столь важно. Главное нам осталось с двумя группами разобраться, с en и с uk. Что им возвращать ? Или пошли они в баню, пусть сами голову ломают над дробями Переделать только саму функцию и правило для русского языка, а также русский ланг файл, а англичане если это им надо сами пусть свой ланг файл переделывают и правило для своего языка Не задавай глупых вопросов, не услышишь вранья.
|
|
Bu konu Ratibor tarafından düzenlendi(2009-02-15 05:32, 15 yıllar önce) |
esclkm |
|
---|---|
http://www.trilinguis.ru/linguistic/english/numerals.htm (в самом низу)
оттуда я понял что до единицы это единственное число, в противном случе plural littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
dervan |
|
---|---|
Не знаю, к сожалению.
Слушай, а ты до этого про что говорил - как сделать отдельную от sed_declension() функцищу? А то если ты про то, как поправить $is_frac = strpos($plural, '.') !== false; так там просто: $is_frac = floor($plural) != $plural; и при этом числа типа 5.0 не будут считаться дробью. И ещё там можно регулярками побаловаться, если жизнь заставит. |
Ratibor |
|
---|---|
esclkm :
Оттуда вычитал: Существительное, которое следует за десятичной дробью, стоит в единственном числе, если в дробном количестве нет целых единиц, и во множественном числе, если в дробном количестве есть целые единицы:Это для en или для uk ? Не задавай глупых вопросов, не услышишь вранья.
|
|
Bu konu Ratibor tarafından düzenlendi(2009-02-15 05:50, 15 yıllar önce) |
dervan |
|
---|---|
Ratibor, кстати добавь в группу где
case 'en': ещё и case 'us': с этим сомнений нет, а из штатов народу на сайте хватает. |
Ratibor |
|
---|---|
Короче наверное так:
для uk все что больше 1 пишется в множественном, а в остальных случаях в единственном, для en 1 в единственном, все остальное в множественном. Правильно ? Если так, то им вообще правила дорабатывать не надо :) Не задавай глупых вопросов, не услышишь вранья.
|
|
Bu konu Ratibor tarafından düzenlendi(2009-02-15 06:06, 15 yıllar önce) |
esclkm |
|
---|---|
вроде так если верить тому что мне рассказал яша. коль что киландор дорисует.
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
Ratibor |
|
---|---|
# esclkm : вроде так если верить тому что мне рассказал яша. коль что киландор дорисует.Тогда ок, завтра все доработаю на свежую голову, а то уже четвертый час ночи :) Не задавай глупых вопросов, не услышишь вранья.
|