Legg til om-side, personvernerklæring og sikkerheitsforbetring

Om-side (Android + PWA):
- Ny AboutDialog med personvernerklæring, datakjelder og opphavsrett
- Opphavsrett flytta frå sivilforsvardialogen til om-sida
- Tilgjengeleg via «Om denne appen»-lenke i sivilforsvarsdialogen (Android)
  og ny om-knapp i statuslinja (PWA)
- Lokalisert til en/nb/nn

Personvern og sikkerheit:
- Lagra GPS-posisjon utløper etter 24 timar (widget_prefs)
- Widget viser «Trykk for å oppdatere» når posisjon manglar eller er utløpt
- Eigendefinert User-Agent (Tilfluktsrom/1.6.1) i OkHttp
- Content Security Policy (CSP) meta-tag i PWA
- Tenararbeidar bufrar berre HTTP 200-svar (ikkje opake)
- Kartbuffer-metadata runda til ~11km presisjon i localStorage
- crossorigin="anonymous" på Leaflet CSS

i18n-opprydding:
- Unicode-escapes erstatta med UTF-8-teikn i nb.ts og nn.ts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2026-03-23 14:27:45 +01:00
commit c1ac68e746
21 changed files with 469 additions and 34 deletions

View file

@ -1,4 +1,4 @@
/** Norwegian Bokm\u00e5l strings. Ported from res/values-nb/strings.xml. */
/** Norwegian Bokmål strings. Ported from res/values-nb/strings.xml. */
export const nb: Record<string, string> = {
app_name: 'Tilfluktsrom',
@ -7,40 +7,40 @@ export const nb: Record<string, string> = {
status_updating: 'Oppdaterer\u2026',
status_offline: 'Frakoblet modus',
status_shelters_loaded: '%d tilfluktsrom lastet',
status_no_location: 'Venter p\u00e5 GPS\u2026',
status_no_location: 'Venter på GPS\u2026',
status_caching_map: 'Lagrer kart for frakoblet bruk\u2026',
loading_shelters: 'Laster ned tilfluktsromdata\u2026',
loading_map: 'Lagrer kartfliser\u2026',
loading_map_explanation:
'Forbereder frakoblet kart.\nKartet vil rulle kort for \u00e5 lagre omgivelsene dine.',
loading_first_time: 'Gj\u00f8r klar for f\u00f8rste gangs bruk\u2026',
'Forbereder frakoblet kart.\nKartet vil rulle kort for å lagre omgivelsene dine.',
loading_first_time: 'Gjør klar for første gangs bruk\u2026',
shelter_capacity: '%d plasser',
shelter_room_nr: 'Rom %d',
nearest_shelter: 'N\u00e6rmeste tilfluktsrom',
nearest_shelter: 'Nærmeste tilfluktsrom',
no_shelters: 'Ingen tilfluktsromdata tilgjengelig',
action_refresh: 'Oppdater data',
action_toggle_view: 'Bytt mellom kart og kompassvisning',
action_skip: 'Hopp over',
action_cache_ok: 'Lagre kart',
action_cache_now: 'Lagre n\u00e5',
action_cache_now: 'Lagre nå',
warning_no_map_cache:
'Ingen frakoblet kart lagret. Kartet krever internett.',
permission_location_title: 'Posisjonstillatelse kreves',
permission_location_message:
'Denne appen trenger din posisjon for \u00e5 finne n\u00e6rmeste tilfluktsrom. Vennligst gi tilgang til posisjon.',
'Denne appen trenger din posisjon for å finne nærmeste tilfluktsrom. Vennligst gi tilgang til posisjon.',
permission_denied:
'Posisjonstillatelse avsl\u00e5tt. Appen kan ikke finne tilfluktsrom i n\u00e6rheten uten den.',
'Posisjonstillatelse avslått. Appen kan ikke finne tilfluktsrom i nærheten uten den.',
error_download_failed:
'Kunne ikke laste ned tilfluktsromdata. Sjekk internettforbindelsen.',
error_no_data_offline:
'Ingen lagrede data tilgjengelig. Koble til internett for \u00e5 laste ned tilfluktsromdata.',
'Ingen lagrede data tilgjengelig. Koble til internett for å laste ned tilfluktsromdata.',
update_success: 'Tilfluktsromdata oppdatert',
update_failed: 'Oppdatering mislyktes \u2014 bruker lagrede data',
update_failed: 'Oppdatering mislyktes bruker lagrede data',
// Tilgjengelighet
direction_arrow_description: 'Retning til tilfluktsrom, %s unna',
@ -48,4 +48,22 @@ export const nb: Record<string, string> = {
a11y_compass: 'Kompass',
a11y_shelter_info: 'Tilfluktsrominfo',
a11y_nearest_shelters: 'Nærmeste tilfluktsrom',
// Om
about_title: 'Om Tilfluktsrom',
about_description:
'Tilfluktsrom hjelper deg med å finne nærmeste offentlige tilfluktsrom i Norge. Appen fungerer uten internett etter første oppsett.',
about_privacy_title: 'Personvern',
about_privacy_body:
'Denne appen samler ikke inn, sender eller deler noen personopplysninger. Det finnes ingen analyse, sporing eller tredjepartstjenester. GPS-posisjonen din brukes bare lokalt på enheten din for å finne tilfluktsrom i nærheten, og sendes aldri til noen server.',
about_data_title: 'Datakilder',
about_data_body:
'Tilfluktsromdata: Geonorge (Kartverket). Kartfliser: OpenStreetMap. Begge lagres lokalt for frakoblet bruk.',
about_stored_title: 'Lagret på enheten din',
about_stored_body:
'Tilfluktsromdatabase (offentlige data), kartfliser for frakoblet bruk og kartbuffer-metadata. Ingen data forlater enheten din bortsett fra forespørsler om å laste ned tilfluktsromdata og kartfliser.',
about_copyright: 'Opphavsrett © Ole-Morten Duesund',
about_open_source: 'Åpen kildekode — kode.naiv.no/olemd/tilfluktsrom',
action_about: 'Om',
action_close: 'Lukk',
};