Định dạng thông báo bản địa hoá

Mỗi tiện ích quốc tế hoá có ít nhất một tệp có tên messages.json. Tệp này cung cấp các chuỗi theo từng ngôn ngữ cụ thể. Trang này mô tả định dạng của các tệp messages.json. Để biết thông tin về cách quốc tế hoá và bản địa hoá, hãy xem trang Quốc tế hoá.

Tóm tắt trường

Mã sau đây cho thấy các trường được hỗ trợ cho messages.json. Chỉ bắt buộc phải sử dụng các trường "name" và "message".

messages.json:

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

Ví dụ:

Dưới đây là tệp messages.json xác định 3 thông báo có tên "prompt_for_name", "hello" và "bye":

messages.json:

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

Thông tin chi tiết về trường

Phần này mô tả từng trường có thể xuất hiện trong tệp messages.json. Để biết thông tin chi tiết về cách sử dụng tệp thông báo, chẳng hạn như điều gì xảy ra khi một ngôn ngữ không xác định tất cả các thông báo, hãy xem phần Quốc tế hoá.

tên

Thực ra không có trường nào có tên là "name". Tên của trường này là tên của thông báo – giống với tên mà bạn thấy trong __MSG__name___ hoặc getMessage("_name_").

Tên là khoá không phân biệt chữ hoa chữ thường cho phép bạn truy xuất văn bản thông báo đã bản địa hoá. Tên này có thể bao gồm các ký tự sau:

  • A-Z
  • a-z
  • 0-9
  • _ (dấu gạch dưới)
  • @

Dưới đây là ba ví dụ về tên, được lấy từ phần Ví dụ:

messages.json:

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

Để biết thêm ví dụ về cách sử dụng tên, hãy xem trang Quốc tế hoá.

tin nhắn

Thông báo được dịch, ở dạng một chuỗi có thể chứa các placeholders. Sử dụng $_placeholder_name_$ (không phân biệt chữ hoa chữ thường) để tham chiếu đến một phần giữ chỗ cụ thể. Ví dụ: bạn có thể tham chiếu phần giữ chỗ có tên "our_site" dưới dạng $our_site$, $OUR_SITE$ hoặc $oUR_sITe$.

Dưới đây là ba ví dụ về thông báo, được lấy từ phần Ví dụ:

messages.json:

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

Để đặt ký hiệu đô la ($) vào chuỗi, hãy sử dụng $$. For example, use the following code to specify the message Amount (in $):

messages.json:

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

Mc dù các phn gi ch như $USER$ là cách ưu tiên để tham chiếu đến chui thay thế (các chui được ch định bng tham s thay thế ca i18n.getMessage), nhưng bn cũng có th tham chiếu đến các chui thay thế ngay trong thông báo. Ví dụ: thông báo sau đề cp đến 3 chui thay thế đầu tiên được chuyn vào getMessage():



messages.json:



Mc dù vy, bn vn nên s dng phn gi ch thay vì các chui $_n_ trong thông báo. Hãy coi phn gi ch là tên biến hay. Mt tun sau khi viết mã, bn có th quên $1 đề cp đến điu gì, nhưng bn s biết đề cp đến phn gi ch ca mình.
Để biết thêm thông tin v chui phn gi ch và chui thay thế, hãy xem phn placeholders.



description



Không bt buc. Ni dung mô t thông báo, nhm cung cp ng cnh hoc thông tin chi tiết nhm giúp người dch dch tt nht có thể.



Dưới đây là ba ví d v ni dung mô tả, được ly t phn Ví d:



messages.json:



placeholders



Không bt buc. Xác định mt hoc nhiu chui con dùng trong thông báo. Dưới đây là hai lý do khiến bn nên s dng phn gi chỗ:




  • Để xác định văn bn cho mt phn thông báo không được dch. Ví dụ: Mã HTML, tên đã đăng ký nhãn hiu, thông s định dng.

  • Để tham chiếu đến mt chui thay thế được truyn vào getMessage(). Ví dụ: $1.



Mi phn gi ch có mt tên, mt mc "nội dung" và mt mc "ví dụ" không bt buc. Tên ca phn gi ch không phân bit ch hoa ch thường và có th cha các ký t ging như tên thông báo.



Giá tr ca mc "content" là mt chui có th tham chiếu đến các chui thay thế, được ch định bng cách s dng thông s thay thế ca phương thc i18n.getMessage. Giá tr ca mc "nội dung" thường đại din như "Example.com" hoc "$1". Nếu tham chiếu đến mt chui thay thế không tn ti, bn s nhn được mt chui trng. Bng sau đây cho thy cách các chui $_n_ tương ng vi các chui do tham s thay thế ch định.



thông s thay thếGiá tr 1 USDGiá tr 2 USDGiá tr 3 USD
userNamegiá tr ca userName""""
["Cira", "Kathy"]"Cira""Kathy"""


Mc "ví dụ" (không bt buc, nhưng nên dùng) giúp người dch bng cách cho người dùng cui thy cách ni dung xut hin. Ví dụ: phn gi ch cho mt s tin bng đô la nên có mt ví d như "$23.45".



Đon mã sau, ly t phn Ví d, cho thy mt mc "phần giữ chỗ" cha hai phn gi ch có tên là "our_site" và "người dùng". Phn gi ch "our_site" không có mc "example" vì giá tr ca phn này hin th rõ ràng trong trường "content".



messages.json: