[Unicode]   Common Locale Data Repository : Bug Tracking Home | Site Map | Search
 

Changeset 10684


Ignore:
Timestamp:
07/28/14 20:09:58 (4 years ago)
Author:
srloomis
Message:

cldrbug 7698: option to generate en.xml from ISO639Data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/java/org/unicode/cldr/tool/GenerateLanguageData.java

    r9513 r10684  
    11package org.unicode.cldr.tool; 
    22 
     3import java.io.IOException; 
     4import java.io.PrintWriter; 
    35import java.util.Set; 
    46import java.util.TreeMap; 
    57import java.util.TreeSet; 
    68 
     9import org.unicode.cldr.icu.LDMLConstants; 
     10import org.unicode.cldr.util.CLDRFile; 
     11import org.unicode.cldr.util.CLDRFile.DraftStatus; 
     12import org.unicode.cldr.util.CLDRConfig; 
    713import org.unicode.cldr.util.CLDRPaths; 
     14import org.unicode.cldr.util.CLDRTool; 
    815import org.unicode.cldr.util.CldrUtility; 
    916import org.unicode.cldr.util.Iso639Data; 
     
    1118import org.unicode.cldr.util.Iso639Data.Source; 
    1219import org.unicode.cldr.util.Iso639Data.Type; 
     20import org.unicode.cldr.util.SimpleXMLSource; 
    1321import org.unicode.cldr.util.StandardCodes; 
    1422import org.unicode.cldr.util.SupplementalDataInfo; 
     23import org.unicode.cldr.util.XPathParts; 
     24import org.unicode.cldr.util.XPathParts.Comments.CommentType; 
    1525 
     26import com.ibm.icu.dev.util.BagFormatter; 
    1627import com.ibm.icu.dev.util.Relation; 
     28import com.ibm.icu.text.MessageFormat; 
    1729 
     30@CLDRTool(alias="langdata",description="Generate a list of ISO639 language data. Use '--en' to build en.xml") 
    1831public class GenerateLanguageData { 
    1932    // static StandardCodes sc = StandardCodes.make(); 
     
    2134    static Iso639Data iso639Data = new Iso639Data(); 
    2235 
    23     public static void main(String[] args) { 
     36    public static void main(String[] args) throws IOException { 
     37        MessageFormat nameFmt = new MessageFormat("{0,plural, one{# other name} other{# other names}}"); 
     38        Set<String> bcp47languages = StandardCodes.make().getAvailableCodes("language"); 
     39 
     40        if(args.length>0 && args[0].equals("--en")) { 
     41            CLDRConfig cldrConfig = CLDRConfig.getInstance(); 
     42            XPathParts xpp = new XPathParts(null,null) 
     43                       .addElement(LDMLConstants.LDML) 
     44                       .addElement(LDMLConstants.LDN) 
     45                       .addElement(LDMLConstants.LANGUAGES) 
     46                       .addElement(LDMLConstants.LANGUAGE); 
     47            // could add draft status here, ex: 
     48            xpp.setAttribute(-1, LDMLConstants.DRAFT, DraftStatus.unconfirmed.toString()); 
     49            System.out.println("generating en.xml.. to " + CLDRPaths.GEN_DIRECTORY); 
     50            SimpleXMLSource xmlSource = new SimpleXMLSource("en"); 
     51            CLDRFile newEn = new CLDRFile(xmlSource); 
     52            CLDRFile oldEn = cldrConfig.getEnglish(); 
     53            Set<String> all = Iso639Data.getAvailable(); 
     54            newEn.addComment("//ldml", "by " + 
     55            GenerateLanguageData.class.getSimpleName() +  
     56                " from Iso639Data v"+iso639Data.getVersion()+" on " + new java.util.Date()  
     57                + " - "+all.size() +" codes.", 
     58                    CommentType.PREBLOCK); 
     59            System.out.println(all.size() + " ISO 639 codes to process"); 
     60            for(String languageCode : all) { 
     61                xpp.setAttribute(-1, LDMLConstants.TYPE, languageCode); 
     62                String xpath = xpp.toString(); 
     63 
     64                Set<String> names = Iso639Data.getNames(languageCode); 
     65 
     66                newEn.add(xpp.toString(), oldEn.getName(languageCode)); 
     67                 
     68                String oldValue = oldEn.getStringValue(xpath); 
     69                 
     70                if ( oldValue != null && 
     71                    !oldValue.equals(languageCode) ) { 
     72                    newEn.addComment(xpath, 
     73                                     "was already in en.xml", 
     74                                      CommentType.LINE); 
     75                } 
     76            } 
     77            final String filename = newEn.getLocaleID()+".xml"; 
     78            try (PrintWriter w =  
     79                    BagFormatter.openUTF8Writer(CLDRPaths.GEN_DIRECTORY, filename)) { 
     80                newEn.write(w); 
     81                System.out.println("Wrote to " + CLDRPaths.GEN_DIRECTORY +"/"+filename ); 
     82            } 
     83            return; 
     84        } 
     85         
    2486        // Set<String> languageRegistryCodes = sc.getAvailableCodes("language"); 
    2587        Set<String> languageCodes = new TreeSet<String>(Iso639Data.getAvailable()); 
    2688 
    2789        System.out.println("Macrolanguages"); 
    28         Set<String> bcp47languages = StandardCodes.make().getAvailableCodes("language"); 
    2990        for (String languageCode : languageCodes) { 
    3091            Set<String> suffixes = Iso639Data.getEncompassedForMacro(languageCode); 
Note: See TracChangeset for help on using the changeset viewer.