Format default locale the same way as those stored in prefs.

Also explicitly disallow locales with empty countries. This
is required to match them against the set of engine supported
locales.

bug:5309930
Change-Id: Ie9714fdc09d3081081a2393d97c31e3a42bca294
This commit is contained in:
Narayan Kamath
2011-10-17 14:37:40 +01:00
parent 840b8a6785
commit 39268ffcb7

View File

@@ -344,7 +344,10 @@ public class TtsEngines {
String v1Locale = lang;
if (!TextUtils.isEmpty(country)) {
v1Locale += LOCALE_DELIMITER + country;
} else {
return v1Locale;
}
if (!TextUtils.isEmpty(variant)) {
v1Locale += LOCALE_DELIMITER + variant;
}
@@ -355,8 +358,28 @@ public class TtsEngines {
private String getDefaultLocale() {
final Locale locale = Locale.getDefault();
return locale.getISO3Language() + LOCALE_DELIMITER + locale.getISO3Country() +
LOCALE_DELIMITER + locale.getVariant();
// Note that the default locale might have an empty variant
// or language, and we take care that the construction is
// the same as {@link #getV1Locale} i.e no trailing delimiters
// or spaces.
String defaultLocale = locale.getISO3Language();
if (TextUtils.isEmpty(defaultLocale)) {
Log.w(TAG, "Default locale is empty.");
return "";
}
if (!TextUtils.isEmpty(locale.getISO3Country())) {
defaultLocale += LOCALE_DELIMITER + locale.getISO3Country();
} else {
// Do not allow locales of the form lang--variant with
// an empty country.
return defaultLocale;
}
if (!TextUtils.isEmpty(locale.getVariant())) {
defaultLocale += LOCALE_DELIMITER + locale.getVariant();
}
return defaultLocale;
}
/**