В моем приложении Android с Kotlin minSdkVersion
26 и targetSdkVersion
28 я хочу перевести все свое приложение с английского sh на арабский c язык. В AndroidManifest. xml Я добавляю android:supportsRtl="true"
Я использую в своем приложении нижнюю часть навигации, которая содержит два элемента: один для дома и другой для пользователя учетной записи. Во фрагмент аккаунта я просто добавляю текст, который, когда я нажимаю, изменяет язык с английского sh на арабский c или наоборот. Я создаю «strings. xml» в папке значений, которая содержит все текстовые поля в Engli sh, после чего я использую редактор перевода в Android Studio, я получаю строки. xml (ar).
Вот следующий фрагмент кода:
class AccountFragment : Fragment() {
var langChoice = "En"
............................
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
loadLanguage()
textChangeLang.setOnClickListener {
langChoice = if (langChoice == "En"){
setLocate("ar")
activity?.recreate()
"Ar"
} else {
setLocate("en")
activity?.recreate()
"En"
}
}
}
private fun setLocate(Lang: String) {
val locale = Locale(Lang)
Locale.setDefault(locale)
val config = Configuration()
config.setLocale(locale)
context?.createConfigurationContext(config)
Utility(requireContext()).setSavedLanguage(Lang)
}
private fun loadLanguage() {
val sharedPreferences: SharedPreferences =
context!!.getSharedPreferences(context!!.packageName, Context.MODE_PRIVATE)
val language = sharedPreferences.getString("My_Lang", "")
setLocate(language!!)
}
}
и вот функция setSavedLanguage в классе Utility:
fun setSavedLanguage(lang : String) {
val editor: SharedPreferences.Editor = sharedPreferences.edit()
editor.putString("My_Lang", lang)
editor.apply()
}
Но перевод все еще не работал в моем приложение. Я хотел бы знать, где проблема в моем коде и как я могу ее исправить.