<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Serghei Streltov</title>
    <description>The latest articles on DEV Community by Serghei Streltov (@sserghei).</description>
    <link>https://dev.to/sserghei</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3992494%2F2a886ca5-51fa-4b82-8189-73a039b7e257.png</url>
      <title>DEV Community: Serghei Streltov</title>
      <link>https://dev.to/sserghei</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sserghei"/>
    <language>en</language>
    <item>
      <title>Why your hreflang tags are being ignored</title>
      <dc:creator>Serghei Streltov</dc:creator>
      <pubDate>Tue, 25 Aug 2026 09:43:27 +0000</pubDate>
      <link>https://dev.to/sserghei/why-your-hreflang-tags-are-being-ignored-3k70</link>
      <guid>https://dev.to/sserghei/why-your-hreflang-tags-are-being-ignored-3k70</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://welocale.net/blog/why-hreflang-tags-are-ignored" rel="noopener noreferrer"&gt;the WeLocale blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most SEO work is a matter of degree. You improve a title, you gain a little. hreflang is not like that. It either forms a valid set that search engines act on, or it does nothing at all, and the failure is completely silent. No warning, no penalty, no message in Search Console telling you the tags you carefully added are being discarded.&lt;/p&gt;

&lt;p&gt;We build a translation widget, which means we generate hreflang tags for other people's sites. This post is what we have learned about why they get ignored, including the parts where our own approach has real limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule that breaks most setups
&lt;/h2&gt;

&lt;p&gt;hreflang is not a property of a page. It is a property of a &lt;strong&gt;set&lt;/strong&gt; of pages, and every page in that set has to agree.&lt;/p&gt;

&lt;p&gt;If your English page says the German version is at &lt;code&gt;/de/&lt;/code&gt;, the German page has to say the English version is at &lt;code&gt;/&lt;/code&gt;. If it does not, the declaration is one-way, and one-way declarations get dropped. Google calls these return links and treats their absence as a reason to distrust the whole set.&lt;/p&gt;

&lt;p&gt;This is why hreflang fails in a way that feels unfair. Every individual page looks correct when you inspect it. The problem only exists in the relationship between pages, which is exactly the thing you cannot see by viewing source on one URL.&lt;/p&gt;

&lt;p&gt;The corollary catches people too: each page must list &lt;strong&gt;itself&lt;/strong&gt;. A German page whose tags mention English and French but not German is an incomplete set. Incomplete sets get dropped.&lt;/p&gt;

&lt;h2&gt;
  
  
  The other four failure modes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;en-UK.&lt;/strong&gt; The language code comes from ISO 639-1 and the region code from ISO 3166-1. In ISO 3166-1 the United Kingdom is GB. There is no UK. The tag is silently invalid, and it is easily the most common hreflang error on the web. Same class of mistake: lowercase regions, uppercase languages, and a region with no language at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;URLs that redirect.&lt;/strong&gt; hreflang has to point at the final URL. If it points at http and you redirect to https, or it omits a trailing slash your server adds, the target is a redirect rather than a page, and it does not count. This one bites hardest after a migration, when everything still works fine for humans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Targets a crawler cannot use.&lt;/strong&gt; A page blocked in robots.txt, or carrying noindex, or canonicalised somewhere else, cannot be an hreflang target. The canonical conflict is the quiet one: your hreflang says these five pages are alternates of each other, your canonical tag says four of them are copies of the fifth. Both look right in isolation and together they cancel out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mixing declaration methods.&lt;/strong&gt; You can declare hreflang in HTML link tags, in HTTP headers, or in an XML sitemap. Pick one. Declaring the same page's alternates in two places is a reliable way to produce conflicting signals.&lt;/p&gt;

&lt;h2&gt;
  
  
  What client-side injection can and cannot do
&lt;/h2&gt;

&lt;p&gt;Here is the part where I have to be straight about our own product, because it is directly relevant.&lt;/p&gt;

