Index: languagetool-2.0/build.xml
===================================================================
--- languagetool-2.0.orig/build.xml
+++ languagetool-2.0/build.xml
@@ -518,8 +518,6 @@
 
         <copy file="${lang.resource.dir}/ast/ast.ngp" todir="${lang.dist.dir}/ast" />
 
-        <copy file="${lang.resource.dir}/be/be.ngp" todir="${lang.dist.dir}/be" />
-
         <copy file="${lang.resource.dir}/en/tagset.txt" todir="${lang.dist.dir}/en" />
         <copy file="${lang.resource.dir}/en/english.dict" todir="${lang.dist.dir}/en" />
         <copy file="${lang.resource.dir}/en/english.info" todir="${lang.dist.dir}/en" />
@@ -535,11 +533,6 @@
         <copy file="${lang.resource.dir}/tl/README.txt" todir="${lang.dist.dir}/tl" />
         <copy file="${lang.resource.dir}/tl/tl.ngp" todir="${lang.dist.dir}/tl" />
 
-        <copy file="${lang.resource.dir}/eo/etikedoj.txt" todir="${lang.dist.dir}/eo" />
-        <copy file="${lang.resource.dir}/eo/manual-tagger.txt" todir="${lang.dist.dir}/eo" />
-        <copy file="${lang.resource.dir}/eo/disambiguation.xml" todir="${lang.dist.dir}/eo" />
-        <copy file="${lang.resource.dir}/eo/eo.ngp" todir="${lang.dist.dir}/eo" />
-
         <copy file="${lang.resource.dir}/it/italian.dict" todir="${lang.dist.dir}/it" />
         <copy file="${lang.resource.dir}/it/italian.info" todir="${lang.dist.dir}/it" />
         <copy file="${lang.resource.dir}/it/readme-morph-it.txt" todir="${lang.dist.dir}/it" />
@@ -594,8 +587,6 @@
         <copy file="${lang.resource.dir}/pl/multiwords.txt" todir="${lang.dist.dir}/pl" />
         <copy file="${lang.resource.dir}/pl/disambiguation.xml" todir="${lang.dist.dir}/pl" />
 
-        <copy file="${lang.resource.dir}/pt/compounds.txt" todir="${lang.dist.dir}/pt" />
-
         <copy file="${lang.resource.dir}/nl/dutch.dict" todir="${lang.dist.dir}/nl" />
         <copy file="${lang.resource.dir}/nl/dutch.info" todir="${lang.dist.dir}/nl" />
         <copy file="${lang.resource.dir}/nl/dutch_synth.dict" todir="${lang.dist.dir}/nl" />
@@ -608,10 +599,6 @@
         <copy file="${lang.resource.dir}/sv/swedish.dict" todir="${lang.dist.dir}/sv" />
         <copy file="${lang.resource.dir}/sv/compounds.txt" todir="${lang.dist.dir}/sv" />
 
-        <copy file="${lang.resource.dir}/uk/ukrainian.dict" todir="${lang.dist.dir}/uk" />
-        <copy file="${lang.resource.dir}/uk/ukrainian.info" todir="${lang.dist.dir}/uk" />
-        <copy file="${lang.resource.dir}/uk/uk.ngp" todir="${lang.dist.dir}/uk" />
-
         <copy file="${lang.resource.dir}/ru/russian.dict" todir="${lang.dist.dir}/ru" />
         <copy file="${lang.resource.dir}/ru/russian.info" todir="${lang.dist.dir}/ru" />
         <copy file="${lang.resource.dir}/ru/russian_tags.txt" todir="${lang.dist.dir}/ru" />
@@ -632,8 +619,6 @@
         <copy file="${lang.resource.dir}/ro/ro.ngp" todir="${lang.dist.dir}/ro" />
         <copy file="${lang.resource.dir}/ro/added.txt" todir="${lang.dist.dir}/ro" />
 
-        <copy file="${lang.resource.dir}/sl/sl.ngp" todir="${lang.dist.dir}/sl" />
-
         <copy file="${lang.resource.dir}/sk/slovak.dict" todir="${lang.dist.dir}/sk" />
         <copy file="${lang.resource.dir}/sk/slovak.info" todir="${lang.dist.dir}/sk" />
         <copy file="${lang.resource.dir}/sk/compounds.txt" todir="${lang.dist.dir}/sk" />
@@ -643,9 +628,6 @@
         <copy file="${lang.resource.dir}/sk/slovak_tags.txt" todir="${lang.dist.dir}/sk" />
         <copy file="${lang.resource.dir}/sk/sk.ngp" todir="${lang.dist.dir}/sk" />
 
-        <copy file="${lang.resource.dir}/ml/malayalam.dict" todir="${lang.dist.dir}/ml" />
-        <copy file="${lang.resource.dir}/ml/malayalam.info" todir="${lang.dist.dir}/ml" />
-
         <copy file="${lang.resource.dir}/km/khmer.dict" todir="${lang.dist.dir}/km" />
         <copy file="${lang.resource.dir}/km/khmer.info" todir="${lang.dist.dir}/km" />
         <copy file="${lang.resource.dir}/km/khmertags.txt" todir="${lang.dist.dir}/km" />
@@ -677,14 +659,6 @@
         <copy file="${lang.resource.dir}/ast/asturian.dict" todir="${lang.dist.dir}/ast" />
         <copy file="${lang.resource.dir}/ast/asturian.info" todir="${lang.dist.dir}/ast" />
 
-        <copy file="${lang.resource.dir}/el/el.dict" todir="${lang.dist.dir}/el" />
-        <copy file="${lang.resource.dir}/el/el.info" todir="${lang.dist.dir}/el" />
-        <copy file="${lang.resource.dir}/el/el_tags.txt" todir="${lang.dist.dir}/el" />
-        <copy file="${lang.resource.dir}/el/el_synth.dict" todir="${lang.dist.dir}/el" />
-        <copy file="${lang.resource.dir}/el/el_synth.info" todir="${lang.dist.dir}/el" />
-        <copy file="${lang.resource.dir}/el/disambiguation.xml" todir="${lang.dist.dir}/el" />
-
-        <copy file="${lang.resource.dir}/xx/dummy.dict" tofile="${lang.dist.dir}/cs/czech.dict" />
         <copy todir="${dist.dir}/org/languagetool/rules">
             <fileset dir="${rules.dir}" />
         </copy>
@@ -694,9 +668,6 @@
             <fileset dir="${lang.resource.dir}" includes="**/hunspell/*.*"/>
         </copy>
         <copy file="${ext.jna.lib}" todir="${dist.dir}" />
-        <copy todir="${dist.dir}">
-            <fileset dir="${ext.dir}/native-lib" />
-        </copy>
 
     </target>
 
