diff --git a/i18n.js b/i18n.js index cd74b66..c255cba 100644 --- a/i18n.js +++ b/i18n.js @@ -30,13 +30,36 @@ window.TRANSLATIONS = { 'Last Quarter': { en: 'Last Quarter', de: 'Letztes Viertel' }, 'Waning Crescent': { en: 'Waning Crescent', de: 'Abnehm. Sichel' }, - 'Mo.': { en: 'Mo.', de: 'Mo.' }, - 'Tu.': { en: 'Tu.', de: 'Di.' }, - 'We.': { en: 'We.', de: 'Mi.' }, - 'Th.': { en: 'Th.', de: 'Do.' }, - 'Fr.': { en: 'Fr.', de: 'Fr.' }, - 'Sa.': { en: 'Sa.', de: 'Sa.' }, - 'Su.': { en: 'Su.', de: 'So.' }, + 'Mon': { en: 'Mon', de: 'Mo' }, + 'Tue': { en: 'Tue', de: 'Di' }, + 'Wed': { en: 'Wed', de: 'Mi' }, + 'Thu': { en: 'Thu', de: 'Do' }, + 'Fri': { en: 'Fri', de: 'Fr' }, + 'Sat': { en: 'Sat', de: 'Sa' }, + 'Sun': { en: 'Sun', de: 'So' }, + + // Full weekday names + 'Monday': { en: 'Monday', de: 'Montag' }, + 'Tuesday': { en: 'Tuesday', de: 'Dienstag' }, + 'Wednesday': { en: 'Wednesday', de: 'Mittwoch' }, + 'Thursday': { en: 'Thursday', de: 'Donnerstag' }, + 'Friday': { en: 'Friday', de: 'Freitag' }, + 'Saturday': { en: 'Saturday', de: 'Samstag' }, + 'Sunday': { en: 'Sunday', de: 'Sonntag' }, + + // Full month names + 'January': { en: 'January', de: 'Januar' }, + 'February': { en: 'February', de: 'Februar' }, + 'March': { en: 'March', de: 'März' }, + 'April': { en: 'April', de: 'April' }, + 'May': { en: 'May', de: 'Mai' }, + 'June': { en: 'June', de: 'Juni' }, + 'July': { en: 'July', de: 'Juli' }, + 'August': { en: 'August', de: 'August' }, + 'September': { en: 'September', de: 'September' }, + 'October': { en: 'October', de: 'Oktober' }, + 'November': { en: 'November', de: 'November' }, + 'December': { en: 'December', de: 'Dezember' }, 'Humidity': { en: 'Humidity', de: 'Feuchte' }, 'Wind': { en: 'Wind', de: 'Wind' }, diff --git a/index.html b/index.html index 8a354c6..fd1310d 100644 --- a/index.html +++ b/index.html @@ -824,27 +824,51 @@ var effect = (VANTA.CLOUDS2 || VANTA.CLOUDS)({ // Any other character is a literal (including whitespace). // // Non-standard extension tokens (lookup in i18n dict): - // DDD weekday short name (Mon., Tue., ...) from i18n - // MMM month short name (January, February, ...) from i18n + // DDD weekday short name (Mo., Tu., ...) from i18n + // dddd weekday full name (Monday, Tuesday,...) from i18n + // MMM month short name (Jan., Feb., ...) from i18n + // MMMM month full name (January, ...) from i18n + // + // Escape sequences are also evaluated: + // \n newline + // \t tab + // \\ literal backslash var result = ''; var i = 0; var weekdayKeys = ['Su.', 'Mo.', 'Tu.', 'We.', 'Th.', 'Fr.', 'Sa.']; + var weekdayFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; var monthKeys = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; while (i < format.length) { var ch = format.charAt(i); + // Handle escape sequences \n, \t, \\ + if (ch === '\\' && i + 1 < format.length) { + var next = format.charAt(i + 1); + if (next === 'n') result += '\n'; + else if (next === 't') result += '\t'; + else if (next === '\\') result += '\\'; + else result += ch + next; + i += 2; + continue; + } if (ch === 'Y' && format.substr(i, 4) === 'YYYY') { result += date.getFullYear(); i += 4; } else if (ch === 'Y') { result += date.getFullYear(); i += 1; - } else if (ch === 'M' && format.substr(i, 3) === 'MMM') { + } else if (ch === 'M' && format.substr(i, 4) === 'MMMM') { result += t(monthKeys[date.getMonth()]); + i += 4; + } else if (ch === 'M' && format.substr(i, 3) === 'MMM') { + result += t(monthKeys[date.getMonth()].substring(0, 3) + '.'); i += 3; } else if (ch === 'M' && format.substr(i, 2) === 'MM') { result += pad2(date.getMonth() + 1); i += 2; + } else if (ch === 'D' && format.substr(i, 4) === 'dddd') { + result += t(weekdayFull[date.getDay()]); + i += 4; } else if (ch === 'D' && format.substr(i, 3) === 'DDD') { result += t(weekdayKeys[date.getDay()]); i += 3;