From cfb97a3db6ce2ffc4d65e1d9eaa384faaef71046 Mon Sep 17 00:00:00 2001 From: Alexander Borsuk Date: Sat, 7 Jun 2025 20:50:04 +0200 Subject: [PATCH] [android] Pass English from categories search when language is not supported in the core Signed-off-by: Alexander Borsuk --- .../organicmaps/search/CategoriesAdapter.java | 72 ++++++++++--------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java b/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java index a34751b54..b6fccbd98 100644 --- a/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java +++ b/android/app/src/main/java/app/organicmaps/search/CategoriesAdapter.java @@ -5,6 +5,7 @@ import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; +import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -13,15 +14,14 @@ import android.widget.TextView; import androidx.annotation.DrawableRes; import androidx.annotation.IntDef; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; import app.organicmaps.R; import app.organicmaps.sdk.search.DisplayedCategories; -import app.organicmaps.util.ThemeUtils; import app.organicmaps.util.Language; +import app.organicmaps.util.ThemeUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -45,28 +45,16 @@ class CategoriesAdapter extends RecyclerView.Adapter= Build.VERSION_CODES.N ? c.getLocales().get(0).toString() : c.locale.toString(); + // } + + private @NonNull String getEnglishString(@StringRes int categoryId) + { + // Not thread safe, but we don't care, as it should always run on the same thread. + if (mEnglishResources == null) + { + final Configuration newConfig = new Configuration(mResources.getConfiguration()); + newConfig.setLocale(new Locale("en")); + final Context localizedContext = mInflater.getContext().createConfigurationContext(newConfig); + mEnglishResources = localizedContext.getResources(); + } + return mEnglishResources.getString(categoryId); + } + ViewHolder(@NonNull View v, @NonNull TextView tv) { super(v); mView = v; mTitle = tv; + + // TODO(AB): Change Language.getDefaultLocale() to getResourcesLanguage() and pass proper language to the search. + mIsLangSupported = DisplayedCategories.nativeIsLangSupported(Language.getDefaultLocale()); } void setupClickListeners() @@ -176,22 +191,16 @@ class CategoriesAdapter extends RecyclerView.Adapter