Skip to content

How to Change the Language of Your Quiz

This article explains how to change the language a quiz is written in, and how to serve customers in more than one language.

This version follows Shopify Markets. Build one quiz per language, assign each to its market and language, and every customer meets the quiz written for them. Product titles, descriptions and prices on the results page are translated by Shopify.

A full walkthrough

Assign Quizzes to Shopify Markets and Languages covers markets, languages and currency together.

This version has one language setting per quiz, which covers the buttons and placeholders. Questions and choices you translate yourself.

To serve several languages, build one quiz per language and show the right one, as Set up multilingual quizzes describes.

This version has one language setting per quiz, which covers the buttons and placeholders. Questions and choices you translate yourself.

To serve several languages, build one quiz per language and show the right one, as Set up multilingual quizzes describes.

This version has one language setting per quiz, which covers the buttons and placeholders. Questions and choices you translate yourself.

To serve several languages, build one quiz per language and show the right one, as Set up multilingual quizzes describes.

This version has one language setting per quiz, which covers the buttons and placeholders. Questions and choices you translate yourself.

To serve several languages, build one quiz per language and show the right one, as Set up multilingual quizzes describes.

This version has one language setting per quiz, which covers the buttons and placeholders. Questions and choices you translate yourself.

To serve several languages, build one quiz per language and show the right one, as Set up multilingual quizzes describes.

Change quiz language in settings

Create one quiz per language first, then assign them in Set up multilingual quizzes.

  1. Create a new quiz with the content you want. This is your base version.

  2. On the Dashboard, click Duplicate once per extra language.

    Quiz management options on the Dashboard

    Quiz Copilot can do both at once

    Open a chat with Quiz Copilot and ask it to duplicate the main quiz into another language.

  3. In each duplicate, open Quiz settings > Quiz content and translate the buttons, popups and other interface text.

    Quiz content tab in Quiz settings

  4. Translate the questions and the choices. Duplicating does not translate them. Edit each one, or ask Quiz Copilot to do it.

  5. Click the top-right Save button.

  1. Open Quiz Settings > Messages.

    how to change quiz language messages

  2. Choose a language from the dropdown. This changes the text on the buttons and the placeholders.

  3. Edit the entries in Messages if your language is missing, or if you want different wording.

  4. Set the text yourself in Quiz Builder > Question settings for any button that reverts to English.

  5. Click the top-right Publish button.

Questions and choices are not translated for you

The language setting covers the interface text only. Translate the questions and the answer choices by hand.

  1. Open Quiz Settings > Messages.

    how to change quiz language messages

  2. Choose a language from the dropdown. This changes the text on the buttons and the placeholders.

  3. Edit the entries in Messages if your language is missing, or if you want different wording.

  4. Set the text yourself in Quiz Builder > Question settings for any button that reverts to English.

  5. Click the top-right Publish button.

Questions and choices are not translated for you

The language setting covers the interface text only. Translate the questions and the answer choices by hand.

  1. Open Quiz Settings > Messages.

    how to change quiz language messages

  2. Choose a language from the dropdown. This changes the text on the buttons and the placeholders.

  3. Edit the entries in Messages if your language is missing, or if you want different wording.

  4. Set the text yourself in Quiz Builder > Question settings for any button that reverts to English.

  5. Click the top-right Publish button.

Questions and choices are not translated for you

The language setting covers the interface text only. Translate the questions and the answer choices by hand.

  1. Open Quiz Settings > Messages.

    how to change quiz language messages

  2. Choose a language from the dropdown. This changes the text on the buttons and the placeholders.

  3. Edit the entries in Messages if your language is missing, or if you want different wording.

  4. Set the text yourself in Quiz Builder > Question settings for any button that reverts to English.

  5. Click the top-right Publish button.

Questions and choices are not translated for you

The language setting covers the interface text only. Translate the questions and the answer choices by hand.

  1. Open Quiz Settings > Messages.

    how to change quiz language messages

  2. Choose a language from the dropdown. This changes the text on the buttons and the placeholders.

  3. Edit the entries in Messages if your language is missing, or if you want different wording.

  4. Set the text yourself in Quiz Builder > Question settings for any button that reverts to English.

  5. Click the top-right Publish button.

Questions and choices are not translated for you

The language setting covers the interface text only. Translate the questions and the answer choices by hand.

The results page shows translated product titles, descriptions and prices, picked from the customer's market and language.

This runs on the @inContext directive of the Shopify Storefront API. When a customer opens the quiz in a given market and language, the app asks Shopify for the product data in that locale.

How it works

  1. The theme extension reads the customer's country and language from the storefront.
  2. When the results page loads, the app fetches the titles, descriptions, prices and URLs for that locale.
  3. Translations made with Translate & Adapt, or another translation app, appear in the results.

What it needs

  • A translation app installed and configured with your product translations.
  • Shopify Markets set up with the languages and regions you sell in.
  • The product translations published for those locales.

The quiz itself is not covered

This translates the recommended products only. Translate the questions, the choices and the interface text yourself, as Change quiz language in settings describes.

Products sync in one language

The app syncs the base products from your store, in your store's main language. A translated product carries no separate ID to sync against, so the quiz language changes while the product names and descriptions stay as they are.

To send the customer to a translated product page anyway, see the redirect workaround in Set up multilingual quizzes.

Products sync in one language

The app syncs the base products from your store, in your store's main language. A translated product carries no separate ID to sync against, so the quiz language changes while the product names and descriptions stay as they are.

To send the customer to a translated product page anyway, see the redirect workaround in Set up multilingual quizzes.

Products sync in one language

The app syncs the base products from your store, in your store's main language. A translated product carries no separate ID to sync against, so the quiz language changes while the product names and descriptions stay as they are.

To send the customer to a translated product page anyway, see the redirect workaround in Set up multilingual quizzes.

Products sync in one language

The app syncs the base products from your store, in your store's main language. A translated product carries no separate ID to sync against, so the quiz language changes while the product names and descriptions stay as they are.

To send the customer to a translated product page anyway, see the redirect workaround in Set up multilingual quizzes.

Products sync in one language

The app syncs the base products from your store, in your store's main language. A translated product carries no separate ID to sync against, so the quiz language changes while the product names and descriptions stay as they are.

To send the customer to a translated product page anyway, see the redirect workaround in Set up multilingual quizzes.

Set up multilingual quizzes

Assign a quiz to each Shopify Market, and to each language inside a market.

  1. In your Shopify admin, open Apps and select RevenueHunt.

  2. Open App settings > Shopify Markets.

    Shopify Markets tab in App settings

  3. Pick the default quiz for a market from its dropdown.

    Choosing the default quiz for a market

  4. Click the > arrow on a market to expand it into its languages.

    A market expanded into its languages in the Shopify Markets tab

    One market, two languages

    In the United States market, set one quiz for English-speaking customers and another for Spanish-speaking customers.

  5. Pick a quiz for each language from its dropdown.

  6. Click the > arrow again to collapse the market. Its default quiz then serves every customer in that region, whatever their language.

A full walkthrough

Assign Quizzes to Shopify Markets and Languages covers markets, languages and currency together.

This version has no multi-language support of its own. You build one quiz per language and show the right one.

  • Create a quiz per language. Each one gets a unique quiz ID.
  • Embed each on its own page, such as quiz-en, quiz-de or quiz-fr. A developer can also show the right quiz for the browser language.
  • The app syncs products in your store's main language only, so the product names stay as they are. See Redirect to translated product URL.

  • Create quizzes in different languages

    Translate each quiz by hand. Every translated quiz carries its own quiz ID.

    Open Quiz Settings to change the language of the buttons and placeholders. The questions and the choices you translate yourself.

  • Display the correct quiz based on browser language

    Your developer can use JavaScript to show the quiz that matches the browser language. The script has to detect the language, map it to a quiz ID, and point the quiz links and iframes at that quiz.

    document.addEventListener("DOMContentLoaded", function() {
      // Check browser's preferred language (get the first two characters to ignore region)
      const language = navigator.language.substring(0,2);
    
      // Your mapping of languages to quiz IDs
      const quizMapping = {
        'en': 'abc123',
        'fr': 'dfg456',
        'de': 'xyz423'
      };
    
      // Default language (fallback to English if not found)
      const defaultQuizId = quizMapping[language] || quizMapping['en'];
    
      // Find all quiz links and update the href
      const quizLinks = document.querySelectorAll('a[href^="#quiz-"]');
      quizLinks.forEach(link => {
        link.setAttribute('href', '#quiz-' + defaultQuizId);
      });
    
      // Find all iframes with quiz URLs and update the src attribute and the data-url attribute of the parent div
      const quizIframes = document.querySelectorAll('iframe[src^="https://admin.revenuehunt.com/public/quiz/"]');
      quizIframes.forEach(iframe => {
        const newSrc = iframe.src.replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
        iframe.src = newSrc;
    
        // If the parent div has the data-url attribute, update it as well
        const parentDiv = iframe.parentElement;
        if (parentDiv && parentDiv.hasAttribute('data-url')) {
          const newDataUrl = parentDiv.getAttribute('data-url').replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
          parentDiv.setAttribute('data-url', newDataUrl);
        }
      });
    });
    

    One quiz per page

    Publishing two quizzes on the same page leads to unwanted behavior.

  • Redirect to translated product URL

    The app syncs the base products only, so the recommended products keep their original names. Sending the customer to the translated product page works around it.

    1. Change the checkout settings to link to product, instead of adding the product to the cart.

    2. Ask your developer to rewrite the product links on the results page. By default they point at the original product URL.

      For example, rewriting https://www.example.com/products/productA to https://www.example.com/en/products/productA sends the customer to the English page.

      let shopURL = "https://www.example.com";
      
      var links = document.querySelectorAll(".lq-product a");
      
      for (let i = 0; i < links.length; i++) {
      var href = links[i].href;
      links[i].href = href.replace(shopURL,shopURL+"/en");
      }
      
    3. Replace https://www.example.com with your store URL, and /en with the language code you set up in your store. For French, that is shopURL+"/fr".

This version has no multi-language support of its own. You build one quiz per language and show the right one.

  • Create a quiz per language. Each one gets a unique quiz ID.
  • Embed each on its own page, such as quiz-en, quiz-de or quiz-fr. A developer can also show the right quiz for the browser language.
  • The app syncs products in your store's main language only, so the product names stay as they are. See Redirect to translated product URL.

  • Create quizzes in different languages

    Translate each quiz by hand. Every translated quiz carries its own quiz ID.

    Open Quiz Settings to change the language of the buttons and placeholders. The questions and the choices you translate yourself.

  • Display the correct quiz based on browser language

    Your developer can use JavaScript to show the quiz that matches the browser language. The script has to detect the language, map it to a quiz ID, and point the quiz links and iframes at that quiz.

    document.addEventListener("DOMContentLoaded", function() {
      // Check browser's preferred language (get the first two characters to ignore region)
      const language = navigator.language.substring(0,2);
    
      // Your mapping of languages to quiz IDs
      const quizMapping = {
        'en': 'abc123',
        'fr': 'dfg456',
        'de': 'xyz423'
      };
    
      // Default language (fallback to English if not found)
      const defaultQuizId = quizMapping[language] || quizMapping['en'];
    
      // Find all quiz links and update the href
      const quizLinks = document.querySelectorAll('a[href^="#quiz-"]');
      quizLinks.forEach(link => {
        link.setAttribute('href', '#quiz-' + defaultQuizId);
      });
    
      // Find all iframes with quiz URLs and update the src attribute and the data-url attribute of the parent div
      const quizIframes = document.querySelectorAll('iframe[src^="https://admin.revenuehunt.com/public/quiz/"]');
      quizIframes.forEach(iframe => {
        const newSrc = iframe.src.replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
        iframe.src = newSrc;
    
        // If the parent div has the data-url attribute, update it as well
        const parentDiv = iframe.parentElement;
        if (parentDiv && parentDiv.hasAttribute('data-url')) {
          const newDataUrl = parentDiv.getAttribute('data-url').replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
          parentDiv.setAttribute('data-url', newDataUrl);
        }
      });
    });
    

    One quiz per page

    Publishing two quizzes on the same page leads to unwanted behavior.

  • Redirect to translated product URL

    The app syncs the base products only, so the recommended products keep their original names. Sending the customer to the translated product page works around it.

    1. Change the checkout settings to link to product, instead of adding the product to the cart.

    2. Ask your developer to rewrite the product links on the results page. By default they point at the original product URL.

      For example, rewriting https://www.example.com/products/productA to https://www.example.com/en/products/productA sends the customer to the English page.

      let shopURL = "https://www.example.com";
      
      var links = document.querySelectorAll(".lq-product a");
      
      for (let i = 0; i < links.length; i++) {
      var href = links[i].href;
      links[i].href = href.replace(shopURL,shopURL+"/en");
      }
      
    3. Replace https://www.example.com with your store URL, and /en with the language code you set up in your store. For French, that is shopURL+"/fr".

