Step 1:Create One java class which extends from 'Application'
public class LocaleApplication extends Application{
private Locale mLocale = null;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (mLocale != null) {
newConfig.locale = mLocale;
Locale.setDefault(mLocale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
@Override
public void onCreate() {
super.onCreate();
updateLocale(BuildConfig.LOCALE);
}
public void updateLocale(Locale locale) {
Configuration config = getBaseContext().getResources().getConfiguration();
if (!config.locale.equals(locale)) {
mLocale = new Locale(locale.getLanguage(),locale.getCountry());
Locale.setDefault(mLocale);
config.locale = mLocale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
// reload challenge and achievement strings - these were created with the previous locale
}
}
}
Step 2: Mention this class name in Android manifest file under <application> tag
<application
android:name="LocaleApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
Step 3: Take appropriate resource folders like values-es-rCO,values-el etc.
Step 4: Add below steps in build.gradle for resource configurations.
defaultConfig {
applicationId "com.example.ankitpr1.forcelocalisation_android"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
buildConfigField 'java.util.Locale', 'LOCALE_SPANISH_LATAM', 'new java.util.Locale(\"es\",\"US\")'
buildConfigField 'java.util.Locale', 'LOCALE_Greek', 'new java.util.Locale(\"el\")'
}
productFlavors {
esus{
applicationId 'com.colombia.us'
resConfigs 'es-rCO'
buildConfigField 'java.util.Locale', 'LOCALE', 'new java.util.Locale(\"es\",\"CO\")'
versionCode 3
versionName "3.0"
// ! any change in Locale, should be applied in defaultConfig as well
}
Greek {
applicationId 'com.test.greek'
resConfigs 'el'
buildConfigField 'java.util.Locale', 'LOCALE', 'new java.util.Locale(\"el\")'
versionCode 2
versionName "2.1"
l
}
}
//List all flavours in project to be used for check current flavour against others
productFlavours.all {
flavour ->
def flavourName = String.valueOf(flavour.name)
defaultConfig.buildConfigField 'String', 'Flavour_' + flavourName , '\"' + flavourName + '\"'
}
Wednesday, August 3, 2016
Force Localisation Android
Subscribe to:
Posts (Atom)