/*
*******************************************************************************
* Copyright (C) 2001-2003, International Business Machines Corporation and    *
* others. All Rights Reserved.                                                *
*******************************************************************************
*/
package com.ibm.text.resources;

import java.util.ListResourceBundle; 

public class LocaleScript extends ListResourceBundle { 

      public Object[][] getContents() { 
             return localeScript;
      }

      private static final Object[][] localeScript = new Object[][] {
           {"af", new String[] {
                                      "LATN",
                                 }
           },
           {"ar", new String[] {
                                      "ARAB",
                                 }
           },
           {"be", new String[] {
                                      "CYRL",
                                 }
           },
           {"bg", new String[] {
                                      "CYRL",
                                 }
           },
           {"ca", new String[] {
                                      "LATN",
                                 }
           },
           {"cs", new String[] {
                                      "LATN",
                                 }
           },
           {"da", new String[] {
                                      "LATN",
                                 }
           },
           {"de", new String[] {
                                      "LATN",
                                 }
           },
           {"el", new String[] {
                                      "GREK",
                                 }
           },
           {"en", new String[] {
                                      "LATN",
                                 }
           },
           {"eo", new String[] {
                                      "LATN",
                                 }
           },
           {"es", new String[] {
                                      "LATN",
                                 }
           },
           {"et", new String[] {
                                      "LATN",
                                 }
           },
           {"eu", new String[] {
                                      "LATN",
                                 }
           },
           {"fa", new String[] {
                                      "ARAB",
                                 }
           },
           {"fi", new String[] {
                                      "LATN",
                                 }
           },
           {"fo", new String[] {
                                      "LATN",
                                 }
           },
           {"fr", new String[] {
                                      "LATN",
                                 }
           },
           {"ga", new String[] {
                                      "LATN",
                                 }
           },
           {"gl", new String[] {
                                      "LATN",
                                 }
           },
           {"gv", new String[] {
                                      "LATN",
                                 }
           },
           {"he", new String[] {
                                      "HEBR",
                                 }
           },
           {"hi", new String[] {
                                      "DEVA",
                                 }
           },
           {"hr", new String[] {
                                      "LATN",
                                 }
           },
           {"hu", new String[] {
                                      "LATN",
                                 }
           },
           {"id", new String[] {
                                      "LATN",
                                 }
           },
           {"is", new String[] {
                                      "LATN",
                                 }
           },
           {"it", new String[] {
                                      "LATN",
                                 }
           },
           {"iw", new String[] {
                                      "HEBR",
                                 }
           },
           {"ja", new String[] {
                                      "KANA",
                                      "HIRA",
                                      "HANI"
                                 }
           },
           {"kl", new String[] {
                                      "LATN",
                                 }
           },
           {"ko", new String[] {
                                      "HANG",
                                      "HANI",
                                 }
           },
           {"kok", new String[] {
                                      "DEVA",
                                 }
           },
           {"kw", new String[] {
                                      "LATN",
                                 }
           },
           {"lt", new String[] {
                                      "LATN",
                                 }
           },
           {"lv", new String[] {
                                      "LATN",
                                 }
           },
           {"mk", new String[] {
                                      "CYRL",
                                 }
           },
           {"mr", new String[] {
                                      "DEVA",
                                 }
           },
           {"mt", new String[] {
                                      "LATN",
                                 }
           },
           {"nb", new String[] {
                                      "LATN",
                                 }
           },
           {"nl", new String[] {
                                      "LATN",
                                 }
           },
           {"nn", new String[] {
                                      "LATN",
                                 }
           },
           {"pl", new String[] {
                                      "LATN",
                                 }
           },
           {"pt", new String[] {
                                      "LATN",
                                 }
           },
           {"ro", new String[] {
                                      "LATN",
                                 }
           },
           {"ru", new String[] {
                                      "CYRL",
                                 }
           },
           {"sh", new String[] {
                                      "LATN",
                                 }
           },
           {"sk", new String[] {
                                      "LATN",
                                 }
           },
           {"sl", new String[] {
                                      "LATN",
                                 }
           },
           {"sq", new String[] {
                                      "LATN",
                                 }
           },
           {"sr", new String[] {
                                      "CYRL",
                                 }
           },
           {"sv", new String[] {
                                      "LATN",
                                 }
           },
           {"sw", new String[] {
                                      "LATN",
                                 }
           },
           {"ta", new String[] {
                                      "TAML",
                                 }
           },
           {"te", new String[] {
                                      "TELU",
                                 }
           },
           {"th", new String[] {
                                      "THAI",
                                 }
           },
           {"tr", new String[] {
                                      "LATN",
                                 }
           },
           {"uk", new String[] {
                                      "CYRL",
                                 }
           },
           {"vi", new String[] {
                                      "LATN",
                                 }
           },
           {"zh", new String[] {
                                      "HANI",
                                 }
           },
           {"zh_TW", new String[] {
                                      "HANI",
                                      "BOPO",
                                 }
           },
      };
}
