Mehrsprachigkeit, Beurteilung
bearbeitet von Gunnar Bittersmannhallo
> @@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](https://w3c.github.io/html/dom.html#element-attrdef-global-lang); 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`):
>
> ~~~SCSS
> $lang: 'en';
>
> .multilang > :not([lang|="#{$lang}"]):not(:last-child),
> .multilang > [lang|="#{$lang}"] ~ :last-child
> {
> display: none;
> }
> ~~~
>
> Es werden alle Kindelemente von `.multilingual`{:.language-css} ausgeblendet, deren Sprache nicht mit `$lang` übereinstimmt, außer dem letzten, was als Defaultsprache erhalten bleibt. Wenn es ein Kindelement von `.multilingual`{:.language-css} gibt, dessen Sprache mit `$lang` übereinstimmt und dieses nicht das letzte ist, dann wird auch das letzte ausgeblendet.
>
> ☞ [Codepen](https://codepen.io/gunnarbittersmann/pen/vQjaXM) zum Rumspielen
>
> Zum Vergleichen habe ich `|=` verwendet. Womöglich ist aber nicht `[lang|="…"]`{:.language-css}, sondern `:lang(…)`{:.language-css} die bessere Wahl. ☞ [Stylen anhand von Sprachattributen](https://www.w3.org/International/questions/qa-css-lang.de)
SCSS ist hier noch keine Option.
> Was es mit dem `html[data-lang]`{:.language-css} 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.
--
<https://beat-stoecklin.ch/pub/index.html>