Tekststrenger i kode

Komponentene i Punkt har innebygde tekster pÄ bokmÄl. Du kan bytte ut alle tekstene pÄ én gang, for eksempel til et annet sprÄk, eller bare endre teksten i én enkelt komponent.

  • Alle tekstene ligger i Ă©n felles katalog som React og Elements deler.
  • Du bytter ut tekster globalt med setPktStrings(), eller per komponent med strings.
  • Tekstene er vanlige strenger, sĂ„ du kan legge dem i egne sprĂ„kfiler.

Slik er tekstene bygd opp

Katalogen har to nivÄer: et namespace og en nÞkkel. Namespace er som regel navnet pÄ komponenten, og nÞkkelen sier hva teksten brukes til.

{
  searchinput: {
    placeholder: "Sþk
",
    submit: "SĂžk",
  },
}

Du trenger aldri Ă„ oppgi hele katalogen. Tekstene du ikke nevner, beholder verdien de har fra fĂžr.

Bytt ut alle tekstene

Skal du oversette hele designsystemet, eller endre mange tekster pÄ tvers av lÞsningen, samler du dem i ett objekt og sender det til setPktStrings().

Legg gjerne tekstene i en egen fil per sprÄk:

// strings/en.js
export const en = {
  generic: { from: 'From', to: 'To', close: 'Close' },
  forms: {
    optional: 'Optional',
    required: 'Required',
    readMore: 'Read more',
  },
  validation: {
    valueMissing: 'This field is required',
    rangeUnderflowMin: 'The value must be at least {min}.',
  },
  searchinput: { placeholder: 'Search
', submit: 'Search' },
  // 
 resten av namespacene
}

Kall setPktStrings() én gang nÄr applikasjonen starter:

Kallet gjelder bÄde React og Elements pÄ samme side, og komponenter som allerede er tegnet opp, blir oppdatert. Bruker du begge pakkene, holder det med ett kall.

Du kan kalle setPktStrings() flere ganger, ogsÄ mens brukeren er inne pÄ siden. Kallene legges oppÄ hverandre. Skal du bytte til et sprÄk der ikke alle tekstene er oversatt, bÞr du kalle resetPktStrings() fÞrst. Ellers blir tekstene fra det forrige sprÄket liggende igjen.

Se hvilke tekster som finnes

Alle nÞklene med de innebygde verdiene ligger i pktStringsNb. Bruk den som fasit nÄr du lager en sprÄkfil:

Bytt ut teksten i én komponent

Alle komponenter som viser tekst, tar imot strings. Denne teksten vinner over den globale.

I Elements kan du sette strings som JSON i attributtet, slik som over, eller som en egenskap i JavaScript:

document.querySelector('#sok').strings = {
  searchinput: { placeholder: 'Finn ansatt
' },
}

BestÄr komponenten av flere elementer, sÞrger Punkt for at teksten nÄr fram til elementene inni.

Bytt ut teksten i en del av siden

I React kan du pakke inn en del av siden med PktStringsProvider. Da gjelder tekstene bare der inne.

import { PktStringsProvider } from '@oslokommune/punkt-react'

;<PktStringsProvider strings={{ forms: { optional: 'Kan stÄ tomt' } }}>
  <PktTextinput id="navn" name="navn" label="Navn" optionalTag />
</PktStringsProvider>

Du kan legge flere slike inni hverandre. Den innerste vinner.

Bruker du Elements, setter du strings pÄ hver komponent i stedet.

Hvilken tekst vinner?

Punkt leter etter teksten i denne rekkefĂžlgen. Nederste treff vinner.

RekkefĂžlgeHvor teksten kommer fra
1Den innebygde teksten pÄ bokmÄl
2setPktStrings()
3PktStringsProvider (bare React)
4strings pÄ selve komponenten
5Utdaterte props som optionalText

Tekster med verdier i seg

Noen tekster har en verdi som settes inn nÄr teksten vises. Disse er markert med krÞllparenteser. Behold dem nÄr du bytter ut teksten, ellers mangler verdien.

setPktStrings({
  validation: { rangeUnderflowMin: 'Kan ikke vĂŠre lavere enn {min}' },
})

Entall og flertall

Tekster som finnes i to former, har to nÞkler: én som slutter pÄ One og én som slutter pÄ Other. Punkt velger One nÄr det er nÞyaktig én.

setPktStrings({
  fileupload: {
    fileLabelOne: 'dokument',
    fileLabelOther: 'dokumenter',
  },
})

Namespace

NamespaceHva det dekker
genericOrd som gÄr igjen: from, to, close
formsMerkelapper rundt skjemafelt
validationFeilmeldinger i skjema
datesNavn pÄ mÄneder og dager, week, month, year
calendarKnappene for forrige og neste mÄned
datepickerÅpne kalenderen, fjerne en dato
timepickerTimer, minutter og knappene i tidsvelgeren
searchinputLedetekst og knapp i sĂžkefeltet
listboxSĂžkefeltet i nedtrekkslisten
comboboxBeskjeder om treff, valg og maksgrense
fileuploadSlippsone, filvalidering og beskjeder til skjermlesere
backlinkTilbakelenken
breadcrumbsBrĂždsmulestien
tagKnappen som fjerner en tagg
headerSĂžk og meny i toppfeltet

Utdaterte props

Noen komponenter har egne props for enkelttekster, som optionalText, requiredText, searchPlaceholder og helptextDropdownButton. De virker fortsatt, og de vinner over alle de andre tekstene.

Vi kommer til Ä fjerne dem i en senere hovedversjon. Bruk strings eller setPktStrings() nÄr du skriver ny kode.

Slik nullstiller du

resetPktStrings() setter alt tilbake til de innebygde tekstene. Den er mest nyttig i tester.