Skip to content

Commit

Permalink
Feat:Language support
Browse files Browse the repository at this point in the history
  • Loading branch information
iamsh4shank committed Jun 22, 2020
1 parent ce09979 commit 334706f
Show file tree
Hide file tree
Showing 10 changed files with 193 additions and 9 deletions.
1 change: 1 addition & 0 deletions mifosng-android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@
<activity
android:name=".SettingsActivity"
android:label="@string/settings"
android:configChanges="orientation|locale"
android:screenOrientation="portrait" />
<activity
android:name=".offline.syncsavingsaccounttransaction.SyncSavingsAccountTransactionActivity"
Expand Down
8 changes: 7 additions & 1 deletion mifosng-android/src/main/java/com/mifos/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.mifos.mifosxdroid.injection.module.ApplicationModule;
import com.mifos.mifosxdroid.offlinejobs.OfflineJobCreator;
import com.mifos.mobile.passcode.utils.ForegroundChecker;
import com.mifos.utils.LanguageHelper;
import com.raizlabs.android.dbflow.config.FlowConfig;
import com.raizlabs.android.dbflow.config.FlowManager;

Expand Down Expand Up @@ -86,4 +87,9 @@ public void setComponent(ApplicationComponent applicationComponent) {
mApplicationComponent = applicationComponent;
}

}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(LanguageHelper.onAttach(base, "en"));
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.mifos.mifosxdroid;

import android.content.Intent;
import android.os.Bundle;

import com.mifos.mifosxdroid.core.MifosBaseActivity;
import com.mifos.mifosxdroid.online.DashboardActivity;

/**
* Created by mayankjindal on 22/07/17.
Expand All @@ -17,4 +19,12 @@ public void onCreate(Bundle savedInstanceState) {
.replace(R.id.container, new SettingsFragment())
.commit();
}

@Override
public void onBackPressed() {
super.onBackPressed();
Intent i = new Intent(this, DashboardActivity.class);
startActivity(i);
}

}
Original file line number Diff line number Diff line change
@@ -1,22 +1,33 @@
package com.mifos.mifosxdroid;

import android.app.FragmentTransaction;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;;
import android.preference.SwitchPreference;
import android.widget.Toast;;

import com.mifos.mifosxdroid.core.util.Toaster;
import com.mifos.mifosxdroid.dialogfragments.syncsurveysdialog.SyncSurveysDialogFragment;
import com.mifos.utils.FragmentConstants;
import com.mifos.utils.LanguageHelper;

/**
* Created by mayankjindal on 22/07/17.
*/

public class SettingsFragment extends PreferenceFragment {
public class SettingsFragment extends PreferenceFragment implements
SharedPreferences.OnSharedPreferenceChangeListener {


SwitchPreference mEnableSyncSurvey;

private String[] languages;
private LanguageCallback languageCallback;

public static SettingsFragment newInstance() {
SettingsFragment fragment = new SettingsFragment();
Bundle args = new Bundle();
Expand All @@ -28,6 +39,7 @@ public static SettingsFragment newInstance() {
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
languages = getActivity().getResources().getStringArray(R.array.language_option);
mEnableSyncSurvey = (SwitchPreference)
findPreference(getResources().getString(R.string.sync_survey));
mEnableSyncSurvey.setOnPreferenceChangeListener(
Expand All @@ -45,7 +57,49 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
getResources().getString(R.string.sync_clients));
}
return true;
}
});
}
});
}

public static SettingsFragment newInstance(LanguageCallback languageCallback) {
SettingsFragment fragment = new SettingsFragment();
fragment.setLanguageCallback(languageCallback);
return fragment;
}

@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}

@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().
unregisterOnSharedPreferenceChangeListener(this);
}

public void setLanguageCallback(LanguageCallback languageCallback) {
this.languageCallback = languageCallback;
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
Preference preference = findPreference(s);
if (preference instanceof ListPreference) {
ListPreference listPreference = (ListPreference) preference;
LanguageHelper.setLocale(this.getActivity(), listPreference.getValue());
Toast.makeText(getActivity(), R.string.lang_changed, Toast.LENGTH_SHORT).show();
//this.languageCallback.updateNavDrawer();
startActivity(new Intent(getActivity(), getActivity().getClass()));
//refresh settings fragment
setPreferenceScreen(null);
addPreferencesFromResource(R.xml.preferences);
}
}

