Я использую google-play-service-lib
. Как я могу изменить язык карты Google, т. е. показать местоположения на корианском языке или языке хинди.
Как изменить язык Google Map V2 Android
- у вас есть решение для языка хинди? приведенные ниже примеры работают для ko, но не для hi. 01.04.2017
- @ArthTilva Это был очень старый запрос, поэтому я забыл о поддержке хинди. 06.04.2017
- Для людей, спрашивающих о языке хинди (hi_IN), проверьте ответ: stackoverflow.com/questions/48862517/ 16.09.2020
Ответы:
Вы можете изменить местоположение для Карт Google, использующих Google Map API версии 2, с помощью Язык< /а> Объект. Однако язык должен поддерживаться на используемом устройстве.
Вот полный список поддерживаемых языков .
С помощью этого кода ниже я смог изменить язык на карте на китайский:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String languageToLoad = "zh_CN";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}
Результат, в коде установлен китайский язык (без ручных изменений) на телефоне в США:
Я также смог заставить его показывать корейский язык, используя этот код локали:
String languageToLoad = "ko_KR";
Результат:
ПРИМЕЧАНИЕ
Похоже, поддерживаемые языки для Карт Google перечислены здесь: https://developers.google.com/maps/faq#languagesupport
Нам нужно только изменить местоположение в приложении, чтобы получить описания карты на другом языке. Мы должны добавить проверки, чтобы избежать использования устаревших методов:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String language= "hi"; //Hindi language!.
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = new Configuration();
if(Build.VERSION.SDK_INT>Build.VERSION_CODES.JELLY_BEAN){
config.setLocale(locale);
getContext().createConfigurationContext(config);
}else { //deprecated
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
}
...
...
...
Очень важно отметить, что поддерживаются не все языки, это пример на русском языке:
Мы можем получить кодовые языки из:
https://www.transifex.com/explore/languages/
Просто измените локаль на устройстве. Если переводы доступны, они будут показаны автоматически.
Скриншот моего американского телефона с переключением языка на корейский:
надеюсь, что это простое решение для изменения языка карты поможет кому-то:
просто добавьте вызов setUpMapLocale()
в свою активность onCreate()
:
private fun setUpMapLocale() {
val languageToLoad = "iw_IL" // your desired language locale
val locale = Locale(languageToLoad)
Locale.setDefault(locale)
baseContext.resources.configuration.setLocale(locale)
}
поэтому мне просто нужно было вызвать setLocale()
для существующей конфигурации, прикрепленной к baseContext
ресурсам.
setContentView()
или любого другого типа раздувания макета. 31.05.2015hi_IN
? 13.11.2015