This commit is contained in:
Alexander Kalinovsky
2025-02-01 20:21:55 +01:00
parent a22ab9b0de
commit 1ca90c633f
6 changed files with 16 additions and 9 deletions

View File

@@ -48,7 +48,7 @@ async def language_menu(
inline_keyboard = [ inline_keyboard = [
[ [
InlineKeyboardButton( InlineKeyboardButton(
text=locale.localized(user.lang), text=locale.localized(user.lang.value),
callback_data=ContextData( callback_data=ContextData(
command=CallbackCommand.SET_LANGUAGE, data=str(locale) command=CallbackCommand.SET_LANGUAGE, data=str(locale)
).pack(), ).pack(),

View File

@@ -36,6 +36,8 @@ async def start(
item.value for item in LanguageBase.all_members.values() item.value for item in LanguageBase.all_members.values()
]: ]:
lang = LanguageBase(message.from_user.language_code) lang = LanguageBase(message.from_user.language_code)
else:
lang = LanguageBase.EN
user = await User.create( user = await User.create(
session=db_session, session=db_session,

View File

@@ -24,7 +24,7 @@ class Config(BaseSettings):
def DATABASE_URI(self) -> str: def DATABASE_URI(self) -> str:
return f"postgresql+asyncpg://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" return f"postgresql+asyncpg://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
DOMAIN: str DOMAIN: str = "localhost"
@computed_field @computed_field
@property @property

View File

@@ -20,5 +20,5 @@ class I18nMiddleware(SimpleI18nMiddleware):
if db_session and event.model_fields.get("from_user"): if db_session and event.model_fields.get("from_user"):
user = await self.user_class.get(id=event.from_user.id, session=db_session) user = await self.user_class.get(id=event.from_user.id, session=db_session)
if user and user.lang: if user and user.lang:
return user.lang return user.lang.value
return await super().get_locale(event=event, data=data) return await super().get_locale(event=event, data=data)

View File

@@ -130,13 +130,16 @@ class EnumMember(object):
return hash(self.value) return hash(self.value)
def localized(self, lang: str = None) -> str: def localized(self, lang: str = None) -> str:
if self.loc_obj and len(self.loc_obj) > 0: if self.loc_obj:
if lang and lang in self.loc_obj.keys(): if not lang:
return self.loc_obj[lang]
else:
i18n = I18n.get_current() i18n = I18n.get_current()
if i18n: if i18n:
return self.loc_obj[i18n.current_locale] lang = i18n.current_locale
else:
lang = list(self.loc_obj.keys())[0]
if lang in self.loc_obj.keys():
return self.loc_obj[lang]
else: else:
return self.loc_obj[list(self.loc_obj.keys())[0]] return self.loc_obj[list(self.loc_obj.keys())[0]]

View File

@@ -16,6 +16,8 @@ class UserBase(BotEntity, table=False):
lang: LanguageBase = Field(sa_type=EnumType(LanguageBase), default=LanguageBase.EN) lang: LanguageBase = Field(sa_type=EnumType(LanguageBase), default=LanguageBase.EN)
is_active: bool = True is_active: bool = True
name: str
roles: list[RoleBase] = Field( roles: list[RoleBase] = Field(
sa_type=ARRAY(EnumType(RoleBase)), default=[RoleBase.DEFAULT_USER] sa_type=ARRAY(EnumType(RoleBase)), default=[RoleBase.DEFAULT_USER]
) )