Documentation
¶
Index ¶
- Constants
- Variables
- func Basename(version string) string
- func CheckDoNotMatch(searchString string) bool
- func CheckExactMatch(affiliation string, countries []string, version string) (MatchedOrganization, []MatchedOrganization)
- func CheckLatinChars(s string) bool
- func CleanSearchString(searchString string) string
- func ExtractAll(content []commonmeta.Data) ([]byte, error)
- func GetCountries(s string) []string
- func GetCountryCodes(s string) []string
- func GetDisplayName(ror ROR) string
- func GetScore(candidate map[string]interface{}, affSub string, countries []string, ...) float64
- func GetSimilarity(affSub, candName string) float64
- func MapROR(id string, name string, assertedBy string, match bool) (string, string, string, error)
- func MatchByQuery(text, matchingType string, query interface{}, countries []string, ...) (MatchedOrganization, []MatchedOrganization)
- func MatchByType(text, matchingType string, countries []string, version string) (MatchedOrganization, []MatchedOrganization)
- func MatchOrganizations(params map[string]string, version string) (interface{}, interface{})
- func Normalize(s string) string
- func ToRegion(c string) string
- func Write(data ROR) ([]byte, error)
- func WriteAll(list []ROR, extension string) ([]byte, error)
- func WriteAllInvenioRDM(list []ROR, extension string) ([]byte, error)
- func WriteInvenioRDM(data ROR) ([]byte, error)
- type Admin
- type Date
- type ExternalID
- type ExternalIDS
- type GeonamesDetails
- type Identifier
- type InvenioRDM
- type Link
- type Links
- type Location
- type Locations
- type MatchFunction
- type MatchedOrganization
- type MatchingGraph
- type MatchingNode
- type Name
- type Names
- type Options
- type ROR
- func Fetch(str string) (ROR, error)
- func FetchAll(version string) ([]ROR, error)
- func FilterList(list []ROR, type_ string, country string, dateUpdated string, file string, ...) ([]ROR, error)
- func Get(str string) (ROR, error)
- func LoadAll(filename string) ([]ROR, error)
- func LoadAllFromBytes(data []byte, extension string) ([]ROR, error)
- func LoadBuiltin() ([]ROR, error)
- func LoadJSON(version string) ([]ROR, error)
- func MatchOrganization(name string) (ROR, error)
- func Search(id string) (ROR, error)
- type RORCSV
- type Relationship
- type Relationships
- type Strings
- type Title
Examples ¶
Constants ¶
const ( MIN_CHOSEN_SCORE = 0.9 MIN_MATCHING_SCORE = 0.5 MATCHING_TYPE_PHRASE = "PHRASE" MATCHING_TYPE_COMMON = "COMMON TERMS" MATCHING_TYPE_FUZZY = "FUZZY" MATCHING_TYPE_HEURISTICS = "HEURISTICS" MATCHING_TYPE_ACRONYM = "ACRONYM" MATCHING_TYPE_EXACT = "EXACT" SPECIAL_CHARS_REGEX = `[\+\-\=\|\>\<\!\(\)\\\{\}\[\]\^"\~\*\?\:\/\.\,\;]` DO_NOT_MATCH = "university hospital" )
Constants
Variables ¶
var ( GEONAMES_COUNTRIES map[string]map[string]interface{} GEONAMES_CITIES map[string]map[string]interface{} COUNTRIES [][2]string )
Global variables (equivalent to Python module-level variables)
var ArchivedFilename = fmt.Sprintf("%s-%s-ror-data_schema_v2.json", DefaultVersion, RORVersions[DefaultVersion])
var DefaultVersion = "v1.71"
var Extensions = []string{".parquet", ".yaml", ".json", ".jsonl", ".csv"}
var NODE_MATCHING_TYPES = []string{ MATCHING_TYPE_PHRASE, MATCHING_TYPE_COMMON, MATCHING_TYPE_FUZZY, MATCHING_TYPE_HEURISTICS, }
var RORCountries = map[string][]string{}/* 250 elements not displayed */
RORCountries is a map of country codes to their names used in ror. https://github.com/ror-community/ror-api/blob/master/rorapi/common/countries.txt
var RORDownloadURL = fmt.Sprintf("https://github.com/ror-community/ror-data/blob/main/%s", RORFilename)
var RORFilename = fmt.Sprintf("%s-%s-ror-data.zip", DefaultVersion, RORVersions[DefaultVersion])
var RORTypes = []string{"archive", "company", "education", "facility", "funder", "government", "healthcare", "nonprofit", "other"}
var RORVersions = map[string]string{
"v1.59": "2025-01-23",
"v1.60": "2025-02-27",
"v1.61": "2025-03-18",
"v1.62": "2025-03-27",
"v1.63": "2025-04-03",
"v1.64": "2025-04-28",
"v1.65": "2025-05-05",
"v1.66": "2025-05-20",
"v1.67": "2025-06-24",
"v1.68": "2025-07-15",
"v1.69": "2025-08-07",
"v1.70": "2025-08-26",
"v1.71": "2025-09-22",
}
RORVersions contains the ROR versions and their release dates, published on Zenodo. The ROR version is the first part of the filename, e.g., v1.63-2025-04-03-ror-data_schema_v2.json Beginning with release v1.45 on 11 April 2024, data releases contain JSON and CSV files formatted according to both schema v1 and schema v2. Version 2 files have _schema_v2 appended to the end of the filename, e.g., v1.45-2024-04-11-ror-data_schema_v2.json.
var RORZenodoIDs = map[string]string{
"v1.59": "14728473",
"v1.60": "14797924",
"v1.61": "15047759",
"v1.62": "15098078",
"v1.63": "15132361",
"v1.64": "15298417",
"v1.65": "15343380",
"v1.66": "15475023",
"v1.67": "15731450",
"v1.68": "15925254",
"v1.69": "16762508",
"v1.70": "16950727",
"v1.71": "17178491",
}
RORZenodoIDs contains the Zenodo IDs for the ROR data releases.
Functions ¶
func Basename ¶ added in v0.21.2
Basename returns the basename of the ROR data dump file for a given version.
func CheckDoNotMatch ¶ added in v0.19.3
CheckDoNotMatch checks if the search string should not be matched
func CheckExactMatch ¶ added in v0.19.3
func CheckExactMatch(affiliation string, countries []string, version string) (MatchedOrganization, []MatchedOrganization)
CheckExactMatch checks for exact match of affiliation
func CheckLatinChars ¶ added in v0.19.3
CheckLatinChars checks if all characters are Latin
func CleanSearchString ¶ added in v0.19.3
CleanSearchString cleans the search string by removing special characters
func ExtractAll ¶ added in v0.17.1
func ExtractAll(content []commonmeta.Data) ([]byte, error)
ExtractAll extracts ROR metadata from a JSON file in commonmeta format.
func GetCountries ¶ added in v0.19.3
GetCountries extracts country codes and maps to regions
func GetCountryCodes ¶ added in v0.19.3
GetCountryCodes extracts country codes from the string
Example ¶
package main
import (
"fmt"
"github.com/front-matter/commonmeta/ror"
)
func main() {
s := ror.GetCountryCodes("dk")
fmt.Println(s)
}
Output: DK
func GetDisplayName ¶ added in v0.19.0
GetDisplayName returns the display name of the organization
func GetScore ¶ added in v0.19.3
func GetScore(candidate map[string]interface{}, affSub string, countries []string, version string) float64
GetScore calculates similarity between affiliation substring and candidate
func GetSimilarity ¶ added in v0.19.3
GetSimilarity calculates similarity between affiliation substring and candidate name
func MapROR ¶ added in v0.19.0
MapROR maps between a ROR ID and organization name
The function accepts a ROR ID and/or name and returns both values if possible: - If both ID and name are provided, they are returned unchanged - If only ID is provided, the name is fetched from ROR API - If only name is provided and match=true, attempts to find a matching ROR ID
func MatchByQuery ¶ added in v0.19.3
func MatchByQuery(text, matchingType string, query interface{}, countries []string, version string) (MatchedOrganization, []MatchedOrganization)
MatchByQuery matches affiliation text using specific ES query
func MatchByType ¶ added in v0.19.3
func MatchByType(text, matchingType string, countries []string, version string) (MatchedOrganization, []MatchedOrganization)
MatchByType matches affiliation text using specific matching mode/type
func MatchOrganizations ¶ added in v0.19.3
MatchOrganizations matches organizations based on parameters
func WriteAllInvenioRDM ¶ added in v0.18.0
WriteAllInvenioRDM writes a ROR catalog in InvenioRDM format.
func WriteInvenioRDM ¶ added in v0.18.0
WriteInvenioRDM writes ROR metadata in InvenioRDM format.
Types ¶
type ExternalID ¶
type ExternalIDS ¶ added in v0.19.0
type ExternalIDS []ExternalID
type GeonamesDetails ¶
type GeonamesDetails struct {
ContinentCode string `json:"continent_code" yaml:"continent_code"`
ContinentName string `json:"continent_name" yaml:"continent_name"`
CountryCode string `json:"country_code" yaml:"country_code"`
CountryName string `json:"country_name" yaml:"country_name"`
CountrySubdivisionCode string `json:"country_subdivision_code,omitempty" yaml:"country_subdivision_code,omitempty"`
CountrySubdivisionName string `json:"country_subdivision_name,omitempty" yaml:"country_subdivision_name,omitempty"`
Lat float64 `json:"lat"`
Lng float64 `json:"lng"`
Name string `json:"name"`
}
type Identifier ¶
type InvenioRDM ¶
type InvenioRDM struct {
Acronym string `json:"acronym,omitempty" yaml:"acronym,omitempty"`
ID string `json:"id"`
Country string `json:"country,omitempty" yaml:"country,omitempty"`
Identifiers []Identifier `json:"identifiers"`
Name string `json:"name"`
Title Title `json:"title"`
}
InvenioRDM represents the ROR metadata record in InvenioRDM format.
func ConvertInvenioRDM ¶ added in v0.19.0
func ConvertInvenioRDM(data ROR) (InvenioRDM, error)
Convert converts ROR metadata into InvenioRDM format.
type Location ¶
type Location struct {
GeonamesID int `json:"geonames_id" yaml:"geonames_id"`
GeonamesDetails GeonamesDetails `json:"geonames_details" yaml:"geonames_details"`
}
type MatchFunction ¶ added in v0.19.3
MatchFunction is a function type used for Levenshtein matching.
type MatchedOrganization ¶ added in v0.19.3
type MatchedOrganization struct {
Chosen bool
Substring string
MatchingType string
Score float64
Organization ROR
}
MatchedOrganization represents a matched organization from a match query.
func GetOutput ¶ added in v0.19.3
func GetOutput(chosen interface{}, allMatched []MatchedOrganization, activeOnly bool) []MatchedOrganization
GetOutput processes matched organizations and returns final output
func MatchAffiliation ¶ added in v0.19.0
func MatchAffiliation(affiliation string, activeOnly bool, version string) []MatchedOrganization
MatchAffiliation matches an affiliation string
type MatchingGraph ¶ added in v0.19.3
type MatchingGraph struct {
Nodes []*MatchingNode
Version string
Affiliation string
}
MatchingGraph represents the entire input affiliation
func NewMatchingGraph ¶ added in v0.19.3
func NewMatchingGraph(affiliation, version string) *MatchingGraph
NewMatchingGraph creates a new MatchingGraph
func (*MatchingGraph) Match ¶ added in v0.19.3
func (graph *MatchingGraph) Match(countries []string, minScore float64) ([]MatchedOrganization, []MatchedOrganization)
Match tries to match all nodes in the graph
func (*MatchingGraph) RemoveLowScores ¶ added in v0.19.3
func (graph *MatchingGraph) RemoveLowScores(minScore float64)
RemoveLowScores removes nodes with scores below the minimum
type MatchingNode ¶ added in v0.19.3
type MatchingNode struct {
Text string
Version string
Matched *MatchedOrganization
AllMatched []MatchedOrganization
}
MatchingNode represents a substring of the original affiliation
func NewMatchingNode ¶ added in v0.19.3
func NewMatchingNode(text, version string) *MatchingNode
NewMatchingNode creates a new MatchingNode
func (*MatchingNode) Match ¶ added in v0.19.3
func (node *MatchingNode) Match(countries []string, minScore float64)
Match tries to match the node text to an organization using different matching types
type Options ¶ added in v0.19.3
type Options struct {
InsCost int
DelCost int
SubCost int
Matches MatchFunction
}
Options represents the options for Levenshhein matching.
type ROR ¶
type ROR struct {
ID string `json:"id" csv:"id"`
Domains Strings `json:"domains,omitempty" yaml:"domains,omitempty"`
Established int `json:"established,omitempty" yaml:"established,omitempty"`
ExternalIDs ExternalIDS `json:"external_ids,omitempty" yaml:"external_ids,omitempty"`
Links Links `json:"links" yaml:"links,omitempty"`
Locations Locations `json:"locations"`
Names Names `json:"names"`
Relationships Relationships `json:"relationships,omitempty" yaml:"relationships,omitempty"`
Status string `json:"status"`
Types Strings `json:"types"`
Admin Admin `json:"admin"`
}
ROR represents the ROR metadata record.
func Fetch ¶ added in v0.18.0
Fetch fetches ROR metadata for a given ror id.
Example ¶
package main
import (
"fmt"
"github.com/front-matter/commonmeta/ror"
)
func main() {
ror, _ := ror.Fetch("https://doi.org/10.13039/501100000780")
s := ror.ID
fmt.Println(s)
}
Output: https://ror.org/00k4n6c32
func FilterList ¶ added in v0.22.0
func FilterList(list []ROR, type_ string, country string, dateUpdated string, file string, number int, page int) ([]ROR, error)
FilterList filters a ROR list by type and/or country.
func LoadAllFromBytes ¶ added in v0.35.0
LoadAllFromBytes loads the metadata for a list of organizations from ROR data in bytes.
func LoadBuiltin ¶ added in v0.17.5
LoadBuiltin loads the ROR metadata from the embedded ROR catalog in zipped json format.
func LoadJSON ¶ added in v0.21.2
LoadJSON loads a local ROR json file with the specified version. If the file does not exist or is smaller than 50 MB, it will be downloaded from Zenodo.
func MatchOrganization ¶ added in v0.19.3
MatchOrganization searches ROR metadata for a given affiliation name, using their matching strategies.
type RORCSV ¶ added in v0.19.0
type RORCSV struct {
ID string `csv:"id"`
Name string `csv:"name"`
Types string `csv:"types"`
Status string `csv:"status"`
Links string `csv:"links,omitempty"`
Aliases string `csv:"aliases,omitempty"`
Labels string `csv:"labels,omitempty"`
Acronyms string `csv:"acronyms,omitempty"`
WikipediaURL string `csv:"wikipedia_url,omitempty"`
Established string `csv:"established,omitempty"`
Latitude string `csv:"addresses[0].lat"`
Longitude string `csv:"addresses[0].lng"`
Place string `csv:"addresses[0].geonames_city.name"`
GeonamesID string `csv:"addresses[0].geonames_city.id"`
CountrySubdivisionName string `csv:"addresses[0].geonames_city.geonames_admin1.name,omitempty"`
CountrySubdivisionCode string `csv:"addresses[0].geonames_city.geonames_admin1.code,omitempty"`
CountryCode string `csv:"country.country_code"`
CountryName string `csv:"country.country_name"`
ExternalIDsGRIDPreferred string `csv:"external_ids.GRID.preferred,omitempty"`
ExternalIDsGRIDAll string `csv:"external_ids.GRID.all,omitempty"`
ExternalIDsISNIPreferred string `csv:"external_ids.ISNI.preferred,omitempty"`
ExternalIDsISNIAll string `csv:"external_ids.ISNI.all,omitempty"`
ExternalIDsFundrefPreferred string `csv:"external_ids.FundRef.preferred,omitempty"`
ExternalIDsFundrefAll string `csv:"external_ids.FundRef.all,omitempty"`
ExternalIDsWikidataPreferred string `csv:"external_ids.Wikidata.preferred,omitempty"`
ExternalIDsWikidataAll string `csv:"external_ids.Wikidata.all,omitempty"`
Relationships string `csv:"relationships,omitempty"`
}
func ConvertRORCSV ¶ added in v0.19.0
ConvertRORCSV converts ROR metadata into RORCSV format.
type Relationship ¶
type Relationships ¶ added in v0.19.0
type Relationships []Relationship
type Title ¶ added in v0.17.4
type Title struct {
Aa string `json:"aa,omitempty" yaml:"aa,omitempty"` // Afar
Af string `json:"af,omitempty" yaml:"af,omitempty"` // Afrikaans
Am string `json:"am,omitempty" yaml:"am,omitempty"` // Amharic
Ar string `json:"ar,omitempty" yaml:"ar,omitempty"` // Arabic
As string `json:"as,omitempty" yaml:"as,omitempty"` // Assamese
Az string `json:"az,omitempty" yaml:"az,omitempty"` // Azerbaijani
Ba string `json:"ba,omitempty" yaml:"ba,omitempty"` // Bashkir
Be string `json:"be,omitempty" yaml:"be,omitempty"` // Belgian
Bg string `json:"bg,omitempty" yaml:"bg,omitempty"` // Bulgarian
Bi string `json:"bi,omitempty" yaml:"bi,omitempty"` // Bislama
Bn string `json:"bn,omitempty" yaml:"bn,omitempty"` // Bengali
Bs string `json:"bs,omitempty" yaml:"bs,omitempty"` // Bosnian
Ca string `json:"ca,omitempty" yaml:"ca,omitempty"` // Catalan
Ch string `json:"ch,omitempty" yaml:"ch,omitempty"` // Chamorro
Co string `json:"co,omitempty" yaml:"co,omitempty"` // Corsican
Cs string `json:"cs,omitempty" yaml:"cs,omitempty"` // Czech
Cu string `json:"cu,omitempty" yaml:"cu,omitempty"` // Church Slavic
Cy string `json:"cy,omitempty" yaml:"cy,omitempty"` // Welsh
Da string `json:"da,omitempty" yaml:"da,omitempty"` // Danish
De string `json:"de,omitempty" yaml:"de,omitempty"` // German
Dv string `json:"dv,omitempty" yaml:"dv,omitempty"` // Divehi
Dz string `json:"dz,omitempty" yaml:"dz,omitempty"` // Dzongkha
El string `json:"el,omitempty" yaml:"el,omitempty"` // Greek
En string `json:"en,omitempty" yaml:"en,omitempty"` // English
Es string `json:"es,omitempty" yaml:"es,omitempty"` // Spanish
Et string `json:"et,omitempty" yaml:"et,omitempty"` // Estonian
Eu string `json:"eu,omitempty" yaml:"eu,omitempty"` // Basque
Fa string `json:"fa,omitempty" yaml:"fa,omitempty"` // Persian
Fi string `json:"fi,omitempty" yaml:"fi,omitempty"` // Finnish
Fo string `json:"fo,omitempty" yaml:"fo,omitempty"` // Faroese
Fr string `json:"fr,omitempty" yaml:"fr,omitempty"` // French
Fy string `json:"fy,omitempty" yaml:"fy,omitempty"` // Frisian
Ga string `json:"ga,omitempty" yaml:"ga,omitempty"` // Irish
Gd string `json:"gd,omitempty" yaml:"gd,omitempty"` // Scottish Gaelic
Gl string `json:"gl,omitempty" yaml:"gl,omitempty"` // Galician
Gu string `json:"gu,omitempty" yaml:"gu,omitempty"` // Gujarati
Gv string `json:"gv,omitempty" yaml:"gv,omitempty"` // Manx
Ha string `json:"ha,omitempty" yaml:"ha,omitempty"` // Hausa
He string `json:"he,omitempty" yaml:"he,omitempty"` // Hebrew
Hi string `json:"hi,omitempty" yaml:"hi,omitempty"` // Hindi
Hr string `json:"hr,omitempty" yaml:"hr,omitempty"` // Croatian
Ht string `json:"ht,omitempty" yaml:"ht,omitempty"` // Haitian
Hu string `json:"hu,omitempty" yaml:"hu,omitempty"` // Hungarian
Hy string `json:"hy,omitempty" yaml:"hy,omitempty"` // Armenian
Id string `json:"id,omitempty" yaml:"id,omitempty"` // Indonesian
Is string `json:"is,omitempty" yaml:"is,omitempty"` // Icelandic
It string `json:"it,omitempty" yaml:"it,omitempty"` // Italian
Iu string `json:"iu,omitempty" yaml:"iu,omitempty"` // Inuktitut
Ja string `json:"ja,omitempty" yaml:"ja,omitempty"` // Japanese
Jv string `json:"jv,omitempty" yaml:"jv,omitempty"` // Javanese
Ka string `json:"ka,omitempty" yaml:"ka,omitempty"` // Georgian
Kg string `json:"kg,omitempty" yaml:"kg,omitempty"` // Kongo
Ki string `json:"ki,omitempty" yaml:"ki,omitempty"` // Kikuyu
Kk string `json:"kk,omitempty" yaml:"kk,omitempty"` // Kazakh
Kl string `json:"kl,omitempty" yaml:"kl,omitempty"` // Greenlandic
Km string `json:"km,omitempty" yaml:"km,omitempty"` // Khmer
Kn string `json:"kn,omitempty" yaml:"kn,omitempty"` // Kannada
Ko string `json:"ko,omitempty" yaml:"ko,omitempty"` // Korean
Kr string `json:"kr,omitempty" yaml:"kr,omitempty"` // Kanuri
Ku string `json:"ku,omitempty" yaml:"ku,omitempty"` // Kurdish
Ky string `json:"ky,omitempty" yaml:"ky,omitempty"` // Kyrgyz
La string `json:"la,omitempty" yaml:"la,omitempty"` // Latin
Lb string `json:"lb,omitempty" yaml:"lb,omitempty"` // Luxembourgish
Lo string `json:"lo,omitempty" yaml:"lo,omitempty"` // Lao
Lt string `json:"lt,omitempty" yaml:"lt,omitempty"` // Lithuanian
Lu string `json:"lu,omitempty" yaml:"lu,omitempty"` // Luba-Katanga
Lv string `json:"lv,omitempty" yaml:"lv,omitempty"` // Latvian
Mg string `json:"mg,omitempty" yaml:"mg,omitempty"` // Malagasy
Mi string `json:"mi,omitempty" yaml:"mi,omitempty"` // Maori
Mk string `json:"mk,omitempty" yaml:"mk,omitempty"` // Macedonian
Ml string `json:"ml,omitempty" yaml:"ml,omitempty"` // Malayalam
Mn string `json:"mn,omitempty" yaml:"mn,omitempty"` // Mongolian
Mr string `json:"mr,omitempty" yaml:"mr,omitempty"` // Marathi
Ms string `json:"ms,omitempty" yaml:"ms,omitempty"` // Malay
Mt string `json:"mt,omitempty" yaml:"mt,omitempty"` // Maltese
My string `json:"my,omitempty" yaml:"my,omitempty"` // Burmese
Na string `json:"na,omitempty" yaml:"na,omitempty"` // Nauru
Nb string `json:"nb,omitempty" yaml:"nb,omitempty"` // Norwegian Bokmål
Ne string `json:"ne,omitempty" yaml:"ne,omitempty"` // Nepali
Nl string `json:"nl,omitempty" yaml:"nl,omitempty"` // Dutch
Nn string `json:"nn,omitempty" yaml:"nn,omitempty"` // Norwegian Nynorsk
No string `json:"no,omitempty" yaml:"no,omitempty"` // Norwegian
Oc string `json:"oc,omitempty" yaml:"oc,omitempty"` // Occitan
Om string `json:"om,omitempty" yaml:"om,omitempty"` // Oromo
Or string `json:"or,omitempty" yaml:"or,omitempty"` // Oriya
Pa string `json:"pa,omitempty" yaml:"pa,omitempty"` // Punjabi
Pl string `json:"pl,omitempty" yaml:"pl,omitempty"` // Polish
Ps string `json:"ps,omitempty" yaml:"ps,omitempty"` // Pashto
Pt string `json:"pt,omitempty" yaml:"pt,omitempty"` // Portuguese
Rm string `json:"rm,omitempty" yaml:"rm,omitempty"` // Romansh
Ro string `json:"ro,omitempty" yaml:"ro,omitempty"` // Romanian
Ru string `json:"ru,omitempty" yaml:"ru,omitempty"` // Russian
Rw string `json:"rw,omitempty" yaml:"rw,omitempty"` // Kinyarwanda
Sa string `json:"sa,omitempty" yaml:"sa,omitempty"` // Sanskrit
Sd string `json:"sd,omitempty" yaml:"sd,omitempty"` // Sindhi
Se string `json:"se,omitempty" yaml:"se,omitempty"` // Northern Sami
Sh string `json:"sh,omitempty" yaml:"sh,omitempty"` // Serbo-Croatian
Si string `json:"si,omitempty" yaml:"si,omitempty"` // Sinhalese
Sk string `json:"sk,omitempty" yaml:"sk,omitempty"` // Slovak
Sl string `json:"sl,omitempty" yaml:"sl,omitempty"` // Slovenian
Sm string `json:"sm,omitempty" yaml:"sm,omitempty"` // Samoan
So string `json:"so,omitempty" yaml:"so,omitempty"` // Somali
Sq string `json:"sq,omitempty" yaml:"sq,omitempty"` // Albanian
Sr string `json:"sr,omitempty" yaml:"sr,omitempty"` // Serbian
St string `json:"st,omitempty" yaml:"st,omitempty"` // Southern Sotho
Sv string `json:"sv,omitempty" yaml:"sv,omitempty"` // Swedish
Sw string `json:"sw,omitempty" yaml:"sw,omitempty"` // Swahili
Ta string `json:"ta,omitempty" yaml:"ta,omitempty"` // Tamil
Te string `json:"te,omitempty" yaml:"te,omitempty"` // Telugu
Tg string `json:"tg,omitempty" yaml:"tg,omitempty"` // Tajik
Th string `json:"th,omitempty" yaml:"th,omitempty"` // Thai
Ti string `json:"ti,omitempty" yaml:"ti,omitempty"` // Tigrinya
Tk string `json:"tk,omitempty" yaml:"tk,omitempty"` // Turkmen
Tl string `json:"tl,omitempty" yaml:"tl,omitempty"` // Tagalog
Tr string `json:"tr,omitempty" yaml:"tr,omitempty"` // Turkish
Tt string `json:"tt,omitempty" yaml:"tt,omitempty"` // Tatar
Ug string `json:"ug,omitempty" yaml:"ug,omitempty"` // Uighur
Uk string `json:"uk,omitempty" yaml:"uk,omitempty"` // Ukrainian
Ur string `json:"ur,omitempty" yaml:"ur,omitempty"` // Urdu
Uz string `json:"uz,omitempty" yaml:"uz,omitempty"` // Uzbek
Vi string `json:"vi,omitempty" yaml:"vi,omitempty"` // Vietnamese
Xh string `json:"xh,omitempty" yaml:"xh,omitempty"` // Xhosa
Yo string `json:"yo,omitempty" yaml:"yo,omitempty"` // Yoruba
Zh string `json:"zh,omitempty" yaml:"zh,omitempty"` // Chinese
Zu string `json:"zu,omitempty" yaml:"zu,omitempty"` // Zulu
}