Microsoft Technologies Resource Dictionary ব্যবহার করে Multi-language Support গাইড ও নোট

293

WPF (Windows Presentation Foundation) এ Resource Dictionary ব্যবহৃত হয় UI উপাদানগুলোর জন্য রিসোর্স যেমন স্টাইল, কালার, টেক্সট, ইমেজ ইত্যাদি কনফিগার করার জন্য। এটি বিশেষভাবে Localization এবং Internationalization এর জন্য ব্যবহৃত হয়, যাতে অ্যাপ্লিকেশনটি বিভিন্ন ভাষায় সমর্থন প্রদান করতে পারে। Resource Dictionary ব্যবহার করে সহজেই মাল্টি-ল্যাঙ্গুয়েজ (Multi-language) সাপোর্ট যোগ করা যায়।

Resource Dictionary কী?

Resource Dictionary একটি XAML ফাইল যেখানে আপনি অ্যাপ্লিকেশন বা উইন্ডোর জন্য বিভিন্ন রিসোর্স সংরক্ষণ করতে পারেন। এগুলোর মধ্যে strings, styles, templates, colors, ইত্যাদি অন্তর্ভুক্ত হতে পারে। মাল্টি-ল্যাঙ্গুয়েজ সাপোর্টের ক্ষেত্রে, আপনি আলাদা আলাদা Resource Dictionary তৈরি করতে পারেন বিভিন্ন ভাষার জন্য, এবং সেই অনুযায়ী রিসোর্স সিলেক্ট করতে পারেন ব্যবহারকারীর নির্বাচিত ভাষার ওপর ভিত্তি করে।

WPF-এ Multi-language Support তৈরি করার জন্য Resource Dictionary ব্যবহার

১. Resource Dictionary Structure Setup

আপনার অ্যাপ্লিকেশনে একাধিক ভাষার জন্য আলাদা আলাদা Resource Dictionary তৈরি করতে হবে। নিচে দুটি Resource Dictionary এর উদাহরণ দেওয়া হল: একটি ইংরেজি এবং আরেকটি বাংলা।

Step 1: English Resource Dictionary (English.xaml)

<!-- English.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <System:String x:Key="WelcomeText">Welcome</System:String>
    <System:String x:Key="ButtonText">Click Me</System:String>

</ResourceDictionary>

Step 2: Bengali Resource Dictionary (Bengali.xaml)

<!-- Bengali.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <System:String x:Key="WelcomeText">স্বাগতম</System:String>
    <System:String x:Key="ButtonText">আমাকে ক্লিক করুন</System:String>

</ResourceDictionary>

এখানে দুটি আলাদা ResourceDictionary তৈরি করা হয়েছে: একটি ইংরেজি এবং অন্যটি বাংলা ভাষার জন্য।


২. App.xaml এ Resource Dictionaries যোগ করা

App.xaml ফাইলে আপনি Resource Dictionaries যোগ করবেন যাতে আপনার অ্যাপ্লিকেশনটি ভাষা পরিবর্তন করতে পারে।

<Application x:Class="WPFApplication.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <!-- Default Language - English -->
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="English.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

এখানে English.xaml ResourceDictionary ডিফাইন করা হয়েছে। আপনি যখন ভাষা পরিবর্তন করবেন, তখন এই ডিক্লেয়ারেশন আপডেট করবেন।


৩. Language Switcher Implementation

ভাষা পরিবর্তনের জন্য একটি সিস্টেম তৈরি করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো, যেখানে আমরা Button ক্লিক করার মাধ্যমে ভাষা পরিবর্তন করব।

Step 1: XAML UI (MainWindow.xaml)

<Window x:Class="WPFApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Language Switcher" Height="200" Width="300">
    <Grid>
        <TextBlock Name="welcomeText" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20"/>
        <Button Content="Switch to Bengali" HorizontalAlignment="Center" VerticalAlignment="Bottom" Click="SwitchLanguage_Click"/>
    </Grid>
</Window>

