Formaty wiadomości dotyczących lokalizacji

Każde umiędzynarodowione rozszerzenie lub aplikacja ma co najmniej jeden plik o nazwie messages.json, który udostępnia ciągi tekstowe związane z różnymi językami. Na tej stronie opisano format plików messages.json. Informacje na temat: informacji o internacjonalizacji i zlokalizowaniu, znajdziesz na stronie Internacjonalizacja.

Lista pól

Ten kod pokazuje obsługiwane pola w polu messages.json. Tylko pole „name” i „wiadomość” – te pola są wymagane.

{
  "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."
      },
      ...
    }
  },
  ...
}

Przykład

Oto plik messages.json, w którym zdefiniowano 3 komunikaty o nazwach „prompt_for_name”, „hello” oraz "do widzenia":

{
  "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"
      }
    }
  }
}

Szczegóły pola

W tej sekcji opisano wszystkie pola, które mogą wystąpić w pliku messages.json. Szczegółowe informacje na temat działania funkcji – informacje na przykład o tym, co się dzieje, gdy język nie definiuje wszystkich wiadomości – zapoznaj się z artykułem Internacjonalizacja.

nazwa

Nie masz żadnego pola o nazwie „name”. Nazwa tego pola to nazwa wiadomości – tak samo nazwa widoczna w __MSG__name___ lub getMessage("_name_").

Wielkość liter nie jest rozróżniana, a klucz umożliwia pobranie zlokalizowanego tekstu wiadomości. Nazwa może zawierają następujące znaki:

  • A–Z
  • a-z
  • 0-9
  • _ (podkreślenie)
  • @
Uwaga: nie twórz nazw zaczynających się od „@@”. Te nazwy są zarezerwowane dla wstępnie zdefiniowanych wiadomości.

Oto 3 przykłady nazw wzięte z sekcji Przykład:

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

Więcej przykładów użycia nazw znajdziesz na stronie Internacjonalizacja.

wiadomość

Przetłumaczona wiadomość w formie ciągu znaków, który może zawierać zmienne. Używaj $_placeholder_name_$ (wielkość liter nie jest rozróżniana), aby odwołać się do konkretnego obiektu zastępczego. Możesz na przykład: użyj obiektu zastępczego o nazwie „our_site” jako $our_site$, $OUR_SITE$ lub $oUR_sITe$.

Oto 3 przykłady wiadomości zaczerpnięte z sekcji Przykład:

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

Aby umieścić w ciągu znaków znak dolara ($), użyj $$. For example, use the following code to specify the message Amount (in $):

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

Chociaż symbole zastępcze, takie jak $USER$, są preferowanym sposobem odwoływania się do ciągów znaków zastępowania (ciągi znaków określone za pomocą parametru substitutions funkcji i18n.getMessage), możesz też odwołać się do tej funkcji do zastępowania ciągów znaków bezpośrednio w wiadomości. Na przykład ten komunikat odnosi się do pierwsze trzy ciągi podstawienia przekazywane do funkcji getMessage():

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

Zalecamy jednak stosowanie obiektów zastępczych zamiast ciągów $_n_. w wiadomościach. Symbole zastępcze działają jak dobre nazwy zmiennych. Tydzień po napisaniu kodu, prawdopodobnie nie pamiętasz, do czego odnosi się $1, ale będziesz wiedzieć, do czego odnoszą się obiekty zastępcze. Więcej informacji o zmiennych i ciągach znaków zastępowania znajdziesz w sekcji poświęconej zmiennym.

opis

Opcjonalne. Opis wiadomości, który ma zawierać kontekst lub szczegółowe informacje, aby pomóc tłumaczowi aby uzyskać najlepsze możliwe tłumaczenie.

Oto 3 przykłady opisów pochodzących z sekcji Przykład:

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

obiekty zastępcze

Opcjonalne. Określa co najmniej 1 podłańcuch do użycia w wiadomości. Oto 2 powody, dla których możesz użyć zmiennej:

  • Określenie tekstu części wiadomości, która nie powinna być tłumaczona. Przykłady: kod HTML, nazwy będące znakami towarowymi, specyfikatory formatowania.
  • Aby odwołać się do ciągu zastąpienia przekazywanego do getMessage(). Przykład: $1.

Każdy symbol zastępczy ma nazwę, „treść” element i opcjonalny „przykład”, elementu. Nazwa obiektu zastępczego Wielkość liter nie jest rozróżniana, a adres może zawierać te same znaki co nazwa wiadomości.

Treść wartość elementu jest ciągiem znaków, który może odwoływać się do określonych ciągów zastępowania za pomocą parametru substitutions metody i18n.getMessage. Wartość „treści” element to zwykle np. „Example.com”; lub „$1”. Jeśli odwołujesz się do ciągu zastąpienia, który nie jest istnieje, otrzymasz pusty ciąg znaków. W tabeli poniżej pokazujemy, jak ciągi tekstowe ($_n_) odpowiadają ciągom tekstowym wskazywaną przez parametr substitutions.

Parametr substitutionsWartość 1 USDWartość 2 USDWartość 3 PLN
userNamewartość kolumny userName""""
["Cira", "Kathy"]"Cira""Kathy"""

„Przykład” (opcjonalny, ale zdecydowanie zalecany) pomaga tłumaczom, pokazując, jak treść nie są wyświetlane użytkownikowi. Na przykład obiekt zastępczy kwoty pieniężnej powinien mieć następujący przykład: "$23.45"

Ten fragment kodu, pobrany z sekcji Przykład, zawiera element „placeholder” element, który zawiera dwie obiekty zastępcze o nazwie „our_site” i „user”. Parametr „our_site” obiekt zastępczy nie ma „przykładu” elementu, ponieważ jego wartość jest oczywista w tagu „content” .

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