feat: add translation language setting & onboarding flow
- Add separate translation_language setting (independent from interface language) - Implement 3-step onboarding for new users: 1. Choose interface language 2. Choose learning language 3. Choose translation language - Fix localization issues when using callback.message (user_id from state) - Add UserService.get_user_by_id() method - Add get_user_translation_lang() helper in i18n - Update all handlers to use correct translation language - Add localization keys for onboarding (ru/en/ja) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -36,6 +36,14 @@ def get_user_lang(user) -> str:
|
||||
return (getattr(user, 'language_interface', None) if user else None) or 'ru'
|
||||
|
||||
|
||||
def get_user_translation_lang(user) -> str:
|
||||
"""Получить язык перевода (translation_language или language_interface как fallback)."""
|
||||
translation_lang = getattr(user, 'translation_language', None) if user else None
|
||||
if translation_lang:
|
||||
return translation_lang
|
||||
return get_user_lang(user)
|
||||
|
||||
|
||||
def t(lang: str, key: str, **kwargs) -> str:
|
||||
"""Translate key for given lang; fallback to ru and to key itself.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user