Skip to main content

Widget Translations

BugPin's widget and reporter emails are translated into 8 languages. Each project can either auto-detect the visitor's language from their browser or lock the widget to a single language. The reporter's language is captured at submission time and used for every follow-up email about that report.

Supported Languages

CodeLanguage
enEnglish
deGerman
frFrench
nlDutch
esSpanish
itItalian
jaJapanese
zhSimplified Chinese

The same set of locales applies to the widget UI, the screen-capture permission helper, and all reporter-facing emails (confirmation, status change, priority change, assignment, reporter message).

Project Language Settings

Each project has its own language configuration under Widget → Language in the Admin Console.

ModeBehavior
AutoThe widget picks a language at runtime, in this order: explicit override from the host page → <html lang> of the host page → browser's navigator.language. Falls back to English if no match is found.
ManualThe widget always renders in the locale you choose, regardless of the visitor's browser.

The instance-wide default applied to new projects is configured under Widget → Language at the global level.

Upgrading to v1.1.0

After upgrading, every existing project defaults to Auto. A German visitor will start seeing the widget and emails in German immediately. If you want to keep a project English-only, switch it to Manual → English in the Admin Console.

Host Page Overrides

In Auto mode, the widget picks a locale by walking the following sources in order. The first one that resolves to a supported locale wins; if none resolve, the project's default locale is used.

  1. language option passed to BugPin.init()
  2. data-language attribute on the widget script tag
  3. <html lang> attribute on the host page
  4. navigator.languages (and navigator.language as a fallback)
  5. Project default

The <html lang> step means the widget follows your host page automatically. If your single-page app updates <html lang> when the user changes language, the widget re-renders to match.

Manual mode

If the project is set to Manual, every host-page source above is ignored. The locked language always wins.

Script Tag

<script
src="https://bugs.example.com/widget.js"
data-api-key="your-project-api-key"
data-language="de"
async
></script>

Programmatic Init

await BugPin.init({
apiKey: "your-project-api-key",
language: "fr",
});

Runtime Switching

If your app switches languages without a full page reload, call BugPin.setLanguage():

// Switch the widget to Japanese
BugPin.setLanguage("ja");

// Read back the active locale
const current = BugPin.getLanguage(); // e.g. 'ja'

setLanguage() returns the resolved locale code, or null if the input is not a supported locale. When the project is in Manual mode it returns null for every call, since the locked language always wins. The widget also watches <html lang> and re-renders when it changes (in Auto mode), so you may not need to call setLanguage() at all if you keep <html lang> in sync.

Per-Locale Launcher Button and Tooltip

The launcher button text and tooltip text can be overridden per language under Widget → Button in the Admin Console. Each editor offers a tab strip for the 8 supported locales.

The resolved value falls through three layers:

  1. Project override for the visitor's locale (if set)
  2. Global override for the visitor's locale (if set)
  3. Built-in default shipped with the widget

This means you only have to override the locales you care about. The widget falls back to the built-in default for the rest.

Button Text

Button text has no built-in default. If you provide custom button text in English, all other locales also fall back to that English value unless you add explicit translations. An empty English value with no built-in default renders an icon-only button.

Tooltip Text

Tooltip text ships with built-in defaults for all 8 languages, so leaving English (or any locale) empty is safe. The renderer falls back to the built-in.

Reporter Email Language

When a visitor submits a report, BugPin records the locale they used at submission time on the report (the reporter_locale column). Every subsequent email sent to that reporter is rendered in the same language:

  • Submission confirmation
  • Status change
  • Priority change
  • Assignment (when the report is assigned or reassigned)
  • Reporter message (replies from the team to the reporter)

Team-facing emails are not localized per reporter; they use the recipient's account language.

Email Template Customization (Enterprise)

The Custom Templates editor under Notifications → Email Templates groups templates into Reporter and Team sections. Each template has a per-locale tab strip so you can review or edit translations.

Per-language editing requires an Enterprise license. Without one, the editor lets you view all locales but only edit English.

Previewing in the Admin Console

The built-in Test Widget page has a language selector that lets you preview the widget in any of the 8 supported languages without changing project settings. Use this to verify a translation looks right before rolling it out to visitors.

Browser Detection Details

In Auto mode the widget normalizes navigator.language / navigator.languages and <html lang> against the supported list. For example:

  • de-ATde
  • en-USen
  • zh-Hans / zh-CN / zh-TWzh
  • pt-BR → falls back to the next source in the precedence chain, eventually the project default, because Portuguese is not supported

If you need a language that isn't on the list, lock the project to Manual → English and pair the widget with your own host-page UI that you have already translated.

Next Steps

We use cookies for analytics to improve our website. More information in our Privacy Policy.