Jump to content
bartelsmedia

Automatic text translation by support for Deepl translation API

Recommended Posts

"Deepl" is an unbelievably good (paid) text translation service, that mops the floor with Google Translate.

They have an API and it would be awesome, if there would be a module, that would integrate it for easy content translation.

It could be a right-click context menu on the language tab:

2019-03-04_1927.png.358400528f9ab9cda33a480d54dc7782.png

It should ask from which of available other language it shall take translate from.

What do you think?

  • Like 1

Share this post


Link to post
Share on other sites

I am not the right person to really comment on this given that the only abilities I have in a second language is a smattering of travel Spanish, but this does seem pretty cool and makes you sound a lot less silly 😉

DeepL

image.thumb.png.5614adcfc3790fd46f2825ec64599d73.png

Google

image.thumb.png.41b0687d7c8d077ac8b1bbe5eb10d419.png

So, a DeepL module sounds like a pretty cool idea to me.

  • Like 4

Share this post


Link to post
Share on other sites

Deepl works well with contents with context (entire paragraphs). It's less ideal with single words, definitions or short terms.

Share this post


Link to post
Share on other sites
1 minute ago, bartelsmedia said:

It's less ideal with single words, definitions or short terms.

Without context such things very often can have various meanings and due to the nature of the differences between languages they cannot be translated "blindly". In these cases only a human translator can put them into context in order to properly translate them.

Share this post


Link to post
Share on other sites

Indeed. Nonetheless, DeepL is of awesome help to translate my website content. I use it as a basis and tweak the result. It saves tons of time. The only missing thing would be more comfort to save me from this copy from Processwire, paste to Deepl, copy from Deepl, paste to Processwire.

  • Like 1

Share this post


Link to post
Share on other sites

I looked into this and one of the limitations that their website does not say is that this API is not available to anyone purchasing access from the U.S. This basically is a dealbreaker for a lot of people and the implementation would mean it's limited to a very small number of people. Modules essentially would only be useful to someone that can purchase using billing addresses in the EU. I briefly considered some sort of credit card fraud... but passed haha.

I was really interested in DeepL and went to sign up for the API to get access to it and only found out that I couldn't buy access to it when I went to enter my CC information. Very disappointing that they did not say this anywhere on their website (I checked). I spoke with them this week so the information is up to date on this finding.

I sent an email to their staff and they said they are working on making it available outside of the EU but that it isn't due to "tax reasons". They didn't give any sort of timeline so until some point in the future this would only be available to users there.

Big bummer.

  • Like 1
  • Sad 1

Share this post


Link to post
Share on other sites
3 hours ago, usualCommission said:

This API is not available to anyone purchasing access from the U.S.

 

Ah, what a fail. Sorry, wasn't aware of this. Too sad. It would be extremely useful.

Share this post


Link to post
Share on other sites

That looks like it's only good for Payoneer to Payoneer payments where both parties have an account.

Kind of a bummer- I had already started working on a module before I ran into this problem. I'll pick it back up if/when the service becomes available in the U.S.

Share this post


Link to post
Share on other sites
14 hours ago, usualCommission said:

I sent an email to their staff and they said they are working on making it available outside of the EU but that it isn't due to "tax reasons". They didn't give any sort of timeline so until some point in the future this would only be available to users there.

Is this a technical or a legal limitation?

Share this post


Link to post
Share on other sites

Probably a legal, tax and more bureaucracy problems
DeepL is based in Cologne (Germany) and maybe their are even patent-depending problems or issues involved.

Share this post


Link to post
Share on other sites

DeepL is such a strange company. Arising like Phoenix from the Ashes with a beyond mind-staggering service but sales/marketing appears quite autistic for my taste. Apparently, they seem not to be looking for the small fishes. If I would be them, I would offer an affiliate business, motivating guys like you making a module and participate from each use.

Conspiracy theory: DeepL actually is a Google front. Perhaps for legal reasons. Just wild speculation. Mark my words. You read it here first. 😉

Share this post


Link to post
Share on other sites

That could be one reason or maybe their backend isn't that powerful and scalable by now as they might need it to be. 

Or... building reputation, some clients, enough press and BUZZ that Google or Microsoft take a closer look and maybe even buy them. Wouldn't be the first time.

In terms of affiliate business... yes... that could be a great opportunity. Similar to GorillaROI. And they offer a quite small service but it seems to work out pretty well for both sides.

 

  • Like 1

Share this post


Link to post
Share on other sites

I think @wbmnfktr may have a good point on scalability and load handling.

It's curious because they have been around long enough to break into the American market and their performance is so good that I'd have expected an acquisition by now. Very odd indeed.

