[nice-to-have] Consider hardening i18n_locale_config() against malformed locale entries by casting before .strip() (e.g. str(locale).strip().lower()) to avoid potential AttributeError if config data is ever non-string.
[nice-to-have] Add one integration test for another error path (e.g. nickname_invalid) to ensure all api_error(...) call sites consistently include locale + localized error.
Overall: Implementation matches issue scope and keeps error-code contract stable while adding locale-aware backend messages.
Review summary (PR #209, SHA 9e47a3a1392287a5fa6c6cf645c835df1f3ca78f)
- [nice-to-have] Consider hardening `i18n_locale_config()` against malformed locale entries by casting before `.strip()` (e.g. `str(locale).strip().lower()`) to avoid potential `AttributeError` if config data is ever non-string.
- [nice-to-have] Add one integration test for another error path (e.g. `nickname_invalid`) to ensure all `api_error(...)` call sites consistently include `locale` + localized `error`.
Overall: Implementation matches issue scope and keeps error-code contract stable while adding locale-aware backend messages.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Implements issue #205 (Django i18n foundation) with backend locale pipeline + shared-key resolver for
da/en.What changed
endefault,en/dasupported, locale middleware on).shared/i18n/lobby.json.lobby/i18n.pyfor locale detection + key->message resolution with deterministic fallback.docs/ISSUE-205-I18N-FOUNDATION.md.Acceptance checks
en+dawith fallback toen.Local checks
python manage.py test lobby.tests→ 59 passedReview summary (PR #209, SHA
9e47a3a139)i18n_locale_config()against malformed locale entries by casting before.strip()(e.g.str(locale).strip().lower()) to avoid potentialAttributeErrorif config data is ever non-string.nickname_invalid) to ensure allapi_error(...)call sites consistently includelocale+ localizederror.Overall: Implementation matches issue scope and keeps error-code contract stable while adding locale-aware backend messages.