Repository navigation
Replies: 4 comments
|
A working case of this: dsh-locale-pack registers 26 UI languages for the DSH desktop app as a community plugin, with no core changes.
Language registration works as a bundle patch that inserts a row into the web profile roster, so it stays a plugin concern. Happy to reshape this into whatever form works best for the project. |
|
For what it's worth, this already works from a plugin today without a core change: dsh-composer-plus registers 11 extra UI languages (Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt, हिन्दी) through Install: Settings → Plugins → Add plugin → |
|
For Spanish speakers looking specifically for Latin American Spanish ( 🔗 Repository: https://github.com/Dreftian/dsh-locale-es-419 It registers |
|
Filed a cross-cutting proposal that may change the shape of this: make the UI locale an ordered preference list (e.g. If that lands, requests like this one become mostly "add a dictionary and one config entry". Would value your input on the trade-offs there: #11699 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi! First of all, thanks for the harness — and for the locale system, which already works nicely for zh/en.
I'd like to ask for a small change that would let the community contribute unofficial, partial UI translations through normal
dsh-pluginpackages: make the list of selectable locales extensible at runtime, instead of the closed TypeScript tuple it is today.Why: the Web UI is English-only outside of zh/en. A partial community translation (say, Spanish) would help a lot of users who don't read English, and the machinery already tolerates partial coverage: the lookup chain (
ns → common → en → key) falls back to English per key, and even the official zh side leaves some inline copy in English today. So an incomplete translation already works "as well as" the shipped Chinese one in that respect.What blocks a plugin today: the locale ids live in the core package:
setLocale('es') throws locale "es" is not registered, and the settings schema (z.union([...LOCALE_IDS])) rejects persisting anything else. Meanwhile the untyped registration form already exists — ctx.locale.register(ns, locale, dict) — so a plugin can already publish dictionaries in an arbitrary locale; it just can't make that locale selectable or persistable.
Proposed API (sketch): expose something like
which adds the locale to the snapshot, with the settings schema deriving its allowed values from the registry at runtime rather than from the static tuple. The fallback chain, the LocaleFace revision, and the sync would all keep working unchanged.
Evidence this is real demand: I built exactly this for Spanish in an unofficial fork — full es dictionaries for every locale-registered namespace plus a README.es.md, passing the repo's own typecheck — and the only thing keeping it from being a plugin is the closed LOCALE_IDS. Fork (unofficial, for reference only):
https://github.com/dealerrrr/deepseek-harness/tree/i18n-es
If maintainers are open to it, I'd be glad to turn the Spanish dictionaries into a community dsh-plugin-i18n-es package the day the API lands — labeled clearly as unofficial, per the community rules.
Thanks for reading!
All reactions