Разбор итальянского свидания с рубином - PullRequest
3 голосов
/ 30 июля 2009

Я хотел бы использовать Date.parse, но он не работает с итальянскими названиями месяцев!

Date.parse "26 августа 1991" => Вс, 26 июля 2009

Есть ли альтернатива?

Ответы [ 3 ]

4 голосов
/ 31 июля 2009

Все, что я могу придумать, - об одной и той же идее schnaader: сделать сопоставление между MONTHNAMES и т. Д., А затем перебрать отображение, выполнив gsub. То есть:

english_to_italian = {
  'english' => 'italian',
  ...
  'august' => 'agosto',
  ...
}

english_to_italian.each do |en, it|
  date_string.gsub!(/\b#{en}\b/i, it)
end

date = Date.parse(date_string)

Стоит отметить метод Date.italy (как и Date::ITALY, я думаю), на случай, если есть календарные различия, о которых я не знаю.

Действительно, я удивлен, что не смог найти общего решения для этого. Может быть, есть некоторые модули i18n для Rails, которые могут это сделать?

ОБНОВЛЕНИЕ: Это может приблизить вас, но не похоже, что это все сделает: http://github.com/rafaelrosafu/i18n_localize_core/tree/master

1 голос
/ 30 июля 2009

Что ж, вы можете использовать процедуры замены строк или RegEx, чтобы преобразовать месяц в перевод на английский и после этого вызвать Date.parse. В конце концов, вам нужно всего лишь заменить 12 возможных значений или есть более сложные строки?

Обратите внимание, что в классе Date вам могут помочь разные вещи, например, константы MONTHNAMES и ABBR_MONTHNAMES, которые содержат английские названия месяцев и их сокращения.

Простой пример кода, просто чтобы показать, что я имею в виду:

# Note that you perhaps might want to
# convert input strings to lowercase
myString = "26 agosto 1991" 

# replace italian month names
myString.gsub("...", "januar")
...
myString.gsub("agosto", "august")
...
myString.gsub("...", "december")

# now it should parse correctly
Date.parse(myString)
0 голосов
/ 02 декабря 2010

Другая попытка строится на https://github.com/ZenCocoon/I18n-date-parser Целью является поддержка любых языков, с которыми вы работаете в I18n.

Все еще сталкиваюсь со странной проблемой, но доберусь до нее; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...