Tradurre del testo in PHP con Yandex

Come tradurre testi di qualsiasi lunghezza con il servizio gratuito offerto dal motore di ricerca Russo

Siamo nel 2020, e sono arrivato alla conclusione che se si vuole avere un blog, o un qualsiasi sito internet, questo deve essere in grado di comunicare con chiunque, visto che può cadere all’occhio di qualsiasi utente internet, in qualunque parte del globo terrestre.

Abbiamo già dato un occhio su come creare un sito internet con una base utile per poterlo tradurre in qualsiasi lingua, o dialetto, facilmente, andando a parametrizzare le scritte attraverso dei file dedicati al linguaggio che ci interessa utilizzare.

In quest’articolo ci occuperemo di utilizzare una procedura, in PHP, che ci permetta di poter tradurre istantaneamente qualsiasi testo in qualunque lingua, questo per fare in modo di comunicare con chiunque.

La prima cosa che dobbiamo fare, è trovare un servizio online che consenta di tradurre un testo da a qualsiasi lingua. Escludendo Google Traduttore, perché a pagamento, sono ricaduto sulle API di Yandex, a completo uso gratuito. L’unica cosa che dobbiamo fare è ottenere un token con la registrazione di un account.

Registriamo un account su Yandex Translate

  • Successivamente nel menù API keys selezionare il comando Create new key
  • Riempiendo un form che ci chiederà la descrizione del nostro token, ci verrà fornito una chiave che potremo utilizzare nel nostro codice PHP

Integriamo Yandex Translate nel nostro codice PHP

Inserire nel nostro codice PHP la seguente funzione andando ad inserire la chiave API appena ottenuta al posto di API KEY

function translatetext($text, $from, $to) {
if (isset($text) && $text!="") {
$api = 'API KEY';
$url = file_get_contents('https://translate.yandex.net/api/v1.5/tr.json/translate?key='.$api.'&lang='.$from.'-'.$to.'&text='.urlencode($text));
$json = json_decode($url);
return $json->text[0];
} else {
return "";
}
}

Utilizzando la funzione translatetext, definendo il testo da tradurre, la lingua di partenza e quella di destinazione, ci verrà restituita una stringa che coinciderà con la traduzione del testo inserito.

È importante precisare che per far funzionare la procedura è essenziale conoscere qual è la lingua d’origine, e quella di destinazione, in quanto la funzione non è in grado di riconoscere automaticamente qual è la lingua che stiamo traducendo.

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

11 commenti

  1. Ho scritto i due valori in due file diversi, come ho detto prima, e ha funzionato. Anche se, a dire il vero, avrei voluto trovare una “vera” soluzione e non usare un’escamotage. Scusa se ti ho bombardato di messaggi.
    Rosa

    1. Scusami, ma probabilmente non riesco ad essere chiaro. Se forse utilizzi un unico file, un csv, ove nella stessa riga puoi stabilire linguaggio e il testo, probabilmente riesci ad ottenere un risultato più pulito.

      Francesco

  2. Comunque se c’è un modo di far leggere la prima riga del file di testo in modo corretto scrivi pure il tuo suggerimento, lo leggerò con piacere.
    Rosa

    1. Perdonami ma, se hai la possibilità di modificare l’usecase, non ti conviene leggere i testi da tradurre da un file csv piuttosto che da un file di testo? Tipo che per ogni riga nella prima colonna metti la lingua, nella seconda il testo. Credo che a livello di sviluppo sia più pulito.

      1. Probabilmente hai ragione. Ma non ho mai usato i file csv. A parte il fatto che tutto il lavoro parte da vba: ti spiego. In vba ho una certa frase da tradurre, frase che prendo da Excel. Prendo anche la sigla della lingua da tradurre da Excel. Da vba scrivo frase e sigla in file di testo tramite textstream, poi lancio, sempre da vba, lo script php. Lo script legge i valori dai file e traduce la frase e quindi la scrive in un altro file di testo. A questo punto vba legge la traduzione dal file txt e la visualizza in un form. Lo so che è molto macchinoso ma non so cosa altro fare. E comunque l’importante è che alla fine funzioni.
        Rosa

          1. Il mio file Excel è un file xlsm pieno di macro, non posso certo modificarlo in cvs. In realtà all’inizio volevo scrivere in un file xlsx invece che in un txt ma non riesco a farlo da vba senza aprirlo ed aprirlo mi creerebbe dei problemi e dei rallentamenti, visto che ne ho già tanti aperti. Non so se ti intendi di vba ma credo che da codice non si possa scrivere neppure in un cvs senza aprirlo.
            Rosa

          2. Chiaramente io non so a cosa stai lavorando, ma se mi dici che da un file xlsm tiri fuori due file di testo per farli elaborare da PHP, ti conviene tirarti fuori un unico file csv, anche temporaneo, utile per l’utilizzo dello script.

  3. Sono stata precipitosa, il problema non sono tanto le variabili quanto il fatto che venga loro assegnato un valore preso da un file di testo. Il problema è solo la lingua di provenienza, che è scritta nella prima riga di un file (nella seconda c’è il testo da tradurre e quello va bene), letto tramite l’istruzione fgets. Credo che scriverò la lingua di provenienza e testo da tradurre in due file diversi. Finché non avrò fatto tutte le prove e, quindi, ti avrò mandato un messaggio con scritto “Il problema è risolto” oppure “Il problema persiste”, considera nullo il mio post. Grazie per l’attenzione e scusa per la confusione (rima non voluta).
    Rosa

    Stavo per mandarti questo messaggio quando ho visto la tua risposta. A video viene stampato tutto bene. Grazie ancora

  4. Ciao. La tua funzione “funziona” se come valori metto un testo tra apici o virgolette e faccio lo stesso con le lingue. Se invece uso delle variabili non mi ritorna nulla. Mi sembra molto strano, ma è così. Puoi aiutarmi, per favore?
    Rosa

    1. Ciao Rosa, direi che il problema è riconducibile dal come valorizzi le variabili. Prova a fare una stampa a video della variabile che devi tradurre per vedere se le arriva effettivamente il tuo testo.

      Francesco

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *