Table of contents:

Last month, we finished building our WooCommerce-based online shop. It was a big project that took us about four months to complete. We are based in Germany but offer our prints throughout Europe, which made having a multilingual site one of our most important features.

Mmiri shop hero 1500xr 30

In this article, I want to summarize my experience, cover the different translation options available on the market, compare them, and explain why I believe TranslatePress could be a top contender for your WordPress website. I should mention that I am not affiliated with the creators of the plugin and am using the free version myself.

How many languages do you need?

This is probably the first question every site owner has to answer. When I was building our online shop, my initial plan was to offer translations in many European languages using AI, following the principle of “the more, the better.” However, after some initial experience, I changed my mind for two important reasons.

First, adding more languages means complying with the regulations of different EU countries. For an online shop, this alone can be a heavy burden for small entrepreneurs like us. Secondly, even with the best AI translation available, you still need to reserve a significant amount of time to review and improve the translations.

In this regard, offering just two languages—the native language of your primary market plus English for international customers—seems like the sweet spot. It’s affordable, easy to maintain, and covers most potential customers. In our case, we chose English as our main language and German, our local language, as the secondary one.

What types of translation plugins are there?

There are two main types of translation plugins on the market.

The first type works by duplicating content. It creates a separate version of your pages, posts, and products for each new language. This can be a benefit or a drawback, depending on your specific needs.

  • The main advantage: Your content can be completely different for each language. It’s like having separate sites for each region, all managed from a single WordPress installation.
  • The main disadvantage: You have to maintain all these different versions separately. This can be very time-consuming and repetitive. For an e-commerce site with hundreds or thousands of products, it can also hurt performance by filling your database with many copies of your products. The most well-known plugins in this category are WPML and Polylang.

The second type of plugin translates content dynamically. It saves all translations in its own database tables and then creates a translated version of your page on the front end. This means that in your WordPress dashboard, your content still exists in only one original language.

  • The main advantage: You only have to maintain one version of your content. The entire translation process can be automated, and if you change your original content, all translated versions are updated automatically. This approach also doesn’t bloat your main database tables.
  • The main disadvantage: It’s much harder to create different content for different languages.

These dynamic translators can be further divided into two subcategories:

  1. Cloud-based services (SaaS) that use their own servers, such as Weglot, GTranslate, and Linguise. These are incredibly easy to use and don’t put a strain on your server. The main issue is that you don’t own your translations; you can only use them as long as you pay for the service. If the company disappears, your translations could be gone.
  2. Self-hosted plugins that are installed on your site and save translations in your own WordPress database. As far as I know, the main plugin in this category is TranslatePress.

So, what is the best type for you? It comes down to one question: do you need to adapt your content for each language, or do you just want to offer the same content in different languages? If it’s the former, go for something like WPML or Polylang. If, like me, you want to offer the same content, the second type is much more convenient. Then you just have to decide between a cloud-based service and a self-hosted solution like TranslatePress.

How does TranslatePress work?

As mentioned, TranslatePress doesn’t duplicate your content. It helps you create translations, saves them in your database, and then automatically generates translated versions of your pages, posts, or products. When translating elements from other plugins (like the WooCommerce checkout or user dashboard), it uses the original translation files from that plugin.

Mmiri shop translatepress 1500xr 30

It also allows you to automate translations by utilizing Google Cloud, DeepL, or TranslatePress’s own AI translation services. In the free version, you can only connect it to your own Google Translate API key. I’ll cover how to do that later in the article.

Performance of TranslatePress vs. other solutions

I’ve done some testing, and TranslatePress definitely adds some loading time to your site. However, thanks to its clean database structure and overall minimalist approach, it didn’t negatively affect the perceived responsiveness of our online shop. It also comes with built-in database optimization tools. Because the plugin saves its data in its own tables and not in WordPress’s main postmeta table (which often causes performance issues in large WooCommerce stores), you can remove the plugin without worrying about it leaving clutter in your database.

Mmiri shop translatepress database 1500xr 30

Performance-wise, cloud-based solutions like Weglot or GTranslate would probably win because they add no additional load to your server. You can even use Weglot without a plugin by just adding a bit of JavaScript code. However, this convenience comes at a cost, as these services tend to be the most expensive.

How to connect Google AI translation with TranslatePress

This was the trickiest part for me. I have to admit, I did not enjoy using the Google Cloud interface at all. It was a rather painful experience, so I hope I can make your experience a bit smoother.

  1. First of all, you need a Google Cloud account.
  2. Next, create a billing account. It only accepts credit or debit cards as a payment method.
  3. Now, search for and enable the Cloud Translation API in your project.
  4. Once enabled, you can finally generate your API key.
  5. Copy the new key and paste it into the TranslatePress settings in your WordPress dashboard.
  6. Finally, check if everything is working.

