in generator.go [320:368]
func readCLDRCoreFile(path string, version int) (map[string]*cldrLocaleModel, error) {
cldrCoreZipFile, err := getCLDRCoreFile(path, version)
if err != nil {
return nil, err
}
defer cldrCoreZipFile.Close()
zipFile, err := zip.OpenReader(cldrCoreZipFile.Name())
if err != nil {
return nil, err
}
defer zipFile.Close()
models := make(map[string]*cldrLocaleModel)
for _, file := range zipFile.File {
fileInfo := file.FileInfo()
if strings.HasPrefix(file.Name, "common/main") && !fileInfo.IsDir() {
if strings.HasSuffix(fileInfo.Name(), ".xml") {
model := &LDML{}
entry, err := file.Open()
if err != nil {
return nil, err
}
decoder := xml.NewDecoder(entry)
if err = decoder.Decode(model); err != nil {
return nil, err
}
tag := fileInfo.Name()[:len(fileInfo.Name())-4]
parsedTag, err := language.Parse(tag)
if err != nil {
return nil, err
}
var parent string
if parsedTag.Parent() != language.Und {
parent = parsedTag.Parent().String()
}
models[parsedTag.String()] = &cldrLocaleModel{parent, model}
}
}
}
return models, nil
}