diff --git a/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.h b/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.h index 11bfefe75..d1e5422a6 100644 --- a/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.h +++ b/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.h @@ -7,6 +7,7 @@ NS_ASSUME_NONNULL_BEGIN + (NSArray *)searchCategories; + (BOOL)isSearchHistoryEmpty; ++ (BOOL)isLanguageSupported:(NSString *)languageCode; + (NSArray *)lastSearchQueries; + (void)clearSearchHistory; diff --git a/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.mm b/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.mm index 7fd43ba78..8f94d70eb 100644 --- a/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.mm +++ b/iphone/CoreApi/CoreApi/Search/MWMSearchFrameworkHelper.mm @@ -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 *)lastSearchQueries { NSMutableArray * result = [NSMutableArray array]; diff --git a/iphone/Maps/Common/Common.swift b/iphone/Maps/Common/Common.swift index 2d1efa3e4..a54a7bcce 100644 --- a/iphone/Maps/Common/Common.swift +++ b/iphone/Maps/Common/Common.swift @@ -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(iPhone: T, iPad: T) -> T { isiPad ? iPad : iPhone } func iPadSpecific(_ f: () -> Void) { diff --git a/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift b/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift index 5834ab9d0..a23abd297 100644 --- a/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift +++ b/iphone/Maps/UI/Search/Tabs/SearchTabViewController.swift @@ -21,10 +21,10 @@ final class SearchTabViewController: TabViewController { UserDefaults.standard.set(activeTab.rawValue, forKey: SearchTabViewController.selectedIndexKey) } } - + override func viewDidLoad() { super.viewDidLoad() - + let history = SearchHistoryViewController(frameworkHelper: frameworkHelper, delegate: self) history.title = L("history") @@ -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) } }