[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; + (NSArray<NSString *> *)searchCategories;
+ (BOOL)isSearchHistoryEmpty; + (BOOL)isSearchHistoryEmpty;
+ (BOOL)isLanguageSupported:(NSString *)languageCode;
+ (NSArray<NSString *> *)lastSearchQueries; + (NSArray<NSString *> *)lastSearchQueries;
+ (void)clearSearchHistory; + (void)clearSearchHistory;

View File

@@ -1,6 +1,7 @@
#import "MWMSearchFrameworkHelper.h" #import "MWMSearchFrameworkHelper.h"
#include "platform/preferred_languages.hpp" #include "platform/preferred_languages.hpp"
#include "search/displayed_categories.hpp"
#include "Framework.h" #include "Framework.h"
@@ -20,6 +21,11 @@
return GetFramework().GetSearchAPI().GetLastSearchQueries().empty(); return GetFramework().GetSearchAPI().GetLastSearchQueries().empty();
} }
+ (BOOL)isLanguageSupported:(NSString *)languageCode
{
return search::DisplayedCategories::IsLanguageSupported(languageCode.UTF8String);
}
+ (NSArray<NSString *> *)lastSearchQueries + (NSArray<NSString *> *)lastSearchQueries
{ {
NSMutableArray * result = [NSMutableArray array]; 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) -> 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 alternative<T>(iPhone: T, iPad: T) -> T { isiPad ? iPad : iPhone }
func iPadSpecific(_ f: () -> Void) { func iPadSpecific(_ f: () -> Void) {

View File

@@ -21,10 +21,10 @@ final class SearchTabViewController: TabViewController {
UserDefaults.standard.set(activeTab.rawValue, forKey: SearchTabViewController.selectedIndexKey) UserDefaults.standard.set(activeTab.rawValue, forKey: SearchTabViewController.selectedIndexKey)
} }
} }
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
let history = SearchHistoryViewController(frameworkHelper: frameworkHelper, let history = SearchHistoryViewController(frameworkHelper: frameworkHelper,
delegate: self) delegate: self)
history.title = L("history") history.title = L("history")
@@ -70,7 +70,10 @@ extension SearchTabViewController: SearchOnMapScrollViewDelegate {
extension SearchTabViewController: SearchCategoriesViewControllerDelegate { extension SearchTabViewController: SearchCategoriesViewControllerDelegate {
func categoriesViewController(_ viewController: SearchCategoriesViewController, func categoriesViewController(_ viewController: SearchCategoriesViewController,
didSelect category: String) { 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) delegate?.searchTabController(self, didSearch: query)
} }
} }