Update internal links to use absolute paths
Update developer documentation paths and rename to "Utvikling"
This commit is contained in:
parent
7ad0062dee
commit
cea2c167ff
23 changed files with 14 additions and 14 deletions
|
|
@ -0,0 +1,2 @@
|
|||
title = "Flerspråklige sider"
|
||||
summary = "Lær hvordan du lager nettsider med støtte for flere språk"
|
||||
216
custom/docs/utvikling/hvordan/multilingual-sites/page.md
Normal file
216
custom/docs/utvikling/hvordan/multilingual-sites/page.md
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
# 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
|
||||
<!-- I base.php -->
|
||||
<nav>
|
||||
<a href="<?= $currentLang !== $defaultLang ? "/$currentLang/" : "/" ?>">
|
||||
<?= $homeLabel ?>
|
||||
</a>
|
||||
<?php foreach ($navigation as $item): ?>
|
||||
<a href="<?= $item['url'] ?>"><?= $item['title'] ?></a>
|
||||
<?php endforeach; ?>
|
||||
</nav>
|
||||
```
|
||||
|
||||
## Språkvelger
|
||||
|
||||
Lag en språkvelger i basismalen:
|
||||
|
||||
```php
|
||||
<div class="language-switcher">
|
||||
<a href="/" <?= $currentLang === 'no' ? 'aria-current="page"' : '' ?>>NO</a>
|
||||
<a href="/en<?= $requestPath ? '/' . $requestPath : '' ?>"
|
||||
<?= $currentLang === 'en' ? 'aria-current="page"' : '' ?>>EN</a>
|
||||
</div>
|
||||
```
|
||||
|
||||
## Bruke oversettelser i maler
|
||||
|
||||
Oversettelser fra språkfilene er tilgjengelige i `$translations`:
|
||||
|
||||
```php
|
||||
<a href="#"><?= $translations['read_more'] ?? 'Read more' ?></a>
|
||||
```
|
||||
|
||||
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å.
|
||||
Loading…
Add table
Add a link
Reference in a new issue