Web2Py তে Multilingual (বহুভাষিক) সাপোর্ট কনফিগার করা খুবই সহজ। Web2Py এর নিজস্ব একটি i18n (Internationalization) সিস্টেম রয়েছে, যা আপনাকে আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় কনফিগার এবং লোকালাইজ (localize) করতে সহায়তা করে। এই ফিচারের মাধ্যমে আপনি একই অ্যাপ্লিকেশনে একাধিক ভাষায় কনটেন্ট প্রদর্শন করতে পারবেন।
এখানে Web2Py তে Multilingual সাপোর্ট কনফিগার করার প্রক্রিয়া এবং বহু ভাষা সমর্থন কিভাবে যুক্ত করবেন তা বিস্তারিতভাবে আলোচনা করা হলো।
১. Multilingual সাপোর্ট সক্রিয় করা
Web2Py তে বহু ভাষার সাপোর্ট যুক্ত করার জন্য প্রথমে i18n ফিচারটি সক্রিয় করতে হবে। এই ফিচারটি আপনাকে ভাষার ফাইল তৈরি এবং সেগুলোর মধ্যে টেক্সট অনুবাদ করতে সহায়তা করবে।
১.১ i18n সক্রিয় করা
Web2Py তে i18n সক্রিয় করতে আপনাকে request.lang ভেরিয়েবল ব্যবহার করতে হবে, যা ব্যবহারকারীর ভাষা নির্ধারণে সাহায্য করবে। এটি আপনার অ্যাপ্লিকেশনের ভাষা পরিবর্তন করার জন্য উপযুক্ত।
আপনি models/db.py ফাইলের মধ্যে T() ফাংশন ব্যবহার করে সমস্ত টেক্সটকে ট্রান্সলেট করতে পারবেন।
# models/db.py
response.generic_patterns = ['*'] # সমস্ত ভাষার জন্য একসাথে ফাইল ব্যবহার করতে
T.force(request.lang) # ভাষা সিলেক্ট করা
১.২ languages কনফিগার করা
আপনার অ্যাপ্লিকেশনে কোন ভাষাগুলি সাপোর্ট করবেন তা কনফিগার করতে হবে। Web2Py তে ডিফল্ট ভাষা ইংরেজি (en) এবং অন্যান্য ভাষা কনফিগার করা যাবে।
এটি routes.py ফাইলে ভাষার তালিকা কনফিগার করে করা যেতে পারে:
# routes.py
languages = ['en', 'bn', 'fr', 'es'] # ভাষার তালিকা
এখানে, ইংরেজি, বাংলা, ফরাসি এবং স্প্যানিশ ভাষা সাপোর্ট করা হচ্ছে।
২. ভাষার ফাইল তৈরি এবং অনুবাদ করা
Web2Py তে ভাষার জন্য আলাদা ফাইল তৈরি করতে হয়, যেখানে আপনি নির্দিষ্ট ভাষার জন্য টেক্সট অনুবাদ করবেন। এই ফাইলগুলির মধ্যে T() ফাংশন ব্যবহার করে অনুবাদ করা টেক্সট সংরক্ষিত থাকে।
২.১ ভাষার ফাইল তৈরি করা
Web2Py তে ভাষার জন্য ফাইলগুলো languages ফোল্ডারে তৈরি করা হয়। প্রতিটি ভাষার জন্য আলাদা .py ফাইল থাকবে।
ধরা যাক, আপনি বাংলা ভাষার জন্য একটি ফাইল তৈরি করতে চান, তাহলে languages/bn.py ফাইলে বাংলা অনুবাদ সংরক্ষণ করতে হবে।
languages/bn.py ফাইলের মধ্যে টেক্সট অনুবাদ করা হবে:
# languages/bn.py
T = {
'Welcome': 'স্বাগতম',
'Hello, World!': 'হ্যালো, বিশ্ব!',
'Login': 'লগইন',
'Register': 'রেজিস্টার',
}
এখানে T ডিকশনারি ফর্ম্যাটে বাংলা অনুবাদ সংরক্ষিত হচ্ছে।
২.২ অনুবাদ করা টেক্সট ব্যবহার করা
এখন, আপনি T() ফাংশন ব্যবহার করে কন্টেন্ট অনুবাদ করতে পারেন। উদাহরণস্বরূপ, একটি পেজে "Welcome" টেক্সটকে অনুবাদ করা যাবে:
# controllers/default.py
def index():
return dict(message=T('Welcome'))
এখানে T('Welcome') ব্যবহার করা হয়েছে, যা ঐ ভাষার ফাইল থেকে অনুবাদ করে প্রদর্শন করবে।
৩. ভাষা পরিবর্তন করা
Web2Py তে ভাষা পরিবর্তন করার জন্য request.lang ব্যবহার করা হয়। আপনি URL প্যারামিটার, কুকি অথবা ইউজারের ব্রাউজারের ভাষা অনুযায়ী ভাষা পরিবর্তন করতে পারেন।
৩.১ URL প্যারামিটার দ্বারা ভাষা পরিবর্তন
Web2Py তে URL প্যারামিটার ব্যবহার করে ভাষা পরিবর্তন করা যায়। উদাহরণস্বরূপ:
http://127.0.0.1:8000/app_name/default/index?lang=bn
এই URL রিকোয়েস্টে lang=bn প্যারামিটার পাঠানো হয়েছে, যার মাধ্যমে ভাষা বাংলা করা হবে।
আপনি request.lang দিয়ে ভাষা সিলেক্ট করতে পারেন:
# controllers/default.py
def index():
if request.vars.lang:
response.lang = request.vars.lang
return dict(message=T('Welcome'))
এখানে, lang প্যারামিটার ব্যবহার করে ভাষা সিলেক্ট করা হচ্ছে।
৩.২ কুকি দ্বারা ভাষা পরিবর্তন
আপনি কুকির মাধ্যমে ইউজারের ভাষা সেভ করে রাখতে পারেন, যাতে পরবর্তী রিকোয়েস্টেও সেই ভাষা ব্যবহার করা হয়।
# controllers/default.py
def set_language():
if request.vars.lang:
response.cookies['lang'] = request.vars.lang
redirect(URL('index'))
এখানে ইউজারের ভাষা কুকিতে সংরক্ষণ করা হয়েছে, এবং পরবর্তী রিকোয়েস্টে সেই ভাষা ব্যবহার হবে।
৪. ফ্রন্টএন্ডে ভাষা পরিবর্তন
এখন, আপনি ফ্রন্টএন্ডে একটি ড্রপডাউন বা অন্য কোনও কন্ট্রোল ব্যবহার করে ইউজারের কাছে ভাষা পরিবর্তনের অপশন প্রদান করতে পারেন।
<!-- language_selector.html -->
<select onchange="location = this.value;">
<option value="{{=URL('default', 'index', vars=dict(lang='en'))}}">English</option>
<option value="{{=URL('default', 'index', vars=dict(lang='bn'))}}">বাংলা</option>
<option value="{{=URL('default', 'index', vars=dict(lang='fr'))}}">Français</option>
</select>
এখানে, ড্রপডাউন মেনু ব্যবহারকারীর ভাষা পরিবর্তন করার অপশন দেয় এবং সেই অনুযায়ী পেজ রিলোড করে ভাষা পরিবর্তন করে।
৫. ভাষার মধ্যে ফাইল ও কনটেন্ট পরিবর্তন
Web2Py তে আপনার অ্যাপ্লিকেশনের Static files এবং Database models সহ সমস্ত কনটেন্টও বিভিন্ন ভাষায় অনুবাদ করা সম্ভব। যেমন:
- ইমেজ, টেক্সট কন্টেন্ট: আপনি বিভিন্ন ভাষায় ইমেজ বা টেক্সট কন্টেন্ট তৈরি করতে পারেন।
- ডাটাবেস কনটেন্ট: ডাটাবেসে বিভিন্ন ভাষার কনটেন্ট সংরক্ষণ করা এবং প্রদর্শন করা সম্ভব।
সারাংশ
Web2Py তে Multilingual সাপোর্ট কনফিগার করা অত্যন্ত সহজ এবং কার্যকর। i18n সিস্টেম ব্যবহার করে আপনি একাধিক ভাষা যোগ করতে পারেন এবং ব্যবহারকারীর পছন্দ অনুযায়ী ভাষা পরিবর্তন করতে পারবেন। T() ফাংশন দিয়ে আপনি সমস্ত টেক্সট অনুবাদ করে ওয়েব পেজে প্রদর্শন করতে পারবেন। URL প্যারামিটার বা কুকির মাধ্যমে ভাষা পরিবর্তন করা যায় এবং ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব।