Перевести android приложение с kotlin с английского sh на арабский - PullRequest
0 голосов
/ 09 января 2020

В моем приложении 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()
}

Но перевод все еще не работал в моем приложение. Я хотел бы знать, где проблема в моем коде и как я могу ее исправить.

...