diff --git a/src/com/android/inputmethod/latin/LanguageSwitcher.java b/src/com/android/inputmethod/latin/LanguageSwitcher.java
index 97173533d3112aa12ca5732df143cf06cf04e73d..3fa882e446c409c237c21ab7fc2187ce9a2a6ebc 100644
--- a/src/com/android/inputmethod/latin/LanguageSwitcher.java
+++ b/src/com/android/inputmethod/latin/LanguageSwitcher.java
@@ -108,6 +108,13 @@ public class LanguageSwitcher {
 
         return mSelectedLanguageArray[mCurrentIndex];
     }
+    
+    /**
+     * Returns the list of enabled language codes.
+     */
+    public String[] getEnabledLanguages() {
+        return mSelectedLanguageArray;
+    }
 
     /**
      * Returns the currently selected input locale, or the display locale if no specific
diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/src/com/android/inputmethod/latin/LatinIME.java
index 9924561832ff3e55065ac187c65595121d1c5a35..ef761a06eae2eb16043c996d46e09753c5bd4d2b 100644
--- a/src/com/android/inputmethod/latin/LatinIME.java
+++ b/src/com/android/inputmethod/latin/LatinIME.java
@@ -1202,7 +1202,10 @@ public class LatinIME extends InputMethodService
         setSuggestions(null, false, false, true);
 
         FieldContext context = new FieldContext(
-            getCurrentInputConnection(), getCurrentInputEditorInfo());
+            getCurrentInputConnection(),
+            getCurrentInputEditorInfo(),
+            mLanguageSwitcher.getInputLanguage(),
+            mLanguageSwitcher.getEnabledLanguages());
         mVoiceInput.startListening(context, swipe);
         switchToRecognitionStatusView();
     }
@@ -1576,7 +1579,11 @@ public class LatinIME extends InputMethodService
     }
 
     private FieldContext makeFieldContext() {
-        return new FieldContext(getCurrentInputConnection(), getCurrentInputEditorInfo());
+        return new FieldContext(
+                getCurrentInputConnection(),
+                getCurrentInputEditorInfo(),
+                mLanguageSwitcher.getInputLanguage(),
+                mLanguageSwitcher.getEnabledLanguages());
     }
 
     private boolean fieldCanDoVoice(FieldContext fieldContext) {
diff --git a/src/com/android/inputmethod/voice/FieldContext.java b/src/com/android/inputmethod/voice/FieldContext.java
index 0578af7323f2f950db7700fc5d3fe55c6b558ff4..5fbacfb6c3d16e0fd84d502e6982882b75cce97c 100644
--- a/src/com/android/inputmethod/voice/FieldContext.java
+++ b/src/com/android/inputmethod/voice/FieldContext.java
@@ -28,6 +28,8 @@ import android.view.inputmethod.InputConnection;
  * to the speech recognizer as context information.
  */
 public class FieldContext {
+    private static final boolean DBG = false;
+    
     static final String LABEL = "label";
     static final String HINT = "hint";
     static final String PACKAGE_NAME = "packageName";
@@ -36,14 +38,18 @@ public class FieldContext {
     static final String SINGLE_LINE = "singleLine";
     static final String INPUT_TYPE = "inputType";
     static final String IME_OPTIONS = "imeOptions";
+    static final String SELECTED_LANGUAGE = "selectedLanguage";
+    static final String ENABLED_LANGUAGES = "enabledLanguages";
 
     Bundle mFieldInfo;
 
-    public FieldContext(InputConnection conn, EditorInfo info) {
-        this.mFieldInfo = new Bundle();
+    public FieldContext(InputConnection conn, EditorInfo info,
+            String selectedLanguage, String[] enabledLanguages) {
+        mFieldInfo = new Bundle();
         addEditorInfoToBundle(info, mFieldInfo);
         addInputConnectionToBundle(conn, mFieldInfo);
-        Log.i("FieldContext", "Bundle = " + mFieldInfo.toString());
+        addLanguageInfoToBundle(selectedLanguage, enabledLanguages, mFieldInfo);
+        if (DBG) Log.i("FieldContext", "Bundle = " + mFieldInfo.toString());
     }
 
     private static String safeToString(Object o) {
@@ -58,7 +64,6 @@ public class FieldContext {
             return;
         }
 
-
         bundle.putString(LABEL, safeToString(info.label));
         bundle.putString(HINT, safeToString(info.hintText));
         bundle.putString(PACKAGE_NAME, safeToString(info.packageName));
@@ -80,6 +85,12 @@ public class FieldContext {
         }
         bundle.putBoolean(SINGLE_LINE, (et.flags & et.FLAG_SINGLE_LINE) > 0);
     }
+    
+    private static void addLanguageInfoToBundle(
+            String selectedLanguage, String[] enabledLanguages, Bundle bundle) {
+        bundle.putString(SELECTED_LANGUAGE, selectedLanguage);
+        bundle.putStringArray(ENABLED_LANGUAGES, enabledLanguages);
+    }
 
     public Bundle getBundle() {
         return mFieldInfo;