Learn how to localize place labels in the basemap.
The basemap styles service provides a number of different styles you can use in Esri Leaflet applications. Each style accepts a language
parameter, which allows you to localize place labels. There are currently over 30 different languages available.
In this tutorial, you use Esri Leaflet Vector to create a language selector and switch between different languages.
Prerequisites
An ArcGIS Location Platform or ArcGIS Online account.
Steps
Get the starter app
Select a type of authentication below and follow the steps to create a new application.
Set up authentication
Create developer credentials in your portal for the type of authentication you selected.
Set developer credentials
Use the API key or OAuth developer credentials so your application can access location services.
Create a basemap language function
Create a function that accepts a language code and returns a basemap style formatted with that language.
-
Define a new
get
function that accepts a language code and returns aLanguage Vector
.Basemap Layer Use dark colors for code blocks function getLanguage(languageCode) { return L.esri.Vector.vectorBasemapLayer(basemapStyle, ) }
-
In the basemap layer properties, set the
language
option to yourlanguage
. SetCode version
to access the styles service, and pass your access token.:2 Use dark colors for code blocks function getLanguage(languageCode) { return L.esri.Vector.vectorBasemapLayer(basemapStyle, { language: languageCode, version: 2, token: accessToken } ) }
Add a language selector
Add a menu that allows users to change the display language of your map.
-
Create a new
languages
object. For each supported language, call theget
function with its language code.Language Use dark colors for code blocks function getLanguage(languageCode) { return L.esri.Vector.vectorBasemapLayer(basemapStyle, { language: languageCode, version: 2, token: accessToken } ) } const languages = { "Global": getLanguage("global"), "Arabic": getLanguage("ar"), "Bosnian": getLanguage("bs"), "Bulgarian": getLanguage("bg"), "Catalan": getLanguage("ca"), "Chinese (Simplified)": getLanguage("zh-CN"), "Chinese (Hong Kong)": getLanguage("zh-HK"), "Chinese (Taiwan)": getLanguage("zh-TW"), "Croatian": getLanguage("hr"), "Czech": getLanguage("cs"), "Danish": getLanguage("da"), "Dutch": getLanguage("nl"), "Estonian": getLanguage("et"), "English": getLanguage("en"), "Finnish": getLanguage("fi"), "French": getLanguage("fr"), "German": getLanguage("de"), "Greek": getLanguage("el"), "Hebrew": getLanguage("he"), "Hungarian": getLanguage("hu"), "Indonesian": getLanguage("id"), "Italian": getLanguage("it"), "Japanese": getLanguage("ja"), "Korean": getLanguage("ko"), "Latvian": getLanguage("lv"), "Lithuanian": getLanguage("lt"), "Norwegian": getLanguage("nb"), "Polish": getLanguage("pl"), "Portuguese (Brazil)": getLanguage("pt-BR"), "Portuguese (Portugal)": getLanguage("pt-PT"), "Romanian": getLanguage("ro"), "Russian": getLanguage("ru"), "Serbian": getLanguage("sr"), "Slovak": getLanguage("sk"), "Slovenian": getLanguage("sl"), "Spanish": getLanguage("es"), "Swedish": getLanguage("sv"), "Thai": getLanguage("th"), "Turkish": getLanguage("tr"), "Ukrainian": getLanguage("uk").addTo(map), "Vietnamese": getLanguage("vi") };
-
Create a Leaflet
Control
and add it to your map. Pass thelanguages
object to display all of the supported languages.Use dark colors for code blocks const languages = { "Global": getLanguage("global"), "Arabic": getLanguage("ar"), "Bosnian": getLanguage("bs"), "Bulgarian": getLanguage("bg"), "Catalan": getLanguage("ca"), "Chinese (Simplified)": getLanguage("zh-CN"), "Chinese (Hong Kong)": getLanguage("zh-HK"), "Chinese (Taiwan)": getLanguage("zh-TW"), "Croatian": getLanguage("hr"), "Czech": getLanguage("cs"), "Danish": getLanguage("da"), "Dutch": getLanguage("nl"), "Estonian": getLanguage("et"), "English": getLanguage("en"), "Finnish": getLanguage("fi"), "French": getLanguage("fr"), "German": getLanguage("de"), "Greek": getLanguage("el"), "Hebrew": getLanguage("he"), "Hungarian": getLanguage("hu"), "Indonesian": getLanguage("id"), "Italian": getLanguage("it"), "Japanese": getLanguage("ja"), "Korean": getLanguage("ko"), "Latvian": getLanguage("lv"), "Lithuanian": getLanguage("lt"), "Norwegian": getLanguage("nb"), "Polish": getLanguage("pl"), "Portuguese (Brazil)": getLanguage("pt-BR"), "Portuguese (Portugal)": getLanguage("pt-PT"), "Romanian": getLanguage("ro"), "Russian": getLanguage("ru"), "Serbian": getLanguage("sr"), "Slovak": getLanguage("sk"), "Slovenian": getLanguage("sl"), "Spanish": getLanguage("es"), "Swedish": getLanguage("sv"), "Thai": getLanguage("th"), "Turkish": getLanguage("tr"), "Ukrainian": getLanguage("uk").addTo(map), "Vietnamese": getLanguage("vi") }; L.control.layers(languages, null, { collapsed: false }).addTo(map);
Add RTL language support
Esri Leaflet Vector does not automatically display right-to-left languages, such as Arabic and Hebrew, correctly. Use the Mapbox GL RTL Text plugin to configure settings for RTL languages.
-
Call the L.Esri.Vector.setRTLTextPlugin with the URL of the Mapbox GL RTL Text plugin to configure support for RTL languages.
Use dark colors for code blocks L.control.layers(languages, null, { collapsed: false }).addTo(map); L.esri.Vector.setRTLTextPlugin('https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.2.3/mapbox-gl-rtl-text.js');
Run the app
Run the app.
You should be able to use the Leaflet control to switch between basemap languages.
What's next?
Learn how to use additional ArcGIS location services in these tutorials:
Change the basemap style
Switch a basemap style in a map using the basemap styles service.
Display a custom basemap style
Add a styled vector basemap layer to a map.
Change the static basemap tiles style
Change the basemap style in a map using the static basemap tiles service (beta).
Add a feature layer
Add features from feature layers to a map.