From 43ebd8a035af31244a2d54fce5d8000a1fbada4c Mon Sep 17 00:00:00 2001 From: satok <satok@google.com> Date: Wed, 4 Apr 2012 21:39:23 +0900 Subject: [PATCH] Fix the locale of flags in BinaryDictionary Bug: 6129372 Change-Id: I4958c2aabf651d7e26648a29b75fcc6c77813451 --- .../inputmethod/latin/BinaryDictionary.java | 19 ++++++++++++++++--- .../inputmethod/latin/DictionaryFactory.java | 7 ++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java index c43683f2d0..92019c0ed5 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -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); } diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java index 7be374db53..7a59d80f1a 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java @@ -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; -- GitLab