Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: Language support #1522

Merged
merged 5 commits into from
Jun 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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>
Loading