Index: languagetool-2.0/src/main/java/org/languagetool/openoffice/Main.java
===================================================================
--- languagetool-2.0.orig/src/main/java/org/languagetool/openoffice/Main.java
+++ languagetool-2.0/src/main/java/org/languagetool/openoffice/Main.java
@@ -523,15 +523,25 @@ public class Main extends WeakBase imple
   public final Locale[] getLocales() {
     try {
       int dims = 0;
-      for (final Language element : Language.LANGUAGES) {
-        dims += element.getCountryVariants().length;
+      boolean installed[] = new boolean[Language.LANGUAGES.length];
+      for (int i = 0; i < Language.LANGUAGES.length ; i++) {
+        final Language element = Language.LANGUAGES[i];
+        if (element.isDictionaryInstalled()) {
+          dims += element.getCountryVariants().length;
+          installed[i] = true;
+        } else {
+          installed[i] = false;
+        }
       }
       final Locale[] aLocales = new Locale[dims];
       int cnt = 0;
-      for (final Language element : Language.LANGUAGES) {
-        for (final String variant : element.getCountryVariants()) {
-          aLocales[cnt] = new Locale(element.getShortName(), variant, "");
-          cnt++;
+      for (int i = 0; i < Language.LANGUAGES.length; i++) {
+        if (installed[i]) {
+          final Language element = Language.LANGUAGES[i];
+          for (final String variant : element.getCountryVariants()) {
+            aLocales[cnt] = new Locale(element.getShortName(), variant, "");
+            cnt++;
+          }
         }
       }
       return aLocales;
Index: languagetool-2.0/src/main/java/org/languagetool/language/Japanese.java
===================================================================
--- languagetool-2.0.orig/src/main/java/org/languagetool/language/Japanese.java
+++ languagetool-2.0/src/main/java/org/languagetool/language/Japanese.java
@@ -64,6 +64,11 @@ public class Japanese extends Language {
 		return new Contributor[] { new Contributor("Takahiro Shinkai")};
 	}
 				
+	@Override
+	public boolean isDictionaryInstalled() {
+		// Japanase does not have extra dictionary => always installed
+		return true;
+	}
 		
  	
 	
Index: languagetool-2.0/src/main/java/org/languagetool/language/Chinese.java
===================================================================
--- languagetool-2.0.orig/src/main/java/org/languagetool/language/Chinese.java
+++ languagetool-2.0/src/main/java/org/languagetool/language/Chinese.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Locale;
 
 import org.languagetool.Language;
+import org.languagetool.JLanguageTool;
 import org.languagetool.rules.DoublePunctuationRule;
 import org.languagetool.rules.Rule;
 import org.languagetool.rules.WhitespaceRule;
@@ -71,6 +72,17 @@ public class Chinese extends Language {
 	}
 
 	@Override
+	public boolean isDictionaryInstalled() {
+		// System.err.print("Chinese -> ");
+		if (JLanguageTool.getDataBroker().resourceExists("/zh/coreDict.dct")) {
+			// System.err.println("yes");
+			return true;
+		}
+		// System.err.println("no");
+		return false;
+	}
+
+	@Override
 	public List<Class<? extends Rule>> getRelevantRules() {
 		return Arrays.asList(DoublePunctuationRule.class, WhitespaceRule.class);
 	}
Index: languagetool-2.0/src/main/java/org/languagetool/Language.java
===================================================================
--- languagetool-2.0.orig/src/main/java/org/languagetool/Language.java
+++ languagetool-2.0/src/main/java/org/languagetool/Language.java
@@ -141,11 +141,11 @@ public abstract class Language {
    * All languages supported by LanguageTool.
    */
   public static Language[] LANGUAGES = {
-    ENGLISH, GERMAN, POLISH, FRENCH, SPANISH, ITALIAN, KHMER, DUTCH, LITHUANIAN, UKRAINIAN, RUSSIAN,
-    SLOVAK, SLOVENIAN, SWEDISH, ROMANIAN, ICELANDIC, GALICIAN, CATALAN, DANISH,
-    MALAYALAM, BELARUSIAN, ESPERANTO, CHINESE, ASTURIAN, TAGALOG, BRETON, GREEK,
+    ENGLISH, GERMAN, POLISH, FRENCH, SPANISH, ITALIAN, KHMER, DUTCH, RUSSIAN,
+    SLOVAK, SWEDISH, ROMANIAN, GALICIAN, CATALAN, DANISH,
+    CHINESE, ASTURIAN, TAGALOG, BRETON,
     AMERICAN_ENGLISH, BRITISH_ENGLISH, CANADIAN_ENGLISH, SOUTH_AFRICAN_ENGLISH, NEW_ZEALAND_ENGLISH, AUSTRALIAN_ENGLISH,
-    GERMANY_GERMAN, AUSTRIAN_GERMAN, SWISS_GERMAN, PORTUGUESE, PORTUGUESE_PORTUGAL, PORTUGUESE_BRAZIL, JAPANESE,
+    GERMANY_GERMAN, AUSTRIAN_GERMAN, SWISS_GERMAN, JAPANESE,
     DEMO
   };
 
@@ -213,6 +213,22 @@ public abstract class Language {
   // -------------------------------------------------------------------------
 
   /**
+   * Check if the dictionary for the given language is installed
+   */
+  public boolean isDictionaryInstalled() {
+    // System.err.print(getName() + " -> ");
+    // guess the dictionary name from the Language name
+    // lower case and omit the variant part of the name if any
+    if (JLanguageTool.getDataBroker().resourceExists("/" + getShortName() + 
+                                                     "/" + getName().toLowerCase().replaceFirst(" .*", "") + ".dict")) {
+        // System.err.println("yes");
+        return true;
+    }
+    // System.err.println("no");
+    return false;
+  }
+
+  /**
    * Get the location of the rule file(s).
    */
   public List<String> getRuleFileName() {
