diff --git a/documentation/docs/help/en/Advanced preferences.md b/documentation/docs/help/en/Advanced preferences.md
index d20c220431..759141cd53 100644
--- a/documentation/docs/help/en/Advanced preferences.md
+++ b/documentation/docs/help/en/Advanced preferences.md
@@ -72,9 +72,9 @@ Select the theme to use. _Follow system_ will follow the setting in the system p
Show the menu buttons at the bottom of the screen. Default: _on_. You need to restart the app for changes to this setting to take effect.
-### Disable translations
+### App language
-Use English for the user interface. Google does not provide a supported way to switch languages for individual apps, as a result this setting relies on multiple workarounds that may, or may not, work on your device. Preset translations can be disabled in the preset configurations.
+Select a language for the user interface that is different from the device default. On devices running Android 13 and later the app language can be changed in the system settings too. Preset translations can be disabled in the preset configurations.
### Max. number of inline values
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 8eec6a49c2..bfc272de4f 100755
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -311,6 +311,17 @@
android:configChanges="orientation|screenSize|keyboardHidden|density|screenLayout|uiMode|fontScale"
android:foregroundServiceType="location"
android:label="TrackerService" />
+
+
+
+
+
+
{
+ Log.d(DEBUG_TAG, "onPreferenceChange appLocale " + newValue);
+ LocaleListCompat newDefaultList = LocaleListCompat.forLanguageTags((String) newValue);
+ Locale newDefault = newDefaultList.get(0);
+ AppCompatDelegate.setApplicationLocales(newDefaultList);
+ preference.setSummary(newDefault.getDisplayName(newDefault));
+ return true;
+ };
+ appLocalePref.setOnPreferenceChangeListener(p);
+ }
+
/**
* Setup the possible camera apps for selection
*
@@ -134,23 +174,5 @@ private void setOnPreferenceClickListeners() {
return true;
});
}
-
- Preference disableTranslationsPref = getPreferenceScreen().findPreference(r.getString(R.string.config_disableTranslations_key));
- if (disableTranslationsPref != null) {
- disableTranslationsPref.setOnPreferenceClickListener(preference -> {
- LocaleAwareCompatActivity lac = ((LocaleAwareCompatActivity) getActivity());
- String savedLocaleKey = lac.getString(R.string.config_savedLocale_key);
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(lac);
- if (((CheckBoxPreference) disableTranslationsPref).isChecked()) {
- if (!prefs.contains(savedLocaleKey)) {
- prefs.edit().putString(savedLocaleKey, LocaleUtils.toLanguageTag(Locale.getDefault())).commit();
- }
- lac.updateLocale(Locale.ENGLISH);
- } else {
- lac.updateLocale(LocaleUtils.forLanguageTag(prefs.getString(savedLocaleKey, Locale.ENGLISH.toString())));
- }
- return true;
- });
- }
}
}
diff --git a/src/main/java/de/blau/android/prefs/VespucciURLActivity.java b/src/main/java/de/blau/android/prefs/VespucciURLActivity.java
index 32bb6c29d6..74a53cb9fe 100644
--- a/src/main/java/de/blau/android/prefs/VespucciURLActivity.java
+++ b/src/main/java/de/blau/android/prefs/VespucciURLActivity.java
@@ -4,8 +4,6 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import com.zeugmasolutions.localehelper.LocaleAwareCompatActivity;
-
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -19,6 +17,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
import de.blau.android.Authorize;
import de.blau.android.R;
import de.blau.android.net.OAuthHelper;
@@ -41,7 +40,7 @@
* @author Simon
*
*/
-public class VespucciURLActivity extends LocaleAwareCompatActivity implements OnClickListener {
+public class VespucciURLActivity extends AppCompatActivity implements OnClickListener {
private static final String DEBUG_TAG = VespucciURLActivity.class.getSimpleName();
private static final int REQUEST_PRESETEDIT = 0;
diff --git a/src/main/java/de/blau/android/propertyeditor/PropertyEditorActivity.java b/src/main/java/de/blau/android/propertyeditor/PropertyEditorActivity.java
index a7ebe8e37b..d96aa0407b 100644
--- a/src/main/java/de/blau/android/propertyeditor/PropertyEditorActivity.java
+++ b/src/main/java/de/blau/android/propertyeditor/PropertyEditorActivity.java
@@ -6,8 +6,6 @@
import org.acra.ACRA;
-import com.zeugmasolutions.localehelper.LocaleAwareCompatActivity;
-
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
@@ -17,6 +15,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@@ -45,7 +44,7 @@
* @author simon
*/
public class PropertyEditorActivity & Serializable, L extends List & Serializable, T extends List