Lokalisatie berichtformaten

Elke geïnternationaliseerde extensie of app heeft ten minste één bestand met de naam messages.json dat landspecifieke tekenreeksen biedt. Deze pagina beschrijft de indeling van messages.json bestanden. Voor informatie over hoe u kunt internationaliseren en lokaliseren, zie de pagina Internationalisering .

Samenvatting van het veld

De volgende code toont de ondersteunde velden voor messages.json . Alleen de velden " naam " en "bericht" zijn verplicht.

{
  "name": {
    "message": "Message text, with optional placeholders.",
    "description": "Translator-aimed description of the message.",
    "placeholders": {
      "placeholder_name": {
        "content": "A string to be placed within the message.",
        "example": "Translator-aimed example of the placeholder string."
      },
      ...
    }
  },
  ...
}

Voorbeeld

Hier is een messages.json -bestand dat drie berichten definieert met de namen "prompt_for_name", "hallo" en "doei":

{
  "prompt_for_name": {
    "message": "What's your name?",
    "description": "Ask for the user's name"
  },
  "hello": {
    "message": "Hello, $USER$",
    "description": "Greet the user",
    "placeholders": {
      "user": {
        "content": "$1",
        "example": "Cira"
      }
    }
  },
  "bye": {
    "message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!",
    "description": "Say goodbye to the user",
    "placeholders": {
      "our_site": {
        "content": "Example.com",
      },
      "user": {
        "content": "$1",
        "example": "Cira"
      }
    }
  }
}

Velddetails

In deze sectie wordt elk veld beschreven dat kan voorkomen in een messages.json bestand. Voor details over hoe het berichtenbestand wordt gebruikt, bijvoorbeeld wat er gebeurt als een landinstelling niet alle berichten definieert, zie Internationalisering .

naam

Eigenlijk is er geen veld met de naam "naam". De naam van dit veld is de naam van het bericht: dezelfde naam die u ziet in __MSG__name___ of getMessage("_name_") .

De naam is een hoofdletterongevoelige sleutel waarmee u de gelokaliseerde berichttekst kunt ophalen. De naam kan de volgende tekens bevatten:

  • AZ
  • az
  • 0-9
  • _ (onderstrepingsteken)
  • @
Opmerking: Definieer geen namen die beginnen met "@@". Deze namen zijn gereserveerd voor vooraf gedefinieerde berichten .

Hier zijn drie voorbeelden van namen, afkomstig uit de sectie Voorbeeld :

"prompt_for_name": {
  ...
},
"hello": {
  ...
},
"bye": {
  ...
}

Zie de pagina Internationalisering voor meer voorbeelden van het gebruik van namen.

bericht

Het vertaalde bericht, in de vorm van een tekenreeks die tijdelijke aanduidingen kan bevatten. Gebruik $_placeholder_name_$ (niet hoofdlettergevoelig) om naar een bepaalde placeholder te verwijzen. U kunt bijvoorbeeld naar een tijdelijke aanduiding met de naam 'onze_site' verwijzen als $our_site$ , $OUR_SITE$ of $oUR_sITe$ .

Hier zijn drie voorbeelden van berichten, afkomstig uit de sectie Voorbeeld :

"message": "What's your name?"
...
"message": "Hello, $USER$"
...
"message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!"

Gebruik om een ​​dollarteken ( $ ) in de string te plaatsen $$. For example, use the following code to specify the message Amount (in $):

"message": "Amount (in $$)"

Hoewel tijdelijke aanduidingen zoals $USER$ de voorkeursmanier zijn om naar vervangingsreeksen te verwijzen (tekenreeksen die zijn opgegeven met behulp van de vervangingsparameter van i18n.getMessage ), kunt u ook rechtstreeks in het bericht naar vervangingsreeksen verwijzen. Het volgende bericht verwijst bijvoorbeeld naar de eerste drie vervangingsreeksen die zijn doorgegeven aan getMessage() :

"message": "Params: $1, $2, $3"

Ondanks dit voorbeeld raden we u aan tijdelijke aanduidingen te gebruiken in plaats van $_n_ tekenreeksen in uw berichten. Beschouw tijdelijke aanduidingen als goede namen van variabelen. Een week nadat u uw code heeft geschreven, vergeet u waarschijnlijk waar $1 naar verwijst, maar weet u wel waar uw tijdelijke aanduidingen naar verwijzen. Zie de sectie over tijdelijke aanduidingen voor meer informatie over tijdelijke aanduidingen en vervangingsreeksen.

beschrijving

Optioneel. Een beschrijving van de boodschap, bedoeld om context of details te geven om de vertaler te helpen de best mogelijke vertaling te maken.

Hier zijn drie voorbeelden van beschrijvingen, afkomstig uit de sectie Voorbeeld :

"description": "Ask for the user's name"
...
"description": "Greet the user"
...
"description": "Say goodbye to the user"

tijdelijke aanduidingen

Optioneel. Definieert een of meer subtekenreeksen die in het bericht moeten worden gebruikt. Hier zijn twee redenen waarom u mogelijk een tijdelijke aanduiding wilt gebruiken:

  • Om de tekst te definiëren voor een deel van uw bericht dat niet vertaald mag worden. Voorbeelden: HTML-code, handelsmerknamen, opmaakspecificaties.
  • Om te verwijzen naar een vervangingsreeks die is doorgegeven aan getMessage() . Voorbeeld: $1 .

Elke tijdelijke aanduiding heeft een naam, een 'inhoud'-item en een optioneel 'voorbeeld'-item. De naam van een tijdelijke aanduiding is niet hoofdlettergevoelig en kan dezelfde tekens bevatten als de berichtnaam .

De waarde van het item "content" is een tekenreeks die kan verwijzen naar vervangingsreeksen, die worden opgegeven met behulp van de vervangingsparameter van de i18n.getMessage- methode. De waarde van een 'inhoud'-item is doorgaans zoiets als 'Example.com' of '$1'. Als u verwijst naar een vervangingsreeks die niet bestaat, krijgt u een lege reeks. De volgende tabel laat zien hoe $_n_ strings overeenkomen met strings die zijn opgegeven door de parameter substitutions .

vervangingsparameter Waarde van $ 1 Waarde van $2 Waarde van $3
userName waarde van userName "" ""
["Cira", "Kathy"] "Cira" "Kathy" ""

Het item 'voorbeeld' (optioneel, maar sterk aanbevolen) helpt vertalers door te laten zien hoe de inhoud er voor de eindgebruiker uitziet. Een tijdelijke aanduiding voor een bedrag in dollars moet bijvoorbeeld een voorbeeld hebben als "$23.45" .

Het volgende fragment, afkomstig uit de voorbeeldsectie , toont een 'placeholders'-item dat twee placeholders bevat met de namen 'onze_site' en 'gebruiker'. De tijdelijke aanduiding "onze_site" heeft geen "voorbeeld"-item omdat de waarde ervan duidelijk blijkt uit het veld "inhoud".

"placeholders": {
  "our_site": {
    "content": "Example.com",
  },
  "user": {
    "content": "$1",
    "example": "Cira"
  }
}