LibreOffice plugin to pipe whole Writer documents through Google Translate, that ought to keep most of the page formatting.

βŒˆβŒ‹ βŽ‡ branch:  PageTranslate


Check-in [9b23b4db86]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Use world map for new menu entry "From ➜ To πŸ—Ί<"
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 9b23b4db86e571d99520ae49ffc2ea1438b3e1a8
User & Date: mario 2021-02-09 16:27:36
Context
2021-02-10
16:35
Fix from="auto"/"select" from sticking around check-in: 891ce56de3 user: mario tags: trunk
2021-02-09
16:27
Use world map for new menu entry "From ➜ To πŸ—Ί<" check-in: 9b23b4db86 user: mario tags: trunk
16:26
More error notes and changed MyMemory behaviour. check-in: 76510a454a user: mario tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to Addons.xcu.

722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
                  <prop oor:name="URL" oor:type="xs:string"><value>service:org.openoffice.comp.pyuno.pagetranslate?tradutor&amp;lang=en</value></prop>
                  <prop oor:name="Title" oor:type="xs:string"><value/><value xml:lang="en-US">β†’Paragraph langinfo</value></prop>
                  <prop oor:name="Target" oor:type="xs:string"><value>_self</value></prop>
                </node>
                <node oor:name="M5SELECT" oor:op="replace">
                  <prop oor:name="Context" oor:type="xs:string"><value/></prop>
                  <prop oor:name="URL" oor:type="xs:string"><value>service:org.openoffice.comp.pyuno.pagetranslate?trigger&amp;from=select&amp;lang=select</value></prop>
                  <prop oor:name="Title" oor:type="xs:string"><value/><value xml:lang="en-US">From🏳 ➜ To🏳</value></prop>
                  <prop oor:name="Target" oor:type="xs:string"><value>_self</value></prop>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>







|







722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
                  <prop oor:name="URL" oor:type="xs:string"><value>service:org.openoffice.comp.pyuno.pagetranslate?tradutor&amp;lang=en</value></prop>
                  <prop oor:name="Title" oor:type="xs:string"><value/><value xml:lang="en-US">β†’Paragraph langinfo</value></prop>
                  <prop oor:name="Target" oor:type="xs:string"><value>_self</value></prop>
                </node>
                <node oor:name="M5SELECT" oor:op="replace">
                  <prop oor:name="Context" oor:type="xs:string"><value/></prop>
                  <prop oor:name="URL" oor:type="xs:string"><value>service:org.openoffice.comp.pyuno.pagetranslate?trigger&amp;from=select&amp;lang=select</value></prop>
                  <prop oor:name="Title" oor:type="xs:string"><value/><value xml:lang="en-US">From ➜ To πŸ—Ί</value></prop>
                  <prop oor:name="Target" oor:type="xs:string"><value>_self</value></prop>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>

Changes to pythonpath/translationbackends.py.

322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350

    def __init__(self, params={}):
        self.params = params  # config+argparse
        self.max_len = 500
        self.rx_split = rx_split500
        try:
            import langdetect
            self.lang = langdatect.detect
        except:
            log.warning("`pip install langdetect` for best results")

    # API    
    def fetch(self, text, lang="en"):
        source_lang = self.params.get("from") or self.lang(text)
        url = "https://api.mymemory.translated.net/get?q=%s&langpair=%s|%s&of=json&mt=1" % (
            quote_plus(text.encode("utf-8")), source_lang, lang
        )
        if self.params.get("email"):
            url = url + "&de=" + self.params["email"]
        # any exceptions are covered in main
        j = http.get(url).content.decode("utf-8")
        print(j)
        j = json.loads(j)
        if j["responseStatus"] in ("200", 200):
            text = j["responseData"]["translatedText"]
            # or match[0]…
        else:
            raise Exception(j)
        return text







|

|


|
|

|





|







322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350

    def __init__(self, params={}):
        self.params = params  # config+argparse
        self.max_len = 500
        self.rx_split = rx_split500
        try:
            import langdetect
            self.lang = langdetect.detect
        except:
            log.warning("`pip install langdetect` for best results\n"+format_exc())

    # API    
    def fetch(self, text, lang="en", src_lang="en"):
        src_lang = self.params.get("from") or self.lang(text)
        url = "https://api.mymemory.translated.net/get?q=%s&langpair=%s|%s&of=json&mt=1" % (
            quote_plus(text.encode("utf-8")), src_lang, lang
        )
        if self.params.get("email"):
            url = url + "&de=" + self.params["email"]
        # any exceptions are covered in main
        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 Exception(j)
        return text