I have an app where you can change the locale from the settings (the purpose is to be able to have a locale inside the app that is different from the system locale) and I would like to be able to set the map's language as well. I could only find answers like "set the system language of your phone", which is not what I am looking for. Is there a way to set the map's language programmatically or from xml?
public class LocalizedActivity extends FragmentActivity {
private GoogleMap map;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// you need to call this ASAP:
setLocaleResources("iw");
// after this most parts of the UI are localized, but not the map
setContentView(R.layout.main);
android.support.v4.app.FragmentManager sfm = getSupportFragmentManager();
final Fragment f = sfm.findFragmentById(R.id.map);
final SupportMapFragment mf = (SupportMapFragment) f;
map = mf.getMap();
}
static void setLocaleResources(final String languageCode) {
final Context context = RedAlert.getContext();
Resources res = context.getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale(languageCode);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
conf.setLayoutDirection(conf.locale);
}
res.updateConfiguration(conf, dm);
}
main.xml:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>