Locale-specific message reference

Chaque extension internationalisée a au moins un fichier nommé messages.json qui fournit des chaînes spécifiques aux paramètres régionaux. Cette page décrit le format des fichiers messages.json.

Note : Pour plus d'informations sur l'internationalisation de vos extensions, consultez notre guide i18n.

Exemple messages.json

Le code suivant montre un exemple de fichier messages.json file, tiré de notre extension d'exemple notify-link-clicks-i18n. Seuls les champs "name" et "message" ont obligatoires.

json
{
  "extensionName": {
    "message": "Notify link clicks i18n",
    "description": "Name of the extension."
  },

  "extensionDescription": {
    "message": "Shows a notification when the user clicks on links.",
    "description": "Description of the extension."
  },

  "notificationTitle": {
    "message": "Click notification",
    "description": "Title of the click notification."
  },

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

Placement

Vos fichiers messages.json doivent être placés dans des répertoires nommés d'après les paramètres régionaux que chacun supporte — en, de, ja, etc. Ceux-ci doivent être placés dans un répertoire appelé _locales, à l'intérieur de la racine de votre extension.

Détails des membres

Cette section décrit chaque membre qui peut apparaître dans un fichier messages.json.

name

Chaque membre de niveau supérieur est nommé d'après le nom de la chaîne de message que vous localisez, par exemple "extensionName" ou "notificationContent" dans l'exemple ci-dessus. Chaque nom est insensible à la casse et agit comme une clé vous permettant de récupérer le texte du message localisé.

Le nom peut inclure les caractères suivants :

  • A-Z
  • a-z
  • 0-9
  • _ (underscore)
  • @

Note : Vous ne devez pas définir les noms commençant par @@. Ces noms sont réservés aux messages prédéfinis.

message

Au moins, cette propriété doit être définie pour chaque chaîne. Le membre "message" contient une chaîne localisée qui peut contenir placeholders. Vous pouvez utiliser :

  • $placeholder_name$ (case insensitive) pour insérer un espace réservé particulier (par exemple $URL$ dans l'exemple ci-dessus) dans votre chaîne.
  • $1, $2, $3, etc. pour insérer directement les valeurs obtenues à partir d'un i18n.getMessage() appel dans votre chaîne.

Autres points à noter :

  • Tout nombre de signes dollar consécutifs apparaissant dans les chaînes est remplacé par le même nombre de signes dollar moins un. donc, $$ > $, $$$ > $$, etc.
  • Lorsque le fichier de paramètres régionaux est lu, les jetons correspondant à /\$([a-z0-9_@]+)\$/i sont remplacés par la valeur correspondante de l'objet "placeholders" de la chaîne. Ces substitutions se produisent avant le traitement des /\$\d/ jetons dans le message.
  • Lorsqu'une chaîne locale est utilisée, les jetons correspondant à /\$\d+/ sont remplacés par les remplacements passés à i18n.getMessage().
  • getMessage() ne traitera pas les appels avec plus de 9 placeholders/substitutions.

description

Facultatif

Le membre "description" doit contenir une description du contenu de la chaîne de message, destinée à fournir un traducteur pour aider à créer la meilleure traduction possible de la chaîne.

placeholders

Facultatif

Le membre "placeholders" définit une ou plusieurs sous-chaînes à utiliser dans le message — celles-ci peuvent être utilisées pour coder en dur les éléments que vous ne voulez pas traduire, ou vous référer à des variables.

Chaque définition de sous-chaîne d'espace réservé possède un certain nombre de valeurs :

json
"url" : {
  "content" : "$1",
  "example" : "https://developer.mozilla.org"
}

Nom placeholder

Le nom de l'espace réservé est utilisé pour représenter l'espace réservé dans la chaîne de substitution (par exemple "url" devient $url$). Il est insensible à la casse et peut contenir les mêmes caractères qu'une chaîne de message name.

contenu

L'élément "contenu" définit le contenu de l'espace réservé. Cela peut être une chaîne codée en dur, telle que "My placeholder", mais elle peut également inclure des valeurs obtenues à partir d'un appel i18n.getMessage(). Cette propriété est obligatoire Pour plus d'informations, voir Récupération des chaînes de messages à partir de Javascript.

Exemple

Facultatif

L'élément optionnel "exemple" est là encore destiné à aider les traducteurs en leur montrant un exemple de la façon dont l'espace réservé apparaîtrait aux utilisateurs finaux, leur permettant de faire le meilleur choix lors de la localisation du fichier.