diff --git a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
index b1ddb21..b5a1101 100644
--- a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
@@ -23,6 +23,8 @@
 
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
 import android.preference.PreferenceActivity;
@@ -35,7 +37,7 @@
     private String mSelectedLanguages;
     private ArrayList<Loc> mAvailableLanguages = new ArrayList<Loc>();
     private static final String[] BLACKLIST_LANGUAGES = {
-        "ko", "ja", "zh"
+        "ko", "ja", "zh", "el"
     };
 
     private static class Loc implements Comparable {
@@ -75,6 +77,9 @@
             pref.setTitle(LanguageSwitcher.toTitleCase(locale.getDisplayName(locale)));
             boolean checked = isLocaleIn(locale, languageList);
             pref.setChecked(checked);
+            if (hasDictionary(locale)) {
+                pref.setSummary(R.string.has_dictionary);
+            }
             parent.addPreference(pref);
         }
     }
@@ -92,6 +97,25 @@
         return false;
     }
 
+    private boolean hasDictionary(Locale locale) {
+        Resources res = getResources();
+        Configuration conf = res.getConfiguration();
+        Locale saveLocale = conf.locale;
+        boolean haveDictionary = false;
+        conf.locale = locale;
+        res.updateConfiguration(conf, res.getDisplayMetrics());
+        BinaryDictionary bd = new BinaryDictionary(this, R.raw.main);
+        // Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
+        // 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
+        if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
+            haveDictionary = true;
+        }
+        bd.close();
+        conf.locale = saveLocale;
+        res.updateConfiguration(conf, res.getDisplayMetrics());
+        return haveDictionary;
+    }
+
     private String get5Code(Locale locale) {
         String country = locale.getCountry();
         return locale.getLanguage()
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 2686a93..7ce1e4e 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -19,6 +19,7 @@
 import java.util.List;
 
 import android.content.Context;
+import android.content.res.Configuration;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.inputmethodservice.Keyboard;
@@ -178,6 +179,10 @@
             Keyboard keyboard;
             mExtension.setKeyboard(keyboard = new LatinKeyboard(getContext(),
                     ((LatinKeyboard) getKeyboard()).getExtension()));
+            if (getContext().getResources().getConfiguration().orientation
+                    == Configuration.ORIENTATION_LANDSCAPE) {
+                mExtension.setPreviewEnabled(false);
+            }
             mExtensionPopup.setContentView(mExtension);
             mExtensionPopup.setWidth(getWidth());
             mExtensionPopup.setHeight(keyboard.getHeight());
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 712b9cf..b44717d 100755
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -39,7 +39,7 @@
     public static final int CORRECTION_BASIC = 1;
     public static final int CORRECTION_FULL = 2;
 
-    private static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
+    static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
 
     private BinaryDictionary mMainDict;
 
