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

নোড.জেএস
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 দ্বারা সমর্থিত কীগুলির জন্য, Apple এর Payload Key Reference দেখুন।