स्थानीय भाषा के अनुसार मैसेज के फ़ॉर्मैट

हर अंतरराष्ट्रीय एक्सटेंशन या ऐप्लिकेशन में, messages.json नाम की कम से कम एक फ़ाइल होती है जो स्थानीय भाषा के हिसाब से स्ट्रिंग. इस पेज पर messages.json फ़ाइलों के फ़ॉर्मैट के बारे में बताया गया है. इस पर जानकारी के लिए अंतरराष्ट्रीय और स्थानीय भाषा में अनुवाद करने का तरीका जानने के लिए अंतरराष्ट्रीय स्तर का बनाने के बारे में जानकारी देने वाला पेज देखें.

फ़ील्ड सारांश

नीचे दिया गया कोड, messages.json के साथ काम करने वाले फ़ील्ड दिखाता है. सिर्फ़ "name" और "message" फ़ील्ड भरना ज़रूरी है.

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

उदाहरण

यह रही एक messages.json फ़ाइल, जिसमें "prompt_for_name", "hello", और "अलविदा":

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

फ़ील्ड की जानकारी

इस सेक्शन में, messages.json फ़ाइल में दिखने वाले हर फ़ील्ड के बारे में बताया गया है. इस बारे में जानकारी पाने के लिए कि Messages फ़ाइल का इस्तेमाल किया जाता है—उदाहरण के लिए, जब कोई स्थान-भाषा सभी मैसेज को तय नहीं करती है, तो क्या होता है—देखें अंतरराष्ट्रीय स्तर का दस्तावेज़.

नाम

दरअसल, "नाम" नाम का कोई फ़ील्ड नहीं है. इस फ़ील्ड का नाम मैसेज का नाम है—यही भी है name जो आपको __MSG__name___ या getMessage("_name_") में दिखता है.

नाम एक केस-इनसेंसिटिव कुंजी है, जिसकी मदद से स्थानीय भाषा में मैसेज का टेक्स्ट वापस पाया जा सकता है. नाम में ये वर्ण शामिल किए जा सकते हैं:

  • A से Z तक
  • a-z
  • 0-9
  • _ (अंडरस्कोर)
  • @
ध्यान दें: "@@" से शुरू होने वाले नाम न डालें. ये नाम पहले से तय मैसेज के लिए रिज़र्व हैं.

यहां नामों के तीन उदाहरण दिए गए हैं. इन्हें उदाहरण सेक्शन से लिया गया है:

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

नामों के इस्तेमाल के और उदाहरणों के लिए, अंतरराष्ट्रीय स्तर का दस्तावेज़ देखें.

मैसेज

अनुवाद किया गया मैसेज, स्ट्रिंग के तौर पर. इसमें प्लेसहोल्डर हो सकते हैं. किसी खास प्लेसहोल्डर का रेफ़रंस देने के लिए, $_placeholder_name_$ (बड़े और छोटे अक्षरों में अंतर नहीं करता) का इस्तेमाल करें. उदाहरण के लिए, "our_site" नाम के प्लेसहोल्डर को $our_site$, $OUR_SITE$ या $oUR_sITe$ के तौर पर रेफ़र किया जा सकता है.

यहां मैसेज के तीन उदाहरण दिए गए हैं. इन्हें उदाहरण सेक्शन से लिया गया है:

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

स्ट्रिंग में डॉलर का निशान ($) डालने के लिए, $$. For example, use the following code to specify the message Amount (in $):

"message": "Amount (in $$)"
 का इस्तेमाल करें

$USER$ जैसे प्लेसहोल्डर, सब्सिट्यूशन स्ट्रिंग (i18n.getMessage के सब्सिट्यूशन पैरामीटर का इस्तेमाल करके तय की गई स्ट्रिंग) का रेफ़रंस देने का सबसे पसंदीदा तरीका है. हालांकि, मैसेज में भी सब्सिट्यूशन स्ट्रिंग का रेफ़रंस दिया जा सकता है. उदाहरण के लिए, नीचे दिया गया मैसेज getMessage() को पास की गई पहली तीन प्रतिस्थापन स्ट्रिंग:

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

