Reputation: 13
I am trying to run LibreTranslate on my workstation , however while running the main.py file , It gives me HTTPError 403: Forbidden showing problem in language_translate_fallback function and create_app in main function . I suppose there is problem in API fetch , however I haven't made any changes in any of the API calls .
Updating language models
Found 92 models
Downloading Albanian → English (1.9) ...
(<HTTPError 403: 'Forbidden'>,)
(<HTTPError 403: 'Forbidden'>,)
(<HTTPError 403: 'Forbidden'>,)
(<HTTPError 403: 'Forbidden'>,)
Cannot update models (normal if you're offline): Download failed for Albanian → English
Traceback (most recent call last):
File "/home/LibreTranslatorFolder/Libreenv/LibreTranslate/libretranslate/main.py", line 253, in <module>
main()
File "/home/LibreTranslatorFolder/Libreenv/LibreTranslate/libretranslate/main.py", line 226, in main
app = create_app(args)
File "/home/.local/lib/python3.10/site-packages/libretranslate/app.py", line 191, in create_app
language_target_fallback = languages[1] if len(languages) >= 2 else languages[0]
IndexError: list index out of range
#create_app from app.py , libretranslate github
def create_app(args):
from libretranslate.init import boot
boot(args.load_only, args.update_models, args.force_update_models)
from libretranslate.language import load_languages
swagger_url = args.url_prefix + "/docs" # Swagger UI (w/o trailing '/')
api_url = args.url_prefix + "/spec"
bp = Blueprint('Main app', __name__)
storage.setup(args.shared_storage)
if not args.disable_files_translation:
remove_translated_files.setup(get_upload_dir())
languages = load_languages()
language_pairs = {}
for lang in languages:
language_pairs[lang.code] = sorted([l.to_lang.code for l in lang.translations_from])
# Map userdefined frontend languages to argos language object.
if args.frontend_language_source == "auto":
frontend_argos_language_source = type(
"obj", (object,), {"code": "auto", "name": _("Auto Detect")}
)
else:
frontend_argos_language_source = next(
iter([l for l in languages if l.code == args.frontend_language_source]),
None,
)
if frontend_argos_language_source is None:
frontend_argos_language_source = languages[0]
language_target_fallback = languages[1] if len(languages) >= 2 else languages[0]
if args.frontend_language_target == "locale":
def resolve_language_locale():
loc = get_locale()
language_target = next(
iter([l for l in languages if l.code == loc]), None
)
if language_target is None:
language_target = language_target_fallback
return language_target
frontend_argos_language_target = resolve_language_locale
else:
language_target = next(
iter([l for l in languages if l.code == args.frontend_language_target]), None
)
if language_target is None:
language_target = language_target_fallback
frontend_argos_language_target = lambda: language_target
Main.py , LibreTranslate at github
def main():
args = get_args()
app = create_app(args)
if '--wsgi' in sys.argv:
return app
else:
if args.debug and args.host == "*":
# '::' will listen on both ipv6 and ipv4
args.host = "::"
if args.debug:
app.run(host=args.host, port=args.port)
else:
from waitress import serve
url_scheme = "https" if args.ssl else "http"
print(f"Running on {url_scheme}://{args.host}:{args.port}{args.url_prefix}")
serve(
app,
host=args.host,
port=args.port,
url_scheme=url_scheme,
threads=args.threads
)
if __name__ == "__main__":
main()
Any possible solutions to this problem ? I have tried manually putting args.port and args.host , however I didn't work.
Upvotes: 1
Views: 51