SEO

Multilingual WordPress website: how we did it for a business in Spain

A business offering in-person services in Mallorca asked us for something that sounds simple: its website, written in English for tourists, also had to bring in clients in Spanish and German. Three languages, a single WordPress website, and one condition: not losing the rankings it already had. This is the record of how we did it, including the decision we made in August and reversed three days later, the numbers by language as of September 2026, and the translation rules that became fixed. The client remains unnamed because of its industry.

The starting point: English mirrors that were ranking

The website already had TranslatePress installed, with the /es/ and /de/ paths created. The problem was that many of those pages were still in English: they were mirrors, Spanish and German URLs serving the original text. The striking part is that some of those mirrors ranked. One /es/ page for a tourist area sat at position 3.5 on Google while serving English content.

That gave us the first lesson: Google indexes the URL and the hreflang before evaluating whether the language matches. But a Spanish tourist who lands on a page in English doesn't call. Ranking wasn't the problem; converting was.

The decision we made and reversed

The three decisions of the multilingual project: in July, translate with TranslatePress and tolerate mirrors; in August, create native content in Spanish, reversed on August 27 in favor of English first with Spanish and German as translations of the same original

In July the plan was to translate with TranslatePress and tolerate the mirrors in the meantime. In August, seeing that the Spanish keywords weren't literal translations of the English ones, we decided on something more ambitious: a native Spanish silo, with eight pieces written from scratch against Spanish Search Console data, each with its own slug, and noindex on the mirrors.

It lasted three days. We wrote two native pieces and found the practical problem: they had a different structure and length than the English original, so they didn't fit block by block into TranslatePress. Keeping them meant managing two different pieces of content for the same page, forever, with every update. We deleted them on August 27 and set the rule that still stands: English is the original, Spanish and German are translations of that original, and whatever the Spanish keyword needs is handled inside the translation, not with separate content.

The data also buried the idea of noindexing the mirrors. The right move wasn't to hide them but to turn them into native translations with a 301 redirect from the old URL.

What we executed in September

  • 19 pages 100% translated into Spanish and German, verified by counting blocks identical to the English in the public HTML, rather than trusting what the tool said.
  • 20 titles and meta descriptions per language, because TranslatePress translates the body but metadata has to be written separately.
  • 14 translated slugs. TranslatePress automatically issues the 301 from the original slug to the translated one and updates the canonical and hreflang.
  • Duplicates consolidated: 153 URLs in the sitemap, exactly 51 in English, 51 in Spanish and 51 in German, all returning 200.

If you need to move URLs on a project like this, how to migrate your website without losing rankings explains the redirect work that made the difference here.

The translation rules that became fixed

The project's SEO translation rules: adapt the keyword instead of translating it, place names based on how each language searches, don't translate brand names or testimonials, metadata per language, human review marked, and verification on the public HTML

  • The keyword is adapted, not translated. People don't search for “Luxury massage Mallorca” as “masaje lujoso Mallorca” but as “masaje de lujo Mallorca”, and in German as a single compound word. The “near me” pages have their own formula in each language.
  • Place names follow real search usage. In Spanish, “Puerto de Alcúdia”; in German, the Catalan form, because that's what people type.
  • We don't translate client reviews, phone numbers, or brand and service names. A translated review stops being a review.
  • Form of address by language: informal “tú” in Spanish, formal “Sie” in German.
  • Every translation is marked as reviewed by a human. It's the only status that machine translation won't overwrite later.
  • Verification happens on the public page, not in the dashboard. The tool can say “translated” while the page is still in English because of a mismatched block.

What each language delivers, in numbers

Results by language as of September 2026: English homepage 702 clicks at position 9.3; German 39 clicks at position 11.9; Spanish 8 clicks at position 37.9; the Alcúdia geographic landing page totals 42 clicks across versions at positions from 3.5 to 8

Over 28 days in September 2026, the English homepage brought in 702 of the site's roughly 930 clicks. German punched above its weight: 39 clicks with the homepage at position 11.9 and a service page at position 7.2. Spanish, the language that took us the most work, was at 8 clicks with the homepage at position 37.9, and getting worse month after month despite already being translated. That's the project's open wound and proof that translation wasn't the only cause.

What clearly worked was the page-per-area model: the Alcúdia page, adding up its versions in all three languages, earned 42 clicks at positions from 3.5 to 8. It's the same logic we explain in Local SEO and city-based rankings: a page with its own content for each area, not the same page cloned with the name swapped.

