package net.bible.android.view.util.locale;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.preference.PreferenceManager;
import org.apache.commons.lang3.StringUtils;
/**
* This class is used to change your application locale.
* @see <a href="http://gunhansancar.com/change-language-programmatically-in-android/">article</a>
*/
public class LocaleHelper {
private static final LocaleChangerFactory localeChangerFactory = new LocaleChangerFactory();
private static final String SELECTED_LANGUAGE = "locale_pref";
public static void translateTitle(Activity activity) {
if (LocaleHelper.isLocaleOverridden(activity)) {
// http://stackoverflow.com/questions/22884068/troubles-with-activity-title-language
try {
int labelRes = activity.getPackageManager().getActivityInfo(activity.getComponentName(), 0).labelRes;
activity.setTitle(labelRes);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
public static Context onAttach(Context context) {
String overrideLang = getOverrideLanguage(context);
if (StringUtils.isNotEmpty(overrideLang)) {
return localeChangerFactory.getLocaleChanger().changeLocale(context, overrideLang);
} else {
return context;
}
}
private static boolean isLocaleOverridden(Context context) {
return StringUtils.isNotEmpty(getOverrideLanguage(context));
}
private static String getOverrideLanguage(Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(SELECTED_LANGUAGE, null);
}
}