Traduttore python

Creare una macro - Scrivere uno script - Usare le API
Rispondi
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Traduttore python

Messaggio da patel »

In attesa di una sezione specifica e in risposta a vlad, propongo un miglioramento del codice postato nella discussione di chimico

Codice: Seleziona tutto

import urllib.request as opener
import xml.etree.ElementTree as ET
url = "https://translate.yandex.net/api/v1.5/tr/translate?"
key = "key=trnsl.1.1.20190301T033325Z.3123d02da7588646.c71d99028a980e1ea7bdfdbe1a428dc44fc81f3b"
target = 'home' #str(input("Inserisci la parola in inglese: "))
txt = "text=" + target
lang = "lang=en-it"
frmt = "format=plain"
full_url = "&".join([url + key, txt, lang, frmt])
# make request to Yandex Translator
answer = opener.urlopen(full_url)
# reading and decoding answer
decode = answer.read().decode()
dd = ET.fromstring(decode)
print(dd[0].text)
Però un grosso difetto di questo metodo è che traduce solo parole singole e non frasi, si potrebbe fare meglio usando la libreria googletrans, su python si installa con pip, ma come si fa a installarla su Libre ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Traduttore python

Messaggio da hubert lambert »

Ciao patel,

Ho fatto qualche prove (con LibreOffice) per installare googletrans: è un po' pesante.
Dove verrà registrata la macro (per sempio nel repertorio <utente>/Scripts/python), si deve creare il repertorio pythonpath e copiarvi a mano le seguente librerie: googletrans, certifi, requests, urllib3, chardet e idna (dal repertorio system di python se googletrans è già installato, oppure dal sito https://pypi.org: scaricare il file tar.gz corrispondente, decomprimerlo e estrare il repertorio con il nome della libreria).
La libreria hyper è opzionale, ma rende le traduzioni più veloce (secondo la documentazione).
Avvertimento utile: https://pypi.org/project/googletrans/#n ... rary-usage.

Una volta fatto, diventa molto semplice:

Codice: Seleziona tutto

def gtrans(event=None):
    from googletrans import Translator
    translator = Translator()
    testo = 'Un chaleureux bonjour à la communauté italienne !'
    T = translator.translate(testo, dest='it')
    msgbox(T.text)
Cordiali saluti.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Traduttore python

Messaggio da patel »

hubert lambert ha scritto: Dove verrà registrata la macro (per sempio nel repertorio <utente>/Scripts/python), si deve creare il repertorio pythonpath e copiarvi a mano le seguente librerie:
Grazie Hubert, uso win e non trovo questo percorso, potresti essere più preciso ?
ho provato a fare quanto hai detto, ma ottengo questo errore
Errore dello schema di scripting durante l'esecuzione dello script Python vnd.sun.star.script:Modulo1.py$prova?language=Python&location=document.

Messaggio: <class 'ImportError'>: No module named 'googletrans' (or 'googletrans.Translator' is unknown)
File "C:\Program Files\LibreOffice\program\pythonscript.py", line 1047, in getScript
mod = self.provCtx.getModuleByUrl( fileUri )
File "C:\Program Files\LibreOffice\program\pythonscript.py", line 484, in getModuleByUrl
exec(code, entry.module.__dict__)
File "vnd.sun.star.tdoc:/2/Scripts/python/Modulo1.py", line 5, in <module>
File "C:\Program Files\LibreOffice\program\uno.py", line 425, in _uno_import
raise uno_import_exc
File "C:\Program Files\LibreOffice\program\uno.py", line 347, in _uno_import
return _builtin_import(name, *optargs, **kwargs)
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Traduttore python

Messaggio da hubert lambert »

Su Windows, il profilo utente è %APPDATA%\libreoffice\4\user (vedi qui).
In %APPDATA%\libreoffice\4\user\Scripts\python si trovano gli script python definiti dall'utente (quelli di "Macro personali").
In %APPDATA%\libreoffice\4\user\Scripts\python\pythonpath vanno le librerie, visibili soltanto da quelli script (uno script in un documento non può importare quelle librerie!).
Qui puoi scaricare un zip con un script di esempio e con le librerie necessarie, da decomprimere in %APPDATA%\libreoffice\4\user\Scripts\python. Da Strumenti -> Macro -> Esegui macro -> Macro personali -> patel, esegui la macro "gtrans".
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Traduttore python

Messaggio da patel »

Grazie Hubert, ma mi sembra troppo complicato, in questo modo la macro funzionerà soltanto nel mio pc e non potrò mai condividere il file ods con altri
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Traduttore python

Messaggio da hubert lambert »

Sembra la stessa cosa anche a me ;).
Ci sono già alcune estensioni sul sito di LibreOffice.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Traduttore python

Messaggio da patel »

Non è importante per me avere il traduttore su libre, cercavo di capire se vale la pena imparare a programmare in python su calc e per il momento ho dei dubbi, vedi anche la discussione viewtopic.php?f=26&t=9769
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Traduttore python

Messaggio da hubert lambert »

Basic è un linguaggio facile ma arcaico, mentre python è un linguaggio moderno, ricco di numerose librerie fornite di default (cioè senza dover aggiungere nulla).
Il problema di un progetto di traduzione automatica è molto particolare e certamente non rappresentativo della codifica con python.

Ci sono tre difficoltà principali per iniziare con python:
- nessun IDE integrato, ma APSO facilita notevolmente le cose;
- python è molto meno tollerante: le rientranze definiscono i blocchi e le funzioni, proprietà e variabili devono rispettare scrupolosamente le maiuscole e minuscole (minore rischio di errori in python quindi);
- le scorciatoie specifiche del basic non esistono, quindi è necessario ricrearle (createUnoService, MsgBox, ecc.).

Per iniziare bene:
- una volta installato APSO, compila le opzioni (Strumenti -> Gestione estensioni -> APSO -> Opzioni) con il percorso del tuo IDE preferito e con le opzioni di apertura (cioè per aprire una funzione direttamente sulla linea corretta). Esempio con notepad ++: -n {ROW} -c {COL} {FILENAME};
- leggere attentamente questa pagina: https://wiki.openoffice.org/wiki/Python ... _to_Python;
- eseguire alcuni test con gli script python forniti da LibreOffice (Macro → Macro di LibreOffice).

Avviso per APSO.
APSO ti consente di modificare direttamente le macro incorporate in un documento, ma non è raccomandato. È meglio lavorare in "Macro personali" e, una volta le macro complete, incorporare il file nel documento (APSO → Menu → Copia in documento).
Allegati
esempiopy.ods
Piccolissimo esempio
(11.02 KiB) Scaricato 185 volte
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Traduttore python

Messaggio da patel »

grazie Hubert, ora è tutto un po' più chiaro
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Rispondi