summaryrefslogtreecommitdiff
path: root/platform/macos/app/MGLVectorSource+MBXAdditions.m
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2017-05-20 19:44:52 -0700
committerMinh Nguyễn <mxn@1ec5.org>2017-05-23 10:09:48 -0700
commitc9de6cdb6c8b4a640c10940adbd76ed508900022 (patch)
tree3509bc9021bcaf004a1b3d5656d68da0c8b4a145 /platform/macos/app/MGLVectorSource+MBXAdditions.m
parenta57e9bc41093eb8f028dcab3593c3921d887bdc0 (diff)
downloadqtlocation-mapboxgl-c9de6cdb6c8b4a640c10940adbd76ed508900022.tar.gz
[ios, macos] More robust Streets localization
Added Arabic, Portuguese, and Simplified Chinese to the list of languages with specialized fields in the Mapbox Streets source. Rely on NSBundle to select the most appropriate locale based on the user’s preferred languages.
Diffstat (limited to 'platform/macos/app/MGLVectorSource+MBXAdditions.m')
-rw-r--r--platform/macos/app/MGLVectorSource+MBXAdditions.m18
1 files changed, 11 insertions, 7 deletions
diff --git a/platform/macos/app/MGLVectorSource+MBXAdditions.m b/platform/macos/app/MGLVectorSource+MBXAdditions.m
index 644b43a651..323bc74366 100644
--- a/platform/macos/app/MGLVectorSource+MBXAdditions.m
+++ b/platform/macos/app/MGLVectorSource+MBXAdditions.m
@@ -7,19 +7,23 @@
static dispatch_once_t onceToken;
static NS_SET_OF(NSString *) *mapboxStreetsLanguages;
dispatch_once(&onceToken, ^{
- mapboxStreetsLanguages = [NSSet setWithObjects:@"en", @"es", @"fr", @"de", @"ru", @"zh", nil];
+ // https://www.mapbox.com/vector-tiles/mapbox-streets-v7/#overview
+ mapboxStreetsLanguages = [NSSet setWithObjects:@"ar", @"de", @"en", @"es", @"fr", @"pt", @"ru", @"zh", @"zh-Hans", nil];
});
return mapboxStreetsLanguages;
}
-+ (nullable NSString *)preferredMapboxStreetsLanguage {
- for (NSString *language in [NSLocale preferredLanguages]) {
- NSString *languageCode = [[NSLocale localeWithLocaleIdentifier:language] objectForKey:NSLocaleLanguageCode];
- if ([[MGLVectorSource mapboxStreetsLanguages] containsObject:languageCode]) {
- return languageCode;
++ (NSString *)preferredMapboxStreetsLanguage {
+ NSArray<NSString *> *supportedLanguages = [MGLVectorSource mapboxStreetsLanguages].allObjects;
+ NSArray<NSString *> *preferredLanguages = [NSBundle preferredLocalizationsFromArray:supportedLanguages
+ forPreferences:[NSLocale preferredLanguages]];
+ NSString *mostSpecificLanguage;
+ for (NSString *language in preferredLanguages) {
+ if (language.length > mostSpecificLanguage.length) {
+ mostSpecificLanguage = language;
}
}
- return nil;
+ return mostSpecificLanguage ?: @"en";
}
- (BOOL)isMapboxStreets {