Internationalization (i18n) এবং Localization (l10n) গাইড ও নোট

Web Development - ওয়েব২পাই (Web2Py)
211

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


Internationalization (i18n) in Web2Py

Internationalization (i18n) হচ্ছে একটি অ্যাপ্লিকেশনকে এমনভাবে তৈরি করা যাতে এটি সহজেই বিভিন্ন ভাষা এবং অঞ্চলের সংস্কৃতির জন্য প্রস্তুত হয়। এটি মূলত সফটওয়্যারটি একাধিক ভাষায় সমর্থন করার জন্য তৈরি করা হয়, তবে ভাষাগত বা সাংস্কৃতিক কাস্টমাইজেশন তখন করা হয় যখন Localization (l10n) প্রক্রিয়া সম্পন্ন হয়।

Web2Py তে i18n (Internationalization) কীভাবে কাজ করে:

  1. টেক্সটের অনুবাদযোগ্যতা তৈরি করা: Web2Py তে T() ফাংশন ব্যবহার করে আপনি অ্যাপ্লিকেশনের টেক্সটগুলো অনুবাদযোগ্য করতে পারেন। এই ফাংশনটি কোনো টেক্সটকে অনুবাদযোগ্য বানায় যাতে আপনি পরবর্তীতে এটি বিভিন্ন ভাষায় অনুবাদ করতে পারেন।

    উদাহরণ:

    # controllers/default.py
    def index():
        return dict(message=T("Welcome to Web2Py!"))
    

    এখানে, T("Welcome to Web2Py!") ব্যবহৃত হয়েছে, যা একটি টেক্সটকে অনুবাদযোগ্য করে তোলে। আপনি পরে বিভিন্ন ভাষায় এই টেক্সটটি অনুবাদ করতে পারবেন।

  2. অনুবাদ ফাইল তৈরি: Web2Py তে অনুবাদ সংক্রান্ত ফাইলগুলি /applications/your_app_name/languages/ ফোল্ডারে রাখা হয়। এই ফোল্ডারে আপনার অ্যাপ্লিকেশনটির ভাষার অনুবাদ ফাইল (যেমন .py বা .json ফাইল) রাখা হবে।

    উদাহরণ: আপনি es.py ফাইল তৈরি করতে পারেন, যেখানে স্প্যানিশ ভাষায় টেক্সটগুলো অনুবাদ থাকবে:

    # applications/your_app_name/languages/es.py
    T = {
        'Welcome to Web2Py!': '¡Bienvenido a Web2Py!',
    }
    
  3. ভাষা পরিবর্তন: Web2Py তে ভাষা পরিবর্তন করার জন্য, আপনি request.language সেট করতে পারেন।

    উদাহরণ:

    # controllers/default.py
    def change_language():
        response.lang = request.args(0, 'en')  # ইউজারকে ভাষা নির্বাচন করতে দেয়
        return redirect(URL('index'))
    

    এখানে, ইউজার URL এর মাধ্যমে ভাষা নির্বাচন করতে পারেন (যেমন /change_language/es), এবং অ্যাপ্লিকেশনটি সেই ভাষায় প্রতিক্রিয়া দেবে।


Localization (l10n) in Web2Py

Localization (l10n) হচ্ছে অ্যাপ্লিকেশনকে নির্দিষ্ট একটি ভাষা বা অঞ্চলের সংস্কৃতির জন্য কাস্টমাইজ করা, যেমন, তারিখ এবং সময় ফরম্যাট, মুদ্রার চিহ্ন, স্থানীয় শব্দ ব্যবহার, এবং অন্যান্য সাংস্কৃতিক উপাদান।

Web2Py তে l10n (Localization) কীভাবে কাজ করে:

  1. ভাষার কাস্টমাইজেশন: যখন আপনি Web2Py তে ভাষা অনুবাদ করেন, তখন সেই ভাষার কাস্টমাইজেশন করা হয়, যেমন বিভিন্ন সাংস্কৃতিক উপাদান যেমন মুদ্রা, তারিখ এবং সময় ফরম্যাট ইত্যাদি।
  2. স্থানীয়কৃত তারিখ এবং সময়: Web2Py তে locale লাইব্রেরি ব্যবহার করে আপনি স্থানীয় সময় এবং তারিখের ফরম্যাট কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, ইউরোপীয় তারিখ ফরম্যাট এবং ইউএস টাইম জোন অনুযায়ী সময় দেখানো।

    উদাহরণ:

    # controllers/default.py
    import locale
    from datetime import datetime
    
    def show_time():
        locale.setlocale(locale.LC_TIME, 'es_ES')  # স্প্যানিশ তারিখ ফরম্যাট
        return dict(current_time=datetime.now().strftime('%A, %d %B %Y'))
    
  3. মুদ্রা এবং সংখ্যা স্থানীয়করণ: Web2Py তে মুদ্রা এবং সংখ্যা স্থানীয়করণ করা যায়, যেমন ইউএস ডলার, ইউরো বা অন্যান্য স্থানীয় মুদ্রা ব্যবহার করা।

    উদাহরণ:

    # controllers/default.py
    def show_price():
        locale.setlocale(locale.LC_NUMERIC, 'en_US')
        price = 123456.78
        return dict(price=locale.currency(price))
    
  4. আইকন এবং চিত্র স্থানীয়করণ: বিভিন্ন ভাষার জন্য বিভিন্ন চিত্র বা আইকন ব্যবহার করা যেতে পারে, যেমন ইংরেজি সংস্করণে একটি নির্দিষ্ট চিত্র এবং স্প্যানিশ সংস্করণে অন্য একটি চিত্র ব্যবহার করা।

    উদাহরণ:

    # controllers/default.py
    def display_image():
        if response.lang == 'es':
            image_path = '/static/images/spain.png'
        else:
            image_path = '/static/images/usa.png'
        return dict(image=image_path)
    

i18n এবং l10n এর মধ্যে পার্থক্য

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

সারাংশ

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

Content added By

Multilingual সাপোর্ট কনফিগার করা

213

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 প্যারামিটার বা কুকির মাধ্যমে ভাষা পরিবর্তন করা যায় এবং ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব।

Content added By

Translate ট্যাগ ব্যবহার

207

Web2Py তে T() ফাংশন ব্যবহার করে আপনি translation (অনুবাদ) করতে পারেন, যা Internationalization (i18n) এর অংশ। Web2Py এর মধ্যে অনুবাদ ব্যবস্থাটি খুবই সহজ এবং শক্তিশালী, যার মাধ্যমে আপনি একটি অ্যাপ্লিকেশনকে একাধিক ভাষায় রূপান্তরিত করতে পারেন। Web2Py তে T() ফাংশন ব্যবহার করে আপনি স্ট্যাটিক টেক্সট বা ডাইনামিক কন্টেন্ট অনুবাদ করতে পারেন।

এখানে Web2Py তে T() ফাংশন ব্যবহার করার পদ্ধতি এবং এর বিভিন্ন ফিচার আলোচনা করা হলো।


1. Web2Py তে T() ফাংশন ব্যবহার

Web2Py তে T() ফাংশন ব্যবহার করে আপনি অ্যাপ্লিকেশনের স্ট্যাটিক টেক্সটকে অনুবাদ করতে পারেন। এটি ব্যবহার করা খুবই সহজ এবং একাধিক ভাষায় সমর্থনযোগ্য।

উদাহরণ:

# controllers/default.py
def index():
    return dict(message=T('Welcome to Web2Py!'))

এখানে, T('Welcome to Web2Py!') পাঠ্যটি অনুবাদযোগ্য টেক্সট হিসেবে চিহ্নিত হবে। এই টেক্সটটির অনুবাদ করা যেতে পারে নির্দিষ্ট ভাষায়।


2. অনুবাদের জন্য T() ফাংশন ব্যবহার

