import { settings } from './settings.js'; export const getDefaultLanguage = () => { const userLang = navigator.language || navigator.userLanguage; if (languages[userLang] !== undefined) return userLang; return 'en'; }; export const getLanguages = () => Object.keys(languages); export const t = (key, ...params) => { let translation = languages[settings.language][key]; if (!translation) translation = languages['en'][key] if (!translation) return key; while (params.length >= 1) translation = translation.replace('{}', params.shift()); return translation; }; const languages = { 'de': { 'access_full': 'Barrierefrei', 'access_none': 'Keine Einschränkungen', 'access_partial': 'Bedingt barrierefrei', 'accessibility': 'Barrierefreiheit', 'arrival': 'Ankunft', 'bus': 'Bus', 'cancelled-ride': 'Fahrt entfällt!', 'changeinfo': '{} Umstiegsdauer', 'changes': 'Umstiege', 'clearstorage': 'Lokale Daten löschen', 'datasource': 'Datenquelle', 'date': 'Datum', 'de': 'Deutsch', 'departure': 'Abfahrt', 'duration': 'Dauer', 'planned': 'geplant', 'dzug': 'D-Zug', 'en': 'Englisch', 'ferry': 'Fähre', 'from': 'Von', 'graphical': 'Grafische Darstellung in der Verbindungsübersicht', 'iceonly': 'ICE', 'iconly': 'IC', 'journeyoverview': 'Verbindungsübersicht aufrufen', 'label_earlier': 'Frühere Verbindungen', 'label_later': 'Spätere Verbindungen', 'lang_short': 'de', 'language': 'Sprache', 'lastjourney': 'Letzte gewählte Verbindung aufrufen', 'longdistancetrain': 'Fernverkehr', 'nl': 'Niederländisch', 'optional': '(optional)', 'options': 'Optionen', 'platform': 'Gleis', 'product': 'Produkt', 'regionaltrain': 'Regionalverkehr', 'remarks': 'Hinweise', 'save': 'Speichern', 'search': 'Suchen', 'setfromto': 'Als Von/Nach setzen', 'settings': 'Einstellungen', 'showdebug': 'Debugnachrichten ins Log schreiben', 'showds100': 'RIL100-Kürzel anzeigen (wenn verfügbar)', 'station': 'Station', 'suburbantrain': 'S-Bahn', 'subway': 'U-Bahn', 'swap': 'Von/Nach tauschen', 'taxi': 'Taxi', 'time': 'Uhrzeit', 'to': 'Nach', 'tram': 'Tram', 'transferinfo': 'Reise nach {}', 'update': 'Anwendung updaten', 'via': 'Über', 'walkinfo': 'Laufe nach {}', 'walkinfo_meters': 'Laufe nach {} (ca. {} Meter)', 'load-low-to-medium': 'Niedrige bis mittlere Auslastung', 'load-high': 'Hohe Auslastung', 'load-very-high': 'Sehr hohe Auslastung', 'load-exceptionally-high': 'Extrem hohe Auslastung', 'table-view': 'Tabelle', 'show-prices': 'Preise anzeigen', 'combineDateTime': 'Kombinierte Zeit & Datumseingabe verwenden', 'titleSetDateTimeNow': 'Setze Uhrzeit & Datum auf jetzt', 'titleBikeFriendly': 'Fahrradmitnahme möglich', 'loyaltyCard': 'Ermäßigungskarte', 'loyaltyCardNone': 'keine Ermäßigungskarte', 'class': 'Klasse', 'titleNoTransfers': 'keine Umstiege zulassen', 'lastSelectedJourney': 'Zuletzt gewählte Verbindung', 'walkingSpeed': 'Gehgeschwindigkeit', 'walkingSpeedSlow': 'langsam', 'walkingSpeedNormal': 'normal', 'walkingSpeedFast': 'schnell', 'shareURL': 'Link teilen', 'copyURL': 'Link kopieren', 'ageGroup': 'Altersgruppe', 'ageGroupChild': 'Kind', 'ageGroupYoung': 'Jung', 'ageGroupAdult': 'Erwachsen', 'ageGroupSenior': 'Senior', 'now': 'Jetzt', }, 'nl': { 'access_full': 'Toegankelijk', 'access_none': 'Geen beperkingen', 'access_partial': 'Beperkt toegankelijk', 'accessibility': 'Toegankelijkheid', 'arrival': 'Aankomst', 'bus': 'Bus', 'cancelled-ride': 'Rit geannuleerd', 'changeinfo': '{} overstaptijd', 'changes': 'Overstappen', 'clearstorage': 'Lokale gegevens wissen', 'datasource': 'Gegevensbron', 'date': 'Datum', 'de': 'Duits', 'departure': 'Vertrek', 'duration': 'Duur', 'planned': 'gepland', 'dzug': 'Sneltrein', 'en': 'Engels', 'ferry': 'Veerboot', 'from': 'Van', 'graphical': 'Grafische presentatie in het verbindingsoverzicht', 'iceonly': 'ICE', 'iconly': 'IC', 'journeyoverview': 'Toon verbindingsoverzicht', 'label_earlier': 'Vroegere verbindingen', 'label_later': 'Latere verbindingen', 'lang_short': 'nl', 'language': 'Taal', 'lastjourney': 'Laatste gekozen verbinding tonen', 'longdistancetrain': 'Lange-afstandverkeer', 'nl': 'Nederlands', 'optional': '(optioneel)', 'options': 'Opties', 'platform': 'Spoor', 'products': 'Producten', 'regionaltrain': 'Regionaal verkeer', 'remarks': 'Opmerkingen', 'save': 'Opslaan', 'search': 'Zoeken', 'setfromto': 'Als Van/Naar zetten', 'settings': 'Instellingen', 'showdebug': 'Debugberichten in logboek schrijven', 'showds100': 'RIL100-afkortingen tonen (indien aanwezig)', 'station': 'Station', 'suburbantrain': 'S-trein', 'subway': 'Metro', 'swap': 'Van/Naar omkeren', 'taxi': 'Taxi', 'time': 'Tijd', 'to': 'Naar', 'tram': 'Tram', 'transferinfo': 'Reis naar {}', 'update': 'Applicatie updaten', 'via': 'Over', 'walkinfo': 'Ga naar {}', 'walkinfo_meters': 'Ga naar {} (ong. {} meter)', 'load-low-to-medium': 'Niet druk', 'load-high': 'Druk', 'load-very-high': 'Zéér druk', 'load-exceptionally-high': 'Extreem druk', 'table-view': 'Tabel', 'show-prices': 'Prijzen tonen', }, 'en': { 'access_full': 'full', 'access_none': 'none', 'access_partial': 'partial', 'accessibility': 'Accessibillity', 'arrival': 'Arrival', 'bus': 'Bus', 'cancelled-ride': 'Cancelled!', 'changeinfo': '{} change duration', 'changes': 'Changes', 'clearstorage': 'Remove local data', 'datasource': 'Data source', 'date': 'Date', 'de': 'German', 'departure': 'Departure', 'duration': 'Duration', 'planned': 'planned', 'dzug': 'D-Zug', 'en': 'English', 'ferry': 'Ferry', 'from': 'From', 'graphical': 'Graphical overview for journeys', 'iceonly': 'ICE', 'iconly': 'IC', 'journeyoverview': 'Go to journeysoverview', 'label_earlier': 'Earlier connections', 'label_later': 'Later connections', 'lang_short': 'en', 'language': 'Language', 'lastjourney': 'Go to last selected journey', 'longdistancetrain': 'Long distance trains', 'nl': 'Dutch', 'optional': '(optional)', 'options': 'Options', 'platform': 'Platform', 'products': 'Products', 'regionaltrain': 'Regional trains', 'remarks': 'Remarks', 'save': 'Save', 'search': 'Search', 'setfromto': 'Set as from/to', 'settings': 'Settings', 'showdebug': 'Write debug messages to log', 'showds100': 'Show DS100 (if available)', 'station': 'Station', 'suburbantrain': 'Suburban Trains', 'subway': 'Subway', 'swap': 'Swap from/to', 'taxi': 'Taxi', 'time': 'Time', 'to': 'To', 'tram': 'Tram', 'transferinfo': 'Travel to {}', 'update': 'Update application', 'via': 'Via', 'walkinfo': 'Walk to {}', 'walkinfo_meters': 'Walk to {} (apprx. {} meters)', 'load-low-to-medium': 'Low to medium load', 'load-high': 'High load', 'load-very-high': 'Very high load', 'load-exceptionally-high': 'Exceptionally high load', 'table-view': 'Table', 'canvas-view': 'Canvas', 'show-prices': 'Show prices', 'price': 'Price', 'back': 'Back', 'reload': 'Refresh data', 'combineDateTime': 'Use combined DateTime-input', 'titleSetDateTimeNow': 'Set Date & Time to now', 'titleBikeFriendly': 'Bicycle transport possible', 'loyaltyCard': 'Discount Card', 'loyaltyCardNone': 'No discount card', 'class': 'Class', 'titleNoTransfers': 'only direct connections', 'lastSelectedJourney': 'Last selected Journey', 'walkingSpeed': 'Walking speed', 'walkingSpeedSlow': 'slow', 'walkingSpeedNormal': 'normal', 'walkingSpeedFast': 'fast', 'shareURL': 'Share URL', 'copyURL': 'Copy URL', 'ageGroup': 'Age group', 'ageGroupChild': 'Child', 'ageGroupYoung': 'Young', 'ageGroupAdult': 'Adult', 'ageGroupSenior': 'Senior', 'now': 'Now', } };