Check-in [c62b11cb0e]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Change exception names, and use `LangSelection` for dialog (makes error more understandable). |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c62b11cb0e01175c0ffc24715bd4f478 |
User & Date: | mario 2021-06-10 14:53:13 |
Context
2021-09-16
| ||
14:59 | Hurried fixes for --merriamwebster and --synonyms.com check-in: b0666af4c8 user: mario tags: trunk | |
2021-06-10
| ||
14:53 | Change exception names, and use `LangSelection` for dialog (makes error more understandable). check-in: c62b11cb0e user: mario tags: trunk | |
14:52 | Notes about ArgosTranslate, CLI alternative check-in: b1b7271886 user: mario tags: trunk | |
Changes
Changes to pythonpath/pt_dialogs.py.
︙ | ︙ | |||
208 209 210 211 212 213 214 | pass app = ExcApp(ctx=ctx, err=err, exc=exc) app.showDialog() | | | 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | pass app = ExcApp(ctx=ctx, err=err, exc=exc) app.showDialog() class LangSelection(unohelper.Base, XActionListener, XJobExecutor): """ Class documentation... """ def __init__(self, ctx=uno.getComponentContext()): self.LocalContext = ctx self.ServiceManager = self.LocalContext.ServiceManager self.Toolkit = self.ServiceManager.createInstanceWithContext("com.sun.star.awt.ExtToolkit", self.LocalContext) |
︙ | ︙ | |||
343 344 345 346 347 348 349 | def langselect(*args): try: ctx = remote_ctx # IDE except: ctx = uno.getComponentContext() # UI | | | 343 344 345 346 347 348 349 350 351 352 353 | def langselect(*args): try: ctx = remote_ctx # IDE except: ctx = uno.getComponentContext() # UI app = LangSelection(ctx=ctx) app.showDialog() return app.fr, app.to |
Changes to pythonpath/translationbackends.py.
︙ | ︙ | |||
358 359 360 361 362 363 364 | #self.error = pagetranslate.MessageBox Translator = None try: from translate import Translator except: log.error(format_exc()) | | | 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 | #self.error = pagetranslate.MessageBox Translator = None try: from translate import Translator except: log.error(format_exc()) raise ImportException("Run `pip install translate` to use this module.") # interestingly this backend function might just work as is. if re.search("mymemory", params.get("backend", ""), re.I): self.translate = Translator( provider="mymemory", to_lang=params["lang"], email=params.get("email", "") ).translate else: |
︙ | ︙ | |||
487 488 489 490 491 492 493 | j = http.get(url).content.decode("utf-8") log.debug(j) j = json.loads(j) if j["responseStatus"] in ("200", 200): text = j["responseData"]["translatedText"] # or match[0]… else: | | | 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 | j = http.get(url).content.decode("utf-8") log.debug(j) j = json.loads(j) if j["responseStatus"] in ("200", 200): text = j["responseData"]["translatedText"] # or match[0]… else: raise RuntimeError(j) return text # Because, why not? # Invokes a commandline tool for translating texts. # The "cmd" can be: # |
︙ | ︙ | |||
559 560 561 562 563 564 565 | "impressionId": self.session, "sourceLanguage": src_lang, "targetLanguage": dst_lang, "text": text } ).json() if r.get("serviceMessage"): | | | 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 | "impressionId": self.session, "sourceLanguage": src_lang, "targetLanguage": dst_lang, "text": text } ).json() if r.get("serviceMessage"): raise RuntimeError(r) elif r.get("text"): #log.debug(f"'{text}' ==> {repr(r)} // {src_lang}→{dst_lang}") return r["text"] else: return text # detect language, and avoid non-text snippets |
︙ | ︙ | |||
624 625 626 627 628 629 630 | def chpath(self): pass # PYTHONPATH has no effect on numpy import errors, seems to work only with distro-bound python installs def translate(self, text): source, target = self.lang(text), self.params["lang"] if source == target: | | | | 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 | def chpath(self): pass # PYTHONPATH has no effect on numpy import errors, seems to work only with distro-bound python installs def translate(self, text): source, target = self.lang(text), self.params["lang"] if source == target: raise ValueError("Can't have same source and target language") pair = self.get_langpair(source, target) #self.translate = pair.translate return pair.translate(text) def get_langpair(self, source, target): import argostranslate.translate model = { m.code: m for m in argostranslate.translate.get_installed_languages() } try: return model[source].get_translation(model[target]) except Exception as e: raise ValueError("Requested language model/pair ({}→{}) not found, use `argos-translate-gui` to download/install the combination".format(source, target)) # maps a pagetranslate.t.* object (in main module), # according to configured backend (now a string) def assign_service(params): w = params.get("backend", "Google") map = { |
︙ | ︙ |