Skip to content

Commit

Permalink
Merge pull request #1522 from iamsh4shank/language_support
Browse files Browse the repository at this point in the history
Feat: Language support
  • Loading branch information
iamsh4shank committed Jun 2, 2021
2 parents 438f48a + 88dca8d commit 6c3892a
Show file tree
Hide file tree
Showing 17 changed files with 250 additions and 24 deletions.
5 changes: 5 additions & 0 deletions mifosng-android/src/main/java/com/mifos/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,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.mifos.utils.ThemeHelper;
import com.raizlabs.android.dbflow.config.FlowConfig;
import com.raizlabs.android.dbflow.config.FlowManager;
Expand Down Expand Up @@ -94,4 +95,8 @@ public void setComponent(ApplicationComponent applicationComponent) {
mApplicationComponent = applicationComponent;
}

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(LanguageHelper.onAttach(base));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import android.os.Bundle
import com.mifos.mifosxdroid.core.MifosBaseActivity
import com.mifos.mifosxdroid.online.DashboardActivity


/**
* Created by mayankjindal on 22/07/17.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
package com.mifos.mifosxdroid

import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.preference.ListPreference
import android.preference.Preference.OnPreferenceChangeListener
import android.preference.PreferenceFragment
import android.preference.SwitchPreference
import android.widget.Toast
import com.mifos.mifosxdroid.dialogfragments.syncsurveysdialog.SyncSurveysDialogFragment
import com.mifos.utils.FragmentConstants
import com.mifos.utils.LanguageHelper
import com.mifos.utils.ThemeHelper


/**
* Created by mayankjindal on 22/07/17.
*/
class SettingsFragment : PreferenceFragment() {
class SettingsFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener {
var mEnableSyncSurvey: SwitchPreference? = null
override fun onCreate(savedInstanceState: Bundle?) {
private lateinit var languages: Array<String>
private var languageCallback: LanguageCallback? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
addPreferencesFromResource(R.xml.preferences)
languages = activity.resources.getStringArray(R.array.language_option)
mEnableSyncSurvey = findPreference(resources.getString(R.string.sync_survey)) as SwitchPreference
mEnableSyncSurvey!!.onPreferenceChangeListener =
OnPreferenceChangeListener { preference, newValue ->
mEnableSyncSurvey!!.onPreferenceChangeListener = OnPreferenceChangeListener { preference, newValue ->
if (newValue as Boolean) {
val syncSurveysDialogFragment = SyncSurveysDialogFragment.newInstance()
val fragmentTransaction = fragmentManager.beginTransaction()
Expand All @@ -33,15 +37,45 @@ class SettingsFragment : PreferenceFragment() {
}
true
}
val themePreference = findPreference("dark_mode") as ListPreference

val langPref = findPreference("language_type") as ListPreference
langPref.onPreferenceChangeListener = OnPreferenceChangeListener {preference, newValue ->
LanguageHelper.setLocale(this.activity, newValue.toString())
startActivity(Intent(activity, activity.javaClass))
preferenceScreen = null
addPreferencesFromResource(R.xml.preferences)
preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this)
true
}

val themePreference = findPreference(resources.getString(R.string.mode_key)) as ListPreference
themePreference.onPreferenceChangeListener = OnPreferenceChangeListener { preference, newValue ->
val themeOption = newValue as String
ThemeHelper.applyTheme(themeOption)
startActivity(Intent(activity, activity.javaClass))
Toast.makeText(activity, "Switched to ${themeOption.toString()} Mode", Toast.LENGTH_SHORT).show()
true
}
}

override fun onPause() {
super.onPause()
preferenceScreen.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
}

fun setLanguageCallback(languageCallback: LanguageCallback?) {
this.languageCallback = languageCallback
}

override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, s: String) {
val preference = findPreference(s) as ListPreference
LanguageHelper.setLocale(this.activity, preference.value)
}

interface LanguageCallback {
fun updateNavDrawer()
}

companion object {
fun newInstance(): SettingsFragment {
val fragment = SettingsFragment()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,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 @@ -64,6 +65,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 @@ -80,7 +80,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;
}
}
8 changes: 8 additions & 0 deletions mifosng-android/src/main/res/values-ca/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<string name="branch_id">ID de la branca</string>
<string name="balance">Balanç</string>
<string name="client">Client</string>
<string name="settings">Configuració</string>
<string name="clear_data">Buidar camps</string>
<string name="choose_file">Click per escollir fitxer</string>
<string name="center_name">Nom del centre</string>
Expand Down Expand Up @@ -155,4 +156,11 @@
<string name="valid">Vàlid</string>
<string name="surveyEmpty"> Aquesta enquesta està buida</string>
<string name="back_again">Appuyez de nouveau sur la touche pour quitter</string>

<!-- Language -->
<string name="language">Llenguatge</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">S\'ha canviat l\'idioma</string>
<string name="lang_change_description">Seleccioneu l\'idioma en què voleu veure l\'aplicació</string>
<string name="dark_mode">mode fosc</string>
</resources>
8 changes: 8 additions & 0 deletions mifosng-android/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<string name="action_settings">Configuración</string>
<string name="activation_date">Fecha de activación</string>
<string name="active">Activo</string>

<string name="add_new">Añadir nuevo</string>
<string name="additional_payment">Pago adicional</string>
<string name="amount">Cantidad</string>
Expand Down Expand Up @@ -155,4 +156,11 @@
<string name="valid">Válido</string>
<string name="surveyEmpty">Esta encuesta está vacía</string>
<string name="back_again">Vuelva a pulsar para salir</string>

<!-- Language -->
<string name="language">Idioma</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">Idioma cambiado</string>
<string name="lang_change_description">Seleccione el idioma en el que desea ver la aplicación</string>
<string name="dark_mode">modo oscuro</string>
</resources>
8 changes: 8 additions & 0 deletions mifosng-android/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -602,4 +602,12 @@
<item>prêts</item>
<item>comptes d\'épargne</item>
</string-array>

<!-- Language -->
<string name="language">Langue</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">La langue a changé</string>
<string name="lang_change_description">Sélectionnez la langue dans laquelle vous souhaitez afficher l\'application</string>
<string name="dark_mode">mode sombre</string>

</resources>
26 changes: 26 additions & 0 deletions mifosng-android/src/main/res/values-hi/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@
<string name="add_new">नया जोड़ें</string>
<string name="charge_text">छोटी लिपि</string>
<string name="charges">प्रभार</string>
<string name="checker_inbox">चेकर इनबॉक्स</string>
<string name="checker_inbox_and_pending_tasks">चेकर इनबॉक्स तथा कार्य</string>
<string name="choose_file">फ़ाइल चुनने के लिए क्लिक करें</string>
<string name="clear_data">डेटा को नष्ठ करें</string>
<string name="click_to_refresh">रिफ्षे॔ करने के लिये क्लिक करें</string>
Expand Down Expand Up @@ -348,6 +350,7 @@
<string name="review_payment">भुगतान की समीक्षा करें</string>
<string name="review_transaction">लेनदेन की समीक्षा करें</string>
<string name="review_transaction_details">भुगतान के विवरण की समीक्षा करें</string>
<string name="run_report">रिपोर्ट</string>
<string name="save">सहेजें</string>
<string name="savingAccounts">बचत खाते</string>
<string name="saving_min_required_balance">न्यूनतम आवश्यक बैलेंस लागू करें</string>
Expand Down Expand Up @@ -612,4 +615,27 @@
<string name="individual_collection_sheet">व्यक्तिगत कलेक्शन शीट</string>
<string name="due_collection">कलेक्शन का देय</string>

!-- About App -->
<string name="about_app">फील्ड ऑफिसर एप्लीकेशन एक एप्लीकेशन है बैंक स्टाफ फील्ड ऑफिसर के लिए विकसित किया गया
ग्राहकों का केंद्र, समूह, ऋण खाता, बचत खाता, आदि।ट्रैक रखने के लिए </string>
<string name="about_mifos">द्वारा विकसित <a href="https://mifos.org/">Mifos</a>
<a href="https://github.com/openMF/android-client/graphs/contributors">contributors</a>.
</string>
<string name="about_us_connect">हमारे से जुड़िये</string>
<string name="link">हमसे मिलें</string>
<string name="about_support_github_sub">रेपो को फोर्क करें और परिवर्तनों को आगे बढ़ाएं या नए मुद्दे जमा करें।</string>
<string name="about_support_github">GitHub</string>
<string name="about">ऐप के बारे में</string>
<string name="about_support_twitter_sub">Twitter page for the application</string>
<string name="about_support_twitter">Twitter</string>
<string name="about_license">License</string>
<string name="about_license_sub">Check Mozilla Public License 2.0</string>

<!-- Language -->
<string name="language">भाषा</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">भाषा बदली गए</string>
<string name="lang_change_description">उस भाषा का चयन करें जिसमें आप ऐप देखना चाहते हैं</string>
<string name="dark_mode">डार्क मोडं</string>

</resources>
7 changes: 7 additions & 0 deletions mifosng-android/src/main/res/values-kn/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -586,4 +586,11 @@
<string name="overdue_x_number">ಮಿತಿಮೀರಿದ ಎಕ್ಸ್ ಸಂಖ್ಯೆ</string>
<string name="overdue_y_number">ಮಿತಿಮೀರಿದ ವೈ ಸಂಖ್ಯೆ</string>
<string name="error_select_group">ದಯವಿಟ್ಟು ಒಂದು ಗುಂಪನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</string>

<!-- Language -->
<string name="language">ಭಾಷೆ</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">ಭಾಷೆ ಬದಲಾಗಿದೆ</string>
<string name="lang_change_description">ನೀವು ಅಪ್ಲಿಕೇಶನ್ ವೀಕ್ಷಿಸಲು ಬಯಸುವ ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ</string>
<string name="dark_mode">ಡಾರ್ಕ್ ಮೋಡ್</string>
</resources>
6 changes: 6 additions & 0 deletions mifosng-android/src/main/res/values-sw/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -723,5 +723,11 @@
<string name="failed_to_load_db_groups">Upakio wa makundi ya hifadhidata umefeli</string>
<string name="browse">Vinjari</string>

<!-- Language -->
<string name="language">Lugha</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">Lugha Imebadilishwa</string>
<string name="lang_change_description">Chagua lugha ambayo unataka kutazama programu</string>
<string name="dark_mode">hali ya giza</string>

</resources>
7 changes: 7 additions & 0 deletions mifosng-android/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -712,5 +712,12 @@
<string name="incorrect_passcode_more_than_three">您已经输错三次密码了,请再次尝试</string>
<string name="error_passcode">密码应该是4位数</string>

<!-- Language -->
<string name="language">语</string>
<string name="language_type" translatable="false">language_type</string>
<string name="lang_changed">语言已更改</string>
<string name="lang_change_description">选择您要查看应用程序的语言</string>
<string name="dark_mode">暗模式</string>


</resources>
9 changes: 4 additions & 5 deletions mifosng-android/src/main/res/values/dimens.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
<dimen name="dimension_72_dp">72dp</dimen>
<dimen name="dimension_32_dp">32dp</dimen>

<dimen name="marginItemsInSectionSmall">16dp</dimen>
<dimen name="marginItemsInSectionMedium">20dp</dimen>
<dimen name="marginItemsInSectionLarge">24dp</dimen>

<!-- About App -->
<dimen name="card_spacing">10dp</dimen>
<dimen name="card_corner_radius">1dp</dimen>
Expand All @@ -35,9 +39,4 @@
<dimen name="about_icon_padding">8dp</dimen>
<dimen name="card_radius">8dp</dimen>
<dimen name="card_elevation">2dp</dimen>

<dimen name="marginItemsInSectionSmall">16dp</dimen>
<dimen name="marginItemsInSectionMedium">20dp</dimen>
<dimen name="marginItemsInSectionLarge">24dp</dimen>

</resources>

0 comments on commit 6c3892a

Please sign in to comment.