Fix the locale of flags in BinaryDictionary
Bug: 6129372 Change-Id: I4958c2aabf651d7e26648a29b75fcc6c77813451
This commit is contained in:
parent
b082c95a2b
commit
43ebd8a035
2 changed files with 20 additions and 6 deletions
|
@ -17,10 +17,14 @@
|
|||
package com.android.inputmethod.latin;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.AssetFileDescriptor;
|
||||
import android.content.res.Resources;
|
||||
|
||||
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||
import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Implements a static, compacted, binary dictionary of standard words.
|
||||
|
@ -94,14 +98,23 @@ public class BinaryDictionary extends Dictionary {
|
|||
* @param flagArray the flags to limit the dictionary to, or null for default.
|
||||
*/
|
||||
public BinaryDictionary(final Context context,
|
||||
final String filename, final long offset, final long length, Flag[] flagArray) {
|
||||
final String filename, final long offset, final long length, final Flag[] flagArray,
|
||||
Locale locale) {
|
||||
// Note: at the moment a binary dictionary is always of the "main" type.
|
||||
// Initializing this here will help transitioning out of the scheme where
|
||||
// the Suggest class knows everything about every single dictionary.
|
||||
mDicTypeId = Suggest.DIC_MAIN;
|
||||
// TODO: Stop relying on the state of SubtypeSwitcher, get it as a parameter
|
||||
mFlags = Flag.initFlags(null == flagArray ? ALL_CONFIG_FLAGS : flagArray, context,
|
||||
SubtypeSwitcher.getInstance());
|
||||
final RunInLocale<Void> job = new RunInLocale<Void>() {
|
||||
@Override
|
||||
protected Void job(Resources res) {
|
||||
// TODO: remove this when all flags are moved to the native code
|
||||
mFlags = Flag.initFlags(null == flagArray ? ALL_CONFIG_FLAGS : flagArray, context,
|
||||
SubtypeSwitcher.getInstance());
|
||||
return null;
|
||||
}
|
||||
};
|
||||
job.runInLocale(context.getResources(), locale);
|
||||
loadDictionary(filename, offset, length);
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,8 @@ public class DictionaryFactory {
|
|||
if (null != assetFileList) {
|
||||
for (final AssetFileAddress f : assetFileList) {
|
||||
final BinaryDictionary binaryDictionary =
|
||||
new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, flagArray);
|
||||
new BinaryDictionary(context, f.mFilename, f.mOffset, f.mLength, flagArray,
|
||||
locale);
|
||||
if (binaryDictionary.isValidDictionary()) {
|
||||
dictList.add(binaryDictionary);
|
||||
}
|
||||
|
@ -119,7 +120,7 @@ public class DictionaryFactory {
|
|||
return null;
|
||||
}
|
||||
return new BinaryDictionary(context,
|
||||
sourceDir, afd.getStartOffset(), afd.getLength(), null);
|
||||
sourceDir, afd.getStartOffset(), afd.getLength(), null, locale);
|
||||
} catch (android.content.res.Resources.NotFoundException e) {
|
||||
Log.e(TAG, "Could not find the resource. resId=" + resId);
|
||||
return null;
|
||||
|
@ -147,7 +148,7 @@ public class DictionaryFactory {
|
|||
long startOffset, long length, Flag[] flagArray) {
|
||||
if (dictionary.isFile()) {
|
||||
return new BinaryDictionary(context, dictionary.getAbsolutePath(), startOffset, length,
|
||||
flagArray);
|
||||
flagArray, null);
|
||||
} else {
|
||||
Log.e(TAG, "Could not find the file. path=" + dictionary.getAbsolutePath());
|
||||
return null;
|
||||
|
|
Loading…
Reference in a new issue