Internationalization (i18n) এবং Localization (l10n)

টার্বোগিয়ার্স (TurboGears) - Web Development

236

TurboGears এবং Internationalization (i18n) ও Localization (l10n)

TurboGears হল একটি সম্পূর্ণ স্ট্যাক ওয়েব ফ্রেমওয়ার্ক যা Python প্রোগ্রামিং ভাষায় তৈরি হয়েছে এবং এটি দ্রুত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ডিজাইন করা হয়েছে। TurboGears এর মাধ্যমে আপনি দ্রুত এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন, এবং এটি উন্নত ফিচার সরবরাহ করে যেমন ORM, templating engine, এবং RESTful API সুবিধা।

ওয়েব অ্যাপ্লিকেশন তৈরির সময় Internationalization (i18n) এবং Localization (l10n) এমন দুটি গুরুত্বপূর্ণ ধারণা রয়েছে যেগুলি ভিন্ন ভাষা এবং সংস্কৃতির ব্যবহারকারীদের জন্য অ্যাপ্লিকেশনকে উপযোগী করে তোলে। TurboGears এর মাধ্যমে এই দুইটি ধারণা সহজে বাস্তবায়ন করা যায়, যাতে আপনার অ্যাপ্লিকেশন বৈশ্বিক এবং আঞ্চলিক বাজারে পৌঁছাতে সক্ষম হয়।


Internationalization (i18n)

Internationalization (i18n) হল এমন একটি প্রক্রিয়া, যার মাধ্যমে ওয়েব অ্যাপ্লিকেশনটি বিভিন্ন ভাষা এবং সংস্কৃতির জন্য প্রস্তুত করা হয়। এটি মূলত কোডিং লেভেলে পরিবর্তন আনতে সাহায্য করে, যাতে ভবিষ্যতে অ্যাপ্লিকেশনটি বিভিন্ন ভাষায় অনুবাদ করা এবং তার সাপোর্ট দেওয়া সম্ভব হয়।

TurboGears এর মধ্যে i18n সমর্থন দেওয়ার জন্য কিছু টুল এবং লাইব্রেরি রয়েছে, যা আপনার অ্যাপ্লিকেশনকে আন্তর্জাতিকভাবে উপযোগী করে তোলে। TurboGears এর মধ্যে gettext এবং Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করে ভাষার পরিবর্তন এবং অনুবাদ সম্পাদন করা যায়।

i18n Setup TurboGears এ:

  1. gettext ইন্টারফেস: TurboGears এ gettext লাইব্রেরি ব্যবহার করে i18n কার্যক্রম সম্পাদন করা যায়। gettext আপনাকে প্রতিটি স্ট্রিংকে অনুবাদযোগ্য (translatable) করতে সাহায্য করে।
  2. Configuration: TurboGears এর config.py ফাইলে i18n এর জন্য কনফিগারেশন সেটআপ করতে হবে।

config.py ফাইলের উদাহরণ:

from tg import config

config['language.default'] = 'en'
config['languages'] = ['en', 'fr', 'es']  # English, French, Spanish
  1. gettext ট্যাগ ব্যবহার: আপনার টেমপ্লেট বা কোডে স্ট্রিং গুলি gettext ট্যাগ দিয়ে মার্ক করতে হবে যাতে সেগুলি অনুবাদযোগ্য হয়।
from tg.i18n import ugettext as _

def some_function():
    greeting = _("Hello, World!")
    return greeting

এখানে _("Hello, World!") একটি অনুবাদযোগ্য স্ট্রিং হিসাবে মার্ক করা হয়েছে।


Localization (l10n)

Localization (l10n) হল এমন একটি প্রক্রিয়া, যার মাধ্যমে একটি ওয়েব অ্যাপ্লিকেশনকে নির্দিষ্ট ভাষা এবং সংস্কৃতির জন্য কাস্টমাইজ করা হয়। এটি একটি অ্যাপ্লিকেশন বা ওয়েবসাইটের স্থানীয় ভাষায় অনুবাদ এবং তা স্থানীয় রীতিনীতি ও চাহিদার সাথে মিলিয়ে তৈরি করা হয়। Localization সাধারণত date formats, currency formats, number formatting, address formatting এবং language translation ইত্যাদি বিষয়গুলোর কাস্টমাইজেশনের সাথে সম্পর্কিত।

TurboGears-এ Localization (l10n) সাপোর্ট করার জন্য বেশ কিছু টুল রয়েছে, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় এবং সংস্কৃতিতে উপযোগী করতে পারেন।

l10n Setup TurboGears এ:

  1. gettext এবং Locales ব্যবহার: gettext পদ্ধতি ব্যবহার করে আপনি নির্দিষ্ট ভাষায় অনুবাদ করা স্ট্রিংগুলো লোড করতে পারেন, এবং এটি বিভিন্ন স্থানীয় ফরম্যাটের জন্য কনফিগার করা যায়।
  2. Localizing the Format: TurboGears এর সাথে Babel লাইব্রেরি ব্যবহার করা হয়, যা বিভিন্ন ভাষা এবং সংস্কৃতির জন্য date, currency, এবং number formats কাস্টমাইজ করতে সহায়তা করে।
