From 85d4226edaa522faccc081c6fa3ada3277f07af7 Mon Sep 17 00:00:00 2001 From: Dobri Dabar Date: Thu, 8 Jan 2026 21:23:16 +0100 Subject: [PATCH] [android] Add map Local Language Signed-off-by: Dobri Dabar --- .../app/organicmaps/editor/EditorHostFragment.java | 1 + .../app/organicmaps/editor/LanguagesFragment.java | 13 +++++++++++++ .../organicmaps/settings/SettingsPrefsFragment.java | 10 ++++++++-- android/app/src/main/res/values/strings.xml | 4 +++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java b/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java index 67bfba2b2..808452ad5 100644 --- a/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java @@ -237,6 +237,7 @@ public class EditorHostFragment for (LocalizedName name : sNames) languages.add(name.lang); args.putStringArrayList(LanguagesFragment.EXISTING_LOCALIZED_NAMES, languages); + args.putBoolean(LanguagesFragment.INCLUDE_LOCAL_LANGUAGE, false); editWithFragment(Mode.LANGUAGE, R.string.choose_language, args, LanguagesFragment.class, false); } diff --git a/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java b/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java index 12be7e79c..da3dea30a 100644 --- a/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/LanguagesFragment.java @@ -1,11 +1,15 @@ package app.organicmaps.editor; +import static app.organicmaps.sdk.editor.data.Language.DEFAULT_LANG_CODE; + import android.content.res.Configuration; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.core.os.ConfigurationCompat; import androidx.core.os.LocaleListCompat; import androidx.fragment.app.Fragment; + +import app.organicmaps.R; import app.organicmaps.base.BaseMwmRecyclerFragment; import app.organicmaps.sdk.editor.Editor; import app.organicmaps.sdk.editor.data.Language; @@ -21,6 +25,7 @@ import java.util.Set; public class LanguagesFragment extends BaseMwmRecyclerFragment { final static String EXISTING_LOCALIZED_NAMES = "ExistingLocalizedNames"; + final static String INCLUDE_LOCAL_LANGUAGE = "IncludeLocalLanguage"; public interface Listener { @@ -34,6 +39,8 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment protected LanguagesAdapter createAdapter() { Bundle args = getArguments(); + boolean includeLocalLanguage = + args != null ? args.getBoolean(INCLUDE_LOCAL_LANGUAGE) : true; Set existingLanguages = args != null ? new HashSet<>(args.getStringArrayList(EXISTING_LOCALIZED_NAMES)) : new HashSet<>(); @@ -68,6 +75,12 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment languages.addAll(0, systemLanguages.stream().filter(Objects::nonNull).toList()); + if (includeLocalLanguage) { + String localLanguageLabel = getString(R.string.pref_maplanguage_local); + Language localLanguage = new Language(DEFAULT_LANG_CODE, localLanguageLabel); + languages.add(0, localLanguage); + } + return new LanguagesAdapter(this, languages.toArray(new Language[languages.size()])); } diff --git a/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java b/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java index 424716580..0c64cdb8a 100644 --- a/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java +++ b/android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java @@ -1,6 +1,7 @@ package app.organicmaps.settings; import static app.organicmaps.leftbutton.LeftButtonsHolder.DISABLE_BUTTON_CODE; +import static app.organicmaps.sdk.editor.data.Language.DEFAULT_LANG_CODE; import android.annotation.SuppressLint; import android.content.Intent; @@ -140,8 +141,13 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La private void updateMapLanguageCodeSummary() { final Preference pref = getPreference(getString(R.string.pref_map_locale)); - Locale locale = new Locale(MapLanguageCode.getMapLanguageCode()); - pref.setSummary(locale.getDisplayLanguage()); + String mapLanguageCode = MapLanguageCode.getMapLanguageCode(); + if (mapLanguageCode.equals(DEFAULT_LANG_CODE)) { + pref.setSummary(R.string.pref_maplanguage_local); + } else { + Locale locale = new Locale(mapLanguageCode); + pref.setSummary(locale.getDisplayLanguage()); + } } private void updateRoutingSettingsPrefsSummary() diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index cfac211ef..b0185acc9 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -797,8 +797,10 @@ Show on the lock screen When enabled, the app will work on the lockscreen even when the device is locked. - + Map language + + Local Language Map data from OpenStreetMap