Logo Lanfrica

ezpl/wirute-gikuyu

Domain:

natural language processing

Record type:

tools
Creator:
ezpl
Host:
Wĩrute Gĩkũyũ — learn the Kikuyu language. Flashcards (Leitner SRS), quizzes, grammar, sentences and a searchable dictionary. UI in Norwegian, English, German and French. # Wĩrute Gĩkũyũ **Learn the Kikuyu language** — flashcards with spaced repetition, quizzes, grammar, glossed example sentences and a searchable dictionary of 2,178 entries. A fully static web app: no backend, no build step, no tracking. Progress is stored locally in the browser. The interface is available in **Norwegian, English (British), German and French**. The learning material itself is Gĩkũyũ with English glosses, as in the source dictionary. ## Structure ``` index.html the app shell (markup with data-i18n keys) css/app.css theme (earthy green/terracotta, as designed) js/i18n.js language core: t(), locale loading, persistence js/app.js app logic: Leitner SRS, quiz, grammar, sentences, dictionary data/ dict.json Gĩkũyũ–English dictionary (2,178 entries) decks.json flashcard decks, keyed by stable ids sentences.json glossed example sentences (Gĩkũyũ side + ids) locales/ no.json en.json de.json fr.json one complete language pack per language: UI strings, deck/group labels, sentence translations and the full grammar content ``` ## Language files Every locale file has the same shape and the exact same keys: ```json { "meta": { "code": "…", "name": "…" }, "ui": { "tab.home": "…", "quiz.qCount": "Question {a} / {b}", … }, "decks": { "verbs": "…", … }, "groups": { "copula": "…", … }, "sentences": { "copula1": "…", … }, "grammar": [ { "id": "sources", "t": "…", "h": " … " }, … ] } ``` To add a language: copy `locales/en.json`, translate every value (never the Gĩkũyũ text in ` … `), keep the `{placeholders}`, and add an ` ` to the language selector in `index.html`. The default language follows the browser (`navigator.language`); the user's choice is stored in `localStorage` under `wirute_lang`. ## Running locally The app loads its data with `fetch`, so it needs an HTTP server (opening `index.html` directly from disk will not work): ```bash dotnet serve -d . -p 8123 # or any static file server ``` …

Languages