from babel import Locale
from babel.dates import format_datetime

locale = Locale('en', 'US')
formatted_date = format_datetime('2024-12-25', locale=locale)
print(formatted_date)  # 12/25/2024
  1. Timezone এবং Date Format: আপনি timezone এবং date format কাস্টমাইজ করতে পারেন, যা বিভিন্ন অঞ্চলে ভিন্ন হতে পারে। এই কাস্টমাইজেশন TurboGears এর মাধ্যমে করা যায়।
from tg import config

config['timezone.default'] = 'America/New_York'

TurboGears এর সাথে i18n এবং l10n কনফিগারেশন করা

i18n এবং l10n কনফিগারেশন উদাহরণ:

from tg import config
from tg.i18n import ugettext as _

# Language setting
config['language.default'] = 'en'
config['languages'] = ['en', 'fr', 'es']  # Available languages

# Timezone and date format
config['timezone.default'] = 'America/New_York'

# Localization
locale = Locale('en', 'US')
formatted_date = format_datetime('2024-12-25', locale=locale)

এখানে, TurboGears কনফিগারেশনে default language, available languages, এবং timezone সেট করা হয়েছে।


সারাংশ

Internationalization (i18n) এবং Localization (l10n) হল দুটি গুরুত্বপূর্ণ ধারণা, যা ওয়েব অ্যাপ্লিকেশন বা সফটওয়্যারকে বৈশ্বিক ব্যবহারকারীদের জন্য উপযোগী করে তোলে। TurboGears এ i18n এবং l10n কনফিগারেশন খুবই সহজ, এবং আপনি gettext এবং Babel লাইব্রেরি ব্যবহার করে অ্যাপ্লিকেশনকে বিভিন্ন ভাষা এবং সংস্কৃতির জন্য কাস্টমাইজ করতে পারেন। TurboGears এর সাহায্যে আপনি স্ট্রিং অনুবাদ, তারিখ ফরম্যাট, কারেন্সি ফরম্যাট এবং স্থানীয় ভাষায় কনভার্সন সহজে করতে পারবেন।

Content added By

Internationalization (i18n) এবং Localization (L10n) এর ভূমিকা

Internationalization (i18n) এবং Localization (L10n) হলো সফটওয়্যার ডেভেলপমেন্টের দুটি গুরুত্বপূর্ণ প্রক্রিয়া, যা বিশেষভাবে ব্যবহারকারীর ভাষা, সংস্কৃতি, এবং অঞ্চলের প্রতি সন্মান প্রদর্শন করে। এই দুটি প্রক্রিয়া একসাথে কাজ করে সফটওয়্যারকে বিশ্বব্যাপী ব্যবহারকারীদের জন্য উপযুক্ত করে তোলে।

TurboGears একটি শক্তিশালী Python ওয়েব ফ্রেমওয়ার্ক, যা i18n এবং L10n এর সমর্থন প্রদান করে, যাতে ডেভেলপাররা তাদের অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় এবং অঞ্চলে ব্যবহারযোগ্য করতে পারে।


Internationalization (i18n) কী?

Internationalization (i18n) হল একটি প্রক্রিয়া যার মাধ্যমে একটি অ্যাপ্লিকেশনকে বিভিন্ন ভাষা এবং অঞ্চলের জন্য প্রস্তুত করা হয়। এই প্রক্রিয়ায় আপনি এমন একটি অ্যাপ্লিকেশন তৈরি করেন যা বিভিন্ন ভাষা, মুদ্রা, তারিখ/সময় ফরম্যাট ইত্যাদি সমর্থন করতে পারে, কিন্তু এটি কোন নির্দিষ্ট ভাষা বা সংস্কৃতির উপর নির্ভর করে না।

i18n এর উদ্দেশ্য হলো সফটওয়্যারটিকে এমনভাবে তৈরি করা যাতে একাধিক ভাষা এবং অঞ্চল সহজেই সমর্থন করা যায়। এটি মূলত সফটওয়্যারটির ভিত্তি তৈরির সময় বিভিন্ন ভাষার জন্য প্রস্তুতি গ্রহণের উপর ভিত্তি করে।

i18n এর মূল কাজসমূহ:

  1. টেক্সট সেপারেশন: সফটওয়্যারটির সব টেক্সটকে কোড থেকে আলাদা করে রাখা, যাতে তা সহজে অন্য ভাষায় অনুবাদ করা যায়।
  2. বিভিন্ন ভাষার সমর্থন: ভাষার জন্য আলাদা ফাইল বা ডাটাবেস সংরক্ষণ করা যা ভাষা অনুযায়ী কনফিগার করা যায়।
  3. দিন/মাস/বছর ফরম্যাট: স্থানীয় তারিখ এবং সময় ফরম্যাটগুলি সমর্থন করা।
  4. মুদ্রা এবং সংখ্যার ফরম্যাট: দেশভেদে মুদ্রার প্রতীক এবং সংখ্যা ফরম্যাট কাস্টমাইজ করা।

Localization (L10n) কী?

Localization (L10n) হলো Internationalization এর পরবর্তী পদক্ষেপ, যা সফটওয়্যারটিকে একটি নির্দিষ্ট ভাষা এবং সংস্কৃতির জন্য উপযুক্ত করে তোলে। Localization এর মাধ্যমে সফটওয়্যারটি কোনও নির্দিষ্ট অঞ্চলের ভাষা, সংস্কৃতি, মুদ্রা, তারিখ/সময় ফরম্যাট অনুযায়ী কাস্টমাইজ করা হয়।

Localization সাধারণত i18n এর উপরে ভিত্তি করে তৈরি করা হয়, এবং এটি অ্যাপ্লিকেশনটির একাধিক সংস্করণ তৈরি করতে সাহায্য করে যা নির্দিষ্ট ভাষা বা অঞ্চলের উপযোগী হয়।

L10n এর মূল কাজসমূহ:

  1. ভাষার অনুবাদ: নির্দিষ্ট ভাষায় সফটওয়্যারের সমস্ত টেক্সট অনুবাদ করা।
  2. স্থানীয় মুদ্রা ও সিম্বল ব্যবহার: নির্দিষ্ট অঞ্চলের মুদ্রা, তারিখ, সময় ফরম্যাট ইত্যাদি কাস্টমাইজ করা।
  3. সংস্কৃতি অনুযায়ী কাস্টমাইজেশন: অঞ্চলভিত্তিক কনটেন্ট যেমন স্থানীয় উৎসব, দেশীয় ধারা ইত্যাদি কাস্টমাইজ করা।

TurboGears এ Internationalization (i18n) এবং Localization (L10n)

TurboGears ফ্রেমওয়ার্কে i18n এবং L10n এর জন্য সমর্থন রয়েছে যা অ্যাপ্লিকেশনকে বিভিন্ন ভাষা এবং সংস্কৃতির জন্য সহজে কাস্টমাইজ করতে সাহায্য করে।

TurboGears এ i18n এবং L10n এর জন্য সাধারণ পদক্ষেপ:

  1. TurboGears এ i18n সেটআপ করা: TurboGears এর মধ্যে i18n সেটআপ করার জন্য, আপনি turbogears.i18n প্যাকেজ ব্যবহার করতে পারেন। এটি আপনাকে আপনার অ্যাপ্লিকেশনের বিভিন্ন ভাষায় টেক্সট অনুবাদ করতে সাহায্য করে।
  2. অনুবাদ ফাইল তৈরি করা: আপনার অ্যাপ্লিকেশনটির টেক্সটের অনুবাদ ফাইলগুলি তৈরি করুন (যেমন .po বা .mo ফাইল) এবং সেগুলি প্রতিটি ভাষার জন্য কনফিগার করুন।
  3. স্থানীয় ভাষা এবং সংস্কৃতি সেট করা: TurboGears আপনাকে স্থানীয় ভাষা এবং সংস্কৃতি অনুসারে কনফিগারেশন করার জন্য একটি শক্তিশালী Locale সিস্টেম প্রদান করে, যা ভাষা, তারিখ, সময়, মুদ্রা ইত্যাদি কাস্টমাইজ করতে পারে।
  4. কনটেন্ট কাস্টমাইজেশন: TurboGears অ্যাপ্লিকেশন থেকে আপনি সহজেই নির্দিষ্ট ভাষায় কনটেন্ট রেন্ডার করতে পারেন এবং সেই অনুযায়ী ডেটাবেসে থাকা ডেটার উপস্থাপনা কাস্টমাইজ করতে পারেন।

উদাহরণ: TurboGears এ i18n এবং L10n সেটআপ

এখানে TurboGears ব্যবহার করে i18n এবং L10n সেটআপ করার জন্য কিছু সাধারণ পদক্ষেপ এবং কোড দেওয়া হয়েছে:

  1. requirements.txt ফাইল তৈরি করুন:
TurboGears2
turbogears.i18n
  1. কনফিগারেশন ফাইলের মধ্যে Locale সেট করা:
from turbogears import i18n

# Define locales for your application
i18n.add_locale('en', 'English')
i18n.add_locale('es', 'Spanish')

# Set default language
i18n.set_locale('en')
  1. টেক্সট অনুবাদ ফাইল তৈরি করা:

আপনি .po এবং .mo ফাইল ব্যবহার করতে পারেন যেখানে আপনি অ্যাপ্লিকেশনের সমস্ত টেক্সটের অনুবাদ রাখবেন।

msgid "Hello, World!"
msgstr "¡Hola, Mundo!"
  1. টাইপ নির্দিষ্ট করা:
import turbogears
from turbogears.i18n import _

def greet_user():
    greeting = _("Hello, World!")
    return greeting
  1. তারিখ এবং সময় কাস্টমাইজ করা:
from turbogears.i18n import set_locale, format_datetime

set_locale('en')
formatted_date = format_datetime('2024-12-25 12:00:00')

সারাংশ

Internationalization (i18n) এবং Localization (L10n) হল সফটওয়্যার ডেভেলপমেন্টের অপরিহার্য অংশ যা অ্যাপ্লিকেশনগুলোকে বিশ্বব্যাপী ব্যবহারকারীদের জন্য উপযুক্ত করে তোলে। TurboGears ফ্রেমওয়ার্ক এই প্রক্রিয়াগুলির জন্য শক্তিশালী সমর্থন প্রদান করে, যা ডেভেলপারদের ভাষা, তারিখ, সময়, মুদ্রা ইত্যাদি কাস্টমাইজ করতে সাহায্য করে। i18n সেটআপ করার মাধ্যমে আপনি বিভিন্ন ভাষার সমর্থন তৈরি করতে পারেন এবং L10n ব্যবহার করে সফটওয়্যারটি একটি নির্দিষ্ট অঞ্চলের জন্য উপযুক্ত করতে পারেন।

Content added By

TurboGears এবং Localization

TurboGears হল একটি শক্তিশালী Python ওয়েব ফ্রেমওয়ার্ক যা ডেভেলপারদের জন্য দ্রুত এবং সহজভাবে ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। এটি MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে এবং বিভিন্ন ধরনের ডাটাবেস, টেমপ্লেট ইঞ্জিন এবং ইউটিলিটি ফিচার সমর্থন করে। TurboGears-এ ভাষা এবং আন্তর্জাতিকীকরণ (i18n) সাপোর্ট করার জন্য Translation Management ব্যবস্থা রয়েছে।

TurboGears এ Translation Management এর প্রয়োজনীয়তা

যখন আপনি একটি আন্তর্জাতিক অ্যাপ্লিকেশন তৈরি করেন, তখন বিভিন্ন ভাষায় অ্যাপ্লিকেশনটির কনটেন্ট প্রদর্শন করা প্রয়োজন। এতে, Translation Management বা i18n এর মাধ্যমে একটি অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় কনফিগার করা যায়। TurboGears-এ Translation Management ব্যবহার করা হলে আপনি টেক্সট স্ট্রিংগুলোর অনুবাদ এবং স্থানিক (locale) নির্ধারণ করতে পারেন।


TurboGears-এ Translation Management কীভাবে কাজ করে?

TurboGears-এ Translation Management (i18n) সিস্টেমের জন্য সাধারণত Genshi এবং Mako টেমপ্লেট ইঞ্জিন ব্যবহার করা হয়, যা স্থানীয় ভাষার টেমপ্লেট এবং স্ট্রিংগুলোর জন্য সমর্থন প্রদান করে। TurboGears একটি শক্তিশালী gettext মেকানিজম প্রদান করে, যা gettext ফাইল (PO files) এর মাধ্যমে বিভিন্ন ভাষার টেক্সট অনুবাদ করতে সাহায্য করে।

TurboGears এ Translation Management সিস্টেম সেটআপ করা

  1. TurboGears সেটআপ: TurboGears অ্যাপ্লিকেশন তৈরি করতে প্রথমে TurboGears ইনস্টল করতে হবে।

    pip install TurboGears2
    
  2. Translation Setup (gettext): TurboGears gettext এবং babel লাইব্রেরি ব্যবহার করে বিভিন্ন ভাষায় অনুবাদ করার জন্য টেক্সট স্ট্রিংয়ের পরিচালনা করে। টেমপ্লেটের মধ্যে gettext ফাংশন ব্যবহার করা হয়।

    প্রথমে gettext ফাইল তৈরি করতে হবে যা সমস্ত স্ট্রিং সংরক্ষণ করবে, এরপর সেগুলিকে অনুবাদ করা হবে।

  3. TurboGears Configuration: TurboGears-এ একটি সেটআপ ফাইল তৈরি করুন যেখানে আপনি gettext সিস্টেমের কনফিগারেশন করতে পারবেন।

    # app/config.py
    
    from tg import config
    config['i18n.domain'] = 'messages'
    

    এখানে messages ডোমেইনটি gettext সিস্টেমের মূল অনুবাদ ফাইল হবে।

  4. Translation File তৈরি করা: TurboGears-এ gettext ফাইল তৈরি করতে pybabel ব্যবহার করতে হয়। প্রথমে আপনি messages.pot ফাইল তৈরি করবেন, এবং তারপর অনুবাদ ফাইলগুলিতে স্থানীয় ভাষার জন্য স্ট্রিংগুলি যোগ করবেন।

    pybabel init -i messages.pot -d translations -l <language_code>
    

    উদাহরণস্বরূপ, বাংলা ভাষার জন্য -l bn প্যারামিটার ব্যবহার করা হবে।

    pybabel init -i messages.pot -d translations -l bn
    

    এর ফলে translations/bn/LC_MESSAGES/messages.po ফাইল তৈরি হবে, যেখানে আপনি বাংলা ভাষায় অনুবাদ করতে পারবেন।

  5. gettext ফাংশন ব্যবহার করা: TurboGears টেমপ্লেটে gettext ব্যবহার করতে, এটি HTML টেমপ্লেটগুলিতে যেমন Mako বা Genshi ব্যবহার করা যেতে পারে।

    উদাহরণস্বরূপ, Mako টেমপ্লেটে:

    <h1>${_("Welcome to TurboGears")}</h1>
    

    এখানে, _("Welcome to TurboGears") অনুবাদযোগ্য টেক্সট হিসেবে চিহ্নিত হচ্ছে।

  6. Babel Compile: অনুবাদ ফাইলগুলিকে কম্পাইল করতে, আপনি pybabel compile কমান্ড ব্যবহার করতে পারেন। এটি আপনার .po ফাইলগুলোকে .mo ফাইলে কম্পাইল করবে, যেগুলি রানটাইমে ব্যবহার করা হয়।

    pybabel compile -d translations
    
  7. locale/Language Specific Rendering: একাধিক ভাষার জন্য উপযুক্ত রেন্ডারিং নিশ্চিত করতে, আপনি request.locales পরিবর্তন করতে পারেন যাতে অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে সঠিক ভাষায় টেক্সট রেন্ডার করে।

    from tg import expose, request
    from tg.i18n import ugettext as _
    
    @expose('json')
    def welcome_message(self):
        language = request.locale.language
        return {"message": _("Welcome to TurboGears, you're using language: %s" % language)}
    
  8. Testing: TurboGears-এ Translation Testing করতে হলে, আপনি ডেভেলপমেন্ট বা ইউনিট টেস্টিংয়ের মাধ্যমে নিশ্চিত করতে পারেন যে সঠিক ভাষার কনটেন্ট সঠিকভাবে প্রদর্শিত হচ্ছে। টেস্ট স্ক্রিপ্টে আপনি বিভিন্ন ভাষার জন্য gettext ফাংশন পরীক্ষা করতে পারেন।

