blob: 515b044b331a96e4195bc7f01a23bc9b5d1c4233 [file] [log] [blame]
package org.wordpress.android.util;
import android.content.Context;
import java.util.Locale;
/**
* Methods for dealing with i18n messages
*/
public class LanguageUtils {
public static Locale getCurrentDeviceLanguage(Context context) {
//better use getConfiguration as it has the latest locale configuration change.
//Otherwise Locale.getDefault().getLanguage() gets
//the config upon application launch.
Locale deviceLocale = context != null ? context.getResources().getConfiguration().locale : Locale.getDefault();
return deviceLocale;
}
public static String getCurrentDeviceLanguageCode(Context context) {
String deviceLanguageCode = getCurrentDeviceLanguage(context).toString();
return deviceLanguageCode;
}
public static String getPatchedCurrentDeviceLanguage(Context context) {
return patchDeviceLanguageCode(getCurrentDeviceLanguageCode(context));
}
/**
* Patches a deviceLanguageCode if any of deprecated values iw, id, or yi
*/
public static String patchDeviceLanguageCode(String deviceLanguageCode){
String patchedCode = deviceLanguageCode;
/*
<p>Note that Java uses several deprecated two-letter codes. The Hebrew ("he") language
* code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish ("yi") as "ji". This
* rewriting happens even if you construct your own {@code Locale} object, not just for
* instances returned by the various lookup methods.
*/
if (deviceLanguageCode != null) {
if (deviceLanguageCode.startsWith("iw"))
patchedCode = deviceLanguageCode.replace("iw", "he");
else if (deviceLanguageCode.startsWith("in"))
patchedCode = deviceLanguageCode.replace("in", "id");
else if (deviceLanguageCode.startsWith("ji"))
patchedCode = deviceLanguageCode.replace("ji", "yi");
}
return patchedCode;
}
}