&lt;p&gt;Our widget injects hreflang tags from JavaScript, after the page loads. That has consequences worth understanding before you rely on it, whoever your vendor is.&lt;/p&gt;

&lt;p&gt;Google renders JavaScript, so tags added this way can be picked up. But rendering happens in a second pass, separately from the initial crawl, and it is not guaranteed to happen on any particular schedule. Server-rendered tags are simply stronger. Other search engines are less reliable about running JavaScript at all.&lt;/p&gt;

&lt;p&gt;The second consequence is the URL shape. We build alternates as a query parameter, &lt;code&gt;?lang=de&lt;/code&gt;, because we do not create a separate page per language. That is a deliberate trade: nothing gets duplicated in your CMS, and you do not re-translate when you edit a paragraph. What you give up is a clean path per language. A query parameter can be indexed, but a path like &lt;code&gt;/de/&lt;/code&gt; is a stronger signal, and tools that translate URL slugs will beat us on this specific point.&lt;/p&gt;

&lt;p&gt;So if multilingual organic search is the main reason you are translating your site, and you want each language on its own indexable path, a tool that produces real per-language URLs fits better than we do. GTranslate serves translated sites from its own network with translated URLs. WordPress plugins such as WPML and Polylang create a post per language. Both are the right answer for that requirement, and I am not going to pretend otherwise.&lt;/p&gt;

&lt;p&gt;Where a runtime widget makes sense is the other case: you want visitors to read the site in their language, you do not want a second copy of every page, and hreflang is a useful signal rather than the entire strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to check what you actually have
&lt;/h2&gt;

&lt;p&gt;Three steps, in order of how often they find something.&lt;/p&gt;

&lt;p&gt;First, view source on two different language versions and compare the blocks. Not one page. Two. You are checking that they reference each other and that each includes itself. This finds the return-link problem, which no single-page checker can.&lt;/p&gt;

&lt;p&gt;Second, take every URL in the set and request it directly. Any redirect, any 404, any noindex, and that entry is dead.&lt;/p&gt;

&lt;p&gt;Third, check that your canonical tags agree with your hreflang set rather than fighting it.&lt;/p&gt;

&lt;p&gt;If you want the tags themselves generated and syntax-checked, we built a &lt;a href="https://welocale.net/tools/hreflang-generator" rel="noopener noreferrer"&gt;free hreflang generator and validator&lt;/a&gt;. It runs entirely in your browser, needs no account, and outputs HTML tags, an HTTP header or an XML sitemap block. It catches en-UK, case errors, relative URLs, duplicate pairs and a missing x-default. It cannot check return links, because that is a property of your whole site rather than of any tag, and a tool claiming otherwise would be lying to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should you use x-default?
&lt;/h2&gt;

&lt;p&gt;It is optional and worth setting. x-default tells a search engine which page to serve a visitor whose language you do not cover. Usually that is your main page or a language selector. Without it, that visitor gets whichever version the engine guesses, and the guess is often wrong for exactly the people you understand least.&lt;/p&gt;




&lt;p&gt;If you have hit an hreflang failure mode that is not on this list, I would genuinely like to hear it.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>i18n</category>
    </item>
    <item>
      <title>GTranslate vs WeLocale: Which One Should You Pick in 2026?</title>
      <dc:creator>Serghei Streltov</dc:creator>
      <pubDate>Fri, 17 Jul 2026 16:24:22 +0000</pubDate>
      <link>https://dev.to/sserghei/gtranslate-vs-welocale-which-one-should-you-pick-in-2026-4n5c</link>
      <guid>https://dev.to/sserghei/gtranslate-vs-welocale-which-one-should-you-pick-in-2026-4n5c</guid>
      <description>&lt;p&gt;If you have looked into translating your website, GTranslate has probably shown up in your search results. It is one of the oldest names in this space, and it works. The question worth asking is not "does it work" but "does it fit how you actually run your site."&lt;/p&gt;