TurboGears-এ Translation Management এর সুবিধা

  1. সহজ Localization: TurboGears-এ gettext এবং Babel এর মাধ্যমে ভাষা এবং স্থানীয়করণের কার্যক্রম সহজে পরিচালনা করা যায়।
  2. Multiple Language Support: একাধিক ভাষায় কনটেন্ট পরিচালনা করা সম্ভব, এবং এটি সহজে বিভিন্ন ভাষার সাপোর্ট এবং অনুবাদ টেমপ্লেট তৈরি করতে সহায়ক।
  3. gettext Compatibility: TurboGears gettext সিস্টেমের সাথে সামঞ্জস্যপূর্ণ, যা বৃহৎ অ্যাপ্লিকেশনের জন্য বিশেষভাবে কার্যকর।
  4. Dynamic Translation: TurboGears ডায়নামিক অনুবাদ পরিচালনা করতে সক্ষম, যা অ্যাপ্লিকেশন ব্যবহারকারীর ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করতে সক্ষম।

সারাংশ

TurboGears একটি শক্তিশালী Python ওয়েব ফ্রেমওয়ার্ক যা অনুবাদ এবং আন্তর্জাতিকীকরণ (i18n) সিস্টেমের মাধ্যমে ভাষার সমর্থন সহজ করে তোলে। TurboGears-এ gettext, Babel এবং Translation Management ব্যবহার করে আপনি দ্রুত ভাষা পরিবর্তন এবং স্থানীয়করণের জন্য একটি শক্তিশালী সিস্টেম তৈরি করতে পারেন। এই প্রক্রিয়ার মাধ্যমে আপনার অ্যাপ্লিকেশনটি বিশ্বের বিভিন্ন ভাষায় ব্যবহারযোগ্য হতে পারে, যা আন্তর্জাতিক ব্যবহারকারীদের জন্য একটি উন্নত অভিজ্ঞতা প্রদান করবে।

Content added By

TurboGears এর পরিচিতি

TurboGears হলো একটি পূর্ণাঙ্গ ওয়েব ফ্রেমওয়ার্ক যা Python ভাষায় তৈরি। এটি দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ডিজাইন করা হয়েছে এবং MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। TurboGears ফ্রেমওয়ার্কের মধ্যে অনেক শক্তিশালী ফিচার রয়েছে যেমন ORM (Object-Relational Mapping), form handling, data validation, এবং template rendering, যা ডেভেলপারদের দ্রুত এবং কার্যকরীভাবে ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।

একটি গুরুত্বপূর্ণ ফিচার যা TurboGears সরবরাহ করে, তা হলো Multilingual Support বা ভাষা সমর্থন। TurboGears-এ Multilingual Support ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কনফিগার করতে পারেন, যাতে বিভিন্ন ব্যবহারকারীরা তাদের পছন্দের ভাষায় ওয়েবসাইট ব্যবহার করতে পারে।


TurboGears এ Multilingual Support এবং Language Switching