public interface LanguageCallback {
void updateNavDrawer();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.mifos.mifosxdroid.passcode.PassCodeActivity;
import com.mifos.mobile.passcode.BasePassCodeActivity;
import com.mifos.utils.Constants;
import com.mifos.utils.LanguageHelper;
import com.mifos.utils.PrefManager;

/**
Expand Down Expand Up @@ -63,6 +64,11 @@ public void setActionBarTitle(String title) {
}
}

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(LanguageHelper.onAttach(base));
}

protected void showBackButton() {
if (getSupportActionBar() != null) {
getSupportActionBar().setHomeButtonEnabled(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import android.view.inputmethod.InputMethodManager;

import com.mifos.mifosxdroid.R;
import com.mifos.utils.LanguageHelper;
import com.mifos.utils.Network;

/**
Expand All @@ -27,10 +28,10 @@ public class MifosBaseFragment extends Fragment {
private InputMethodManager inputManager;
private MifosProgressBarHandler mMifosProgressBarHandler;

@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
public void onAttach(Context context) {
super.onAttach(LanguageHelper.onAttach(context));
Activity activity = context instanceof Activity ? (Activity) context : null;
this.activity = activity;
try {
callback = (BaseActivityCallback) activity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_dashboard);

ButterKnife.bind(this);
runJobs();
replaceFragment(new SearchFragment(), false, R.id.container);

// setup navigation drawer and Navigation Toggle click and Offline Mode SwitchButton
Expand Down
73 changes: 73 additions & 0 deletions mifosng-android/src/main/java/com/mifos/utils/LanguageHelper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.mifos.utils;

import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.preference.PreferenceManager;

import com.mifos.mifosxdroid.R;

import java.util.Locale;

/**
* Created by shashankpriyadarshi on 20/06/20.
*/

public class LanguageHelper {

public static Context onAttach(Context context) {
String lang = getPersistedData(context, Locale.getDefault().getLanguage());
return setLocale(context, lang);
}

public static Context onAttach(Context context, String defaultLanguage) {
String lang = getPersistedData(context, defaultLanguage);
return setLocale(context, lang);
}

public static Context setLocale(Context context, String language) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return updateResources(context, language);
}

return updateResourcesLegacy(context, language);
}

private static String getPersistedData(Context context, String defaultLanguage) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(context.getString(R.string.language_type), defaultLanguage);
}

@TargetApi(Build.VERSION_CODES.N)
private static Context updateResources(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);

Configuration configuration = context.getResources().getConfiguration();
configuration.setLocale(locale);
configuration.setLayoutDirection(locale);

return context.createConfigurationContext(configuration);
}

@SuppressWarnings("deprecation")
private static Context updateResourcesLegacy(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);

Resources resources = context.getResources();

Configuration configuration = resources.getConfiguration();
configuration.locale = locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
configuration.setLayoutDirection(locale);
}

resources.updateConfiguration(configuration, resources.getDisplayMetrics());

return context;
}
}
25 changes: 25 additions & 0 deletions mifosng-android/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -832,4 +832,29 @@
<string name="entry">ENTRY</string>
<string name="network_issue">Network Issue</string>

<string name="language">Language</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">Language Changed</string>

<string-array name="language_option" translatable="false">
<item>Catalan</item>
<item>English</item>
<item>Spanish</item>
<item>French</item>
<item>Swahili</item>
<item>हिंदी</item>
<item>Chinese</item>
</string-array>


<string-array name="languages_value" translatable="false">
<item>ca</item>
<item>en</item>
<item>es</item>
<item>fr</item>
<item>sw</item>
<item>hi</item>
<item>zh</item>
</string-array>

</resources>
9 changes: 9 additions & 0 deletions mifosng-android/src/main/res/xml/preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,13 @@
<SwitchPreference
android:key="@string/sync_survey"
android:title="@string/sync_survey"/>

<ListPreference
android:title="@string/language"
android:summary="Select the language in which you want to view the app"
android:key="@string/language_type"
android:defaultValue="en"
android:entries="@array/language_option"
android:entryValues="@array/languages_value" />

</PreferenceScreen>

0 comments on commit 334706f

Please sign in to comment.