beatovich: Mehrsprachigkeit, Beurteilung

Beitrag lesen

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ürs lang-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.