From now on, your entire website will be available in the additional language (e.g., at www.your-website.com/de). You are also able to manually change and correct these translations. However, be cautious: each time you change your original content, TranslatePress may automatically generate a new translation, overwriting your manual edits. If this isn’t what you want, you can disable automatic translation or exclude specific text from being translated by adding a CSS class to that element. These classes can be configured in the plugin’s advanced settings.

I also highly advise restricting your API key to work only with your own domain name. This adds an important layer of security.

Finally, let me briefly mention the cost. The great thing is that this is a one-time cost for the initial translation. After Google has done its job, you can even disable your API key if you wish. To give you an idea of the prices, I was able to translate my entire online shop for less than two dollars.

My top 5 most useful tips

Here are a few tips to make working with the plugin more pleasant.

  1. Change the default flags. I find the built-in flag icons a bit outdated. Luckily, it’s very easy to use your own. Download a set of SVG icons you like (I downloaded mine from here), optimize them with a tool like this, and upload them to your site. If you wish to optimise them even more, you can ask ChatGPT to strip the code even further. Then, go to TranslatePress Settings → Advanced and use the language code to create overrides (e.g., en_US for American English or de_DE for German). Add the links to your new flag icons, and you’re done!
  2. Use classes to exclude elements from translation. Every translation plugin offers exclusion based on CSS selectors. I make a habit of adding a .notranslate class to elements that shouldn’t be translated. You can also create a class like .noaitranslate to prevent only automatic translation. Important: Don’t add these classes to navigation menu items, as TranslatePress will ignore them completely and won’t translate the links.
  3. Consider the performance difference between languages. While TranslatePress offers good performance, there is still a small processing difference between your site’s native language and the translated versions. With this in mind, think carefully about which language will be your primary one. It’s probably best if most of your traffic lands on the original language version.
  4. Translate WooCommerce emails. If you also want to translate WooCommerce emails, activate the “Show regular strings tab in String Translation” option in the advanced settings of the plugin (Settings → TranslatePress →Advanced tab  Debug). A new “String translation” tab will appear, where you’ll find all the strings from your email templates ready for translation.
  5. Create a custom language switcher. The built-in language switcher was the thing I disliked the most about TranslatePress. I don’t like its look, and worst of all, it is incredibly hard to style with custom CSS. Fortunately, the documentation provides an easy way to create your own switcher with a little bit of PHP. I’m using a minimalist switcher that only shows a text link to the second language.
<!-- Language Switcher -->
<?php
$languages = trp_custom_language_switcher();
$currentLanguage = get_locale();

foreach ($languages as $languageCode => $languageData): ?>
  <?php if ($languageCode != $currentLanguage): ?>
    <a href="<?= $languageData['current_page_url'] ?>" class="language-switcher"data-language="<?= $languageCode ?>"data-no-translation>
      <img src="<?= $languageData['flag_link'] ?>" alt="<?= $languageData['language_name'] ?> flag">
      <span><?= $languageData['language_name']?></span>
    </a>
  <?php endif; ?>
<?php endforeach; ?>
<!-- Language Switcher END -->

Also add the following snippet to you script manager or child theme to prevent TranslatePress from loading CSS code for it’s default switcher.

/**
 * Prevent TranslatePress language-switcher CSS from loading
 */
add_action( 'wp_print_styles', function() {
    wp_dequeue_style( 'trp-language-switcher-style' );
}, 20 );

Do you need the pro version?

The two main benefits of the paid version are the ability to add more than one additional language and the ability to translate SEO data like titles and meta descriptions. If two languages are enough for you, as they are for us, then translating SEO tags is probably the main reason to upgrade. If you’re serious about SEO, the upgrade is definitely worth the money. We decided we could upgrade later if needed.

Conclusion

Often, the free versions of premium plugins feel like stripped-down, frustratingly limited experiences. But there are also welcome exceptions, and for me, TranslatePress is one of them. In combination with the Google Translate API, it provides a solid foundation for creating a bilingual website or even a shop on a tight budget. The only key missing feature is the translation of SEO tags. While this makes the Pro version a worthy consideration for serious business owners, its absence doesn’t detract from the end-user experience, making the free version very useful for many small websites—especially here in Europe, where a second language can make a big difference.

My runner-up choice was GTranslate, which I came very close to choosing. However, the dependency on third-party servers for something as critical as translation pushed me to explore self-hosted solutions, and TranslatePress impressed me the most.

If you liked this article, you may want to check out other posts covering various topics about web design and online business. You might find my writings about photography and art enjoyable as well. Check it out!