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
| Code | Language |
|---|---|
en | English |
de | German |
fr | French |
nl | Dutch |
es | Spanish |
it | Italian |
ja | Japanese |
zh | Simplified 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.
| Mode | Behavior |
|---|---|
| Auto | The 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. |
| Manual | The 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.
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.
languageoption passed toBugPin.init()data-languageattribute on the widget script tag<html lang>attribute on the host pagenavigator.languages(andnavigator.languageas a fallback)- 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.
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:
- Project override for the visitor's locale (if set)
- Global override for the visitor's locale (if set)
- 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-AT→deen-US→enzh-Hans/zh-CN/zh-TW→zhpt-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
- Widget Installation — Add
data-languageto your script tag - Widget Configuration — Full widget configuration reference