Web2Py তে T() ফাংশন ডিফল্ট ভাষা (যেমন ইংরেজি) থেকে নির্দিষ্ট ভাষায় অনুবাদ করতে সহায়তা করে। অনুবাদগুলি সাধারণত /languages ফোল্ডারে টেক্সট ফাইল হিসেবে সংরক্ষিত থাকে।

উদাহরণ:

# controllers/default.py
def index():
    return dict(message=T('Hello World'))

এখানে, T('Hello World') অনুবাদযোগ্য টেক্সট। যদি আপনার languages ফোল্ডারে ইংরেজি (default) এবং অন্য ভাষার (যেমন স্প্যানিশ) ফাইল থাকে, তবে এই টেক্সটটি ইউজারের ভাষার ভিত্তিতে অনুবাদ হবে।


3. অনুবাদ ফাইল তৈরি করা

Web2Py তে আপনার অ্যাপ্লিকেশনটির জন্য একাধিক ভাষায় অনুবাদ ফাইল তৈরি করা সহজ। এই ফাইলগুলি সাধারণত /languages ফোল্ডারে রাখা হয়।

৩.১. Translation File Structure

  1. languages ফোল্ডারে একটি .py ফাইল তৈরি করতে হবে, যেমন:
    • en.py — ইংরেজি ভাষার জন্য
    • es.py — স্প্যানিশ ভাষার জন্য
  2. প্রতিটি ফাইলে ভাষার অনুবাদ সংরক্ষিত থাকবে:

en.py (ইংরেজি):

T = {
    'Welcome to Web2Py!': 'Welcome to Web2Py!',
    'Hello World': 'Hello World',
}

es.py (স্প্যানিশ):

T = {
    'Welcome to Web2Py!': '¡Bienvenido a Web2Py!',
    'Hello World': 'Hola Mundo',
}

এখানে, T একটি dictionary হিসেবে কাজ করে যা স্ট্যাটিক টেক্সটের অনুবাদ সংরক্ষণ করে। আপনি যেকোনো স্ট্যাটিক টেক্সটের অনুবাদ এখানে সংরক্ষণ করতে পারবেন।

৩.২. অনুবাদ ফাইল তৈরি করা

একটি নতুন ভাষা ফাইল তৈরি করতে, আপনি Web2Py এর pybabel টুল ব্যবহার করতে পারেন।

  1. প্রথমে Web2Py অ্যাপ্লিকেশন ডিরেক্টরির মধ্যে languages ফোল্ডার তৈরি করুন (যদি এটি না থাকে)।
  2. তারপর এই কমান্ডটি চালান (ডিফল্ট ভাষা থেকে অনুবাদ ফাইল তৈরি করার জন্য):
python web2py.py -K your_app_name

এটি languages ফোল্ডারে অনুবাদ ফাইল তৈরি করবে, যা আপনি পরবর্তীতে সম্পাদনা করতে পারবেন।


4. অনুবাদের জন্য ডিফল্ট ভাষা সেট করা

Web2Py তে আপনি অ্যাপ্লিকেশনের ডিফল্ট ভাষা নির্ধারণ করতে পারেন। এই ভাষাটি হবে প্রথম ভাষা, যা যদি অন্য কোনো ভাষার অনুবাদ না থাকে, তবে প্রদর্শিত হবে।

উদাহরণ:

# models/db.py
T.force('en')  # ডিফল্ট ভাষা ইংরেজি

এখানে T.force('en') কোডটি ইংরেজি ভাষাকে ডিফল্ট ভাষা হিসেবে সেট করবে। আপনি যদি অন্য ভাষা ব্যবহার করতে চান, তাহলে এখানে সংশ্লিষ্ট ভাষার কোড যেমন 'es', 'fr' ইত্যাদি ব্যবহার করতে পারেন।


5. T() ফাংশন দিয়ে ডাইনামিক টেক্সট অনুবাদ করা

T() ফাংশন শুধুমাত্র স্ট্যাটিক টেক্সটই নয়, ডাইনামিক কন্টেন্টও অনুবাদ করতে পারে। এর জন্য আপনি T() ফাংশনে একটি ভ্যারিয়েবল পাস করতে পারেন।

উদাহরণ:

# controllers/default.py
def index():
    name = 'John'
    message = T('Hello %(name)s', name=name)  # ডাইনামিক টেক্সট
    return dict(message=message)

এখানে %(name)s একটি প্লেসহোল্ডার, যা ভ্যারিয়েবল name দ্বারা পূর্ণ হবে এবং এর অনুবাদও হবে।


6. T() ফাংশন দিয়ে ফর্ম ভ্যালিডেশন এবং মেসেজ

Web2Py তে T() ফাংশন ফর্ম মেসেজ এবং ভ্যালিডেশন বার্তাও অনুবাদ করতে পারে।

উদাহরণ:

# controllers/default.py
def form():
    form = SQLFORM.factory(
        Field('name', requires=IS_NOT_EMPTY())
    )
    if form.process().accepted:
        response.flash = T('Form submitted successfully!')
    return dict(form=form)

এখানে T('Form submitted successfully!') মেসেজটি অনুবাদযোগ্য হবে।


7. Web2Py তে অনুবাদ কনফিগারেশন

Web2Py তে আপনি T() ফাংশনটির ব্যবহার কনফিগারেশন দ্বারা নিয়ন্ত্রণ করতে পারেন, যেমন আপনি চান কি না ব্যবহারকারী যখন অ্যাপ্লিকেশনটি প্রথমবার চালু করবে তখন ভাষা নির্বাচন করতে পারবে।

ভাষা পরিবর্তন কনফিগারেশন:

# controllers/default.py
def set_language():
    language = request.args(0) or 'en'
    T.force(language)  # নির্দিষ্ট ভাষা সেট করা
    redirect(URL('index'))

এখানে T.force(language) ফাংশনটি নির্দিষ্ট ভাষা সেট করবে।


সারাংশ

Web2Py তে T() ফাংশন ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনে ভাষাগত সমর্থন যুক্ত করতে পারেন। এটি Internationalization (i18n) এর অংশ এবং সহজেই বিভিন্ন ভাষায় অনুবাদযোগ্য অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। T() ফাংশনটি স্ট্যাটিক টেক্সট, ডাইনামিক টেক্সট এবং ফর্ম মেসেজের অনুবাদ করতে ব্যবহার করা হয়। languages ফোল্ডারে অনুবাদ ফাইল তৈরি করে এবং T.force() ফাংশন ব্যবহার করে ডিফল্ট ভাষা সেট করা যায়।

Content added By

Locale নির্ধারণ এবং রিসোর্স ফাইল

281

Web2Py তে Locale নির্ধারণ এবং রিসোর্স ফাইল ব্যবহারের মাধ্যমে আপনি Internationalization (i18n) এবং Localization (l10n) প্রক্রিয়া পরিচালনা করতে পারেন। এটি ব্যবহারকারীর ভাষা এবং সংস্কৃতি অনুযায়ী অ্যাপ্লিকেশন কাস্টমাইজ করতে সহায়তা করে। Web2Py তে লোকে নির্ধারণ এবং রিসোর্স ফাইল ব্যবহারের মাধ্যমে আপনি বিভিন্ন ভাষায় অ্যাপ্লিকেশনকে কাস্টমাইজ করতে পারেন।

নিচে Web2Py তে Locale নির্ধারণ এবং রিসোর্স ফাইল সম্পর্কে বিস্তারিত আলোচনা করা হলো।


১. Locale নির্ধারণ (Setting the Locale)

Web2Py তে locale নির্ধারণের মাধ্যমে আপনি অ্যাপ্লিকেশনটি নির্দিষ্ট ভাষা বা অঞ্চলের জন্য কাস্টমাইজ করতে পারেন। এর জন্য Web2Py এর locale মডিউল ব্যবহার করা হয়, যা ভাষা, সময়, তারিখ এবং মুদ্রার জন্য উপযুক্ত ফরম্যাট নির্বাচন করতে সহায়তা করে।

