.NET MAUI-এ Multiple Language Support (বহু ভাষার সমর্থন) তৈরি করার জন্য আপনি Localizable Resources ব্যবহার করতে পারেন, যা ব্যবহারকারীর ভাষা অনুযায়ী অ্যাপ্লিকেশনটির টেক্সট পরিবর্তন করতে সহায়তা করে। এটি .resx ফাইলের মাধ্যমে বিভিন্ন ভাষার জন্য কনটেন্ট প্রদান করে এবং Dependency Service অথবা System.Globalization ব্যবহার করে সঠিক ভাষা সিলেক্ট করার সুযোগ দেয়।
এখানে, .NET MAUI অ্যাপ্লিকেশনে Multiple Language Support তৈরি করার জন্য কিছু সাধারণ পদক্ষেপ আলোচনা করা হবে।
Step 1: Resource Files তৈরি করা
প্রথমেই আপনাকে .resx (Resource) ফাইল তৈরি করতে হবে, যেখানে আপনি বিভিন্ন ভাষার জন্য স্ট্রিং এবং টেক্সট স্টোর করবেন।
1. Create Resource Files
- Resx File (.resx) ব্যবহার করে আপনি বিভিন্ন ভাষার জন্য রিসোর্স তৈরি করবেন। উদাহরণস্বরূপ,
Resources.resxফাইলটি ইংরেজি ভাষার জন্য এবংResources.bn.resxফাইলটি বাংলা ভাষার জন্য তৈরি করতে হবে।
English Resources (Resources.resx)
- Right-click on the Resources folder in your project.
- Select Add > New Item.
- Choose Resources File and name it
Resources.resx. - Add key-value pairs for all the strings you want to translate, like so:
| Key | Value |
|---|---|
WelcomeText | Welcome to the App! |
LoginButton | Login |
Bengali Resources (Resources.bn.resx)
- Create another
.resxfile namedResources.bn.resxfor the Bengali translation. - Add the Bengali translations as key-value pairs:
| Key | Value |
|---|---|
WelcomeText | অ্যাপে স্বাগতম! |
LoginButton | লগইন করুন |
Step 2: Localization Code in .NET MAUI
এখন আপনাকে CultureInfo এবং ResourceManager ব্যবহার করে অ্যাপ্লিকেশনে ভাষা পরিবর্তনের কোড লিখতে হবে। এটি ডিভাইসের PreferredLanguage অনুসারে ভাষা পরিবর্তন করবে।
App.xaml.cs ফাইলে ভাষা নির্বাচন:
using Microsoft.Maui.Controls;
using System.Globalization;
public partial class App : Application
{
public App()
{
InitializeComponent();
// Set the current culture and language
var currentCulture = CultureInfo.CurrentCulture.Name;
// Set default culture to English if no language is set
if (string.IsNullOrEmpty(currentCulture) || currentCulture == "en")
{
currentCulture = "en";
}
// Set culture dynamically
SetCulture(currentCulture);
MainPage = new MainPage();
}
private void SetCulture(string culture)
{
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(culture);
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo(culture);
}
}
এখানে, CultureInfo.CurrentCulture.Name ডিভাইসের প্রেফারড ভাষা নির্ধারণ করে এবং SetCulture মেথড ব্যবহার করে ভাষা সেট করে।
Step 3: Accessing Resources in XAML
XAML তে ভাষা পরিবর্তনের জন্য Binding ব্যবহার করা হয়। এর মাধ্যমে, আপনি resx ফাইলের ডাটা অ্যাক্সেস করতে পারেন।
MainPage.xaml Example:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MultipleLanguageApp.MainPage">
<StackLayout>
<Label Text="{Binding WelcomeText}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<Button Text="{Binding LoginButton}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</StackLayout>
</ContentPage>
এখানে, Label এবং Button এর টেক্সট WelcomeText এবং LoginButton এর মাধ্যমে binding করা হয়েছে যা .resx ফাইল থেকে ডাটা নিয়ে আসবে।
Step 4: Binding Resources in Code Behind
এখন আপনাকে MainPage.xaml.cs ফাইলে ResourceManager ব্যবহার করে রিসোর্সকে binding করতে হবে।
MainPage.xaml.cs:
using Microsoft.Maui.Controls;
using System.Resources;
namespace MultipleLanguageApp
{
public partial class MainPage : ContentPage
{
private ResourceManager _resourceManager;
public MainPage()
{
InitializeComponent();
_resourceManager = new ResourceManager("MultipleLanguageApp.Resources", typeof(App).Assembly);
// Binding the translated strings
this.BindingContext = new
{
WelcomeText = _resourceManager.GetString("WelcomeText"),
LoginButton = _resourceManager.GetString("LoginButton")
};
}
}
}
এখানে, ResourceManager ব্যবহার করে Resources.resx ফাইল থেকে স্ট্রিংগুলি নিয়ে BindingContext এ সেট করা হয়েছে।
Step 5: Switching Languages
এখন, যদি আপনি dynamic language switching করতে চান, আপনি একটি ল্যাঙ্গুয়েজ চেঞ্জ বাটন বা ড্রপডাউন ব্যবহার করতে পারেন, যা ব্যবহারকারীকে ভাষা পরিবর্তন করার সুযোগ দেয়।
Switch Language Button Example:
private void OnLanguageChanged(object sender, EventArgs e)
{
var selectedLanguage = "bn"; // Set to Bengali (you can choose dynamically)
SetCulture(selectedLanguage);
// Update the resources after changing culture
this.BindingContext = new
{
WelcomeText = _resourceManager.GetString("WelcomeText"),
LoginButton = _resourceManager.GetString("LoginButton")
};
}
এখানে, SetCulture ব্যবহার করে ভাষা পরিবর্তন করা হয়েছে এবং তারপর BindingContext আপডেট করা হয়েছে যাতে UI আপডেট হয়।
Step 6: Supporting Multiple Languages (Optional)
এছাড়া, আপনি চাইলে আরও অনেক ভাষা যোগ করতে পারেন, যেমন:
- French (
Resources.fr.resx) - Spanish (
Resources.es.resx)
এমনভাবে প্রতিটি ভাষার জন্য আলাদা .resx ফাইল তৈরি করুন এবং ভাষা পরিবর্তন করা হলে সেগুলি লোড হবে।
Conclusion
- Multiple Language Support তৈরির জন্য .resx ফাইল ব্যবহার করে বিভিন্ন ভাষার রিসোর্স তৈরি করতে হয়।
- CultureInfo এবং ResourceManager ব্যবহার করে অ্যাপ্লিকেশনে ভাষা পরিবর্তন করা সম্ভব।
- .NET MAUI তে binding ব্যবহার করে XAML ফাইলের টেক্সটকে রিসোর্সের সাথে সংযুক্ত করা যায়।
- Dynamic Language Switching-এর জন্য একটি সিস্টেম তৈরি করে আপনি ব্যবহারকারীর ভাষা পরিবর্তন করতে পারেন।
এটি .NET MAUI অ্যাপ্লিকেশনে Multiple Language Support তৈরি করার একটি কার্যকরী এবং সহজ পদ্ধতি।
Read more