mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-21 22:03:37 +00:00
[ios] Added setting for map language
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
This commit is contained in:
committed by
Konstantin Pastbin
parent
1fe8f1f0e6
commit
1cf4ff21ec
@@ -37,6 +37,10 @@ NS_SWIFT_NAME(SettingsBridge)
|
|||||||
+ (BOOL)largeFontSize;
|
+ (BOOL)largeFontSize;
|
||||||
+ (void)setLargeFontSize:(BOOL)largeFontSize;
|
+ (void)setLargeFontSize:(BOOL)largeFontSize;
|
||||||
|
|
||||||
|
+ (NSDictionary<NSString *, NSString *> *)availableMapLanguages;
|
||||||
|
+ (NSString *)mapLanguageCode;
|
||||||
|
+ (void)setMapLanguageCode:(NSString *)mapLanguageCode;
|
||||||
|
|
||||||
+ (BOOL)transliteration;
|
+ (BOOL)transliteration;
|
||||||
+ (void)setTransliteration:(BOOL)transliteration;
|
+ (void)setTransliteration:(BOOL)transliteration;
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ namespace
|
|||||||
char const * kAutoDownloadEnabledKey = "AutoDownloadEnabled";
|
char const * kAutoDownloadEnabledKey = "AutoDownloadEnabled";
|
||||||
char const * kZoomButtonsEnabledKey = "ZoomButtonsEnabled";
|
char const * kZoomButtonsEnabledKey = "ZoomButtonsEnabled";
|
||||||
char const * kCompassCalibrationEnabledKey = "CompassCalibrationEnabled";
|
char const * kCompassCalibrationEnabledKey = "CompassCalibrationEnabled";
|
||||||
|
char const * kMapLanguageCode = "MapLanguageCode";
|
||||||
char const * kRoutingDisclaimerApprovedKey = "IsDisclaimerApproved";
|
char const * kRoutingDisclaimerApprovedKey = "IsDisclaimerApproved";
|
||||||
|
|
||||||
// TODO(igrechuhin): Remove outdated kUDAutoNightModeOff
|
// TODO(igrechuhin): Remove outdated kUDAutoNightModeOff
|
||||||
@@ -202,6 +203,37 @@ NSString * const kUDFileLoggingEnabledKey = @"FileLoggingEnabledKey";
|
|||||||
GetFramework().SetLargeFontsSize(static_cast<bool>(largeFontSize));
|
GetFramework().SetLargeFontsSize(static_cast<bool>(largeFontSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSDictionary<NSString *, NSString *> *)availableMapLanguages;
|
||||||
|
{
|
||||||
|
NSMutableDictionary<NSString *, NSString *> *availableLanguages = [[NSMutableDictionary alloc] init];
|
||||||
|
auto const & v = StringUtf8Multilang::GetSupportedLanguages(false);
|
||||||
|
for (auto i: v) {
|
||||||
|
[availableLanguages setObject:@(std::string(i.m_name).c_str()) forKey:@(std::string(i.m_code).c_str())];
|
||||||
|
}
|
||||||
|
return availableLanguages;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (NSString *)mapLanguageCode;
|
||||||
|
{
|
||||||
|
std::string mapLanguageCode;
|
||||||
|
bool hasMapLanguageCode = settings::Get(kMapLanguageCode, mapLanguageCode);
|
||||||
|
if (hasMapLanguageCode) {
|
||||||
|
return @(mapLanguageCode.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
return @"auto";
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)setMapLanguageCode:(NSString *)mapLanguageCode;
|
||||||
|
{
|
||||||
|
auto &f = GetFramework();
|
||||||
|
if ([mapLanguageCode isEqual: @"auto"]) {
|
||||||
|
f.ResetMapLanguageCode();
|
||||||
|
} else {
|
||||||
|
f.SetMapLanguageCode(std::string([mapLanguageCode UTF8String]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+ (BOOL)transliteration { return GetFramework().LoadTransliteration(); }
|
+ (BOOL)transliteration { return GetFramework().LoadTransliteration(); }
|
||||||
+ (void)setTransliteration:(BOOL)transliteration
|
+ (void)setTransliteration:(BOOL)transliteration
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -209,6 +209,12 @@
|
|||||||
"pref_zoom_title" = "Zoom buttons";
|
"pref_zoom_title" = "Zoom buttons";
|
||||||
"pref_left_button_type" = "Left Main Button";
|
"pref_left_button_type" = "Left Main Button";
|
||||||
|
|
||||||
|
/* Settings «Map» category: «Map Language» title */
|
||||||
|
"pref_maplanguage_title" = "Map Language";
|
||||||
|
|
||||||
|
/* Settings «Map» category: «Map Language» local value */
|
||||||
|
"pref_maplanguage_local" = "Local Language";
|
||||||
|
|
||||||
/* Settings «Map» category: «Map Appearance» title */
|
/* Settings «Map» category: «Map Appearance» title */
|
||||||
"pref_mapappearance_title" = "Map Appearance";
|
"pref_mapappearance_title" = "Map Appearance";
|
||||||
|
|
||||||
@@ -746,6 +752,7 @@
|
|||||||
"enable_logging" = "Enable logging";
|
"enable_logging" = "Enable logging";
|
||||||
"log_file_size" = "Log file size: %@";
|
"log_file_size" = "Log file size: %@";
|
||||||
"transliteration_title" = "Transliterate into Latin alphabet";
|
"transliteration_title" = "Transliterate into Latin alphabet";
|
||||||
|
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||||
|
|
||||||
/* Subway exits for public transport marks on the map */
|
/* Subway exits for public transport marks on the map */
|
||||||
"core_exit" = "Exit";
|
"core_exit" = "Exit";
|
||||||
|
|||||||
@@ -219,6 +219,12 @@
|
|||||||
"pref_zoom_title" = "Zoom buttons";
|
"pref_zoom_title" = "Zoom buttons";
|
||||||
"pref_left_button_type" = "Left Main Button";
|
"pref_left_button_type" = "Left Main Button";
|
||||||
|
|
||||||
|
/* Settings «Map» category: «Map Language» title */
|
||||||
|
"pref_maplanguage_title" = "Map Language";
|
||||||
|
|
||||||
|
/* Settings «Map» category: «Map Language» local value */
|
||||||
|
"pref_maplanguage_local" = "Local Language";
|
||||||
|
|
||||||
/* Settings «Map» category: «Map Appearance» title */
|
/* Settings «Map» category: «Map Appearance» title */
|
||||||
"pref_mapappearance_title" = "Map Appearance";
|
"pref_mapappearance_title" = "Map Appearance";
|
||||||
|
|
||||||
@@ -764,6 +770,7 @@
|
|||||||
"enable_logging" = "Enable logging";
|
"enable_logging" = "Enable logging";
|
||||||
"log_file_size" = "Log file size: %@";
|
"log_file_size" = "Log file size: %@";
|
||||||
"transliteration_title" = "Transliterate into Latin alphabet";
|
"transliteration_title" = "Transliterate into Latin alphabet";
|
||||||
|
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";
|
||||||
|
|
||||||
/* Subway exits for public transport marks on the map */
|
/* Subway exits for public transport marks on the map */
|
||||||
"core_exit" = "Exit";
|
"core_exit" = "Exit";
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
272F1F3B2E0EE0A300FA52EF /* NoExistingProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3A2E0EE09500FA52EF /* NoExistingProfileView.swift */; };
|
272F1F3B2E0EE0A300FA52EF /* NoExistingProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3A2E0EE09500FA52EF /* NoExistingProfileView.swift */; };
|
||||||
272F1F3D2E0EE0C800FA52EF /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */; };
|
272F1F3D2E0EE0C800FA52EF /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */; };
|
||||||
272F1F462E0EEF9400FA52EF /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F452E0EEF8B00FA52EF /* SafariView.swift */; };
|
272F1F462E0EEF9400FA52EF /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F452E0EEF8B00FA52EF /* SafariView.swift */; };
|
||||||
|
2752B6CA2E31197500887CC4 /* MapLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2752B6C92E31197000887CC4 /* MapLanguage.swift */; };
|
||||||
|
2752B6CE2E3121D900887CC4 /* Language.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2752B6CD2E3121D800887CC4 /* Language.swift */; };
|
||||||
2765D1D02E13F9C20005CA2B /* BridgeControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */; };
|
2765D1D02E13F9C20005CA2B /* BridgeControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */; };
|
||||||
27697F742E25177600FBD913 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F732E25177300FBD913 /* AboutView.swift */; };
|
27697F742E25177600FBD913 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F732E25177300FBD913 /* AboutView.swift */; };
|
||||||
27697F7F2E254A5500FBD913 /* CopyrightView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F7C2E254A5000FBD913 /* CopyrightView.swift */; };
|
27697F7F2E254A5500FBD913 /* CopyrightView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F7C2E254A5000FBD913 /* CopyrightView.swift */; };
|
||||||
@@ -774,6 +776,8 @@
|
|||||||
272F1F3A2E0EE09500FA52EF /* NoExistingProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoExistingProfileView.swift; sourceTree = "<group>"; };
|
272F1F3A2E0EE09500FA52EF /* NoExistingProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoExistingProfileView.swift; sourceTree = "<group>"; };
|
||||||
272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
|
272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
|
||||||
272F1F452E0EEF8B00FA52EF /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = "<group>"; };
|
272F1F452E0EEF8B00FA52EF /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = "<group>"; };
|
||||||
|
2752B6C92E31197000887CC4 /* MapLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapLanguage.swift; sourceTree = "<group>"; };
|
||||||
|
2752B6CD2E3121D800887CC4 /* Language.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Language.swift; sourceTree = "<group>"; };
|
||||||
2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BridgeControllers.swift; sourceTree = "<group>"; };
|
2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BridgeControllers.swift; sourceTree = "<group>"; };
|
||||||
27697F732E25177300FBD913 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
|
27697F732E25177300FBD913 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
|
||||||
27697F7C2E254A5000FBD913 /* CopyrightView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyrightView.swift; sourceTree = "<group>"; };
|
27697F7C2E254A5000FBD913 /* CopyrightView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyrightView.swift; sourceTree = "<group>"; };
|
||||||
@@ -1981,6 +1985,8 @@
|
|||||||
27AF185B2E1DB64B00CD41E2 /* Settings Types */ = {
|
27AF185B2E1DB64B00CD41E2 /* Settings Types */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
2752B6CD2E3121D800887CC4 /* Language.swift */,
|
||||||
|
2752B6C92E31197000887CC4 /* MapLanguage.swift */,
|
||||||
27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */,
|
27AF184F2E1DB61500CD41E2 /* VoiceRoutingLanguage.swift */,
|
||||||
27768FDF2E201BE60086784A /* LeftButtonType.swift */,
|
27768FDF2E201BE60086784A /* LeftButtonType.swift */,
|
||||||
27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */,
|
27AF18512E1DB61F00CD41E2 /* DistanceUnit.swift */,
|
||||||
@@ -4463,6 +4469,7 @@
|
|||||||
3454D7C51E07F045004AF2AD /* UIButton+Orientation.m in Sources */,
|
3454D7C51E07F045004AF2AD /* UIButton+Orientation.m in Sources */,
|
||||||
34AB66831FC5AA330078E451 /* NavigationAddPointToastView.swift in Sources */,
|
34AB66831FC5AA330078E451 /* NavigationAddPointToastView.swift in Sources */,
|
||||||
F6E2FE4C1E097BA00083EBEC /* MWMPlacePageManager.mm in Sources */,
|
F6E2FE4C1E097BA00083EBEC /* MWMPlacePageManager.mm in Sources */,
|
||||||
|
2752B6CA2E31197500887CC4 /* MapLanguage.swift in Sources */,
|
||||||
3404757E1E081B3300C92850 /* iosOGLContext.mm in Sources */,
|
3404757E1E081B3300C92850 /* iosOGLContext.mm in Sources */,
|
||||||
993F5513237C622700545511 /* DeepLinkHandler.swift in Sources */,
|
993F5513237C622700545511 /* DeepLinkHandler.swift in Sources */,
|
||||||
993DF11223F6BDB100AC231A /* UIImageRenderer.swift in Sources */,
|
993DF11223F6BDB100AC231A /* UIImageRenderer.swift in Sources */,
|
||||||
@@ -4589,6 +4596,7 @@
|
|||||||
6741A9E71BF340DE002C974C /* MWMCircularProgressView.m in Sources */,
|
6741A9E71BF340DE002C974C /* MWMCircularProgressView.m in Sources */,
|
||||||
34AC8FDB1EFC07FE00E7F910 /* UILabel+NumberOfVisibleLines.swift in Sources */,
|
34AC8FDB1EFC07FE00E7F910 /* UILabel+NumberOfVisibleLines.swift in Sources */,
|
||||||
ED79A5AD2BD7BA0F00952D1F /* UIApplication+LoadingOverlay.swift in Sources */,
|
ED79A5AD2BD7BA0F00952D1F /* UIApplication+LoadingOverlay.swift in Sources */,
|
||||||
|
2752B6CE2E3121D900887CC4 /* Language.swift in Sources */,
|
||||||
9959C75C24599CCD008FD4FD /* DirectionView.swift in Sources */,
|
9959C75C24599CCD008FD4FD /* DirectionView.swift in Sources */,
|
||||||
47CA68D62500448D00671019 /* BookmarksListInteractor.swift in Sources */,
|
47CA68D62500448D00671019 /* BookmarksListInteractor.swift in Sources */,
|
||||||
4767CD9F20AAD48A00BD8166 /* Checkmark.swift in Sources */,
|
4767CD9F20AAD48A00BD8166 /* Checkmark.swift in Sources */,
|
||||||
|
|||||||
31
iphone/Maps/Model/Settings Types/Language.swift
Normal file
31
iphone/Maps/Model/Settings Types/Language.swift
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// A language
|
||||||
|
protocol Language: Codable, Identifiable, Equatable, Comparable {
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
var id: String { get }
|
||||||
|
|
||||||
|
|
||||||
|
/// The localized name
|
||||||
|
var localizedName: String { get }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: - Comparable
|
||||||
|
extension Settings.Language {
|
||||||
|
static func == (lhs: Self, rhs: Self) -> Bool {
|
||||||
|
return lhs.id == rhs.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: - Comparable
|
||||||
|
extension Settings.Language {
|
||||||
|
static func < (lhs: Self, rhs: Self) -> Bool {
|
||||||
|
return lhs.localizedName.localizedCaseInsensitiveCompare(rhs.localizedName) == .orderedAscending
|
||||||
|
}
|
||||||
|
}
|
||||||
13
iphone/Maps/Model/Settings Types/MapLanguage.swift
Normal file
13
iphone/Maps/Model/Settings Types/MapLanguage.swift
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
extension Settings {
|
||||||
|
/// A language used for the map
|
||||||
|
struct MapLanguage: Language {
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
/// The id
|
||||||
|
let id: String
|
||||||
|
|
||||||
|
|
||||||
|
/// The localized name
|
||||||
|
let localizedName: String
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,31 +1,13 @@
|
|||||||
extension Settings {
|
extension Settings {
|
||||||
/// A language used for voice guidance during routing
|
/// A language used for voice guidance during routing
|
||||||
struct VoiceRoutingLanguage: Codable, Identifiable {
|
struct VoiceRoutingLanguage: Language {
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
/// The id
|
/// The id
|
||||||
var id: String
|
let id: String
|
||||||
|
|
||||||
|
|
||||||
/// The localized name
|
/// The localized name
|
||||||
var localizedName: String
|
let localizedName: String
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// MARK: - Comparable
|
|
||||||
extension Settings.VoiceRoutingLanguage: Equatable {
|
|
||||||
static func == (lhs: Settings.VoiceRoutingLanguage, rhs: Settings.VoiceRoutingLanguage) -> Bool {
|
|
||||||
return lhs.id == rhs.id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// MARK: - Comparable
|
|
||||||
extension Settings.VoiceRoutingLanguage: Comparable {
|
|
||||||
static func < (lhs: Settings.VoiceRoutingLanguage, rhs: Settings.VoiceRoutingLanguage) -> Bool {
|
|
||||||
return lhs.localizedName.localizedCaseInsensitiveCompare(rhs.localizedName) == .orderedAscending
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,6 +140,28 @@ import Combine
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The available languages for the map
|
||||||
|
static var availableLanguagesForMap: [MapLanguage] {
|
||||||
|
var languages = SettingsBridge.availableMapLanguages().map { language in
|
||||||
|
return MapLanguage(id: language.key, localizedName: language.value)
|
||||||
|
}.sorted()
|
||||||
|
languages.insert(MapLanguage(id: "default", localizedName: String(localized: "pref_maplanguage_local")), at: 0)
|
||||||
|
languages.insert(MapLanguage(id: "auto", localizedName: String(localized: "auto")), at: 0)
|
||||||
|
return languages
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// The current language for the map
|
||||||
|
static var languageForMap: MapLanguage.ID {
|
||||||
|
get {
|
||||||
|
return SettingsBridge.mapLanguageCode()
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
SettingsBridge.setMapLanguageCode(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// If the compass should be calibrated
|
/// If the compass should be calibrated
|
||||||
@objc static var shouldCalibrateCompass: Bool {
|
@objc static var shouldCalibrateCompass: Bool {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ struct SettingsView: View {
|
|||||||
@State private var hasIncreasedFontsize: Bool = false
|
@State private var hasIncreasedFontsize: Bool = false
|
||||||
|
|
||||||
|
|
||||||
|
/// The selected language for the map
|
||||||
|
@State var selectedLanguageForMap: Settings.MapLanguage.ID? = nil
|
||||||
|
|
||||||
|
|
||||||
/// If names should be transliterated to Latin
|
/// If names should be transliterated to Latin
|
||||||
@State private var shouldTransliterateToLatin: Bool = true
|
@State private var shouldTransliterateToLatin: Bool = true
|
||||||
|
|
||||||
@@ -136,8 +140,32 @@ struct SettingsView: View {
|
|||||||
Toggle("big_font", isOn: $hasIncreasedFontsize)
|
Toggle("big_font", isOn: $hasIncreasedFontsize)
|
||||||
.tint(.accent)
|
.tint(.accent)
|
||||||
|
|
||||||
Toggle("transliteration_title", isOn: $shouldTransliterateToLatin)
|
Picker(selection: $selectedLanguageForMap) {
|
||||||
.tint(.accent)
|
ForEach(Settings.availableLanguagesForMap) { languageForMap in
|
||||||
|
Text(languageForMap.localizedName)
|
||||||
|
.tag(languageForMap.id)
|
||||||
|
|
||||||
|
if languageForMap.id == "auto" || languageForMap.id == "default" {
|
||||||
|
Divider()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} label: {
|
||||||
|
Text("pref_maplanguage_title")
|
||||||
|
}
|
||||||
|
|
||||||
|
Toggle(isOn: $shouldTransliterateToLatin) {
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Text("transliteration_title")
|
||||||
|
|
||||||
|
if selectedLanguageForMap == "default" {
|
||||||
|
Text("transliteration_title_disabled_summary")
|
||||||
|
.font(.footnote)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tint(.accent)
|
||||||
|
.disabled(selectedLanguageForMap == "default")
|
||||||
|
|
||||||
Picker(selection: $selectedMapAppearance) {
|
Picker(selection: $selectedMapAppearance) {
|
||||||
ForEach(Settings.Appearance.allCases) { mapAppearance in
|
ForEach(Settings.Appearance.allCases) { mapAppearance in
|
||||||
@@ -267,6 +295,7 @@ struct SettingsView: View {
|
|||||||
has3dBuildings = Settings.has3dBuildings
|
has3dBuildings = Settings.has3dBuildings
|
||||||
hasAutomaticDownload = Settings.hasAutomaticDownload
|
hasAutomaticDownload = Settings.hasAutomaticDownload
|
||||||
hasIncreasedFontsize = Settings.hasIncreasedFontsize
|
hasIncreasedFontsize = Settings.hasIncreasedFontsize
|
||||||
|
selectedLanguageForMap = Settings.languageForMap
|
||||||
shouldTransliterateToLatin = Settings.shouldTransliterateToLatin
|
shouldTransliterateToLatin = Settings.shouldTransliterateToLatin
|
||||||
selectedMapAppearance = Settings.mapAppearance
|
selectedMapAppearance = Settings.mapAppearance
|
||||||
selectedAppearance = Settings.appearance
|
selectedAppearance = Settings.appearance
|
||||||
@@ -294,6 +323,11 @@ struct SettingsView: View {
|
|||||||
.onChange(of: hasIncreasedFontsize) { changedHasIncreasedFontsize in
|
.onChange(of: hasIncreasedFontsize) { changedHasIncreasedFontsize in
|
||||||
Settings.hasIncreasedFontsize = changedHasIncreasedFontsize
|
Settings.hasIncreasedFontsize = changedHasIncreasedFontsize
|
||||||
}
|
}
|
||||||
|
.onChange(of: selectedLanguageForMap) { changedSelectedLanguageForMap in
|
||||||
|
if let changedSelectedLanguageForMap {
|
||||||
|
Settings.languageForMap = changedSelectedLanguageForMap
|
||||||
|
}
|
||||||
|
}
|
||||||
.onChange(of: shouldTransliterateToLatin) { changedShouldTransliterateToLatin in
|
.onChange(of: shouldTransliterateToLatin) { changedShouldTransliterateToLatin in
|
||||||
Settings.shouldTransliterateToLatin = changedShouldTransliterateToLatin
|
Settings.shouldTransliterateToLatin = changedShouldTransliterateToLatin
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2498,6 +2498,16 @@ void Framework::SetMapLanguageCode(std::string const & langCode)
|
|||||||
m_searchAPI->SetLocale(langCode);
|
m_searchAPI->SetLocale(langCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Framework::ResetMapLanguageCode()
|
||||||
|
{
|
||||||
|
settings::Delete(settings::kMapLanguageCode);
|
||||||
|
if (m_drapeEngine)
|
||||||
|
ApplyMapLanguageCode(languages::GetCurrentMapLanguage());
|
||||||
|
|
||||||
|
if (m_searchAPI)
|
||||||
|
m_searchAPI->SetLocale(languages::GetCurrentMapLanguage());
|
||||||
|
}
|
||||||
|
|
||||||
void Framework::ApplyMapLanguageCode(std::string const & langCode)
|
void Framework::ApplyMapLanguageCode(std::string const & langCode)
|
||||||
{
|
{
|
||||||
int8_t langIndex = StringUtf8Multilang::GetLangIndex(langCode);
|
int8_t langIndex = StringUtf8Multilang::GetLangIndex(langCode);
|
||||||
|
|||||||
@@ -706,6 +706,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
static std::string GetMapLanguageCode();
|
static std::string GetMapLanguageCode();
|
||||||
void SetMapLanguageCode(std::string const & langCode);
|
void SetMapLanguageCode(std::string const & langCode);
|
||||||
|
void ResetMapLanguageCode();
|
||||||
|
|
||||||
void SetLargeFontsSize(bool isLargeSize);
|
void SetLargeFontsSize(bool isLargeSize);
|
||||||
bool LoadLargeFontsSize();
|
bool LoadLargeFontsSize();
|
||||||
|
|||||||
Reference in New Issue
Block a user