১.১. Locale নির্ধারণ করা

Locale সেট করার জন্য আপনি locale.setlocale() ফাংশন ব্যবহার করবেন, যা আপনাকে নির্দিষ্ট একটি ভাষা বা অঞ্চলের জন্য অ্যাপ্লিকেশন কাস্টমাইজ করতে সহায়তা করবে।

import locale

# ইউরোপীয় স্প্যানিশ ভাষা সেট করা
locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8')

# ইংরেজি ভাষার জন্য সেটিং করা
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

এই কোডে, LC_ALL দিয়ে সমস্ত লোকাল সেটিং নির্ধারণ করা হচ্ছে (যেমন সময়, তারিখ, ভাষা)। এখানে 'es_ES.UTF-8' স্প্যানিশ ভাষার জন্য এবং 'en_US.UTF-8' ইংরেজির জন্য লোকাল সেটিং নির্ধারণ করা হয়েছে।

১.২. Locale অনুযায়ী তারিখ এবং সময় ফরম্যাটিং

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

from datetime import datetime
print(datetime.now().strftime('%A, %d %B %Y'))  # 'Lunes, 15 Mayo 2024' (স্প্যানিশ)

এখানে, strftime('%A, %d %B %Y') তারিখের একটি লোকালাইজড ফরম্যাট দেখাবে, যা স্প্যানিশ ভাষায় রূপান্তরিত হবে।


২. রিসোর্স ফাইল (Resource Files)

রিসোর্স ফাইল ব্যবহার করে আপনি Web2Py তে বিভিন্ন ভাষায় টেক্সট অনুবাদ এবং লোকালাইজেশন পরিচালনা করতে পারেন। Web2Py তে এই রিসোর্স ফাইলগুলো সাধারণত .po (Portable Object) ফাইল হিসেবে থাকে।

২.১. রিসোর্স ফাইল তৈরি করা

Web2Py তে রিসোর্স ফাইল তৈরি করার জন্য প্রথমে আপনাকে gettext টুল ব্যবহার করতে হবে। এই টুলটি ব্যবহার করে আপনি বিভিন্ন ভাষায় স্ট্রিং অনুবাদ করতে পারেন।

প্রথমে, Web2Py তে gettext ব্যবহার করতে হলে, আপনার অ্যাপ্লিকেশনের রুট ডিরেক্টরিতে locales নামক একটি ফোল্ডার তৈরি করতে হবে।

উদাহরণ:

  1. locales ফোল্ডার তৈরি করা: Web2Py তে আপনার অ্যাপ্লিকেশনের জন্য locales ফোল্ডার তৈরি করুন।

    /your_app_name
      /locales
        /en
          /LC_MESSAGES
            messages.po
        /es
          /LC_MESSAGES
            messages.po
    
  2. messages.po ফাইল তৈরি করা: এখানে, messages.po ফাইলটিতে আপনি আপনার অ্যাপ্লিকেশনের স্ট্রিং গুলো রাখতে পারেন, যা ভাষা অনুযায়ী অনুবাদ হবে।

    উদাহরণ (English - en/messages.po):

    msgid "Welcome"
    msgstr "Welcome"
    

    উদাহরণ (Spanish - es/messages.po):

    msgid "Welcome"
    msgstr "Bienvenido"
    

২.২. gettext ব্যবহার করা

Web2Py তে gettext ব্যবহার করে আপনি স্ট্রিং এর অনুবাদ করতে পারেন। এটি একটি i18n ফিচার, যা আপনার অ্যাপ্লিকেশনটি একাধিক ভাষায় রূপান্তরিত করার জন্য ব্যবহৃত হয়।

# controllers/default.py
import gettext

# ইংরেজি ভাষার রিসোর্স ফাইল লোড করা
lang = gettext.translation('messages', localedir='locales', languages=['en'])
lang.install()

