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

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

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

यह कोड, messages.json के लिए इस्तेमाल किए जा सकने वाले फ़ील्ड दिखाता है. सिर्फ़ "name" और "मैसेज" फ़ील्ड आवश्यक हैं.

{
  "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 के substitutions पैरामीटर का इस्तेमाल करके तय की गई स्ट्रिंग) का इस्तेमाल करें. उदाहरण के लिए, नीचे दिया गया मैसेज 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_ स्ट्रिंग, स्ट्रिंग से कैसे जुड़ी होती हैं विकल्पों पैरामीटर की मदद से तय किया जाता है.

विकल्पों का पैरामीटरएक डॉलर की कीमतदो डॉलर की वैल्यूतीन डॉलर की वैल्यू
userNameuserName की वैल्यू""""
["Cira", "Kathy"]"Cira""Kathy"""

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

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

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