Closed 1ec5 closed 7 years ago
We should expose an option on MGLStyle that allows the developer to turn automatic localization on and off (for supported sources). I think it should be on by default, for parity with MapKit and the Google Maps SDK, but there definitely needs to be a way to turn the feature off, in case the developer wants a specific language to be displayed.
Note that macosapp already performs this automatic localization, as of #6097 and #7398, so this ticket tracks upstreaming that code to the iOS and macOS SDKs.
Are any estimations when the issue would be fixed?
This was done in https://github.com/mapbox/mapbox-gl-native/pull/9582 on the release-ios-v3.6.0-android-v5.1.0
branch and is expected to be in the 3.6.2 release. cc @fabian-guerra
@boundsj Could u please provide any estimation when 3.6.2 would be released?
@evgzor patch releases for v3.6.x are going out every 2 to three weeks so it should be this week or next.
@boundsj please look:
Localization still does not work on iOS for German language.
Hi @evgzor did you set mapView.style.localizesLabels
to YES
?
did you set
mapView.style.localizesLabels
toYES
?
Additionally, this should be done in -[MGLMapViewDelegate mapView:didFinishLoadingStyle:]
or later.
@friedbunny @fabian-guerra on iOS all good but on Android Mapbox 5.1.3 still an issue: Could u help me and tell what could be wrong?
Hey @evgzor 👋
That feature is not included in the Android binding and the idea to cover that functionality is implementing it as a plugin. 👀 https://github.com/mapbox/mapbox-plugins-android/issues/36
That ticket is still opened so in the meantime you could do it manually:
locale
config changes 👀 android:configChanges
Locale.getDefault().getDisplayLanguage();
Layer mapText = map.getLayer("place-city-lg-n");
mapText.setProperties(textField("{name_ru}"));
If you know the language in advance you could directly change label language as shown above ☝️
For further information check Change your map’s label language and the language switch example.
Contributions are more than welcome so I encourage you to take a stab at https://github.com/mapbox/mapbox-plugins-android/issues/36 and send a PR fixing it (follow the steps mentioned above) 😛
Thanks Eugene!
When a user adjusts the Preferred Language Order setting in the Language & Region section of Settings to a language supported by the Mapbox Streets source, any style based on the Mapbox Streets source should automatically adjust by localizing the labels.
MGLMapView can observe
NSCurrentLocaleDidChangeNotification
and respond by obtainingNSLocale.autoupdatingCurrentLocale
, determining theidentifier
s of the sources whoseURL
matchesmapbox://mapbox.mapbox-streets-v*
, and replacing{name*}
tokens in thetextField
of any MGLSymbolStyleLayer whosesourceIdentifier
is one of those source identifiers. We already do something similar in iosapp on demand: #6819.We could also offer a way to extend this feature to arbitrary sources, by allowing the developer to specify which fields in the source correspond to which languages (see also mapbox/mapbox-gl#21).
Iterating over all the sources and style layers will require #6097. Discovering whether a source is Mapbox Streets will require #6584. #7030 would rely on a similar mechanism.
/ref #1108 /cc @incanus @pveugen @boundsj @frederoni