i18n(sv): address review (export buttons, singular, consistent terms)

- EXP. {slot} and EXPORT so the Recent Imagery export buttons fit and A
  and B read apart; EXPORT listed as same-as-English.
- {count} HÖRT / hört for one aircraft; the plural rule in sv.md no
  longer lists HÖRDA.
- INTE FARA ÖVER throughout; VÄ/HÖ for left/right (V is west on the
  compass); STYRD KURS vs KURS Ö. GRUND; MIK in the first-run tip.
- Label-first counts for sightings and standby cameras; neuter audio
  states; OSÄKER on chip and status line; KN for knots; the ellipsis
  character; Ladda ned and VÄNTLÄGE throughout; Olagligt ingripande;
  FÖRHANDSVY for the preview flag and authoring heading.
- sv.json in the format scope; Swedish in language-code order in
  TRANSLATORS.md; glossary row reduced to incident → händelse; 29
  letterless entries dropped from same-as-english.json.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Kaj ObstandClaude Opus 5.5 committed 2026-11-09 19:25:24 +01:00
1 parent 8b0b975e18
commit cdccf88bbb
5 files changed
+32 -59

No files matched your search

+2 -2
View File
@@ -1,6 +1,6 @@
# Translating God's Eye View
Shipped languages: **English** (source and fallback), **Arabic** (`ar`), **German** (`de`), **Spanish** (`es`), **French** (`fr`), **Italian** (`it`), **Japanese** (`ja`), **Brazilian Portuguese** (`pt`), **Russian** (`ru`), **Ukrainian** (`uk`), **Simplified Chinese** (`zh-CN`), **Traditional Chinese** (`zh-Hant`) and **Swedish** (`sv`).
Shipped languages: **English** (source and fallback), **Arabic** (`ar`), **German** (`de`), **Spanish** (`es`), **French** (`fr`), **Italian** (`it`), **Japanese** (`ja`), **Brazilian Portuguese** (`pt`), **Russian** (`ru`), **Swedish** (`sv`), **Ukrainian** (`uk`), **Simplified Chinese** (`zh-CN`) and **Traditional Chinese** (`zh-Hant`).
## How it works
@@ -63,4 +63,4 @@ These are contracts, not copy: layer ids and registry keys, status enums and oth
## Language notes
Each language keeps its glossary, plural forms, units and style in its own file, `docs/translations/<code>.md`: [Arabic](./translations/ar.md), [German](./translations/de.md), [Spanish](./translations/es.md), [French](./translations/fr.md), [Italian](./translations/it.md), [Japanese](./translations/ja.md), [Brazilian Portuguese](./translations/pt.md), [Russian](./translations/ru.md), [Ukrainian](./translations/uk.md), [Simplified Chinese](./translations/zh-CN.md), [Traditional Chinese](./translations/zh-Hant.md), [Swedish](./translations/sv.md). Read it before translating, and add a term there when you settle on one.
Each language keeps its glossary, plural forms, units and style in its own file, `docs/translations/<code>.md`: [Arabic](./translations/ar.md), [German](./translations/de.md), [Spanish](./translations/es.md), [French](./translations/fr.md), [Italian](./translations/it.md), [Japanese](./translations/ja.md), [Brazilian Portuguese](./translations/pt.md), [Russian](./translations/ru.md), [Swedish](./translations/sv.md), [Ukrainian](./translations/uk.md), [Simplified Chinese](./translations/zh-CN.md), [Traditional Chinese](./translations/zh-Hant.md). Read it before translating, and add a term there when you settle on one.
+2 -2
View File
@@ -32,7 +32,7 @@ A `tn()` entry needs two forms. `Intl.PluralRules('sv')` picks:
| `one` | 1 | 1 kamera |
| `other` | everything else: 0, 2, 1,5… | 3 kameror |
Abbreviated units and codes do not change: «{count} MEDD.», «{count} HÖRDA».
Abbreviated units and codes do not change: «{count} MEDD.».
## Glossary
@@ -81,4 +81,4 @@ Abbreviated units and codes do not change: «{count} MEDD.», «{count} HÖRDA»
| click / tap / press a key | klicka / tryck / tryck på tangenten |
| card / label (on the map) / clear (layers) | kort / etikett / stäng av |
| frame (weather, video) / image | bildruta / bild |
| road condition / incident / roadwork | väglag / händelse / vägarbete |
| incident | händelse |
+1
View File
@@ -1295,6 +1295,7 @@
"src/i18n/locales/ja.json",
"src/i18n/locales/pt.json",
"src/i18n/locales/ru.json",
"src/i18n/locales/sv.json",
"src/i18n/locales/uk.json",
"src/i18n/locales/zh-CN.json",
"src/i18n/locales/zh-Hant.json",
+25 -25
View File
@@ -132,7 +132,7 @@
"⚠️ Not renting": "⚠️ Ingen uthyrning",
"⚠️ Not returning": "⚠️ Ingen återlämning",
"HDG {value}° (ESTIMATED)": "HDG {value}° (UPPSKATTAD)",
"{count} CAMERAS STANDING BY · NO CAMERA SELECTED · CLICK A CAMERA TO ACTIVATE": "{count} KAMEROR I BEREDSKAP · INGEN KAMERA VALD · KLICKA PÅ EN KAMERA FÖR ATT AKTIVERA DEN",
"{count} CAMERAS STANDING BY · NO CAMERA SELECTED · CLICK A CAMERA TO ACTIVATE": "KAMEROR I BEREDSKAP: {count} · INGEN KAMERA VALD · KLICKA PÅ EN KAMERA FÖR ATT AKTIVERA DEN",
"No cameras available in catalog.": "Inga kameror finns i katalogen.",
"{city} CCTV": "CCTV {city}",
"FOV {value}°": "FOV {value}°",
@@ -415,8 +415,8 @@
"{cohort}, Unavailable": "{cohort}, otillgänglig",
"AHEAD": "RAKT FRAM",
"{side} {angle}": "{side} {angle}",
"L": "V",
"R": "H",
"L": "VÄ",
"R": "HÖ",
"{count} INPUTS UNKNOWN · NOT AN ALL-CLEAR": {
"one": "{count} KÄLLA OKÄND · INTE FARA ÖVER",
"other": "{count} KÄLLOR OKÄNDA · INTE FARA ÖVER"
@@ -474,7 +474,7 @@
"Restore real aircraft": "Återställ verkligt flygplan",
"Reclassify as TR-3B": "Klassa om som TR-3B",
"TRACK ACQUIRED": "SPÅR LÅST",
"{label} · COURSE {heading}°": "{label} · KURS {heading}°",
"{label} · COURSE {heading}°": "{label} · KURS Ö. GRUND {heading}°",
"Context could not restore every layer; try again": "Läget ”Kontext” kunde inte återställa alla lager – försök igen",
"No selected data layers": "Inga valda datalager",
"{count} data layers could not be cleared": {
@@ -527,7 +527,7 @@
"{state} · {source} · {ago} · retrying in {seconds}s": "{state} · {source} · {ago} · nytt försök om {seconds} s",
"{state} · {source} · {ago}": "{state} · {source} · {ago}",
"{source} · {ago}": "{source} · {ago}",
"UNCERTAIN": "OKLART",
"UNCERTAIN": "OSÄKER",
"{name}: {state}": "{name}: {state}",
"{count}s ago": "{count} s sedan",
"CONNECTING": "ANSLUTER",
@@ -740,7 +740,7 @@
"Keep location tray open": "Håll platsfältet öppet",
"Search any location": "Sök valfri plats",
"Search location by name or coordinates": "Sök plats efter namn eller koordinater",
"Search any location...": "Sök valfri plats ...",
"Search any location...": "Sök valfri plats …",
"WEATHER": "VÄDER",
"CONTEXT": "KONTEXT",
"Context mode": "Kontextläge",
@@ -816,7 +816,7 @@
"Sharpen intensity": "Skärpestyrka",
"EXIT CLEAN VIEW": "LÄMNA RENT GRÄNSSNITT",
"Return UI controls": "Visa gränssnittet igen",
"Initializing photorealistic world...": "Initierar fotorealistisk värld ...",
"Initializing photorealistic world...": "Initierar fotorealistisk värld …",
"DATA LAYERS": "DATALAGER",
"NEAREST": "NÄRMASTE",
"CCTV camera": "CCTV-kamera",
@@ -859,7 +859,7 @@
"Begin with a clean globe": "Börja med en tom glob",
"Don't show this again": "Visa inte igen",
"ESC to dismiss": "ESC för att stänga",
"Tip: the GEV MIC button in the dock lets you talk to the map.": "Tips: med knappen GEV MIC i dockan går det att prata med kartan.",
"Tip: the GEV MIC button in the dock lets you talk to the map.": "Tips: med knappen MIK i dockan går det att prata med kartan.",
"Pick a shape, then click the map.": "Välj en form och klicka sedan på kartan.",
"Enter to place the pin, Esc to cancel.": "Enter placerar nålen, Esc avbryter.",
"Click where the pin goes.": "Klicka där nålen ska sitta.",
@@ -892,7 +892,7 @@
"Business jet": "Affärsjet",
"Drone": "Drönare",
"General emergency": "Allmänt nödläge",
"Unlawful interference": "Olaglig inblandning",
"Unlawful interference": "Olagligt ingripande",
"Radio failure": "Radiobortfall",
"Downed aircraft": "Nedstörtat luftfartyg",
"Minimum fuel": "Minimum fuel (låg bränslemängd)",
@@ -2097,7 +2097,7 @@
"{scope} · INSTALLATIONS {coverage}": "{scope} · ANLÄGGNINGAR {coverage}",
"MILITARY FEED OFF · PARTIAL PICTURE": "MILITÄRFLÖDET AV · OFULLSTÄNDIG BILD",
"FLIGHTS FEED OFF · PARTIAL PICTURE": "FLYGFLÖDET AV · OFULLSTÄNDIG BILD",
"NEARBY AIRCRAFT INCOMPLETE · NOT AN ALL-CLEAR": "FLYGPLAN I NÄRHETEN OFULLSTÄNDIGA · INTE FRITT FRAM",
"NEARBY AIRCRAFT INCOMPLETE · NOT AN ALL-CLEAR": "FLYGPLAN I NÄRHETEN OFULLSTÄNDIGA · INTE FARA ÖVER",
"SQUAWK {code} · {status}": "SQUAWK {code} · {status}",
"ADS-B PRIORITY · {status}": "ADS-B-PRIORITET · {status}",
"ADS-B EMERGENCY · {status}": "ADS-B-NÖDLÄGE · {status}",
@@ -2171,10 +2171,10 @@
"TUNING": "STÄLLER IN",
"STREAMING": "STRÖMMAR",
"UNSUPPORTED": "STÖDS INTE",
"idle": "inaktiv",
"idle": "inaktivt",
"running": "körs",
"suspended": "pausad",
"closed": "stängd",
"suspended": "pausat",
"closed": "stängt",
"feed status|live": "live",
"feed status|stale": "inaktuell",
"feed status|unreachable": "går inte att nå",
@@ -2193,7 +2193,7 @@
"audio signal --": "ljudsignal --",
"audio {state}": "ljud {state}",
"{count} HEARD": {
"one": "{count} HÖRDA",
"one": "{count} HÖRT",
"other": "{count} HÖRDA"
},
"DISCONNECT": "KOPPLA FRÅN",
@@ -2292,7 +2292,7 @@
"Forget the box and its images": "Glöm området och dess bilder",
"START HERE": "BÖRJA HÄR",
"Checking": "Kontrollerar",
"PREVIEW": "FÖRHANDSVISNING",
"PREVIEW": "FÖRHANDSVY",
"Newest day with imagery for this box": "Senaste dag med bilder för området",
"SHOW": "VISA",
"Pin {day} as {slot}": "Fäst {day} som {slot}",
@@ -2311,8 +2311,8 @@
"Source off": "Källa av",
"Unpin {slot}": "Lossa {slot}",
"Unpin the image": "Lossa bilden",
"EXPORT {slot}": "EXPORTERA {slot}",
"EXPORT": "EXPORTERA",
"EXPORT {slot}": "EXP. {slot}",
"EXPORT": "EXPORT",
"Download {slot} as a PNG": "Ladda ned {slot} som PNG",
"Download the image as a PNG": "Ladda ned bilden som PNG",
"Box {width} × {height} km": "Område {width} × {height} km",
@@ -2412,7 +2412,7 @@
},
"Loading {feeds}": "Laddar {feeds}",
"{count} heard": {
"one": "{count} hörda",
"one": "{count} hört",
"other": "{count} hörda"
},
"USB {rate} msg/s": "USB {rate} medd./s",
@@ -2947,11 +2947,11 @@
"Stop playback (Esc)": "Stoppa uppspelningen (Esc)",
"Play the shot after the selected one, moving on to the next scene when needed": "Spela upp tagningen efter den valda och gå vidare till nästa scen vid behov",
"SAVE & SHARE": "SPARA & DELA",
"Download every scene as a JSON file you can import later": "Ladda ner alla scener som en JSON-fil som kan importeras senare",
"Download every scene as a JSON file you can import later": "Ladda ned alla scener som en JSON-fil som kan importeras senare",
"Load scenes from an exported JSON file": "Läs in scener från en exporterad JSON-fil",
"Download the timing log of the last play": "Ladda ner tidsloggen från senaste uppspelningen",
"Download the timing log of the last play": "Ladda ned tidsloggen från senaste uppspelningen",
"Edit anchors, data packs and shot details": "Redigera ankare, datapaket och tagningsdetaljer",
"Download this scene as JSON or an asset bundle": "Ladda ner scenen som JSON eller som resurspaket",
"Download this scene as JSON or an asset bundle": "Ladda ned scenen som JSON eller som resurspaket",
"Left panels": "Vänstra paneler",
"Right panels": "Högra paneler",
"CONFIRMED": "BEKRÄFTAD",
@@ -3163,7 +3163,7 @@
"Photo of {name}": "Foto av {name}",
"Acartia": "Acartia",
"CC BY 4.0": "CC BY 4.0",
"{count} sightings in view": "{count} observationer i vyn",
"{count} sightings in view": "Observationer i vyn: {count}",
"Close sighting": "Stäng observationen",
"Wildlife observed within 48 h (whales 7 d). Color and badge glyph show the taxon group. Sensitive species are shown only as 0.2° cells; Salish Sea marine mammal reports via Acartia are rounded to 0.01°. Not a census.": "Vilda djur observerade de senaste 48 h (valar 7 d). Färg och symbol visar artgruppen. Känsliga arter visas bara som rutor på 0,2°; rapporter om marina däggdjur i Salish Sea via Acartia avrundas till 0,01°. Ingen inventering.",
"Open {name} on iNaturalist": "Öppna {name} på iNaturalist",
@@ -3213,7 +3213,7 @@
"{range} NM": "{range} NM",
"AIS DESTINATION · CREW REPORTED": "AIS-DESTINATION · ANGIVEN AV BESÄTTNINGEN",
"{label} · NADIR VIEW": "{label} · NADIRVY",
"SITES STANDBY": "PLATSER I VÄNTELÄGE",
"SITES STANDBY": "PLATSER I VÄNTLÄGE",
"ENABLE MAPPED INSTALLATIONS FOR SITE PINGS": "SLÅ PÅ ”KARTLAGDA ANLÄGGNINGAR” FÖR PLATSPINGAR",
"Unnamed site": "Namnlös plats",
"OFF-NADIR {angle}°": "OFF-NADIR {angle}°",
@@ -3231,7 +3231,7 @@
"{direction} {angle}°": "{direction} {angle}°",
"OFF-NADIR {angle}° · {offset}": "OFF-NADIR {angle}° · {offset}",
"BRIDGE": "BRYGGA",
"{label} · HEADING {heading}°": "{label} · KURS {heading}°",
"{label} · HEADING {heading}°": "{label} · STYRD KURS {heading}°",
"{label} · NO HEADING": "{label} · INGEN KURS",
"Place names": "Ortnamn",
"Ship bridge view": "Fartygets bryggvy",
@@ -3244,7 +3244,7 @@
"COURSE HOLD · AIS": "KURS ÖVER GRUND · AIS",
"HEADING HOLD · AIS": "STYRD KURS · AIS",
"NO HEADING · AIS": "INGEN KURS · AIS",
"SPEED OVER GROUND · KTS": "FART ÖVER GRUND · KNOP",
"SPEED OVER GROUND · KTS": "FART ÖVER GRUND · KN",
"BRIDGE VIEW": "BRYGGVY",
"Look ahead: turn the bridge view back to the bow": "Titta framåt: vrid bryggvyn tillbaka mot fören",
"Look ahead (Home or 0)": "Titta framåt (Home eller 0)",
+2 -30
View File
@@ -1042,7 +1042,6 @@
"Station",
"FOV {value}°",
"▲ {frp} MW",
"T−{time} · {mission}",
"{value} KM",
"{value} KM/S",
"STATUS · ",
@@ -1063,7 +1062,6 @@
"Oldies",
"Pop",
"Punk",
"R&B",
"Reggae",
"Rock",
"Soul",
@@ -1074,23 +1072,12 @@
"POS: LIVE",
"POS: {time}Z",
"Bloom",
"{domain} · {age}",
"{cohort} · {contact}",
"{side} {angle}",
"DEST {bearing}",
"Normal",
"Anime",
"Noir",
"{aircraftClass} · {distance}",
"CCTV",
"Radio",
"{state} · {source}",
"{state} · {source} · {detail}",
"{source} · {loadingLabel}",
"{state} · {source} · {detail} · {ago}",
"{state} · {source} · {ago}",
"{source} · {ago}",
"{name}: {state}",
"DEST ---°",
"TEMP",
"RADIO",
@@ -1103,11 +1090,8 @@
"ANIME",
"NOIR",
"view band|GLOBAL",
"{distance} · {duration} · {mode}",
"S2 · {name}",
"1090 MHz",
"978 MHz UAT",
"V/S {rate}",
"POSITION {age}",
"fire behavior|Minimal",
"{county} County",
@@ -1118,14 +1102,10 @@
"Google Street View",
"GOOGLE STREET VIEW",
"Hybrid",
"{state} · {time} · {lag}",
"{state}: {time}",
"RADAR · {units}",
"REGION",
"FILTER",
"{source} HTTP {status}",
"N",
"S",
"WHOT/BHOT",
"Ironbow",
"HDG",
@@ -1135,7 +1115,6 @@
"OK",
"{value} KM/H",
"SQUAWK {code} · {status}",
"{aircraftClass} · {emergency} · {feedState}",
"S2 GhostMaps",
"NASA FIRMS · LIVE",
"feed status|live",
@@ -1150,18 +1129,12 @@
"Washington DC",
"Tallinn",
"Los Angeles",
"{category} ({count})",
"A / B",
"km/h",
"m/s",
"mph",
"hPa",
"ft",
"km",
"m",
"h",
"min",
"s",
"dB",
"STD",
"Plan",
@@ -1169,7 +1142,6 @@
"standard",
"mini",
"STANDARD",
"{items} {scope}",
"FT",
"MIL",
"MM",
@@ -1180,7 +1152,6 @@
"Sonar",
"Cyan",
"≥ {value} MW",
"{count} {kind}",
"Be Whale Wise",
"Salish Sea",
"Acartia",
@@ -1199,7 +1170,8 @@
"NADIR",
"SENSOR",
"1 min/s",
"Live"
"Live",
"EXPORT"
],
"uk": [
"AIS: --",