# স্প্যানিশ ভাষার রিসোর্স ফাইল লোড করা
lang_es = gettext.translation('messages', localedir='locales', languages=['es'])
lang_es.install()

# ব্যবহার
print(_('Welcome'))  # ইংরেজিতে "Welcome"
print(lang_es.gettext(_('Welcome')))  # স্প্যানিশে "Bienvenido"

এই উদাহরণে, Web2Py gettext ফাংশন ব্যবহার করে "Welcome" স্ট্রিংটি ইংরেজি ও স্প্যানিশ ভাষায় অনুবাদ করেছে।

২.৩. gettext ফাংশন ব্যবহার

Web2Py তে gettext() ফাংশন ব্যবহার করা খুবই সহজ। এটি যে কোন স্ট্রিংকে অনুবাদিত করে যদি অনুবাদ (Translation) ফাইলগুলি সঠিকভাবে কনফিগার করা থাকে।

# Example for translating a string in Web2Py
print(_('Welcome to our website!'))  # This will translate "Welcome to our website!" to the current language set.

৩. Locale এবং রিসোর্স ফাইলের সাথে ইন্টিগ্রেশন

Web2Py তে locale এবং gettext একসাথে ব্যবহার করা যায় যাতে অ্যাপ্লিকেশনটি বিভিন্ন ভাষা এবং সংস্কৃতির জন্য সম্পূর্ণভাবে কাস্টমাইজড হয়। Web2Py তে locale নির্ধারণ এবং রিসোর্স ফাইল ব্যবহার করে আপনি সময়, তারিখ, সংখ্যা, মুদ্রা, এবং অন্যান্য অঞ্চলের বৈশিষ্ট্য কাস্টমাইজ করতে পারেন।

উদাহরণ: টেক্সট, তারিখ এবং মুদ্রা কাস্টমাইজ করা

import locale
import gettext
from datetime import datetime

# Locale set to Spanish
locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8')

# Translate using gettext
lang = gettext.translation('messages', localedir='locales', languages=['es'])
lang.install()

# Print translated text
print(_('Welcome to our website!'))

# Print localized date
print(datetime.now().strftime('%A, %d %B %Y'))  # 'Lunes, 15 Mayo 2024'

# Localized currency (e.g. Euro)
from babel.numbers import format_currency
print(format_currency(123456.78, 'EUR', locale='es_ES'))  # €123,456.78

সারাংশ

  • Locale নির্ধারণ (i18n): এটি অ্যাপ্লিকেশনকে একাধিক ভাষা এবং সংস্কৃতির জন্য প্রস্তুত করে, যাতে ভবিষ্যতে বিভিন্ন ভাষার জন্য সাপোর্ট প্রদান করা যায়। এটি সময়, তারিখ, মুদ্রা ইত্যাদি ফরম্যাটিং সহ বিভিন্ন স্থানীয় বৈশিষ্ট্য নিয়ন্ত্রণ করে।
  • রিসোর্স ফাইল (l10n): .po ফাইলের মাধ্যমে আপনি ভাষার অনুবাদ এবং কাস্টমাইজেশন করতে পারেন। gettext এর মাধ্যমে ভাষার স্ট্রিং অনুবাদ করা হয়, যা আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় উপলব্ধ করে।

Web2Py তে Locale নির্ধারণ এবং রিসোর্স ফাইল ব্যবহারের মাধ্যমে আপনি সহজেই আপনার অ্যাপ্লিকেশনটি আন্তর্জাতিকভাবে কাস্টমাইজ এবং লোকালাইজ করতে পারবেন।

Content added By

User Preferences সেভ করা

204

Web2Py তে User Preferences সেভ করা একটি গুরুত্বপূর্ণ ফিচার, যেখানে ব্যবহারকারীরা তাদের পছন্দের সেটিংস বা তথ্য (যেমন থিম, ভাষা, বিজ্ঞপ্তি সেটিংস) সংরক্ষণ করতে পারে। এই তথ্য সাধারণত ব্যবহারকারীর ডেটাবেসে সেভ করা হয়, যাতে প্রতিবার লগ ইন করার পর ইউজার তাদের পছন্দ অনুযায়ী অ্যাপ্লিকেশনটি কাস্টমাইজ করতে পারে। Web2Py তে User Preferences সেভ করার জন্য আপনাকে কিছু সাধারণ ধাপ অনুসরণ করতে হবে।


Web2Py তে User Preferences সেভ করার প্রক্রিয়া

১. ডেটাবেসে User Preferences টেবিল তৈরি করা

প্রথমে, আপনাকে একটি টেবিল তৈরি করতে হবে যেখানে ইউজারের পছন্দ (preferences) সংরক্ষণ করা হবে। উদাহরণস্বরূপ, আপনি ইউজারের থিম এবং ভাষা পছন্দ সংরক্ষণ করতে পারেন।

Model (models/db.py):

db.define_table('user_preferences',
                Field('user_id', 'reference auth_user'),
                Field('theme', 'string', default='light'),  # থিম পছন্দ (light বা dark)
                Field('language', 'string', default='en'),  # ভাষার পছন্দ (en বা bn)
                Field('notifications', 'boolean', default=True)  # বিজ্ঞপ্তি পছন্দ
)

এখানে, user_preferences টেবিলটি ইউজারের থিম, ভাষা এবং বিজ্ঞপ্তি সেটিংস সেভ করবে। user_id ফিল্ডটি auth_user টেবিলের সাথে সংযুক্ত, যাতে প্রতিটি পছন্দ নির্দিষ্ট ইউজারের জন্য সংরক্ষণ করা হয়।

২. ইউজারের পছন্দ সেভ করা

আপনার অ্যাপ্লিকেশনে একটি ফর্ম তৈরি করতে হবে, যেখানে ব্যবহারকারী তাদের পছন্দ পরিবর্তন করতে পারবেন (যেমন থিম, ভাষা, বিজ্ঞপ্তি ইত্যাদি)। ফর্মটি গ্রহণ করার পর, আপনি সেই ডেটা user_preferences টেবিলের মধ্যে সেভ করতে পারবেন।

Controller (controllers/default.py):

def preferences():
    # ইউজারের আগের পছন্দগুলো ডেটাবেস থেকে আনুন
    user_id = auth.user.id  # লগ ইন করা ইউজারের ID
    preferences = db(db.user_preferences.user_id == user_id).select().first()

    # যদি ইউজারের পছন্দ না থাকে, নতুন রেকর্ড তৈরি করুন
    if not preferences:
        preferences = db.user_preferences.insert(user_id=user_id)

    form = SQLFORM(db.user_preferences, preferences)
    
    if form.process().accepted:
        response.flash = "Preferences updated successfully!"
    elif form.errors:
        response.flash = "Error updating preferences."
    
    return dict(form=form)

এখানে, preferences() ফাংশনটি প্রথমে ডেটাবেস থেকে ইউজারের পছন্দের তথ্য নেয় এবং তারপর SQLFORM এর মাধ্যমে একটি ফর্ম প্রদর্শন করে। ব্যবহারকারী ফর্মটি সাবমিট করলে, তার পছন্দগুলি ডেটাবেসে সেভ হয়ে যাবে।

৩. ভিউতে ফর্ম প্রদর্শন

ইউজার পছন্দ পরিবর্তন করার জন্য একটি ফর্ম তৈরি করতে হবে। এই ফর্মে ব্যবহারকারী থিম, ভাষা এবং বিজ্ঞপ্তি সেটিংস পরিবর্তন করতে পারবেন।

View (views/default/preferences.html):

<h1>Update Your Preferences</h1>
{{=form}}

এখানে, {{=form}} এর মাধ্যমে preferences ফর্মটি ভিউতে প্রদর্শন করা হবে, যেখানে ইউজার তার পছন্দ পরিবর্তন করতে পারবেন।

