chainlit
chainlit copied to clipboard
Allow to change the language in the backend
Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] Browser language dependant
Describe the solution you'd like Allow to change the language in the backend (config)
Describe alternatives you've considered dirty hack
original_config_load_translation = cl.config.load_translation
cl.config.load_translation = lambda _: original_config_load_translation("fr-FR")
+1 to the feature request. Would be great to dynamically detect or set the language of the current user_session.
@lucasiscovici I tried to incorporate your code (thanks for posting your workaround!) However, I think this might override the language for all users at once, server-side - if I understood correctly...
I tried to fetch the cl.user_session variables to detect the session or read a user language preference, but the function seems to miss some session context. Even trying to fetch it does not work :(
import chainlit as cl
from chainlit.context import context_var, ChainlitContext, ChainlitContextException
original_config_load_translation = cl.config.load_translation
# Stores the original load_translation function in original_config_load_translation.
def listening_config_load_translation(*args, **kwargs):
loaded_language = args[0]
# Ensure the context is set
try:
context = context_var.get()
except LookupError:
print("Context not found. Cannot load user session.")
return original_config_load_translation(*args, **kwargs)
user = cl.user_session.get("user")
cl.user_session.set("language", loaded_language)
print(f"The language {loaded_language} was loaded for user {user}.")
return original_config_load_translation(*args, **kwargs)
# WARNING: THIS SETS THE LANGUAGE FOR ALL CURRENT USERS!
def force_set_language(language_code="AUTO"):
if language_code == "AUTO":
cl.config.load_translation = listening_config_load_translation
else:
cl.config.load_translation = lambda _: listening_config_load_translation(language_code)
force_set_language("AUTO")
It just keeps printing "Context not found. Cannot load user session." even if the session should long be initialized (e.g. starting a new chat) Maybe you have any idea how to build on this hacky workaround to finally detect/set user languages
+1 on localizing the user session, I have a multilingual group of end-users. Chainlit UI translation files are the only thing I cannot hot reload for the user. With pybabel.gettext I can dynamically reload all my python source strings.
Is there any update on this? Any way to implement multi-lingual chatbot?
+1 request
+1
For my use-case (transcribing audio inputs), I don't need to change the language from the backend but at least need to be able to detect it. I see https://github.com/Chainlit/chainlit/issues/1141 mentions cl.user_session.get("languages"), but that returns None for me?
+1 need to access user UI language from inside python code