Custom translation
Custom Translations
The Arena Comments widget ships with built-in text in English, Portuguese, Spanish, and French. Custom Translations lets you replace any of those strings with your own wording — useful for matching your brand's voice, adapting terminology for your audience, or localizing a language that already ships with the widget.
No code changes or widget redeployment are needed. Translations are fetched at runtime and merged on top of the built-in defaults.
Prerequisites
- The Arena Comments widget installed on your page (see URL-Based Installation)
- Your site slug (found in the Arena dashboard under your site settings)
- A JSON file with the translation strings you want to override
When to use this
Use Custom Translations when you want to:
- Replace default labels with brand-specific language (e.g., "Post" instead of "Send")
- Provide alternative phrasing in a language the widget already supports
- Localize UI strings without modifying the widget bundle
Steps
1. Enable the attribute on your widget div
Add the data-custom-translations attribute to your Comments widget embed. No value is required — its presence alone activates the feature.
<div class="arena-comments-widget"
data-site-id="[YOUR-SITE-ID]"
data-site-slug="[YOUR-SITE-SLUG]"
data-custom-translations>
</div>
<script async src="https://fast.arena.im/script.js?siteId=[YOUR-SITE-ID]"></script>[YOUR-SITE-ID] and [YOUR-SITE-SLUG] are shown in the Arena dashboard embed code for your site.
2. Create your translations.json file
Create a translations.json file containing only the keys you want to override. Every key you omit keeps its built-in default value.
{
"what_do_you_think": "Share your thoughts...",
"show_more_comments": "Load More",
"buttons": {
"send": "Post Comment",
"cancel": "Discard",
"reply": "Respond"
},
"empty_state": {
"label": "No comments yet. Start the conversation!"
},
"thread_header": {
"sign_in": "Log in to add your voice.",
"login": "Log In",
"logout": "Log Out"
},
"footer": {
"powered_by": "Powered by Arena"
}
}Any key listed in the Full Key Reference section below can be overridden.
3. Add per-language overrides (optional)
If your site serves multiple languages, you can include language-specific sections inside the same file. Wrap them under the language code (en, pt, es, or fr).
Top-level keys are applied as defaults; language-scoped keys override them for that specific language only.
{
"what_do_you_think": "What do you think?",
"buttons": {
"send": "Post Comment"
},
"pt": {
"what_do_you_think": "O que você acha?",
"buttons": {
"send": "Publicar"
}
},
"es": {
"what_do_you_think": "¿Qué piensas?",
"buttons": {
"send": "Publicar"
}
},
"fr": {
"what_do_you_think": "Qu'en pensez-vous ?",
"buttons": {
"send": "Publier"
}
}
}
Tip: The widget language is controlled by your site configuration in the Arena dashboard, not by the page embedder. Make sure the language-specific section in your JSON matches the language configured for your site.
4. Send your file to Arena Support
Arena hosts the translations file on our infrastructure at:
{ARENA_STATIC_API}/v1/sites/[YOUR-SITE-SLUG]/translations.json
To publish your file:
- Prepare your
translations.jsonfollowing the format above - Send the file to the Arena support team ([email protected])
- Include your site slug in the message so the team can deploy to the correct endpoint
- Once the team confirms the file is live, reload your page — the widget will pick up the custom strings automatically
No widget redeployment or code change is needed after the file is deployed.
5. Verify
After Arena Support confirms the file is live:
- Hard-reload your page (
Cmd+Shift+R/Ctrl+Shift+R) to bypass the browser cache - Check that the strings you overrode now appear in the widget
- If your site is multilingual, switch languages and verify each section
Common Customization Keys
The table below lists the most frequently customized keys and their built-in English defaults.
| Key | Default value | Purpose |
|---|---|---|
what_do_you_think | "What do you think?" | Textarea placeholder |
show_more_comments | "Show More Comments" | Pagination / load-more button |
buttons.send | "Send" | Submit comment button |
buttons.reply | "Reply" | Reply to comment button |
buttons.edit | "Edit" | Edit comment button |
buttons.delete | "Delete" | Delete comment button |
buttons.save | "Save" | Save edited comment |
empty_state.label | "There are no comments here yet. Be the first to join the conversation!" | Empty state message |
thread_header.conversation | "CONVERSATION" | Thread section heading |
thread_header.sign_in | "Sign in to join the discussion." | CTA for logged-out users |
thread_header.login | "Login" | Login button label |
thread_header.logout | "Logout" | Logout button label |
thread_header.highlighted_comment | "Highlighted comment" | Label for pinned/featured comments |
footer.terms | "Terms" | Footer terms link |
footer.privacy | "Privacy" | Footer privacy link |
footer.powered_by | "Powered by" | Footer attribution text |
comments.awaiting_moderation | "Your comment is currently visible only to you and is awaiting moderation." | Moderation notice |
comments.deleted | "This comment was deleted by the author." | Deleted comment placeholder |
Supported Languages
The widget supports four languages. The active language is determined by your site configuration in the Arena dashboard.
| Code | Language |
|---|---|
en | English |
pt | Portuguese (Brazil) |
es | Spanish |
fr | French |
Troubleshooting
Having issues?Custom text not appearing?
Verify that thedata-custom-translationsattribute is present on the widget div and that yourdata-site-slugexactly matches the slug used when Arena Support deployed the file.Only some strings are updating?
This is expected behavior. The custom JSON is deep-merged with the built-in defaults — only keys you include are overridden. All others keep their default values.Language override not working?
The widget language is set by your site configuration in the Arena dashboard, not by the embedder. Verify the language-specific section in your JSON ("pt","es", or"fr") matches the language configured for your site.Still not working? Contact Arena Support at [email protected].
Updated about 4 hours ago