৪. ইউজার পছন্দের ডেটা প্রদর্শন

ব্যবহারকারীর পছন্দের তথ্য রিটার্ন করার জন্য, আপনি ডেটাবেস থেকে সেই তথ্য নিয়ে এসে ব্যবহারকারীকে দেখাতে পারেন।

Controller (controllers/default.py):

def show_preferences():
    user_id = auth.user.id  # লগ ইন করা ইউজারের ID
    preferences = db(db.user_preferences.user_id == user_id).select().first()

    if preferences:
        return dict(preferences=preferences)
    else:
        return dict(preferences=None)

View (views/default/show_preferences.html):

<h1>Your Preferences</h1>
{{if preferences:}}
    <p>Theme: {{=preferences.theme}}</p>
    <p>Language: {{=preferences.language}}</p>
    <p>Notifications: {{=preferences.notifications}}</p>
{{else:}}
    <p>No preferences set yet.</p>
{{pass}}

এখানে, show_preferences() ফাংশনটি ইউজারের পছন্দগুলি রিটার্ন করে এবং ভিউতে তা প্রদর্শন করা হয়।

৫. ইউজারের পছন্দ ডেটা রিড করা (Retrieving Preferences)

ব্যবহারকারীর পছন্দের তথ্য সেভ হওয়ার পর, আপনাকে সেই পছন্দ অনুসারে অ্যাপ্লিকেশনের সেটিংস পরিবর্তন করতে হবে। উদাহরণস্বরূপ, আপনি ইউজারের থিমের পছন্দ অনুযায়ী অ্যাপ্লিকেশনটির থিম পরিবর্তন করতে পারেন।

Controller (controllers/default.py):

def apply_preferences():
    user_id = auth.user.id  # লগ ইন করা ইউজারের ID
    preferences = db(db.user_preferences.user_id == user_id).select().first()

    if preferences:
        theme = preferences.theme
        language = preferences.language
        notifications = preferences.notifications

        # থিম ও ভাষা অনুযায়ী অ্যাপ্লিকেশন কনফিগার করুন
        response.title = f"App - {theme.capitalize()} Theme"
        # অন্যান্য কনফিগারেশন বা UI পরিবর্তন করা যেতে পারে

    return dict(preferences=preferences)

৬. স্ট্যাটিক ফাইলের মাধ্যমে থিম পরিবর্তন

আপনি ব্যবহারকারীর থিমের পছন্দ অনুযায়ী সিএসএস ফাইল লোড করতে পারেন। উদাহরণস্বরূপ, যদি ইউজার dark থিম পছন্দ করেন, তাহলে dark.css ফাইল লোড হবে।

View (views/default/layout.html):

<head>
    <title>{{=response.title}}</title>
    {{if preferences.theme == 'dark':}}
        <link rel="stylesheet" href="{{=URL('static', 'css/dark.css')}}">
    {{else:}}
        <link rel="stylesheet" href="{{=URL('static', 'css/light.css')}}">
    {{pass}}
</head>

এখানে, ইউজারের থিম অনুযায়ী সিএসএস ফাইল লোড করা হচ্ছে।


সারাংশ

Web2Py তে User Preferences সেভ করা সহজ এবং কার্যকরী। আপনি user_preferences নামে একটি টেবিল তৈরি করে ইউজারের পছন্দ সংরক্ষণ করতে পারেন এবং SQLFORM এর মাধ্যমে সেগুলি পরিবর্তন করতে পারেন। এই প্রক্রিয়া ব্যবহারকারীদের ব্যক্তিগত পছন্দ অনুযায়ী অ্যাপ্লিকেশন কাস্টমাইজ করতে সহায়তা করে।

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

এভাবে Web2Py তে ইউজারের পছন্দ সেভ এবং হ্যান্ডল করা যায়, যা ব্যবহারকারীদের জন্য একটি কাস্টমাইজড এক্সপিরিয়েন্স তৈরি করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...