Language · Writing systems · Transliteration
Taalpakke — Afrikaans in 42 scripts, effects & accents
χουι μορε· خُإِي مُرِ· 후이 모레· ᚷᚢᛁ ᛗᛟᚱᛖ (Goeie more)
Taalpakke ("language packs") is the sibling of Afurigana: where Afurigana writes Afrikaans in Japanese kana, Taalpakke does it in 42 different systems — 16 phonetic writing scripts (hiragana, Greek, Cyrillic, Arabic, Hebrew, Hangul, Han, Ge'ez, Devanagari, Bengali, Thai, Georgian, Armenian, Glagolitic, katakana, runes), glosses, text-effects (leet, vaporwave, braille, morse, upside-down, emoji…) and caricature accents (Kaaps, Boere, Saffa, Cockney, pirate, Scots). One shared normaliser turns spelling into phonemes; each pack maps sounds to its system — so "Goeie more" becomes χουι μορε, خُإِي مُرِ, 후이 모레, ᚷᚢᛁ ᛗᛟᚱᛖ… Around them: 42 real system locales in a random login rotation, a browser trainer with the spelling rules and a sound map for each, and a jargon woordeboek.
Live trainer
The trainer runs right here in the page. Pick any of the 42 packs from the rail; everything re-renders live. Vertaal turns anything you type into the chosen system; Fraseboek shows worked phrases; Spelreëls lists the spelling-to-sound rules; Klankkaart is the sound map (which glyph each sound becomes). Tip: the floating あ Taal ▾ picker (bottom-left) re-skins this whole site into any pack, with the English kept in brackets for the readable ones.
The 42 packs
Every pack is a real, installable Ubuntu locale that transliterates the Afrikaans gettext catalogs — ~86k strings across 365 domains — so the whole GNOME desktop renders in that system, fully reversible. The English-source packs (accents, lolcat, emoji) respell the original English msgid instead. Here is each one on a real phrase:
Writing scripts 16 — Afrikaans spelled phonetically
af_JPHiragana · Afuriganaaf_GRGreekaf_EGArabicaf_RUCyrillicaf_BDBengaliaf_CNMandarin · Hanaf_KRKorean · Hangulaf_MOKatakanaaf_ISRunes · Futharkaf_NPDevanagariaf_ILHebrewaf_THThaiaf_GEGeorgianaf_AMArmenianaf_ETGe'ez · Ethiopicaf_HRGlagoliticGlosses 8 — the script with the original alongside
af_TWkana + (afr)af_CYGreek/kana + (afr)af_HKkana + {l33t}af_MKGr/kana + {l33t}af_UACyrillic + {l33t}af_INBengali + {l33t}af_SGHan + {l33t}af_KPHangul + {l33t}Text effects & memes 10 — the string itself, mangled
af_USleetspeakaf_MXvaporwaveaf_FRbrailleaf_NZuwuaf_FImorseaf_AUupside-downaf_SEbubbleaf_FJmocking caseaf_CAlolcat · afraf_GBlolcat · engAccents 6 — phonetic respelling (eng accents respell the English UI)
af_NAKaapsaf_BWBoereaf_LSSaffa · Englishaf_GGCockneyaf_KYPirateaf_IMScotsBonus 2
af_ZWswearyaf_AQemoji 🎉locale-gen; taalrotate.sh picks a random one as the display language each login (never the same twice in a row). Try them live →📖 The Woordeboek — a jargon dictionary & thesaurus
Spend any time in these packs and the same question keeps coming up: what does this word even mean — and how does each pack write it? The Woordeboek answers both. It's a curated dictionary of ~90 real desktop and Linux terms — File, Save, Settings, Clipboard, Terminal, kernel, repository, sudo, daemon — each explained in one plain sentence, then shown rendered in every pack at once.
🔤 By word — a thesaurus
Each term is a card: the English word, its Afrikaans equivalent, a plain-language definition, and a grid of all the packs' "synonyms" grouped by family (scripts, glosses, effects, accents). Filter by category or narrow to one family.
🌐 By pack — a dictionary
Flip the mode and pick one pack to read the whole glossary in that single language — Greek, Hangul, braille, pirate — laid out as a proper dictionary, grouped by category, each entry with its meaning beside it.
🔌 Source-language aware
Every pack is fed the language its locale actually shows: Afrikaans for the scripts & effects, English for the accents, lolcat and emoji — so each cell matches what you'd really see on the desktop.
🧬 Single-sourced
The word list and definitions live in glossary.py; gen_glossary.py emits the data the page reads, and the renderings come from the same verified taal-engines.js as the trainer. Add a word, re-run, done.
One normaliser, many renderers
Every phonetic pack shares a single normaliser that collapses Afrikaans digraphs into internal phoneme symbols (aa/ee/oo long vowels, oe→[u], ei/ij/y/ui→[ai], sj/ch→[ʃ], tj→[tʃ], ng→[ŋ]); each renderer then only maps sounds to its own script. That single contract is what makes 15 scripts cheap to add:
- Alphabets — letter-for-letter sound maps (Greek, Cyrillic, Georgian, Armenian, Glagolitic, runes). Greek χ is literally the [x] in g/ch; β is modern [v] for w.
- Abjads — consonant + vowel-points, with carriers for word-initial vowels (Arabic harakat + mater; Hebrew niqqud).
- Abugidas — consonant + matra, virama for bare consonants, independent letters for lone vowels (Devanagari, Bengali, Thai — Thai even pre-poses เ/โ).
- Syllabaries — composed by pure codepoint arithmetic: Hangul
0xAC00 + (lead·21 + vowel)·28 + tail; Ge'ezbase + vowel-order. - Effects & accents — character maps (vaporwave, braille, bubble, flip), word/phrase substitution (lolcat, pirate, Kaaps), or case games (mocking) — placeholders like
%s/{name}are always shielded.
The browser engines are generated from the Python packs and verified byte-identical to them, so the trainer, the woordeboek and the floating site-skin behave exactly like the Linux locales.
What's in it
🔤 16 writing scripts
Alphabets, abjads, abugidas and computed syllabaries — Greek, Cyrillic, Arabic, Hebrew, Devanagari, Bengali, Thai, Hangul, Han, Ge'ez, Georgian, Armenian, Glagolitic, katakana and Elder Futhark runes — all from one shared phoneme normaliser.
🎭 Effects & accents
leetspeak, vaporwave fullwidth, braille, morse, upside-down, bubble, mocking-case, lolcat and emoji; plus caricature accents — Kaaps, Boere, Saffa English, Cockney, pirate and Scots — that respell the UI in voice.
🖥️ 42 real desktops
Each pack is a genuine system locale (af_GR Greece, af_KR Korea, af_ET Ethiopia, af_NP Nepal…) transliterating ~86k gettext strings across 365 domains. Additive, reversible, and rotated at random each login.
🌍 English-source packs
The accents, lolcat and emoji render the original English msgid instead of the Afrikaans translation — one build flag — so Open File becomes 📂 📄 or Ahoy, open ye file.
✍️ Live trainer
Type any Afrikaans or English and watch it convert in real time, word-by-word, with spelling rules (spelreëls) and a sound map (klankkaart) per pack, a reading drill, and a floating picker that re-skins the whole site.
🧩 Zero dependencies
The engines are pure standard-library Python; the trainer, woordeboek and site skin are vanilla JavaScript. The JS port is verified byte-identical to the Python originals across the full vocabulary.
How it works
- Normalise then render: a shared normaliser turns spelling into phoneme symbols (long vowels marked, diphthongs mapped); each pack only maps those symbols to its own script, effect or accent.
- Placeholder-safe: the builder protects
%s,%1$d,{name}, Pango/HTML markup, entities and URLs before transforming, so apps thatprintfinto the strings keep working. - One engine, two runtimes: the JavaScript port that powers the trainer, the woordeboek and the site skin produces output identical to the Python original — checked across the whole word list.
- Reversible everywhere: the locales install/uninstall cleanly from one source of truth (
build_pack.PACKS) and survivelocale-gen; the site skin only swaps text nodes in place, restoring the originals when toggled off.