&lt;p&gt;Here is an honest look at both, no fluff.&lt;/p&gt;

&lt;h2&gt;
  
  
  What GTranslate actually is
&lt;/h2&gt;

&lt;p&gt;GTranslate started as a wrapper around Google Translate, and a lot of its DNA is still there. The free version shows a visible "powered by Google Translate" widget and translates on the fly, which is fine for a quick fix but rough on quality: idioms, product names, and anything technical often come out wrong. The paid tiers add proxy-based crawling, so Google can index your translated pages, plus some manual editing tools.&lt;/p&gt;

&lt;p&gt;The tradeoff is complexity. Proxy setups mean a second layer sitting between your server and your visitors, which is more to configure and more that can break when you update your site.&lt;/p&gt;

&lt;h2&gt;
  
  
  What WeLocale does differently
&lt;/h2&gt;

&lt;p&gt;WeLocale skips the proxy entirely. You add one script tag, and the widget scans your live DOM and swaps text in place, no separate translated copy of your site living on someone else's server. Pages stay indexable and cacheable exactly the way they already are, and new content you publish gets picked up automatically because the widget is watching the page, not a snapshot of it.&lt;/p&gt;

&lt;p&gt;Translation quality is AI-powered rather than a raw machine-translate widget, so it holds up better on product names, brand voice, and anything domain-specific, and every string can still be edited by hand from the dashboard if something needs a human touch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where each one wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GTranslate wins if:&lt;/strong&gt; you want the absolute cheapest possible option and you do not care about translation quality, or you already run infrastructure that plays nicely with a reverse-proxy setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WeLocale wins if:&lt;/strong&gt; you want the setup to take minutes instead of a dev sprint, you care about translation quality out of the box, or you are on WordPress and want a plugin that just works without touching server config.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing, roughly
&lt;/h2&gt;

&lt;p&gt;GTranslate's free tier is genuinely free but limited and shows the Google-Translate badge. Its paid plans that unlock SEO-indexable pages and proxy translation start climbing once you need more than a couple of languages.&lt;/p&gt;

&lt;p&gt;WeLocale has a free plan for smaller sites, and paid plans scale with word volume rather than punishing you for adding a language. There's no "reset your word count every month and pay again" trap.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest bottom line
&lt;/h2&gt;

&lt;p&gt;GTranslate has been around longer and that counts for something if you want a tool with a long track record. But if you want fewer moving parts, translations that read like a person wrote them, and a setup you can finish over coffee, WeLocale is the simpler bet in 2026.&lt;/p&gt;

&lt;p&gt;Try WeLocale free at &lt;a href="https://welocale.net" rel="noopener noreferrer"&gt;welocale.net&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>i18n</category>
      <category>seo</category>
      <category>saas</category>
    </item>
    <item>
      <title>How to Translate Your Website Without Code (the 2026 Way)</title>
      <dc:creator>Serghei Streltov</dc:creator>
      <pubDate>Fri, 10 Jul 2026 17:08:57 +0000</pubDate>
      <link>https://dev.to/sserghei/how-to-translate-your-website-without-code-the-2026-way-4e8m</link>
      <guid>https://dev.to/sserghei/how-to-translate-your-website-without-code-the-2026-way-4e8m</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://welocale.net/blog/how-to-translate-your-website-without-code" rel="noopener noreferrer"&gt;WeLocale blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To translate a website without code, add a translation widget that loads from a single snippet: paste one line into your site, choose your languages, and the tool translates your pages automatically with a built-in language switcher. No developer, no duplicate pages to maintain. Here is how it works, step by step.&lt;/p&gt;

&lt;p&gt;For years, "let's make the site multilingual" was the project nobody wanted to own. It meant duplicating pages, pulling in a developer, paying an agency, and then maintaining two or three versions of everything forever. So it stayed on the roadmap, quarter after quarter, while a chunk of your visitors quietly clicked away because the site only spoke English.&lt;/p&gt;

&lt;p&gt;The good news is that the whole calculation has changed. You can now translate an entire website without touching the code and have it live the same afternoon. Here is how it actually works, and the one part most people get wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  You don't translate pages anymore, you translate the site
&lt;/h2&gt;

&lt;p&gt;The old mental model was page by page: copy this page, translate it, publish a &lt;code&gt;/fr/&lt;/code&gt; version, repeat two hundred times. The modern approach throws that out. You add a small snippet to your site once, and a layer sits on top that reads whatever text is on the page, swaps in the right language for each visitor, and remembers their choice. Your original site never changes. You are not maintaining copies, and when you edit a page in English, the translations follow.&lt;/p&gt;

&lt;p&gt;In practice it is three steps: paste one line of JavaScript before your closing body tag, let it scan your content, and switch on the languages you want. Most people are live in well under an hour.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part everyone gets wrong: hreflang
&lt;/h2&gt;

&lt;p&gt;This is where I watch sites quietly lose months of traffic. Translating the words is the easy ninety percent. The other ten percent, telling Google which version to show in which country, is what decides whether your French pages actually rank in France.&lt;/p&gt;

&lt;p&gt;That job belongs to &lt;code&gt;hreflang&lt;/code&gt;, and the rule that trips everyone up is that the tags have to be reciprocal. Your English page points at the French one, and the French one has to point back, plus an &lt;code&gt;x-default&lt;/code&gt; for everyone else. If they only point one way, Google shrugs and ignores them. Each version also needs to point its canonical at itself, not back at your main language. Get this right and your translated pages compete on their own merits. Get it wrong and they are invisible.&lt;/p&gt;

&lt;p&gt;A decent no-code tool injects all of this for you. If the one you are looking at does not, treat that as a real mark against it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where you should still pay a human
&lt;/h2&gt;

&lt;p&gt;I am not going to pretend machine translation is flawless. For your blog, your product pages, and general marketing copy, it is genuinely good now, good enough to ship today. But I would still put a human on three things: anything legal or compliance-related, your handful of highest-traffic pages, and your taglines, where one slightly-off phrase reads as amateur.&lt;/p&gt;

&lt;p&gt;The move most teams settle on is simple: machine-translate everything so you are live this week, then have a native speaker polish the five pages that actually matter. You get ninety-five percent of the upside immediately and fix the last five percent exactly where it counts.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, should you do it?
&lt;/h2&gt;

&lt;p&gt;If you have been sitting on "we should really be multilingual," there is no longer a good reason to wait for a big project. One snippet, correct hreflang, and a human pass on your top pages. That is the entire thing.&lt;/p&gt;

&lt;p&gt;And if you want the fastest version of it, that is exactly what we built &lt;a href="https://welocale.net" rel="noopener noreferrer"&gt;WeLocale&lt;/a&gt; to do: one snippet, 50+ languages, hreflang handled, and your translations stay yours. It is free to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I translate my website without a developer?&lt;/strong&gt; Yes. Snippet-based tools translate your site automatically after you paste one line of code, with no developer and no duplicate pages to maintain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is no-code website translation good for SEO?&lt;/strong&gt; It can be, if the tool adds hreflang tags and serves each language on its own URL. Without those, search engines may not index your translated pages, so check that the tool handles them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How long does it take?&lt;/strong&gt; Minutes for the initial setup. You paste the snippet, pick your languages, and pages translate automatically. You can then edit any translation by hand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is machine translation accurate enough?&lt;/strong&gt; Modern AI translation is a strong starting point for most marketing and informational pages. For legal or high-stakes content, have a native speaker review your top pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work on WordPress?&lt;/strong&gt; Yes, there's a free WeLocale plugin for WordPress. The same snippet works anywhere you can add a line of code to a site; official app-store integrations for other platforms are on the roadmap, not live yet.&lt;/p&gt;

