কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে অ্যাপের ভাষা প্রোগ্রামেটিক্যালি পরিবর্তন করার উপায়

রানটাইমে অ্যাপ লোকেল পরিবর্তন করুন

এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে ব্যবহারকারীর ডিভাইসের সিস্টেম ভাষা ছাড়া অ্যাপের ভিতরে ভিন্ন ভাষা সেট করা যায়। এটি মাল্টিলিংগুয়াল অ্যাপের জন্য জরুরি।

ধাপ ১: প্রজেক্ট তৈরি

ধাপ ২: লেআউট

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        android:textSize="30dp"
        android:textStyle="bold"
        android:textColor="@color/colorPrimary"
        android:layout_centerInParent="true"/>
</RelativeLayout>

ধাপ ৩: MainActivity.java (Locale পরিবর্তন লজিক)

import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView-এর আগে লোকেল সেট করুন
        setAppLocale("bg"); // বুলগেরিয়ান (উদাহরণ)
        setContentView(R.layout.activity_main);
    }
    
    private void setAppLocale(String localeCode) {
        Resources resources = getResources();
        DisplayMetrics dm = resources.getDisplayMetrics();
        Configuration config = resources.getConfiguration();
        
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            config.setLocale(new Locale(localeCode.toLowerCase()));
        } else {
            config.locale = new Locale(localeCode.toLowerCase());
        }
        resources.updateConfiguration(config, dm);
    }
}

ধাপ ৪: ভাষা-নির্দিষ্ট স্ট্রিং রিসোর্স

res/values-bg/strings.xml ফোল্ডার ও ফাইল তৈরি করুন:

<resources>
    <string name="app_name">Sample</string>
    <string name="hello_world">дравей свят</string> <!-- বুলগেরিয়ান -->
</resources>

ধাপ ৫: ম্যানিফেস্ট (সাধারণ)

গুরুত্বপূর্ণ আপডেট: AppCompatDelegate (আধুনিক পদ্ধতি)

AppCompat 1.1.0+ থেকে AppCompatDelegate.setApplicationLocales() ব্যবহার করুন:

// Application ক্লাসে বা প্রারম্ভিক এক্টিভিটিতে
AppCompatDelegate.setApplicationLocales(
    LocaleListCompat.forLanguageTags("bn") // বাংলা
);

সেটিংস পেজ থেকে ভাষা বদলানো (Android 13+ / API 33+)

সিস্টেম সেটিংস থেকে অ্যাপ-স্তরীয় ভাষা বদলানো যায় (App Locales)। ম্যানিফেস্টে যোগ করুন:

<property
    android:name="android.app.locale_metadata"
    android:value="@xml/locales_config" />
// res/xml/locales_config.xml-এ সাপোর্টেড লোকেল তালিকা দিন

সেরা অনুশীলন

  • ভাষা পরিবর্তনের পর recreate() কল করুন এক্টিভিটি রিফ্রেশ করতে
  • ব্যবহারকারীর পছন্দ SharedPreferences-এ সংরক্ষণ করুন
  • RTL ভাষা (আরবি, হিব্রু) 위한 supportsRtl="true" ম্যানিফেস্টে রাখুন
  • Jetpack Compose-এ LocalConfiguration.current বা CompositionLocal ব্যবহার করুন
  1. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি ফোন নম্বর পাওয়ার পদ্ধতি

  2. Android-এ View-এর ব্যাকগ্রাউন্ড কালার এনিমেট করার পদ্ধতি

  3. অ্যান্ড্রয়েডে গুগল অ্যাসিস্ট্যান্টের ভাষা পরিবর্তন করার পদ্ধতি

  4. একক iPhone অ্যাপের ভাষা পরিবর্তন করার পদ্ধতি