Локализация карты в Carto Mobile SDK

Кто-нибудь знает, можно ли локализовать заголовки объектов карты с помощью Carto Mobile SDK? И если это возможно, как я могу получить это?

Например, я хотел бы видеть "Казахстан" вместо "Казахстан", однако заголовок над объектами зависит от языка страны, в которой расположен объект. Я хочу сделать это локализованным, позвольте мне сказать, на английский. Нажмите на ссылку, чтобы увидеть скриншот.

На всякий случай это полезно и может помочь: я использую платформу Xamarin.iOS. Версия Carto Mobile SDK - 4.0.2.

Заранее спасибо.

1 ответ

Решение

CartoVectorTileLayer (и CartoOnlineVectorTileLayer, и CartoOfflineVectorTileLayer являются его подклассами) имеет метод setLanguage(String) для него, например:

layer.setLanguage("en");

даст вам карты на английском языке.

В SDK 4.0.2 SDK и источнике плиток nutiteq.osm вы можете использовать следующие языки: локальный / по умолчанию (в вашем случае даст Казахстан), en, es, de, fr, it, ru, zh (китайский), tr (турецкий)) и др. (эстонский) как язык

Из CARTO SDK 4.1.0 и нового источника carto.streets вы можете использовать любой язык OSM. Я бы предложил настроить карту на основе языковых настроек устройства, например:

// Android
layer.setLanguage(Locale.getDefault().getLanguage());

// iOs / Xamarin
layer.Language = Foundation.NSLocale.PreferredLanguages[0].Substring(0, 2);

Что, если конкретное имя не доступно на данном языке? Тогда MapView по умолчанию переключится на "местный" язык, карта не будет пустой. Но если "местный" язык все еще не читается, я бы предпочел латинские алфавитные названия? В SDK 4.1.0 вы можете настроить первичные и вторичные резервные языки, например, вы установите для немецкого языка первичный язык "de", а затем, чтобы избежать странных алфавитов (скажем, иврита, греческого, большей части Азии), установите "en" в качестве основного запасного; тогда local используется только в том случае, если отсутствуют ваши основные и английские имена.

Другие вопросы по тегам