এখানে একটি TextBlock এবং Button রয়েছে। বাটন ক্লিক করলে ভাষা পরিবর্তন হবে এবং TextBlock এর টেক্সট পরিবর্তিত হবে।

Step 2: C# Code for Language Switching (MainWindow.xaml.cs)

using System.Windows;

namespace WPFApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            LoadLanguage("English");  // Default Language is English
        }

        private void SwitchLanguage_Click(object sender, RoutedEventArgs e)
        {
            // Switch language to Bengali
            LoadLanguage("Bengali");
        }

        private void LoadLanguage(string language)
        {
            // Clear existing resources
            Application.Current.Resources.MergedDictionaries.Clear();

            // Load the selected language resources
            if (language == "Bengali")
            {
                Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
                {
                    Source = new Uri("Bengali.xaml", UriKind.Relative)
                });
            }
            else
            {
                Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
                {
                    Source = new Uri("English.xaml", UriKind.Relative)
                });
            }

            // Update UI elements
            welcomeText.Text = (string)Application.Current.Resources["WelcomeText"];
        }
    }
}

ব্যাখ্যা:

  • LoadLanguage মেথডটি ভাষার উপর ভিত্তি করে উপযুক্ত ResourceDictionary লোড করে। শুরুতে ইংরেজি ভাষা লোড করা হচ্ছে, এবং বাটন ক্লিক করলে বাংলা ভাষায় পরিবর্তন হবে।
  • TextBlock এর টেক্সট আপডেট করা হয়, যাতে রিসোর্স থেকে "WelcomeText" চাবি অনুযায়ী নতুন ভাষায় পরিবর্তিত টেক্সট প্রদর্শিত হয়।

৪. Dynamic Language Switching

আপনি ComboBox বা Menu ব্যবহার করে ইউজারের জন্য ভাষা সিলেক্ট করার একটি ইন্টারফেসও তৈরি করতে পারেন। নিচে এমন একটি উদাহরণ দেওয়া হলো, যেখানে ComboBox ব্যবহার করে ভাষা পরিবর্তন করা যায়।

Example: Language Selector with ComboBox

<Window x:Class="WPFApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Language Switcher" Height="200" Width="300">
    <Grid>
        <ComboBox Name="languageComboBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="150" SelectionChanged="LanguageComboBox_SelectionChanged">
            <ComboBoxItem Content="English" />
            <ComboBoxItem Content="Bengali" />
        </ComboBox>
        <TextBlock Name="welcomeText" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20"/>
    </Grid>
</Window>

C# Code:

private void LanguageComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBox comboBox = sender as ComboBox;
    string selectedLanguage = (comboBox.SelectedItem as ComboBoxItem).Content.ToString();
    LoadLanguage(selectedLanguage);
}

এখানে, ComboBox তে দুটি ভাষা (ইংরেজি এবং বাংলা) নির্বাচন করা হয়েছে। ইউজার যখন একটি ভাষা নির্বাচন করবে, তখন LanguageComboBox_SelectionChanged ইভেন্টের মাধ্যমে সেই ভাষার রিসোর্স লোড হবে।


সারাংশ (Summary)

  • Resource Dictionary WPF তে মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট এবং অন্যান্য রিসোর্স যেমন স্টাইল, টেক্সট ইত্যাদি কাস্টমাইজ করতে ব্যবহৃত হয়।
  • বিভিন্ন ভাষার জন্য আলাদা ResourceDictionary তৈরি করে সহজেই অ্যাপ্লিকেশনটির ভাষা পরিবর্তন করা যায়।
  • ComboBox বা Button ব্যবহার করে আপনি ভাষা সিলেক্ট বা পরিবর্তন করতে পারেন এবং UI তে তার প্রভাব দেখতে পারেন।
  • Application.Resources.MergedDictionaries.Clear() ব্যবহার করে পুরনো রিসোর্সগুলি মুছে ফেলে নতুন ভাষার রিসোর্স লোড করা হয়।

এভাবে WPF তে Resource Dictionary ব্যবহার করে সহজেই Multi-language Support যোগ করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...