इस दस्तावेज़ में, FCM स्थानीय भाषा के फ़ील्ड
(*_loc_key
और *_loc_args
) के इस्तेमाल के बारे में बताया गया है. इनकी मदद से ऐसी सूचनाएं भेजी जा सकती हैं जो Android और iOS पर, उपयोगकर्ता की भाषा की सेटिंग के हिसाब से अपने-आप बदल जाती हैं. इससे आपका सर्वर, भाषा से जुड़ा एक पेलोड भेज सकता है. साथ ही, अनुवाद करने का काम क्लाइंट डिवाइस को सौंप सकता है.
FCM स्थानीय भाषा के मुताबिक बनाने की खास जानकारी
अपने ऐप्लिकेशन को स्थानीय भाषा में उपलब्ध कराने के लिए, ऐसी कुंजी भेजी जा सकती है जो उपयोगकर्ता के ऐप्लिकेशन में मौजूद स्ट्रिंग रिसॉर्स एंट्री से मेल खाती हो. डिवाइस का ऑपरेटिंग सिस्टम (ओएस), डाइनैमिक आर्ग्युमेंट को ढूंढने और डालने का काम करता है.
FCM फ़ील्ड | ब्यौरा | क्लाइंट की कार्रवाई |
---|---|---|
title_loc_key |
क्लाइंट ऐप्लिकेशन के स्ट्रिंग रिसॉर्स में टाइटल स्ट्रिंग के लिए कुंजी. | इसके बाद, ओएस ऐप्लिकेशन की स्थानीय भाषा में मौजूद फ़ाइलों में, उससे मिलती-जुलती स्ट्रिंग ढूंढता है. |
body_loc_key |
क्लाइंट ऐप्लिकेशन के स्ट्रिंग रिसॉर्स में मौजूद बॉडी स्ट्रिंग के लिए कुंजी. | इसके बाद, ओएस ऐप्लिकेशन की स्थानीय भाषा में मौजूद फ़ाइलों में, उससे मिलती-जुलती स्ट्रिंग ढूंढता है. |
title_loc_args |
डाइनैमिक स्ट्रिंग वैल्यू का एक ऐसा कलेक्शन जिसे title_loc_key स्ट्रिंग में बदला जाना है. |
ओएस, इन आर्ग्युमेंट को स्थानीय भाषा में मौजूद स्ट्रिंग के फ़ॉर्मैट स्पेसिफ़ायर में डालता है. |
body_loc_args |
डाइनैमिक स्ट्रिंग वैल्यू का एक ऐसा कलेक्शन जिसे body_loc_key स्ट्रिंग में बदला जाना है. |
ओएस, इन आर्ग्युमेंट को स्थानीय भाषा में मौजूद स्ट्रिंग के फ़ॉर्मैट स्पेसिफ़ायर में डालता है. |
पहला चरण: अपने ऐप्लिकेशन में स्थानीय भाषा में स्ट्रिंग रिसॉर्स तय करना
FCM को स्थानीय भाषा में उपलब्ध कराने की सुविधा का इस्तेमाल शुरू करने के लिए, यह पक्का करना ज़रूरी है कि आपके Android और iOS प्रोजेक्ट में ज़रूरी अनुवाद उपलब्ध हों.
Android का सेटअप
स्ट्रिंग रिसॉर्स तय करें: res/values/strings.xml
में अपनी डिफ़ॉल्ट भाषा की स्ट्रिंग डालें.
*_loc_args
में पास की जाने वाली किसी भी डाइनैमिक वैल्यू के लिए, फ़ॉर्मैट स्पेसिफ़ायर (%1$s
, %2$d
वगैरह) का इस्तेमाल करें.
डिफ़ॉल्ट (res/values/strings.xml
):
<resources>
<string name="welcome_title">Welcome, %1$s!</string>
<string name="new_message_body">You have %1$d new message(s) from %2$s.</string>
</resources>
अनुवाद जोड़ना: आईएसओ भाषा कोड का इस्तेमाल करके, भाषा के हिसाब से डायरेक्ट्री बनाएं. उदाहरण के लिए, values-fr
फ़्रेंच के लिए, values-es
स्पैनिश के लिए) और कुंजियों का अनुवाद करें.
फ़्रेंच (res/values-fr/strings.xml
):
<resources>
<string name="welcome_title">Bienvenue, %1$s!</string>
<string name="new_message_body">Vous avez %1$d nouveau(x) message(s) de %2$s.</string>
</resources>
ज़्यादा जानकारी के लिए, यह दस्तावेज़ पढ़ें:
iOS डिवाइस पर सेटअप करना
स्ट्रिंग रिसॉर्स तय करना: अपनी बेस स्ट्रिंग को Localizable.strings
फ़ाइल में तय करें. आम तौर पर, यह Base.lproj
फ़ोल्डर या स्ट्रिंग कैटलॉग में होता है. डाइनैमिक वैल्यू के लिए, फ़ॉर्मैट स्पेसिफ़ायर (%@
, %ld
वगैरह) का इस्तेमाल करें. आम तौर पर, की को सभी कैपिटल लेटर में लिखा जाता है.
डिफ़ॉल्ट (अंग्रेज़ी Localizable.strings
):
"WELCOME_TITLE" = "Welcome, %@!";
"NEW_MESSAGE_BODY" = "You have %ld new message(s) from %@.";
अनुवाद जोड़ें: भाषा के हिसाब से .lproj
फ़ोल्डर बनाएं या स्ट्रिंग कैटलॉग का इस्तेमाल करके स्थानीय भाषाएं जोड़ें. इसके बाद, कुंजियों का अनुवाद करें.
फ़्रेंच (fr.lproj/Localizable.strings
):
"WELCOME_TITLE" = "Bienvenue, %@!";
"NEW_MESSAGE_BODY" = "Vous avez %ld nouveau(x) message(s) de %@.";
ज़्यादा जानकारी के लिए, यह दस्तावेज़ पढ़ें:
दूसरा चरण: FCM मैसेज पेलोड बनाना
FCM HTTP v1 API का इस्तेमाल करके सूचना भेजते समय, आपका सर्वर एक ऐसा पेलोड बनाता है जो संसाधन कुंजियों (*_loc_key
) और डाइनैमिक डेटा (*_loc_args
) का इस्तेमाल स्ट्रिंग के ऐरे के तौर पर करता है.
उदाहरण FCM एचटीटीपी v1 पेलोड
स्थानीय भाषा में अनुवाद करने की कुंजियां, प्लैटफ़ॉर्म के हिसाब से ओवरराइड किए गए ब्लॉक (android.notification
और apns.payload.aps.alert
) में रखी जाती हैं.
{
"message": {
"token": "DEVICE_REGISTRATION_TOKEN",
"android": {
"notification": {
// Android keys match strings.xml resource names
"title_loc_key": "welcome_title",
"title_loc_args": ["Alice"],
"body_loc_key": "new_message_body",
"body_loc_args": ["3", "Bob"]
}
},
"apns": {
"payload": {
"aps": {
"alert": {
// iOS uses 'title-loc-key' and 'loc-key' (for the body)
"title-loc-key": "WELCOME_TITLE",
"title-loc-args": ["Alice"],
"loc-key": "NEW_MESSAGE_BODY",
"loc-args": ["3", "Bob"]
}
}
}
}
}
}
पे लोड आर्ग्युमेंट के लिए मुख्य बातें
क्रम मायने रखता है:
*_loc_args
में मौजूद स्ट्रिंग, स्ट्रिंग रिसॉर्स फ़ाइल में मौजूद प्लेसहोल्डर के हिसाब से सही क्रम में होनी चाहिए. उदाहरण के लिए,%1$s
,%2$s
).सिर्फ़ स्ट्रिंग:
*_loc_args
ऐरे में मौजूद सभी एलिमेंट स्ट्रिंग होने चाहिए. भले ही, वे संख्याओं को दिखाते हों (जैसे, उदाहरण में"3"
). क्लाइंट ओएस का स्ट्रिंग फ़ॉर्मेटर, फ़ॉर्मैट स्पेसिफ़ायर (%ld
या%1$d
) के आधार पर, टाइप कन्वर्ज़न को मैनेज करता है.
तीसरा चरण: क्लाइंट प्रोसेसिंग और डिसप्ले
डिवाइस को सूचना मिलने पर, ये चरण अपने-आप पूरे हो जाते हैं:
भाषा की जांच: डिवाइस, उपयोगकर्ता की मुख्य भाषा की पहचान करता है. उदाहरण के लिए, जर्मन, इटैलियन).
कुंजी ढूंढना: ओएस,
*_loc_key
वैल्यू (welcome_title
) का इस्तेमाल करके, डिवाइस की स्थान-भाषा के लिए ऐप्लिकेशन की संसाधन फ़ाइलों में अनुवाद की गई स्ट्रिंग ढूंढता है.आर्ग्युमेंट इंसर्शन: ओएस,
*_loc_args
(["Alice"]
) से ऐरे लेता है और वैल्यू को स्थानीय भाषा के हिसाब से तैयार की गई स्ट्रिंग में डालता है. ऐसा करते समय, वह स्थानीय भाषा के फ़ॉर्मैटिंग के नियमों (विराम चिह्न, शब्दों का क्रम वगैरह) का पालन करता है.
डिवाइस की स्थान-भाषा | title_loc_key : welcome_title |
title_loc_args : ["Alice"] |
टाइटल का फ़ाइनल डिसप्ले |
---|---|---|---|
अंग्रेज़ी | "Welcome, %1$s!" |
Alice | "Welcome, Alice!" |
फ़्रेंच | "Bienvenue, %1$s!" |
Alice | "Bienvenue, Alice!" |
जर्मन | "Willkommen, %1$s!" |
Alice | "Willkommen, Alice!" |
इस प्रोसेस से यह पक्का होता है कि हर उपयोगकर्ता को उसकी भाषा की प्राथमिकताओं के हिसाब से मैसेज मिले. साथ ही, इसमें सही भाषाई स्ट्रक्चर का इस्तेमाल किया जाता है. इसके अलावा, आपके सर्वर से स्टैंडर्ड पेलोड को बनाए रखा जाता है.
उदाहरण: स्थानीय भाषा में सूचना पाने के विकल्पों के साथ सूचना का मैसेज
भेजने के अनुरोध के इस उदाहरण में, Tech
विषय को सूचना भेजी जाती है. इसमें क्लाइंट के लिए स्थानीय भाषा में अनुवाद करने के विकल्प भी शामिल हैं, ताकि स्थानीय भाषा में अनुवाद किए गए मैसेज दिखाए जा सकें.
यहां उपयोगकर्ता के डिवाइस पर दिखने वाले विज़ुअल इफ़ेक्ट का एक उदाहरण दिया गया है:
Node.js
var topicName = 'industry-tech';
var message = {
android: {
ttl: 3600000,
notification: {
bodyLocKey: 'STOCK_NOTIFICATION_BODY',
bodyLocArgs: ['FooCorp', '11.80', '835.67', '1.43']
}
},
apns: {
payload: {
aps: {
alert: {
locKey: 'STOCK_NOTIFICATION_BODY',
locArgs: ['FooCorp', '11.80', '835.67', '1.43']
}
}
}
},
topic: topicName,
};
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message": {
"topic":"Tech",
"android": {
"ttl":"3600s",
"notification": {
"body_loc_key": "STOCK_NOTIFICATION_BODY",
"body_loc_args": ["FooCorp", "11.80", "835.67", "1.43"]
}
},
"apns": {
"payload": {
"aps": {
"alert": {
"loc-key": "STOCK_NOTIFICATION_BODY",
"loc-args": ["FooCorp", "11.80", "835.67", "1.43"]
}
}
}
}
}
}'
ज़्यादा जानने के लिए, एचटीटीपी v1 के रेफ़रंस दस्तावेज़ में AndroidNotification
और ApnsConfig
देखें. इससे आपको मैसेज बॉडी में, प्लैटफ़ॉर्म के हिसाब से उपलब्ध ब्लॉक में मौजूद कुंजियों के बारे में पूरी जानकारी मिलेगी. APNS के साथ काम करने वाली कुंजियों के बारे में जानने के लिए, Apple का Payload Key
Reference देखें.