androidlocalizationfont-style

font styles are not Changing neither numbers in android


I'm getting stuck in this for two days i hope i find a solution.. I'm trying to localize my app (Arabic, and English) the localization mechanism is working fine, the words, layout directions are working well, However there are two things are not being localized the first one is numbers. numbers are not being localized to arabic. the second one is Font style font style are not being localized neither. BUT it change the font style and number to arabic, only if i reinstalled the app using my USB and the configuration was in Arabic before the installing. here is my code

public static void changeLocale(Activity context, Bundle... bundles) {

        MedfastSharedPreferencesHelper sharakehSharedPreference = new MedfastSharedPreferencesHelper(context);
        String lang = sharakehSharedPreference.getKey("locale");
        Locale locale = null;
        if (null == lang) {
            locale = new Locale(Resources.getSystem().getConfiguration().locale.getLanguage());
            lang = locale.getDisplayLanguage();
            if (locale.getDisplayLanguage().equalsIgnoreCase("English")) {
                locale = new Locale("ar");
                lang = "ar";
            } else {
                locale = new Locale("en");
                lang = "en";
            }

        } else if (lang.equalsIgnoreCase("ar")) {
            lang = "en";
            locale = new Locale("en");

        } else if (lang.equalsIgnoreCase("en")) {
            lang = "ar";
            locale = new Locale("ar");

        }
        sharakehSharedPreference.setKey("locale", lang);
        Resources resources = context.getResources();
        DisplayMetrics displayMetrics = resources.getDisplayMetrics();

        Locale.setDefault(locale);
        Configuration configuration = resources.getConfiguration();
        configuration.setLocale(locale);
        configuration.locale = locale;
        resources.updateConfiguration(configuration, displayMetrics);
        Intent intent = new Intent(context, ((Activity) context).getClass());
        if (null != bundles && bundles.length > 0 && null != bundles[0])
            intent.putExtras(bundles[0]);
        context.startActivity(intent);
        context.finish();
    }

Solution

  • After researching, android does not support font as resource, so i had do create 6 classes in order to customize my fonts and check weather if the locale is Arabic or english, and depending on the locale i load the font, unlike drawable in android