Inhaltsverzeichnis
Mehrsprachigkeit, structbox 0.4.0, indexmenu und Galnet-Konzept
Ziel
Kapitel-Links im Codex automatisch erzeugen, ein Konzept für das Galnet-Archiv mit struct finden (bisher Yearbox, Tagesseiten), das Wiki mehrsprachig aufstellen (Frontier-Texte in allen Sprachen archivieren), structbox dafür erweitern und die Navigation von simplenavi auf etwas Passenderes umstellen.
Ergebnis / aktueller Stand
- Codex: Kapitel-Links im rechten WRAP per nspages statt von Hand:
<nspages . -exclude:start -simpleList -textPages="" -h1 -sortId>. Übersichtcodex:startals Kacheln der Unter-Namensräume:<nspages . -subns -nopages -usePictures -h1 -textNS="" -defaultPicture=…>– im dev-wiki bestätigt (Bild = erstes Bild der Startseite des Namensraums). - Translation-Plugin installiert und eingerichtet (siehe Technische Details). Deutsch liegt ohne Präfix, Übersetzungen in obersten Sprach-Namensräumen:
en:hangar:ships:adder. Sprachumschalter erscheint im dev-wiki. - structbox 0.4.0 gebaut (ZIP an Oliver), im Testwiki geprüft und im dev-wiki bestätigt:
en:hangar:ships:adderzeigt die Box mit Bild und Werten der deutschen Seite, ohne eigene Daten. - Navigation: simplenavi ersetzt durch indexmenu – eingeklappt bis auf den aktuellen Bereich, Sprach-Namensräume ausgeblendet. Im dev-wiki bestätigt.
- Hangar: erste Sprachseite
en:hangar:ships:addermit Frontier-Text angelegt. - Galnet: Konzept steht (siehe Entscheidungen), umgesetzt ist noch nichts. Die beiden Abruf-Skripte (
EliteArchive.py,elitearchive_new.py) wurden gelesen.
Entscheidungen
- Deutsch ist die wichtigste Sprache. Andere Sprachen dienen dem Archiv und dem Finden fehlender/fehlerhafter Übersetzungen (vor allem Galnet). Ein großes ausländisches Publikum wird nicht erwartet.
- Sprachaufbau nach Translation-Plugin: Hauptsprache ohne Präfix, Übersetzungen als
<sprache>:<gleiche ID>. Sprachen:en en-us es fr pt-br ru(EN-US wird mit archiviert – Archivgedanke). - struct-Daten nur auf der deutschen Seite; Sprachseiten bekommen kein Schema und zeigen per structbox 0.4.0 die deutschen Daten. Ausnahme: Artikel, die es nur auf Englisch gibt, tragen ihre Daten auf der
en:-Seite. - Überall die deutsche Vorlage (deutsche Beschriftungen auch auf Sprachseiten). Keine
en:vorlagen:…, keine Label-Übersetzungen im Schema, keineen:sidebarnötig – geht jederzeit nachträglich. - Galnet: eine Seite pro Artikel statt einer Seite pro Tag.
- ID:
galnet:JJJJ:MM:TT_01,_02… – Echtzeit-Datum, zweistellige Nummer in Frontier-Reihenfolge, in allen Sprachen gleich (en:galnet:JJJJ:MM:TT_01). - Infobox per structbox: Datum (intern Echtzeit), Spieldatum (Anzeige), Bild, Schlagwörter (z. B. Faulcon DeLacy, Zorgon Peterson, Eranin, Föderation), Quelle, Übersetzungsstand.
- Datum: intern Echtzeit, nach außen Spielzeit → zwei Felder (
dateals Date,date_ingameals Text), füllt das Import-Skript. - Übernahme und Verschlagwortung der Artikel macht Oliver von Hand; ältere Artikel (nur Englisch bei Frontier) hat Oliver bereits selbst übersetzt.
- Navigation mit indexmenu, nicht simplenavi (simplenavi kann Namensräume nur über
hidepagesausblenden – das würde Übersetzungen auch aus Suche/Änderungen werfen; Kompatibilität „unknown“, letztes Update 2023). - Sprachumschalter: vorerst wie er ist („nicht final, Funktion ist gegeben“).
Verworfen
galnet:de:…/hangar:de:…: Das Translation-Plugin erwartet die Sprache als obersten Namensraum, die Standardsprache ohne Präfix. Die Optiontranslationnsist im Plugin als „currently broken“ abgeschaltet.deeplautotranslate-Plugin: übersetzt nur von der Hauptsprache in die Sprach-Namensräume, nicht umgekehrt.- structbox 0.5.0 mit
$$label:feld$$/$$text:…$$(Beschriftungen aus den struct-Label-Übersetzungen, eine Vorlage für alle Sprachen): unnötig, da Deutsch die Hauptsprache ist. - Eigener struct-Datentyp „Galnet-Datum“ (speichert Echtzeit, zeigt Spielzeit): zwei Felder reichen.
- Mini-Plugin für den Sprachumschalter:
pageheader.htmlgenügt.
Offene Punkte
useheadingauf „Nur Navigation“ stellen (Titel statt IDs in indexmenu und in structbox-Links). Frage: Ausnahme fürki:– geht nicht pro Namensraum (siehe Technische Details).skipfile+/(^|:)sidebar$/in die Sidebar-Zeile übernehmen (falls noch nicht geschehen).curl-Test: Liefertelitedangerous.com/equipment/starships/<schiff>mitAccept-Language: de-DE/fr-FRübersetzte Texte? (Claude kommt nicht an die Seite.) Davon hängt das Import-Skript für die Schiffstexte ab.Galnet: Schlagwörter als mehrere Felder (Konzerne, Fraktionen, Personen, Systeme, Handlung) – Claudes Empfehlung, von Oliver noch nicht bestätigt.
Galnet: Ersatz für die Yearbox-Übersicht (Oliver findet sie nicht hübsch). Vorschlag: Monatsseiten mit nspages-Kacheln, Jahresseiten mit struct-Tabelle, Seiten pro Handlungsstrang.
Galnet: Was passiert mit den alten Tagesseiten (
galnet:2014:09:19)? Behalten als Liste/Weiterleitung oder Links per Skript auf die Artikel umbiegen.EliteArchive.py: erkennt nur englische Monatskürzel – falls die DE-Seite „MAI/OKT/DEZ“ schreibt, wurden diese DE-Artikel als „UNGÜLTIGES DATUM“ verworfen. ImEliteArchive.logprüfen.elitearchive_new.py:adate()doppelt definiert, die zweite Fassung verweist auf nicht existierendeYEAR/MONTH(betrifft nur Artikel ohne/mit kaputtem Datum).- Optional später:
translateui(Oberfläche wechselt mit der Sprache),en:sidebar,en:vorlagen:….
Nächste Schritte
- Neue Sitzung „Galnet-Import“: Skript planen, das aus beiden Archiven + Wiki-Backup die Artikelseiten (DE und alle Sprachen) und einen Lückenbericht erzeugt.
- Danach dasselbe für die Schiffstexte von Frontier (nach dem
curl-Test). useheadingund Sidebar-Zeile im dev-wiki nachziehen.
Technische Details
Translation-Plugin (Stand 2025-05-20)
| Einstellung | Wert |
|---|---|
| translations | en en-us es fr pt-br ru (Standardsprache nicht angeben) |
| skiptrans | ^:?([a-z-]+:)?(sidebar|vorlagen|wiki|playground|temp)(:|$) |
| dropdown | an (zeigt nur die aktuelle Sprache, Rest beim Draufzeigen) |
| checkage, copytrans, translateui, redirectstart | aus |
skiptranslistet Seiten ohne Umschalter; das Plugin prüft die ID mit führendem Doppelpunkt (':' . $id). Der Ausdruck oben braucht keine Sprachliste und wächst nicht mit neuen Bereichen. Im Testwiki geprüft:hangar,en:hangar,pt-br:galnet,codex→ Umschalter;sidebar,en:sidebar,vorlagen:…,fr:vorlagen:…,temp:…→ keiner;vorlagenarchiv:x→ Umschalter.- Der Umschalter baut sich nicht selbst ins Template ein. Lösung:
lib/tpl/dokuwiki/pageheader.html(odersidebarheader.html):
<?php $translation = plugin_load('helper', 'translation'); if ($translation) echo $translation->showTranslations(); ?>
gibt es nicht;schaltet das Plugin für eine Seite ab.- struct bietet im Schema-Editor für jedes Feld Labels pro Sprache der Translation-Liste. struct nutzt sie in Tabellen/Listen/Formular nach der Oberflächensprache (
$conf['lang'], Rückfall Englisch) – also nur mittranslateuisprachabhängig.
structbox 0.4.0
- Daten: Eine Seite
<sprache>:<rest>zeigt die Daten der ersten passenden Seite:<rest>(Hauptsprache) → Ersatzsprachen (Einstellungfallback, Standarden) → eigene Daten. „Passend“ = existiert, hat mindestens einen ausgefüllten Wert, Leser darf sie lesen. Eine neue, leere DE-Seite übernimmt also erst, wenn dort etwas eingetragen ist. - Vorlagen: Sprache der Seite → Ersatzsprachen → Hauptsprache (
fr:vorlagen:schiffe→en:vorlagen:schiffe→vorlagen:schiffe). - Sprachlogik kommt vom Translation-Plugin (
getTransParts,buildTransID), keine eigene Sprachliste. - Rechte/Cache: Ist das Gegenstück nicht für alle lesbar, wird die Sprachseite nicht gecacht (sonst könnte ein Admin-Aufruf gesperrte Daten in den Cache schreiben). Metadaten (Kachelbild) nur aus öffentlich lesbaren Gegenstücken.
- Kommandozeile:
bin/indexer.php/bin/render.phplaufen ohne ACL-System (NOSESSION). structbox liest dann die@ALL-Regeln selbst aus der ACL-Datei – sonst verlören Sprachseiten beim Index-Neuaufbau ihr Kachelbild. - Cache-Abhängigkeiten: zusätzlich alle Sprachvorlagen-Kandidaten und die Dateien der Gegenstücke (Anlegen einer DE-Seite oder FR-Vorlage rendert die Sprachseiten neu).
- Neue Einstellungen:
translation(an),fallback(en). Ohne Translation-Plugin oder mittranslation= aus identisch zu 0.3.0 (Ausgabe verglichen). - Getestet (DokuWiki 2026-07-14c „Mort“, PHP 8.3, struct 2026-09-21, translation 2025-05-20, nspages): DE-Daten auf en/fr/en-us, nur-englischer Artikel (fr folgt en), leere DE-Seite, gesperrte DE-Seite (anonym/Leser/Admin, kein Cache), Daten ändern, Gegenstück neu anlegen, FR-Vorlage neu anlegen, EN-Vorlage als Rückfall, alte Revision (zeigt DE-Daten von damals), Platzhalter im Seitentext, nspages-Kacheln in
en:, Metadaten auf der Kommandozeile, keine PHP-Warnungen. - Geänderte Dateien:
helper.php,syntax/box.php,syntax/field.php,action.php,conf/default.php,conf/metadata.php,lang/*/settings.php,README.md,plugin.info.txt(Datum 2026-10-26). - Grenze: struct-Abfragen in der Vorlage mit
$ID$beziehen sich auf die angezeigte Seite, nicht auf die Datenseite. Werte (Auswahllisten, Seitenlinks) werden nicht übersetzt.
struct-Zuweisung
- Muster
hangar:**= Namensraum samt Unter-Namensräumen. Für Galnet:galnet:**unden:galnet:**(nur-englische Artikel). Andere Sprachen kein Schema.
indexmenu (Sidebar)
sidebar:
====== Navigation ======
{{indexmenu>:#1|js navbar nocookie tsort nsort skipns+/^(en|en-us|es|fr|pt-br|ru|vorlagen|temp|playground)$/ skipfile+/(^|:)sidebar$/}}
en:sidebar (optional, für andere Sprachen en an beiden Stellen tauschen):
====== Navigation ======
{{indexmenu>en#1|js navbar nocookie tsort nsort skipns+/^en:vorlagen$/ skipfile+/(^|:)sidebar$/}}
#1= nur oberste Ebene offen,navbaröffnet den Weg zur aktuellen Seite,nocookie= merkt sich nichts,tsort nsort= nach Titel,skipns+/skipfile+= ausblenden.jsverlangtdefer_jsaus (sonst roter Hinweis).- „Indexmenu id conflict“ + doppelte Liste erscheinen nur auf der Seite
sidebarselbst (Menü zweimal auf der Seite) – harmlos. - Titel statt IDs erst mit
useheading= „Nur Navigation“.useheadinggilt nur wiki-weit, keine Ausnahme pro Namensraum möglich.
Galnet – Quellen
EliteArchive.py (alt) | elitearchive_new.py (neu) |
|
|---|---|---|
| Quelle | community.elitedangerous.com, Tagesseiten | Frontier-API (elitedangerous.com) |
| Zeitraum | was die Übersicht verlinkt, inkl. 3300 | 3301–3312 |
| Sprachen | EN, DE, FR | EN, EN-US, DE, ES, FR, PT-BR, RU |
| Frontier-ID / URL / Bilder | – | ja (image_index.csv) |
| Text | HTML entfernt | wie von der API geliefert (evtl. HTML) |
- EN bei Frontier ab 3301, DE erst ab ca. 3306 (Frontier lieferte vorher keine Übersetzungen).
- Die Frontier-ID ist in allen Sprachen gleich – Schlüssel zum Zusammenführen. 3300 hat keine ID → Ersatzschlüssel aus Datum + Titel.
- Schema-Entwurf
galnet:date(Date, Echtzeit),date_ingame(Text),picture(Media),konzerne/fraktionen/personen/handlung(Page, mehrfach),systeme(Text, mehrfach – keine eigenen Seiten),source(Url),translation(Dropdown: Frontier-DE / eigene / KI / fehlt). - Beispielabfrage Handlungsstrang:
filter: handlung = $ID$,sort: date. Auf Personen-/Schiffsseiten in der Vorlage als<structbox-section>– verschwindet ohne Treffer. - Monatsübersicht:
<nspages galnet:2017:05 -usePictures -h1 -sortId -textPages="">(ID beginnt mit dem Tag →-sortIdsortiert nach Datum). - Lückenbericht als Nebenprodukt des Imports: EN ohne DE, DE auffällig kürzer als EN, DE mit englischen Sätzen; bei Schiffen Frontier-Werte vs. struct-Daten. Evtl. als Wartungsseite
wiki:uebersetzungsluecken.
Schiffstexte von Frontier
- Quelle:
elitedangerous.com/equipment/starships/<slug>(z. B.cobra-mk-iii): zwei Absätze Beschreibung + Werte. Kein Sprachumschalter, keine/de/-Adressen sichtbar; vermutlich Sprache perAccept-Languagewie bei der Galnet-API (ungeprüft). - Test (bei Oliver):
curl -s -A "Mozilla/5.0" -H "Accept-Language: de-DE" https://elitedangerous.com/equipment/starships/cobra-mk-iii | grep -i -o "mehrzweck.\{0,80\}"
curl -s -A "Mozilla/5.0" -H "Accept-Language: fr-FR" https://elitedangerous.com/equipment/starships/cobra-mk-iii | grep -i -o "polyvalent.\{0,80\}"
- Geplantes Skript: Frontier-Slug ↔ Wiki-Seite zuordnen (Tabelle zum Prüfen),
<sprache>:hangar:ships:…mit Text +{{structbox>ships}}erzeugen, DE-Seiten nicht anfassen, Berichte über DE-Abweichungen und Werte-Abweichungen.
Für die nächste KI
Das Wiki ist jetzt mehrsprachig nach dem Muster des Translation-Plugins: Deutsch ohne Präfix, Übersetzungen unter en:, en-us:, es:, fr:, pt-br:, ru: mit identischer Rest-ID. struct-Daten liegen nur auf der deutschen Seite (bei nur-englischen Galnet-Artikeln auf der en:-Seite); structbox 0.4.0 holt sie für alle Sprachseiten. Deutsch ist die Hauptsprache, die anderen dienen dem Archiv und dem Aufspüren von Übersetzungslücken – keine Arbeit in sprachabhängige Beschriftungen stecken. Navigation läuft über indexmenu. Die nächste Sitzung plant das Galnet-Import-Skript (Artikelseiten galnet:JJJJ:MM:TT_NN + alle Sprachen + Lückenbericht) auf Basis von elitearchive_new.py, EliteArchive.py und dem Wiki-Backup; Oliver übernimmt und verschlagwortet die Artikel selbst. Vor jeder Code-Änderung den Plan besprechen und auf „leg los“ warten.