Whether technical, financial, or bureaucratic, the fact stands that they've been around long enough to go into the American market- they just haven't. If they're citing tax purposes either it's a f****-off answer, or they're just trying to do it now. I'm an American and I run VPSs in the EU with a subscription model which would be similar. There's too many variables here to even guess.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By ICF Church
      Hi 👋
      Anyone else having this problem?
      Requirements:
      - Repeater (matrix & normal) with mutlilanguage fields (text, textarea…) 
      - Backend language set to something other than default (ie. German) 
      Reproduce:
      - Add a new repeater Item (ajax, I found no way to possible to disable it with matrix)

      (Notice how the default language tab is active instead of the backend language…)
      - Write something into the (default language) field
      - Try to save, if field is required, this will not work. If not required, then when reloading, the content will be inside the backend language field, instead of the default language field who was (presumably) active
      Analysis:
      When  loading  a new repeater element with ajax, the default langue tab is active, but the backend language inputfield is visible (with no visual indication). When writing into the field, it will populate the backend language. When manually clicking on the default language tab (which is already active), the field will switch to the actual default language field (which is [now] empty) (that can now be populated…)
      Also Notice, the labels of the elements to be added are in default language as well instead of the translated label (images instead of Bilder)…
      ProcessWire 3.0.148, Profields 0.0.5…
      Is it my system configuration, or does anyone else have the same issue? This is a screen recording of the problem:
      Issue: https://github.com/processwire/processwire-issues/issues/1179

      Screen Recording 2020-02-25 at 14.18.31.mov
    • By horst
      Change Default Language to be None-English | Walk Trough
      When you start a new (single) language site and the default language shouldn't be English, you can change it this way:
      Go to the modules core section:

       
      Select the Language ones by the filter function:

       
      We have four language related modules here, but for a single language site in none english,
      we only need the base module, named "Languages Support". So go on and install it.

       
      After that, you can leave it, ... 

       
      ... and switch to the newly created Language section under SETUP:

       
      Select the default language

       
      Enter your new language name or its Shortcut and save the page.
      I will use DE for a single language site in german here as example:

       
      Now I go to the ProcessWire online modules directory, down to the subsection for language packs and select
      and download my desired (german) one: 

       

       

       

       
      After downloading a lang pack as ZIP, I go back into my SETUP > LANGUAGES > default language page in admin,
      select the downloaded lang pack ZIP and install it:

       

       

       
       
      After the ZIP is uploaded, the files are extracted and installed, most of my screen is already in
      the new default language. To get all fully switched, we save and leave that page, ...

       
      ... and completely logout from the admin.

       
      Now, of course, we directly login back, ...

      ... and see, that now also the cached parts of the admin have switched to the new default language. 🙂

       
      That was it for a single language site in none english.
       
      If you want to have a multi language site, just add more languages to the SETUP > LANGUAGES section.
      When using a multi language site, I think you also want to use multi language input fields, and maybe different page names for your language page pendents. If so, you need to go into MODULES > CORE > filter LANGUAGE and install what you need or want to use of it, (if not already done).
      Thanks for reading and happy coding, 🙂
       
    • By snobjorn
      Here's my Norwegian language pack for ProcessWire. I've been adding translations over some time, to suit my own projects users needs.
      Last updated:
      2020/05/08 (May 8, 2020)
      Status:
      Not yet complete. Translations that non-superusers will see is prioritized.
      Name:
      ProcessWire-Norwegian-Language-Pack-nb-NO
      Translated using:
      ProcessWire 3.0.155 dev
      Number of files:
      191 wire files and 95 site files – ranging from just started to completely translated. The site files includes translation some free and some pro modules, see the complete list in the README.md at GitHub.
      Available at GitHub:
      https://github.com/snobjorn/processwire-norwegian-language-pack-nb-no
    • By louisstephens
      Hopefully this is the right place, if not, please move it to the proper sub. I installed the multi language module on my development (sandbox) set up not too long ago to test out a few things. From the start, I ran into some issues with dependencies not being met/installed, so I thought that I would simply just uninstall what had been. Unfortunately, that took me down a road of using some code in my home template to remove the modules (cant find it at the moment). After some struggling, I finally got it uninstalled, but it left behind 3 fields,
      language language_files language_files_site I thought that I could simply remove them from the languages template and then delete them, but I get the following error:

      I was wondering, is there a way to remove these using the api? I couldn't add any new users to the setup until I made "language" not required, but I was hoping to just remove all of the fields.
    • By Gadgetto
      Hello,
      I'm very new to ProcessWire but already fell in love with this CMS/CMF! I just finished my first small project and as I saw a lot of questions and different answers in this forum on how to set up a nice language switcher for your website, I decided to write my first tutorial.
      ----------
      Please note:
      I rewrote this tutorial since I was made aware and learned that flags should not be used for language selectors!
      There are some threads here in the forum (and from external sources) where this question is discussed:
      https://processwire.com/talk/topic/13196-adding-image-field-to-language/
      http://daily.unitedlanguagegroup.com/stories/editorials/inside-design-language-selector-no-flags
      https://processwire.com/talk/topic/16524-extending-languages-template/
      http://www.flagsarenotlanguages.com/blog/why-flags-do-not-represent-language/
      https://processwire.com/talk/topic/14241-language-names-and-utf8-page-names/
      Thanks,
      @ottogal
      @bernhard
      @jmartsch
      @kongondo
      an all others for your hints!
      ----------
       
      TUTORIAL - Set up a nice language switcher for your website - here we go:
       

      This will be the desired result!
       
      Step 1)
      Setup at least 2 languages in your PW install. In my case it's German (default language) + English:
       

       
      Step 2)
      Add a custom field
      Type = Text
      Name = languagecode
      This will hold the ISO 639-1 two-letter language code for the respective language. The field is needed to provide a simple method for outputting the language code in your templates. Without this field, you will need to programmatically construct your two-letter language code output via PHP (at least for the default language, as ProcessWire doesn't allow to rename the default language and it will always be called default).
      Here is an overview for ISO 639-1 two-letter language codes:
      https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
       

       
      Step 3)
      Add this field to the system template: language.
      To achieve this, go to Setup / Templates and activate the filter Show system templates:
       

       
      Now you can add the previously created field languagecode to the language template.
       

       
      Step 4)
      Edit your languages and fill in the appropriate values.
      a) default (German)
      Name = default (this can't be changed and is read only)
      Title = Deutsch (in both language tabs! - this is important as your visitor should always see his language item ... in his language)
      languagecode = de
       

       
      b) english (English)
      Name = english
      Title = English (in both language tabs! - this is important as your visitor should always see his language item ... in his language)
      languagecode = en
       

       
      Step 5)
      Now we are ready to write our template output!

      As we already have the appropriate two-letter ISO language code (languagecode field), we can use this in our html lang property:
       
      <html lang="<?php echo $user->language->languagecode; ?>">  
      Also the rel alternate output in the html head is simple. Put the following code within your <head></head> area:
       
      <?php // Handle output of 'hreflang' link tags for multi-language (SEO!) foreach ($languages as $language) { if (!$page->viewable($language)) { continue; } // Get the http URL for this page in the given language $url = $page->localHttpUrl($language); // Get the language code using custom languagecode field $languagecode = $language->languagecode; echo PHP_EOL.'<link rel="alternate" hreflang="'.$languagecode.'" href="'.$url.'">'; } ?>  
      In my sample I've used Boostrap 4 and the code below shows a complete navbar with our language switcher (BTW the language switcher will always be visible, even when the bootstrap navbar is collapsed):
       
      <nav id="mainnav" class="navbar navbar-expand-lg navbar-light px-4 px-md-5 sticky-top"> <a class="navbar-brand" href="<?php echo $config->urls->root; ?>"> <img src="<?php echo $config->urls->templates; ?>images/logo-rund-80x80.png" alt=""> Your Site Title </a> <ul class="navbar-nav ml-auto mr-3 mr-lg-0 order-lg-last d-none d-xs-custom-flex language-switcher" aria-label="<?php echo __('Sprache wechseln') ?>"> <?php echo '<li class="nav-item dropdown">'; // Construct the language prompt in the current user language $prompt = $user->language->title.' ('.strtoupper($user->language->languagecode).')'; // Current language = dropdown-toggle echo '<a class="nav-link dropdown-toggle" href="#languages" id="language-select" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">'; echo '<span class="world-icon"></span><span class="sr-only">'._x('(aktuelle Sprache)', 'navigation').': </span> '.$prompt; echo '</a>'; echo '<div id="languages" class="dropdown-menu dropdown-menu-right" aria-labelledby="language-select">'; foreach ($languages as $language) { // Get the http URL for current page in the given language $url = $page->localHttpUrl($language); // Construct the language prompt in the given language $prompt = $language->title.' ('.strtoupper($language->languagecode).')'; // Next language item (except current language) if ($user->language->id != $language->id) { if (!$page->viewable($language)) { echo '<span class="dropdown-item disabled">'.$prompt.'</span>'; } else { echo '<a class="dropdown-item" href="'.$url.'">'.$prompt.'</a>'; } } } echo '</div>'; echo '</li>'; ?> </ul> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarMainMenu" aria-controls="navbarMainMenu" aria-expanded="false" aria-label="<?php echo __('Menü einblenden / ausblenden') ?>"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse my-3 my-lg-0" id="navbarMainMenu"> <ul class="navbar-nav mr-auto"> <?php // Top navigation consists of homepage and its visible children foreach ($homepage->and($homepage->children("template=main-page|news|contact-points")) as $item) { if ($item->id == $page->rootParent->id) { echo '<li class="nav-item active">'; echo '<a class="nav-link" href="'.$item->url.'">'.$item->title.'<span class="sr-only"> '._x('(aktuelle Seite)', 'navigation').'</span></a>'; echo '</li>'; } else { echo '<li class="nav-item">'; echo '<a class="nav-link" href="'.$item->url.'">'.$item->title.'</a>'; echo '</li>'; } } ?> </ul> </div> </nav>  

      That's it! I hope you will like my tutorial and if there are any questions, critics or improvements please let me know!
      Thanks,
      Martin
       
×
×
  • Create New...