diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.cpp b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.cpp index 397dcd41cb9..3e067c17d13 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/Intl/DisplayNamesPrototype.cpp @@ -77,6 +77,7 @@ JS_DEFINE_NATIVE_FUNCTION(DisplayNamesPrototype::of) switch (display_names->type()) { case DisplayNames::Type::Language: + result = Unicode::get_locale_language_mapping(display_names->locale(), code.as_string().string()); break; case DisplayNames::Type::Region: result = Unicode::get_locale_territory_mapping(display_names->locale(), code.as_string().string()); diff --git a/Userland/Libraries/LibJS/Tests/builtins/Intl/DisplayNames/DisplayNames.prototype.of.js b/Userland/Libraries/LibJS/Tests/builtins/Intl/DisplayNames/DisplayNames.prototype.of.js index de19b5a7257..314ec0599c2 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Intl/DisplayNames/DisplayNames.prototype.of.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Intl/DisplayNames/DisplayNames.prototype.of.js @@ -29,6 +29,21 @@ describe("correct behavior", () => { expect(Intl.DisplayNames.prototype.of).toHaveLength(1); }); + test("option type language", () => { + const en = new Intl.DisplayNames("en", { type: "language" }); + expect(en.of("en")).toBe("English"); + + const es419 = new Intl.DisplayNames("es-419", { type: "language" }); + expect(es419.of("en")).toBe("inglés"); + + const zhHant = new Intl.DisplayNames(["zh-Hant"], { type: "language" }); + expect(zhHant.of("en")).toBe("英文"); + + expect(en.of("zz")).toBe("zz"); + expect(es419.of("zz")).toBe("zz"); + expect(zhHant.of("zz")).toBe("zz"); + }); + test("option type region", () => { const en = new Intl.DisplayNames("en", { type: "region" }); expect(en.of("US")).toBe("United States");