এই ডকুমেন্টেশনটি Android এবং iOS-এ ব্যবহারকারীর ভাষা সেটিংসের সাথে স্বয়ংক্রিয়ভাবে খাপ খাইয়ে নেওয়া বিজ্ঞপ্তিগুলি সরবরাহ করতে FCM স্থানীয়করণ ক্ষেত্রগুলির ( *_loc_key
এবং *_loc_args
) ব্যবহারের রূপরেখা দেয়৷ এটি আপনার সার্ভারকে ক্লায়েন্ট ডিভাইসে অনুবাদ অর্পণ করে একটি একক, ভাষা-অজ্ঞেয়মূলক পেলোড পাঠাতে দেয়।
FCM স্থানীয়করণ ওভারভিউ
আপনার অ্যাপ স্থানীয়করণ করতে, আপনি একটি কী পাঠাতে পারেন যা ব্যবহারকারীর অ্যাপ্লিকেশনের ভিতরে একটি স্ট্রিং রিসোর্স এন্ট্রির সাথে সম্পর্কিত। ডিভাইসের অপারেটিং সিস্টেম (OS) গতিশীল আর্গুমেন্টের সন্ধান এবং সন্নিবেশ পরিচালনা করে।
FCM ক্ষেত্র | বর্ণনা | ক্লায়েন্ট অ্যাকশন |
---|---|---|
title_loc_key | ক্লায়েন্ট অ্যাপের স্ট্রিং রিসোর্সে শিরোনাম স্ট্রিংয়ের কী। | OS অ্যাপের স্থানীয় ফাইলগুলিতে সংশ্লিষ্ট স্ট্রিং খুঁজে পায়। |
body_loc_key | ক্লায়েন্ট অ্যাপের স্ট্রিং রিসোর্সে বডি স্ট্রিংয়ের জন্য কী। | OS অ্যাপের স্থানীয় ফাইলগুলিতে সংশ্লিষ্ট স্ট্রিং খুঁজে পায়। |
title_loc_args | ডাইনামিক স্ট্রিং মানগুলির একটি অ্যারে title_loc_key স্ট্রিং এ প্রতিস্থাপিত হবে। | OS এই আর্গুমেন্টগুলিকে লোকালাইজড স্ট্রিং এর ফরম্যাট স্পেসিফায়ারে সন্নিবেশ করে। |
body_loc_args | body_loc_key স্ট্রিং-এ প্রতিস্থাপিত করার জন্য গতিশীল স্ট্রিং মানগুলির একটি অ্যারে। | OS এই আর্গুমেন্টগুলিকে লোকালাইজড স্ট্রিং এর ফরম্যাট স্পেসিফায়ারে সন্নিবেশ করে। |
ধাপ 1: আপনার অ্যাপ্লিকেশানগুলিতে স্থানীয় স্ট্রিং সংস্থানগুলি সংজ্ঞায়িত করুন৷
FCM স্থানীয়করণের সাথে শুরু করার জন্য, আপনার Android এবং iOS প্রকল্পগুলিতে প্রয়োজনীয় অনুবাদগুলি উপলব্ধ রয়েছে তা নিশ্চিত করা গুরুত্বপূর্ণ৷
অ্যান্ড্রয়েড সেটআপ
স্ট্রিং রিসোর্স সংজ্ঞায়িত করুন : 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>
অনুবাদ যোগ করুন : ISO ভাষা কোড ব্যবহার করে ভাষা-নির্দিষ্ট ডিরেক্টরি তৈরি করুন (যেমন, ফ্রেঞ্চের জন্য 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 %@.";
আরও তথ্যের জন্য, নিম্নলিখিত ডকুমেন্টেশন ব্যবহার করুন:
ধাপ 2: FCM বার্তা পেলোড তৈরি করুন
FCM HTTP v1 API ব্যবহার করে বিজ্ঞপ্তি পাঠানোর সময়, আপনার সার্ভার একটি একক পেলোড তৈরি করে যা রিসোর্স কী ( *_loc_key
) এবং ডাইনামিক ডেটা ( *_loc_args
) স্ট্রিংগুলির একটি অ্যারে হিসাবে ব্যবহার করে।
উদাহরণ FCM HTTP 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"
এর মতো)। ক্লায়েন্ট OS এর স্ট্রিং ফরম্যাটার ফর্ম্যাট স্পেসিফায়ার (%ld
বা%1$d
) এর উপর ভিত্তি করে চূড়ান্ত প্রকার রূপান্তর পরিচালনা করে।
ধাপ 3: ক্লায়েন্ট প্রক্রিয়াকরণ এবং প্রদর্শন
যখন ডিভাইসটি বিজ্ঞপ্তি পায়, নিম্নলিখিত পদক্ষেপগুলি স্বয়ংক্রিয়ভাবে ঘটে:
ভাষা পরীক্ষা : ডিভাইসটি ব্যবহারকারীর প্রাথমিক লোকেল (যেমন, জার্মান, ইতালীয়) সনাক্ত করে।
কী লুকআপ : ডিভাইসের লোকেলের জন্য অ্যাপের রিসোর্স ফাইলে অনুরূপ অনুবাদিত স্ট্রিং খুঁজে পেতে OS
*_loc_key
মান (welcome_title
) ব্যবহার করে।আর্গুমেন্ট সন্নিবেশ : OS
*_loc_args
(["Alice"]
) থেকে অ্যারে নেয় এবং লোকেলের বিন্যাস নিয়ম (বিরামচিহ্ন, শব্দের ক্রম, ইত্যাদি) সম্মান করে স্থানীয়কৃত স্ট্রিং-এ মান সন্নিবেশ করে।
ডিভাইস লোকেল | title_loc_key : welcome_title | title_loc_args : ["এলিস"] | চূড়ান্ত শিরোনাম প্রদর্শন |
---|---|---|---|
ইংরেজি | "Welcome, %1$s!" | এলিস | "Welcome, Alice!" |
ফরাসি | "Bienvenue, %1$s!" | এলিস | "Bienvenue, Alice!" |
জার্মান | "Willkommen, %1$s!" | এলিস | "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);
});
বিশ্রাম
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"]
}
}
}
}
}
}'
আরও জানতে, বার্তা বডিতে প্ল্যাটফর্ম-নির্দিষ্ট ব্লকগুলিতে উপলব্ধ কীগুলির সম্পূর্ণ বিশদ বিবরণের জন্য HTTP v1 রেফারেন্স ডকুমেন্টেশনে AndroidNotification
এবং ApnsConfig
দেখুন। APNS দ্বারা সমর্থিত কীগুলির জন্য, অ্যাপলের পেলোড কী রেফারেন্স দেখুন।