Dokumentacija

Nastavite jezik strani

Nastavite jezik strani

Atribut lang na oznaki <html> pove, v katerem jeziku je stran napisana: <html lang="sl">. Bralniki zaslona po njem izberejo pravi glas in izgovorjavo; brez njega slovensko stran bere angleški glas in je komaj razumljiva. Brskalnik po njem presodi, ali naj ponudi prevod, iskalniki pa ga upoštevajo kot enega od signalov, komu je stran namenjena.

Gre za en atribut, ki se običajno nastavi na enem mestu za celo stran. Kontrolni seznam strani opozori, kadar ga domača stran nima.

Kakšna naj bo vrednost

Vrednost je jezikovna koda (BCP 47): dvočrkovna oznaka jezika, po potrebi z regijo.

Vrednost Pomen
en angleščina
en-GB, en-US angleščina z regijo, kadar je razlika pomembna
sl slovenščina
pl poljščina
de-AT nemščina, kot jo govorijo v Avstriji

Pogoste napake:

  • sl_SI, en_US s podčrtajem so imena lokalizacij na strežniku, ne jezikovne kode HTML. Uporabite vezaj: sl-SI ali preprosto sl.
  • si je sinhalščina, ne slovenščina. Slovenščina je sl.
  • Ena vrednost za vse jezike. Na večjezični strani potrebujejo poljske strani pl, angleške pa en; lang="sl" na vseh straneh je na večini napačen.

Kontrolni seznam preveri samo, ali atribut obstaja. Ali se vrednost ujema z vsebino, potrdite sami.

Preverite sami

Namesto example.com vpišite svojo stran:

curl -s https://example.com | grep -io '<html[^>]*>'

Izpis mora vsebovati lang="…" s pravo kodo, na primer <html lang="sl">. Na večjezični strani ukaz poženite za eno stran v vsakem jeziku.

Kako popraviti

Izberite, kako je vaša stran narejena. Na večini platform jezik pride iz ene nastavitve; v lastni kodi je to ena vrstica v glavni predlogi.

WordPress

WordPress atribut izpiše sam, iz nastavitve Settings → General → Site Language, prek funkcije language_attributes() v temi. Če atributa ni, preverite dve stvari.

1. Jezik strani. Odprite Settings → General, izberite pravi Site Language in kliknite Save Changes.

2. Tema. Teme blokov (Twenty Twenty-Two in novejše) ga izpišejo vedno. Klasična tema mora v header.php poklicati language_attributes(), nekatere starejše ali po meri narejene teme pa izpišejo golo <html>. Odprite header.php (v podrejeni temi, da posodobitev ne prepiše spremembe) in vrstico uredite takole:

<!DOCTYPE html>
<html <?php language_attributes(); ?>>

Večjezične strani. WPML in Polylang jezik preklapljata za vsako stran prek iste funkcije, zato s temo, ki kliče language_attributes(), vsak prevod dobi svojo kodo brez dodatnih nastavitev. Če imajo vsi jeziki isto kodo, je vrednost v temi zapečena: popravite header.php, kot je opisano zgoraj.

Nato počistite predpomnilnik strani (WP Rocket, LiteSpeed Cache, W3 Total Cache, predpomnilnik ponudnika gostovanja).

Node.js in Next.js

Next.js, App Router. Oznako <html> izpiše korenska predloga. V app/layout.tsx (ali .js):

export default function RootLayout({ children }) {
    return (
        <html lang="sl">
            <body>{children}</body>
        </html>
    );
}

Če ima vsak jezik svojo pot (app/[lang]/layout.tsx), vzemite vrednost iz poti. V Next.js 15 in novejših je params promise:

export default async function RootLayout({ children, params }) {
    const { lang } = await params;

    return (
        <html lang={lang}>
            <body>{children}</body>
        </html>
    );
}

Next.js, Pages Router. Z nastavitvijo i18n v next.config.js Next.js lang nastavi sam. Brez nje ga nastavite v pages/_document.js:

import { Html, Head, Main, NextScript } from 'next/document';

export default function Document() {
    return (
        <Html lang="sl">
            <Head />
            <body>
                <Main />
                <NextScript />
            </body>
        </Html>
    );
}

Druge aplikacije Node.js (Express s predlogami, Nuxt, Astro, SvelteKit): nastavite ga tam, kjer se izpiše oznaka <html>. V SvelteKitu je to src/app.html, v Astru glavna predloga, v Nuxtu app.head.htmlAttrs v nuxt.config.

Laravel

Novi projekti Laravel to v predlogah že imajo, projekti, ki so začeli iz lastne predloge, pogosto ne. V glavni predlogi (na primer resources/views/layouts/app.blade.php):

<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

app()->getLocale() je jezik aplikacije iz config/app.php (APP_LOCALE v .env) ali tisti, ki ga za zahtevek nastavi vaš middleware za jezik. str_replace lokalizacijo, kot je sl_SI, spremeni v veljavno sl-SI.

Statični HTML

Vsaka datoteka HTML se začne z isto oznako. Atribut ji dodajte na vsaki strani:

<!DOCTYPE html>
<html lang="sl">

Če stran gradi generator (Hugo, Jekyll, Eleventy), ga spremenite enkrat v osnovni predlogi. V Hugu nastavite languageCode v konfiguraciji strani in v osnovni predlogi uporabite <html lang="{{ site.Language.LanguageCode }}">.

Shopify

Teme Shopify atribut izpišejo iz jezika trgovine: Dawn in druge aktualne teme uporabljajo <html lang="{{ request.locale.iso_code }}">. Jeziki se nastavijo v Settings → Languages.

Če ga ni, je tema prilagojena ali stara. Odprite Online Store → Themes → … → Edit code, poiščite layout/theme.liquid in oznako <html> spremenite v:

<html lang="{{ request.locale.iso_code }}">

Wix

Wix atribut izpiše iz jezika strani, z Wix Multilingual pa ga preklaplja po jezikih. Oznake <html> ne morete urejati. Če kontrolni seznam pokaže napačen jezik, spremenite jezik strani v jezikovnih nastavitvah na nadzorni plošči; če ne pokaže nobenega, se obrnite na podporo Wix.

Webflow

Webflow vrednost vzame iz primarne lokalizacije strani: v Site settings → Localization nastavite primarno lokalizacijo (primary locale) in stran znova objavite. Z Webflow Localization dobi vsaka lokalizacija na svojih straneh svojo kodo.

Squarespace

Squarespace atribut izpiše iz jezika strani v Settings → Language & Region. Če je napačen, ga spremenite tam. Oznake <html> ne morete urejati neposredno.

Potrdite popravek

Znova poženite ukaz curl iz razdelka Preverite sami, nato v PulseKeeperju odprite tarčo in na zavihku Kontrolni seznam kliknite Preveri zdaj. Postavka se v nekaj minutah obarva OK, ne šele ob naslednjem dnevnem preverjanju.