Files
animated_wallpaper/i18n.js
T

101 lines
11 KiB
JavaScript

/* Internationalization dictionary
*
* Each key is the ENGLISH text. To add a new language, just add
* a translation under the language's two-letter code (e.g. de, it, es).
*
* Example:
* TRANSLATIONS['Sunrise'] = { en: 'Sunrise', de: 'Aufgang', it: 'Alba' };
*
* The current language is taken from window.CONFIG.language.
* Fallback order: requested language → 'en' → first available → key.
*/
window.TRANSLATIONS = {
'Sunrise': { en: 'Sunrise', de: 'Aufgang', it: 'Alba', es: 'Amanecer', fr: 'Lever du soleil', ru: 'Восход' },
'Sunset': { en: 'Sunset', de: 'Untergang', it: 'Tramonto', es: 'Atardecer', fr: 'Coucher du soleil', ru: 'Закат' },
'Sun Zenith': { en: 'Sun Zenith', de: 'Zenit Sonne', it: 'Zenit del sole', es: 'Cenit del sol', fr: 'Zénith du soleil', ru: 'Зенит солнца' },
'Moon Phase': { en: 'Moon Phase', de: 'Mondphase', it: 'Fase lunare', es: 'Fase lunar', fr: 'Phase lunaire', ru: 'Фаза луны' },
'Moonrise': { en: 'Moonrise', de: 'Mond auf', it: 'Sorgere della luna', es: 'Salida de la luna', fr: 'Lever de lune', ru: 'Восход луны' },
'Moonset': { en: 'Moonset', de: 'Mond unter', it: 'Tramonto della luna', es: 'Puesta de la luna', fr: 'Coucher de lune', ru: 'Закат луны' },
'today': { en: 'today', de: 'heute', it: 'oggi', es: 'hoy', fr: 'aujourd\'hui', ru: 'сегодня' },
'tomorrow': { en: 'tomorrow', de: 'morgen', it: 'domani', es: 'mañana', fr: 'demain', ru: 'завтра' },
'New Moon': { en: 'New Moon', de: 'Neumond', it: 'Luna nuova', es: 'Luna nueva', fr: 'Nouvelle lune', ru: 'Новолуние' },
'Waxing Crescent': { en: 'Waxing Crescent', de: 'Zunehm. Sichel', it: 'Falce crescente', es: 'Creciente', fr: 'Premier croissant', ru: 'Растущий серп' },
'First Quarter': { en: 'First Quarter', de: 'Erstes Viertel', it: 'Primo quarto', es: 'Cuarto creciente', fr: 'Premier quartier', ru: 'Первая четверть' },
'Waxing Gibbous': { en: 'Waxing Gibbous', de: 'Zunehm. Gibbous', it: 'Gibbosa crescente', es: 'Gibosa creciente', fr: 'Gibbeuse croissante', ru: 'Растущая луна' },
'Full Moon': { en: 'Full Moon', de: 'Vollmond', it: 'Luna piena', es: 'Luna llena', fr: 'Pleine lune', ru: 'Полнолуние' },
'Waning Gibbous': { en: 'Waning Gibbous', de: 'Abnehm. Gibbous', it: 'Gibbosa calante', es: 'Gibosa menguante', fr: 'Gibbeuse décroissante', ru: 'Убывающая луна' },
'Last Quarter': { en: 'Last Quarter', de: 'Letztes Viertel', it: 'Ultimo quarto', es: 'Cuarto menguante', fr: 'Dernier quartier', ru: 'Последняя четверть' },
'Waning Crescent': { en: 'Waning Crescent', de: 'Abnehm. Sichel', it: 'Falce calante', es: 'Menguante', fr: 'Dernier croissant', ru: 'Убывающий серп' },
// 2-letter weekday short forms
'Sun': { en: 'Sun', de: 'So', it: 'Do', es: 'Do', fr: 'Di', ru: 'Вс' },
'Mon': { en: 'Mon', de: 'Mo', it: 'Lu', es: 'Lu', fr: 'Lu', ru: 'Пн' },
'Tue': { en: 'Tue', de: 'Di', it: 'Ma', es: 'Ma', fr: 'Ma', ru: 'Вт' },
'Wed': { en: 'Wed', de: 'Mi', it: 'Me', es: 'Mi', fr: 'Me', ru: 'Ср' },
'Thu': { en: 'Thu', de: 'Do', it: 'Gi', es: 'Ju', fr: 'Je', ru: 'Чт' },
'Fri': { en: 'Fri', de: 'Fr', it: 'Ve', es: 'Vi', fr: 'Ve', ru: 'Пт' },
'Sat': { en: 'Sat', de: 'Sa', it: 'Sa', es: 'Sá', fr: 'Sa', ru: 'Сб' },
// Full weekday names
'Sunday': { en: 'Sunday', de: 'Sonntag', it: 'Domenica', es: 'Domingo', fr: 'Dimanche', ru: 'Воскресенье' },
'Monday': { en: 'Monday', de: 'Montag', it: 'Lunedì', es: 'Lunes', fr: 'Lundi', ru: 'Понедельник' },
'Tuesday': { en: 'Tuesday', de: 'Dienstag', it: 'Martedì', es: 'Martes', fr: 'Mardi', ru: 'Вторник' },
'Wednesday': { en: 'Wednesday', de: 'Mittwoch', it: 'Mercoledì', es: 'Miércoles', fr: 'Mercredi', ru: 'Среда' },
'Thursday': { en: 'Thursday', de: 'Donnerstag', it: 'Giovedì', es: 'Jueves', fr: 'Jeudi', ru: 'Четверг' },
'Friday': { en: 'Friday', de: 'Freitag', it: 'Venerdì', es: 'Viernes', fr: 'Vendredi', ru: 'Пятница' },
'Saturday': { en: 'Saturday', de: 'Samstag', it: 'Sabato', es: 'Sábado', fr: 'Samedi', ru: 'Суббота' },
// Full month names
'January': { en: 'January', de: 'Januar', it: 'Gennaio', es: 'Enero', fr: 'Janvier', ru: 'Январь' },
'February': { en: 'February', de: 'Februar', it: 'Febbraio', es: 'Febrero', fr: 'Février', ru: 'Февраль' },
'March': { en: 'March', de: 'März', it: 'Marzo', es: 'Marzo', fr: 'Mars', ru: 'Март' },
'April': { en: 'April', de: 'April', it: 'Aprile', es: 'Abril', fr: 'Avril', ru: 'Апрель' },
'May': { en: 'May', de: 'Mai', it: 'Maggio', es: 'Mayo', fr: 'Mai', ru: 'Май' },
'June': { en: 'June', de: 'Juni', it: 'Giugno', es: 'Junio', fr: 'Juin', ru: 'Июнь' },
'July': { en: 'July', de: 'Juli', it: 'Luglio', es: 'Julio', fr: 'Juillet', ru: 'Июль' },
'August': { en: 'August', de: 'August', it: 'Agosto', es: 'Agosto', fr: 'Août', ru: 'Август' },
// 3-letter month short forms (for MMM token)
'Jan': { en: 'Jan', de: 'Jan', it: 'Gen', es: 'Ene', fr: 'Jan', ru: 'Янв' },
'Feb': { en: 'Feb', de: 'Feb', it: 'Feb', es: 'Feb', fr: 'Fév', ru: 'Фев' },
'Mar': { en: 'Mar', de: 'Mär', it: 'Mar', es: 'Mar', fr: 'Mar', ru: 'Мар' },
'Apr': { en: 'Apr', de: 'Apr', it: 'Apr', es: 'Abr', fr: 'Avr', ru: 'Апр' },
'May': { en: 'May', de: 'Mai', it: 'Mag', es: 'May', fr: 'Mai', ru: 'Май' },
'Jun': { en: 'Jun', de: 'Jun', it: 'Giu', es: 'Jun', fr: 'Jui', ru: 'Июн' },
'Jul': { en: 'Jul', de: 'Jul', it: 'Lug', es: 'Jul', fr: 'Jul', ru: 'Июл' },
'Aug': { en: 'Aug', de: 'Aug', it: 'Ago', es: 'Ago', fr: 'Aoû', ru: 'Авг' },
'September': { en: 'September', de: 'September', it: 'Settembre', es: 'Septiembre', fr: 'Septembre', ru: 'Сентябрь' },
'Oct': { en: 'Oct', de: 'Okt', it: 'Ott', es: 'Oct', fr: 'Oct', ru: 'Окт' },
'Nov': { en: 'Nov', de: 'Nov', it: 'Nov', es: 'Nov', fr: 'Nov', ru: 'Ноя' },
'Dec': { en: 'Dec', de: 'Dez', it: 'Dic', es: 'Dic', fr: 'Déc', ru: 'Дек' },
'October': { en: 'October', de: 'Oktober', it: 'Ottobre', es: 'Octubre', fr: 'Octobre', ru: 'Октябрь' },
'November': { en: 'November', de: 'November', it: 'Novembre', es: 'Noviembre', fr: 'Novembre', ru: 'Ноябрь' },
'December': { en: 'December', de: 'Dezember', it: 'Dicembre', es: 'Diciembre', fr: 'Décembre', ru: 'Декабрь' },
'Humidity': { en: 'Humidity', de: 'Feuchte', it: 'Umidità', es: 'Humedad', fr: 'Humidité', ru: 'Влажность' },
'Wind': { en: 'Wind', de: 'Wind', it: 'Vento', es: 'Viento', fr: 'Vent', ru: 'Ветер' },
// 2-letter time-of-day labels
'Morning': { en: 'Mo', de: 'Mo', it: 'Ma', es: 'Ma', fr: 'Ma', ru: 'Ут' },
'Noon': { en: 'No', de: 'Mi', it: 'Me', es: 'Me', fr: 'Me', ru: 'По' },
'Evening': { en: 'Ev', de: 'Ab', it: 'Se', es: 'Ta', fr: 'So', ru: 'Ве' },
'Night': { en: 'Ni', de: 'Na', it: 'No', es: 'No', fr: 'Nu', ru: 'Но' }
};
window.getTranslation = function(key) {
var lang = (window.CONFIG && window.CONFIG.language) || 'en';
var entry = window.TRANSLATIONS[key];
if (!entry) return key;
// Fallback chain: requested language → 'en' → first available → key
if (entry[lang]) return entry[lang];
if (entry.en) return entry.en;
for (var k in entry) {
if (entry.hasOwnProperty(k) && entry[k]) return entry[k];
}
return key;
};
window.t = window.getTranslation;