Is your feature request related to a problem?
Shelf.nu currently supports only English UI. Teams whose users are non-English-speaking (churches, NGOs, schools outside the Anglosphere) either need a translator in the loop or rely on browser auto-translate, which breaks form labels, error states, and confuses end users.
The codebase has no i18n/ folder, no useTranslation hooks, and only intl-parse-accept-language for locale detection — but no way to actually display the app in another language.
Describe the solution you'd like
First-class i18n support along the lines of what most modern apps use:
react-i18next or @lingui/react integration
locales/{en,ru,uk,sk,de,es,...}.json files
- Language switcher in user settings, persisted per user (already have
user.id — add user.locale)
t() wrapping of all user-facing strings
- Date/number formatting via
Intl (can piggy-back on existing intl-parse-accept-language)
- Translation contributions via Crowdin / Weblate / directly in PRs
Describe alternatives you've considered
- Browser auto-translate — breaks reactive UI, form state, date parsing
- Forking — defeats the purpose of self-hosting the upstream image
Additional context
Happy to contribute initial Russian, Ukrainian, and Slovak translations once the framework is in place. This would unlock Shelf for the Eastern-European church/NGO market, where self-hosted asset tracking on Supabase is attractive but the English-only UI is a blocker for non-technical users (volunteers, property stewards).
Is your feature request related to a problem?
Shelf.nu currently supports only English UI. Teams whose users are non-English-speaking (churches, NGOs, schools outside the Anglosphere) either need a translator in the loop or rely on browser auto-translate, which breaks form labels, error states, and confuses end users.
The codebase has no
i18n/folder, nouseTranslationhooks, and onlyintl-parse-accept-languagefor locale detection — but no way to actually display the app in another language.Describe the solution you'd like
First-class i18n support along the lines of what most modern apps use:
react-i18nextor@lingui/reactintegrationlocales/{en,ru,uk,sk,de,es,...}.jsonfilesuser.id— adduser.locale)t()wrapping of all user-facing stringsIntl(can piggy-back on existingintl-parse-accept-language)Describe alternatives you've considered
Additional context
Happy to contribute initial Russian, Ukrainian, and Slovak translations once the framework is in place. This would unlock Shelf for the Eastern-European church/NGO market, where self-hosted asset tracking on Supabase is attractive but the English-only UI is a blocker for non-technical users (volunteers, property stewards).