</description>
      <category>i18n</category>
    </item>
    <item>
      <title>How Much Does It Cost to Translate a Website in 2026?</title>
      <dc:creator>Serghei Streltov</dc:creator>
      <pubDate>Fri, 10 Jul 2026 17:07:43 +0000</pubDate>
      <link>https://dev.to/sserghei/how-much-does-it-cost-to-translate-a-website-in-2026-1n94</link>
      <guid>https://dev.to/sserghei/how-much-does-it-cost-to-translate-a-website-in-2026-1n94</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://welocale.net/blog/how-much-does-it-cost-to-translate-a-website" rel="noopener noreferrer"&gt;WeLocale blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Short answer: translating a website in 2026 ranges from almost free, if you do machine translation yourself, to several thousand dollars for a full professional agency project. Most small and mid-size sites land in between. Professional human translation runs about $0.08 to $0.30 per word, agencies usually add project minimums of $50 to $95, and subscription translation tools start around $15 per month. Your final cost comes down to three things: how many words you have, how many languages you need, and how much human quality you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four ways to translate a website (and what each costs)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Professional human translation
&lt;/h3&gt;

&lt;p&gt;Freelancers or an agency translate every page by hand.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rate: roughly $0.08 to $0.30 per word for common language pairs, higher for rare languages or technical content.&lt;/li&gt;
&lt;li&gt;Per page: about $25 to $100.&lt;/li&gt;
&lt;li&gt;Add 30 to 50 percent if you want a second linguist to edit and proofread (the standard translate, edit, proofread workflow).&lt;/li&gt;
&lt;li&gt;Most agencies charge a project minimum of $50 to $95.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: a 10,000-word marketing site into one language costs roughly $800 to $3,000, and that is per language. Best quality, highest price, slowest turnaround, and you pay again every time your content changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Do-it-yourself machine translation
&lt;/h3&gt;

&lt;p&gt;Run your content through a machine translation API and paste the results back in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost: very low on paper, sometimes free for small volumes.&lt;/li&gt;
&lt;li&gt;The catch: you need a developer to wire it up, you get no editing workflow, no language switcher, and no SEO tags, and nothing updates when your site changes. The cheapest option on paper often costs the most in developer hours and lost quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Website translation tools (subscription widgets)
&lt;/h3&gt;

&lt;p&gt;A tool translates your site automatically, gives you a language switcher, and lets you edit the results.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost: subscriptions typically start around $15 per month.&lt;/li&gt;
&lt;li&gt;Watch the pricing model. Several tools, Weglot for example, bill on both words translated and page views served, so the monthly cost climbs as your traffic grows. A busy site can jump to 200 to 400 dollars per month once it outgrows the entry tier.&lt;/li&gt;
&lt;li&gt;This is the practical middle ground: fast, no developer, AI-powered translations you can refine by hand.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Build it in-house
&lt;/h3&gt;

&lt;p&gt;A developer adds internationalization libraries and manages translation files by hand.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost: no software fee, but heavy developer time up front and ongoing, and you still pay for the actual translations.&lt;/li&gt;
&lt;li&gt;Only worth it for large teams with engineers to spare.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The hidden costs most people forget
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance&lt;/strong&gt;: every time you edit a page, that text needs translating again. With manual and agency work, you pay again each time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO&lt;/strong&gt;: to rank in other languages you need hreflang tags, one clean URL per language, and a switcher. Skip this and your translated pages never get found.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer time&lt;/strong&gt;: wiring up an API or maintaining translation files is real engineering cost, even when the translation itself looks cheap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-pageview pricing&lt;/strong&gt;: tools that meter page views can turn a small bill into a large one as you grow, and make budgeting hard to predict.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to estimate your own cost
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Count your words. Most sites have 5,000 to 30,000.&lt;/li&gt;
&lt;li&gt;Multiply by the per-word rate for human translation, or check the word allowance of a tool.&lt;/li&gt;
&lt;li&gt;Multiply by the number of languages.&lt;/li&gt;
&lt;li&gt;Add maintenance based on how often your content changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A typical small business site, around 10,000 words and 2 languages, costs roughly $1,600 to $6,000 done by humans, or from $15 per month with a translation tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where WeLocale fits
&lt;/h2&gt;

