Some places on the map is labeled with Cyrillic names, but I need only English/Latin names of places on the map, however sometimes there are only local names. In general I need transliteration to English? How can I implement this?
After all, it depends on which languages specific placename is tagged in OpenStreetMap there is always "local" variant in local primary language, and CARTO Mobile SDK uses this, but the data has also other languages, so you can control it as following.
CartoOfflineVectorTileLayer are subclasses of it) has method
setLanguage(String) to select language, so e.g.:
will give you English language maps.
In SDK 4.0.2 SDK and nutiteq.osm tile source you can use following languages: local/default (will give Казахстан in your case), en, es, de, fr, it, ru, zh (Chinese), tr (Turkish) and et (Estonian) as language
From newer CARTO SDK 4.1.0 and new carto.streets source you can use any OSM language. I would suggest to configure map based on device language settings, with something like:
// Android layer.setLanguage(Locale.getDefault().getLanguage()); // iOs / Xamarin layer.Language = Foundation.NSLocale.PreferredLanguages.Substring(0, 2);
What if specific name is not available in given language? Then the
MapView will fallback to 'local' language by default, the map will not be empty. But if the 'local' language is still unreadable, so I'd prefer latin alphabet names? In SDK 4.1.0 you can configure primary and secondary fallback languages, e.g. you set primary language to 'de' for Germans, then to avoid strange alphabets (say Hebrew, Greek, most of Asia) set 'en' as primary fallback; then local is used only if both your primary and English names are missing:
layer.FallbackLanguage = "en";