func readCLDRCoreFile()

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
}