This version has no multi-language support of its own. You build one quiz per language and show the right one.

  • Create a quiz per language. Each one gets a unique quiz ID.
  • Embed each on its own page, such as quiz-en, quiz-de or quiz-fr. A developer can also show the right quiz for the browser language.
  • The app syncs products in your store's main language only, so the product names stay as they are. See Redirect to translated product URL.

  • Create quizzes in different languages

    Translate each quiz by hand. Every translated quiz carries its own quiz ID.

    Open Quiz Settings to change the language of the buttons and placeholders. The questions and the choices you translate yourself.

  • Display the correct quiz based on browser language

    Your developer can use JavaScript to show the quiz that matches the browser language. The script has to detect the language, map it to a quiz ID, and point the quiz links and iframes at that quiz.

    document.addEventListener("DOMContentLoaded", function() {
      // Check browser's preferred language (get the first two characters to ignore region)
      const language = navigator.language.substring(0,2);
    
      // Your mapping of languages to quiz IDs
      const quizMapping = {
        'en': 'abc123',
        'fr': 'dfg456',
        'de': 'xyz423'
      };
    
      // Default language (fallback to English if not found)
      const defaultQuizId = quizMapping[language] || quizMapping['en'];
    
      // Find all quiz links and update the href
      const quizLinks = document.querySelectorAll('a[href^="#quiz-"]');
      quizLinks.forEach(link => {
        link.setAttribute('href', '#quiz-' + defaultQuizId);
      });
    
      // Find all iframes with quiz URLs and update the src attribute and the data-url attribute of the parent div
      const quizIframes = document.querySelectorAll('iframe[src^="https://admin.revenuehunt.com/public/quiz/"]');
      quizIframes.forEach(iframe => {
        const newSrc = iframe.src.replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
        iframe.src = newSrc;
    
        // If the parent div has the data-url attribute, update it as well
        const parentDiv = iframe.parentElement;
        if (parentDiv && parentDiv.hasAttribute('data-url')) {
          const newDataUrl = parentDiv.getAttribute('data-url').replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
          parentDiv.setAttribute('data-url', newDataUrl);
        }
      });
    });
    

    One quiz per page

    Publishing two quizzes on the same page leads to unwanted behavior.

  • Redirect to translated product URL

    The app syncs the base products only, so the recommended products keep their original names. Sending the customer to the translated product page works around it.

    1. Change the checkout settings to link to product, instead of adding the product to the cart.

    2. Ask your developer to rewrite the product links on the results page. By default they point at the original product URL.

      For example, rewriting https://www.example.com/products/productA to https://www.example.com/en/products/productA sends the customer to the English page.

      let shopURL = "https://www.example.com";
      
      var links = document.querySelectorAll(".lq-product a");
      
      for (let i = 0; i < links.length; i++) {
      var href = links[i].href;
      links[i].href = href.replace(shopURL,shopURL+"/en");
      }
      
    3. Replace https://www.example.com with your store URL, and /en with the language code you set up in your store. For French, that is shopURL+"/fr".

This version has no multi-language support of its own. You build one quiz per language and show the right one.

  • Create a quiz per language. Each one gets a unique quiz ID.
  • Embed each on its own page, such as quiz-en, quiz-de or quiz-fr. A developer can also show the right quiz for the browser language.
  • The app syncs products in your store's main language only, so the product names stay as they are. See Redirect to translated product URL.

  • Create quizzes in different languages

    Translate each quiz by hand. Every translated quiz carries its own quiz ID.

    Open Quiz Settings to change the language of the buttons and placeholders. The questions and the choices you translate yourself.

  • Display the correct quiz based on browser language

    Your developer can use JavaScript to show the quiz that matches the browser language. The script has to detect the language, map it to a quiz ID, and point the quiz links and iframes at that quiz.

    document.addEventListener("DOMContentLoaded", function() {
      // Check browser's preferred language (get the first two characters to ignore region)
      const language = navigator.language.substring(0,2);
    
      // Your mapping of languages to quiz IDs
      const quizMapping = {
        'en': 'abc123',
        'fr': 'dfg456',
        'de': 'xyz423'
      };
    
      // Default language (fallback to English if not found)
      const defaultQuizId = quizMapping[language] || quizMapping['en'];
    
      // Find all quiz links and update the href
      const quizLinks = document.querySelectorAll('a[href^="#quiz-"]');
      quizLinks.forEach(link => {
        link.setAttribute('href', '#quiz-' + defaultQuizId);
      });
    
      // Find all iframes with quiz URLs and update the src attribute and the data-url attribute of the parent div
      const quizIframes = document.querySelectorAll('iframe[src^="https://admin.revenuehunt.com/public/quiz/"]');
      quizIframes.forEach(iframe => {
        const newSrc = iframe.src.replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
        iframe.src = newSrc;
    
        // If the parent div has the data-url attribute, update it as well
        const parentDiv = iframe.parentElement;
        if (parentDiv && parentDiv.hasAttribute('data-url')) {
          const newDataUrl = parentDiv.getAttribute('data-url').replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
          parentDiv.setAttribute('data-url', newDataUrl);
        }
      });
    });
    

    One quiz per page

    Publishing two quizzes on the same page leads to unwanted behavior.

  • Redirect to translated product URL

    The app syncs the base products only, so the recommended products keep their original names. Sending the customer to the translated product page works around it.

    1. Change the checkout settings to link to product, instead of adding the product to the cart.

    2. Ask your developer to rewrite the product links on the results page. By default they point at the original product URL.

      For example, rewriting https://www.example.com/products/productA to https://www.example.com/en/products/productA sends the customer to the English page.

      let shopURL = "https://www.example.com";
      
      var links = document.querySelectorAll(".lq-product a");
      
      for (let i = 0; i < links.length; i++) {
      var href = links[i].href;
      links[i].href = href.replace(shopURL,shopURL+"/en");
      }
      
    3. Replace https://www.example.com with your store URL, and /en with the language code you set up in your store. For French, that is shopURL+"/fr".

