【问题标题】:How to change language Google Map V2 android如何更改语言 Google Map V2 android
【发布时间】:2014-04-04 12:48:27
【问题描述】:

我正在使用google-play-service-lib。如何更改谷歌地图的语言,即以韩语或印地语显示位置。

【问题讨论】:

  • 你有印地语的解决方案吗?下面给出的示例适用于“ko”,但不适用于“hi”。
  • @ArthTilva 这是非常古老的查询,所以我忘记了印地语支持。
  • 对于询问印地语 (hi_IN) 语言的人,请查看答案:stackoverflow.com/questions/48862517/…

标签: android google-maps google-play-services


【解决方案1】:

您可以使用Locale 对象更改使用 Google Map API V2 的 Google 地图的位置。不过,需要在所使用的设备上支持该语言。

这里是full list of supported languages

使用下面的代码,我可以将地图上的语言更改为中文:

@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

【讨论】:

  • 这段代码与我已有的非常接近。这使得我的应用程序的所有其余部分都使用所需的语言环境,而不是地图。也许是因为我使用了支持库的地图:getSupportFragmentManager().findFragmentById(R.id.map)
  • 好吧,它似乎部分起作用了! Locale.setDefault(locale);似乎是关键,但它被大量缓存,所以当我在应用程序中更改语言环境时,它不会更改地图的语言环境。
  • @Gavriel 有趣。需要注意的一点是,一定要在调用 setContentView() 或任何其他类型的布局膨胀之前调用它。
  • 您好,我无法以印地语显示谷歌地图。我也更新了播放服务和谷歌地图。知道我该怎么做。
  • @DanielNugent 很抱歉在这个非常老的线程上打桩,但我在使用语言环境“ko_KR”时尝试了你在这个答案中提供的解决方案,它工作正常。但是,将语言环境更改为“hi”或“hi_IN”不起作用。谷歌的问题跟踪器here 中存在一个问题,我已对其添加了评论。
【解决方案2】:

我们只需要更改应用程序中的位置即可获得不同语言的地图描述。我们必须添加验证以避免使用已弃用的方法:

 @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】:

    只需更改设备上的区域设置即可。如果有翻译,它们将自动显示。

    我的美国手机屏幕截图,区域设置为韩语:

    【讨论】:

    • 这行得通吗?我尝试将设备的区域设置更改为意大利语、西班牙语、法语,但 Google 地图始终以英语显示。
    • 是的,我在回答之前测试了它。我将手机上的语言环境更改为韩语,我自己的地图测试应用程序大多更改为韩语,甚至我所在城市的小街道的名称。我用这个应用程序来改变语言环境:play.google.com/store/apps/details?id=com.bruce.setlocale
    • 注意:应用程序在启动时选择其语言。您可能必须强制停止应用并重新启动它才能更改语言。
    • @GiulioPiancastelli 我和你有同样的经历。你找到解决办法了吗?
    • @Gavriel 有点晚了!但我刚刚发布了一个答案,如果您仍然感兴趣,它会以编程方式更改地图语言。
    【解决方案4】:

    希望这个更改地图语言的简单解决方案对某人有所帮助:

    只需在您的活动onCreate() 中添加呼叫setUpMapLocale()

     private fun setUpMapLocale() {
            val languageToLoad = "iw_IL" // your desired language locale
            val locale = Locale(languageToLoad)
            Locale.setDefault(locale)
            baseContext.resources.configuration.setLocale(locale)
        }
    

    所以我只需要在附加到 baseContext 资源的现有配置上调用 setLocale()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 2013-05-11
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多