mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 21:29:06 +00:00
Meta+LibUnicode+LibJS: Upgrade to ICU 76.1
This updates our local ICU overlay port to use ICU 76.1. This includes Unicode 16 and CLDR 46. Upstream vcpkg is not able to supply versions past 74 yet due to various dependency issues, but we are able to use this version ourselves. The overlay port now includes a patch to revert ICU's dependence on autoconf 2.72 for now, as this version is not yet available on all systems. All of the test changes were cross-referenced with Firefox to ensure correctness.
This commit is contained in:
parent
0763997591
commit
6a564376fc
Notes:
github-actions[bot]
2025-01-18 22:57:42 +00:00
Author: https://github.com/trflynn89
Commit: 6a564376fc
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3295
Reviewed-by: https://github.com/shannonbooth ✅
13 changed files with 95 additions and 52 deletions
|
@ -308,9 +308,9 @@ describe("day", () => {
|
|||
describe("dayPeriod", () => {
|
||||
// prettier-ignore
|
||||
const data = [
|
||||
{ dayPeriod: "narrow", en0: "5 in the afternoon", en1: "7 in the morning", ar0: "٥ بعد الظهر", ar1: "٧ صباحًا", as0: "অপৰাহ্ন ৫", as1: "পূৰ্বাহ্ন ৭"},
|
||||
{ dayPeriod: "short", en0: "5 in the afternoon", en1: "7 in the morning", ar0: "٥ بعد الظهر", ar1: "٧ ص", as0: "অপৰাহ্ন ৫", as1: "পূৰ্বাহ্ন ৭"},
|
||||
{ dayPeriod: "long", en0: "5 in the afternoon", en1: "7 in the morning", ar0: "٥ بعد الظهر", ar1: "٧ صباحًا", as0: "অপৰাহ্ন ৫", as1: "পূৰ্বাহ্ন ৭"},
|
||||
{ dayPeriod: "narrow", en0: "5 in the afternoon", en1: "7 in the morning", ar0: "٥ بعد الظهر", ar1: "٧ صباحًا", as0: "pm ৫", as1: "am ৭"},
|
||||
{ dayPeriod: "short", en0: "5 in the afternoon", en1: "7 in the morning", ar0: "٥ بعد الظهر", ar1: "٧ ص", as0: "PM ৫", as1: "AM ৭"},
|
||||
{ dayPeriod: "long", en0: "5 in the afternoon", en1: "7 in the morning", ar0: "٥ بعد الظهر", ar1: "٧ صباحًا", as0: "PM ৫", as1: "AM ৭"},
|
||||
];
|
||||
|
||||
test("all", () => {
|
||||
|
@ -404,9 +404,9 @@ describe("dayPeriod", () => {
|
|||
test("dayPeriod without time", () => {
|
||||
// prettier-ignore
|
||||
const data = [
|
||||
{ dayPeriod: "narrow", en0: "in the afternoon", en1: "in the morning", ar0: "بعد الظهر", ar1: "صباحًا", as0: "অপৰাহ্ন", as1: "পূৰ্বাহ্ন"},
|
||||
{ dayPeriod: "short", en0: "in the afternoon", en1: "in the morning", ar0: "بعد الظهر", ar1: "ص", as0: "অপৰাহ্ন", as1: "পূৰ্বাহ্ন"},
|
||||
{ dayPeriod: "long", en0: "in the afternoon", en1: "in the morning", ar0: "بعد الظهر", ar1: "صباحًا", as0: "অপৰাহ্ন", as1: "পূৰ্বাহ্ন"},
|
||||
{ dayPeriod: "narrow", en0: "in the afternoon", en1: "in the morning", ar0: "بعد الظهر", ar1: "صباحًا", as0: "pm", as1: "am"},
|
||||
{ dayPeriod: "short", en0: "in the afternoon", en1: "in the morning", ar0: "بعد الظهر", ar1: "ص", as0: "PM", as1: "AM"},
|
||||
{ dayPeriod: "long", en0: "in the afternoon", en1: "in the morning", ar0: "بعد الظهر", ar1: "صباحًا", as0: "PM", as1: "AM"},
|
||||
];
|
||||
|
||||
data.forEach(d => {
|
||||
|
|
|
@ -124,13 +124,13 @@ describe("correct behavior", () => {
|
|||
});
|
||||
|
||||
test("timeZone", () => {
|
||||
const en = new Intl.DateTimeFormat("en", { timeZone: "EST5EDT" });
|
||||
expect(en.resolvedOptions().timeZone).toBe("EST5EDT");
|
||||
const en = new Intl.DateTimeFormat("en", { timeZone: "America/New_York" });
|
||||
expect(en.resolvedOptions().timeZone).toBe("America/New_York");
|
||||
|
||||
const el = new Intl.DateTimeFormat("el", { timeZone: "UTC" });
|
||||
expect(el.resolvedOptions().timeZone).toBe("UTC");
|
||||
|
||||
["UTC", "EST5EDT", "+01:02", "-20:30", "+00:00"].forEach(timeZone => {
|
||||
["UTC", "America/New_York", "+01:02", "-20:30", "+00:00"].forEach(timeZone => {
|
||||
const en = new Intl.DateTimeFormat("en", { timeZone: timeZone });
|
||||
expect(en.resolvedOptions().timeZone).toBe(timeZone);
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ describe("correct behavior", () => {
|
|||
expect(es419.of("Latn")).toBe("latín");
|
||||
|
||||
const zhHant = new Intl.DisplayNames(["zh-Hant"], { type: "script" });
|
||||
expect(zhHant.of("Latn")).toBe("拉丁文");
|
||||
expect(zhHant.of("Latn")).toBe("拉丁字母");
|
||||
|
||||
expect(en.of("Aaaa")).toBe("Aaaa");
|
||||
expect(es419.of("Aaaa")).toBe("Aaaa");
|
||||
|
@ -211,14 +211,14 @@ describe("correct behavior", () => {
|
|||
test("option type dateTimeField, style long", () => {
|
||||
// prettier-ignore
|
||||
const data = [
|
||||
{ dateTimeField: "era", en: "era", es419: "era", zhHant: "年代" },
|
||||
{ dateTimeField: "era", en: "era", es419: "era", zhHant: "紀元" },
|
||||
{ dateTimeField: "year", en: "year", es419: "año", zhHant: "年" },
|
||||
{ dateTimeField: "quarter", en: "quarter", es419: "trimestre", zhHant: "季" },
|
||||
{ dateTimeField: "quarter", en: "quarter", es419: "trimestre", zhHant: "季度" },
|
||||
{ dateTimeField: "month", en: "month", es419: "mes", zhHant: "月" },
|
||||
{ dateTimeField: "weekOfYear", en: "week", es419: "semana", zhHant: "週" },
|
||||
{ dateTimeField: "weekday", en: "day of the week", es419: "día de la semana", zhHant: "週天" },
|
||||
{ dateTimeField: "weekday", en: "day of the week", es419: "día de la semana", zhHant: "星期" },
|
||||
{ dateTimeField: "day", en: "day", es419: "día", zhHant: "日" },
|
||||
{ dateTimeField: "dayPeriod", en: "AM/PM", es419: "a.m./p.m.", zhHant: "上午/下午" },
|
||||
{ dateTimeField: "dayPeriod", en: "AM/PM", es419: "a.m./p.m.", zhHant: "時段" },
|
||||
{ dateTimeField: "hour", en: "hour", es419: "hora", zhHant: "小時" },
|
||||
{ dateTimeField: "minute", en: "minute", es419: "minuto", zhHant: "分鐘" },
|
||||
{ dateTimeField: "second", en: "second", es419: "segundo", zhHant: "秒" },
|
||||
|
@ -239,16 +239,16 @@ describe("correct behavior", () => {
|
|||
test("option type dateTimeField, style short", () => {
|
||||
// prettier-ignore
|
||||
const data = [
|
||||
{ dateTimeField: "era", en: "era", es419: "era", zhHant: "年代" },
|
||||
{ dateTimeField: "era", en: "era", es419: "era", zhHant: "紀元" },
|
||||
{ dateTimeField: "year", en: "yr.", es419: "a", zhHant: "年" },
|
||||
{ dateTimeField: "quarter", en: "qtr.", es419: "trim.", zhHant: "季" },
|
||||
{ dateTimeField: "quarter", en: "qtr.", es419: "trim.", zhHant: "季度" },
|
||||
{ dateTimeField: "month", en: "mo.", es419: "m", zhHant: "月" },
|
||||
{ dateTimeField: "weekOfYear", en: "wk.", es419: "sem.", zhHant: "週" },
|
||||
{ dateTimeField: "weekday", en: "day of wk.", es419: "día de sem.", zhHant: "週天" },
|
||||
{ dateTimeField: "weekday", en: "day of wk.", es419: "día de sem.", zhHant: "星期" },
|
||||
{ dateTimeField: "day", en: "day", es419: "d", zhHant: "日" },
|
||||
{ dateTimeField: "dayPeriod", en: "AM/PM", es419: "a.m./p.m.", zhHant: "上午/下午" },
|
||||
{ dateTimeField: "hour", en: "hr.", es419: "h", zhHant: "小時" },
|
||||
{ dateTimeField: "minute", en: "min.", es419: "min", zhHant: "分鐘" },
|
||||
{ dateTimeField: "dayPeriod", en: "AM/PM", es419: "a.m./p.m.", zhHant: "時段" },
|
||||
{ dateTimeField: "hour", en: "hr.", es419: "h", zhHant: "時" },
|
||||
{ dateTimeField: "minute", en: "min.", es419: "min", zhHant: "分" },
|
||||
{ dateTimeField: "second", en: "sec.", es419: "s", zhHant: "秒" },
|
||||
{ dateTimeField: "timeZoneName", en: "zone", es419: "zona", zhHant: "時區" },
|
||||
];
|
||||
|
@ -267,16 +267,16 @@ describe("correct behavior", () => {
|
|||
test("option type dateTimeField, style narrow", () => {
|
||||
// prettier-ignore
|
||||
const data = [
|
||||
{ dateTimeField: "era", en: "era", es419: "era", zhHant: "年代" },
|
||||
{ dateTimeField: "era", en: "era", es419: "era", zhHant: "紀元" },
|
||||
{ dateTimeField: "year", en: "yr", es419: "a", zhHant: "年" },
|
||||
{ dateTimeField: "quarter", en: "qtr", es419: "trim.", zhHant: "季" },
|
||||
{ dateTimeField: "quarter", en: "qtr", es419: "trim.", zhHant: "季度" },
|
||||
{ dateTimeField: "month", en: "mo", es419: "m", zhHant: "月" },
|
||||
{ dateTimeField: "weekOfYear", en: "wk", es419: "sem.", zhHant: "週" },
|
||||
{ dateTimeField: "weekday", en: "day of wk.", es419: "día de sem.", zhHant: "週天" },
|
||||
{ dateTimeField: "weekday", en: "day of wk.", es419: "día de sem.", zhHant: "星期" },
|
||||
{ dateTimeField: "day", en: "day", es419: "d", zhHant: "日" },
|
||||
{ dateTimeField: "dayPeriod", en: "AM/PM", es419: "a.m./p.m.", zhHant: "上午/下午" },
|
||||
{ dateTimeField: "hour", en: "hr", es419: "h", zhHant: "小時" },
|
||||
{ dateTimeField: "minute", en: "min", es419: "min", zhHant: "分鐘" },
|
||||
{ dateTimeField: "dayPeriod", en: "AM/PM", es419: "a.m./p.m.", zhHant: "時段" },
|
||||
{ dateTimeField: "hour", en: "hr", es419: "h", zhHant: "時" },
|
||||
{ dateTimeField: "minute", en: "min", es419: "min", zhHant: "分" },
|
||||
{ dateTimeField: "second", en: "sec", es419: "s", zhHant: "秒" },
|
||||
{ dateTimeField: "timeZoneName", en: "zone", es419: "zona", zhHant: "時區" },
|
||||
];
|
||||
|
|
|
@ -24,9 +24,9 @@ describe("special values", () => {
|
|||
expect(en.format(undefined)).toBe("NaN");
|
||||
|
||||
const ar = new Intl.NumberFormat("ar-u-nu-arab");
|
||||
expect(ar.format()).toBe("ليس رقم");
|
||||
expect(ar.format(NaN)).toBe("ليس رقم");
|
||||
expect(ar.format(undefined)).toBe("ليس رقم");
|
||||
expect(ar.format()).toBe("ليس رقمًا");
|
||||
expect(ar.format(NaN)).toBe("ليس رقمًا");
|
||||
expect(ar.format(undefined)).toBe("ليس رقمًا");
|
||||
});
|
||||
|
||||
test("Infinity", () => {
|
||||
|
|
|
@ -20,9 +20,9 @@ describe("special values", () => {
|
|||
expect(en.formatToParts(undefined)).toEqual([{ type: "nan", value: "NaN" }]);
|
||||
|
||||
const ar = new Intl.NumberFormat("ar-u-nu-arab");
|
||||
expect(ar.formatToParts()).toEqual([{ type: "nan", value: "ليس رقم" }]);
|
||||
expect(ar.formatToParts(NaN)).toEqual([{ type: "nan", value: "ليس رقم" }]);
|
||||
expect(ar.formatToParts(undefined)).toEqual([{ type: "nan", value: "ليس رقم" }]);
|
||||
expect(ar.formatToParts()).toEqual([{ type: "nan", value: "ليس رقمًا" }]);
|
||||
expect(ar.formatToParts(NaN)).toEqual([{ type: "nan", value: "ليس رقمًا" }]);
|
||||
expect(ar.formatToParts(undefined)).toEqual([{ type: "nan", value: "ليس رقمًا" }]);
|
||||
});
|
||||
|
||||
test("Infinity", () => {
|
||||
|
|
|
@ -19,7 +19,7 @@ describe("special values", () => {
|
|||
test("NaN", () => {
|
||||
expect(NaN.toLocaleString()).toBe("NaN");
|
||||
expect(NaN.toLocaleString("en")).toBe("NaN");
|
||||
expect(NaN.toLocaleString("ar-u-nu-arab")).toBe("ليس رقم");
|
||||
expect(NaN.toLocaleString("ar-u-nu-arab")).toBe("ليس رقمًا");
|
||||
});
|
||||
|
||||
test("Infinity", () => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue