Реализация нескольких языков в моем приложении. Он меняет направление макета, но не получает значения из файла string.xmAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Реализация нескольких языков в моем приложении. Он меняет направление макета, но не получает значения из файла string.xm

Сообщение Гость »

Код: Выделить всё

package com.zeugmasolutions.localehelper import android.annotation.SuppressLint import android.app.Application import android.content.Context import android.content.SharedPreferences import android.os.Build import java.util.Locale object LocaleHelper {     private const val SELECTED_LANGUAGE = "Locale.Helper.Selected.Language"     private const val SELECTED_COUNTRY = "Locale.Helper.Selected.Country"     private var initialized = false     /**      * Returns the system [Locale]      */     @SuppressLint("ConstantLocale")     val systemLocale: Locale = Locale.getDefault()     /**      * Attach the selected or default [Locale] to the [context]      */     fun onAttach(context: Context): Context {         if (!initialized) {             Locale.setDefault(load(context))             initialized = true         }         return updateContextResources(context, Locale.getDefault())     }     /**      * Gets the currently saved [Locale] from [SharedPreferences] or returns [Locale.getDefault]      */     fun getLocale(context: Context): Locale = load(context)     /**      * Sets [locale] for [context] and persist the selection in [SharedPreferences]      */     fun setLocale(context: Context, locale: Locale): Context {         persist(context, locale)         Locale.setDefault(locale)         return updateContextResources(context, locale)     }     /**      * Returns if the given [locale] is a Right-To-Left language      */     fun isRTL(locale: Locale): Boolean = Locales.RTL.contains(locale.language)     private fun getPreferences(context: Context): SharedPreferences =         context.getSharedPreferences(LocaleHelper::class.java.name, Context.MODE_PRIVATE)     private fun persist(context: Context, locale: Locale?) {         if (locale == null) return         getPreferences(context).edit()             .putString(SELECTED_LANGUAGE, locale.language)             .putString(SELECTED_COUNTRY, locale.country)             .apply()     }     private fun load(context: Context): Locale {         val preferences = getPreferences(context)         val default = Locale.getDefault()         val language = preferences.getString(SELECTED_LANGUAGE, default.language) ?: return default         val country = preferences.getString(SELECTED_COUNTRY, default.country) ?: return default         return Locale(language, country)     }     private fun updateContextResources(context: Context, locale: Locale): Context {         if (context.currentLocale == locale && context is Application) {             return context         }         val resources = context.resources         val configuration = resources.configuration         configuration.setCurrentLocale(locale)         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {             configuration.setLayoutDirection(locale)         }         return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {             context.createConfigurationContext(configuration)         } else {             @Suppress("DEPRECATION")             resources.updateConfiguration(configuration, resources.displayMetrics)             context         }     } }


I have implement using this link https://github.com/zeugma-solutions/loc ... er-android and also done it by customised code but result is same. I also recreating activity.

Result: Language changed in Locale defaults and directions of layout as well but strings are coming from default string.xml not second language string.xml. Expected results : Should show selected language texts


Изображение

Изображение



Источник: https://stackoverflow.com/questions/781 ... but-not-ge
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»