diff --git a/src/lang/ca.json b/src/lang/ca.json
new file mode 100644
index 00000000..d1e88926
--- /dev/null
+++ b/src/lang/ca.json
@@ -0,0 +1,418 @@
+{
+ "app.callsign": "Clica el mapa per definir DX • 73 de {{callsign}}",
+ "app.donate.paypal": "Donar via PayPal",
+ "app.dxCluster.shortTitle": "Clúster",
+ "app.dxCluster.spotsCount": "{{count}} spots",
+ "app.dxCluster.title": "Clúster DX",
+ "app.dxLocation.beamDir": "Direcció del feix:",
+ "app.dxLocation.deTitle": "📍 DE - LA TEVA UBICACIÓ",
+ "app.dxLocation.dxTitle": "📍 DX - OBJECTIU",
+ "app.dxLocation.lp": "LP:",
+ "app.dxLocation.sp": "SP:",
+ "app.dxLock.clickToSet": "Clica el mapa per definir DX",
+ "app.dxLock.lockShort": "Bloquejar posició DX",
+ "app.dxLock.lockTooltip": "Bloquejar posició DX (evitar clics al mapa)",
+ "app.dxLock.locked": "🔒 DX bloquejat",
+ "app.dxLock.lockedShort": "DX bloquejat",
+ "app.dxLock.unlockShort": "Desbloquejar posició DX",
+ "app.dxLock.unlockTooltip": "Desbloquejar posició DX (permetre clics al mapa)",
+ "app.dxLock.unlocked": "🔓 DX desbloquejat",
+ "app.dxNews.pauseTooltip": "Clica per pausar",
+ "app.dxNews.resumeTooltip": "Clica per reprendre",
+ "app.legend.moon": "Lluna",
+ "app.legend.sun": "Sol",
+ "app.liveSpots.ofGridLastMinutes": "de {{grid}} - {{minutes}} min",
+ "app.liveSpots.title": "Spots en viu",
+ "app.onAir.receiving": "RX",
+ "app.onAir.standby": "ESPERA",
+ "app.onAir.transmitting": "TX",
+ "app.propagation.luf": "LUF",
+ "app.propagation.muf": "MUF",
+ "app.rigControl.connected": "Connectat",
+ "app.rigControl.disabled": "Desactivat",
+ "app.rigControl.disconnected": "Desconnectat",
+ "app.rigControl.error.daemon": "Dimoni no disponible",
+ "app.rigControl.ptt": "PTT",
+ "app.rigControl.set": "Fixar",
+ "app.rigControl.setFreqPlaceholder": "Freq (MHz)",
+ "app.rigControl.title": "Control de Ràdio",
+ "app.settings": "⚙ Configuració",
+ "app.settings.click": "Clica per obrir la configuració",
+ "app.settings.title": "Configuració",
+ "app.solar.kpShort": "K",
+ "app.solar.last30Days": "-30 dies",
+ "app.solar.last30DaysPlus7": "-30 dies +7",
+ "app.solar.sfiShort": "SFI",
+ "app.solar.solarFlux": "Flux solar de 10,7 cm",
+ "app.solar.ssnShort": "SSN",
+ "app.solar.sunspotNumber": "Nombre de taques solars",
+ "app.spaceWeather.aurora": "Aurora",
+ "app.spaceWeather.bz": "Bz",
+ "app.spaceWeather.kp": "Kp",
+ "app.spaceWeather.xray": "Raigs X",
+ "app.time.locShort": "LOC",
+ "app.time.local": "Local",
+ "app.time.toggleFormat": "Clica per format {{format}}",
+ "app.time.utc": "UTC",
+ "app.units.mhz": "MHz",
+ "app.update.confirm": "Iniciar l’actualització ara? El servidor es reiniciarà en finalitzar.",
+ "app.update.failed": "L’actualització ha fallat: {{error}}",
+ "app.update.failedToStart": "No s’ha pogut iniciar l’actualització",
+ "app.update.started": "Actualització iniciada. La pàgina es recarregarà després que el servidor es reiniciï.",
+ "app.update.unknownError": "Error desconegut",
+ "app.uptime": "En línia {{uptime}} – {{version}}",
+ "band.conditions": "⌇ CONDICIONS DE BANDA",
+ "band.conditions.fair": "REGULAR",
+ "band.conditions.good": "BONA",
+ "band.conditions.poor": "DOLENTA",
+ "cancel": "Cancel·lar",
+ "contest.panel.calendar": "Calendari de Concursos WA7BNM",
+ "contest.panel.live": "🔴 {{liveCount}} EN VIU",
+ "contest.panel.no.contests": "No hi ha concursos propers",
+ "contest.panel.time.live.hoursMinutes": "{{hours}}h {{minutes}}m restants",
+ "contest.panel.time.live.minutes": "{{minutes}}m restants",
+ "contest.panel.time.startsIn": "Comença en {{hours}}h",
+ "contest.panel.title": "⊛ CONCURSOS",
+
+ "dxClusterPanel.filterTooltip": "Filtrar spots DX per banda, mode o continent",
+ "dxClusterPanel.filtersButton": "Filtres",
+ "dxClusterPanel.live": "EN VIU",
+ "dxClusterPanel.mapToggleHide": "Amagar spots DX al mapa",
+ "dxClusterPanel.mapToggleOff": "OFF",
+ "dxClusterPanel.mapToggleOn": "ON",
+ "dxClusterPanel.mapToggleShow": "Mostrar spots DX al mapa",
+ "dxClusterPanel.noSpots": "No hi ha spots disponibles",
+ "dxClusterPanel.noSpotsFiltered": "Cap spot coincideix amb els filtres",
+ "dxClusterPanel.quickSearch": "Cerca ràpida...",
+ "dxClusterPanel.relativeTime": "fa {{minutes}}m ({{time}})",
+ "dxClusterPanel.spotter": "de {{spotter}}",
+ "dxClusterPanel.title": "CLÚSTER DX",
+
+ "plugins.layers.aurora.description": "Predicció de probabilitat d’aurores NOAA OVATION (30 min)",
+ "plugins.layers.aurora.name": "Predicció d’aurores",
+
+ "plugins.layers.earthquakes.description": "Dades sísmiques en viu de l’USGS (M2.5+ de les últimes 24 hores)",
+ "plugins.layers.earthquakes.name": "Terratrèmols",
+ "plugins.layers.earthquakes.viewDetails": "Veure detalls →",
+
+ "plugins.layers.floods.description": "Inundacions i tempestes severes actives arreu del món via NASA EONET",
+ "plugins.layers.floods.name": "Inundacions i Tempestes",
+
+ "plugins.layers.grayline.description": "Terminador dia/nit amb zones de crepuscle",
+ "plugins.layers.grayline.enhancedDx": "Zona DX millorada",
+ "plugins.layers.grayline.name": "Línia Grisa",
+ "plugins.layers.grayline.showTwilight": "Mostrar zones de crepuscle",
+ "plugins.layers.grayline.title": "Línia Grisa",
+ "plugins.layers.grayline.utcTime": "HORA UTC",
+
+ "plugins.layers.lightning.avgIntensity": "Intensitat mitjana:",
+ "plugins.layers.lightning.description": "Llamps en temps real arreu del món (30 min)",
+ "plugins.layers.lightning.fresh": "Recent (<1 min):",
+ "plugins.layers.lightning.name": "Activitat elèctrica",
+ "plugins.layers.lightning.negative": "Negatius:",
+ "plugins.layers.lightning.positive": "Positius:",
+ "plugins.layers.lightning.recent": "Fa poc (<5 min):",
+ "plugins.layers.lightning.title": "Activitat elèctrica",
+ "plugins.layers.lightning.total": "Total (30 min):",
+ "plugins.layers.lightning.updates": "Actualitzat cada 30s",
+
+ "plugins.layers.rbn.allBands": "Totes les bandes",
+ "plugins.layers.rbn.avgSnr": "SNR mitjà",
+ "plugins.layers.rbn.band": "Banda:",
+ "plugins.layers.rbn.dataSource": "Dades: reversebeacon.net | Actualització: 10s",
+ "plugins.layers.rbn.description": "Dades de spots RBN en temps real per al teu indicatiu",
+ "plugins.layers.rbn.minSnr": "SNR mínim:",
+ "plugins.layers.rbn.name": "Reverse Beacon Network",
+ "plugins.layers.rbn.showPaths": "Mostrar trajectòries",
+ "plugins.layers.rbn.skimmers": "Skimmers",
+ "plugins.layers.rbn.spots": "Spots",
+ "plugins.layers.rbn.time": "Hora:",
+ "plugins.layers.rbn.title": "RBN",
+ "plugins.layers.wildfires.description": "Incendis forestals actius arreu del món via detecció satel·lital NASA EONET",
+ "plugins.layers.wildfires.name": "Incendis forestals",
+
+ "plugins.layers.wspr.allBands": "Totes les bandes",
+ "plugins.layers.wspr.animation": "Animació",
+ "plugins.layers.wspr.band": "Banda:",
+ "plugins.layers.wspr.bandActivity": "Activitat de banda",
+ "plugins.layers.wspr.bestDxPaths": "Millors trajectòries DX",
+ "plugins.layers.wspr.description": "Trajectòries de propagació WSPR i informes de senyal",
+ "plugins.layers.wspr.excellent": "Excel·lent (> 5 dB)",
+ "plugins.layers.wspr.filters": "Filtres",
+ "plugins.layers.wspr.good": "Bona (0 a 5 dB)",
+ "plugins.layers.wspr.heatmapOpacity": "Opacitat del mapa de calor:",
+ "plugins.layers.wspr.hour": "1 hora",
+ "plugins.layers.wspr.hours": "{{hours}} hores",
+ "plugins.layers.wspr.initializing": "Inicialitzant...",
+ "plugins.layers.wspr.lastMinutes": "Últims {{minutes}} min",
+ "plugins.layers.wspr.loading": "Carregant...",
+ "plugins.layers.wspr.minSnr": "SNR mínim:",
+ "plugins.layers.wspr.minutes": "{{minutes}} minuts",
+ "plugins.layers.wspr.moderate": "Moderada (-10 a 0 dB)",
+ "plugins.layers.wspr.name": "WSPR",
+ "plugins.layers.wspr.pathOpacity": "Opacitat de la trajectòria:",
+ "plugins.layers.wspr.paths": "Trajectòries:",
+ "plugins.layers.wspr.propScore": "Puntuació de propagació",
+ "plugins.layers.wspr.rxStations": "Estacions RX:",
+ "plugins.layers.wspr.showHeatmap": "Mostrar mapa de calor",
+ "plugins.layers.wspr.signalStrength": "Intensitat del senyal",
+ "plugins.layers.wspr.timeWindow": "Finestra de temps:",
+ "plugins.layers.wspr.title": "Activitat WSPR",
+ "plugins.layers.wspr.total": "Total:",
+ "plugins.layers.wspr.txStations": "Estacions TX:",
+ "plugins.layers.wspr.veryWeak": "Molt dèbil (< -20 dB)",
+ "plugins.layers.wspr.weak": "Dèbil (-20 a -10 dB)",
+
+ "plugins.layers.wxradar.attribution": "Dades meteorològiques © Iowa State University Mesonet",
+ "plugins.layers.wxradar.description": "Superposició del radar meteorològic NEXRAD per a Amèrica del Nord",
+ "plugins.layers.wxradar.name": "Radar meteorològic",
+
+ "propagation.day": "Dia",
+ "propagation.estimated": "estimat",
+ "propagation.geomag": "Geomag",
+ "propagation.heatmap.tooltip.stoplight": "Canviar a colors de semàfor (verd = bo)",
+ "propagation.heatmap.tooltip.voacap": "Canviar a colors de mapa de calor VOACAP (vermell = bo)",
+ "propagation.loading": "Carregant prediccions...",
+ "propagation.night": "Nit",
+ "propagation.noise": "Soroll",
+ "propagation.now": "ara",
+ "propagation.source.general": "Condicions generals per a totes les rutes",
+ "propagation.vhf.closed": "Tancat",
+ "propagation.vhf.title": "Condicions VHF",
+ "propagation.view.bands": "◫ bandes",
+ "propagation.view.bars": "▦ barres",
+ "propagation.view.chart": "▤ gràfic",
+ "propagation.view.toggle": "clica per canviar",
+ "pskReporterPanel.map.hide": "Amagar spots al mapa",
+ "pskReporterPanel.map.show": "Mostrar spots al mapa",
+
+ "pskReporterPanel.mode.pskTooltip": "Informes de recepció per Internet via PSKReporter.info",
+ "pskReporterPanel.mode.wsjtxTooltip": "Decodificacions WSJT-X locals via relé UDP",
+
+ "pskReporterPanel.psk.connecting": "Connectant...",
+ "pskReporterPanel.psk.connectionFailed": "Connexió fallida, cal refrescar?",
+ "pskReporterPanel.psk.filterTooltip": "Filtrar spots per banda, mode o quadrícula",
+ "pskReporterPanel.psk.noSpotsFiltered": "Cap spot coincideix amb els filtres",
+ "pskReporterPanel.psk.noStationsHeard": "Encara no s’han escoltat estacions",
+ "pskReporterPanel.psk.refreshTooltip": "Reconnectar a PSKReporter",
+ "pskReporterPanel.psk.setCallsign": "Configura el teu indicatiu a Configuració per veure informes",
+ "pskReporterPanel.psk.waitingForSpots": "Esperant spots... (TX per veure informes)",
+
+ "pskReporterPanel.tabs.heard": "Escoltat ({{count}})",
+ "pskReporterPanel.tabs.heardTooltip": "▲ Estacions que escolten el teu senyal",
+ "pskReporterPanel.tabs.hearing": "Escoltant ({{count}})",
+ "pskReporterPanel.tabs.hearingTooltip": "▼ Estacions que escoltes",
+
+ "pskReporterPanel.time.hours": "{{hours}}h",
+ "pskReporterPanel.time.minutes": "{{minutes}}m",
+ "pskReporterPanel.time.now": "ara",
+
+ "pskReporterPanel.wsjtx.decodes": "Decodificacions ({{count}})",
+ "pskReporterPanel.wsjtx.decodingTooltip": "Decodificacions WSJT-X en viu",
+ "pskReporterPanel.wsjtx.downloadRelay": "Descarrega l’agent relé per al teu PC:",
+ "pskReporterPanel.wsjtx.filterAll": "Totes les decodificacions",
+ "pskReporterPanel.wsjtx.filterCq": "Només CQ",
+ "pskReporterPanel.wsjtx.listening": "Escoltant...",
+ "pskReporterPanel.wsjtx.noDecodesFiltered": "Cap decodificació coincideix amb el filtre",
+ "pskReporterPanel.wsjtx.noQsos": "Encara no hi ha QSOs registrats",
+
+ "pskReporterPanel.wsjtx.platformLinux": "🐧 Linux",
+ "pskReporterPanel.wsjtx.platformMac": "🍎 Mac",
+ "pskReporterPanel.wsjtx.platformWindows": "🪟 Windows",
+
+ "pskReporterPanel.wsjtx.qsos": "QSOs ({{count}})",
+ "pskReporterPanel.wsjtx.qsosTooltip": "QSOs registrats des de WSJT-X",
+
+ "pskReporterPanel.wsjtx.relayConnected": "Relé connectat",
+ "pskReporterPanel.wsjtx.relayHint": "Les decodificacions WSJT-X apareixeran aquí quan l’estació estigui activa",
+ "pskReporterPanel.wsjtx.requiresNode": "Requereix Node.js 🟢 Executa l’script i després inicia WSJT-X",
+
+ "pskReporterPanel.wsjtx.udpAddress": "Adreça: 127.0.0.1 🟢 Port: {{port}}",
+ "pskReporterPanel.wsjtx.udpPath": "A WSJT-X: Settings → Reporting → UDP Server",
+ "pskReporterPanel.wsjtx.waiting": "Esperant WSJT-X...",
+ "station.settings.altitude": "Altitud (m)",
+ "station.settings.antenna": "Antena",
+ "station.settings.button.save": "Desar configuració",
+ "station.settings.button.save.confirm": "La configuració es desa al teu navegador",
+ "station.settings.callsign": "El teu indicatiu",
+ "station.settings.describe": "Introdueix el teu indicatiu i quadrícula per començar. La configuració es desarà al navegador.",
+ "station.settings.dx.custom.callsign": "El teu indicatiu ({{callsign}}) s’utilitzarà per iniciar sessió.",
+ "station.settings.dx.custom.commonPorts": "Ports habituals: 7300, 7373, 8000, 23.",
+ "station.settings.dx.custom.host": "Host",
+ "station.settings.dx.custom.host.placeholder": "p. ex. dxspider.example.com",
+ "station.settings.dx.custom.option": "Servidor Telnet personalitzat",
+ "station.settings.dx.custom.port": "Port",
+ "station.settings.dx.custom.port.placeholder": "7300",
+ "station.settings.dx.custom.title": "📡 Servidor Telnet personalitzat",
+ "station.settings.dx.custom.warning": "⚠️ El telnet personalitzat requereix desplegament autoallotjat (Pi/local). L’allotjament al núvol (Railway/openhamclock.app) bloqueja el telnet sortint.",
+ "station.settings.dx.describe": "→ Feed DX Spider en temps real mitjançant el nostre servei proxy dedicat",
+ "station.settings.dx.option1": "⭐ Proxy DX Spider (recomanat)",
+ "station.settings.dx.option2": "Clúster HamQTH",
+ "station.settings.dx.option3": "DXWatch",
+ "station.settings.dx.option4": "Auto (provar totes les fonts)",
+ "station.settings.dx.title": "Font del Clúster DX",
+
+ "station.settings.headerSize": "Mida del teu indicatiu",
+
+ "station.settings.language": "Idioma",
+ "station.settings.language.de": "Deutsch",
+ "station.settings.language.en": "English",
+ "station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
+ "station.settings.language.fr": "Français",
+ "station.settings.language.it": "Italiano",
+ "station.settings.language.ja": "日本語",
+ "station.settings.language.ko": "한국어",
+ "station.settings.language.nl": "Nederlands",
+ "station.settings.language.pt": "Português",
+ "station.settings.language.sl": "Slovenščina",
+ "station.settings.language.ru": "Русский",
+ "station.settings.language.ka": "ქართული",
+ "station.settings.language.ms": "Melayu",
+
+ "station.settings.latitude": "Latitud",
+ "station.settings.longitude": "Longitud",
+ "station.settings.locator": "Quadrícula (o introdueix Lat/Lon a sota)",
+ "station.settings.locator.placeholder": "FN20nc",
+
+ "station.settings.layers.noLayers": "No hi ha capes de mapa disponibles",
+ "station.settings.layers.opacity": "Opacitat",
+ "station.settings.layers.title": "Capes del mapa",
+
+ "station.settings.layout": "Disseny",
+ "station.settings.layout.classic": "Clàssic",
+ "station.settings.layout.classic.describe": "→ Disseny estil HamClock original",
+ "station.settings.layout.compact": "Compacte",
+ "station.settings.layout.compact.describe": "→ Disseny centrat en dades per a pantalles 4:3 o més petites",
+ "station.settings.layout.dockable": "Acoblable",
+ "station.settings.layout.dockable.describe": "Panells redimensionables i arrossegables amb pestanyes",
+ "station.settings.layout.modern": "Modern",
+ "station.settings.layout.modern.describe": "→ Disseny modern amb graella adaptable",
+ "station.settings.layout.reset.button": "Restablir disseny",
+ "station.settings.layout.reset.confirm": "Restablir el disseny dels panells al predeterminat?",
+ "station.settings.layout.tablet": "Tauleta",
+ "station.settings.layout.tablet.describe": "→ Optimitzat per a pantalles amples de 7–10\" (16:9)",
+
+ "station.settings.mouseZoom": "Sensibilitat de la roda del ratolí",
+ "station.settings.mouseZoom.describeMax": "Més",
+ "station.settings.mouseZoom.describeMin": "Menys",
+
+ "station.settings.power": "Potència (W)",
+
+ "station.settings.rigControl.autoMode": "Mode automàtic",
+ "station.settings.rigControl.autoMode.hint": "Canvia a CW/SSB/Dades segons el pla de banda en sintonitzar",
+ "station.settings.rigControl.enabled": "Habilitar integració Hamlib",
+ "station.settings.rigControl.host": "Host del dimoni",
+ "station.settings.rigControl.port": "Port del dimoni",
+ "station.settings.rigControl.title": "📻 Control de ràdio",
+ "station.settings.rigControl.tuneEnabled": "Clica per sintonitzar",
+ "station.settings.rigControl.tuneEnabled.hint": "Fer clic als spots sintonitza la ràdio",
+
+ "station.settings.satellites.belowHorizon": "✗ Sota l’horitzó",
+ "station.settings.satellites.clear": "Netejar",
+ "station.settings.satellites.selectAll": "Seleccionar-ho tot",
+ "station.settings.satellites.selectedCount": "{{count}} satèl·lit(s) seleccionat(s)",
+ "station.settings.satellites.showAll": "Mostrant tots els satèl·lits (sense filtre)",
+ "station.settings.satellites.visible": "✓ Visible",
+
+ "station.settings.tab1.title": "⌇ Estació",
+ "station.settings.tab2.title": "⊞ Capes del mapa",
+ "station.settings.tab3.title": "⛊ Satèl·lits",
+
+ "station.settings.theme": "TEMA",
+ "station.settings.theme.dark": "Fosc",
+ "station.settings.theme.dark.describe": "→ Tema fosc modern (predeterminat)",
+ "station.settings.theme.legacy": "Legacy",
+ "station.settings.theme.legacy.describe": "→ Estil terminal CRT verd",
+ "station.settings.theme.light": "Clar",
+ "station.settings.theme.light.describe": "→ Tema clar per a ús diürn",
+ "station.settings.theme.retro": "Retro",
+ "station.settings.theme.retro.describe": "→ Estil retro Windows anys 90",
+
+ "station.settings.timezone": "Zona horària",
+ "station.settings.timezone.auto": "Auto (predeterminat del navegador)",
+ "station.settings.timezone.currentDefault": " S’està usant el predeterminat del navegador.",
+ "station.settings.timezone.describe": "Ajusta-ho si l’hora local es mostra incorrectament (p. ex. igual que UTC). Navegadors de privacitat com Librewolf poden falsejar la zona horària.",
+
+ "station.settings.timezone.group.africa": "Àfrica",
+ "station.settings.timezone.group.asiaPacific": "Àsia i Pacífic",
+ "station.settings.timezone.group.europe": "Europa",
+ "station.settings.timezone.group.northAmerica": "Amèrica del Nord",
+ "station.settings.timezone.group.other": "Altres",
+ "station.settings.timezone.group.southAmerica": "Amèrica del Sud",
+
+ "station.settings.tip.env": "💡 Consell: Per a una configuració permanent, copia .env.example a .env i configura CALLSIGN i LOCATOR",
+ "station.settings.title": "⚙ Configuració de l’estació",
+ "station.settings.useLocation": "📍 Usar la meva ubicació actual",
+ "station.settings.useLocation.error1": "No s’ha pogut obtenir la ubicació. Introdueix-la manualment.",
+ "station.settings.useLocation.error2": "La geolocalització no és compatible amb el teu navegador.",
+ "station.settings.welcome": "👋 Benvingut/da a OpenHamClock!",
+
+ "weather.clouds": "☁️ Núvols",
+ "weather.condition.0": "Serè",
+ "weather.condition.1": "Majoritàriament serè",
+ "weather.condition.2": "Parcialment ennuvolat",
+ "weather.condition.3": "Ennuvolat",
+ "weather.condition.45": "Boira",
+ "weather.condition.48": "Boira gebrada",
+ "weather.condition.51": "Plugim lleu",
+ "weather.condition.53": "Plugim moderat",
+ "weather.condition.55": "Plugim intens",
+ "weather.condition.56": "Plugim gebrat lleu",
+ "weather.condition.57": "Plugim gebrat intens",
+ "weather.condition.61": "Pluja lleu",
+ "weather.condition.63": "Pluja moderada",
+ "weather.condition.65": "Pluja intensa",
+ "weather.condition.66": "Pluja gebrada lleu",
+ "weather.condition.67": "Pluja gebrada intensa",
+ "weather.condition.71": "Neu lleu",
+ "weather.condition.73": "Neu moderada",
+ "weather.condition.75": "Neu intensa",
+ "weather.condition.77": "Calamarsa",
+ "weather.condition.80": "Ruixats lleus",
+ "weather.condition.81": "Ruixats moderats",
+ "weather.condition.82": "Ruixats intensos",
+ "weather.condition.85": "Ruixats de neu lleus",
+ "weather.condition.86": "Ruixats de neu intensos",
+ "weather.condition.95": "Tempesta",
+ "weather.condition.96": "Tempesta amb calamarsa lleu",
+ "weather.condition.99": "Tempesta amb calamarsa intensa",
+
+ "weather.dewPoint": "🌡️ Punt de rosada",
+ "weather.error.busy": "Servei meteorològic ocupat",
+ "weather.error.loading": "Carregant el temps...",
+ "weather.error.retry": " · reintent en {{seconds}}s",
+ "weather.error.unavailable": "Temps no disponible",
+ "weather.feelsLike": "Sensació {{temp}}",
+ "weather.forecast": "PRONÒSTIC",
+ "weather.gusts": "🌬️ Ràfegues",
+ "weather.hpa": "hPa",
+ "weather.humidity": "💧 Humitat",
+ "weather.pressure": "🔵 Pressió",
+ "weather.switchUnit": "Canviar a {{unit}}",
+ "weather.today": "Avui",
+ "weather.unit.km": "km",
+ "weather.unit.kmh": "km/h",
+ "weather.unit.mi": "mi",
+ "weather.unit.mph": "mph",
+ "weather.uv": "☀️ UV",
+ "weather.visibility": "👁️ Vis.",
+ "weather.wind": "💨 Vent",
+ "weather.wind.E": "E",
+ "weather.wind.ENE": "ENE",
+ "weather.wind.ESE": "ESE",
+ "weather.wind.N": "N",
+ "weather.wind.NE": "NE",
+ "weather.wind.NNE": "NNE",
+ "weather.wind.NNW": "NNO",
+ "weather.wind.NW": "NO",
+ "weather.wind.S": "S",
+ "weather.wind.SE": "SE",
+ "weather.wind.SSE": "SSE",
+ "weather.wind.SSW": "SSO",
+ "weather.wind.SW": "SO",
+ "weather.wind.W": "O",
+ "weather.wind.WNW": "ONO",
+ "weather.wind.WSW": "OSO"
+}
+
diff --git a/src/lang/de.json b/src/lang/de.json
index 059ab391..282c0de6 100644
--- a/src/lang/de.json
+++ b/src/lang/de.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Deutsch",
"station.settings.language.en": "English",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Français",
"station.settings.language.it": "Italiano",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/en.json b/src/lang/en.json
index 6f40487e..3b5e7106 100644
--- a/src/lang/en.json
+++ b/src/lang/en.json
@@ -17,6 +17,7 @@
"station.settings.language.en": "English",
"station.settings.language.fr": "Français",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.de": "Deutsch",
"station.settings.language.pt": "Português",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/es.json b/src/lang/es.json
index ea4cfc5a..3b69728e 100644
--- a/src/lang/es.json
+++ b/src/lang/es.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Deutsch",
"station.settings.language.en": "English",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Français",
"station.settings.language.it": "Italiano",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/fr.json b/src/lang/fr.json
index 14a86013..c387444c 100644
--- a/src/lang/fr.json
+++ b/src/lang/fr.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Deutsch",
"station.settings.language.en": "English",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Français",
"station.settings.language.it": "Italiano",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/i18n.js b/src/lang/i18n.js
index 6323b883..b84557b2 100644
--- a/src/lang/i18n.js
+++ b/src/lang/i18n.js
@@ -5,6 +5,7 @@ import { initReactI18next } from 'react-i18next';
import translationEN from './en.json';
import translationFR from './fr.json';
import translationES from './es.json';
+import translationCA from './ca.json';
import translationDE from './de.json';
import translationPT from './pt.json';
import translationJA from './ja.json';
@@ -20,6 +21,7 @@ export const LANGUAGES = [
{ code: 'en', name: 'English', flag: '🇬🇧' },
{ code: 'fr', name: 'Français', flag: '🇫🇷' },
{ code: 'es', name: 'Español', flag: '🇪🇸' },
+ { code: 'ca', name: 'Catala', flag: '🇦🇩' },
{ code: 'de', name: 'Deutsch', flag: '🇩🇪' },
{ code: 'nl', name: 'Nederlands', flag: '🇳🇱' },
{ code: 'pt', name: 'Português', flag: '🇧🇷' },
@@ -36,6 +38,7 @@ export const resources = {
en: { translation: translationEN },
fr: { translation: translationFR },
es: { translation: translationES },
+ ca: { translation: translationCA },
de: { translation: translationDE },
nl: { translation: translationNL },
pt: { translation: translationPT },
diff --git a/src/lang/it.json b/src/lang/it.json
index 8bdcfc79..29f13740 100644
--- a/src/lang/it.json
+++ b/src/lang/it.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Deutsch",
"station.settings.language.en": "English",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Français",
"station.settings.language.it": "Italiano",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/ja.json b/src/lang/ja.json
index b7d57bc9..0bbee4fa 100644
--- a/src/lang/ja.json
+++ b/src/lang/ja.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "ドイツ語",
"station.settings.language.en": "英語",
"station.settings.language.es": "スペイン語",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "フランス語",
"station.settings.language.it": "イタリア語",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/ka.json b/src/lang/ka.json
index c575388f..23dd652c 100644
--- a/src/lang/ka.json
+++ b/src/lang/ka.json
@@ -17,6 +17,7 @@
"station.settings.language.en": "English",
"station.settings.language.fr": "Français",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.de": "Deutsch",
"station.settings.language.pt": "Português",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/ko.json b/src/lang/ko.json
index 315cadc3..1bb21745 100644
--- a/src/lang/ko.json
+++ b/src/lang/ko.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "독일어",
"station.settings.language.en": "영어",
"station.settings.language.es": "스페인어",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "프랑스어",
"station.settings.language.it": "이탈리아어",
"station.settings.language.ja": "일본어",
diff --git a/src/lang/ms.json b/src/lang/ms.json
index 5def2f9d..3a5d4ce6 100644
--- a/src/lang/ms.json
+++ b/src/lang/ms.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Deutsch",
"station.settings.language.en": "English",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Français",
"station.settings.language.it": "Italiano",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/nl.json b/src/lang/nl.json
index 171de945..1bfeae41 100644
--- a/src/lang/nl.json
+++ b/src/lang/nl.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Duits",
"station.settings.language.en": "Engels",
"station.settings.language.es": "Spaans",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Frans",
"station.settings.language.it": "Italiaans",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/pt.json b/src/lang/pt.json
index 5af8a874..aa1aa459 100644
--- a/src/lang/pt.json
+++ b/src/lang/pt.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Deutsch",
"station.settings.language.en": "English",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Français",
"station.settings.language.it": "Italiano",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/ru.json b/src/lang/ru.json
index 159d1a37..a4983c72 100644
--- a/src/lang/ru.json
+++ b/src/lang/ru.json
@@ -17,6 +17,7 @@
"station.settings.language.en": "English",
"station.settings.language.fr": "Français",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.de": "Deutsch",
"station.settings.language.pt": "Português",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/sl.json b/src/lang/sl.json
index b9079a12..2c7f6b69 100644
--- a/src/lang/sl.json
+++ b/src/lang/sl.json
@@ -237,6 +237,7 @@
"station.settings.language.de": "Deutsch",
"station.settings.language.en": "English",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.fr": "Français",
"station.settings.language.it": "Italiano",
"station.settings.language.ja": "日本語",
diff --git a/src/lang/zh.json b/src/lang/zh.json
index 169fb11d..88574bd8 100644
--- a/src/lang/zh.json
+++ b/src/lang/zh.json
@@ -17,6 +17,7 @@
"station.settings.language.en": "English",
"station.settings.language.fr": "Français",
"station.settings.language.es": "Español",
+ "station.settings.language.ca": "Catala",
"station.settings.language.de": "Deutsch",
"station.settings.language.pt": "Português",
"station.settings.language.ja": "日本語",