Ruby on Rails локаль даты - PullRequest
       36

Ruby on Rails локаль даты

0 голосов
/ 07 марта 2011

У меня есть строка даты и времени в неанглийском языке, и Time.parse ее не понимает:

Pr, 28 Vas 2011 05:04:00 + 0200

Есть ли способ преобразовать это в:

Понедельник, 28 февраля 011 05:04:00 + 0200

в Ruby on Rails?Или я должен написать свой собственный конвертер дней недели и месяцев для каждой локали?

Ответы [ 3 ]

0 голосов
/ 07 марта 2011

Разбор по времени Ruby передается на анализ даты, который следует за приоритетом:

_parse_time(str, e) # || _parse_beat(str, e)
_parse_day(str, e)

_parse_eu(str, e)     ||
_parse_us(str, e)     ||
_parse_iso(str, e)    ||
_parse_jis(str, e)    ||
_parse_vms(str, e)    ||
_parse_sla_us(str, e) ||
_parse_iso2(str, e)   ||
_parse_year(str, e)   ||
_parse_mon(str, e)    ||
_parse_mday(str, e)   ||
_parse_ddd(str, e)

т.е. это не выглядит для анализа, учитывая локаль, которую вы передаете. Разбор дат и времени в разных локалях ужасен. Я бы хотел помочь вам, но для анализа входных данных из локали, на которой не работает ваш сервер, я бы побежал в горы (я не могу найти ни одного, Google не мой друг в 1:00).

самый быстрый ответ ... разделить ввод, а не принимать произвольный текст.

Вы можете попробовать установить языковой стандарт ввода для каждого потока запроса, но большинство реализаций linux / unix имеют языковой стандарт для процесса , что означает, что у вас будет условие гонки для разбора строк на даты для каждого запрашивающий поток в вашем приложении rails.

Да, я понимаю, что это, вероятно, не тот ответ, который вы ищете, но, к сожалению, ruby ​​использует стандарт C, который представляет собой колоссальную пару брюк для многопоточных приложений

0 голосов
/ 07 марта 2011

Если вам абсолютно необходимо проанализировать строку времени / даты (многопараметрический ввод не подходит?), То я бы написал регулярное выражение, чтобы преобразовать исходную локаль в локаль, на которой работает сервер, и передать ее Time. разобрать. Я согласен с @Petesh: разбор в мультиязычных средах - это область, в которой Rails может использовать некоторые улучшения.

0 голосов
/ 07 марта 2011

Вы ищете что-то вроде этого: http://guides.rubyonrails.org/i18n.html#adding-date-time-formats?

...