# How to collect feedback in multiple languages

> The widget picks English or Portuguese from the browser language, and data-locale overrides that choice. Visitors can write in any language, and the inbox keeps their text as written. For other interface languages, build your own form on the REST API.

Source: https://escutaproduto.com/resources/multilingual-feedback
Last updated: 2026-10-09

## Two languages in the box, and what that means

The Escuta Produto widget ships with two sets of interface text: English and Portuguese. Every label, placeholder, error message and thank you message comes in both. There is no other language in the widget, and you cannot add one with an attribute. That limit shapes the rest of this article.

Language has two parts. The interface is the text around the form, such as the title, the type names and the send button. The message is what the visitor writes, and that can be in any language. The widget controls the first part. Your visitors control the second, and the inbox keeps their text as they wrote it.

## How the widget picks a language

The widget reads its language once, when the script loads. It uses the `data-locale` attribute if you set one. If not, it uses the browser language. If the value starts with `pt`, the widget shows Portuguese. For anything else, it shows English. Because the check looks only at the first two letters, `pt-BR`, `pt-PT` and plain `pt` all give the same Portuguese text.

That means a visitor in Brazil whose browser is set to English sees English, and a visitor in Portugal whose browser is set to Spanish sees English too, since Spanish is not one of the two sets. The rule is simple, but it can surprise you, so check the result on a browser set to each language you care about.

## Override the language with data-locale

When you know the language of your page, say so. Set `data-locale` on the script tag, so the widget matches the page regardless of the visitor's browser setting:

```html
<script src="https://escutaproduto.com/widget.js" data-key="pk_your_product_key" data-locale="pt-BR" defer></script>
```

Use this on a Portuguese page that people will open from any country. Use the same attribute on an English page if your visitors use Portuguese browsers. The value is not case sensitive, so `PT-br` works as well.

If your site has both languages, you have two options. The simplest is one widget per language, with each page's script tag set to its own locale. The other is to let the browser decide and accept that some visitors will see the other language. Pick the first one if the page text is clearly in one language.

## Read feedback written in other languages

Your inbox does not translate messages. A message written in Portuguese arrives as Portuguese, and a message in German arrives as German. The dashboard shows the text as written, and the CSV export keeps it in UTF-8, so accented letters and other scripts survive. The export opens correctly in Excel and Google Sheets.

For your own reading, use the translation tool you already trust, or ask a teammate who reads the language. Copy the translation into an internal note on the item, so the next person sees it. Keep the original text in the message field, because the visitor wrote that and a translation can lose a detail.

Treat a translation as a reading aid, not as the record. When you reply to a customer, reply in the language they wrote in, and check the reply with someone who reads it fluently.

## Hosted pages and email links

The hosted feedback page takes a language parameter too. A link such as the one below opens the page in Portuguese, whatever the visitor's browser setting:

```text
https://escutaproduto.com/f/your-product-slug?lang=pt
```

Use the hosted page in emails and in printed materials, where no script can run. The `lang` parameter accepts `pt` or `en`. For a third language, neither the widget nor the hosted page can show your interface text, so the next section covers the option that does work.

## When two languages are not enough

If your interface needs a language other than English or Portuguese, build your own form and send the feedback through the REST API. The API takes a JSON body with the product key, the message, the kind, the rating and the optional contact fields, and it returns the new item's ID. Your form can use any language and any layout, because you write every label yourself.

Browser calls to the API need your site's origin on the product's allowed origins list, or the API answers with a 403. Calls made from your own server usually send no browser origin header, so they normally need no list entry. Keep the form small, follow the status codes in the [REST API docs](/docs/api), and handle the 429 response with a friendly message that asks the visitor to try again in a minute.

Mix the two approaches carefully. A widget for the default languages and a custom form for a third language can share one inbox, because both write to the same product. Give your custom form a clear label so your team can tell where items came from, using the metadata field.

## Set up both languages in Escuta Produto

Start by checking the language your page actually uses. For each page, decide whether the widget should match the page with data-locale, or follow the visitor's browser. Then open the page in both languages, once with a Portuguese browser and once with an English one, and confirm the panel shows what you expect. Send one test message in each language and confirm it appears in the inbox, with the text intact and the page URL attached. For the full list of attributes, see the [widget docs](/docs/widget). For the wording of the button itself, read [what a feedback button should say](/resources/feedback-button-copy), and for the mobile layout of a bilingual panel, see [designing a feedback widget for mobile screens](/resources/feedback-widget-mobile-design).

## Frequently asked questions

### Which languages does the Escuta Produto feedback widget support?

The widget has built-in text in English and Portuguese. Any browser language that starts with pt shows Portuguese, and everything else shows English. You can set the language with the locale attribute on the script tag.

### Can visitors write feedback in a language other than the widget's?

Yes. The message box accepts any text, and the inbox keeps it as written. The CSV export is UTF-8, so it opens correctly in Excel and Google Sheets. Translation is something your team does when reading.

### How do I collect feedback in a third language?

Build your own form in that language and send the feedback to the REST API with your product key. Browser calls need your site listed in the allowed origins, while calls from your own server usually need no origin entry.
