Localization (স্থানীয়করণ, l10n) — মোবাইল অ্যাপ কন্টেন্টকে লক্ষ্য দর্শকের ভাষা, অঞ্চল এবং সাংস্কৃতিক বৈশিষ্ট্যের সাথে খাপ খাওয়ানো। আন্তর্জাতিকীকরণ (i18n) এর বিপরীতে, যেখানে কোড অনুবাদের জন্য প্রস্তুত করা হয়, স্থানীয়করণ হল স্ট্রিং অনুবাদ, তারিখ, সংখ্যা এবং মুদ্রা ফরম্যাটিং, ছবি নির্বাচন এবং স্থানীয় নিয়ম বিবেচনা করার প্রকৃত প্রক্রিয়া। iOS এ, অনুবাদগুলি Localizable.strings (প্রতিটি ভাষার জন্য .lproj ফোল্ডার) এ সংরক্ষিত হয়, Android এ — values-ru, values-de এবং অন্যান্য রিসোর্স ডিরেক্টরিতে। আরও জানুন Android স্থানীয়করণ গাইড এ।
মূল বিষয়
স্থানীয়করণ (সংক্ষেপে l10n — “l” এবং “n” এর মধ্যে 10 অক্ষর) হল একটি নির্দিষ্ট ভাষা এবং অঞ্চলে একটি অ্যাপ্লিকেশনকে খাপ খাওয়ানোর প্রক্রিয়া। যদি i18n স্থাপত্য ভিত্তি হয়, তাহলে l10n হল কন্টেন্ট। i18n অনুবাদ সম্ভব করে, l10n তা বাস্তবায়ন করে। স্থানীয়করণের মধ্যে অন্তর্ভুক্ত: সমস্ত ইন্টারফেস টেক্সট অনুবাদ, তারিখ এবং সংখ্যা ফরম্যাট অভিযোজন, সাংস্কৃতিকভাবে সংবেদনশীল ছবি প্রতিস্থাপন, আইনি টেক্সট (গোপনীয়তা নীতি, EULA) সমন্বয়, অঞ্চলের জন্য পেমেন্ট সিস্টেম কনফিগার করা এবং লক্ষ্য ডিভাইসে পরীক্ষা করা।
ব্যবসায়িক ROI — স্থানীয়করণ সরাসরি রূপান্তরকে প্রভাবিত করে। CSA Research (2023) অনুসারে, 76% ব্যবহারকারী তাদের মাতৃভাষায় অ্যাপে কেনাকাটা করতে পছন্দ করেন এবং 40% কখনও বিদেশী ভাষায় কেনেন না। একটি খুচরা অ্যাপের জন্য জাপানি ভাষায় স্থানীয়করণ গড়ে 150% রূপান্তর বাড়ায় (Google, 2022)। স্থানীয়কৃত অ্যাপগুলি আঞ্চলিক ASO (লক্ষ্য ভাষায় কীওয়ার্ড) এর কারণে আঞ্চলিক App Store এবং Google Play এ 2–3 গুণ বেশি জৈব ইনস্টল পায়।
i18n বনাম l10n — একই প্রক্রিয়ার দুটি দিক। i18n: রিসোর্সে স্ট্রিং নিষ্কাশন, RTL সমর্থন, সংখ্যা ফরম্যাটিং। ডেভেলপারদের দ্বারা একবার করা হয়। l10n: স্ট্রিং অনুবাদ, কন্টেন্ট অভিযোজন, স্থানীয় পরীক্ষা। প্রতিটি লোকেলের জন্য অনুবাদক এবং QA দ্বারা বারবার করা হয়। IT Sectr এ, আমরা প্রতিটি নতুন ভাষার জন্য স্থানীয়করণের জন্য স্প্রিন্ট সময়ের 20–30% বরাদ্দ করি — এর মধ্যে অনুবাদ, পর্যালোচনা, ডিভাইস পরীক্ষা এবং বাগ ফিক্সিং অন্তর্ভুক্ত।
Localizable.strings — iOS এ অনুবাদ সংরক্ষণের জন্য প্রধান ফাইল। প্রতিটি লোকেলের নিজস্ব .lproj ফোল্ডার রয়েছে: en.lproj/Localizable.strings, ru.lproj/Localizable.strings, de.lproj/Localizable.strings। ফরম্যাট: “কী” = “মান”; (সেমিকোলন সহ)। Apple Base Internationalization ব্যবহার করে: Storyboard এবং XIB একবার তৈরি করা হয় (Base.lproj), এবং ইন্টারফেস স্ট্রিং প্রতিটি ভাষার জন্য Localizable.strings এ এক্সপোর্ট করা হয়। এটি প্রতিটি লোকেলের জন্য XIB এর কপি তৈরি করার প্রয়োজনীয়তা দূর করে।
// en.lproj/Localizable.strings
// "settings.title" = "সেটিংস";
// "profile.greeting" = "হ্যালো, %@!";
// "items.count" = "%d আইটেম";
// ru.lproj/Localizable.strings
// "settings.title" = "সেটিংস";
// "profile.greeting" = "হ্যালো, %@!";
// "items.count" = "%d আইটেম";
// কী দ্বারা স্ট্রিং লোড করা
navigationItem.title = NSLocalizedString(
"settings.title",
comment: "সেটিংস স্ক্রিনের শিরোনাম"
)
// প্যারামিটার সহ স্ট্রিং
let name = "আনা"
greetingLabel.text = String.localizedStringWithFormat(
NSLocalizedString("profile.greeting", comment: ""), name
)
// XLIFF ইম্পোর্ট (Xcode → Editor → Import Localizations)
// অনুবাদকের কাজের পর স্বয়ংক্রিয়ভাবে .lproj ফাইল আপডেট করে
Base Internationalization — Apple এর পদ্ধতি যেখানে ইন্টারফেস (Storyboard, XIB) Base.lproj এ একবার তৈরি করা হয়। একটি ভাষা যোগ করার সময়, Xcode Base থেকে XLIFF ফাইলে স্ট্রিং এক্সপোর্ট করে। অনুবাদক XLIFF অনুবাদ করে। আমদানির পরে, Xcode অনুবাদিত স্ট্রিং সহ .lproj তৈরি করে। সুবিধা: প্রতিটি ভাষার জন্য XIB ডুপ্লিকেট করার প্রয়োজন নেই। সীমাবদ্ধতা: RTL ভাষার (আরবি, হিব্রু) জন্য, মিরর করা লেআউট সহ আলাদা XIB প্রয়োজন হতে পারে।
InfoPlist.strings — অ্যাপ নাম (CFBundleDisplayName), ক্যামেরা/মাইক্রোফোন অনুমতি (NSCameraUsageDescription) এবং Info.plist এর অন্যান্য মান স্থানীয়করণের জন্য ফাইল। .lproj এ তৈরি হয়: ru.lproj/InfoPlist.strings। ফরম্যাট: CFBundleDisplayName = “আমার অ্যাপ”; NSCameraUsageDescription = “ছবি তোলার জন্য অ্যাপের ক্যামেরা অ্যাক্সেস প্রয়োজন”;। InfoPlist.strings স্থানীয়করণ ছাড়া, সিস্টেম ডায়ালগ ইংরেজিতে হবে।
Android রিসোর্স স্থানীয়করণের জন্য ডিরেক্টরি নামে কোয়ালিফায়ারের মাধ্যমে সংগঠিত হয়। রুশের জন্য — res/values-ru/, জার্মানের জন্য — res/values-de/, ব্রাজিলিয়ান পর্তুগীজের জন্য — res/values-pt-rBR/। Android 160 টিরও বেশি লোকেল সমর্থন করে। সিস্টেম ডিভাইস ভাষার (Locale.getDefault()) উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে রিসোর্স নির্বাচন করে। যদি সঠিক লোকেল না পাওয়া যায়, তাহলে values/ (বেস লোকেল, সাধারণত en) থেকে রিসোর্স ব্যবহার করা হয়।
// res/values/strings.xml (বেস — ইংরেজি)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>
// res/values-ru/strings.xml (রুশ)
<string name="settings_title">সেটিংস</string>
<string name="greeting">হ্যালো, %s!</string>
// res/values-de/strings.xml (জার্মান)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>
// Kotlin — সব ভাষার জন্য ইউনিফাইড কোড
textView.text = getString(R.string.settings_title)
// প্যারামিটার সহ স্ট্রিং
val greeting = getString(R.string.greeting, userName)
// স্থানীয়কৃত ছবি
// res/drawable-ru/flag.png — রুশ সংস্করণের জন্য পতাকা
// res/drawable/flag.png — ডিফল্ট পতাকা
// লেআউট স্থানীয়করণ (RTL ভাষার জন্য)
// res/layout-ar/activity_main.xml — আরবি সংস্করণ
স্ট্রিং এর বাইরে স্থানীয়করণ — Android ছবি (res/drawable-ru/), রং (res/values-ru/colors.xml), মাত্রা (res/values-ru/dimens.xml), অ্যানিমেশন, মেনু এবং এমনকি সম্পূর্ণ লেআউট স্থানীয়করণের অনুমতি দেয়। বিভিন্ন শব্দ দৈর্ঘ্যের ভাষার জন্য (জার্মান ইংরেজির থেকে 30–40% লম্বা), বর্ধিত বাটন প্রস্থ সহ স্থানীয়কৃত dimens.xml ব্যবহার করুন। বিভিন্ন রঙের প্রতীকবিশিষ্ট অঞ্চলের জন্য (চীনে সাদা শোক), স্থানীয়কৃত colors.xml ব্যবহার করুন।
পরীক্ষা — সেটিংস → সিস্টেম → ভাষার মাধ্যমে ডিভাইসের ভাষা লক্ষ্য ভাষায় পরিবর্তন করুন। পরীক্ষা করুন: সমস্ত স্ট্রিং অনুবাদিত হয়েছে, তারিখগুলি সঠিকভাবে ফরম্যাট হয়েছে, সংখ্যাগুলি সঠিক বিভাজক সহ প্রদর্শিত হচ্ছে, ছবিগুলি অঞ্চলের সাথে মেলে, লম্বা স্ট্রিংয়ে লেআউট ভাঙে না। অটোমেশনের জন্য, LocaleTestRule (Android Testing Library) সহ Espresso ব্যবহার করুন — এটি ম্যানুয়ালি ভাষা পরিবর্তন না করে বিভিন্ন লোকেলে পরীক্ষা চালানোর অনুমতি দেয়।
সাংস্কৃতিক বৈশিষ্ট্য — স্থানীয়করণ শুধুমাত্র স্ট্রিং অনুবাদের মধ্যে সীমাবদ্ধ নয়। রঙের প্রতীকবাদ ভিন্ন হয়: লাল চীনে ভাগ্য, আমেরিকায় বিপদ, দক্ষিণ আফ্রিকায় শোক। সাদা ইউরোপে পবিত্রতা, চীনে শোক। অঙ্গভঙ্গি আইকন: থাম্বস আপ আমেরিকায় ইতিবাচক, মধ্যপ্রাচ্যে অপমান। মানুষের ছবি: আরব দেশগুলিতে, সাঁতারের পোশাকে মহিলাদের ছবি অগ্রহণযোগ্য। ধর্মীয় প্রতীক: ক্রস, ক্রিসেন্ট, ডেভিডের তারা শুধুমাত্র উপযুক্ত প্রসঙ্গে ব্যবহার করা উচিত।
আইনি প্রয়োজনীয়তা — প্রতিটি দেশের ডিজিটাল পণ্য সম্পর্কে নিজস্ব আইন রয়েছে। GDPR (EU) — কুকি এবং ডেটা প্রক্রিয়াকরণের জন্য বাধ্যতামূলক সম্মতি। CCPA (ক্যালিফোর্নিয়া) — ডেটা মুছে ফেলার অধিকার। ব্যক্তিগত ডেটা আইন (রাশিয়া, 152-FZ) — রুশ সার্ভারে ডেটা সংরক্ষণ। LGPD (ব্রাজিল) — GDPR সমতুল্য। পেমেন্ট: চীনে Alipay/WeChat Pay প্রয়োজন, ভারতে — UPI, ব্রাজিলে — Boleto এবং PIX। স্থানীয়করণ চালু করার আগে অঞ্চলের জন্য পেমেন্ট গেটওয়ে কনফিগার করুন।
| দিক | মার্কিন যুক্তরাষ্ট্র | চীন | সংযুক্ত আরব আমিরাত | জার্মানি |
|---|---|---|---|---|
| পেমেন্ট সিস্টেম | Apple Pay, কার্ড | Alipay, WeChat Pay | কার্ড, Apple Pay | PayPal, Giropay |
| ব্র্যান্ড রং | যেকোনো | লাল — ভাগ্য | সবুজ — ইসলাম | কালো/হলুদ |
| সোশ্যাল নেটওয়ার্ক | Instagram, X | WeChat, Douyin | WhatsApp, X | WhatsApp, X |
| তারিখ | MM/dd/yyyy | yyyy/MM/dd | dd/MM/yyyy | dd.MM.yyyy |
| ডেটা আইন | CCPA | PIPL | PDPL | GDPR |
উদাহরণ এবং কন্টেন্ট — উদাহরণগুলি অঞ্চল অনুযায়ী মানিয়ে নিন। জার্মান স্থানীয়করণের জন্য, মেট্রিক সিস্টেম (কেজি, কিমি) ব্যবহার করুন, আমেরিকানের জন্য — ইম্পেরিয়াল (পাউন্ড, মাইল)। ফোন নম্বর, পিন কোড, ঠিকানা — সব ভিন্নভাবে ফরম্যাট হয়। মুদ্রার উদাহরণ: জাপানে ¥1000, আমেরিকায় $9.99, রাশিয়ায় 999 ₽। খাবার, পোশাক এবং অভ্যন্তরের ছবি আঞ্চলিক মান মেনে চলতে হবে। IT Sectr এ, আমরা সাংস্কৃতিক অভিযোজন যাচাই করার জন্য স্থানীয় পরামর্শদাতা নিয়োগের সুপারিশ করি।
স্থানীয়করণ টুল — পেশাদার প্ল্যাটফর্ম প্রক্রিয়াটি স্বয়ংক্রিয় করে: Lokalise, Crowdin, POEditor, Smartling, Phrase। এগুলি রিপোজিটরির সাথে সংহত হয়, স্বয়ংক্রিয়ভাবে নতুন স্ট্রিং আমদানি করে, পরিবর্তন ট্র্যাক করে (ডেল্টা আপডেট — শুধুমাত্র পরিবর্তিত স্ট্রিং অনুবাদিত হয়), অনুবাদ মেমোরি (TM — পূর্বে অনুবাদিত বাক্যাংশের সংরক্ষণ) এবং শব্দকোষ প্রদান করে। পেশাদার অনুবাদের গড় খরচ: $0.08–0.15 প্রতি শব্দ (ভাষা অনুসারে)।
প্রক্রিয়া — (1) ডেভেলপার কোডে i18n কী যোগ করে, রিপোজিটরিতে পুশ করে। (2) CI/CD (GitHub Actions / GitLab CI) স্বয়ংক্রিয়ভাবে নতুন কী স্থানীয়করণ প্ল্যাটফর্মে পাঠায়। (3) অনুবাদকরা বিজ্ঞপ্তি পান, অনুবাদ করেন এবং সংরক্ষণ করেন। (4) অনুবাদিত ফাইলগুলি স্বয়ংক্রিয়ভাবে রিপোজিটরিতে PR তৈরি করে। (5) QA ডিভাইসে স্থানীয়করণ পরীক্ষা করে। (6) রিলিজ। একটি লোকেলের জন্য চক্র: 2–5 কার্যদিবস (ভলিউম অনুসারে)। 10 লোকেলের জন্য: অনুবাদকদের সমান্তরাল কাজ সহ 5–15 দিন।
মেশিন অনুবাদ + মানব পর্যালোচনা — আধুনিক মান। নিউরাল নেটওয়ার্ক অনুবাদ (DeepL, Google Translate, GPT-4) জনপ্রিয় ভাষা জোড়ার জন্য 80–90% গুণমান প্রদান করে। মানব অনুবাদক পরীক্ষা করে: পরিভাষা, প্রসঙ্গ (শব্দের বিভিন্ন স্ক্রিনে বিভিন্ন অর্থ হতে পারে), সাংস্কৃতিক অভিযোজন। IT Sectr এ, আমরা একটি হাইব্রিড পদ্ধতি ব্যবহার করি: ML অনুবাদ + স্থানীয় ভাষাভাষী পর্যালোচনা। গুরুত্বপূর্ণ স্ট্রিং (আইনি, পেমেন্ট) এর জন্য — শুধুমাত্র পেশাদার অনুবাদ। সঞ্চয়: গুণমান বজায় রেখে 60% পর্যন্ত খরচ সাশ্রয়।
সচরাচর জিজ্ঞাসিত প্রশ্ন
আন্তর্জাতিকীকরণ — অনুবাদের জন্য কোড প্রস্তুত করা (স্ট্রিং নিষ্কাশন, RTL, ফরম্যাটিং)। স্থানীয়করণ — প্রকৃত অনুবাদ এবং সাংস্কৃতিক অভিযোজন। i18n ডেভেলপার একবার করে, l10n — অনুবাদকরা প্রতিটি ভাষার জন্য। i18n ছাড়া l10n — অ্যাপ অনুবাদের জন্য প্রস্তুত কিন্তু অনুবাদিত নয়। l10n ছাড়া i18n — প্রতিটি ভাষার জন্য কোড পুনরায় লিখতে হবে।
.lproj ফোল্ডারের ভিতরে Localizable.strings ফাইলে। প্রতিটি ভাষার জন্য: en.lproj (ইংরেজি), ru.lproj (রুশ), de.lproj (জার্মান)। ফরম্যাট: “কী” = “মান”;। বহুবচনের জন্য — Localizable.stringsdict। অ্যাপ সেটিংস (CFBundleDisplayName) — InfoPlist.strings এ। Xcode Base Internationalization এর মাধ্যমে .lproj পরিচালনা করে।
values-ru — রুশ ভাষার জন্য Android রিসোর্স ডিরেক্টরি। এতে অনুবাদ সহ strings.xml থাকে। অন্যান্য ভাষার জন্যও একইভাবে: values-de (জার্মান), values-fr (ফরাসি)। Android সিস্টেম ভাষার উপর ভিত্তি করে রিসোর্স নির্বাচন করে। যদি values-ru না পাওয়া যায়, তাহলে এটি values/ (বেস ভাষা, সাধারণত ইংরেজি) ব্যবহার করে।
সর্বদা Locale API ব্যবহার করুন। iOS: DateFormatter.locale = Locale(identifier: locale)। Android: DateFormat.getDateInstance(DateFormat.SHORT, locale)। রাশিয়া: 31.12.2024। মার্কিন যুক্তরাষ্ট্র: 12/31/2024। জাপান: 2024/12/31। কখনও নির্দিষ্ট ফরম্যাট সেট করবেন না — প্রতিটি দেশের নিজস্ব মান রয়েছে। তারিখ ইনপুটের জন্য, UIDatePicker / DatePicker ব্যবহার করুন।
বৈশ্বিক পৌঁছানোর জন্য, 10–15টি ভাষা যথেষ্ট: ইংরেজি, স্প্যানিশ, ফরাসি, জার্মান, জাপানি, চীনা, কোরিয়ান, পর্তুগীজ, রুশ, ইতালিয়ান, আরবি। আঞ্চলিকের জন্য — 1–2টি ভাষা। প্রতিটি অতিরিক্ত লোকেল সংশ্লিষ্ট অঞ্চলে জৈব ইনস্টল 5–15% বাড়ায়। App Store-এ অন্তত ইংরেজি স্থানীয়করণ প্রয়োজন।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন