Files
meshtastic-web/apps/web/public/i18n/locales/fi-FI/deviceConfig.json
T
Ben MeadorsandGitHub bbe9a0d5cd feat(protobufs): sync to firmware-current and consume workspace package (#1097)
* feat(protobufs): sync to firmware-current and consume workspace package

Sync the vendored .proto sources to firmware-current (v2.7.25+48), regenerate the v2 TS bindings, and consume the workspace @meshtastic/protobufs (workspace:*) in place of the stale JSR 2.7.20 — finishing the monorepo migration (core was already workspace:*).

Includes the one required breaking-change fix: admin nodedb_reset changed int32 to bool, so resetNodes() now sends value: true.

* build(protobufs): vendor generated bindings for workspace consumers

The package is consumed via workspace:* — its exports point at the TS source, which imports ./dist/meshtastic/*_pb.ts — so the generated output must exist at build time. CI builds web/core with no codegen step and the runners have no buf CLI, so the bindings are vendored here (kept gitignored; lint/format skip them). Regenerate with: pnpm --filter @meshtastic/protobufs gen

* fix(protobufs): clean script removes the actual generated output dir

buf writes bindings to packages/ts/dist, but clean was removing a non-existent root dist — so it never cleaned stale output. Addresses Copilot review feedback.

* refactor: move web app packages/web -> apps/web

Aligns the web app with the apps/web layout (matching the Vercel web-test Root Directory and the SDK-migration direction). Pure directory move plus root config: pnpm-workspace (adds apps/*), vitest projects, root tsconfig reference, and the pr/release-web/nightly workflows. vercel.json moved with the app. Build + 36 validation tests green.

* feat: config fields, module pages, key verification, telemetry capture

Incorporates the firmware-current feature work onto the protobuf foundation: new config fields (Display message bubbles; LoRa fem_lna_mode + serial_hal_only; Telemetry air_quality_screen_enabled); 4 new ModuleConfig pages (TrafficManagement, StatusMessage, TAK, RemoteHardware); the manual Key Verification flow (sendKeyVerification + ClientNotificationDialog stages + Verify Key button); live telemetry capture (nodeDB addDeviceMetrics) and admin hardening (toggleMutedNode, graceful PortNum default); plus the sdk-preview ConfigEditor demo and store/config tests. Build + lint + format + 131 tests green.

* chore: drop #1062 (unsaved-change-detection) to match upstream revert

#1062 was merged to main by accident (per @danditomaso) and is being reverted. Reverse-applied its diff here via 3-way so #1097 stays consistent with where main is headed, while keeping the feature changes layered on the same files (deviceStore/changeRegistry). Build + 131 tests + lint + format green.

* fix(nodes): clean up SNR display in node table and map popup

SNR is a ratio measured in dB, not dBm (which is absolute power); the
node table and map popup both mislabeled it and crammed three values
together: '0dBm/50%/50raw'. The trailing '%/raw' pair was the same
heuristic ((snr+10)*5) shown twice — once clamped, once not.

Render SNR in dB rounded to one decimal, color-coded by a 0-100%
signal-quality heuristic (green/yellow/red), with the quality percentage
as a muted secondary. Drop the redundant raw value. Adds unit.db; this
matches the existing SNRTooltip, which already renders dB.
2026-06-15 13:23:28 -05:00

429 lines
14 KiB
JSON

{
"page": {
"title": "Asetukset",
"tabBluetooth": "Bluetooth",
"tabDevice": "Laite",
"tabDisplay": "Näyttö",
"tabLora": "LoRa",
"tabNetwork": "Verkko",
"tabPosition": "Sijainti",
"tabPower": "Virta",
"tabSecurity": "Turvallisuus"
},
"sidebar": {
"label": "Moduulit"
},
"device": {
"title": "Laitteen asetukset",
"description": "Laitteen asetukset",
"buttonPin": {
"description": "Painikkeen pinnin ohitus",
"label": "Painikkeen pinni"
},
"buzzerPin": {
"description": "Summerin pinnin ohitus",
"label": "Summerin pinni"
},
"disableTripleClick": {
"description": "Poista kolmoisklikkaus käytöstä",
"label": "Poista kolmoisklikkaus käytöstä"
},
"doubleTapAsButtonPress": {
"description": "Käsittele kaksoisnapautus painikkeen painalluksena",
"label": "Kaksoisnapautus painikkeen painalluksena"
},
"ledHeartbeatDisabled": {
"description": "Poista ledin vilkkuminen käytöstä",
"label": "Ledin vilkkuminen poistettu käytöstä"
},
"nodeInfoBroadcastInterval": {
"description": "Kuinka usein laitteen tiedot lähetetään verkkoon",
"label": "Laitteen tietojen lähetyksen aikaväli"
},
"posixTimezone": {
"description": "POSIX-aikavyöhykkeen merkkijono laitetta varten",
"label": "POSIX-aikavyöhyke"
},
"rebroadcastMode": {
"description": "Kuinka uudelleenlähetyksiä käsitellään",
"label": "Uudelleenlähetyksen tila"
},
"role": {
"description": "Mikä rooli laitteella on mesh-verkossa",
"label": "Rooli"
}
},
"bluetooth": {
"title": "Bluetooth asetukset",
"description": "Bluetooth moduulin asetukset",
"note": "Huomautus: Jotkin laitteet (ESP32) eivät voi käyttää bluetoothia sekä WiFiä samanaikaisesti.",
"enabled": {
"description": "Ota Bluetooth käyttöön tai poista käytöstä",
"label": "Käytössä"
},
"pairingMode": {
"description": "PIN-koodin valinnan käyttäytyminen.",
"label": "Paritustila"
},
"pin": {
"description": "Bluetooth PIN-koodi, jota käytetään pariliitettäessä",
"label": "PIN"
}
},
"display": {
"description": "Laitteen näytön asetukset",
"title": "Näyttöasetukset",
"headingBold": {
"description": "Lihavoi otsikkoteksti",
"label": "Lihavoitu otsikko"
},
"carouselDelay": {
"description": "Kuinka nopeasti ikkunat kulkevat",
"label": "Karusellin Viive"
},
"compassNorthTop": {
"description": "Kiinnitä pohjoinen kompassin yläreunaan",
"label": "Kompassin pohjoinen ylhäällä"
},
"displayMode": {
"description": "Näytön asettelun vaihtoehdot",
"label": "Näyttötila"
},
"displayUnits": {
"description": "Näytä metriset tai imperiaaliset yksiköt",
"label": "Näyttöyksiköt"
},
"flipScreen": {
"description": "Käännä näyttöä 180 astetta",
"label": "Käännä näyttö"
},
"gpsDisplayUnits": {
"description": "Koordinaattien näyttömuoto",
"label": "GPS näyttöyksiköt"
},
"oledType": {
"description": "Laitteeseen liitetyn OLED-näytön tyyppi",
"label": "OLED-tyyppi"
},
"screenTimeout": {
"description": "Sammuta näyttö tämän ajan jälkeen",
"label": "Näytön aikakatkaisu"
},
"twelveHourClock": {
"description": "Käytä 12 tunnin kelloa",
"label": "12 tunnin kello"
},
"wakeOnTapOrMotion": {
"description": "Herätä laite napauttamalla tai liikkeestä",
"label": "Herätä napauttamalla tai liikkeellä"
}
},
"lora": {
"title": "Mesh-verkon asetukset",
"description": "LoRa-verkon asetukset",
"bandwidth": {
"description": "Kanavan kaistanleveys kHz",
"label": "Kaistanleveys"
},
"boostedRxGain": {
"description": "RX tehostettu vahvistus",
"label": "RX tehostettu vahvistus"
},
"codingRate": {
"description": "Koodausnopeuden nimittäjä",
"label": "Koodausnopeus"
},
"frequencyOffset": {
"description": "Taajuuskorjaus kalibrointivirheiden korjaamiseksi",
"label": "Taajuuspoikkeama"
},
"frequencySlot": {
"description": "LoRa-taajuuden kanavanumero",
"label": "Taajuuspaikka"
},
"hopLimit": {
"description": "Maksimimäärä hyppyjä",
"label": "Hyppyraja"
},
"ignoreMqtt": {
"description": "Älä välitä MQTT-viestejä mesh-verkon yli",
"label": "Ohita MQTT"
},
"modemPreset": {
"description": "Käytössä olevan modeemin esiasetus",
"label": "Modeemin esiasetus"
},
"okToMqtt": {
"description": "Kun asetetaan arvoksi true, tämä asetus tarkoittaa, että käyttäjä hyväksyy paketin lähettämisen MQTT:lle. Jos asetetaan arvoksi false, etälaitteita pyydetään olemaan välittämättä paketteja MQTT:lle",
"label": "MQTT päällä"
},
"overrideDutyCycle": {
"description": "Ohita käyttöaste (Duty Cycle)",
"label": "Ohita käyttöaste (Duty Cycle)"
},
"overrideFrequency": {
"description": "Käytä mukautettua taajuutta",
"label": "Mukautettu taajuus"
},
"region": {
"description": "Asettaa alueen laitteelle",
"label": "Alue"
},
"spreadingFactor": {
"description": "Ilmaisee symbolia kohden lähetettävien taajuuksien määrän",
"label": "Levennyskerroin"
},
"transmitEnabled": {
"description": "LoRa-radion lähetyksen (TX) käyttöönotto tai poiskytkentä",
"label": "Lähetys käytössä"
},
"transmitPower": {
"description": "Suurin lähetysteho",
"label": "Lähetysteho"
},
"usePreset": {
"description": "Käytä ennalta määriteltyä modeemin esiasetusta",
"label": "Käytä esiasetusta"
},
"meshSettings": {
"description": "LoRa-verkon asetukset",
"label": "Mesh-verkon asetukset"
},
"waveformSettings": {
"description": "LoRa-aaltomuodon asetukset",
"label": "Signaalimuodon asetukset"
},
"radioSettings": {
"label": "Radioasetukset",
"description": "LoRa-laitteen asetukset"
}
},
"network": {
"title": "WiFi-asetukset",
"description": "WiFi-radion asetukset",
"note": "Huomautus: Jotkin laitteet (ESP32) eivät voi käyttää sekä Bluetoothia että WiFiä samanaikaisesti.",
"addressMode": {
"description": "Osoitteen määrityksen valinta",
"label": "Osoitetila"
},
"dns": {
"description": "DNS-palvelin",
"label": "DNS"
},
"ethernetEnabled": {
"description": "Ota käyttöön tai poista käytöstä ethernet-portti",
"label": "Käytössä"
},
"gateway": {
"description": "Oletusyhdyskäytävä",
"label": "Yhdyskäytävä"
},
"ip": {
"description": "IP-osoite",
"label": "IP"
},
"psk": {
"description": "Verkon salasana",
"label": "PSK"
},
"ssid": {
"description": "Verkon nimi",
"label": "SSID"
},
"subnet": {
"description": "Aliverkon peite",
"label": "Aliverkko"
},
"wifiEnabled": {
"description": "Ota WiFi käyttöön tai poista se käytöstä",
"label": "Käytössä"
},
"meshViaUdp": {
"label": "Mesh UDP:n kautta"
},
"ntpServer": {
"label": "NTP-palvelin"
},
"rsyslogServer": {
"label": "Rsyslog-palvelin"
},
"ethernetConfigSettings": {
"description": "Ethernet-portin asetukset",
"label": "Ethernet-asetukset"
},
"ipConfigSettings": {
"description": "IP-osoitteen asetukset",
"label": "IP-osoitteen asetukset"
},
"ntpConfigSettings": {
"description": "NTP-asetukset",
"label": "NTP-asetukset"
},
"rsyslogConfigSettings": {
"description": "Rsyslog määritykset",
"label": "Rsyslog määritykset"
},
"udpConfigSettings": {
"description": "UDP-yhdeyden asetukset",
"label": "UDP-asetukset"
}
},
"position": {
"title": "Sijainnin asetukset",
"description": "Sijaintimoduulin asetukset",
"broadcastInterval": {
"description": "Kuinka usein sijainti lähetetään mesh-verkon yli",
"label": "Lähetyksen aikaväli"
},
"enablePin": {
"description": "GPS-moduulin käyttöönottopinnin korvaus",
"label": "Ota pinni käytöön"
},
"fixedPosition": {
"description": "Älä raportoi GPS-sijaintia, vaan käytä manuaalisesti määritettyä sijaintia",
"label": "Kiinteä sijainti"
},
"gpsMode": {
"description": "Määritä, onko laitteen GPS käytössä, pois päältä vai puuttuuko se kokonaan",
"label": "GSP-tila"
},
"gpsUpdateInterval": {
"description": "Kuinka usein GPS-paikannus suoritetaan",
"label": "GPS-päivitysväli"
},
"positionFlags": {
"description": "Valinnaiset kentät, jotka voidaan sisällyttää sijaintiviesteihin. Mitä enemmän kenttiä valitaan, sitä suurempi viesti on, mikä johtaa pidempään lähetysaikaan ja suurempaan pakettihäviöriskiin.",
"label": "Sijaintimerkinnät"
},
"receivePin": {
"description": "GPS-moduulin käyttöönottopinnin korvaus",
"label": "Vastaanoton pinni"
},
"smartPositionEnabled": {
"description": "Lähetä sijainti vain, kun sijainnissa on tapahtunut merkittävä muutos",
"label": "Ota älykäs sijainti käyttöön"
},
"smartPositionMinDistance": {
"description": "Vähimmäisetäisyys (metreinä), joka on kuljettava ennen sijaintipäivityksen lähettämistä",
"label": "Älykkään sijainnin minimietäisyys"
},
"smartPositionMinInterval": {
"description": "Lyhin aikaväli (sekunteina), joka on kuluttava ennen sijaintipäivityksen lähettämistä",
"label": "Älykkään sijainnin vähimmäisetäisyys"
},
"transmitPin": {
"description": "GPS-moduulin käyttöönottopinnin korvaus",
"label": "Lähetyksen pinni"
},
"intervalsSettings": {
"description": "Kuinka usein sijaintipäivitykset lähetetään",
"label": "Aikaväli"
},
"flags": {
"placeholder": "Valitse sijaintiasetukset...",
"altitude": "Korkeus",
"altitudeGeoidalSeparation": "Korkeuden geoidinen erotus",
"altitudeMsl": "Korkeus on mitattu merenpinnan tasosta",
"dop": "Tarkkuuden heikkenemä (DOP), oletuksena käytetään PDOP-arvoa",
"hdopVdop": "Jos DOP on asetettu, käytä HDOP- ja VDOP-arvoja PDOP:n sijaan",
"numSatellites": "Satelliittien määrä",
"sequenceNumber": "Sekvenssinumero",
"timestamp": "Aikaleima",
"unset": "Ei yhdistetty",
"vehicleHeading": "Ajoneuvon suunta",
"vehicleSpeed": "Ajoneuvon nopeus"
}
},
"power": {
"adcMultiplierOverride": {
"description": "Käytetään akun jännitteen lukeman säätämiseen",
"label": "Korvaava AD-muuntimen kerroin"
},
"ina219Address": {
"description": "Akkunäytön INA219 osoite",
"label": "INA219 Osoite"
},
"lightSleepDuration": {
"description": "Kuinka kauan laite on kevyessä lepotilassa",
"label": "Kevyen lepotilan kesto"
},
"minimumWakeTime": {
"description": "Vähimmäisaika, jonka laite pysyy hereillä paketin vastaanoton jälkeen",
"label": "Minimi heräämisaika"
},
"noConnectionBluetoothDisabled": {
"description": "Jos laite ei saa Bluetooth-yhteyttä, BLE-radio poistetaan käytöstä tämän ajan kuluttua",
"label": "Ei yhteyttä. Bluetooth on pois käytöstä"
},
"powerSavingEnabled": {
"description": "Valitse, jos laite saa virtaa matalavirtalähteestä (esim. aurinkopaneeli), jolloin virrankulutusta minimoidaan mahdollisimman paljon.",
"label": "Ota virransäästötila käyttöön"
},
"shutdownOnBatteryDelay": {
"description": "Sammuta laite automaattisesti tämän ajan kuluttua akkukäytöllä, 0 tarkoittaa toistaiseksi päällä",
"label": "Viive laitteen sammuttamisessa akkukäytöllä"
},
"superDeepSleepDuration": {
"description": "Kuinka pitkään laite on supersyvässä lepotilassa",
"label": "Supersyvän lepotilan kesto"
},
"powerConfigSettings": {
"description": "Virtamoduulin asetukset",
"label": "Virran asetukset"
},
"sleepSettings": {
"description": "Virtamoduulin lepotila-asetukset",
"label": "Lepotilan asetukset"
}
},
"security": {
"description": "Turvallisuuskokoonpanon asetukset",
"title": "Turvallisuusasetukset",
"button_backupKey": "Varmuuskopioi avain",
"adminChannelEnabled": {
"description": "Salli saapuva laitteen ohjaus suojaamattoman vanhan admin-kanavan kautta",
"label": "Salli vanha admin ylläpitäjä"
},
"enableDebugLogApi": {
"description": "Lähetä reaaliaikainen debug-loki sarjaportin kautta, katso ja vie laitteen lokitiedostot, joista sijaintitiedot on poistettu, Bluetoothin kautta",
"label": "Ota käyttöön virheenkorjauslokin API-rajapinta"
},
"managed": {
"description": "Jos tämä on käytössä, laitteen asetuksia voi muuttaa vain etäadmin-laitteen hallintaviestien kautta. Älä ota tätä käyttöön, ellei vähintään yhtä sopivaa etäadmin-laitetta ole määritetty ja julkinen avain ei ole tallennettu johonkin yllä olevista kentistä.",
"label": "Hallinnoitu"
},
"privateKey": {
"description": "Käytetään jaetun avaimen luomiseen etälaitteen kanssa",
"label": "Yksityinen avain"
},
"publicKey": {
"description": "Lähetetään muille mesh-verkon laitteille, jotta ne voivat laskea jaetun salaisen avaimen",
"label": "Julkinen avain"
},
"primaryAdminKey": {
"description": "Ensisijainen julkinen avain, jolla on oikeus lähettää hallintaviestejä tälle laitteelle",
"label": "Ensisijainen järjestelmänvalvojan avain"
},
"secondaryAdminKey": {
"description": "Toissijainen julkinen avain, jolla on oikeus lähettää hallintaviestejä tälle laitteelle",
"label": "Toissijainen järjestelmänvalvojan avain"
},
"serialOutputEnabled": {
"description": "Sarjakonsoli Stream API:n yli",
"label": "Sarjaulostulo Käytössä"
},
"tertiaryAdminKey": {
"description": "Kolmas julkinen avain, jolla on oikeus lähettää hallintaviestejä tälle laitteelle",
"label": "Kolmas järjestelmänvalvojan hallinta-avain"
},
"adminSettings": {
"description": "Järjestelmänvalvojan asetukset",
"label": "Ylläpitäjän asetukset"
},
"loggingSettings": {
"description": "Kirjautumisen asetukset",
"label": "Kirjautumisen asetukset"
}
}
}