Я бы сделал обратное отображение названий месяцев, специфичных для локали, в число (и, вероятно, названия дней) и список распространенных форматов даты. Затем вы можете проверить каждую строку в соответствии с этими форматами и, при сопоставлении, проанализировать значения (например, с помощью регулярного выражения) и построить дату JavaScript с использованием извлеченных данных.
Вот некоторый псевдокод, демонстрирующий идею (только для иллюстрации, не предназначенный для работы):
var i18nDate = {
'es': {
'days': ['lunes', 'martes', 'miercoles', ...],
'months': ['enero', 'febrero', 'marzo', ...],
},
// ... for each locale.
};
var i18nFormat = {
'es': [
new RegExp( // Format 1, e.g. "lunes, 29 de agosto de 2011"
'(' + i18nDate.es.days.join('|') + ')' + ', de (\d+) '
+ '(' + i18nDate.es.months.join('|') + ')' + ' de (\d+)'),
// ... for each common date format.
],
// ... for each locale.
};
function parseI18nDate(s) {
var locale, formats, i, m;
for (locale in i18nFormat) {
formats = i18nFormat[locale];
for (i=0; i<formats.length; i++) {
if (m = s.match(formats[i])) {
return new Date(m[x], m[y], m[z]);
// TODO: mapping of field position to date component.
}
}
}
return null;
}
Очевидно, что нужно проработать много деталей, включая конкретные форматы и значения. Усилие достаточно велико, чтобы гарантировать полноценную библиотеку. Возможно, уже есть проект с открытым исходным кодом, чтобы сделать такую вещь?