ডিভাইসে বর্তমান ভাষা পান


608

আমরা কীভাবে বর্তমান ভাষা অ্যান্ড্রয়েড ডিভাইসে নির্বাচিত পেতে পারি?


10
এখানে বেশিরভাগ উত্তর আবেদনের ভাষা পান। আপনি কোডের মধ্যে অ্যাপ্লিকেশনটির ডিফল্ট লোকেল সেট করতে পারেন তা দেওয়া, সঠিক উত্তরটি সরপে দেওয়া উত্তর - এটি আপনাকে ডিভাইসের লোকেল দেয়।
ভিক্টর আইনেস্কু

@ ভিক্টোরিওনস্কু মন্তব্যের জন্য আপনাকে ধন্যবাদ। সারপের উত্তরটি ডিভাইসের লোকেল আনার সঠিক উত্তর। দয়া করে এটি উল্লেখ করুন। stackoverflow.com/a/28498119/3762067
Varad Mondkar

উত্তর:


834

আপনি যদি আপনার ডিভাইসের নির্বাচিত ভাষা পেতে চান তবে এটি আপনাকে সহায়তা করতে পারে:

Locale.getDefault().getDisplayLanguage();

73
getDisplayLanguage () ভাষাটি স্থানীয়করণ করবে। আপনি যদি কেবল আইএসও কোড পেতে আগ্রহী হন (উদাহরণস্বরূপ যদি বা সুইচ স্টেটমেন্টগুলির জন্য) ব্যবহার করেন 'লোকেল.জেট ডেফল্ট ()। GetISO3 ভাষা ();'
নুয়াল

13
getISO3Language () De এর পরিবর্তে Deutschland (জার্মানি) এর জন্য "Deu" এর মতো জিনিস ফিরিয়ে দিয়েছে ...
টোবিয়াস

372
আপনি Locale.getDefault().getLanguage();সাধারণ ভাষার কোড (যেমন "ডি", "এন") পেতে ব্যবহার করতে পারেন ।
মাস্কার্ডিনাস

35
@ ডেরাগান, এটি আপনাকে সর্বদা আপনার ডিভাইসের জন্য ভাষা দেয় না, কেবল আপনার অ্যাপের জন্য। উদাহরণস্বরূপ, যদি আমি কল করি Locale.setDefault("ru")এবং সিস্টেম সেটিংসে ভাষা ইংরাজীতে সেট করা থাকে তবে পদ্ধতিটি "রু"Locale.getDefault().getLanguage() ফিরে আসবে , তবে "এন" নয় । আসল SYSTEM লোকেল / ভাষা পাওয়ার আরও কি পদ্ধতি আছে? আমি এখানে নথিভুক্ত সমাধান খুঁজে পাইনি , তবে এর চেয়েও আরও দুর্দান্ত সমাধান আছে?
প্রিজফ

47
আমি পছন্দ করি Locale.getDefault().toString()যা কোন স্ট্রিং দেয় যা লোকেলকে সম্পূর্ণরূপে সনাক্ত করে, যেমন "en_US"।
টম

835

আমি আমার অ্যান্ড্রয়েড 4.1.2 ডিভাইসে লোকাল পদ্ধতিগুলি এবং ফলাফলগুলি পরীক্ষা করে দেখেছি:

Locale.getDefault().getLanguage()       ---> en      
Locale.getDefault().getISO3Language()   ---> eng 
Locale.getDefault().getCountry()        ---> US 
Locale.getDefault().getISO3Country()    ---> USA 
Locale.getDefault().getDisplayCountry() ---> United States 
Locale.getDefault().getDisplayName()    ---> English (United States) 
Locale.getDefault().toString()          ---> en_US
Locale.getDefault().getDisplayLanguage()---> English
Locale.getDefault().toLanguageTag()     ---> en-US

7
ধন্যবাদ, সম্ভাবনার তালিকা সহ সুন্দর। "টম" দ্বারা একটি মন্তব্যে প্রস্তাবিত আপনি কি দয়া করে "লোকাল.জেট ডেফল্ট ()। টুস্ট্রিং ()" যুক্ত করতে পারেন।
রেনিপেট

আমি বিভ্রান্ত আপনি কি ডেরাগান থেকে উত্তরটি অনুলিপি করেছেন?
ডাইটার

1
এর জন্যে দুঃখিত. এটি সত্য যে আমি এটি সেখানে যুক্ত করেছি। আমার এখানে একটি নোট রেখে দেওয়া উচিত ছিল। লোকেদের দ্রুত উত্তর প্রয়োজন তা খুঁজে পেতে সহায়তা করার চেষ্টা করে আমি ভুল করেছি। কারণ আপনার স্পষ্টতই আরও ভাল উত্তর। তবে অবশ্যই আপনার কখনই শীর্ষে আসবে না, কারণ লোকেরা এটি শীর্ষের মতো প্রায়শই দেখে না। আমরা যদি সেখানে এটি যুক্ত করে থাকি তবে এটি কী এই উত্তর থেকে এসেছে?
প্যাট্রিক বুস

1
আবারো স্বাগতম. আমি যে সমাধান পছন্দ না। বর্তমানে ডিআরগানের উত্তরটি প্রথম স্থানে এবং দ্বিতীয় হিসাবে আমার দেখানো হয়েছে। একজন গবেষকের জন্য, প্রশ্ন পৃষ্ঠাতে দ্বিতীয় উত্তরটি পরীক্ষা করা এতটা কঠিন হওয়া উচিত নয়। @ পিনকি যদি স্বীকৃত উত্তর পরিবর্তন করে তবে ভাল হয়। তবে দেখে মনে হচ্ছে গোলাপী সর্বশেষ 3 মাস আগে দেখা হয়েছিল।
ট্র্যান্ট করুন

1
এছাড়াও Locale.getDefault().getDisplayLanguage()ফিরে আসে"English"
ক্রীড়া

105

আমার জন্য যা কাজ করেছিল তা হ'ল:

Resources.getSystem().getConfiguration().locale;

Resources.getSystem() বিশ্বব্যাপী শেয়ারড রিসোর্সস অবজেক্টটি ফেরত দেয় যা কেবলমাত্র সিস্টেম সংস্থানগুলিতে অ্যাক্সেস সরবরাহ করে (কোনও অ্যাপ্লিকেশন সংস্থান নেই) এবং বর্তমান স্ক্রিনের জন্য কনফিগার করা হয়নি (ডাইমেনশন ইউনিট ব্যবহার করতে পারে না, অভিমুখের ভিত্তিতে পরিবর্তিত হয় না)।

যেহেতু getConfiguration.localeএখন হ্রাস করা হয়েছে, অ্যান্ড্রয়েড নওগাতে প্রাথমিক লোকাল পাওয়ার পছন্দের উপায়টি হ'ল:

Resources.getSystem().getConfiguration().getLocales().get(0);

পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণগুলির সাথে সামঞ্জস্যের গ্যারান্টি দেওয়া একটি সম্ভাব্য সমাধান হ'ল একটি সহজ চেক:

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
    //noinspection deprecation
    locale = Resources.getSystem().getConfiguration().locale;
}

হালনাগাদ

সমর্থন লাইব্রেরি দিয়ে শুরু করে 26.1.0আপনার অ্যান্ড্রয়েড সংস্করণটি পরীক্ষা করার দরকার নেই কারণ এটি একটি সুবিধাজনক পদ্ধতি পশ্চাৎসঙ্গতভাবে সরবরাহ করে getLocales()

কেবল কল করুন:

ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());

6
getConfigration ()। লোকেল বর্তমানে বঞ্চিত হয়েছে, getConfigration ()। getLocales () পান (0) এর পরিবর্তে ব্যবহার করুন
এলিসিও ওকাম্পোস 31:38

4
এটি এই প্রশ্নের সঠিক উত্তর। অন্যান্য উত্তরগুলি ডিভাইস নয়, অ্যাপ্লিকেশনটির স্থানীয়ভাবে পান।
hofs

6
আমি জানি না উত্তরটি লেখার সময় এটি বিদ্যমান ছিল কিনা, তবে সমর্থন লাইব্রেরিতে এর পিছনের সামঞ্জস্যপূর্ণ সংস্করণ রয়েছে, নিজেকে পিছনে সামঞ্জস্য লেখার দরকার নেই। ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())
থর্বার

@ থারবায়ার যেমন উল্লেখ করেছেন, এখন নতুন সমর্থন লাইব্রেরি পদ্ধতিটি ব্যবহার getLocalesকরার উপায়। আমি আমার উত্তর আপডেট করেছি।
সার্পে

এটি সঠিক উত্তর। অন্যরা সিস্টেমের নয় বরং প্রয়োগের ভাষা ফিরিয়ে দেয়।
চিন্তন রাঠোদ

44

আপনি বর্তমান স্থানীয় ভাষা থেকে ভাষাটি 'এক্সট্র্যাক্ট' করতে পারেন। আপনি স্ট্যান্ডার্ড জাভা এপিআই এর মাধ্যমে বা অ্যান্ড্রয়েড প্রসঙ্গটি ব্যবহার করে লোকেলটি বের করতে পারেন। উদাহরণস্বরূপ, নীচের দুটি লাইন সমতুল্য:

String locale = context.getResources().getConfiguration().locale.getDisplayName();
String locale = java.util.Locale.getDefault().getDisplayName();

10
এটা সত্য নয়। তারা ভিন্ন ধরনের. ব্যবহারকারী লোকেল পরিবর্তন করে যদি প্রথম পরিবর্তন করতে পারে। দ্বিতীয়টি হ'ল ফোনে প্রাক ইনস্টল করা। এটি ব্যবহারকারী যা কিছু করে তা পরিবর্তন করে না changes
গ্রেগম

16
গ্রেগমের দ্বারা মন্তব্য ভুল হতে পারে। উত্তর দেখুন airewyre দ্বারা।
জান

4
@ গ্রেগমের মন্তব্যটি ভুল। এটি নিজেই চেষ্টা করে দেখুন এবং আপনি দেখতে পাবেন যে আপনি যখন সেটিংগুলিতে ভাষা পরিবর্তন করবেন তখন লোকাল.জেট ডেফল্ট () পরিবর্তন হবে।
প্যাট্রিক বুস

দেখতে উচিত stackoverflow.com/questions/10657747/...
Wernight

যদিও @ গ্রেগমের মন্তব্যটি ভুল, তিনি এখনও ঠিক বলেছেন যে দুটি লাইনের একই লোকেলটি ফেরত দেওয়ার দরকার নেই। Locale.setDefault()আরও কিছু লোকালের সাথে আগেই কল করুন এবং আপনি বিভিন্ন ফলাফল পান।
arekolek

35

অন্যদের সময় বা / বা বিভ্রান্তি বাঁচাতে আমি এটি ভাগ করে নিতে চাই যে আমি জোহান পেলগ্রিম উপরে প্রস্তাবিত দুটি বিকল্পের চেষ্টা করেছি এবং আমার ডিভাইসে সেগুলি সমতুল্য - ডিফল্ট অবস্থান পরিবর্তন হয়েছে কিনা।

সুতরাং আমার ডিভাইসের ডিফল্ট সেটিংসটি হ'ল ইংরাজী (ইউনাইটেড কিন্ডোম) এবং এই অবস্থায় প্রত্যাশা অনুযায়ী জোহানের উত্তরের উভয় স্ট্রিং একই ফলাফল দেয় give আমি যদি তখন ফোনের সেটিংসে লোকেল পরিবর্তন করে (ইতালিয়ানো (ইতালি) বলি এবং আবার চালনা করি তবে জোহানের উত্তরের দুটি স্ট্রিংই লোকালটিকে ইতালীয়ানো (ইতালি) হিসাবে দেয়।

সুতরাং আমি জোহানের মূল পোস্টটি সঠিক হতে এবং গ্রেগমের মন্তব্যটি ভুল বলে বিশ্বাস করি।



17

আপনি এটি ব্যবহার করতে পারেন

boolean isLang = Locale.getDefault().getLanguage().equals("xx");

যখন "এক্সএক্স" কোনও "এন", "ফরাসী", "এসপি", "আর" .... এর মতো কোনও ভাষা কোড হয়


3
যদি (Locale.ENGLISH.equals (Locale.getDefault () getLanguage ())।) {...}
ক্লেমেন্ট মার্টিনো

1
@ ক্লেমেটমার্টিনো আপনার পরামর্শটি ENGLISH এর মতো প্রাক-সংজ্ঞায়িত লোকেলগুলির ক্ষেত্রে ঠিক আছে, তবে আরবীর মতো অন্যান্য লোকালের জন্য, আমাদের ল্যাং কোডটি ব্যবহার করে তা পার্স করতে হবে
সাইমন কে। জার্জস

8

যদি এপিআই স্তরটি 24 বা তার বেশি হয় তবে LocaleList.getDefault().get(0).getLanguage() অন্যটি ব্যবহার করুনLocale.getDefault.getLanguage()

private fun getSystemLocale(): String {
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return LocaleList.getDefault().get(0).getLanguage();
    } else {
        return Locale.getDefault.getLanguage();
    }
}

রেফারেন্স: https://developer.android.com/guide/topics/res ્રો// বহুভাষিক- সমর্থন


এটি 2020 এ একটি গ্রহণযোগ্য উত্তর হওয়া উচিত!
আন্দ্রেই কোভালচুক

6

জোহান পেলগ্রিমের উত্তর যুক্ত করতে

context.getResources().getConfiguration().locale
Locale.getDefault()

সমতুল্য কারণ android.text.format.DateFormatশ্রেণি উভয়ই বিনিময়যোগ্য হিসাবে ব্যবহার করে, যেমন

private static String zeroPad(int inValue, int inMinDigits) {
    return String.format(Locale.getDefault(), "%0" + inMinDigits + "d", inValue);
}

এবং

public static boolean is24HourFormat(Context context) {
    String value = Settings.System.getString(context.getContentResolver(),
            Settings.System.TIME_12_24);

    if (value == null) {
        Locale locale = context.getResources().getConfiguration().locale;

    // ... snip the rest ...
}

5

আপনি সিস্টেম সংস্থান থেকে লোকেল পাওয়ার চেষ্টা করতে পারেন:

PackageManager packageManager = context.getPackageManager();
Resources resources = packageManager.getResourcesForApplication("android");
String language = resources.getConfiguration().locale.getLanguage();

1
আপনি কনফিগারেশনের কোনও অংশকে ওভাররাইড করে দেওয়ার ক্ষেত্রে এটিই উত্তর
তাখিয়ান

4

উপরের উত্তরগুলি সহজ চীনা এবং ট্রেডিটিনাল চীনাগুলির মধ্যে পার্থক্য করে না। Locale.getDefault().toString()কাজ করে যা "zh_CN", "zh_TW", "en_US" এবং ইত্যাদি প্রদান করে

উল্লেখ: https://developer.android.com/references/java/util/Locale.html , আইএসও 639-1 ওল্ড।


4

এই সমাধানটি আমার পক্ষে কাজ করেছিল। এটি আপনাকে অ্যান্ড্রয়েড ডিভাইসের ভাষা (অ্যাপের স্থানীয় ভাষা নয়) ফিরিয়ে দেবে

String locale = getApplicationContext().getResources().getConfiguration().locale.getLanguage();

এটি "এন" বা "ডি" বা "ফরাসী" বা আপনার ডিভাইসের ভাষা সেট করা যাই হোক না কেন ফিরে আসবে।


3

কীবোর্ড বর্তমান জানতে আপনি এই কোডটি ব্যবহার করতে পারেন

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String locale = ims.getLocale();

3

দুটি ভাষা আছে।

ওএসের ডিফল্ট ভাষা:

Locale.getDefault().getDisplayLanguage();

আবেদনের বর্তমান ভাষা:

getResources().getConfiguration().locale.getDisplayLanguage();//return string

3
না না সত্য নয়, আপনি যদি আপনার app এর মধ্যে লোকেল পরিবর্তন এমনকি প্রথম দিতে যখন আপনি মান এবং সিস্টেম মান পরিবর্তন
করতে ক্রা

3

আপনি যদি কোন ভাষা চয়ন করেন তবে আপনি এই গ্রীকটি টাইপ করতে পারবেন না সহায়ক হতে পারে।

getDisplayLanguage().toString() = English
getLanguage().toString() = en 
getISO3Language().toString() = eng
getDisplayLanguage()) = English
getLanguage() = en
getISO3Language() = eng

এখন এটি গ্রীক দিয়ে চেষ্টা করুন

getDisplayLanguage().toString() = Ελληνικά
getLanguage().toString() = el
getISO3Language().toString() = ell
getDisplayLanguage()) = Ελληνικά
getLanguage() = el
getISO3Language() = ell

3

আপনি যদি কোনও বর্তমান ভাষা পরীক্ষা করতে চান তবে @ সর্পের উত্তর (@ থরবার) ব্যবহার করুন:

val language = ConfigurationCompat.getLocales(Resources.getSystem().configuration)?.get(0)?.language
// Check here the language.
val format = if (language == "ru") "d MMMM yyyy г." else "d MMMM yyyy"
val longDateFormat = SimpleDateFormat(format, Locale.getDefault())

আপনি যদি ব্যবহারকারীর স্থানীয় তারিখের ফর্ম্যাটটি প্রয়োগ করতে চান তবে ব্যবহার করুন DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date())
শীতলমাইন্ড

1
if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){
    // your code here
}

2
দয়া করে কেন এই প্রশ্নের উত্তর দেয় সে সম্পর্কে কিছু বিশদ যুক্ত করুন - কেবল কোড স্নিপেট পাঠকদের সমাধানটি বুঝতে সাহায্য করবে না
ওয়ান্ড মেকার

লোকাল.জেটডিফল্ট ()। GetDisplayName () আপনার ডিভাইসের বর্তমান ভাষা দেয়। এবং আমরা ডিভাইস ভাষা হিন্দি কিনা তা খতিয়ে দেখছি .. যদি বর্তমান ডিভাইস ভাষা হিন্দি হয়, তবে ব্লকটিতে আপনি যা চান তা করুন।
প্রতিভা সরোদে

1

আপনার ডিভাইসের ভাষা পাওয়ার সঠিক উপায়টি হল:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    return context.getResources().getConfiguration().getLocales().get(0);
} else {
    return context.getResources().getConfiguration().locale;
}

আশা করি এটা সাহায্য করবে.


1
Locale.getDefault().getDisplayLanguage()

Writtenভাষার জন্য আপনাকে নাম দেবে , উদাহরণস্বরূপ,English, Dutch, French

Locale.getDefault().getLanguage()

তোমাকে দিবে language codeউদাহরণস্বরূপ :en, nl, fr

উভয় পদ্ধতি স্ট্রিং ফিরে


1
public class LocalUtils {

    private static final String LANGUAGE_CODE_ENGLISH = "en";


    // returns application language eg: en || fa ...
    public static String getAppLanguage() {
        return Locale.getDefault().getLanguage();
    }

    // returns device language eg: en || fa ...
    public static String getDeviceLanguage() {
        return ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()).get(0).getLanguage();
    }

    public static boolean isDeviceEnglish() {
        return getDeviceLanguage().equals(new Locale(LANGUAGE_CODE_ENGLISH).getLanguage());
    }

    public static boolean isAppEnglish() {
        return getAppLanguage().equals(new Locale(LANGUAGE_CODE_ENGLISH).getLanguage());
    }


}

Log.i("AppLanguage: ",     LocalUtils.getAppLanguage());
Log.i("DeviceLanguage: ",  LocalUtils.getDeviceLanguage());
Log.i("isDeviceEnglish: ", String.valueOf(LocalUtils.isDeviceEnglish()));
Log.i("isAppEnglish: ",    String.valueOf(LocalUtils.isAppEnglish()));

1

অন্যরা ডিভাইসের ভাষার জন্য ভাল উত্তর দিয়েছে,

আপনি যদি অ্যাপ্লিকেশন ভাষাটি করতে চান তবে এটি করার সহজতম উপায় হ'ল app_langআপনার strings.xmlফাইলে একটি কী যুক্ত করা এবং পাশাপাশি প্রতিটি ল্যাংয়ের জন্য ল্যাং নির্দিষ্ট করা।

এইভাবে, যদি আপনার অ্যাপ্লিকেশনটির ডিফল্ট ভাষা ডিভাইসের ভাষা থেকে আলাদা হয় তবে আপনি সেটিকে আপনার পরিষেবার জন্য প্যারামিটার হিসাবে প্রেরণ করতে বেছে নিতে পারেন।


আমি বিশ্বাস করতে পারি না যে এস্পেট ম্যানেজার বর্তমানে আপনাকে যে ভাষা ব্যবহার করছে তা দেওয়ার জন্য কোনও ফ্রেমওয়ার্ক সমর্থন নেই। প্রকৃতপক্ষে, রিসোর্স.জেভায় স্ট্রিং ফর্ম্যাট সহায়কগুলি ডিফল্ট লোকেল ব্যবহার করে [0] সুতরাং যদি অ্যাসেটম্যানেজারের স্ট্রিংটি কোনও লোকেল থেকে আসে যা ডিভাইসের ডিফল্ট লোকালের সাথে মেলে না (কারণ আপনার অ্যাপ্লিকেশন এটি সমর্থন করে না তবে সমর্থন করে যেমন পরবর্তীটি তালিকায়) তারপরে একটি বাগ রয়েছে।
ডিসকো 2'19

1
public void GetDefaultLanguage( ) {
    try {
        String langue = Locale.getDefault().toString(); //        ---> en_US
        /*
        Log.i("TAG", Locale.getDefault().getLanguage() ); //       ---> en
        Log.i("TAG", Locale.getDefault().getISO3Language()  ); //  ---> eng
        Log.i("TAG", Locale.getDefault().getCountry()  ); //       ---> US
        Log.i("TAG", Locale.getDefault().getISO3Country()  ); //   ---> USA
        Log.i("TAG", Locale.getDefault().getDisplayCountry() ); // ---> United States
        Log.i("TAG", Locale.getDefault().getDisplayName() ); //    ---> English (United States)
        Log.i("TAG", Locale.getDefault().toString()   ); //        ---> en_US
        Log.i("TAG", Locale.getDefault().getDisplayLanguage() ); //---> English 
        */

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            langue = Locale.getDefault().toLanguageTag(); //     ---> en-US
            url_Api = getUrlMicrosoftLearn(langue);
            Log.i("TAG", url_Api );
            Log.i("TAG", langue );
        }else{
            langue = langue.replace("_","-"); //     ---> en-US
            url_Api = getUrlMicrosoftLearn(langue);
            Log.i("TAG", url_Api );
            Log.i("TAG", langue );
        }
    }catch (Exception ex) {
        Log.i("TAG", "Exception:GetDefaultLanguage()", ex);
    }
}

public String getUrlMicrosoftLearn(String langue) {
    return "https://docs.microsoft.com/"+langue+"/learn";
}

আপনি কেবল কোডটি আটকানোর পরিবর্তে উত্তরে আরও নির্দেশনা যুক্ত করতে পারলে ভাল হয়।
Calos

0

আমার সমাধানটি এরকম

@SuppressWarnings("deprecation")
public String getCurrentLocale2() {
    return Resources.getSystem().getConfiguration().locale.getLanguage();
}

@TargetApi(Build.VERSION_CODES.N)
public Locale getCurrentLocale() {
    getResources();
    return Resources.getSystem().getConfiguration().getLocales().get(0);
}

এবং তারপর

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                Log.e("Locale", getCurrentLocale().getLanguage());
            } else {
                Log.e("Locale", getCurrentLocale2().toString());
            }

দেখানো ---> এন


0

ডিভাইস দেশ পেতে কোড এখানে। অ্যান্ড্রয়েড এমনকি ওরিওর সমস্ত সংস্করণের সাথে সামঞ্জস্যপূর্ণ।

সমাধান: যদি ফোনটি সেটআপের সময় ব্যবহার করা হয় বা বর্তমান ভাষা নির্বাচনের সময় ব্যবহারকারীর কাছে সিম কার্ড না পাওয়া থাকে get

public static String getDeviceCountry(Context context) {
    String deviceCountryCode = null;

    final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        if(tm != null) {
            deviceCountryCode = tm.getNetworkCountryIso();
        }

    if (deviceCountryCode != null && deviceCountryCode.length() <=3) {
        deviceCountryCode = deviceCountryCode.toUpperCase();
    }
    else {
        deviceCountryCode = ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()).get(0).getCountry().toUpperCase();
    }

  //  Log.d("countryCode","  : " + deviceCountryCode );
    return deviceCountryCode;
}

-3

আপনি যদি হিন্দি ভাষায় কথা বলছেন এমন ভারতে বসবাসকারী ব্যবহারকারীদের জন্য নির্দিষ্ট কাজটি করতে চান তবে শর্ত থাকলে নীচে ব্যবহার করুন

if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){
 //Block executed only for the users resides in India who speaks Hindi 
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.