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 2, 2021
1 parent 265004f commit 4bc1eb9
Show file tree
Hide file tree
Showing 16 changed files with 249 additions and 11 deletions.
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,9 @@
package com.mifos.mifosxdroid

import com.mifos.mifosxdroid.core.MifosBaseActivity
import android.content.Intent
import android.os.Bundle
import com.mifos.mifosxdroid.SettingsFragment
import com.mifos.mifosxdroid.core.MifosBaseActivity
import com.mifos.mifosxdroid.online.DashboardActivity

/**
* Created by mayankjindal on 22/07/17.
Expand All @@ -16,4 +17,10 @@ class SettingsActivity : MifosBaseActivity() {
.replace(R.id.container, SettingsFragment())
.commit()
}

override fun onBackPressed() {
super.onBackPressed()
val i = Intent(this, DashboardActivity::class.java)
startActivity(i)
}
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,31 @@
package com.mifos.mifosxdroid

import android.content.Intent
import android.content.SharedPreferences
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
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

/**
* Created by mayankjindal on 22/07/17.
*/
class SettingsFragment : PreferenceFragment() {
class SettingsFragment : PreferenceFragment(), OnSharedPreferenceChangeListener {
var mEnableSyncSurvey: SwitchPreference? = null
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 @@ -31,12 +38,49 @@ class SettingsFragment : PreferenceFragment() {
}
}

override fun onResume() {
super.onResume()
preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this)
}

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)
if (preference is ListPreference) {
LanguageHelper.setLocale(this.activity, preference.value)
Toast.makeText(activity, R.string.lang_changed, Toast.LENGTH_SHORT).show()
//this.languageCallback.updateNavDrawer();
startActivity(Intent(activity, activity.javaClass))
//refresh settings fragment
preferenceScreen = null
addPreferencesFromResource(R.xml.preferences)
}
}

interface LanguageCallback {
fun updateNavDrawer()
}

companion object {
fun newInstance(): SettingsFragment {
val fragment = SettingsFragment()
val args = Bundle()
fragment.arguments = args
return fragment
}

fun newInstance(languageCallback: LanguageCallback?): SettingsFragment {
val fragment = SettingsFragment()
fragment.setLanguageCallback(languageCallback)
return fragment
}
}
}
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;
}
}
7 changes: 7 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,10 @@
<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>
</resources>
7 changes: 7 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,10 @@
<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>
</resources>
7 changes: 7 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,11 @@
<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>

</resources>
25 changes: 25 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,26 @@
<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>

</resources>
6 changes: 6 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,10 @@
<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>
</resources>
5 changes: 5 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,10 @@
<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>

</resources>
6 changes: 6 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,11 @@
<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>


</resources>
Loading

0 comments on commit 4bc1eb9

Please sign in to comment.