&lt;p&gt;WeLocale translates any website at runtime from a single snippet, with no code changes and no developer. Pricing is a flat monthly plan from $15, not a per-pageview meter, so your bill does not balloon when traffic grows. Translations are AI-powered and fully editable, your word allowance never resets each month, and your translations stay yours even if you cancel. You also get a built-in language switcher and SEO hreflang tags on paid plans, so your translated pages can actually rank.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is machine translation good enough?&lt;/strong&gt; For most marketing and informational pages, modern AI translation is a strong starting point. For legal, medical, or other high-stakes content, have a native speaker review your top pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does it cost to translate a small website?&lt;/strong&gt; Done by professional humans, a 10,000-word site into one language is roughly $800 to $3,000. With a subscription tool, it starts around $15 per month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does my translation bill keep rising?&lt;/strong&gt; Many tools charge by page views or monthly translation requests, so traffic growth pushes the cost up. Flat-rate plans avoid that surprise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need a developer?&lt;/strong&gt; Not with a snippet-based tool. Do-it-yourself machine translation and in-house internationalization both require engineering time.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
    </item>
    <item>
      <title>WPML vs Polylang vs WeLocale: Which WordPress Translation Plugin Is Right for You?</title>
      <dc:creator>Serghei Streltov</dc:creator>
      <pubDate>Fri, 26 Jun 2026 13:20:34 +0000</pubDate>
      <link>https://dev.to/sserghei/wpml-vs-polylang-vs-welocale-which-wordpress-translation-plugin-is-right-for-you-49ko</link>
      <guid>https://dev.to/sserghei/wpml-vs-polylang-vs-welocale-which-wordpress-translation-plugin-is-right-for-you-49ko</guid>
      <description>&lt;p&gt;If you've ever searched "WordPress translation plugin," you've hit the same three names over and over: WPML, Polylang, and (increasingly) WeLocale. They all translate your WordPress site. The similarities end there.&lt;/p&gt;

&lt;p&gt;This guide breaks down what each tool actually does, what it costs, and who it's best suited for.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on the &lt;a href="https://welocale.net/blog/wpml-vs-polylang-vs-welocale-which-wordpress-translation-plugin-is-right-for-you" rel="noopener noreferrer"&gt;WeLocale blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The quick version
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;WPML&lt;/th&gt;
&lt;th&gt;Polylang&lt;/th&gt;
&lt;th&gt;WeLocale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;$39-$199/yr&lt;/td&gt;
&lt;td&gt;Free / $99/yr Pro&lt;/td&gt;
&lt;td&gt;Free plan + paid from $19/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup time&lt;/td&gt;
&lt;td&gt;2-4 hours&lt;/td&gt;
&lt;td&gt;1-2 hours&lt;/td&gt;
&lt;td&gt;Under 30 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Translation method&lt;/td&gt;
&lt;td&gt;Manual + machine&lt;/td&gt;
&lt;td&gt;Manual + machine&lt;/td&gt;
&lt;td&gt;AI-powered automatic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEO (hreflang, URLs)&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;Auto on Pro+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Developer needed?&lt;/td&gt;
&lt;td&gt;Sometimes&lt;/td&gt;
&lt;td&gt;Rarely&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Complex sites, agencies&lt;/td&gt;
&lt;td&gt;Budget-conscious, manual control&lt;/td&gt;
&lt;td&gt;Fast launch, no-code sites&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  WPML
&lt;/h2&gt;

&lt;p&gt;WPML has been around since 2008. It's the most feature-complete WordPress multilingual plugin. You can translate everything: pages, posts, custom post types, menus, widgets, theme strings, plugin strings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's good:&lt;/strong&gt; Mature and battle-tested. Deep WooCommerce integration. Professional translation management. Works with Yoast and RankMath.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's frustrating:&lt;/strong&gt; Heavy interface. Pricing stacks up ($99/yr for most sites). Historically slows down admin on large sites.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Established sites with complex content, WooCommerce stores, agencies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Polylang
&lt;/h2&gt;

