hallo
Aufgabe: Erstelle eine Mehrsprachigkeit für die Kissthemes, die berücksichtigt, dass jede Seite mehr oder minder vollständige Übersetzungen beinhaltet mit jeweils eigenen Sprachoptionen.
Lösungsnsatz:
Syntaxguideline
html lang=de
Übersetzungstätigkeit: Konvertiere
<p>Deutsch</p>
nach
<p lang="multi">
<span lang="it">Italiano</span>
<span lang="fr">Francais</span>
<span lang="de">Deutsch</span>
</p>
Elementtypen spielen keine Rolle.
Falls eine Sprachwahl vorliegt, wird diese im html-Element in data-lang gspeichert.
Das zugehörige CSS.
In _.lang ist der Wert von html lang gespeichert. Dieser Wert bleibt konstant.
html[lang="'+_.lang+'"] [lang="multi"] > :not([lang="'+_.lang+'"]){display:none}\
html[data-lang="en"] [lang="multi"] > [lang="en"],\
html[data-lang="es"] [lang="multi"] > [lang="es"],\
html[data-lang="de"] [lang="multi"] > [lang="de"],\
html[data-lang="fr"] [lang="multi"] > [lang="fr"],\
html[data-lang="it"] [lang="multi"] > [lang="it"]{display:initial}\
html[data-lang] [lang="multi"] > [lang]:last-of-type{display:initial}\
html[data-lang="en"] [lang="multi"] > [lang="en"] ~ [lang="'+_.lang+'"],\
html[data-lang="es"] [lang="multi"] > [lang="es"] ~ [lang="'+_.lang+'"],\
html[data-lang="de"] [lang="multi"] > [lang="de"] ~ [lag="'+_.lang+'"],\
html[data-lang="fr"] [lang="multi"] > [lang="fr"] ~ [lang="'+_.lang+'"],\
html[data-lang="it"] [lang="multi"] > [lang="it"] ~ [lang="'+_.lang+'"]{display:none}\
Das funktioniert, sollte aber rationeller notiert werden.
Allgemeine Mechanik
- WENN COOKIE -> data-lang = Cookie Wert
- SONST WENN QUERSTRING -> data-lang = QS Wert
- SONST keine spezifische Usersprache.
Es ist zu erwarten, dass das Dokument-html von Autoren erstellt wird, die sehr wenig über html wissen. Die Syntax muss entsprechend einfach bleiben.
Das hiessige Konzept stellt eine unnötige Schrierigkeit. Die Fallback-Sprachversion muss die letzte notierte Version sein (CSS kann anders nicht greifen.) Sprachversionen müssen unmittelbare Kinder des Elements mit lang="multi" sein.
Einschränkung: Diese Form von Mehrsprachigkeit manipuliert keine einzelnen Attributwerte. Betroffen sind Attribute wie aria-label, title
Eine funktionierende Implementation liegt vor.
Ich möchte jetzt eure Kritik hören.