зеркало из https://github.com/golang/text.git
: upgrade to CLDR 30
The trickiest changes are in language/display where the dropping of nl-BE as Vlaams in Dutch caused some issues. This will probably be changed back as I think this change is erroneous, but as we’re not into the politics of it, we adopt the CLDR changes. Change-Id: I6c593960778cd4c5b9f0553340b72a1410166506 Reviewed-on: https://go-review.googlesource.com/30910 Run-TryBot: Marcel van Lohuizen <mpvl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Nigel Tao <nigeltao@golang.org>
This commit is contained in:
Родитель
afa951a325
Коммит
c745997bb1
4657
currency/tables.go
4657
currency/tables.go
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
2
gen.go
2
gen.go
|
@ -105,7 +105,7 @@ func main() {
|
|||
_ = generate("./encoding/htmlindex", unicode, language)
|
||||
_ = generate("./currency", unicode, cldr, language, internal)
|
||||
_ = generate("./internal/number", unicode, cldr, language, internal)
|
||||
_ = generate("./language/display", unicode, cldr, language)
|
||||
_ = generate("./language/display", unicode, cldr, language, internal)
|
||||
_ = generate("./collate", unicode, norm, cldr, language, rangetable)
|
||||
_ = generate("./search", unicode, norm, cldr, language, rangetable)
|
||||
)
|
||||
|
|
|
@ -12,7 +12,7 @@ type pluralTest struct {
|
|||
}
|
||||
|
||||
var ordinalTests = []pluralTest{ // 59 elements
|
||||
0: {locales: "af am ar bg bs ce cs da de dsb el es et eu fa fi fy gl he hr hsb id in is iw ja km kn ko ky lt lv ml mn my nb nl pa pl prg pt root ru sh si sk sl sr sw ta te th tr ur uz zh zu", form: 0x0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)},
|
||||
0: {locales: "af am ar bg bs ce cs da de dsb el es et eu fa fi fy gl he hr hsb id in is iw ja km kn ko ky lt lv ml mn my nb nl pa pl prg pt root ru sh si sk sl sr sw ta te th tr ur uz yue zh zu", form: 0x0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)},
|
||||
1: {locales: "sv", form: 0x2, integer: []string{"1", "2", "21", "22", "31", "32", "41", "42", "51", "52", "61", "62", "71", "72", "81", "82", "101", "1001"}, decimal: []string(nil)},
|
||||
2: {locales: "sv", form: 0x0, integer: []string{"0", "3~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)},
|
||||
3: {locales: "fil fr ga hy lo mo ms ro tl vi", form: 0x2, integer: []string{"1"}, decimal: []string(nil)},
|
||||
|
@ -74,7 +74,7 @@ var ordinalTests = []pluralTest{ // 59 elements
|
|||
} // Size: 4272 bytes
|
||||
|
||||
var cardinalTests = []pluralTest{ // 115 elements
|
||||
0: {locales: "bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo root sah ses sg th to vi wo yo zh", form: 0x0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}},
|
||||
0: {locales: "bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo root sah ses sg th to vi wo yo yue zh", form: 0x0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}},
|
||||
1: {locales: "am as bn fa gu hi kn mr zu", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.0", "0.00~0.04"}},
|
||||
2: {locales: "am as bn fa gu hi kn mr zu", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"1.1~2.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}},
|
||||
3: {locales: "ff fr hy kab", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.5"}},
|
||||
|
@ -177,12 +177,12 @@ var cardinalTests = []pluralTest{ // 115 elements
|
|||
100: {locales: "gv", form: 0x4, integer: []string{"0", "20", "40", "60", "80", "100", "120", "140", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)},
|
||||
101: {locales: "gv", form: 0x5, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}},
|
||||
102: {locales: "gv", form: 0x0, integer: []string{"3~10", "13~19", "23", "103", "1003"}, decimal: []string(nil)},
|
||||
103: {locales: "ar", form: 0x1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}},
|
||||
104: {locales: "ar", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}},
|
||||
105: {locales: "ar", form: 0x3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}},
|
||||
106: {locales: "ar", form: 0x4, integer: []string{"3~10", "103~110", "1003"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "103.0", "1003.0"}},
|
||||
107: {locales: "ar", form: 0x5, integer: []string{"11~26", "111", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}},
|
||||
108: {locales: "ar", form: 0x0, integer: []string{"100~102", "200~202", "300~302", "400~402", "500~502", "600", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}},
|
||||
103: {locales: "ar ars", form: 0x1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}},
|
||||
104: {locales: "ar ars", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}},
|
||||
105: {locales: "ar ars", form: 0x3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}},
|
||||
106: {locales: "ar ars", form: 0x4, integer: []string{"3~10", "103~110", "1003"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "103.0", "1003.0"}},
|
||||
107: {locales: "ar ars", form: 0x5, integer: []string{"11~26", "111", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}},
|
||||
108: {locales: "ar ars", form: 0x0, integer: []string{"100~102", "200~202", "300~302", "400~402", "500~502", "600", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}},
|
||||
109: {locales: "cy", form: 0x1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}},
|
||||
110: {locales: "cy", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}},
|
||||
111: {locales: "cy", form: 0x3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}},
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -4,113 +4,113 @@ package internal
|
|||
|
||||
// Parent maps a compact index of a tag to the compact index of the parent of
|
||||
// this tag.
|
||||
var Parent = []uint16{ // 747 elements
|
||||
var Parent = []uint16{ // 752 elements
|
||||
// Entry 0 - 3F
|
||||
0x0000, 0x0052, 0x00e3, 0x0000, 0x0003, 0x0003, 0x0000, 0x0006,
|
||||
0x0000, 0x0053, 0x00e5, 0x0000, 0x0003, 0x0003, 0x0000, 0x0006,
|
||||
0x0000, 0x0008, 0x0000, 0x000a, 0x0000, 0x000c, 0x000c, 0x000c,
|
||||
0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
|
||||
0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
|
||||
0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
|
||||
0x000c, 0x0000, 0x0029, 0x0000, 0x002b, 0x0000, 0x002d, 0x0000,
|
||||
0x0000, 0x0030, 0x002f, 0x002f, 0x0000, 0x0034, 0x0000, 0x0036,
|
||||
0x0000, 0x0038, 0x0000, 0x003a, 0x0000, 0x003c, 0x0000, 0x0000,
|
||||
0x000c, 0x0000, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x002e,
|
||||
0x0000, 0x0000, 0x0031, 0x0030, 0x0030, 0x0000, 0x0035, 0x0000,
|
||||
0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x003d, 0x0000,
|
||||
// Entry 40 - 7F
|
||||
0x003f, 0x0000, 0x0041, 0x0041, 0x0000, 0x0044, 0x0044, 0x0000,
|
||||
0x0047, 0x0000, 0x0049, 0x0000, 0x0000, 0x004c, 0x004b, 0x004b,
|
||||
0x0000, 0x0050, 0x0050, 0x0050, 0x0050, 0x0000, 0x0055, 0x0000,
|
||||
0x0057, 0x0000, 0x0059, 0x0000, 0x005b, 0x005b, 0x0000, 0x005e,
|
||||
0x0000, 0x0060, 0x0000, 0x0062, 0x0000, 0x0064, 0x0064, 0x0000,
|
||||
0x0067, 0x0000, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
|
||||
0x0000, 0x0070, 0x0000, 0x0072, 0x0000, 0x0074, 0x0000, 0x0000,
|
||||
0x0077, 0x0000, 0x0079, 0x0000, 0x007b, 0x0000, 0x007d, 0x007d,
|
||||
0x0000, 0x0040, 0x0000, 0x0042, 0x0042, 0x0000, 0x0045, 0x0045,
|
||||
0x0000, 0x0048, 0x0000, 0x004a, 0x0000, 0x0000, 0x004d, 0x004c,
|
||||
0x004c, 0x0000, 0x0051, 0x0051, 0x0051, 0x0051, 0x0000, 0x0056,
|
||||
0x0000, 0x0058, 0x0000, 0x005a, 0x0000, 0x005c, 0x005c, 0x0000,
|
||||
0x005f, 0x0000, 0x0061, 0x0000, 0x0063, 0x0000, 0x0065, 0x0065,
|
||||
0x0000, 0x0068, 0x0000, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a,
|
||||
0x006a, 0x006a, 0x0000, 0x0072, 0x0000, 0x0074, 0x0000, 0x0076,
|
||||
0x0000, 0x0000, 0x0079, 0x0000, 0x007b, 0x0000, 0x007d, 0x0000,
|
||||
// Entry 80 - BF
|
||||
0x0000, 0x0080, 0x0080, 0x0000, 0x0083, 0x0084, 0x0084, 0x0084,
|
||||
0x0083, 0x0085, 0x0084, 0x0084, 0x0084, 0x0083, 0x0084, 0x0084,
|
||||
0x0084, 0x0084, 0x0084, 0x0084, 0x0085, 0x0084, 0x0084, 0x0084,
|
||||
0x0084, 0x0085, 0x0084, 0x0085, 0x0084, 0x0084, 0x0085, 0x0084,
|
||||
0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
|
||||
0x0083, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
|
||||
0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
|
||||
0x0084, 0x0084, 0x0083, 0x0084, 0x0083, 0x0084, 0x0084, 0x0084,
|
||||
0x007f, 0x007f, 0x0000, 0x0082, 0x0082, 0x0000, 0x0085, 0x0086,
|
||||
0x0086, 0x0086, 0x0085, 0x0087, 0x0086, 0x0086, 0x0086, 0x0085,
|
||||
0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0087, 0x0086,
|
||||
0x0086, 0x0086, 0x0086, 0x0087, 0x0086, 0x0087, 0x0086, 0x0086,
|
||||
0x0087, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
|
||||
0x0086, 0x0086, 0x0085, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
|
||||
0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
|
||||
0x0086, 0x0086, 0x0086, 0x0086, 0x0085, 0x0086, 0x0085, 0x0086,
|
||||
// Entry C0 - FF
|
||||
0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0085, 0x0084, 0x0084,
|
||||
0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0083, 0x0084, 0x0084,
|
||||
0x0084, 0x0084, 0x0084, 0x0085, 0x0084, 0x0084, 0x0085, 0x0084,
|
||||
0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
|
||||
0x0084, 0x0084, 0x0083, 0x0083, 0x0084, 0x0084, 0x0083, 0x0084,
|
||||
0x0084, 0x0084, 0x0084, 0x0084, 0x0000, 0x00ec, 0x0000, 0x00ee,
|
||||
0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef,
|
||||
0x00ee, 0x00ef, 0x00ee, 0x00ee, 0x00ef, 0x00ef, 0x00ee, 0x00ef,
|
||||
0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0087,
|
||||
0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0085,
|
||||
0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0087, 0x0086, 0x0086,
|
||||
0x0087, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
|
||||
0x0086, 0x0086, 0x0086, 0x0086, 0x0085, 0x0085, 0x0086, 0x0086,
|
||||
0x0085, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0000, 0x00ee,
|
||||
0x0000, 0x00f0, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1,
|
||||
0x00f1, 0x00f1, 0x00f0, 0x00f1, 0x00f0, 0x00f0, 0x00f1, 0x00f1,
|
||||
// Entry 100 - 13F
|
||||
0x00ef, 0x00ef, 0x00ef, 0x00ee, 0x00ef, 0x00ef, 0x00ef, 0x00ef,
|
||||
0x00ef, 0x00ef, 0x0000, 0x010a, 0x0000, 0x010c, 0x0000, 0x010e,
|
||||
0x0000, 0x0110, 0x0110, 0x0000, 0x0113, 0x0113, 0x0113, 0x0113,
|
||||
0x0000, 0x0118, 0x0000, 0x011a, 0x0000, 0x011c, 0x011c, 0x0000,
|
||||
0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f,
|
||||
0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f,
|
||||
0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f,
|
||||
0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f,
|
||||
0x00f0, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f0, 0x00f1, 0x00f1,
|
||||
0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x0000, 0x010c, 0x0000, 0x010e,
|
||||
0x0000, 0x0110, 0x0000, 0x0112, 0x0112, 0x0000, 0x0115, 0x0115,
|
||||
0x0115, 0x0115, 0x0000, 0x011a, 0x0000, 0x011c, 0x0000, 0x011e,
|
||||
0x011e, 0x0000, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121,
|
||||
0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121,
|
||||
0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121,
|
||||
0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121,
|
||||
// Entry 140 - 17F
|
||||
0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f,
|
||||
0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x0000, 0x014e,
|
||||
0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121,
|
||||
0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121,
|
||||
0x0000, 0x0150, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156,
|
||||
0x0000, 0x0158, 0x0158, 0x0158, 0x0000, 0x015c, 0x0000, 0x0000,
|
||||
0x015f, 0x0000, 0x0161, 0x0000, 0x0163, 0x0163, 0x0163, 0x0000,
|
||||
0x0167, 0x0000, 0x0169, 0x0000, 0x016b, 0x0000, 0x016d, 0x016d,
|
||||
0x0000, 0x0170, 0x0000, 0x0172, 0x0000, 0x0174, 0x0000, 0x0176,
|
||||
0x0000, 0x0158, 0x0000, 0x015a, 0x015a, 0x015a, 0x0000, 0x015e,
|
||||
0x0000, 0x0000, 0x0161, 0x0000, 0x0163, 0x0000, 0x0165, 0x0165,
|
||||
0x0165, 0x0000, 0x0169, 0x0000, 0x016b, 0x0000, 0x016d, 0x0000,
|
||||
0x016f, 0x016f, 0x0000, 0x0172, 0x0000, 0x0174, 0x0000, 0x0176,
|
||||
0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e,
|
||||
// Entry 180 - 1BF
|
||||
0x017e, 0x017e, 0x0000, 0x0000, 0x0183, 0x0000, 0x0000, 0x0186,
|
||||
0x0000, 0x0188, 0x0000, 0x0000, 0x018b, 0x0000, 0x018d, 0x0000,
|
||||
0x0000, 0x0190, 0x0000, 0x0000, 0x0193, 0x0000, 0x0195, 0x0000,
|
||||
0x0000, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0185, 0x0000,
|
||||
0x0000, 0x0188, 0x0000, 0x018a, 0x0000, 0x0000, 0x018d, 0x0000,
|
||||
0x018f, 0x0000, 0x0000, 0x0192, 0x0000, 0x0000, 0x0195, 0x0000,
|
||||
0x0197, 0x0000, 0x0199, 0x0000, 0x019b, 0x0000, 0x019d, 0x0000,
|
||||
0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000,
|
||||
0x01a7, 0x01a7, 0x0000, 0x01aa, 0x0000, 0x01ac, 0x0000, 0x01ae,
|
||||
0x0000, 0x01b0, 0x0000, 0x01b2, 0x0000, 0x0000, 0x01b5, 0x0000,
|
||||
0x01a7, 0x0000, 0x01a9, 0x01a9, 0x0000, 0x01ac, 0x0000, 0x01ae,
|
||||
0x0000, 0x01b0, 0x0000, 0x01b2, 0x0000, 0x01b4, 0x0000, 0x0000,
|
||||
0x01b7, 0x0000, 0x01b9, 0x0000, 0x01bb, 0x0000, 0x01bd, 0x0000,
|
||||
// Entry 1C0 - 1FF
|
||||
0x01bf, 0x0000, 0x01c1, 0x01c1, 0x01c1, 0x01c1, 0x0000, 0x01c6,
|
||||
0x0000, 0x01c8, 0x01c8, 0x0000, 0x01cb, 0x0000, 0x01cd, 0x0000,
|
||||
0x01cf, 0x0000, 0x01d1, 0x0000, 0x01d3, 0x0000, 0x01d5, 0x01d5,
|
||||
0x0000, 0x01d8, 0x0000, 0x01da, 0x0000, 0x01dc, 0x0000, 0x01de,
|
||||
0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x01c3, 0x01c3, 0x01c3,
|
||||
0x0000, 0x01c8, 0x0000, 0x01ca, 0x01ca, 0x0000, 0x01cd, 0x0000,
|
||||
0x01cf, 0x0000, 0x01d1, 0x0000, 0x01d3, 0x0000, 0x01d5, 0x0000,
|
||||
0x01d7, 0x01d7, 0x0000, 0x01da, 0x0000, 0x01dc, 0x0000, 0x01de,
|
||||
0x0000, 0x01e0, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6,
|
||||
0x0000, 0x01e8, 0x0000, 0x01ea, 0x01ea, 0x01ea, 0x0000, 0x01ee,
|
||||
0x0000, 0x01f0, 0x0000, 0x01f2, 0x0000, 0x01f4, 0x0000, 0x0000,
|
||||
0x01f7, 0x0000, 0x01f9, 0x01f9, 0x0000, 0x01fc, 0x0000, 0x01fe,
|
||||
0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x01ec, 0x01ec,
|
||||
0x0000, 0x01f0, 0x0000, 0x01f2, 0x0000, 0x01f4, 0x0000, 0x01f6,
|
||||
0x0000, 0x0000, 0x01f9, 0x0000, 0x01fb, 0x01fb, 0x0000, 0x01fe,
|
||||
// Entry 200 - 23F
|
||||
0x01fe, 0x0000, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201,
|
||||
0x0201, 0x0000, 0x0209, 0x0000, 0x020b, 0x0000, 0x020d, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0213, 0x0000, 0x0000, 0x0216,
|
||||
0x0000, 0x0218, 0x0218, 0x0000, 0x021b, 0x0000, 0x021d, 0x021d,
|
||||
0x0000, 0x0000, 0x0221, 0x0220, 0x0220, 0x0000, 0x0000, 0x0226,
|
||||
0x0000, 0x0228, 0x0000, 0x022a, 0x0000, 0x0236, 0x022c, 0x0236,
|
||||
0x0236, 0x0236, 0x0236, 0x0236, 0x0236, 0x0236, 0x022c, 0x0236,
|
||||
0x0236, 0x0000, 0x0239, 0x0239, 0x0239, 0x0000, 0x023d, 0x0000,
|
||||
0x0000, 0x0200, 0x0200, 0x0000, 0x0203, 0x0203, 0x0000, 0x0206,
|
||||
0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0000, 0x020e,
|
||||
0x0000, 0x0210, 0x0000, 0x0212, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0218, 0x0000, 0x0000, 0x021b, 0x0000, 0x021d, 0x021d,
|
||||
0x0000, 0x0220, 0x0000, 0x0222, 0x0222, 0x0000, 0x0000, 0x0226,
|
||||
0x0225, 0x0225, 0x0000, 0x0000, 0x022b, 0x0000, 0x022d, 0x0000,
|
||||
0x022f, 0x0000, 0x023b, 0x0231, 0x023b, 0x023b, 0x023b, 0x023b,
|
||||
0x023b, 0x023b, 0x023b, 0x0231, 0x023b, 0x023b, 0x0000, 0x023e,
|
||||
// Entry 240 - 27F
|
||||
0x023f, 0x0000, 0x0241, 0x0241, 0x0000, 0x0244, 0x0000, 0x0246,
|
||||
0x0246, 0x0246, 0x0246, 0x0246, 0x0246, 0x0000, 0x024d, 0x0000,
|
||||
0x024f, 0x0000, 0x0251, 0x0000, 0x0253, 0x0000, 0x0255, 0x0000,
|
||||
0x0000, 0x0258, 0x0258, 0x0258, 0x0000, 0x025c, 0x0000, 0x025e,
|
||||
0x0000, 0x0260, 0x0000, 0x0000, 0x0263, 0x0262, 0x0262, 0x0000,
|
||||
0x0267, 0x0000, 0x0269, 0x0000, 0x026b, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0270, 0x0000, 0x0000, 0x0273, 0x0000, 0x0275, 0x0275,
|
||||
0x0275, 0x0275, 0x0000, 0x027a, 0x027a, 0x027a, 0x0000, 0x027e,
|
||||
0x023e, 0x023e, 0x0000, 0x0242, 0x0000, 0x0244, 0x0000, 0x0246,
|
||||
0x0246, 0x0000, 0x0249, 0x0000, 0x024b, 0x024b, 0x024b, 0x024b,
|
||||
0x024b, 0x024b, 0x0000, 0x0252, 0x0000, 0x0254, 0x0000, 0x0256,
|
||||
0x0000, 0x0258, 0x0000, 0x025a, 0x0000, 0x0000, 0x025d, 0x025d,
|
||||
0x025d, 0x0000, 0x0261, 0x0000, 0x0263, 0x0000, 0x0265, 0x0000,
|
||||
0x0000, 0x0268, 0x0267, 0x0267, 0x0000, 0x026c, 0x0000, 0x026e,
|
||||
0x0000, 0x0270, 0x0000, 0x0000, 0x0000, 0x0000, 0x0275, 0x0000,
|
||||
0x0000, 0x0278, 0x0000, 0x027a, 0x027a, 0x027a, 0x027a, 0x0000,
|
||||
// Entry 280 - 2BF
|
||||
0x027e, 0x027e, 0x027e, 0x027e, 0x0000, 0x0284, 0x0284, 0x0284,
|
||||
0x0284, 0x0000, 0x0000, 0x0000, 0x0000, 0x028c, 0x028c, 0x028c,
|
||||
0x0000, 0x0290, 0x0290, 0x0290, 0x0290, 0x0000, 0x0000, 0x0296,
|
||||
0x0296, 0x0296, 0x0296, 0x0000, 0x029b, 0x0000, 0x029d, 0x029d,
|
||||
0x0000, 0x02a0, 0x0000, 0x02a2, 0x02a2, 0x0000, 0x0000, 0x02a6,
|
||||
0x0000, 0x0000, 0x02a9, 0x0000, 0x02ab, 0x02ab, 0x0000, 0x0000,
|
||||
0x02af, 0x0000, 0x02b1, 0x0000, 0x02b3, 0x0000, 0x02b5, 0x0000,
|
||||
0x02b7, 0x02b7, 0x0000, 0x0000, 0x02bb, 0x0000, 0x02bd, 0x02ba,
|
||||
0x027f, 0x027f, 0x027f, 0x0000, 0x0283, 0x0283, 0x0283, 0x0283,
|
||||
0x0283, 0x0000, 0x0289, 0x0289, 0x0289, 0x0289, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0291, 0x0291, 0x0291, 0x0000, 0x0295, 0x0295,
|
||||
0x0295, 0x0295, 0x0000, 0x0000, 0x029b, 0x029b, 0x029b, 0x029b,
|
||||
0x0000, 0x02a0, 0x0000, 0x02a2, 0x02a2, 0x0000, 0x02a5, 0x0000,
|
||||
0x02a7, 0x02a7, 0x0000, 0x0000, 0x02ab, 0x0000, 0x0000, 0x02ae,
|
||||
0x0000, 0x02b0, 0x02b0, 0x0000, 0x0000, 0x02b4, 0x0000, 0x02b6,
|
||||
0x0000, 0x02b8, 0x0000, 0x02ba, 0x0000, 0x02bc, 0x02bc, 0x0000,
|
||||
// Entry 2C0 - 2FF
|
||||
0x02ba, 0x0000, 0x0000, 0x02c2, 0x02c1, 0x02c1, 0x0000, 0x0000,
|
||||
0x02c7, 0x0000, 0x02c9, 0x0000, 0x02cb, 0x0000, 0x0000, 0x02ce,
|
||||
0x0000, 0x0000, 0x0000, 0x02d2, 0x0000, 0x02d4, 0x0000, 0x02d6,
|
||||
0x0000, 0x02d8, 0x02d8, 0x0000, 0x02db, 0x0000, 0x02dd, 0x0000,
|
||||
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x0000, 0x02e5, 0x02e6,
|
||||
0x02e5, 0x0000, 0x02e9,
|
||||
} // Size: 1518 bytes
|
||||
0x0000, 0x02c0, 0x0000, 0x02c2, 0x02bf, 0x02bf, 0x0000, 0x0000,
|
||||
0x02c7, 0x02c6, 0x02c6, 0x0000, 0x0000, 0x02cc, 0x0000, 0x02ce,
|
||||
0x0000, 0x02d0, 0x0000, 0x0000, 0x02d3, 0x0000, 0x0000, 0x0000,
|
||||
0x02d7, 0x0000, 0x02d9, 0x0000, 0x02db, 0x0000, 0x02dd, 0x02dd,
|
||||
0x0000, 0x02e0, 0x0000, 0x02e2, 0x0000, 0x02e4, 0x02e4, 0x02e4,
|
||||
0x02e4, 0x02e4, 0x0000, 0x02ea, 0x02eb, 0x02ea, 0x0000, 0x02ee,
|
||||
} // Size: 1528 bytes
|
||||
|
||||
// Total table size 1518 bytes (1KiB); checksum: 836CD65C
|
||||
// Total table size 1528 bytes (1KiB); checksum: B99CF952
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
"testing"
|
||||
"unicode"
|
||||
|
||||
"golang.org/x/text/internal/testtext"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
|
@ -37,14 +38,16 @@ func TestValues(t *testing.T) {
|
|||
// checkDefined checks that a value exists in a Namer.
|
||||
checkDefined := func(x interface{}, namers []testcase) {
|
||||
for _, n := range namers {
|
||||
if n.n.Name(x) == "" {
|
||||
// As of version 28 there is no data for az-Arab in English,
|
||||
// although there is useful data in other languages.
|
||||
if x.(fmt.Stringer).String() == "az-Arab" {
|
||||
continue
|
||||
testtext.Run(t, fmt.Sprintf("%s.Name(%s)", n.kind, x), func(t *testing.T) {
|
||||
if n.n.Name(x) == "" {
|
||||
// As of version 28 there is no data for az-Arab in English,
|
||||
// although there is useful data in other languages.
|
||||
if x.(fmt.Stringer).String() == "az-Arab" {
|
||||
return
|
||||
}
|
||||
t.Errorf("supported but no result")
|
||||
}
|
||||
t.Errorf("%s.Name(%s): supported but no result", n.kind, x)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
// checkUnsupported checks that a value does not exist in a Namer.
|
||||
|
@ -325,7 +328,12 @@ func TestTag(t *testing.T) {
|
|||
}{
|
||||
{"agq", "sr", ""}, // sr is in Value.Languages(), but is not supported by agq.
|
||||
{"nl", "nl", "Nederlands"},
|
||||
{"nl", "nl-BE", "Vlaams"},
|
||||
// CLDR 30 dropped Vlaams as the word for nl-BE. It is still called
|
||||
// Flemish in English, though. TODO: check if this is a CLDR bug.
|
||||
// {"nl", "nl-BE", "Vlaams"},
|
||||
{"nl", "nl-BE", "Nederlands (België)"},
|
||||
{"nl", "vls", "West-Vlaams"},
|
||||
{"en", "nl-BE", "Flemish"},
|
||||
{"en", "en", "English"},
|
||||
{"en", "en-GB", "British English"},
|
||||
{"en", "en-US", "American English"}, // American English in CLDR 24+
|
||||
|
@ -357,7 +365,7 @@ func TestTag(t *testing.T) {
|
|||
// also give results more in line with the expectations if users
|
||||
// explicitly use "sh".
|
||||
{"sr-Latn", "sr-ME", "srpski (Crna Gora)"},
|
||||
{"sr-Latn", "sr-Latn-ME", "Srpskohrvatski (Crna Gora)"},
|
||||
{"sr-Latn", "sr-Latn-ME", "srpskohrvatski (Crna Gora)"},
|
||||
// Double script and region
|
||||
{"nl", "en-Cyrl-BE", "Engels (Cyrillisch, België)"},
|
||||
// Canonical equivalents.
|
||||
|
@ -384,8 +392,14 @@ func TestLanguage(t *testing.T) {
|
|||
name string
|
||||
}{
|
||||
{"agq", "sr", ""}, // sr is in Value.Languages(), but is not supported by agq.
|
||||
// CLDR 30 dropped Vlaams as the word for nl-BE. It is still called
|
||||
// Flemish in English, though. TODO: this is probably incorrect.
|
||||
// West-Vlaams (vls) is not Vlaams. West-Vlaams could be considered its
|
||||
// own language, whereas Vlaams is generally Dutch. So expect to have
|
||||
// to change these tests back.
|
||||
{"nl", "nl", "Nederlands"},
|
||||
{"nl", "nl-BE", "Vlaams"},
|
||||
{"nl", "vls", "West-Vlaams"},
|
||||
{"nl", "nl-BE", "Nederlands"},
|
||||
{"en", "pt", "Portuguese"},
|
||||
{"en", "pt-PT", "European Portuguese"},
|
||||
{"en", "pt-BR", "Brazilian Portuguese"},
|
||||
|
@ -418,15 +432,17 @@ func TestLanguage(t *testing.T) {
|
|||
{"en", "sr-Latn-ME", "Serbo-Croatian"}, // See comments in TestTag.
|
||||
}
|
||||
for i, tt := range tests {
|
||||
d := Languages(language.Raw.MustParse(tt.dict))
|
||||
if n := d.Name(language.Raw.MustParse(tt.tag)); n != tt.name {
|
||||
t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.tag, n, tt.name)
|
||||
}
|
||||
if len(tt.tag) <= 3 {
|
||||
if n := d.Name(language.MustParseBase(tt.tag)); n != tt.name {
|
||||
t.Errorf("%d:%s:base(%s): was %q; want %q", i, tt.dict, tt.tag, n, tt.name)
|
||||
testtext.Run(t, tt.dict+"/"+tt.tag, func(t *testing.T) {
|
||||
d := Languages(language.Raw.MustParse(tt.dict))
|
||||
if n := d.Name(language.Raw.MustParse(tt.tag)); n != tt.name {
|
||||
t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.tag, n, tt.name)
|
||||
}
|
||||
}
|
||||
if len(tt.tag) <= 3 {
|
||||
if n := d.Name(language.MustParseBase(tt.tag)); n != tt.name {
|
||||
t.Errorf("%d:%s:base(%s): was %q; want %q", i, tt.dict, tt.tag, n, tt.name)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -440,7 +456,7 @@ func TestScript(t *testing.T) {
|
|||
{"en", "Arab", "Arabic"},
|
||||
{"en", "Zzzz", "Unknown Script"},
|
||||
{"zh-Hant", "Hang", "韓文字"},
|
||||
{"zh-Hant-HK", "Hang", "韓文字母"},
|
||||
{"zh-Hant-HK", "Hang", "韓文字"},
|
||||
{"zh", "Arab", "阿拉伯文"},
|
||||
{"zh-Hans-HK", "Arab", "阿拉伯文"}, // same as zh
|
||||
{"zh-Hant", "Arab", "阿拉伯文"},
|
||||
|
@ -516,7 +532,10 @@ func TestSelf(t *testing.T) {
|
|||
name string
|
||||
}{
|
||||
{"nl", "Nederlands"},
|
||||
{"nl-BE", "Vlaams"},
|
||||
// CLDR 30 dropped Vlaams as the word for nl-BE. It is still called
|
||||
// Flemish in English, though. TODO: check if this is a CLDR bug.
|
||||
// {"nl-BE", "Vlaams"},
|
||||
{"nl-BE", "Nederlands"},
|
||||
{"en-GB", "British English"},
|
||||
{lastLang2zu.String(), "isiZulu"},
|
||||
{firstLang2aa.String(), ""}, // not defined
|
||||
|
@ -552,7 +571,7 @@ func TestSelf(t *testing.T) {
|
|||
// Chinese. We can hardwire this case in the table generator or package
|
||||
// code, but we first check if CLDR can be updated.
|
||||
// {"sr-ME", "Srpski"}, // Is Srpskohrvatski
|
||||
{"sr-Latn-ME", "Srpskohrvatski"},
|
||||
{"sr-Latn-ME", "srpskohrvatski"},
|
||||
{"sr-Cyrl-ME", "српски"},
|
||||
{"sr-NL", "српски"},
|
||||
// Canonical equivalents.
|
||||
|
@ -579,7 +598,7 @@ func TestDictionaryLang(t *testing.T) {
|
|||
}{
|
||||
{English, "en", "English"},
|
||||
{Portuguese, "af", "africâner"},
|
||||
{EuropeanPortuguese, "af", "africânder"},
|
||||
{EuropeanPortuguese, "af", "africanês"},
|
||||
{English, "nl-BE", "Flemish"},
|
||||
}
|
||||
for i, test := range tests {
|
||||
|
|
|
@ -23,8 +23,15 @@ type namer interface {
|
|||
|
||||
func nameLanguage(n namer, x interface{}) string {
|
||||
t, _ := language.All.Compose(x)
|
||||
i, _, _ := langTagSet.index(t.Raw())
|
||||
return n.name(i)
|
||||
for {
|
||||
i, _, _ := langTagSet.index(t.Raw())
|
||||
if s := n.name(i); s != "" {
|
||||
return s
|
||||
}
|
||||
if t = t.Parent(); t == language.Und {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func nameScript(n namer, x interface{}) string {
|
||||
|
@ -48,30 +55,36 @@ func nameTag(langN, scrN, regN namer, x interface{}) string {
|
|||
if c, err := form.Canonicalize(t); err == nil {
|
||||
t = c
|
||||
}
|
||||
_, sRaw, rRaw := t.Raw()
|
||||
i, scr, reg := langTagSet.index(t.Raw())
|
||||
if i == -1 {
|
||||
return ""
|
||||
for i != -1 {
|
||||
if str := langN.name(i); str != "" {
|
||||
if hasS, hasR := (scr != language.Script{}), (reg != language.Region{}); hasS || hasR {
|
||||
ss, sr := "", ""
|
||||
if hasS {
|
||||
ss = scrN.name(scriptIndex.index(scr.String()))
|
||||
}
|
||||
if hasR {
|
||||
sr = regN.name(regionIndex.index(reg.String()))
|
||||
}
|
||||
// TODO: use patterns in CLDR or at least confirm they are the
|
||||
// same for all languages.
|
||||
if ss != "" && sr != "" {
|
||||
return fmt.Sprintf("%s (%s, %s)", str, ss, sr)
|
||||
}
|
||||
if ss != "" || sr != "" {
|
||||
return fmt.Sprintf("%s (%s%s)", str, ss, sr)
|
||||
}
|
||||
}
|
||||
return str
|
||||
}
|
||||
scr, reg = sRaw, rRaw
|
||||
if t = t.Parent(); t == language.Und {
|
||||
return ""
|
||||
}
|
||||
i, _, _ = langTagSet.index(t.Raw())
|
||||
}
|
||||
|
||||
str := langN.name(i)
|
||||
if hasS, hasR := (scr != language.Script{}), (reg != language.Region{}); hasS || hasR {
|
||||
ss, sr := "", ""
|
||||
if hasS {
|
||||
ss = scrN.name(scriptIndex.index(scr.String()))
|
||||
}
|
||||
if hasR {
|
||||
sr = regN.name(regionIndex.index(reg.String()))
|
||||
}
|
||||
// TODO: use patterns in CLDR or at least confirm they are the same for
|
||||
// all languages.
|
||||
if ss != "" && sr != "" {
|
||||
return fmt.Sprintf("%s (%s, %s)", str, ss, sr)
|
||||
}
|
||||
if ss != "" || sr != "" {
|
||||
return fmt.Sprintf("%s (%s%s)", str, ss, sr)
|
||||
}
|
||||
}
|
||||
return str
|
||||
return ""
|
||||
}
|
||||
|
||||
// header contains the data and indexes for a single namer.
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
1501
language/index.go
1501
language/index.go
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -91,11 +91,11 @@ func TestCompactIndex(t *testing.T) {
|
|||
{"ca-ES-valencia-u-co-phonebk", 1, true},
|
||||
{"ca-ES-valencia-u-co-phonebk-va-posix", 0, false},
|
||||
{"x-klingon", 0, false},
|
||||
{"en-US", 227, true},
|
||||
{"en-US", 229, true},
|
||||
{"en-US-u-va-posix", 2, true},
|
||||
{"en", 131, true},
|
||||
{"en-u-co-phonebk", 131, true},
|
||||
{"en-001", 132, true},
|
||||
{"en", 133, true},
|
||||
{"en-u-co-phonebk", 133, true},
|
||||
{"en-001", 134, true},
|
||||
{"sh", 0, false}, // We don't normalize.
|
||||
}
|
||||
for _, tt := range tests {
|
||||
|
|
|
@ -678,6 +678,8 @@ func (b *builder) parseIndices() {
|
|||
b.locale.parse(meta.DefaultContent.Locales)
|
||||
}
|
||||
|
||||
// TODO: region inclusion data will probably not be use used in future matchers.
|
||||
|
||||
func (b *builder) computeRegionGroups() {
|
||||
b.groups = make(map[int]index)
|
||||
|
||||
|
@ -686,6 +688,11 @@ func (b *builder) computeRegionGroups() {
|
|||
b.groups[i] = index(len(b.groups))
|
||||
}
|
||||
for _, g := range b.supp.TerritoryContainment.Group {
|
||||
// Skip UN and EURO zone as they are flattening the containment
|
||||
// relationship.
|
||||
if g.Type == "EZ" || g.Type == "UN" {
|
||||
continue
|
||||
}
|
||||
group := b.region.index(g.Type)
|
||||
if _, ok := b.groups[group]; !ok {
|
||||
b.groups[group] = index(len(b.groups))
|
||||
|
@ -1483,6 +1490,11 @@ func (b *builder) writeRegionInclusionData() {
|
|||
containment = make(map[index][]index)
|
||||
)
|
||||
for _, g := range b.supp.TerritoryContainment.Group {
|
||||
// Skip UN and EURO zone as they are flattening the containment
|
||||
// relationship.
|
||||
if g.Type == "EZ" || g.Type == "UN" {
|
||||
continue
|
||||
}
|
||||
group := b.region.index(g.Type)
|
||||
groupIdx := b.groups[group]
|
||||
for _, mem := range strings.Split(g.Contains, " ") {
|
||||
|
|
|
@ -188,11 +188,13 @@ func TestRegionDistance(t *testing.T) {
|
|||
{"ZZ", "QQ", 2},
|
||||
}
|
||||
for i, tt := range tests {
|
||||
ra, _ := getRegionID([]byte(tt.a))
|
||||
rb, _ := getRegionID([]byte(tt.b))
|
||||
if d := regionDistance(ra, rb); d != tt.d {
|
||||
t.Errorf("%d: d(%s, %s) = %v; want %v", i, tt.a, tt.b, d, tt.d)
|
||||
}
|
||||
testtext.Run(t, tt.a+"/"+tt.b, func(t *testing.T) {
|
||||
ra, _ := getRegionID([]byte(tt.a))
|
||||
rb, _ := getRegionID([]byte(tt.b))
|
||||
if d := regionDistance(ra, rb); d != tt.d {
|
||||
t.Errorf("%d: d(%s, %s) = %v; want %v", i, tt.a, tt.b, d, tt.d)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
4527
language/tables.go
4527
language/tables.go
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -185,6 +185,11 @@ type SupplementalData struct {
|
|||
Day string `xml:"day,attr"`
|
||||
Territories string `xml:"territories,attr"`
|
||||
} `xml:"weekendEnd"`
|
||||
WeekOfPreference []*struct {
|
||||
Common
|
||||
Locales string `xml:"locales,attr"`
|
||||
Ordering string `xml:"ordering,attr"`
|
||||
} `xml:"weekOfPreference"`
|
||||
} `xml:"weekData"`
|
||||
TimeData *struct {
|
||||
Common
|
||||
|
@ -731,6 +736,7 @@ type LDML struct {
|
|||
Count string `xml:"count,attr"`
|
||||
} `xml:"relativeTimePattern"`
|
||||
} `xml:"relativeTime"`
|
||||
RelativePeriod []*Common `xml:"relativePeriod"`
|
||||
} `xml:"field"`
|
||||
} `xml:"fields"`
|
||||
TimeZoneNames *TimeZoneNames `xml:"timeZoneNames"`
|
||||
|
@ -801,6 +807,14 @@ type LDML struct {
|
|||
Noexpr []*Common `xml:"noexpr"`
|
||||
} `xml:"messages"`
|
||||
} `xml:"posix"`
|
||||
CharacterLabels *struct {
|
||||
Common
|
||||
CharacterLabelPattern []*struct {
|
||||
Common
|
||||
Count string `xml:"count,attr"`
|
||||
} `xml:"characterLabelPattern"`
|
||||
CharacterLabel []*Common `xml:"characterLabel"`
|
||||
} `xml:"characterLabels"`
|
||||
Segmentations *struct {
|
||||
Common
|
||||
Segmentation []*struct {
|
||||
|
@ -1096,7 +1110,8 @@ type Calendar struct {
|
|||
Common
|
||||
DateFormatItem []*struct {
|
||||
Common
|
||||
Id string `xml:"id,attr"`
|
||||
Id string `xml:"id,attr"`
|
||||
Count string `xml:"count,attr"`
|
||||
} `xml:"dateFormatItem"`
|
||||
} `xml:"availableFormats"`
|
||||
AppendItems []*struct {
|
||||
|
@ -1135,6 +1150,7 @@ type Calendar struct {
|
|||
Count string `xml:"count,attr"`
|
||||
} `xml:"relativeTimePattern"`
|
||||
} `xml:"relativeTime"`
|
||||
RelativePeriod []*Common `xml:"relativePeriod"`
|
||||
} `xml:"field"`
|
||||
} `xml:"fields"`
|
||||
}
|
||||
|
@ -1437,4 +1453,4 @@ type Numbers struct {
|
|||
}
|
||||
|
||||
// Version is the version of CLDR from which the XML definitions are generated.
|
||||
const Version = "29"
|
||||
const Version = "30"
|
||||
|
|
Загрузка…
Ссылка в новой задаче