Multilingual Support TurboGears-এ একটি গুরুত্বপূর্ণ ফিচার যা ব্যবহারকারীদের ভাষা পছন্দের ভিত্তিতে ওয়েব অ্যাপ্লিকেশন কনফিগার করার সুযোগ দেয়। এর মাধ্যমে আপনি বিভিন্ন ভাষায় কনটেন্ট সরবরাহ করতে পারেন এবং ব্যবহারকারীদের তাদের পছন্দের ভাষায় ওয়েবসাইট ব্যবহার করতে সক্ষম করেন। Language Switching ফিচারটি ব্যবহারকারীদের সহজেই ভাষা পরিবর্তন করতে সক্ষম করে।

TurboGears এ ভাষা সমর্থন সেটআপ করার জন্য সাধারণত gettext এবং babel লাইব্রেরি ব্যবহার করা হয়, যা Internationalization (i18n) এবং Localization (l10n) কাজের জন্য ব্যবহৃত হয়।


TurboGears এ Multilingual Support কনফিগারেশন

১. TurboGears-এ i18n এবং l10n কনফিগারেশন

TurboGears এ Multilingual Support কনফিগার করতে প্রথমে gettext এবং babel লাইব্রেরি ইনস্টল করতে হবে। এই লাইব্রেরিগুলি আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) এর জন্য ব্যবহৃত হয়।

প্রথমে gettext ইনস্টল করুন:

pip install Babel

২. Application Configuration

TurboGears এর config ফোল্ডারে একটি ফাইল তৈরি করুন, যেখানে আপনি ভাষার পছন্দ কনফিগার করবেন। উদাহরণস্বরূপ, আপনার development.ini ফাইলে নিম্নলিখিত কোডটি যোগ করুন:

[app:main]
...
use_global_languages = true
languages = en, es, fr, de
default_locale = en

এখানে, languages সেটিংয়ের মাধ্যমে আপনি অ্যাপ্লিকেশনে ব্যবহারযোগ্য ভাষাগুলির তালিকা সংজ্ঞায়িত করেছেন এবং default_locale এর মাধ্যমে আপনি ডিফল্ট ভাষা নির্ধারণ করেছেন।

৩. Translation ফাইল তৈরি করা

TurboGears এ ভাষা অনুবাদ ব্যবস্থাপনা করতে pybabel টুল ব্যবহার করা হয়।

  1. Translate ফাইল তৈরি করুন:
pybabel init -i messages.pot -d translations -l en

এটি translations ফোল্ডারে ইংরেজি ভাষার জন্য একটি messages.po ফাইল তৈরি করবে।

  1. অনুবাদ করা:

messages.po ফাইলে আপনার অ্যাপ্লিকেশনের স্ট্যাটিক কনটেন্টগুলির অনুবাদ লিখুন।

  1. অনুবাদ কম্পাইল করা:
pybabel compile -d translations

এটি translations ফোল্ডারে কম্পাইল করা ট্রান্সলেশন ফাইল তৈরি করবে।


৪. Language Switching

TurboGears এ ভাষা পরিবর্তন করা খুবই সহজ। আপনি ব্যবহারকারীর পছন্দের ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করতে পারেন। সাধারণত, ভাষা পরিবর্তন করার জন্য ব্যবহারকারীর জন্য একটি ড্রপডাউন অথবা ল্যাংগুয়েজ চয়েস প্রদান করা হয়।

Language Switcher Example:

<form method="post" action="/switch_language">
    <select name="language">
        <option value="en">English</option>
        <option value="es">Spanish</option>
        <option value="fr">French</option>
        <option value="de">German</option>
    </select>
    <input type="submit" value="Change Language">
</form>

এটি একটি সাধারণ HTML ফর্ম, যা ব্যবহারকারীকে ভাষা পরিবর্তন করতে সক্ষম করে। আপনি এই ফর্মটি আপনার ওয়েবপেজে ব্যবহারকারীর জন্য উপস্থাপন করতে পারেন।

Language Switch Controller:

from tg import request, redirect
from tg.controllers import Controller, expose
from babel import Locale

class RootController(Controller):

    @expose('json')
    def switch_language(self, language):
        request.language = language
        return redirect('/')

এখানে, switch_language ফাংশনটি ব্যবহারকারী যে ভাষাটি নির্বাচন করেছে সেটি গ্রহণ করে এবং তারপর সাইটের ভাষা সেট করে।


৫. Multilingual Templates

TurboGears এ ভাষা সমর্থন করার জন্য, আপনাকে Jinja2 টেমপ্লেট ইঞ্জিনে অনুবাদ ট্যাগগুলি যুক্ত করতে হবে। এখানে একটি উদাহরণ দেওয়া হলো, যেখানে আপনি gettext ব্যবহার করবেন।

Template Example:

{% from "babel" import gettext as _ %}

<html>
<head>
    <title>{{ _('Welcome to TurboGears!') }}</title>
</head>
<body>
    <h1>{{ _('Hello, World!') }}</h1>
</body>
</html>

এখানে, _() ফাংশনটি gettext এর মাধ্যমে স্ট্যাটিক কনটেন্টকে অনুবাদ করবে। এতে আপনার টেমপ্লেট স্বয়ংক্রিয়ভাবে ভাষার উপর ভিত্তি করে কনটেন্ট প্রদর্শন করবে।


সারাংশ

