[ios] Fixed category search for unsupported translations.

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
This commit is contained in:
Kiryl Kaveryn
2025-06-03 16:00:13 +04:00
committed by Konstantin Pastbin
parent d649e46ef2
commit aa71668eab
4 changed files with 22 additions and 3 deletions

View File

@@ -7,6 +7,7 @@ NS_ASSUME_NONNULL_BEGIN
+ (NSArray<NSString *> *)searchCategories;
+ (BOOL)isSearchHistoryEmpty;
+ (BOOL)isLanguageSupported:(NSString *)languageCode;
+ (NSArray<NSString *> *)lastSearchQueries;
+ (void)clearSearchHistory;

View File

@@ -1,6 +1,7 @@
#import "MWMSearchFrameworkHelper.h"
#include "platform/preferred_languages.hpp"
#include "search/displayed_categories.hpp"
#include "Framework.h"
@@ -20,6 +21,11 @@
return GetFramework().GetSearchAPI().GetLastSearchQueries().empty();
}
+ (BOOL)isLanguageSupported:(NSString *)languageCode
{
return search::DisplayedCategories::IsLanguageSupported(languageCode.UTF8String);
}
+ (NSArray<NSString *> *)lastSearchQueries
{
NSMutableArray * result = [NSMutableArray array];

View File

@@ -9,6 +9,15 @@ var isiPad: Bool {
func L(_ key: String) -> String { return NSLocalizedString(key, comment: "") }
func L(_ key: String, languageCode: String) -> String {
guard let path = Bundle.main.path(forResource: languageCode, ofType: "lproj"),
let bundle = Bundle(path: path) else {
LOG(.warning, "Localization bundle not found for language code: \(languageCode)")
return L(key)
}
return NSLocalizedString(key, bundle: bundle, comment: "")
}
func alternative<T>(iPhone: T, iPad: T) -> T { isiPad ? iPad : iPhone }
func iPadSpecific(_ f: () -> Void) {

View File

@@ -70,7 +70,10 @@ extension SearchTabViewController: SearchOnMapScrollViewDelegate {
extension SearchTabViewController: SearchCategoriesViewControllerDelegate {
func categoriesViewController(_ viewController: SearchCategoriesViewController,
didSelect category: String) {
let query = SearchQuery(L(category) + " ", source: .category)
let preferredLang = AppInfo.shared().languageId
let supportedBySearchLang = MWMSearchFrameworkHelper.isLanguageSupported(preferredLang) ? preferredLang : "en"
let searchText = L(category, languageCode: supportedBySearchLang) + " "
let query = SearchQuery(searchText, locale: supportedBySearchLang, source: .category)
delegate?.searchTabController(self, didSearch: query)
}
}