Gunnar Bittersmann: Mehrsprachigkeit, Beurteilung

Beitrag lesen

@@beatovich

Sprachversionen müssen unmittelbare Kinder des Elements mit lang="multi" sein.

Welches es nicht geben sollte. multi ist kein gültiger Wert fürs lang-Attribut; das dürfen nur Sprachkürzel sein. Verwende bspw. class="multilingual".

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?

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

Was es mit dem html[data-lang] bei dir auf sich hat, habe ich nicht so ganz verstanden.

LLAP 🖖

--
„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann