অনুবাদ সম্পাদক আপনার সমস্ত ডিফল্ট এবং অনূদিত স্ট্রিং রিসোর্সগুলির একটি সমন্বিত ও সম্পাদনাযোগ্য দৃশ্য প্রদান করে।
আপনার অ্যাপকে বিভিন্ন ভাষার জন্য অনুবাদ করার প্রাথমিক ধারণা পেতে, ‘বিভিন্ন ভাষা ও সংস্কৃতি সমর্থন করুন’ পড়ুন।

চিত্র ১. অনুবাদ সম্পাদক, যেখানে অনুবাদের আগে অ্যাপের লেখা দেখানো হচ্ছে।
স্ট্রিং রিসোর্স
একটি প্রোজেক্টের স্ট্রিং রিসোর্সগুলো strings.xml ফাইলে থাকে। আপনার প্রোজেক্টে একটি ডিফল্ট strings.xml ফাইল থাকে, যাতে আপনার অ্যাপের ডিফল্ট ভাষার স্ট্রিং রিসোর্সগুলো থাকে; এই ভাষাটিই আপনার অ্যাপের অধিকাংশ ব্যবহারকারী ব্যবহার করবেন বলে আপনি আশা করেন। এছাড়াও, আপনি অনুবাদ করা strings.xml ফাইল রাখতে পারেন, যেগুলোতে আপনার অ্যাপে অন্তর্ভুক্ত করতে চান এমন অন্যান্য ভাষার স্ট্রিং রিসোর্স থাকবে।
আপনার ডিফল্ট strings.xml ফাইলটি তৈরি হয়ে গেলে, আপনি নিজে অনুবাদগুলো যোগ করতে পারেন, অথবা কোনো পেশাদার পরিষেবা সংস্থাকে দিয়ে অনুবাদ করিয়ে নিতে পারেন। উভয় ক্ষেত্রেই, স্থানীয়করণযোগ্য টেক্সট পরিচালনা ও পরীক্ষা করার জন্য আপনার অ্যান্ড্রয়েড স্টুডিও-র ফিচারগুলোর সুবিধা নেওয়া উচিত। পেশাদার অনুবাদ পরিষেবা সম্পর্কে তথ্যের জন্য, অনুবাদ পরিষেবা (Translation services) দেখুন।
অনুবাদ সম্পাদক খুলুন
অ্যান্ড্রয়েড স্টুডিওতে আপনি নিম্নলিখিত স্থানগুলো থেকে ট্রান্সলেশন এডিটর অ্যাক্সেস করতে পারবেন।
অ্যান্ড্রয়েড ভিউ থেকে খুলুন
- বামদিকের Project > Android প্যানেলে, ModuleName > res > values নির্বাচন করুন।
- strings.xml ফাইলটিতে রাইট-ক্লিক করুন এবং Open Translations Editor নির্বাচন করুন।
অনুবাদ সম্পাদক
strings.xmlফাইল থেকে কী এবং ভ্যালু জোড়াগুলো প্রদর্শন করে।দ্রষ্টব্য: যখন আপনি
strings.xmlফাইলগুলো অনুবাদ করেন, তখন আপনার প্রোজেক্টে একাধিক সংশ্লিষ্ট values ফোল্ডার থাকে, যেগুলোর শেষে ভাষা নির্দেশক সাফিক্স (suffix) যুক্ত থাকে, যেমন স্প্যানিশের জন্য values-es । আপনার ডিফল্টstrings.xmlফাইলটি সবসময় values (কোনো সাফিক্স ছাড়া) ফোল্ডারে থাকে।
চিত্র ১-এ একটি সাধারণ অ্যাপের অনুবাদ সম্পাদকে অনুবাদের কাজ শুরু হওয়ার আগের ডিফল্ট টেক্সট (এই ক্ষেত্রে, ইংরেজি) দেখানো হয়েছে। অনূদিত strings.xml ফাইলগুলোর বিষয়বস্তু ‘Untranslatable’ কলামের ডানদিকে প্রদর্শিত হবে এবং চিত্র ২-এ দেখানো অনুযায়ী প্রতিটি ভাষার জন্য একটি করে কলাম থাকবে।
strings.xml এর ভেতর থেকে খুলুন
আপনি আপনার যেকোনো strings.xml ফাইলের ভেতর থেকে অনুবাদ সম্পাদক (Translations Editor) অ্যাক্সেস করতে পারবেন।
- বামদিকের Project > Android প্যানেলে, ModuleName > res > values নির্বাচন করুন।
- সম্পাদনার জন্য strings.xml ফাইলটিতে ডাবল-ক্লিক করে এটি খুলুন।
- strings.xml ফাইলে, উপরের ডান কোণায় থাকা ' Open editor' লিঙ্কে ক্লিক করুন।
অনুবাদ-অযোগ্য সারিগুলি কনফিগার করুন
অনুবাদ সম্পাদক- এ, আপনি ‘অনুবাদ-অযোগ্য’ নির্বাচন করে বোঝাতে পারেন যে আপনি এই সারির লেখাটির অনুবাদ চান না। যে লেখাগুলোর অনুবাদ আপনি চান না, সেগুলো হতে পারে পণ্য-নির্দিষ্ট লেখা, যেমন বাণিজ্যিক নাম ও ট্রেডমার্ক, অথবা এমন প্রযুক্তিগত পরিভাষা যার কোনো অনুবাদ নেই।
আপনি যখন ‘Untranslatable’ নির্বাচন করেন, তখন ডিফল্ট strings.xml ফাইলের সংশ্লিষ্ট লাইনে translatable="false" যুক্ত হয়ে যায়। নিচের উদাহরণে, প্রথম লাইনের EasyApp অনুবাদ করা হয়নি, কারণ এটি পণ্যের নাম।
<resources>
<string name="app_name" translatable="false">EasyApp</string>
<string name="action_settings">Settings</string>
<string name="easy_app">I am a Simple App!</string>
<string name="next_page">Next Page</string>
<string name="second_page_message">I am the Second Page!</string>
<string name="title_activity_second">SecondActivity</string>
</resources>
ভাষা যোগ এবং মুছে ফেলুন
অনুবাদ সম্পাদক BCP 47 সমর্থন করে এবং নির্দিষ্ট স্থানীয়করণের জন্য লোকেল ও অঞ্চল (দেশ) কোডগুলিকে একটি একক নির্বাচনের মধ্যে একত্রিত করে। একটি লোকেল শুধু ভাষাই নয়, আরও অনেক কিছু নির্ধারণ করে। একটি লোকেলে তারিখ ও সময়, মুদ্রা এবং দশমিকের মতো বিষয়গুলির জন্য দেশ-নির্ভর বিন্যাস অন্তর্ভুক্ত থাকে।
ভাষা যোগ করতে, নিম্নলিখিতগুলি করুন:
- অনুবাদ সম্পাদকে , গ্লোব আইকনটিতে ক্লিক করুন।
. - ড্রপ-ডাউন তালিকা থেকে আপনি যে ভাষাটি যোগ করতে চান তা নির্বাচন করুন। নতুন ভাষাটি ট্রান্সলেশনস এডিটর -এ প্রদর্শিত হবে এবং প্রজেক্টে `strings.xml` ফাইলসহ একটি ` values-*` ফোল্ডার যুক্ত হবে। উদাহরণস্বরূপ, স্প্যানিশ ভাষার জন্য `values-es` ।
ভাষা মুছে ফেলার জন্য, নিম্নলিখিতগুলি করুন:
আপনি ট্রান্সলেশন এডিটর- এ কলামের প্রতিটি ভ্যালু ডিলিট করে একটি ভাষা মুছে ফেলতে পারেন (দেখুন: টেক্সট সম্পাদনা, যোগ এবং ডিলিট ), অথবা আপনি নিম্নলিখিত উপায়ে সেই ভাষার প্রজেক্ট ফোল্ডারটি ডিলিট করতে পারেন:
- বামদিকের Project > Android প্যানেলে, ModuleName > res নির্বাচন করুন।
- যে ভাষাটি মুছতে চান, তার values-* ফোল্ডারটিতে রাইট-ক্লিক করুন। উদাহরণস্বরূপ, হিন্দির জন্য values-hi ।
- তালিকা থেকে ফোল্ডার এবং এর strings.xml ফাইলটি মুছে ফেলার জন্য ডিলিট (Delete) নির্বাচন করুন।
টেক্সট সম্পাদনা, যোগ এবং মুছে ফেলুন
আপনি সরাসরি strings.xml ফাইলে অথবা ট্রান্সলেশনস এডিটর (Translations Editor) -এর মাধ্যমে টেক্সট সেটিংস পরিবর্তন করতে পারেন। এই অংশে ট্রান্সলেশনস এডিটর পদ্ধতিটি বর্ণনা করা হয়েছে। ট্রান্সলেশনস এডিটর- এ, আপনি লিস্ট ভিউ-এর মাধ্যমে অথবা এর নিচের দিকে থাকা ট্রান্সলেশন ফিল্ডের মাধ্যমে টেক্সট সম্পাদনা, যোগ বা মুছে ফেলতে পারেন।

চিত্র ২। উপরে তালিকা দৃশ্য এবং নীচে অনুবাদ ক্ষেত্র।
তালিকা দৃশ্য
লেখা সম্পাদনা বা যোগ করতে, নিম্নলিখিতগুলি করুন:
- যে সেলের লেখা সম্পাদনা বা যোগ করতে চান, সেটিতে ডাবল-ক্লিক করুন।
- কিবোর্ড থেকে কপি-পেস্ট করুন, অথবা আপনার কিবোর্ডে যদি ডায়াক্রিটিক চিহ্ন সমর্থনের সুবিধা থাকে, তবে সরাসরি লিস্ট ভিউতে টাইপ করুন।
- ট্যাব চাপুন অথবা কার্সারটি ফিল্ডের বাইরে নিয়ে যান।
টেক্সট মুছে ফেলার জন্য, নিম্নলিখিতগুলি করুন:
- যে সেলটি মুছতে চান, সেটিতে ডাবল-ক্লিক করুন।
- তালিকা দৃশ্যে, লেখাটি নির্বাচন করুন এবং ডিলিট চাপুন।
- ট্যাব চাপুন অথবা কার্সারটি ফিল্ডের বাইরে নিয়ে যান।
অনুবাদ ক্ষেত্র
লেখা সম্পাদনা বা যোগ করতে, নিম্নলিখিতগুলি করুন:
- তালিকা দৃশ্যে, যে সেলে আপনি লেখা সম্পাদনা বা যোগ করতে চান, সেটিতে একবার ক্লিক করুন।
- অনুবাদ ক্ষেত্রে, কিবোর্ড থেকে কপি-পেস্ট করুন, অথবা, যদি আপনার কিবোর্ডে ডায়াক্রিটিক চিহ্ন সমর্থনের সুবিধা থাকে, তবে সরাসরি অনুবাদ ক্ষেত্রে টাইপ করুন।
- ট্যাব চাপুন অথবা কার্সারটি ফিল্ডের বাইরে নিয়ে যান।
টেক্সট মুছে ফেলার জন্য, নিম্নলিখিতগুলি করুন:
- যে সেলটি মুছতে চান, সেটিতে একবার ক্লিক করুন।
- অনুবাদ ক্ষেত্রে, লেখাটি নির্বাচন করুন এবং ডিলিট চাপুন।
কী যোগ এবং মুছে ফেলুন
ট্রান্সলেশনস এডিটরে, ' Key' কলামটি আপনার strings.xml ফাইলের প্রতিটি ডেটা আইটেমের অনন্য শনাক্তকারীগুলো তালিকাভুক্ত করে। আপনি ট্রান্সলেশনস এডিটরের মাধ্যমে কী যোগ এবং মুছে ফেলতে পারেন। যখন আপনি একটি কী মুছে ফেলেন, তখন ট্রান্সলেশনস এডিটর সেটি এবং এর সাথে যুক্ত সমস্ত অনুবাদ মুছে দেয়। ট্রান্সলেশনস এডিটর একটি কী মুছে ফেলার জন্য 'Safe Delete' রিফ্যাক্টরিং ব্যবহার করে, ফলে আপনি জানতে পারেন যে কী-এর টেক্সটটি অন্য কোথাও ব্যবহৃত হয়েছে কিনা এবং কী-টি মুছে ফেলার আগে প্রয়োজনীয় পরিবর্তন করার সুযোগ পান। 'Safe Delete' রিফ্যাক্টরিং নিশ্চিত করে যে কী-টি মুছে ফেলার পরেও আপনার কোড কম্পাইল হবে।
একটি কী যোগ করতে, নিম্নলিখিতগুলি করুন:
- অনুবাদ সম্পাদকে , কী যোগ করুন-এ ক্লিক করুন।
. - ডায়ালগ বক্সে একটি কী-এর নাম, ডিফল্ট মান এবং ডিফল্ট strings.xml ফাইলের অবস্থান লিখুন।

চিত্র ৩। একটি চাবি যোগ করুন।
একটি কী মুছে ফেলার জন্য, নিম্নলিখিতগুলি করুন:
- অনুবাদ সম্পাদকে, যে কী-টি আপনি মুছতে চান সেটি নির্বাচন করুন।
- কীগুলি সরান ক্লিক করুন
. - ডিলিট ডায়ালগ বক্সে, আপনি নিরাপদভাবে ডিলিট করতে চান কিনা এবং কমেন্ট ও স্ট্রিং-এর মধ্যে অনুসন্ধান করতে চান কিনা তা স্থির করুন, এবং ওকে (OK ) ক্লিক করুন।

চিত্র ৪. ডিলিট ডায়ালগ
যদি মুছে ফেলা কী-টির কোনো রেফারেন্স (ব্যবহার) না থাকে, অথবা যদি সমস্ত রেফারেন্স নিরাপদে সংকুচিত করা যায়, তাহলে কী-টি মুছে ফেলা হয়। অন্যথায়, ট্রান্সলেশন এডিটর ‘ইউসেজেস ডিটেক্টেড’ ডায়ালগটি প্রদর্শন করে এবং সনাক্ত করা সমস্যাগুলো সম্পর্কে তথ্য দেয়।
চিত্র ৫. ডিলিট ডায়ালগ
- কী কী মুছে ফেলা হবে তা পর্যালোচনা করতে ‘View Usages’ নির্বাচন করুন। ‘Find Safe Delete Conflicts’ ডায়ালগটি সেই সমস্ত ব্যবহার দেখায় যা মুছে ফেলা নিরাপদ নয়, যাতে আপনি আপনার সংশ্লিষ্ট কোড সম্পাদনা করতে পারেন।

চিত্র ৬. অনিরাপদ ব্যবহার
- কোনো ব্যবহারের উপর রাইট-ক্লিক করলে কনটেক্সট মেনু প্রদর্শিত হবে এবং প্রয়োজনীয় পরিবর্তনগুলো করার জন্য 'Jump to Source' নির্বাচন করুন।
- 'ফাইন্ড সেফ ডিলিট কনফ্লিক্টস' প্যানেলে, 'রিরান সেফ ডিলিট' নির্বাচন করুন যাতে নিশ্চিত হওয়া যায় যে মনোযোগের প্রয়োজন এমন অন্য কোনো ব্যবহার নেই।
- ব্যবহারগুলো পরিমার্জিত হয়ে গেলে, কী-টি মুছে ফেলার জন্য 'Do Refactor'-এ ক্লিক করুন।
ভুল সংশোধন করুন
চিত্র ৭-এ অনুবাদ সম্পাদক (Translations Editor) দ্বারা ইংরেজি, ফরাসি এবং স্প্যানিশ strings.xml ফাইলগুলোর বিষয়বস্তু প্রদর্শন করা হচ্ছে। লাল রঙের লেখাগুলো ভুলযুক্ত লাইন নির্দেশ করে।

চিত্র ৭। লাল লেখা একটি ত্রুটিপূর্ণ অবস্থা নির্দেশ করে যা আপনাকে অবশ্যই ঠিক করতে হবে।
কোনো ভুল সংশোধন করতে, সমস্যাটির ব্যাখ্যা এবং তার সমাধান দেখার জন্য লাল লেখাটির উপর মাউস রাখুন।
আপনি যখন অনুবাদ সম্পাদকে (Translations Editor) কোনো পরিবর্তন করেন, তখন অন্তর্নিহিত strings.xml ফাইলগুলো আপনার পরিবর্তন অনুযায়ী আপডেট হয়। আপনি যখন একটি strings.xml ফাইলে পরিবর্তন করেন, তখন অনুবাদ সম্পাদকের (Translations Editor) সংশ্লিষ্ট কলামটি আপনার পরিবর্তন অনুযায়ী আপডেট হয়।
অনুবাদ সম্পাদকের সংশোধনের উদাহরণ:
- চিত্র ৭-এ দেখা যাচ্ছে যে, `app_name` সারিটিতে ‘Untranslatable’ বিকল্পটি চিহ্নিত করা আছে, কিন্তু একটি স্প্যানিশ অনুবাদও দেওয়া আছে। ত্রুটিটি সংশোধন করতে স্প্যানিশ অনুবাদটি মুছে ফেলুন।
- চিত্র ৭ দেখাচ্ছে যে ` next_page` সারিতে একটি ফরাসি অনুবাদ নেই। ত্রুটিটি সংশোধন করতে আপনার কিবোর্ড ব্যবহার করে `Page Suivante` লেখাটি সেলটিতে কপি করুন। কিবোর্ড কপি-পেস্ট করলে যেকোনো ডায়াক্রিটিক চিহ্নসহ লেখাটি সেলটিতে কপি হয়ে যায়।
স্থানীয়করণযোগ্য পাঠ্য পরিচালনা ও পরীক্ষা করুন
অ্যান্ড্রয়েড প্ল্যাটফর্ম এবং অ্যান্ড্রয়েড স্টুডিও আপনার স্থানীয়করণযোগ্য অ্যাপের টেক্সট পরিচালনা ও পরীক্ষা করার জন্য বেশ কিছু ফিচার প্রদান করে। এই ফিচারগুলোতে এমন অপশন রয়েছে যা আপনাকে আরবি বা হিব্রুর মতো ডান থেকে বামে লেখা (RTL) স্ক্রিপ্টের সমস্যাগুলো চিহ্নিত করতে সাহায্য করে। আপনার স্থানীয়করণযোগ্য টেক্সট পরীক্ষা করার মাধ্যমে, পরবর্তীতে অনুবাদের জন্য পাঠানোর উদ্দেশ্যে আপনার মেসেজগুলো সোর্স রিপোজিটরিতে কমিট করার আগেই আপনি UI টেক্সট এবং এর লেআউটে প্রয়োজনীয় পরিবর্তন আনতে পারেন।
আরটিএল ভাষা সমর্থন করে
জেটপ্যাক কম্পোজ স্বাভাবিকভাবেই ডান থেকে বাম (RTL) লেআউট পরিচালনা করে। এর লেআউট মডিফায়ার এবং এপিআইগুলো left ও right মতো চূড়ান্ত দিকের পরিবর্তে start ও end মতো দিকনির্দেশক ধারণার ওপর ভিত্তি করে তৈরি। যখন সিস্টেমের ভাষা কোনো RTL লোকেলে পরিবর্তিত হয়, কম্পোজ স্বয়ংক্রিয়ভাবে আপনার জন্য এই লেআউটগুলো প্রতিফলিত করে।
আপনার অ্যাপ যাতে আরটিএল লোকেল শনাক্ত করতে পারে এবং এই মিররিংটি চালু করতে পারে, তার জন্য আপনাকে অবশ্যই আপনার অ্যাপের ম্যানিফেস্ট ফাইল ব্যবহার করে এটি বেছে নিতে হবে।
আরটিএল সমর্থন সক্রিয় করতে, নিম্নলিখিতগুলি করুন:
- আপনার
AndroidManifest.xmlফাইলটি খুলুন। -
<application>এলিমেন্টেandroid:supportsRtl="true"অ্যাট্রিবিউটটি যোগ করুন:
<manifest ... >
<application
...
android:supportsRtl="true">
</application>
</manifest>
Compose কীভাবে টেক্সট লেআউট, মিররিং এবং কাস্টম RTL কনফিগারেশন পরিচালনা করে সে সম্পর্কে আরও জানতে, “RTL ভাষা নিয়ে কাজ করা” দেখুন।
ম্যানুয়ালি টেক্সটের দিক নির্ধারণ করুন
জেটপ্যাক কম্পোজে, লেআউট বা টেক্সটের দিক নির্দিষ্ট করার জন্য কোনো ভিজ্যুয়াল প্রোপার্টিজ উইন্ডো ব্যবহার করতে হয় না। কম্পোজ সিস্টেম লোকেলের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে আরটিএল (RTL) মিররিং পরিচালনা করে।
তবে, যদি আপনাকে কোনো নির্দিষ্ট টেক্সট এলিমেন্টের দিক ম্যানুয়ালি পরিবর্তন করতে হয় (উদাহরণস্বরূপ, একটি RTL লেআউটে LTR স্ট্রিং প্রদর্শন করা), তাহলে আপনি আপনার TextStyle এ একটি TextDirection অবজেক্ট পাস করতে পারেন।
সমর্থিত মানগুলির মধ্যে রয়েছে:
-
TextDirection.Content: (Default): প্রথম শক্তিশালী দিকনির্দেশক অক্ষর থেকে দিক অনুমান করে। -
TextDirection.Ltr: বাম থেকে ডানে দিক নির্ধারণ করে। -
TextDirection.Rtl: ডান থেকে বাম দিকে দিক পরিবর্তনে বাধ্য করে।
Compose-এ টেক্সট স্টাইল করা এবং ম্যানুয়াল টেক্সট ডিরেকশন কনফিগার করার বিষয়ে আরও জানতে, Style text দেখুন।
আপনার অ্যাপে স্থানীয় স্ট্রিং ব্যবহার করুন
একবার আপনি ট্রান্সলেশন এডিটর ব্যবহার করে আপনার স্ট্রিংগুলো যোগ ও অনুবাদ করে ফেললে, আপনার res/values/strings.xml ফাইলগুলো স্বয়ংক্রিয়ভাবে আপডেট হয়ে যাবে এবং আপনি সরাসরি আপনার UI-তে স্থানীয়কৃত রিসোর্সগুলো ব্যবহার করতে পারবেন।
কীভাবে স্থানীয় ভাষার টেক্সট প্রদর্শন করতে হয়, স্বাভাবিকভাবে আরটিএল (RTL) পরিচালনা করতে হয়, এবং বিভিন্ন লোকেল ও সিউডোলোকেল পরীক্ষা করার জন্য @Preview ব্যবহার করতে হয়, তা জানতে Compose-এর Resources-এর Strings বিভাগটি দেখুন।
ছদ্মস্থানীয়
সিউডোলোকেল হলো একটি অনুকৃত লোকেল, যা এমন সব ভাষার বৈশিষ্ট্য ধারণ করার জন্য ডিজাইন করা হয়েছে, যেগুলো কোনো অ্যাপ অনুবাদ করার সময় UI, লেআউট, RTL (ডান-টু-লাইন) এবং অন্যান্য অনুবাদ-সংক্রান্ত সমস্যা তৈরি করে। সিউডোলোকেল সমস্ত স্থানীয়করণযোগ্য বার্তার জন্য তাৎক্ষণিক এবং স্বয়ংক্রিয় অনুবাদ প্রদান করে, যা ইংরেজিতে পাঠযোগ্য। এর ফলে আপনি আপনার সোর্স কোডে অনুবাদ-অযোগ্য বার্তাগুলো শনাক্ত করতে পারেন।
সিউডোলোকেল কীভাবে ব্যবহার করতে হয় সে সম্পর্কে জানতে, “সিউডোলোকেল দিয়ে আপনার অ্যাপ পরীক্ষা করুন” দেখুন।