Skip to content

Språkhandtering og cookies #387

@dingsoyr

Description

@dingsoyr

Dagens løysing

norge.no har i dag innhald på tre språk:

  • bokmål (/nb/)
  • nynorsk (/nn/)
  • engelsk (/en/)

Brukar kan velje språk via språkveljar i header. Dersom brukar aksepterer språkcookie, blir valt språk lagra.

I dag blir denne cookien brukt aktivt i React-klienten til å automatisk omdirigere brukar til språkversjonen som ligg i cookien, også når brukar eksplisitt går til ei URL på eit anna språk.

Eksempel:

  • brukar har cookie = en
  • brukar går til:
    /nb/oppdater-eller-sjekk-kontaktinformasjon/42
  • React-klienten sender automatisk brukar vidare til:
    /en/update-or-check-your-contact-details/42

I tillegg finst det funksjonalitet for språkvarsel. Denne viser eit varsel dersom brukar har valt eit språk, til dømes engelsk, men kjem til ei side som ikkje finst på dette språket. Varselet informerer då om at sida ikkje er tilgjengeleg på valt språk.

Problem med dagens løysing

URL representerer ikkje faktisk innhald

Når brukar går til ei URL med eksplisitt språkprefix (/nb/, /nn/, /en/), er språk allereie bestemt av URL-en.

Det blir derfor overraskande når klienten overstyrer dette basert på cookie.

Problem for redaktørar

Redaktørar som jobbar i Drupal kan opne eller previewe ei spesifikk språkversjon, men blir automatisk sendt vidare til språk frå cookie. Dette gjer testing og redigering vanskeleg.

Delte lenker blir mindre føreseielege

Ein brukar kan dele ei bokmålslenke, men mottakar blir automatisk sendt til engelsk eller nynorsk basert på eiga cookie.

Aukar kompleksitet

Språkcookie introduserer meir kompleksitet i:

  • klientlogikk
    Frontend må innehalde ekstra logikk for å lese cookie, samanlikne cookie med språk i URL, finne korrekt språkvariant av sida og eventuelt trigge redirect. Dette aukar mengda spesiallogikk og edge cases i klienten.
  • routing
    URL er ikkje lenger einaste kjelde til sanning for språk. Routing blir avhengig både av URL og klientstate (cookie), noko som gjer navigasjon mindre føreseieleg.
  • debugging
    Feil blir vanskelegare å reprodusere fordi oppførsel avheng av lokal cookie-state hos brukar eller utviklar. Same URL kan oppføre seg ulikt mellom ulike brukarar eller miljø.
  • testing
    Testing må dekke fleire kombinasjonar:
    URL-språk
    språkcookie
    manglande omsettingar
    redirect-logikk
    språkvarsel

Liten faktisk verdi

Sidan:

  • alt innhald finst på alle språk
  • språk alltid er synleg i URL
  • språkveljar alltid er tilgjengeleg i header

…er det liten gevinst i å automatisk tvinge brukar over til eit anna språk enn det URL-en spesifiserer.

Forslag til ny modell

URL er kjelde til sanning for språk

  • /nb/... viser bokmål
  • /nn/... viser nynorsk
  • /en/... viser engelsk

Ingen automatisk redirect basert på cookie

Språkcookie fjernast heilt.

Root redirect

  • norge.nonorge.no/nb

Språkbyte skjer berre via språkveljar

Når brukar vel språk i header:

  • brukar blir sendt til tilsvarande URL på valt språk
  • vidare navigasjon held fram i den språkgreina

Språkvarsel og språkveljar må vurderast

Som del av oppgåva må vi også sjekke funksjonaliteten rundt språkvarsel og språkveljar.

I dagens løysing finst det varsel som blir vist dersom brukar har valt eit språk, men kjem til ei side som ikkje finst på dette språket. Til dømes dersom brukar har valt engelsk, men sida ikkje finst på engelsk.

Sidan målet no er at alt innhald på norge.no skal finnast på alle tre språk, bør vi vurdere om denne funksjonaliteten framleis er relevant.

I staden for å vise språkvarsel kan det vere meir føreseieleg at språkveljaren berre viser språk som faktisk er tilgjengelege for den aktuelle sida.

Eksempel:

  • Dersom ei side berre finst på bokmål, viser språkveljaren berre bokmål.
  • Dersom ei side finst på bokmål og engelsk, viser språkveljaren bokmål og engelsk.
  • Dersom ei side finst på alle tre språk, viser språkveljaren bokmål, nynorsk og engelsk.

Det bør avklarast:

  • om språkvarselet framleis trengst
  • om språkvarselet kan fjernast
  • om språkveljaren heller skal baserast på faktiske tilgjengelege omsettingar
  • kva som skal skje dersom ei omsetting manglar
  • om det framleis finst edge cases der innhald ikkje er omsett til alle språk

Fordelar med ny modell

  • enklare og meir føreseieleg oppførsel
  • URL samsvarer alltid med faktisk innhald
  • betre redaktørflyt
  • enklare routing og frontendlogikk
  • færre edge cases
  • meir intuitivt for brukar
  • mogleg å fjerne eller forenkle språkvarsel dersom alt innhald alltid finst på alle språk
  • språkveljaren kan reflektere faktiske tilgjengelege språk for sida

Prinsippet blir då:

Det språket som står i URL-en er det språket brukaren får.

Metadata

Metadata

Assignees

No one assigned

    Labels

    🔗site consolidationTasks related to merging norge.no, minid.no, and eid.difi.no into a unified platform.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    📋 Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions