PDA

View Full Version : تشخیص زبان صفحه کلید کاربر



samiasoft
سه شنبه 29 خرداد 1397, 18:18 عصر
سلام دوستان

من یک EditText دارم که میخواستم هنگامی که کاربر داخلش تایپ میکند شرطی بزاریم که :

اگر صفحه کلید کاربر درحالت انگلیسی قرار دارد و متن انگلیسی تایپ میکند فلان کار انجام شود

و اگر صفحه کلید کاربر در حالت فارسی قرار دارد و متن فارسی تایپ میکند فلان کار انجام شود.


ممنون میشوم راهنمایی کنید.


دستور زیر فقط زبان دستگاه رو نمایش میده :
Locale.getDefault().getDisplayLanguage();

samiasoft
سه شنبه 29 خرداد 1397, 18:47 عصر
دوستان اینطور نوشتم

به نظرتون به مشکل نمیخورم ؟ در همه دستگاه ها به درستی کار خواهد کرد؟

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT _METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String key_lang =ims.getLocale();

if (key_lang="en_US") {

}
else if (key_lang="fa"){


}

فکر میکنم جهت اطمینان باید مثلا اینطور بنویسیم(شاید دستگاه مربوطه کیبوردش فارسی نباشه و عربی استفاده کنه)

if ( key_lang.contains("en")) {
}
else if (key_lang.contains("fa") || key_lang.contains("ar")){


}

farhad_shiri_ex
چهارشنبه 30 خرداد 1397, 04:32 صبح
دوستان اینطور نوشتم

به نظرتون به مشکل نمیخورم ؟ در همه دستگاه ها به درستی کار خواهد کرد؟

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT _METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String key_lang =ims.getLocale();

if (key_lang="en_US") {

}
else if (key_lang="fa"){


}

فکر میکنم جهت اطمینان باید مثلا اینطور بنویسیم(شاید دستگاه مربوطه کیبوردش فارسی نباشه و عربی استفاده کنه)

if ( key_lang.contains("en")) {
}
else if (key_lang.contains("fa") || key_lang.contains("ar")){


}

به نظر من که مشکلی نداره!
فقط getSystemService را از نظر null بودن چک کن خیلی وقتها شده که نتونسته تو اون لحظه سرویس بده برای همین برنامه کرش میکنه ! بهتره که کنترلش کنی در صورت لزوم یکبار دیگه سرویس بگیری.!