Interface languages for Shell:B, the local-first AI workspace. Part of the family with Shell-B-Themes, Shell-B-Screensavers and Shell-B-Skills.
Shell:B's interface is written in English, and every string it shows goes through t(). A catalogue is one JSON
file mapping those English strings to a language; a string with no entry stays in English, so a half-finished
language is still usable. keys.json lists every string the current Shell:B uses (exported from its UI source), so
a catalogue can be checked for coverage and for entries that went stale after an update.
The table below and index.json are generated by scripts/validate.py.
| Language | Coverage | Credit |
|---|---|---|
📜 Ænglisc ang | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🏴 Brezhoneg br | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🏴 Cymraeg cy | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🏴☠️ Pirate Speak en-pirate | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🟢 Esperanto eo | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🇪🇸 Español es | 3.5 % (149 of the strings) · draft | Evie & Shell:B · MIT |
🟩 Euskara eu | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🇫🇷 Français fr | 100.0 % (4263 of the strings) | Evie & Shell:B · MIT |
🇮🇪 Gaeilge ga | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🏴 Gàidhlig gd | 3.8 % (164 of the strings) · draft | Evie & Shell:B · MIT |
🏺 Ἑλληνική grc | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🇮🇲 Gaelg gv | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🇯🇵 日本語 ja | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
⬛ Kernewek kw | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🏛️ Latina la | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🇱🇻 Līvõ kēļ liv | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
ᚱ Norrœnt mál non | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🇨🇭 Rumantsch rm | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🍃 Sindarin sjn | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🇫🇮 Anarâškielâ smn | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🇷🇸 Srpski sr-Latn | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🇷🇸 Српски sr | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
⚔️ tlhIngan Hol tlh | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
🇺🇦 Українська uk | 3.4 % (144 of the strings) · draft | Evie & Shell:B · MIT |
🐉 Valyrio Eglie val | 1.9 % (83 of the strings) · draft | Evie & Shell:B · MIT |
French ships inside Shell:B (ui/src/i18n/fr.json in the main repository, where a test fails on any interface string
without an entry). Every other language is loaded at run time: Shell:B serves the catalogue from a checkout of this
repository next to it, or fetches it from here on GitHub, and keeps a copy in the browser. Pick it in Settings →
General → Language; Settings → Languages shows coverage per language.
Drafts. Languages marked draft in the table are machine-made starter sets (the most common buttons and labels,
drafted with AI and scripts/translate_ollama.py), not yet read through by a speaker. scripts/verify.py only runs
automatic checks on them (placeholders kept, nothing left in English, a few glossary terms) and links each flagged
string to a dictionary; it doesn't prove a translation right. Corrections from speakers are very welcome, and a
language loses the draft mark once someone has reviewed it.
- Copy
locales/fr.jsontolocales/<code>.json(a BCP 47 code:de,es,pt-BR,zh-Hant) and translate the values. Keep the keys exactly as they are: they are the English strings Shell:B looks up. Keep placeholders such as{name}or{count}in the translation. Remove entries you can't translate rather than leaving English in them.keys.jsonis the full list to work through;fr.jsonshows the tone (short, direct, no corporate voice). - Add your language to
locales.json: its own name (Deutsch, notGerman),author, optionalauthorUrl,license(an SPDX id),version. - Run
python3 -I scripts/validate.py. It checks the JSON, the placeholders, reports coverage and stale entries, and rebuildsindex.jsonand the table above. - Open a pull request (the template has the checklist), or a Submit a translation issue with the file attached.
Translations that the test in Shell:B can enforce need an entry for every string in keys.json; partial ones are
welcome here and reach Shell:B at run time as soon as they're merged.
Every language names its translators in locales.json; the name, linked when authorUrl is given, shows in the
table above and in index.json.
The scripts and this repository are MIT. Each catalogue names its own license in locales.json.
- Shell-B-Themes: interface themes (Settings → Appearance)
- Shell-B-Screensavers: screensavers (Settings → Appearance)
- Shell-B-Skills: agent skills (Community Hub)
- Shell-B-Agents: agent personas
- Shell-B-Studio-Templates: starting points for Studio projects