&lt;p&gt;Polylang is the most popular free WordPress multilingual plugin. The free version covers the basics well: separate URLs per language (/fr/, /de/), hreflang tags, translated slugs, and Yoast/RankMath compatibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's good:&lt;/strong&gt; Free version is genuinely useful. Lighter than WPML. Clean interface. Active community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's frustrating:&lt;/strong&gt; Machine translation requires Pro ($99/yr). WooCommerce support is a separate add-on ($50/yr). Manual translation takes time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Sites wanting multilingual SEO without paying for WPML. Teams who prefer manual translation.&lt;/p&gt;




&lt;h2&gt;
  
  
  WeLocale
&lt;/h2&gt;

&lt;p&gt;WeLocale works differently. Instead of creating duplicate pages in WordPress, it translates your site's content in real time via a small JavaScript widget. Install the plugin from WordPress.org, connect your site, and content is automatically translated — no duplicate pages, no manual entry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's good:&lt;/strong&gt; Setup under 30 minutes. No duplicate page management. Automatic translations that update when content changes. Handles menus, buttons, dynamic content. Free plugin on WordPress.org, first 3,000 words free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's worth knowing:&lt;/strong&gt; Word count limits apply per plan. SEO hreflang tags are automatic on Pro and Scale plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Small businesses, bloggers, no-code site owners who want to go multilingual fast.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Go with WPML if&lt;/strong&gt; you have a large WooCommerce catalog, need translation management workflows, or you're an agency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go with Polylang if&lt;/strong&gt; you want proper multilingual URL structure for free and are comfortable translating manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go with WeLocale if&lt;/strong&gt; you want to be live in multiple languages today without managing duplicate page trees.&lt;/p&gt;




&lt;p&gt;Read the full comparison with pricing details and SEO breakdown on the &lt;a href="https://welocale.net/blog/wpml-vs-polylang-vs-welocale-which-wordpress-translation-plugin-is-right-for-you" rel="noopener noreferrer"&gt;WeLocale blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>i18n</category>
    </item>
    <item>
      <title>How to Translate Your WordPress Site into 50+ Languages (Free Plugin, No Code)</title>
      <dc:creator>Serghei Streltov</dc:creator>
      <pubDate>Fri, 19 Jun 2026 11:49:34 +0000</pubDate>
      <link>https://dev.to/sserghei/how-to-translate-your-wordpress-site-into-50-languages-free-plugin-no-code-5fi7</link>
      <guid>https://dev.to/sserghei/how-to-translate-your-wordpress-site-into-50-languages-free-plugin-no-code-5fi7</guid>
      <description>&lt;p&gt;Most WordPress translation solutions ask you to restructure your site. WPML adds a language switcher and creates separate post copies for each language. Polylang does the same. Both require you to manage translations page by page, keep multiple versions of every post in sync, and deal with plugin conflicts when your theme or other plugins update.&lt;/p&gt;

&lt;p&gt;The WeLocale plugin works differently. There is no per-page translation workflow, no duplicate posts, no theme editing. You install the plugin, connect it to your WeLocale account with your app key, and the site is translated at runtime, in the visitor's browser, without touching your database.&lt;/p&gt;

&lt;p&gt;Here is how to do it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install the WeLocale plugin
&lt;/h2&gt;

&lt;p&gt;In your WordPress admin, go to &lt;strong&gt;Plugins &amp;gt; Add New Plugin&lt;/strong&gt;.&lt;br&gt;
Search for &lt;strong&gt;WeLocale&lt;/strong&gt;.&lt;br&gt;
Click &lt;strong&gt;Install Now&lt;/strong&gt;, then &lt;strong&gt;Activate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The plugin is free and listed at &lt;a href="https://wordpress.org/plugins/welocale" rel="noopener noreferrer"&gt;wordpress.org/plugins/welocale&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Get your app key
&lt;/h2&gt;

