When building a map from a Mapbox template style, map labels will appear in English by default. You can change the language of your map’s labels directly in the Mapbox Studio style editor or dynamically using Mapbox GL JS or the Mapbox Android SDK. This article also outlines changing label langauge in Mapbox Studio Classic.
All Mapbox template maps use the Mapbox Streets vector tile tileset for map features. In this tileset, there are seven different name fields for each of the label layers:
name — the name or names used locally for the place
name_en — English (if available)
name_es — Spanish (if available)
name_fr — French (if available)
name_de — German (if available)
name_ru — Russian (if available)
name_zh — Chinese (if available)
For the Spanish, French, and German labels there are additional fallback conditions. Where the local name is in a non-latin writing system and no Spanish/French/German translation is available, these fields will show an English or international version of the name if possible, otherwise they will show the local name.
name_zh field contains Mandarin using simplified Chinese characters for our custom label layers:
#marine_label. All other label layers are sourced from OpenStreetMap and may contain one of several dialects and either simplified or traditional Chinese characters in the
Change label language in Mapbox Studio
Layer by layer
- Create a new style or edit an existing one in Mapbox Studio.
- Select the layer that contains the labels you’d like to edit.
- Under the Text tab, click the value next to Text field. A panel will appear with all language options for the layer.
- Click the desired language; the map will update on select.
text-fieldinput box with new language.
Resulted new language in map style.
Multiple layers at once
Instead of changing each label layer individually, you can use the Properties panel to change all the label layer’s languages.
Click Properties at the bottom of the layers list to reveal the Properties panel and click Text field. This will show a list of each Text field in your map style. Any change you make in one of these fields will also apply to all other layers that had the same value.
Change label language dynamically
Mapbox GL JS
.setLayoutProperty() method in Mapbox GL JS. See the language switcher Mapbox GL JS example for more details.
Mapbox Android SDK
With the Mapbox Android SDK, you can change the language of labels on your map dynamically at runtime:
SymbolLayer cityLabelLayer = mapboxMap.getLayerAs("city_label_big");
See the Android SDK documentation for details.
Change label language in Mapbox Studio Classic
Most of the Mapbox preset styles in Mapbox Studio Classic will have a
@name variable in the CartoCSS. This is where you can set the language. Below are the options and an example of how to set the value of
'[name_en]' or English labels.
// Language options: name (local), name_en, name_fr, name_es, name_de
Swap out any of the language options inside the brackets to change your labels to that language.
Next, you must set all the labels with the property
text-name with the value
@name. For example: