package com.henninghall.date_picker;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.Configuration;
|
|
import android.content.res.Resources;
|
|
import android.os.Build;
|
|
|
|
import java.text.DateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Locale;
|
|
|
|
public class LocaleUtils {
|
|
|
|
public static String getDay(String locale) {
|
|
return getFormat(locale, Formats.Format.MMMEd);
|
|
}
|
|
|
|
public static String getYear(String locale) {
|
|
return getFormat(locale, Formats.Format.y);
|
|
}
|
|
|
|
public static String getDate(String locale) {
|
|
return getFormat(locale, Formats.Format.d);
|
|
}
|
|
|
|
private static String getFormat(String languageTag, Formats.Format format) {
|
|
try {
|
|
return Formats.get(languageTag, format);
|
|
} catch (Formats.FormatNotFoundException e) {
|
|
try {
|
|
String firstPartOfLanguageTag = languageTag.substring(0, languageTag.indexOf("_"));
|
|
return Formats.get(firstPartOfLanguageTag, format);
|
|
} catch (Formats.FormatNotFoundException ex) {
|
|
return Formats.defaultFormat.get(format);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static String getDatePattern(Locale locale) {
|
|
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);
|
|
return ((SimpleDateFormat) df).toLocalizedPattern()
|
|
.replaceAll(",", "")
|
|
.replaceAll("([a-zA-Z]+)", " $1")
|
|
.trim();
|
|
}
|
|
|
|
static String getDateTimePattern(Locale locale) {
|
|
DateFormat format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale);
|
|
return ((SimpleDateFormat) format).toLocalizedPattern().replace(",", "");
|
|
}
|
|
|
|
public static Locale getLocale(String languageTag) {
|
|
Locale locale;
|
|
try {
|
|
locale = org.apache.commons.lang3.LocaleUtils.toLocale(languageTag);
|
|
} catch (Exception e) {
|
|
// Some locales can only be interpreted from country string (for instance zh_Hans_CN )
|
|
String firstPartOfLanguageTag = languageTag.substring(0, languageTag.indexOf("_"));
|
|
locale = org.apache.commons.lang3.LocaleUtils.toLocale(firstPartOfLanguageTag);
|
|
}
|
|
return locale;
|
|
}
|
|
|
|
public static boolean localeUsesAmPm(Locale locale){
|
|
DateFormat df = DateFormat.getTimeInstance(DateFormat.FULL, locale);
|
|
return df instanceof SimpleDateFormat && ((SimpleDateFormat) df).toPattern().contains("a");
|
|
}
|
|
|
|
public static String getLocaleStringResource(Locale requestedLocale, int resourceId, Context context) {
|
|
String result;
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { // use latest api
|
|
Configuration config = new Configuration(context.getResources().getConfiguration());
|
|
config.setLocale(requestedLocale);
|
|
result = context.createConfigurationContext(config).getText(resourceId).toString();
|
|
}
|
|
else { // support older android versions
|
|
Resources resources = context.getResources();
|
|
Configuration conf = resources.getConfiguration();
|
|
Locale savedLocale = conf.locale;
|
|
conf.locale = requestedLocale;
|
|
resources.updateConfiguration(conf, null);
|
|
|
|
// retrieve resources from desired locale
|
|
result = resources.getString(resourceId);
|
|
|
|
// restore original locale
|
|
conf.locale = savedLocale;
|
|
resources.updateConfiguration(conf, null);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
}
|