hallo
@@beatovich
Sprachversionen müssen unmittelbare Kinder des Elements mit lang="multi" sein.
Welches es nicht geben sollte.
multi
ist kein gültiger Wert fürslang
-Attribut; das dürfen nur Sprachkürzel sein. Verwende bspw.class="multilingual"
.
Kein Problem.
Das funktioniert, sollte aber rationeller notiert werden.
Du willst also dasjenige Kind eines
.multilingual{:.language-css}
-Containers (um beim obigen Vorschlag zu bleiben) anzeigen, dessen Sprache mit der in_.lang
vorgegebenen überseinstimmt, und wenn es kein solches gibt, dann das letzte?
nicht ganz, siehe unten.
Also alle anderen ausblenden (hier in Sass-Syntax mit der vorgegebenen Sprache in
$lang
):$lang: 'en'; .multilingual > :not([lang|="#{$lang}"]):not(:last-child), .multilingual > [lang|="#{$lang}"] ~ :last-child { display: none; }
Es werden alle Kindelemente von
.multilingual
ausgeblendet, deren Sprache nicht mit$lang
übereinstimmt, außer dem letzten, was als Defaultsprache erhalten bleibt. Wenn es ein Kindelement von.multilingual
gibt, dessen Sprache mit$lang
übereinstimmt und dieses nicht das letzte ist, dann wird auch das letzte ausgeblendet.☞ Codepen zum Rumspielen
Zum Vergleichen habe ich
|=
verwendet. Womöglich ist aber nicht[lang|="…"]
, sondern:lang(…)
die bessere Wahl. ☞ Stylen anhand von Sprachattributen
SCSS ist hier noch keine Option.
Was es mit dem
html[data-lang]
bei dir auf sich hat, habe ich nicht so ganz verstanden.
<html lang="de" data-lang="fr" data-lang-options="de fr it">
- lang="de" stellt hier die Hauptsprache dar, welche auch durch Sprachwahl nicht verändert wird.
- data-lang="fr" stellt (z.B) die Sprache dar, welche durch User-Action, Cookie oder Querystring gewählt wird/wurde, dieses Attribut kann auch fehlen.
- data-lang-options="de fr it" diese Sprachwahlbuttons werden auf dieser Seite zur Verfügung gestellt.
Es wäre falsch lang selber zu ändern, da ja die Mehsprachigkeit nur für Teile des Dokuments erstellt ist.
In dem Fall ist lang="de" die Fallback-Sprache, falls die gewünschte Sprachversion nicht für einen bestimmten Bereich verfügbar ist.