Gets the localized string for the specified message.

See the Internationalization page for a guide on using this function.


  messageName,  // string
  substitutions // optional any



string. The name of the message, as specified in the messages.json file. If the message can't be found in messages.json:

  • Firefox returns "" and logs an error.
  • Chrome returns "" and does not log an error.
substitutions Optional

string or array of string. A single substitution string, or an array of substitution strings.

In Chrome, if you supply more than 9 substitution strings, getMessage() will return undefined.

Return value

string. Message localized for current locale.

Browser compatibility

BCD tables only load in the browser


Get the localized string for "messageContent", with target.url substituted:

let message = browser.i18n.getMessage("messageContent", target.url);

This would work with a _locales/en/messages.json file containing:

  "messageContent": {
    "message": "You clicked $URL$.",
    "description": "Tells the user which link they clicked.",
    "placeholders": {
      "url" : {
        "content" : "$1",
        "example" : "https://developer.mozilla.org"

If target.url is "https://developer.mozilla.org", then the value of message, in the "en" locale, would be:

"You clicked https://developer.mozilla.org."

Example extensions

Note: This API is based on Chromium's chrome.i18n API. This documentation is derived from i18n.json in the Chromium code.