इस उदाहरण के बावजूद, हमारा सुझाव है कि आप अपने मैसेज में $_n_ स्ट्रिंग के बजाय प्लेसहोल्डर का इस्तेमाल करें. प्लेसहोल्डर को वैरिएबल के अच्छे नाम मानें. अपने लिखने के एक सप्ताह बाद कोड, आप शायद भूल जाएंगे कि $1 क्या दिखाता है, लेकिन आपको यह पता चल जाएगा कि आपके प्लेसहोल्डर क्या बताते हैं. प्लेसहोल्डर और बदली गई स्ट्रिंग के बारे में ज़्यादा जानने के लिए, प्लेसहोल्डर सेक्शन देखें.

ब्यौरा

ज़रूरी नहीं. मैसेज का ब्यौरा, जिसका मकसद अनुवादक की मदद करने के लिए कॉन्टेक्स्ट या जानकारी देना हो सबसे अच्छा अनुवाद करें.

यहां ब्यौरे के तीन उदाहरण दिए गए हैं, जिन्हें उदाहरण सेक्शन से लिया गया है:

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

प्लेसहोल्डर

ज़रूरी नहीं. मैसेज में इस्तेमाल करने के लिए, एक या उससे ज़्यादा सबस्ट्रिंग तय करता है. यहां दो वजहें दी गई हैं, किसी प्लेसहोल्डर का इस्तेमाल किया जा सकता है:

  • अपने मैसेज के उस हिस्से के लिए टेक्स्ट तय करना जिसका अनुवाद नहीं करना है. उदाहरण: एचटीएमएल कोड, ट्रैकमार्क वाले नाम, फ़ॉर्मैटिंग के लिए इस्तेमाल होने वाले निर्देश.
  • getMessage() में दी गई प्रतिस्थापन स्ट्रिंग को देखने के लिए. उदाहरण: $1.

हर प्लेसहोल्डर में एक नाम, एक "कॉन्टेंट" आइटम, और एक वैकल्पिक "उदाहरण" आइटम होता है. प्लेसहोल्डर के नाम में केस-इन्सेंसिव का इस्तेमाल किया जाता है. साथ ही, इसमें मैसेज के नाम जैसे वर्ण शामिल किए जा सकते हैं.

"कॉन्टेंट" आइटम का मान एक ऐसी स्ट्रिंग है जो प्रतिस्थापन स्ट्रिंग को रेफ़र कर सकती है, जिन्हें i18n.getMessage तरीके के विकल्पों पैरामीटर का इस्तेमाल करके. आम तौर पर, "कॉन्टेंट" आइटम की वैल्यू "Example.com" या "1 डॉलर" जैसी होती है. अगर आपने ऐसी बदलाव करने वाली स्ट्रिंग का रेफ़रंस दिया है जो मौजूद नहीं है, तो आपको खाली स्ट्रिंग दिखेगी. इस टेबल में बताया गया है कि $_n_ स्ट्रिंग, स्ट्रिंग से कैसे जुड़ी होती हैं विकल्पों पैरामीटर की मदद से तय किया जाता है.

substitutions पैरामीटर1 डॉलर की वैल्यू2 डॉलर की वैल्यू3 डॉलर की वैल्यू
userNameuserName की वैल्यू""""
["Cira", "Kathy"]"Cira""Kathy"""

"उदाहरण" आइटम (वैकल्पिक, लेकिन इसका सुझाव दिया जाता है) की मदद से अनुवादकों को यह पता चलता है कि असली उपयोगकर्ता को दिखती है. उदाहरण के लिए, डॉलर में कीमत के प्लेसहोल्डर के लिए, "$23.45" जैसा उदाहरण होना चाहिए.

उदाहरण सेक्शन से लिया गया यह स्निपेट, "प्लेसहोल्डर" दिखाता है वह आइटम जो इसमें "our_site" नाम के दो प्लेसहोल्डर मौजूद हैं और "उपयोगकर्ता" शामिल हैं. "our_site" प्लेसहोल्डर में कोई "उदाहरण" आइटम नहीं है, क्योंकि इसकी वैल्यू "content" फ़ील्ड से साफ़ तौर पर दिखती है.

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