TurboGears ফ্রেমওয়ার্কে Multilingual Support কনফিগার করার জন্য, gettext এবং babel লাইব্রেরি ব্যবহার করা হয়, যা i18n এবং l10n এর সুবিধা প্রদান করে। ভাষা পরিবর্তন করার জন্য আপনি ব্যবহারকারীকে একটি ভাষা নির্বাচন করার সুযোগ দিতে পারেন এবং এর পরে ভাষার উপর ভিত্তি করে কনটেন্ট প্রদর্শন করতে পারেন। TurboGears-এর মাধ্যমে language switching এবং multilingual templates ব্যবহার করে আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কনফিগার করা সহজ হয়।

Content added By

Localization কি?

Localization (i18n) হলো একটি প্রক্রিয়া, যার মাধ্যমে একটি অ্যাপ্লিকেশন বা ওয়েবসাইটকে এমনভাবে কাস্টমাইজ করা হয় যাতে তা বিভিন্ন ভাষা, অঞ্চল এবং সংস্কৃতির জন্য উপযুক্ত হয়। এটি শুধু ভাষা অনুবাদ নয়, বরং ডেটা ফরম্যাট, টাইমজোন, এবং ইউজার ইন্টারফেসের বিভিন্ন উপাদানও অন্তর্ভুক্ত করে।

TurboGears একটি Python ফ্রেমওয়ার্ক, যা ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এটি Internationalization (i18n) এবং Localization (L10n) সাপোর্ট করে, যা আপনি বিশ্বের বিভিন্ন অঞ্চলের জন্য কাস্টমাইজড অ্যাপ্লিকেশন তৈরি করতে পারবেন।

এখানে আমরা TurboGears-এ Localization সঠিকভাবে প্রয়োগ করার জন্য কিছু Best Practices আলোচনা করব।


১. অনুবাদযোগ্য টেক্সট আলাদা করা (Extracting Translatable Text)

Localization এর শুরু হল text extraction দিয়ে। আপনার অ্যাপ্লিকেশনের সমস্ত টেক্সট (যেমন: বার্তা, বাটন, ট্যাগলাইন) এমনভাবে আলাদা করে রাখুন যাতে সহজেই এগুলোকে অনুবাদ করা যায়।

TurboGears-এ gettext ফাংশন ব্যবহার করে আপনি অনুবাদযোগ্য টেক্সটগুলো আলাদা করতে পারেন। TurboGears সাধারণত Babel ব্যবহার করে অনুবাদ পরিচালনা করে, যা একটি সাধারণ প্যাকেজ যা বিভিন্ন ভাষায় অ্যাপ্লিকেশনটি অনুবাদ করতে সাহায্য করে।

উদাহরণ:

from tg import expose
from tg.i18n import ugettext as _

class MyController(BaseController):
    @expose('json')
    def index(self):
        return {'message': _('Hello, world!')}

এখানে, ugettext ফাংশন ব্যবহার করা হয়েছে, যা "Hello, world!" স্ট্রিংটি অনুবাদযোগ্য করে তোলে। এটি আপনার অ্যাপ্লিকেশনের ইউজার ইন্টারফেসের সমস্ত টেক্সট আলাদা করার জন্য একটি পদ্ধতি।


২. ভাষা সিলেকশন এবং ডিফল্ট ভাষা সেট করা (Language Selection and Default Language)

ব্যবহারকারীদের তাদের পছন্দ অনুযায়ী ভাষা নির্বাচন করার সুবিধা দেওয়া গুরুত্বপূর্ণ। TurboGears এ, ভাষা পরিবর্তনের জন্য আপনি session বা URL parameters ব্যবহার করতে পারেন।

ভাষা সিলেকশন উদাহরণ:

from tg.i18n import set_lang

class LanguageController(BaseController):
    @expose()
    def change_language(self, lang_code):
        set_lang(lang_code)
        return redirect('/')

এখানে, set_lang() ফাংশনটি ব্যবহারকারীর নির্বাচিত ভাষা সেট করার জন্য ব্যবহার করা হচ্ছে। এছাড়াও, আপনি ডিফল্ট ভাষা সেট করতে পারেন যা সবসময় প্রথমে প্রদর্শিত হবে।

from tg.i18n import set_lang
from tg import config

# Set default language
set_lang(config.get('i18n.default_locale', 'en'))

এটি অ্যাপ্লিকেশন লোড হলে স্বয়ংক্রিয়ভাবে ডিফল্ট ভাষা নির্বাচন করবে।


৩. বিভিন্ন ডেটা ফরম্যাট সমর্থন (Supporting Different Date Formats)

ভিন্ন অঞ্চলে ভিন্ন ধরনের date format ব্যবহৃত হয়। যেমন, ইউরোপীয় দেশে DD/MM/YYYY ফরম্যাটে তারিখ দেখানো হয়, এবং যুক্তরাষ্ট্রে MM/DD/YYYY ব্যবহৃত হয়।

TurboGears-এ আপনি Babel এবং DateFormatter ব্যবহার করে বিভিন্ন অঞ্চলের জন্য ডেটা ফরম্যাট কাস্টমাইজ করতে পারেন।

