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:

  1. Prepare your translations.json following the format above
  2. Send the file to the Arena support team ([email protected])
  3. Include your site slug in the message so the team can deploy to the correct endpoint
  4. 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:

  1. Hard-reload your page (Cmd+Shift+R / Ctrl+Shift+R) to bypass the browser cache
  2. Check that the strings you overrode now appear in the widget
  3. 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.

KeyDefault valuePurpose
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.

CodeLanguage
enEnglish
ptPortuguese (Brazil)
esSpanish
frFrench

Troubleshooting

Having issues?

Custom text not appearing?
Verify that the data-custom-translations attribute is present on the widget div and that your data-site-slug exactly 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].


Did this page help you?