diff --git a/modules/async_worker.py b/modules/async_worker.py index 0b33cb63..51d32500 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -198,7 +198,6 @@ def worker(): from modules.upscaler import perform_upscale from modules.flags import Performance from modules.meta_parser import get_metadata_parser - from modules.translator import translate2en pid = os.getpid() print(f'Started worker with PID {pid}') @@ -949,6 +948,8 @@ def worker(): prompt = fallback_prompt else: if translate: + # only initialize when needed, requires an internet connection + from modules.translator import translate2en prompt = translate2en(prompt, prompt_type) return prompt @@ -1093,6 +1094,8 @@ def worker(): set_hyper_sd_defaults(async_task, current_progress, advance_progress=True) if async_task.translate_prompts: + # only initialize when needed, requires an internet connection + from modules.translator import translate2en async_task.prompt = translate2en(async_task.prompt, 'prompt') async_task.negative_prompt = translate2en(async_task.negative_prompt, 'negative prompt') diff --git a/modules/translator.py b/modules/translator.py index e8f0ca0c..e7cb12fc 100644 --- a/modules/translator.py +++ b/modules/translator.py @@ -1,15 +1,16 @@ import translators from functools import lru_cache + @lru_cache(maxsize=32, typed=False) def translate2en(text, element): if not text: return text try: - result = translators.translate_text(text,to_language='en') + result = translators.translate_text(text, to_language='en') print(f'[Parameters] Translated {element}: {result}') return result except Exception as e: print(f'[Parameters] Error during translation of {element}: {e}') - return text \ No newline at end of file + return text