উদাহরণ:

from babel import Locale
from babel.dates import format_date

locale = Locale('en', 'US')
formatted_date = format_date(datetime.date(2021, 12, 25), locale=locale)
print(formatted_date)  # 12/25/2021

এখানে, আপনি Babel ব্যবহার করে ব্যবহারকারীর নির্বাচিত ভাষার ভিত্তিতে তারিখের ফরম্যাট পরিবর্তন করতে পারবেন।


৪. ইউনিট এবং ইন্টিগ্রেশন টেস্টিং (Unit and Integration Testing)

Localization এর পরবর্তী ধাপ হল তার টেস্টিং নিশ্চিত করা। বিভিন্ন ভাষায় আপনার অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য unit testing এবং integration testing খুবই গুরুত্বপূর্ণ।

TurboGears-এ nose অথবা pytest ব্যবহার করে টেস্টিং করা যায়। এটির মাধ্যমে আপনি বিভিন্ন ভাষায় টেক্সট অনুবাদ এবং সঠিক ফরম্যাট যাচাই করতে পারবেন।

উদাহরণ:

import unittest
from tg.i18n import ugettext as _

class TestLocalization(unittest.TestCase):
    def test_translation(self):
        self.assertEqual(_('Hello, world!'), 'Hola, mundo!')  # Spanish translation

এখানে, test_translation() ফাংশনটি নিশ্চিত করে যে, "Hello, world!" টেক্সট সঠিকভাবে স্প্যানিশে অনুবাদ হয়েছে কি না।


৫. ডাইন্যামিক কন্টেন্ট অনুবাদ (Dynamic Content Translation)

কিছু বিষয়, যেমন ডেটা ড্রিভেন কনটেন্ট বা ব্যবহারকারী দ্বারা ইনপুটকৃত ডেটা, কখনো কখনো অনুবাদ করা প্রয়োজন হতে পারে। TurboGears আপনাকে gettext ব্যবহার করে dynamic content অনুবাদ করার সুযোগ দেয়।

উদাহরণ:

from tg.i18n import ugettext as _

class MyController(BaseController):
    @expose('json')
    def index(self, username):
        greeting = _('Hello, ${username}!', username=username)
        return {'message': greeting}

এখানে, username এর মাধ্যমে ডাইনামিক টেক্সট অনুবাদ করা হচ্ছে।


৬. Resource Bundle ব্যবহারের মাধ্যমে অনুবাদ কনফিগারেশন (Using Resource Bundles for Translations)

অন্যথায় known as .po এবং .mo ফাইল, রিসোর্স বান্ডলগুলি ভাষার অনুবাদগুলি ধারণ করে। আপনি Babel এর মাধ্যমে .po ফাইল তৈরি এবং ব্যবহার করতে পারেন। এগুলি সিস্টেমের বিভিন্ন ভাষার জন্য তৈরি করা হয় এবং স্বয়ংক্রিয়ভাবে টাইপোগ্রাফির মাধ্যমে অ্যাপ্লিকেশন ডাউনলোড ও রেন্ডার করার সময় ব্যবহৃত হয়।


৭. স্মার্ট ফর্ম্যাটিং (Smart Formatting)

আপনার অ্যাপ্লিকেশনে number formatting, currency, এবং percentage formatting সহ বিভিন্ন ধরণের ফরম্যাটিং প্রয়োজন হতে পারে। TurboGears এবং Babel এই ধরনের ফরম্যাটিং সমর্থন করে এবং বিভিন্ন ভাষায় স্বয়ংক্রিয়ভাবে ফরম্যাটিংয়ের জন্য কাজ করে।

উদাহরণ:

from babel.numbers import format_currency

formatted_price = format_currency(12345.67, 'USD', locale='en_US')
print(formatted_price)  # $12,345.67

এখানে, Babel ব্যবহার করে ডলার ফরম্যাটে মুদ্রার সঠিক রূপান্তর প্রদর্শন করা হয়েছে।


সারাংশ

Localization TurboGears অ্যাপ্লিকেশনে খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি বিভিন্ন ভাষা এবং সংস্কৃতির ইউজারদের জন্য অ্যাপ্লিকেশন তৈরি করছেন। TurboGears-এ Localization বাস্তবায়ন করার সময়, gettext, Babel, formatting, language selection, এবং dynamic content translation ব্যবহার করার মাধ্যমে আপনি একটি ইন্টারন্যাশনাল অ্যাপ্লিকেশন তৈরি করতে পারেন। সঠিকভাবে Localization করতে গেলে আপনাকে বিভিন্ন ভাষার কনফিগারেশন, অনুবাদ এবং ফরম্যাটিং এর ব্যাপারে সঠিক ব্যবস্থা নিতে হবে, এবং সেগুলোর টেস্টিং নিশ্চিত করতে হবে যাতে আন্তর্জাতিক ব্যবহারকারীরা অ্যাপ্লিকেশনটি সুবিধাজনকভাবে ব্যবহার করতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...