हर अंतरराष्ट्रीय एक्सटेंशन या ऐप्लिकेशन में, 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", और
"bye" नाम के तीन मैसेज के बारे में जानकारी दी गई है:
{
"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
फ़ाइल में दिखने वाले हर फ़ील्ड के बारे में बताया गया है. मैसेज फ़ाइल का इस्तेमाल कैसे किया जाता है, इस बारे में ज़्यादा जानने के लिए अंतरराष्ट्रीय स्तर पर उपलब्ध कराना लेख पढ़ें. उदाहरण के लिए, जब किसी स्थानीय भाषा में सभी मैसेज मौजूद नहीं होते, तो क्या होता है.
नाम
दरअसल, "नाम" नाम का कोई फ़ील्ड नहीं है. इस फ़ील्ड का नाम मैसेज का नाम है—यह वही नाम है जो आपको __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
.
हर प्लेसहोल्डर में एक नाम, एक "कॉन्टेंट" आइटम, और एक वैकल्पिक "उदाहरण" आइटम होता है. प्लेसहोल्डर के नाम में केस-इन्सेंसिव का इस्तेमाल किया जाता है. साथ ही, इसमें मैसेज के नाम जैसे वर्ण हो सकते हैं.
"content" आइटम की वैल्यू एक स्ट्रिंग होती है, जो बदली जा सकने वाली स्ट्रिंग का रेफ़रंस दे सकती है. इन स्ट्रिंग को i18n.getMessage तरीके के substitutions पैरामीटर का इस्तेमाल करके तय किया जाता है. आम तौर पर, "कॉन्टेंट" आइटम की वैल्यू "Example.com" या "1 डॉलर" जैसी होती है. अगर आपने ऐसी बदलाव करने वाली स्ट्रिंग का रेफ़रंस दिया है जो मौजूद नहीं है, तो आपको खाली स्ट्रिंग दिखेगी. इस टेबल में बताया गया है कि $_n_
स्ट्रिंग, विकल्पों के पैरामीटर से तय की गई स्ट्रिंग से कैसे जुड़ी हैं.
विकल्पों का पैरामीटर | 1 डॉलर की वैल्यू | दो डॉलर की वैल्यू | 3 डॉलर की वैल्यू |
---|---|---|---|
userName | userName की वैल्यू | "" | "" |
["Cira", "Kathy"] | "Cira" | "Kathy" | "" |
"उदाहरण" आइटम (ज़रूरी नहीं, लेकिन इसका सुझाव दिया जाता है) से अनुवादकों को यह समझने में मदद मिलती है कि कॉन्टेंट, असली उपयोगकर्ता को कैसा दिखता है. उदाहरण के लिए, डॉलर में कीमत के प्लेसहोल्डर के लिए, "$23.45"
जैसा उदाहरण होना चाहिए.
उदाहरण सेक्शन से लिया गया यह स्निपेट, "प्लेसहोल्डर" आइटम दिखाता है. इसमें "our_site" और "user" नाम के दो प्लेसहोल्डर हैं. "our_site" प्लेसहोल्डर में कोई "उदाहरण" आइटम नहीं है, क्योंकि इसकी वैल्यू "content" फ़ील्ड से साफ़ तौर पर दिखती है.
"placeholders": {
"our_site": {
"content": "Example.com",
},
"user": {
"content": "$1",
"example": "Cira"
}
}