summaryrefslogtreecommitdiff
path: root/app/index.html
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2026-08-09 21:50:19 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2026-08-22 19:18:04 +0200
commit4b635085e9f10ccdded0e90e850be9274724683e (patch)
tree67c8671e2138c67b26b464887bf166c01d299af2 /app/index.html
parent26c96e92cda9441ed3fe5e7b1b5849290bfef14c (diff)
Noch mehr Sprachen
Diffstat (limited to 'app/index.html')
-rw-r--r--app/index.html143
1 files changed, 125 insertions, 18 deletions
diff --git a/app/index.html b/app/index.html
index c9022b0..3f72169 100644
--- a/app/index.html
+++ b/app/index.html
@@ -86,6 +86,69 @@ body{margin:0;background:var(--desk);color:var(--ink);font:13px/1.45 var(--ui);
.win.rolled .winbody{display:none}
/* ---------- Schrift ---------- */
+/* sitelen pona fuer Toki Pona. Die Woerterbuchdatei speichert sitelen
+ Lasina, also ASCII; die hier genannten Zeichensaetze binden die
+ ASCII-Woerter ueber Standardligaturen (liga/calt) zu Logographen.
+ Ist keiner davon installiert, bleibt lesbares Latein stehen — das
+ ist der Grund, warum hier ASCII und nicht die UCSUR-Belegung
+ U+F1900… gespeichert wird: die PUA-Fassung faellt ohne Zeichensatz
+ auf leere Kaestchen zurueck, diese hier auf Klartext.
+ "sitelen sa" liegt als Datei bei (sitelen-sa/sitelen-pona-pona.otf,
+ Unlicense) und steht deshalb vor den auf Systeminstallation
+ angewiesenen Alternativen: sie greift garantiert, unabhaengig davon,
+ was auf dem Geraet der lesenden Person installiert ist.
+ font-feature-settings ist noetig, weil Ligaturen ausserhalb von
+ Textfluss-Kontexten (Knoepfe, Tabellenzellen) sonst deaktiviert
+ sind; font-variant-ligatures allein reicht dafuer nicht.
+ text-rendering:optimizeLegibility schaltet zusaetzlich die
+ kontextuellen Ligaturen im Layout-Schritt frei (von sitelen sa selbst
+ fuer den Latein-zu-Logogramm-Weg empfohlen). */
+@font-face{
+ font-family:"sitelen sa";
+ src:url("sitelen-sa/sitelen-pona-pona.otf") format("opentype");
+ font-display:swap}
+/* --ui und --mono selbst umbiegen, nicht nur font-family auf [lang="tok"]
+ setzen: .btn, .opt .big & Co. schreiben font-family:var(--ui) bzw.
+ var(--mono) und stehen im Stylesheet NACH dieser Regel. Bei gleicher
+ Spezifitaet (Klasse vs. Attributselektor, je 0,1,0) gewinnt die spaetere
+ Regel im Quelltext — var(--ui) haette also wieder MS Sans Serif
+ eingesetzt. Custom Properties vererben sich dagegen unabhaengig von der
+ Selektor-Reihenfolge; wird --ui hier neu definiert, sehen alle
+ Nachfahren, die var(--ui)/var(--mono) verwenden, automatisch den
+ sitelen-sa-Stack. (Kein var(--ui) als Fallback INNERHALB dieser
+ Neudefinition: ein selbstreferenzierendes Custom Property gilt am
+ Element seiner eigenen Deklaration als zyklisch und wird ungueltig —
+ deshalb hier die Fallback-Ketten ausgeschrieben statt verkettet.) */
+[lang="tok"]{
+ --ui:"sitelen sa","linja pona","Fairfax Pona HD","sitelen seli kiwen mono",
+ "linja sike","nasin-nanpa","MS Sans Serif","Microsoft Sans Serif",
+ Tahoma,Geneva,Verdana,Arial,"MS PGothic","Hiragino Kaku Gothic ProN",
+ "Yu Gothic UI",Meiryo,"Noto Sans JP",sans-serif;
+ --mono:"sitelen sa","linja pona","Fairfax Pona HD","sitelen seli kiwen mono",
+ "linja sike","nasin-nanpa","Fixedsys","Lucida Console","Courier New",
+ "MS Gothic","Hiragino Kaku Gothic ProN","Noto Sans Mono CJK JP",monospace}
+[lang="tok"], [lang="tok"] *{
+ font-family:var(--ui);
+ font-feature-settings:"liga" 1,"calt" 1;
+ font-variant-ligatures:common-ligatures contextual;
+ text-rendering:optimizeLegibility}
+/* Urindogermanisch braucht Kombinationszeichen (Ringel unter m n r l,
+ Hatschek ueber k g, tiefgestellte Indizes an den Laryngalen). Die
+ Windows-Bitmapschriften des Stilblatts haben davon nichts; ohne
+ Umschaltung erscheinen Ersatzkaestchen mitten im Wort. */
+/* Keilschrift liegt in U+12000…U+1247F. Santakku steht zuerst, weil es als
+ einziger der genannten Zeichensaetze altbabylonische Zeichenformen hat;
+ die Referenzglyphen des Unicode-Standards sind neuassyrisch und damit
+ rund tausend Jahre zu jung. Ohne einen davon: leere Kaestchen. Anders
+ als bei sitelen pona gibt es hier keine sanfte Ruecknahme — Keilschrift
+ braucht eigene Zeichen und laesst sich nicht aus Latein ligieren. */
+[lang="akk-x-ob"], [lang="akk-x-ob"] *{
+ font-family:"Santakku","SantakkuM","Assurbanipal","CuneiformComposite",
+ "Noto Sans Cuneiform","Segoe UI Historic",sans-serif;
+ line-height:1.7}
+[lang="ine-x-proto"], [lang="ine-x-proto"] *{
+ font-family:"Charis SIL","Gentium Plus","Doulos SIL","Segoe UI",
+ "DejaVu Sans","Times New Roman",serif}
h1{font-size:15px;margin:0 0 2px;font-weight:700}
h2{font-size:13px;margin:0 0 3px;font-weight:700}
h3{font-size:12px;margin:12px 0 5px;font-weight:700}
@@ -487,6 +550,10 @@ a{color:var(--navy)}
<script src="i18n.en.js"></script>
<script src="i18n.la.js"></script>
<script src="i18n.ja.js"></script>
+<script src="i18n.ine-x-proto.js"></script>
+<script src="i18n.jbo.js"></script>
+<script src="i18n.tok.js"></script>
+<script src="i18n.akk-x-ob.js"></script>
<script src="i18n.nl.js"></script>
<script src="i18n.fr.js"></script>
<script src="i18n.tr.js"></script>
@@ -519,7 +586,8 @@ a{color:var(--navy)}
nds (Niederdeutsch) und bar (Bairisch); keine dieser drei Sprachen hat einen
zweibuchstabigen Code. */
var LANGS = ['de','de-x-amt','de-x-sales','en','nl','nds','bar','fr','eu','eo','tr','uk',
- 'got','goh','gmh','la','grc','sa','ja'];
+ 'got','goh','gmh','la','grc','sa','ja','ine-x-proto','jbo','tok',
+ 'akk-x-ob'];
var LANGKEY = 'altersvorsorge.lang';
var DICT = { de: window.I18N_DE || {}, en: window.I18N_EN || {},
nl: window.I18N_NL || {}, nds: window.I18N_NDS || {},
@@ -530,8 +598,11 @@ var DICT = { de: window.I18N_DE || {}, en: window.I18N_EN || {},
gmh:window.I18N_GMH || {}, la: window.I18N_LA || {},
grc:window.I18N_GRC || {}, sa: window.I18N_SA || {},
ja: window.I18N_JA || {},
- 'de-x-amt': window.I18N_DE_X_AMT || {},
- 'de-x-sales': window.I18N_DE_X_SALES || {} };
+ jbo:window.I18N_JBO || {}, tok: window.I18N_TOK || {},
+ 'de-x-amt': window.I18N_DE_X_AMT || {},
+ 'de-x-sales': window.I18N_DE_X_SALES || {},
+ 'ine-x-proto': window.I18N_INE_X_PROTO || {},
+ 'akk-x-ob': window.I18N_AKK_X_OB || {} };
var FMT = {}; /* wird in applyLocale() gefuellt */
/* Autonyme fuer die Schaltflaechen. Ein Kuerzel im Knopf, der volle Name im
@@ -550,7 +621,18 @@ var AUTONYM = {
/* Registervarianten des Deutschen (BCP 47 § 2.2.7, privater Untertag):
keine Sprachen, sondern Stilebenen — das Autonym nennt daher den
Registernamen, nicht "Deutsch" ein zweites Mal. */
- 'de-x-amt': 'Amtsdeutsch', 'de-x-sales': 'Vertriebsdeutsch'
+ 'de-x-amt': 'Amtsdeutsch', 'de-x-sales': 'Vertriebsdeutsch',
+ /* Konstruierte Sprachen tragen ihr eigenes Selbstbezeichnungswort;
+ Lojban nennt sich la .lojban., Toki Pona toki pona. Das
+ Urindogermanische kann sich per definitionem nicht selbst nennen
+ — es ist unbelegt. Es steht deshalb mit dem rekonstruierten Wort
+ fuer "Zunge, Sprache" da, mit Asterisk, wie sich das gehoert. */
+ jbo:'la .lojban.', tok:'toki pona', 'ine-x-proto':'*dn\u0325\u01F5\u02B0w\u00E9h\u2082s',
+ /* li\u0161\u0101num akkad\u00fbm, in Keilschrift — die Sprache nennt sich
+ selbst, wie alle anderen hier auch. Ohne Keilschriftzeichensatz
+ erscheinen Kaestchen; derselbe Preis wie bei jeder Schrift jenseits
+ von Latein-1. */
+ 'akk-x-ob':'\u{12145}\u{12157}\u{12248}\u{1220D}\u{1231D} \u{1201D}\u{12157}\u{1204D}\u{12311}\u{1231D}'
};
/* Teiluebersetzte Sprachen: Oberflaeche, Feldnamen, Tabellenkoepfe und
@@ -1442,7 +1524,9 @@ function encodeState() {
var LOCALES = { de:'de-DE', en:'en-GB', nl:'nl-NL', nds:'de-DE', bar:'de-DE',
fr:'fr-FR', eu:'eu-ES', eo:'de-DE', tr:'tr-TR', uk:'uk-UA',
got:'de-DE', goh:'de-DE', gmh:'de-DE',
- la:'de-DE', grc:'de-DE', sa:'de-DE', ja:'ja-JP' };
+ la:'de-DE', grc:'de-DE', sa:'de-DE', ja:'ja-JP',
+ jbo:'en-GB', tok:'en-GB', 'ine-x-proto':'de-DE',
+ 'akk-x-ob':'de-DE' };
/* Nur fuer den mehrdeutigen Eingabefall „1,234“ relevant, siehe parseNum().
Sprachen mit schmalem Leerraum als Tausendertrenner (fr, uk) bekommen
U+202F: dann matcht weder Punkt noch Komma, und beide werden als
@@ -1450,7 +1534,9 @@ var LOCALES = { de:'de-DE', en:'en-GB', nl:'nl-NL', nds:'de-DE', bar:'de-DE',
var GRUPPEN = { de:'.', en:',', nl:'.', nds:'.', bar:'.',
fr:' ', eu:'.', eo:'.', tr:'.', uk:' ',
got:'.', goh:'.', gmh:'.',
- la:'.', grc:'.', sa:'.', ja:',' };
+ la:'.', grc:'.', sa:'.', ja:',',
+ jbo:',', tok:',', 'ine-x-proto':'.',
+ 'akk-x-ob':'.' };
var LOCALE = 'de-DE', nf0 = null, nf2 = null, nfp = null;
function applyLocale(){
LOCALE = LOCALES[LANG] || 'de-DE';
@@ -2771,26 +2857,37 @@ function applyStatic(){
/* =====================================================================
SPRACHAUSWAHL
- Neunzehn Knoepfe nebeneinander sind keine Auswahl mehr, sondern eine
+ Dreiundzwanzig Knoepfe nebeneinander sind keine Auswahl mehr, sondern eine
Wand. Also: ein Knopf oeffnet ein Panel, das Panel gliedert nach
Sprachverwandtschaft. Die Gliederung ist genealogisch und flach —
eine Partition der Menge LANGS, keine Baumnavigation; ein Baum mit
- 19 Blaettern hat mehr Knoten als Blaetter und kostet nur Klicks.
+ 23 Blaettern hat mehr Knoten als Blaetter und kostet nur Klicks.
WARUM DIE GRUPPENNAMEN LATEINISCH SIND. Sie muessten sonst in jede
- der 19 Sprachen uebersetzt werden — sechs Gruppen mal 19 Sprachen
- sind 114 zusaetzliche Woerterbucheintraege, davon etliche in
+ der 23 Sprachen uebersetzt werden — sieben Gruppen mal 23 Sprachen
+ sind 161 zusaetzliche Woerterbucheintraege, davon etliche in
Gotisch, Sanskrit und Althochdeutsch, fuer die es die Termini
„Indogermanistik" schlicht nicht gibt. Dasselbe Argument, das oben
die Autonyme begruendet: eine sprachneutrale Konvention statt n²
Eintraege. Die wissenschaftliche Nomenklatur ist im Lateinischen
ohnehin zu Hause (Linné lässt gruessen), und wer „Germanica" liest,
- erkennt seine Gruppe in jeder der 19 Oberflaechensprachen wieder.
-
- Das Kreuz † markiert historische Sprachstufen ohne heutige
- Sprechergemeinschaft — got, goh, gmh, la, grc, sa.
+ erkennt seine Gruppe in jeder der 23 Oberflaechensprachen wieder.
+
+ Das Kreuz † markiert Sprachstufen ohne heutige Sprecher-
+ gemeinschaft — got, goh, gmh, la, grc, sa, ine-x-proto und akk-x-ob.
+ Beim Urindogermanischen ist das Kreuz streng genommen zu
+ schwach: die anderen sechs sind tot, aber belegt; dieses ist
+ nie aufgeschrieben worden und existiert ausschliesslich als
+ Rekonstruat. Der Asterisk vor jeder Form sagt das genauer,
+ als es ein Kreuz im Knopf koennte.
===================================================================== */
var FAMILIEN = [
+ /* Das Urindogermanische steht allein und zuerst: es ist kein Zweig
+ neben den anderen, sondern deren gemeinsame Wurzel. Es in
+ „Indoeuropaea cetera" einzureihen waere ein Kategorienfehler —
+ der Vorfahr ist kein Geschwister. Daher eine eigene Gruppe,
+ obendrein mit dem Kreuz, denn gesprochen wird es lange nicht mehr. */
+ { tax:'Radix', langs:['ine-x-proto'] },
/* Registervarianten sind keine eigenen Sprachen, sondern Stilebenen
derselben (BCP 47 § 2.2.7). Sie stehen deshalb zusammen und zuerst,
nicht verteilt im germanischen Zweig. */
@@ -2798,14 +2895,24 @@ var FAMILIEN = [
{ tax:'Germanica', langs:['nds','nl','en','bar','gmh','goh','got'] },
{ tax:'Italica', langs:['fr','la'] },
{ tax:'Indoeuropaea cetera', langs:['uk','grc','sa'] },
- { tax:'Extra Indoeuropaeam', langs:['eu','tr','ja'] },
- { tax:'Ficta', langs:['eo'] }
+ { tax:'Extra Indoeuropaeam', langs:['eu','tr','ja','akk-x-ob'] },
+ /* Ficta versammelt das planmaessig Gemachte. Die drei sind sich
+ darin unaehnlich genug, dass der Zweig sie unterscheidet:
+ Esperanto ist naturalistisch (europaeisches Lexikon, agglutinierende
+ Regelmaessigkeit), Lojban logizistisch (praedikatenlogische
+ Semantik, eindeutige Grammatik), Toki Pona minimalistisch
+ (120 Woerter, Bedeutung entsteht im Kontext). */
+ { tax:'Ficta', langs:['eo','jbo','tok'] }
];
/* Zweigangabe fuer die Sammelgruppen, damit „cetera" nicht nur ein
Restposten ist: sie steht im title des jeweiligen Knopfes. */
var ZWEIG = { uk:'Slavica', grc:'Hellenica', sa:'Indoaryana',
- eu:'lingua sola (isolata)', tr:'Turcica', ja:'Iaponica' };
-var HISTORISCH = { got:1, goh:1, gmh:1, la:1, grc:1, sa:1 };
+ eu:'lingua sola (isolata)', tr:'Turcica', ja:'Iaponica',
+ 'ine-x-proto':'lingua proto-indoeuropaea reficta',
+ eo:'naturalistica', jbo:'logica', tok:'minimalistica',
+ 'akk-x-ob':'Semitica — Babylonica vetus' };
+var HISTORISCH = { got:1, goh:1, gmh:1, la:1, grc:1, sa:1, 'ine-x-proto':1,
+ 'akk-x-ob':1 };
/* Konsistenzpruefung zur Ladezeit: die Familien muessen eine Partition
von LANGS sein — keine Sprache doppelt, keine vergessen. Eine neue