This version has no multi-language support of its own. You build one quiz per language and show the right one.

  • Create a quiz per language. Each one gets a unique quiz ID.
  • Embed each on its own page, such as quiz-en, quiz-de or quiz-fr. A developer can also show the right quiz for the browser language.
  • The app syncs products in your store's main language only, so the product names stay as they are. See Redirect to translated product URL.

  • Create quizzes in different languages

    Translate each quiz by hand. Every translated quiz carries its own quiz ID.

    Open Quiz Settings to change the language of the buttons and placeholders. The questions and the choices you translate yourself.

  • Display the correct quiz based on browser language

    Your developer can use JavaScript to show the quiz that matches the browser language. The script has to detect the language, map it to a quiz ID, and point the quiz links and iframes at that quiz.

    document.addEventListener("DOMContentLoaded", function() {
      // Check browser's preferred language (get the first two characters to ignore region)
      const language = navigator.language.substring(0,2);
    
      // Your mapping of languages to quiz IDs
      const quizMapping = {
        'en': 'abc123',
        'fr': 'dfg456',
        'de': 'xyz423'
      };
    
      // Default language (fallback to English if not found)
      const defaultQuizId = quizMapping[language] || quizMapping['en'];
    
      // Find all quiz links and update the href
      const quizLinks = document.querySelectorAll('a[href^="#quiz-"]');
      quizLinks.forEach(link => {
        link.setAttribute('href', '#quiz-' + defaultQuizId);
      });
    
      // Find all iframes with quiz URLs and update the src attribute and the data-url attribute of the parent div
      const quizIframes = document.querySelectorAll('iframe[src^="https://admin.revenuehunt.com/public/quiz/"]');
      quizIframes.forEach(iframe => {
        const newSrc = iframe.src.replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
        iframe.src = newSrc;
    
        // If the parent div has the data-url attribute, update it as well
        const parentDiv = iframe.parentElement;
        if (parentDiv && parentDiv.hasAttribute('data-url')) {
          const newDataUrl = parentDiv.getAttribute('data-url').replace(/quiz\/\w+/, 'quiz/' + defaultQuizId);
          parentDiv.setAttribute('data-url', newDataUrl);
        }
      });
    });
    

    One quiz per page

    Publishing two quizzes on the same page leads to unwanted behavior.

  • Redirect to translated product URL

    The app syncs the base products only, so the recommended products keep their original names. Sending the customer to the translated product page works around it.

    1. Change the checkout settings to link to product, instead of adding the product to the cart.

    2. Ask your developer to rewrite the product links on the results page. By default they point at the original product URL.

      For example, rewriting https://www.example.com/products/productA to https://www.example.com/en/products/productA sends the customer to the English page.

      let shopURL = "https://www.example.com";
      
      var links = document.querySelectorAll(".lq-product a");
      
      for (let i = 0; i < links.length; i++) {
      var href = links[i].href;
      links[i].href = href.replace(shopURL,shopURL+"/en");
      }
      
    3. Replace https://www.example.com with your store URL, and /en with the language code you set up in your store. For French, that is shopURL+"/fr".


This article explains how to set the language a quiz is written in, and how to serve customers in more than one language.