Språk på uno (in progress)

Til UKA-21 ble det implementert støtte for flere språk på uno. Det er støtte for både engelsk og sør-samisk, men det er planlagt å fase ut sør-samisk til UKA-23.

Språk 101

Dersom du legger inn nytt tekstinnhold som skal vises til brukeren du markere tekststrenger for oversetting. Dette gjøres på litt forskjellige måter avhengig av hvilke filer du endrer på. Det er viktig at du gjør deg kjent med hvordan man markerer tekststrenger for oversettelser før du utvikler på uno. Her er de mest vanlige:

Jjinja2

Her bruker vi stort sett {{ _('ditt_ord_her') }} der _ er et alias for gettext. Det er også mulig å bruke blokker med {% trans %} og {% endtrans %}. Se Jinja sin dokumentasjon for ytterligere info som flertall og trimmed parameteret.

Språk-funksjonene get_language, get_locale_url og hard_translation er lagt til i Jinja sitt environment.

Python

Her bruker vi som regel gettext eller ugettext. Dersom du trenger at tekststrengen skal oversettes under template rendering må du bruke lazy-versjonen av disse. Merk at disse funksjonene ofte blir importertert med _() som alias. Siden Django har innebygd støtte for oversettelser finnes det mye funksjonalitet som kan brukes i python filer og dette kan du lese mer om i dokumentasjonen til Django.

Javascript

Oversettelser i Javascript filer støttes gjennom en liten work-around som Django har laget. Django har laget en slags kopi av gettext som du kan bruke i javascript filene. Dette fungerer ikke helt sømløst, så prøv å unngå oversettelser av tekststrenger i js om mulig. Dersom du absolutt må oversette en tekststreng i js må du sørge for at det fungerer også om man skrur av støtte for i18n. Når du skrur av støtte for i18n forsvinner gettext -funksjonen fra javascript og koden brekker om du ikke har tatt høyde for dette.

URLer

Aldri skriv url-er under www.uka.no rett frem. Språket velges ut fra url-en (f.eks www.uka.no/en) og url-ene må derfor genereres ettersom hvilket språk som brukeren har valgt. Du kan bruke reverse funksjonen i Django for å oppnå dette. I Jinja har vi for en eller annen grunn valgt å endre navn på denne til url, men den skal fungere helt likt som reverse.

Dersom du ikke kan bruke reverse -funksjonen (f.eks. hvis url-en bestemmes av en bruker) kan du bruke funksjonen get_locale_url som ligger i utils/translation.py. Denne er også tilgjengelig i Jinja.

Eksempler:

Reverse (url i Jinja): reverse('view_page', args=['personvern'])

Relativ url med get_locale_url: get_locale_url('/personvern/', language_code)

Fullstendig url get_locale_url: get_locale_url('https://www.uka.no/personvern/', language_code)

Teknisk oppsett

Django har innebygd støtte for språk, men siden vi bruker Jinja i stedet for Django templates så fungerer det ikke å kompilere språkfiler med standard Django. Vi bruker derfor Babel til å kompilere språkfilene.

Legge til/Fjerne språk

TODO

Lenker: Start

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2022-01-13 19:31 | Revisjon: 2 (historie, blame) | Totalt: 1775 kB | Rediger