What we'd do differently

  • Measure each language separately from day one. The decline in Spanish was spotted late because we were looking at the site as a whole.
  • Don't launch native content in a second language without first figuring out how it coexists with the translation tool. It cost us two pieces and a week.
  • Settle the commercial name of each service before translating. One service line has had no traffic for months because the name the client chose isn't what anyone searches for, and changing it now affects three languages.

Frequently asked questions

Which plugin is best for a multilingual WordPress website?

TranslatePress and WPML are the two most widely used. TranslatePress translates on top of the rendered page and is simpler for service websites; WPML gives more control per field but is heavier. What matters isn't the plugin but that each language has its own URL, hreflang and metadata. Before that comes another decision, which language and for which market; we cover it in International SEO: how we rank a business in another country from Peru.

Does translating with AI hurt SEO?

Not by itself. What hurts is publishing the translation without reviewing it, with the keyword translated literally and without adapting place names or metadata. A machine translation reviewed by someone who knows how people search in that language works.

Is it better to have one domain per language or /es/ and /de/ folders?

For a local business with a single team, folders. They concentrate authority on one domain and are cheaper to maintain. Country domains make sense when you have operations and different content in each country.

Do you also need to translate titles and meta descriptions?

Yes, and it's the most commonly forgotten step. The plugin translates the body, but each language's metadata is written separately. Without it, Google shows the English title in Spanish-language results.

How long does it take a new translation to rank?

Between one and three months for Google to reassign rankings to the native version. In this case the German pages responded sooner than the Spanish ones, and Spanish still hasn't recovered after two months.

Conclusion

A well-built multilingual website isn't just a translated website: it's a website with a clear original, translations that adapt to how each language searches, its own URLs and metadata, and separate measurement. In this case German responded, the page-per-area model worked and Spanish is still the pending task, and that's how we report it to the client every month.

Working in several languages doesn't change the foundations: they're still the ones we explain in what SEO is and how it works. If you want us to look at it on your website, that's what we do in Lucuma Agency, digital marketing agency in Lima.

At Lucuma Agency we do SEO and WordPress web development for businesses in Peru, Spain and the United States. If your website needs to speak more than one language, book a free consultation and we'll plan it out in 30 minutes.

Carlos MurilloFounder of Lucuma Agency. Serious marketing, treated like friends.

Want results like these on your website?

Book a free 30-minute consultation.

Book your meeting

Other posts you might like

Integrating your website with a real estate CRM: Sperant and alternatives

At almost every real estate developer we work with, the lead takes the same absurd trip: it comes in through the form...

Moving a website to a new host with no downtime and no SEO loss

Switching servers is scary for a sensible reason: you rarely do it, and when it goes wrong, it goes wrong in public....

WooCommerce with Yape and Plin: which payment gateway to choose in Peru

The question always comes the same way: “which payment gateway do you recommend?” And the useful answer doesn't start with a name, because the...

How to build a custom WordPress plugin and when it's worth it

There's a moment, in quite a few projects, when the search for the right plugin becomes the problem. You tried three,...

Online complaints book in WordPress: how to comply with Indecopi

Almost every online complaints book we audit complies on the outside and fails on the inside. They have the notice,...

Form emails not arriving: how we fixed WordPress outgoing mail

The message came in like this: “the complaints book is throwing an error.” The Proba Inmobiliaria website, a page required by law,...

WordPress plugins: the 8 we always install and the 5 we never do

“Top 50 plugins” lists don't help you decide. They help you install fifty plugins. This is ours,...

WordPress backups: the routine that saves you and the one that makes you think you're safe

Almost every business we ask has backups. Almost none has ever restored one. Those two sentences together are...

WordPress hosting in Peru: shared, VPS or Plesk

Almost every hosting conversation starts with price and ends up in the wrong place. The useful question is...

International SEO: how we rank a business in another country from Peru

When a business wants to sell outside its country, the conversation almost always starts off wrong: with translation. And the...

Structured data for local businesses: what to include and what not to

Structured data is the piece of code that explains to Google, in a language that leaves no room for interpretation,...

AI generated content and SEO: what Google really penalizes

The question comes up in almost every meeting: “if I use AI to write, will Google penalize me?” The short answer...

Send message