diff --git a/tests/src/com/android/inputmethod/latin/SuggestPerformanceTests.java b/tests/src/com/android/inputmethod/latin/SuggestPerformanceTests.java
index 95ce37e..99bcc61 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestPerformanceTests.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestPerformanceTests.java
@@ -23,6 +23,7 @@
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
+import java.util.Locale;
 import java.util.StringTokenizer;
 
 public class SuggestPerformanceTests extends SuggestTestsBase {
@@ -37,7 +38,7 @@
         final AssetFileDescriptor dict = openTestRawResourceFd(R.raw.test);
         mHelper = new SuggestHelper(
                 getContext(), mTestPackageFile, dict.getStartOffset(), dict.getLength(),
-                US_KEYBOARD_ID);
+                createKeyboardId(Locale.US));
         loadString(R.raw.testtext);
     }
 
diff --git a/tests/src/com/android/inputmethod/latin/SuggestTests.java b/tests/src/com/android/inputmethod/latin/SuggestTests.java
index 372e940..6e9a127 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestTests.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestTests.java
@@ -20,6 +20,8 @@
 
 import android.content.res.AssetFileDescriptor;
 
+import java.util.Locale;
+
 public class SuggestTests extends SuggestTestsBase {
     private SuggestHelper mHelper;
 
@@ -29,7 +31,7 @@
         final AssetFileDescriptor dict = openTestRawResourceFd(R.raw.test);
         mHelper = new SuggestHelper(
                 getContext(), mTestPackageFile, dict.getStartOffset(), dict.getLength(),
-                US_KEYBOARD_ID);
+                createKeyboardId(Locale.US));
         mHelper.setCorrectionMode(Suggest.CORRECTION_FULL_BIGRAM);
     }
 
diff --git a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
index 4500c2a..64f2674 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
@@ -30,11 +30,6 @@
 import java.util.Locale;
 
 public class SuggestTestsBase extends AndroidTestCase {
-    protected static final KeyboardId US_KEYBOARD_ID = new KeyboardId("en_US qwerty keyboard",
-            com.android.inputmethod.latin.R.xml.kbd_qwerty, KeyboardView.COLOR_SCHEME_WHITE,
-            Locale.US, Configuration.ORIENTATION_LANDSCAPE, KeyboardId.MODE_TEXT,
-            new EditorInfo(), false, false, false, false);
-
     protected File mTestPackageFile;
 
     @Override
@@ -43,6 +38,13 @@
         mTestPackageFile = new File(getTestContext().getApplicationInfo().sourceDir);
     }
 
+    protected static KeyboardId createKeyboardId(Locale locale) {
+        return new KeyboardId(locale.toString() + " keyboard",
+                com.android.inputmethod.latin.R.xml.kbd_qwerty, KeyboardView.COLOR_SCHEME_WHITE,
+                locale, Configuration.ORIENTATION_LANDSCAPE, KeyboardId.MODE_TEXT,
+                new EditorInfo(), false, false, false, false);
+    }
+
     protected InputStream openTestRawResource(int resIdInTest) {
         return getTestContext().getResources().openRawResource(resIdInTest);
     }
diff --git a/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java b/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java
index ab5329c..9bd8538 100644
--- a/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java
+++ b/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java
@@ -34,7 +34,7 @@
         final AssetFileDescriptor dict = openTestRawResourceFd(R.raw.test);
         mHelper = new UserBigramSuggestHelper(
                 getContext(), mTestPackageFile, dict.getStartOffset(), dict.getLength(),
-                MAX_DATA, DELETE_DATA, US_KEYBOARD_ID);
+                MAX_DATA, DELETE_DATA, createKeyboardId(Locale.US));
     }
 
     /************************** Tests ************************/
