diff --git a/java/res/values-be/bools.xml b/java/res/values-be-rBY/bools.xml
similarity index 100%
rename from java/res/values-be/bools.xml
rename to java/res/values-be-rBY/bools.xml
diff --git a/java/res/values-be/strings-action-keys.xml b/java/res/values-be-rBY/strings-action-keys.xml
similarity index 100%
rename from java/res/values-be/strings-action-keys.xml
rename to java/res/values-be-rBY/strings-action-keys.xml
diff --git a/java/res/values-be/strings-appname.xml b/java/res/values-be/strings-appname.xml
deleted file mode 100644
index 2f9593bdc..000000000
--- a/java/res/values-be/strings-appname.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- "Клавіятура Android (AOSP)"
- "Iнструмент праверкi правапiсу для Android (AOSP)"
- "Налады клавіятуры Android (AOSP)"
- "Налады інструмента праверкі правапісу для Android (AOSP)"
-
diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml
deleted file mode 100644
index c7aac0c7f..000000000
--- a/java/res/values-be/strings.xml
+++ /dev/null
@@ -1,247 +0,0 @@
-
-
-
-
- "Параметры ўводу"
- "Каманды гiсторыя даследаванняў"
- "Шукаць імёны кантактаў"
- "Модуль праверкі правапісу выкарыстоўвае запісы са спісу кантактаў"
- "Вібрацыя пры націску клавіш"
- "Гук пры націску"
- "Па націску на клавішы ўсплывае акно"
- "Агульныя"
- "Выпраўленне тэксту"
- "Набор жэстамі"
- "Іншыя параметры"
- "Адмысловыя налады"
- "Функцыi для спецыялістаў"
- "Перакл. да інш. спос. ув."
- "Кнопка пераключэння мовы звязана i з iншымi спосабамi ўводу"
- "Кнопка пераключэння мовы"
- "Паказваць, калі ўключана некалькі моў ўводу"
- "Iндыкатар слайд-шоу"
- "Паказаць візуальны сігнал падчас слiзгання клавiш Shift або Symbol"
- "Затрым. скр. падк. клав."
- "Няма затрымкі"
- "Па змаўчанні"
- "%s мс"
-
-
- "Прапан. імёны кантактаў"
- "Выкарыстоўваць імёны са спісу кантактаў для прапаноў і выпраўл."
- "Падвойны iнтэрвал"
- "Падвойнае нацiсканне на прабел ўстаўляе iнтэрвал з наступным прабелам"
- "Аўтаматычна рабіць вялікія літары"
- "Пісаць з загалоўнай літары першае слова ў кожным сказе"
- "Персанальны слоўнік"
- "Дадатковыя слоўнікі"
- "Асноўны слоўнік"
- "Паказаць прапановы на выпраўленне"
- "Паказваць прапанаваныя словы падчас набору тэксту"
- "Заўсёды паказваць"
- "Паказаць у партрэтным рэжыме"
- "Заўседы хаваць"
- "Блакіраваць абразлівыя словы"
- "Не прапануйце патэнцыяльна абразлівых слоў"
- "Аўтавыпраўленне"
- "Прабелы і пунктуацыйныя знакі дазваляюць аўтаматычна выпраўляць памылкова ўведзеныя словы"
- "Адключаны"
- "Сціплы"
-
-
-
-
- "Падказкi для наступнага слова"
- "Выкарыстоўваць папярэдняе слова, каб атрымлiваць падказкi"
- "Уключыць набор жэстамі"
- "Уводзьце слова, перасоўваючы палец па літарах"
- "Паказаць след жэста"
- "Дынамічны плаваючы прагляд"
- "Праглядаць прапанаванае слова падчас жэсту"
- "%s : Захаваныя"
- "Каб праслухаць паролi, падключыце гарнiтуру."
- "Бягучы тэкст %s"
- "Тэкст не ўведзены"
-
-
-
-
- "Клавішны код %d"
- "Зрух"
- "Shift уключаны (націснiце, каб адключыць)"
- "Caps Lock уключаны (націснiце, каб адключыць)"
- "Выдаліць"
- "Сімвалы"
- "Літары"
- "Лічбы"
- "Налады"
- "Укладка"
- "Прабел"
- "Галасавы ўвод"
- "Смайлік"
- "Увод"
- "Пошук"
- "Кропка"
- "Пераключыць мову"
- "Далей"
- "Назад"
- "Shift уключаны"
- "Caps Lock уключаны"
- "Shift адключаны"
- "Рэжым знакаў"
- "Рэжым лiтар"
- "Рэжым тэлефона"
- "Рэжым тэлефонных знакаў"
- "Клавіятура схавана"
- "Паказана клавiятура ў рэжыме \" %s\""
- "дата"
- "дата i час"
- "электронная пошта"
- "абмен паведамленнямі"
- "нумар"
- "тэлефон"
- "тэкст"
- "час"
- "URL"
- "Ключ галасавога ўводу"
- "Налада метадаў уводу"
- "Мовы ўводу"
- "Адправіць водгук"
- "Мовы ўводу"
- "Дакраніцеся зноў, каб захаваць"
- "Слоўнік даступны"
- "Уключыць зваротную сувязь з карыстальнікамі"
- "Дапамажыце палепшыць гэты рэдактар метаду ўводу, аўтаматычна адпраўляючы статыстыку выкарыстання і справаздачы аб збоях Google."
- "Тэма клавіятуры"
- "Англійская (ЗК)"
- "Англійская (ЗША)"
- "iспанская (ЗША)"
- "Англійская (Вялікабрытанія) (%s)"
- "Англійская (ЗША) (%s)"
- "iспанская (ЗША) ( %s )"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "Карыстальніцкія стылі ўводу"
- "Дадаць стыль"
- "Дадаць"
- "Выдаліць"
- "Захаваць"
- "Мова"
- "Раскладка"
- "Карыстальніцкі метад уводу павінен быць уключаны, перш чым пачаць выкарыстоўваць яго. Жадаеце ўключыць яго зараз?"
- "Уключыць"
- "Не цяпер"
- "Такі метад уводу ўжо існуе: %s"
- "Рэжым даследвання выкарыстальнасці"
- "Затрымка доўгага націску клавішы"
- "Працягласць вібрацыі пры націску клавіш"
- "Гучнасць гуку пры націску клавіш"
- "Чытанне знешняга файла слоўніка"
- "У папцы загрузак няма файлаў слоўніка"
- "Вылучыце файл слоўніка для ўсталёўкі"
- "Сапраўды ўсталяваць гэты файл на мове: %s?"
- "Была памылка"
- "Па змаўчанні"
- "Вітаем у прыкладанні %s"
- "з уводам жэстамі"
- "Пачаць"
- "Далей"
- "Наладка прыкладання %s"
- "Уключыць прыкладанне %s"
- "Праверце прыкладанне \"%s\" на сваёй мове і параметры ўводу. Гэта дасць магчымасць дазволіць яму працаваць на вашай прыладзе."
- "Прыкладанне %s ужо ўключана для вашай мовы і параметраў уводу, так што гэты крок зроблены. Пераходзім да наступнага!"
- "Уключыць у наладах"
- "Пераключыцца на прыкладанне %s."
- "Выберыце \"%s\" як актыўны метад уводу тэксту."
- "Пераключэнне метадаў уводу"
- "Усё гатова!"
- "Цяпер вы можаце ўводзіць ўсе свае любімыя прыкладанні з iмем %s."
- "Наладка дадатковых моў"
- "Гатова"
- "Паказаць значок прыкладання"
- "Паказаць значок прыкладання ў панэлi запуску"
- "Пастаўшчык слоўніка"
- "Пастаўшчык слоўніка"
- "Слоўнік"
- "Інфармацыя абнаўлення слоўніка"
- "Дадатковыя слоўнікі"
- "Даступны слоўнік"
- "Налады для слоўнікаў"
- "Карыстальніцкія слоўнікі"
- "Карыстацкі слоўнік"
- "Даступны слоўнік"
- "Спампоўваецца зараз"
- "Усталявана"
- "Усталявана, адключана"
- "Праблема падключэння да слоўніка"
- "Слоўнікаў няма"
- "Абнавіць"
- "Апошняе абнаўленне"
- "Праверка наяўнасці абнаўленняў"
- "Загрузка..."
- "Асноўны слоўнік"
- "Адмяніць"
- "Усталяваць"
- "Адмена"
- "Выдаліць"
- "Для выбранай мовы на мабільнай прыладзе ёсць слоўнік.<br/> Мы рэкамендуем <b>спампаваць</b> слоўнік для мовы \"%1$s\" для паляпшэння зручнасці набору.<br/> <br/> Спампоўка можа заняць хвіліну або дзве ў 3G-сетках. Калі ў вас няма <b>безлімітнага тарыфнага плану перадачы дадзеных</b>, могуць прымяняцца дадатковыя плацяжы<br/>. Калі вы не ведаеце дакладна, які ў вас тарыфны план, мы рэкамендуем знайсці падлучэнне да сеткі Wi-Fi, каб пачаць аўтаматычную спампоўку.<br/> <br/> Парада: можна спампоўваць і выдаляць слоўнікі, перайшоўшы ў раздзел <b>Мова і ўвод</b> у меню <b>Налады</b> вашай мабільнай прылады."
- "Спампаваць зараз (%1$.1fМБ)"
- "Спампаваць праз Wi-Fi"
- "Слоўнік для мовы \"%1$s\""
- "Нацiснiце, каб прагледзець i спампаваць"
- "Загрузка: прапановы для мовы \"%1$s\" хутка з\'явяцца."
- "Версія %1$s"
- "Дадаць"
- "Дадаць у слоўнік"
- "Выраз"
- "Дадатковыя параметры"
- "Асн. параметры"
- "OК"
- "Слова:"
- "Шлях хуткага доступу:"
- "Мова:"
- "Увядзіце слова"
- "Дадатковы цэтлiк"
- "Рэдагаваць слова"
- "Рэдагаваць"
- "Выдаліць"
- "У вашым карыстальніцкім слоўніку няма ніводнага слова. Вы можаце дадаваць словы, дакранаючыся да кнопкі \"+\" у пункце меню \"Дадаць\"."
- "Для ўсіх моў"
- "Іншыя мовы..."
- "Выдаліць"
- " ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 26ceb8967..78e771fda 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -25,7 +25,7 @@
af: Afrikaans/qwerty
ar: Arabic/arabic
(az: Azerbaijani/qwerty) # disabled temporarily. waiting for string resources.
- be: Belarusian/east_slavic
+ be_BY: Belarusian/east_slavic
bg: Bulgarian/bulgarian
bg: Bulgarian/bulgarian_bds
ca: Catalan/spanish
@@ -144,7 +144,7 @@
sLocaleCache = new HashMap();
+
+ /**
+ * Creates a locale from a string specification.
+ */
+ public static Locale constructLocaleFromString(final String localeStr) {
+ if (localeStr == null) {
+ return null;
+ }
+ synchronized (sLocaleCache) {
+ Locale retval = sLocaleCache.get(localeStr);
+ if (retval != null) {
+ return retval;
+ }
+ String[] localeParams = localeStr.split("_", 3);
+ if (localeParams.length == 1) {
+ retval = new Locale(localeParams[0]);
+ } else if (localeParams.length == 2) {
+ retval = new Locale(localeParams[0], localeParams[1]);
+ } else if (localeParams.length == 3) {
+ retval = new Locale(localeParams[0], localeParams[1], localeParams[2]);
+ }
+ if (retval != null) {
+ sLocaleCache.put(localeStr, retval);
+ }
+ return retval;
+ }
+ }
+}
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
index 2643e01ec..a88383025 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
@@ -37,7 +37,7 @@ public class MoreKeysResources {
private static final String MARK_DEFAULT_TEXTS = "@DEFAULT_TEXTS@";
private static final String MARK_TEXTS = "@TEXTS@";
private static final String MARK_LANGUAGES_AND_TEXTS = "@LANGUAGES_AND_TEXTS@";
- private static final String DEFAUT_LANGUAGE_NAME = "DEFAULT";
+ private static final String DEFAULT_LANGUAGE_NAME = "DEFAULT";
private static final String ARRAY_NAME_FOR_LANGUAGE = "LANGUAGE_%s";
private static final String EMPTY_STRING_VAR = "EMPTY";
@@ -72,7 +72,7 @@ public class MoreKeysResources {
final int languagePos = dirName.indexOf('-');
if (languagePos < 0) {
// Default resource.
- return DEFAUT_LANGUAGE_NAME;
+ return DEFAULT_LANGUAGE_NAME;
}
final String language = dirName.substring(languagePos + 1);
final int countryPos = language.indexOf("-r");
@@ -84,10 +84,12 @@ public class MoreKeysResources {
public void writeToJava(final String outDir) {
final ArrayList list = JarUtils.getNameListing(mJar, JAVA_TEMPLATE);
- if (list.isEmpty())
+ if (list.isEmpty()) {
throw new RuntimeException("Can't find java template " + JAVA_TEMPLATE);
- if (list.size() > 1)
+ }
+ if (list.size() > 1) {
throw new RuntimeException("Found multiple java template " + JAVA_TEMPLATE);
+ }
final String template = list.get(0);
final String javaPackage = template.substring(0, template.lastIndexOf('/'));
PrintStream ps = null;
@@ -131,7 +133,7 @@ public class MoreKeysResources {
}
private void dumpNames(final PrintStream out) {
- final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
+ final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
int id = 0;
for (final StringResource res : defaultResMap.getResources()) {
out.format(" /* %2d */ \"%s\",\n", id, res.mName);
@@ -141,17 +143,17 @@ public class MoreKeysResources {
}
private void dumpDefaultTexts(final PrintStream out) {
- final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
+ final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
dumpTextsInternal(out, defaultResMap, defaultResMap);
}
private void dumpTexts(final PrintStream out) {
- final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
+ final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
final ArrayList allLanguages = new ArrayList();
allLanguages.addAll(mResourcesMap.keySet());
Collections.sort(allLanguages);
for (final String language : allLanguages) {
- if (language.equals(DEFAUT_LANGUAGE_NAME)) {
+ if (language.equals(DEFAULT_LANGUAGE_NAME)) {
continue;
}
out.format(" /* Language %s: %s */\n", language, getLanguageDisplayName(language));
@@ -174,17 +176,22 @@ public class MoreKeysResources {
allLanguages.addAll(mResourcesMap.keySet());
Collections.sort(allLanguages);
for (final String language : allLanguages) {
- out.format(" \"%s\", " + ARRAY_NAME_FOR_LANGUAGE + ", /* %s */\n",
- language, language, getLanguageDisplayName(language));
+ final Locale locale = LocaleUtils.constructLocaleFromString(language);
+ // If we use a different key, dump the original as comment for now.
+ final String languageKeyToDump = locale.getCountry().isEmpty()
+ ? String.format("\"%s\"", language)
+ : String.format("\"%s\" /* \"%s\" */", locale.getLanguage(), language);
+ out.format(" %s, " + ARRAY_NAME_FOR_LANGUAGE + ", /* %s */\n",
+ languageKeyToDump, language, getLanguageDisplayName(language));
}
}
private static String getLanguageDisplayName(final String language) {
- if (language.equals(NO_LANGUAGE_CODE)) {
+ final Locale locale = LocaleUtils.constructLocaleFromString(language);
+ if (locale.getLanguage().equals(NO_LANGUAGE_CODE)) {
return NO_LANGUAGE_DISPLAY_NAME;
- } else {
- return new Locale(language).getDisplayLanguage();
}
+ return locale.getDisplayName(Locale.ENGLISH);
}
private static void dumpTextsInternal(final PrintStream out, final StringResourceMap resMap,