Как изменить язык Google Map V2 android

Я использую google-play-service-lib. Как изменить язык карты Google, т.е. Показать местоположения на корейском языке или на языке хинди.

Ответ 1

Вы можете изменить местоположение для Карт Google, которые используют Google Map API V2, используя Locale Объект. Язык должен поддерживаться на используемом устройстве.

Вот полный список поддерживаемых языков.

С помощью этого кода ниже я смог изменить язык на карте на китайский:

@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();

}

Результат, язык, установленный на китайском языке в коде (без ручных изменений) на телефоне в США:

Chinese Map

Мне также удалось показать его корейским, используйте этот код Locale:

 String languageToLoad = "ko_KR";

Результат:

Korean Map

Примечание

Похоже, что поддерживаемые языки для Карт Google перечислены здесь: https://developers.google.com/maps/faq#languagesupport

Ответ 2

Нам нужно изменить местоположение в приложении, чтобы получить описания Map на другом языке. Мы должны добавить проверки, чтобы избежать использования устаревших методов:

 @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/

Ответ 3

Просто измените локаль на устройстве. Если переводы доступны, они будут показаны автоматически.

Снимок экрана моего американского телефона с языковой версией, переведенной на корейский язык: