diff --git a/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.kt b/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.kt index 12c9f20..5459836 100644 --- a/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.kt +++ b/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.kt @@ -125,6 +125,32 @@ open class LocalizationActivityDelegate(val activity: Activity) { } } + fun setLanguageWithoutNotification(context: Context, newLanguage: String) { + val locale = Locale(newLanguage) + setLanguageWithoutNotification(context, locale) + } + + fun setLanguageWithoutNotification(context: Context, newLanguage: String, newCountry: String) { + val locale = Locale(newLanguage, newCountry) + setLanguageWithoutNotification(context, locale) + } + + /** + * Change application language but without recreating it + */ + fun setLanguageWithoutNotification(context: Context, newLocale: Locale) { + + val oldLocale = LanguageSetting.getLanguageWithDefault( + context, + LanguageSetting.getDefaultLanguage(context) + ) + if (!isCurrentLanguageSetting(newLocale, oldLocale)) { + LanguageSetting.setLanguage(activity, newLocale) + // Don't notifiy current activity notifyLanguageChanged() + } + + } + // Get current language fun getLanguage(context: Context): Locale { return LanguageSetting.getLanguageWithDefault( diff --git a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt index 6693ba1..0a9e0cc 100644 --- a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt +++ b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt @@ -92,6 +92,18 @@ abstract class LocalizationActivity : AppCompatActivity, OnLocaleChangedListener localizationDelegate.setLanguage(this, locale) } + fun setLanguageWithoutNotification(language: String) { + localizationDelegate.setLanguageWithoutNotification(this, language) + } + + fun setLanguageWithoutNotification(language: String, country: String) { + localizationDelegate.setLanguageWithoutNotification(this, language, country) + } + + fun setLanguageWithoutNotification(locale: Locale) { + localizationDelegate.setLanguageWithoutNotification(this, locale) + } + fun getCurrentLanguage(): Locale { return localizationDelegate.getLanguage(this) }