Use system locale for labels on no language keyboard

Bug: 6010147
Change-Id: I9a6ce1bf82ca13359f715f4d1fc5f2bf15d4ee6e
main
Tadashi G. Takaoka 2012-04-10 19:06:03 +09:00
parent 2be51f4fd0
commit 10f18f5fb7
2 changed files with 20 additions and 23 deletions

View File

@ -32,7 +32,9 @@ import com.android.inputmethod.keyboard.internal.KeyboardCodesSet;
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet; import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.keyboard.internal.KeyboardLabelsSet; import com.android.inputmethod.keyboard.internal.KeyboardLabelsSet;
import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SubtypeLocale;
import com.android.inputmethod.latin.Utils; import com.android.inputmethod.latin.Utils;
import com.android.inputmethod.latin.XmlParseUtils; import com.android.inputmethod.latin.XmlParseUtils;
@ -44,6 +46,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Locale;
/** /**
* Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
@ -782,7 +785,17 @@ public class Keyboard {
final String language = params.mId.mLocale.getLanguage(); final String language = params.mId.mLocale.getLanguage();
params.mCodesSet.setLanguage(language); params.mCodesSet.setLanguage(language);
params.mLabelsSet.setLanguage(language); params.mLabelsSet.setLanguage(language);
params.mLabelsSet.loadStringResources(mContext); final RunInLocale<Void> job = new RunInLocale<Void>() {
@Override
protected Void job(Resources res) {
params.mLabelsSet.loadStringResources(mContext);
return null;
}
};
// Null means the current system locale.
final Locale locale = language.equals(SubtypeLocale.NO_LANGUAGE)
? null : params.mId.mLocale;
job.runInLocale(mResources, locale);
final int resourceId = keyboardAttr.getResourceId( final int resourceId = keyboardAttr.getResourceId(
R.styleable.Keyboard_touchPositionCorrectionData, 0); R.styleable.Keyboard_touchPositionCorrectionData, 0);

View File

@ -29,12 +29,10 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.compat.EditorInfoCompatUtils; import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.keyboard.KeyboardLayoutSet.Params.ElementParams; import com.android.inputmethod.keyboard.KeyboardLayoutSet.Params.ElementParams;
import com.android.inputmethod.keyboard.internal.KeySpecParser;
import com.android.inputmethod.latin.InputTypeUtils; import com.android.inputmethod.latin.InputTypeUtils;
import com.android.inputmethod.latin.LatinIME; import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.LocaleUtils; import com.android.inputmethod.latin.LocaleUtils;
import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.StringUtils; import com.android.inputmethod.latin.StringUtils;
import com.android.inputmethod.latin.SubtypeLocale; import com.android.inputmethod.latin.SubtypeLocale;
@ -183,14 +181,7 @@ public class KeyboardLayoutSet {
builder.setAutoGenerate(sKeysCache); builder.setAutoGenerate(sKeysCache);
} }
final int keyboardXmlId = elementParams.mKeyboardXmlId; final int keyboardXmlId = elementParams.mKeyboardXmlId;
final RunInLocale<Void> job = new RunInLocale<Void>() { builder.load(keyboardXmlId, id);
@Override
protected Void job(Resources res) {
builder.load(keyboardXmlId, id);
return null;
}
};
job.runInLocale(context.getResources(), id.mLocale);
builder.setTouchPositionCorrectionEnabled(mParams.mTouchPositionCorrectionEnabled); builder.setTouchPositionCorrectionEnabled(mParams.mTouchPositionCorrectionEnabled);
builder.setProximityCharsCorrectionEnabled( builder.setProximityCharsCorrectionEnabled(
elementParams.mProximityCharsCorrectionEnabled); elementParams.mProximityCharsCorrectionEnabled);
@ -321,18 +312,11 @@ public class KeyboardLayoutSet {
R.xml.keyboard_layout_set_qwerty); R.xml.keyboard_layout_set_qwerty);
final String keyboardLayoutSetName = mParams.mKeyboardLayoutSetName; final String keyboardLayoutSetName = mParams.mKeyboardLayoutSetName;
final int xmlId = mResources.getIdentifier(keyboardLayoutSetName, "xml", packageName); final int xmlId = mResources.getIdentifier(keyboardLayoutSetName, "xml", packageName);
final RunInLocale<Void> job = new RunInLocale<Void>() { try {
@Override parseKeyboardLayoutSet(mResources, xmlId);
protected Void job(Resources res) { } catch (Exception e) {
try { throw new RuntimeException(e.getMessage() + " in " + keyboardLayoutSetName);
parseKeyboardLayoutSet(res, xmlId); }
} catch (Exception e) {
throw new RuntimeException(e.getMessage() + " in " + keyboardLayoutSetName);
}
return null;
}
};
job.runInLocale(mResources, mParams.mLocale);
return new KeyboardLayoutSet(mContext, mParams); return new KeyboardLayoutSet(mContext, mParams);
} }