diff --git a/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt b/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt index 67fffcf..6f83aee 100644 --- a/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt +++ b/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt @@ -41,14 +41,13 @@ class LocalizationSettingsModule internal constructor(context: ReactApplicationC private fun getCurrentLanguage(): String? { // If API version is >= 33, then use per-app language settings if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - val currentLocaleName = if (!AppCompatDelegate.getApplicationLocales().isEmpty) { + if (!AppCompatDelegate.getApplicationLocales().isEmpty) { // get per-app language - AppCompatDelegate.getApplicationLocales()[0]?.toLanguageTag() + return AppCompatDelegate.getApplicationLocales()[0]?.toLanguageTag() } else { // Fallback to the default System Locale - Locale.getDefault().toLanguageTag() + return Locale.getDefault().toLanguageTag() } - return currentLocaleName } // if API is < 33, then use SharedPreferences with fallback to default System Locale if (getPreferences().getString("languageFrom", null) == Locale.getDefault().language) { @@ -79,6 +78,27 @@ class LocalizationSettingsModule internal constructor(context: ReactApplicationC } } + /** + * Set default language + * If API version >= 33, use native per-app language feature + * else, fallback to SharedPreferences + **/ + private fun unsetLanguage() { + // use per-app language settings + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val defaultLocales = LocaleListCompat.getEmptyLocaleList() + AppCompatDelegate.setApplicationLocales(defaultLocales) + val test = Locale.getDefault() + val test2 = Locale.getDefault() + } else { + // use SharedPreferences language + val editor = getEditor(); + editor.putString("languageFrom", Locale.getDefault().language) + editor.putString("language", Locale.getDefault().language) + editor.apply() + } + } + /** * Expose functions to react-native @@ -93,6 +113,11 @@ class LocalizationSettingsModule internal constructor(context: ReactApplicationC setCurrentLanguage(language) } + @ReactMethod + override fun setDefaultLanguage() { + unsetLanguage() + } + /** * Expose constants to react-native **/ diff --git a/example/App.tsx b/example/App.tsx index 55b79a0..3afca03 100644 --- a/example/App.tsx +++ b/example/App.tsx @@ -6,6 +6,7 @@ import { createLanguageDetector, getLanguage, getLanguageAsync, + setDefaultLanguage, } from 'react-native-localization-settings'; const languageDetector = createLanguageDetector(); @@ -53,6 +54,7 @@ export default function App() {