|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/371.32 23 Aug 2001 14:29:33 To : Vitus Subject : Re: даты по-русски -------------------------------------------------------------------------------- >>> S> Мне нужно написать модуль, позволяющий выводить даты в произвольном S>>формате, >>> S> но с использованием русского языка. >>> S> Пожалуйста, подскажите, как это сделать? v> >> Так и сделать... Только прежде чем ты начнешь форматы изопридумывать, S>>посмотри v> >> man strftime. Сколь я помню, %m - это все-таки числовое значение месяца. Я S>>сам v> >> думаю написать такой модулек, но пока так и не собрался. Ты там увидишь, S>>что v> >> для сокращенного и полного названий применяются разные %-конструкции, а S>>падежи v> >> и заглавные буквы я собираюсь делать посредством модификаторов (вроде %fgA S>>для v> >> полного дня недели в родительном падеже с маленькой буквы [form, оно же v> >> незанятый модификатор, genitive]). При этом, соответственно, отрабатывая v> >> названия дней недели и месяцев самостоятельно, а остальное отдавая на S>>откуп v> >> POSIX::strftime. v> А можно полную спецификацию этих модификаторов сюда? По небольшом размышлении получилось так: %f[<падеж>[.<заглавность>]]<символ от strftime> <заглавность> ::= 0 (строчные) | 1 (с прописной) | 2 (прописные) <падеж> ::= 0 (именительный) | 1 (родительный) | 2 (дательный) | 3 (винительный) | 4 (творительный) | 5 (предложный) Прилагательных не предусматриваем. По умолчанию для %A (день недели) падеж именительный, для %B (месяц) - родительный - "четверг, 23 августа 2001 г." v> Что-то мне эта идея v> нравится. У меня есть тоже задачка где это надо, и тоже на Perl. v> Особенно интересно, как ты собираешься бороться с тем, что в разных v> языках предусмотрен разный набор форм слова. А никак не собираюсь. Это будет что-то типа Russian::Strftime. Мне же туда еще сами данные во всех падежах засовывать. А в других языках может быть не только других форм, но и других стандартов на запись даты. v> Кстати, по поводу strftime хочу сразу предупредить что на разных v> системах формат %B работает по-разному в русской локали. v> Hа solaris он говорит "январь", а на Linux - "января" Что меня в первую очередь и подвигло. Я тогда напоролся на разный формат в линуксе и фрюхе. v> Видимо, делать так v> $format=~ s/мои формат/\037%m\037/ v> $result= strftime($format, @date) v> $result=~ s/\037(d+)\037/$recoder{$1}/ v> где recoder - хэш отображающий номера месяцев в их названия в правильной v> форме. Я бы сразу с аргументами работал. -- Artem Chuprina <ran@ran.pp.ru> FIDO: 2:5020/371.32 --- slrn/0.9.7.0 (Linux) * Origin: AKA с подствольным плюсомётом (2:5020/371.32) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/725367e09b4ba.html, оценка из 5, голосов 10
|