Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

language translate

by bigup401 (Pilgrim)
on Oct 30, 2018 at 22:36 UTC ( #1224958=perlquestion: print w/replies, xml ) Need Help??

bigup401 has asked for the wisdom of the Perl Monks concerning the following question:

which module can i use to translate my webpage language to other

Replies are listed 'Best First'.
Re: language translate
by localshop (Monk) on Oct 31, 2018 at 03:55 UTC
    I'm currently refining WebService::GoogleAPI::Client module that is on CPAN and can help you do this if you wish to use Google Translate API.

    Here's an example of translating from English to French.

    #!/usr/bin/env perl use WebService::GoogleAPI::Client; use Data::Dumper qw (Dumper); use strict; use warnings; use feature 'say'; =head1 translation_example.pl =head2 PRE-REQUISITES Setup a Google Project in the Google Console and add the Translate API + Library. You may need to enable billing to access Google Cloud Services. Setup an OAUTH Credential set and feed this into the CLI goauth included in WebService::GoogleAPI::Client and use the tool to authoris +e your user to access the project which will also create the local gapi. +json config. =over 2 =item https://www.googleapis.com/auth/cloud-translation =item https://www.googleapis.com/auth/cloud-platform =item assumes gapi.json configuration in working directory with scoped + project and user authorization =back Translation Service Specification: 'discoveryRestUrl' => 'https://translation.go +ogleapis.com/$discovery/rest?version=v2', 'description' => 'Integrates text translation + into your website or application.', 'preferred' => $VAR1->{'items'}[0]{'preferred +'}, 'kind' => 'discovery#directoryItem', 'id' => 'translate:v2', 'version' => 'v2', 'title' => 'Cloud Translation API', 'icons' => { 'x32' => 'https://www.gstatic.co +m/images/branding/product/1x/googleg_32dp.png', 'x16' => 'https://www.gstatic.co +m/images/branding/product/1x/googleg_16dp.png' }, 'name' => 'translate', 'documentationLink' => 'https://code.google.c +om/apis/language/translate/v2/getting_started.html' }, =cut ## assumes gapi.json configuration in working directory with scoped pr +oject and user authorization ## manunally sets the client user email to be the first in the gapi.js +on file my $gapi_client = WebService::GoogleAPI::Client->new( debug => 0, gapi +_json => 'gapi.json', debug=>1 ); my $aref_token_emails = $gapi_client->auth_storage->storage->get_token +_emails_from_storage; my $user = $aref_token_emails->[0]; $gapi_client->user( $user ); ## set to the first authorised user email + # my $list = $gapi_client->discover_all(); # say Dumper $list; # list available api endpoints #my $r = $gapi_client->api_query( api_endpoint_id => 'translate.langu +ages.list'); #say Dumper $r->json; ## https://cloud.google.com/translate/docs/reference/translate my $r = $gapi_client->api_query( api_endpoint_id => 'translate.transl +ations.translate', options => { q=>'this is some text to transla +te into french', target => 'fr', format => 'text', } ); say Dumper $r->json; say $r->json->{data}{translations}[0]{translatedText};

      Thank you localshop for this write-up and your work on this module. I've been nibbling and lurking at these threads, all the while building out what I can do with them. I went ahead and signed up for google cloud services. Now that I've done it, I'm glad for it and have little fear that google is gonna run away with my credit card anytime soon. They do give you $300 worth of credit and a year for a trial period and promise not to upgrade to paying without your say-so.

      I built the sdk for debian. 5 commands: easy-peasy. The client is offered in 6 syntaxes, but perl is not one of them. For people who say "perl is dead," that might be proof, but I wonder if perl comes at it differently. Let me ask the question, short of igniting a flame war, is perl unfit for this task?

      Does this module, WebService::GoogleAPI::Client, seek to brook that gap?

      I wrote a bash driver for this script so that I could set environment variables before invocation. I get a single warning or error:

      $ ./2.google.sh >1.txt Use of uninitialized value in split at /usr/local/share/perl/5.26.1/We +bService/GoogleAPI/Client/AuthStorage/ConfigJSON.pm line 82. $

      I'll put output, perl script, and bash driver between readmore tags

      It would seem that the Oauth isn't correct. What fields should the .json file have? I think one can show the fields with redacted values and not lose his shirt:

      { "type": "service_account", "project_id": "trans1-221819", "private_key_id": ..., "private_key": "-----BEGIN PRIVATE KEY-----... "client_email": "jehosophat@trans1-221819.iam.gserviceaccount.com", "client_id": "115338096797549417908", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1 +/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadat +a/x509/jehosophat%40trans1-221819.iam.gserviceaccount.com" }

      I don't think I made many changes from your script except to print values and I took out one of the debug => 0. Looking for a precise definition of what "scoped" project means. Thank you for your comments and scripts,

      Google translator nolonger for free

      so i wanted to use something like a module

        The free usage is reasonably generous and should be fine for a website or general ad-hoc and experimental usage.

        AutoML translation for example gives free the first 500K characters/month.

        If you just want basic usage it should be fine - there are more advanced options that include training your own data set etc.

Re: language translate
by choroba (Archbishop) on Oct 30, 2018 at 23:33 UTC
    Use Translate from Google.

    If you insist on Perl, have a look at Treex - but a Machine Translation course is probably needed to use it properly.

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
Re: language translate
by cavac (Curate) on Oct 31, 2018 at 09:31 UTC

    Machine translation will mostly get you "somewhat understandable" translations. I'm afraid, if you want to do it with high quality, you'd have to hire a human translator or learn the language yourself.

    Really depends on what you need.

    perl -e 'use MIME::Base64; print decode_base64("4pmsIE5ldmVyIGdvbm5hIGdpdmUgeW91IHVwCiAgTmV2ZXIgZ29ubmEgbGV0IHlvdSBkb3duLi4uIOKZqwo=");'

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1224958]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2021-04-19 22:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?