Translating Surveys


All text elements of your Refiner surveys (questions, multiple choice options, button texts, …) can be customized and translated to any language. You can modify all text fragments directly in our survey editor when customizing your survey questions.

If you want to run survey campaigns in multiple languages simultaneously, you have the following two options:

  1. Create one dedicated survey for each language
  2. Use our centralized Translation Interface

The first option works great if you are running survey campaigns in a limited number of languages. For more complex setups, we recommend the second option as outlined on this page.

Please note: The centralized Translation Interface as described on this page is only accessible for customers on an Enterprise plan at the moment. Please contact us if you want to use it on a different subscription plan.

All translations in one place

The Translation Interface allows to manage all languages and translations for your surveys in one central place. It is located in the settings of your Refiner environment.

Each text fragment used in your surveys is represented as a table row, with the original text value on the left. This list is generated automatically and includes all text fragments that are currently used in your surveys. You can think of this list as your default dictionary.

Each language that you are using in your survey campaigns is represented by a column. You can create as many languages as needed.

The combination of the text fragments list and your dictionaries creates a matrix that allows you to quickly translate all your surveys and see which translations are still missing.

Create dictionaries for each language

As a first step, we recommend to create a dictionary for each language that you want to use in your survey campaign.

A dictionary consists of a name, a unique identifier, the text reading direction (LTR / RTL), and the actual text translations.

We recommend to use two letter ISO 639-1 language codes (e.g. en, fr, de, …) as the language identifiers of your dictionaries.

If you use the standardized two letter format, Refiner will be automatically detect the preferred web browser language of your users and the translation will work seamlessly.

You can also use custom language codes, for example if your app stores languages codes in a different format. In this case, you’ll need to set the language identifiers for each user when identifying them with our web-client (see below) or mobile SDKs.

Translate all text snippets

Once you’ve created all dictionaries, it’s time to translate each text fragment. You can either translate text fragments row by row, or work your way through the matrix column by column.

The final goal is to provide a translation for each fragment/language combination. To make your life easier, missing translations are marked with a red background.

You don’t need to provide translations for each combination to make the translation feature work. If a translation for a text fragment is not available, the default language of the survey is used as fallback

Don’t forget to hit save in the bottom of the page to make sure none of your translations get lost.

Preview translations

When the translation feature is enabled for your account, you’ll see a language switcher in the top right section of the survey editor. Changing the language here will automatically translate the survey preview.

Set user language

This step is only necessary if you are using custom language codes. If you are using ISO 639-1 language as mentioned above, the translation feature will automatically detect the preferred web browser language of your user.

If you are using custom language codes, you have two options to set the language of your user with our web-client. The first option is to explicitly set the language for a user with our “setLocale” method:

_refiner('setLocale', 'the-dictionary-identifier');

The second option works by including a “locale” trait when identifying your user. This option works well if you are using our client with Google Tag Manager.

_refiner('identifyUser', {
    id: 'your-user-id',
    locale: 'en_EN',
    another_trait: 'something',

Was this helpful? Let us know with a quick a vote