# Hvordan lage flerspråklige sider Lær hvordan du lager nettsider med støtte for flere språk i PnP. ## Konfigurere språk ### Steg 1: Rediger config.ini Åpne `/app/custom/config.ini` (eller lag den hvis den ikke eksisterer): ```ini [languages] default = "no" available = "no,en" ``` - `default`: Standardspråket (vises uten språkprefiks i URL) - `available`: Kommaseparert liste over tilgjengelige språk ### Steg 2: Lag språkfiler Opprett oversettelser i `/app/custom/languages/`: **no.ini:** ```ini home = "Hjem" read_more = "Les mer" ``` **en.ini:** ```ini home = "Home" read_more = "Read more" ``` Disse er tilgjengelige i maler via `$translations`-variabelen. ## Lage flerspråklig innhold ### Metode 1: Språkspesifikke filer Lag separate filer for hvert språk: ``` /content/om/ ├── page.md (Norsk) ├── page.en.md (Engelsk) └── metadata.ini ``` **page.md:** ```markdown # Om oss Vi er et selskap som... ``` **page.en.md:** ```markdown # About us We are a company that... ``` ### Metode 2: Metadata-seksjoner Bruk metadata.ini for å oversette titler og sammendrag: ```ini title = "Om oss" summary = "Lær mer om oss" menu = true menu_order = 1 [en] title = "About us" summary = "Learn more about us" slug = "about" ``` ## URL-struktur Standardspråket bruker ingen språkprefiks: ``` /om/ → Norsk (standard) /en/about/ → Engelsk ``` Merk at den engelske versjonen bruker `slug = "about"` fra metadata. ## Navigasjon PnP bygger automatisk navigasjon basert på `menu = true` i metadata.ini: ```php ``` ## Språkvelger Lag en språkvelger i basismalen: ```php
``` ## Bruke oversettelser i maler Oversettelser fra språkfilene er tilgjengelige i `$translations`: ```php = $translations['read_more'] ?? 'Read more' ?> ``` Bruk alltid en fallback-verdi for tilfeller der oversettelsen mangler. ## Beste praksis ### Konsistent mappestruktur Bruk samme mappestruktur for alle språk: ``` /content/ ├── om/ │ ├── page.md │ └── page.en.md └── kontakt/ ├── page.md └── page.en.md ``` ### Bruk slugs for oversatte URL-er For rene URL-er, bruk `slug` i metadata: ```ini [en] slug = "about" # /en/about/ i stedet for /en/om/ ``` ### Hold metadata samlet Bruk én metadata.ini per mappe med seksjoner for hvert språk: ```ini title = "Tittel" [en] title = "Title" [de] title = "Titel" ``` ### Synkroniser innhold Sørg for at alle språkversjoner har samme struktur og at alle sider er oversatt. ## Eksempel: Fullstendig flerspråklig side ``` /content/blogg/ ├── metadata.ini ├── page.md ├── page.en.md └── 2025-01-15-mitt-innlegg/ ├── metadata.ini ├── article.md ├── article.en.md └── cover.jpg ``` **blogg/metadata.ini:** ```ini title = "Blogg" menu = true menu_order = 2 [en] title = "Blog" slug = "blog" ``` **blogg/2025-01-15-mitt-innlegg/metadata.ini:** ```ini title = "Mitt første innlegg" date = "2025-01-15" summary = "Dette er mitt første innlegg" [en] title = "My first post" summary = "This is my first post" ``` ## Feilsøking ### Innhold vises ikke for ikke-standardspråk Kontroller at du har enten: - En språkspesifikk fil (f.eks. `page.en.md`) - ELLER metadata med språkseksjon som inneholder `title` ### Navigasjon viser feil språk Sørg for at `menu = true` er satt i base-seksjonen av metadata.ini, ikke i språkseksjonen. ### URL-er fungerer ikke Sjekk at `slug` matcher URL-segmentet du prøver å nå.