&lt;p&gt;If you do not have a WeLocale account yet, sign up for free at &lt;a href="https://welocale.net" rel="noopener noreferrer"&gt;welocale.net&lt;/a&gt;. The free plan includes 3,000 words and 1 language, enough to see it working on your real site.&lt;/p&gt;

&lt;p&gt;Once you are in, go to &lt;strong&gt;Website &amp;gt; Widget&lt;/strong&gt; in the WeLocale dashboard. Copy your &lt;strong&gt;Public App Key&lt;/strong&gt; (a UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Connect the plugin
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;In WordPress admin, go to &lt;strong&gt;Settings &amp;gt; WeLocale&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Paste your App Key into the field.&lt;/li&gt;
&lt;li&gt;Make sure your domain is listed under &lt;strong&gt;Allowed Domains&lt;/strong&gt; in your WeLocale dashboard (Website &amp;gt; Settings &amp;gt; Allowed Domains).&lt;/li&gt;
&lt;li&gt;Save.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Reload your site's front end. The language switcher appears automatically, no shortcode, no widget placement needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The plugin loads a small JavaScript widget on your front end. When a visitor selects a language, the widget retrieves stored translations and replaces text in place. Your page structure, theme, and all other plugins stay exactly as they are. Nothing is changed server-side.&lt;/p&gt;

&lt;p&gt;Translations are stored permanently in your WeLocale account. Words are never reset at month end, once a string is translated, it stays translated.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about SEO?
&lt;/h2&gt;

&lt;p&gt;On Pro and Scale plans, WeLocale automatically injects hreflang tags in the page &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; for every language you have enabled. This tells Google which version of a page to serve to which audience, with no duplicate content penalties.&lt;/p&gt;

&lt;p&gt;On the free and Starter plans, translations are live for visitors but hreflang tags are not added. For a small site or a test this is fine. For production multilingual SEO, upgrade to Pro.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Will this conflict with WPML or Polylang?&lt;/strong&gt; No. WeLocale works on the rendered front end and does not touch WordPress's content or translation data. You can run both, though there is no reason to once WeLocale is set up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where do I manage translations?&lt;/strong&gt; In your WeLocale dashboard at &lt;a href="https://welocale.net" rel="noopener noreferrer"&gt;welocale.net&lt;/a&gt;. You can review and edit every translation, accept or revert changes, and see which strings are pending.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to update the plugin when the widget changes?&lt;/strong&gt; No. The widget JS auto-updates without requiring a plugin release. Plugin updates are only needed when the settings screen or integration logic changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a free plan?&lt;/strong&gt; Yes. 3,000 words and 1 target language, no credit card required. Start free at &lt;a href="https://welocale.net" rel="noopener noreferrer"&gt;welocale.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work with WooCommerce?&lt;/strong&gt; Yes. The widget translates everything rendered on the front end, including product names, descriptions, cart text, and checkout labels.&lt;/p&gt;

&lt;h2&gt;
  
  
  More platforms
&lt;/h2&gt;

&lt;p&gt;The WeLocale JS widget works on any website. On Webflow, add it in Site Settings &amp;gt; Custom Code. On Wix, use the Custom Code section in Settings. On any custom HTML site, paste the snippet from your dashboard into the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;. A Shopify app is coming soon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;

&lt;p&gt;Install the free plugin from &lt;a href="https://wordpress.org/plugins/welocale" rel="noopener noreferrer"&gt;wordpress.org/plugins/welocale&lt;/a&gt; and sign up free at &lt;a href="https://welocale.net" rel="noopener noreferrer"&gt;welocale.net&lt;/a&gt;. The free plan covers your first 3,000 words, enough to translate your most important pages and see the result live before committing to anything.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>i18n</category>
    </item>
  </channel>
</rss>
