{"id":30841,"date":"2026-11-06T10:00:00","date_gmt":"2026-11-06T09:00:00","guid":{"rendered":"https:\/\/www.web-systems.pl\/?p=30841"},"modified":"2026-10-21T15:28:04","modified_gmt":"2026-10-21T14:28:04","slug":"multilingual-woocommerce-store-country-language-decisions","status":"publish","type":"post","link":"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/","title":{"rendered":"Multilingual WooCommerce store: country, language, decisions"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A multilingual WooCommerce store involves two separate decisions: which languages the store speaks and which countries it sells to. Ready-made plugins can translate the content and suggest the right version to customers from each country. Prices in different currencies, taxes, shipping and stock levels for several markets are a matter of architecture, and you need to plan them before launch. Below you will find a list of things to decide, an example of a store selling to several countries and the line between a plugin and custom work.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#Language_is_not_country_what_to_decide_before_launch\" >Language is not country: what to decide before launch?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#How_should_customers_choose_their_country_and_language\" >How should customers choose their country and language?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#Example_a_cycling_gear_store_selling_to_three_countries\" >Example: a cycling gear store selling to three countries<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#Multilingual_WooCommerce_store_where_does_the_plugin_end\" >Multilingual WooCommerce store: where does the plugin end?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#Frequently_asked_questions\" >Frequently asked questions<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#Is_detecting_the_country_by_IP_address_always_accurate\" >Is detecting the country by IP address always accurate?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#Is_it_enough_to_translate_the_product_descriptions\" >Is it enough to translate the product descriptions?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.web-systems.pl\/en\/multilingual-woocommerce-store-country-language-decisions\/#Country_domain_or_subdirectory\" >Country domain or subdirectory?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Language_is_not_country_what_to_decide_before_launch\"><\/span>Language is not country: what to decide before launch?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before you install any plugin, write down whether you are changing only the language or also the terms of sale. A customer from Austria and one from Germany speak the same language but may get different delivery options, while a customer from Belgium may want French or Dutch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questions worth answering in writing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Languages.<\/strong> Which language versions launch right away, which come later, and who will translate the product descriptions.<\/li>\n<li><strong>URLs.<\/strong> Separate country domains, subdirectories such as \/de\/ or subdomains. This affects SEO and maintenance costs.<\/li>\n<li><strong>Currencies and prices.<\/strong> One currency for everyone or separate price lists for each market.<\/li>\n<li><strong>Taxes.<\/strong> How the store charges VAT when selling to other EU countries; discuss this with your accountant before anything is configured.<\/li>\n<li><strong>Shipping and returns.<\/strong> Who ships, how much it costs and how a customer abroad sends goods back.<\/li>\n<li><strong>Customer service.<\/strong> Which language you use to answer emails and complaints.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Your answers decide whether one store with translations is enough or whether you need a multisite setup or separate instances. If you run several brands or markets, read our article on <a href=\"https:\/\/www.web-systems.pl\/en\/wordpress-multisite-for-multiple-brands-guide\/\">scaling multiple brands on WordPress<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_should_customers_choose_their_country_and_language\"><\/span>How should customers choose their country and language?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ideally on their own, with a sensible suggestion. Automatically sending customers to another version without asking may be convenient for the store, but it frustrates people and makes life harder for search engines.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In its <a href=\"https:\/\/developers.google.com\/search\/docs\/specialty\/international\/managing-multi-regional-sites\" rel=\"nofollow noopener\" target=\"_blank\">guidelines for multilingual and multi-regional sites<\/a>, Google recommends avoiding automatic redirects between language versions based on what language users might know, and letting them switch versions themselves. The reason is simple: a redirect can block both customers and search engine crawlers from reaching the other versions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, a suggestion works well: the store detects the visitor&#8217;s country and offers to switch to the matching version, while the decision stays with the customer. This is what the Country Selector Pro plugin is for. According to the vendor&#8217;s description, it:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>detects the visitor&#8217;s country based on their IP address,<\/li>\n<li>shows a popup suggesting a language change when someone visits from outside the country whose language the page is in,<\/li>\n<li>lets you choose in the settings which countries should get a switch suggestion and edit the message text,<\/li>\n<li>lets you set redirects to specific pages, categories or domains for a given country,<\/li>\n<li>lets you turn off automatic redirects on selected pages and posts,<\/li>\n<li>keeps popup and cookie settings in one panel.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A sensible setup is a popup with a suggestion instead of a hard redirect. If you do use redirects, turn them off at least on the terms, contact and returns pages, so everyone can reach them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Example_a_cycling_gear_store_selling_to_three_countries\"><\/span>Example: a cycling gear store selling to three countries<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Take a WooCommerce store from Poland that also wants to sell to Germany and the Czech Republic. It has Polish, German and English versions, because it will not have a Czech translation ready at launch.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>It settles the URLs: one domain with subdirectories for languages.<\/li>\n<li>It translates the menu, categories, key product pages, terms and shipping pages.<\/li>\n<li>It adds hreflang tags so the search engine shows the right version, as we describe in our article on <a href=\"https:\/\/www.web-systems.pl\/en\/hreflang-multilingual-website-language-versions\/\">how to mark language versions<\/a>.<\/li>\n<li>It configures version selection: a customer from Germany sees a suggestion to switch to the German version, a customer from the Czech Republic to the English one, and the language switcher in the header always stays visible.<\/li>\n<li>It sets shipping costs for each country and shows them before the cart, in line with what we write about <a href=\"https:\/\/www.web-systems.pl\/en\/how-to-show-shipping-costs-online-store\/\">how to show shipping costs<\/a>.<\/li>\n<li>It tests a purchase from each country, ideally through a VPN, and checks that the popup does not cover the cart.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In this scenario, the multilingual WooCommerce store is built without writing code, and all the work comes down to configuring ready-made tools and doing proper translations. A developer is needed at most to polish the popup design and help with testing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Multilingual_WooCommerce_store_where_does_the_plugin_end\"><\/span>Multilingual WooCommerce store: where does the plugin end?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The line runs where markets differ not in language but in sales logic. Plugins are good at translating content and sending customers to the right version, but they will not set your business rules for you.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Separate price lists and currencies.<\/strong> Prices set by hand for each market, rather than converted at an exchange rate, require thinking about where they live and who updates them.<\/li>\n<li><strong>Separate warehouses.<\/strong> When goods for Germany ship from a different warehouse than goods for Poland, stock and orders have to be split, often together with an ERP integration.<\/li>\n<li><strong>Different product ranges.<\/strong> Products that cannot be sold in a given country must disappear from the catalog, search and product feeds.<\/li>\n<li><strong>Marketplace and wholesaler integrations.<\/strong> Each market has different channels and data formats.<\/li>\n<li><strong>Performance.<\/strong> Several language versions multiply the number of pages and database queries, so a large catalog calls for a review of hosting and cache.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">We make these decisions with the client at the project stage, because changing the structure after launch costs much more. If you are planning such a store, we describe our approach on the page about <a href=\"https:\/\/www.web-systems.pl\/en\/woocommerce-stores\/\">online stores built on WooCommerce<\/a>, and you will find an overview of translation tools in our article on <a href=\"https:\/\/www.web-systems.pl\/en\/how-to-create-a-multilingual-wordpress-site\/\">building a multilingual WordPress site<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Frequently_asked_questions\"><\/span>Frequently asked questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1792592447050-0\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"Is_detecting_the_country_by_IP_address_always_accurate\"><\/span>Is detecting the country by IP address always accurate?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. A customer who is travelling, a company with a single internet gateway in another country or a VPN all change the result. That is why it is better to suggest a version than to force it, and to always keep the language switcher in a visible place.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1792592447050-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"Is_it_enough_to_translate_the_product_descriptions\"><\/span>Is it enough to translate the product descriptions?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>At launch, yes, but a customer from abroad will quickly reach the terms, shipping and returns pages. These pages should be translated together with the cart and the order messages.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1792592447050-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"Country_domain_or_subdirectory\"><\/span>Country domain or subdirectory?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Subdirectories are easier to maintain because it is one site. Country domains send a strong local signal, but each one needs its own work on visibility. The choice depends on how much the markets differ.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Start your multilingual WooCommerce store with the list of decisions from this article, and use a ready-made tool to suggest the right language version to customers instead of writing your own. You will find a description of the popup, country and redirect settings on the <a href=\"https:\/\/k4.pl\/product\/country-selector-pro\" rel=\"nofollow noopener\" target=\"_blank\">Country Selector Pro plugin page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A multilingual WooCommerce store involves two separate decisions: which languages the store speaks and which countries it sells to. Ready-made plugins can translate the content and suggest the right version to customers from each country. Prices in different currencies, taxes, shipping and stock levels for several markets are a matter of architecture, and you need [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":30831,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[812,838],"tags":[948,1194,1246,1190,1192],"class_list":["post-30841","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-e-commerce-en","category-wordpress-en","tag-e-commerce-en","tag-plugins","tag-seo-en","tag-woocommerce-en","tag-wordpress-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/30841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/comments?post=30841"}],"version-history":[{"count":2,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/30841\/revisions"}],"predecessor-version":[{"id":31011,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/30841\/revisions\/31011"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/media\/30831"}],"wp:attachment":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/media?parent=30841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/categories?post=30841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/tags?post=30841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}