-
-
Notifications
You must be signed in to change notification settings - Fork 73
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: support for Icelandic language
* feat: add is (icelandic) locale * feat: update is (icelandic) locale and add tests * feat: add example for Icelandic locale in with-next-i18next * feat: add translations for not_finite and datetime * feat: add tests for datetime and finite and update translations for Icelandic locale Co-authored-by: Hrafnkell Baldursson <[email protected]>
- Loading branch information
1 parent
3c82e8a
commit 074554d
Showing
6 changed files
with
378 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"User name": "Notendanafn", | ||
"John Doe": "Jón Jónsson", | ||
"Email": "Netfang", | ||
"Favorite number": "Uppáhalds tala", | ||
"Submit": "Senda" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
{ | ||
"errors": { | ||
"invalid_type": "Bjóst við {{expected}}, fékk {{received}}", | ||
"invalid_type_received_undefined": "Nauðsynlegt", | ||
"invalid_literal": "Ógilt bókstaflegt gildi, bjóst við {{expected}}", | ||
"unrecognized_keys": "Óþekktir lyklar í hlut: {{- keys}}", | ||
"invalid_union": "Ógilt inntak", | ||
"invalid_union_discriminator": "Ógilt mismununargildi. Bjóst við {{- options}}", | ||
"invalid_enum_value": "Ógilt upptalningargildi. Bjóst við {{- options}}, fékk {{received}}", | ||
"invalid_arguments": "Ógildar aðgerðarbreytur", | ||
"invalid_return_type": "Ógild skilategund á falli", | ||
"invalid_date": "Ógild dagsetning", | ||
"custom": "Ógilt inntak", | ||
"invalid_intersection_types": "Ekki var hægt að sameina niðurstöður", | ||
"not_multiple_of": "Tala þarf að vera margfeldi af {{multipleOf}}", | ||
"not_finite": "Tala þarf að vera endanleg", | ||
"invalid_string": { | ||
"email": "Ógilt {{validation}}", | ||
"url": "Ógild {{validation}}", | ||
"uuid": "Ógilt {{validation}}", | ||
"cuid": "Ógilt {{validation}}", | ||
"regex": "Ógilt", | ||
"datetime": "Ógild {{validation}}", | ||
"startsWith": "Ógilt inntak: þarf að byrja á {{startsWith}}", | ||
"endsWith": "Ógilt inntak: þarf að enda á {{endsWith}}" | ||
}, | ||
"too_small": { | ||
"array": { | ||
"inclusive": "Fylki verður að innihalda að minnsta kosti {{minimum}} stök", | ||
"not_inclusive": "Fylki verður að innihalda fleiri en {{minimum}} stök" | ||
}, | ||
"string": { | ||
"inclusive": "Strengur verður að innihalda að minnsta kosti {{minimum}} stafi", | ||
"not_inclusive": "Strengur verður að innihalda meira en {{minimum}} stafi" | ||
}, | ||
"number": { | ||
"inclusive": "Tala verður að vera stærri en eða jöfn {{minimum}}", | ||
"not_inclusive": "Tala verður að vera stærri en {{minimum}}" | ||
}, | ||
"set": { | ||
"inclusive": "Ógilt inntak", | ||
"not_inclusive": "Ógilt inntak" | ||
}, | ||
"date": { | ||
"inclusive": "Dagsetning verður að vera á eftir eða sama og {{- minimum, datetime}}", | ||
"not_inclusive": "Dagsetning verður að vera á eftir {{- minimum, datetime}}" | ||
} | ||
}, | ||
"too_big": { | ||
"array": { | ||
"inclusive": "Fylki verður að innihalda að hámarki {{maximum}} stök", | ||
"not_inclusive": "Fylki verður að innihalda færri en {{maximum}} stök" | ||
}, | ||
"string": { | ||
"inclusive": "Strengur getur ekki verið lengri en {{maximum}} stafir", | ||
"not_inclusive": "Strengur verður að innihalda færri en {{maximum}} stafi" | ||
}, | ||
"number": { | ||
"inclusive": "Tala verður að vera minni en eða jöfn {{maximum}}", | ||
"not_inclusive": "Tala verður að vera minni en {{maximum}}" | ||
}, | ||
"set": { | ||
"inclusive": "Ógilt inntak", | ||
"not_inclusive": "Ógilt inntak" | ||
}, | ||
"date": { | ||
"inclusive": "Dagsetning verður að vera fyrr en eða sama og {{- maximum, datetime}}", | ||
"not_inclusive": "Dagsetning verður að vera fyrr en {{- maximum, datetime}}" | ||
} | ||
} | ||
}, | ||
"validations": { | ||
"email": "netfang", | ||
"url": "slóð", | ||
"uuid": "uuid", | ||
"cuid": "cuid", | ||
"regex": "regluleg segð", | ||
"datetime": "dagsetning og tími" | ||
}, | ||
"types": { | ||
"function": "fall", | ||
"number": "tölu", | ||
"string": "streng", | ||
"nan": "nan", | ||
"integer": "heiltölu", | ||
"float": "kommutölu", | ||
"boolean": "boolean", | ||
"date": "dagsetningu", | ||
"bigint": "stórri heiltölu", | ||
"undefined": "undefined", | ||
"symbol": "symbol", | ||
"null": "null", | ||
"array": "fylki", | ||
"object": "hlut", | ||
"unknown": "unknown", | ||
"promise": "promise", | ||
"void": "void", | ||
"never": "never", | ||
"map": "map", | ||
"set": "set" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
{ | ||
"errors": { | ||
"invalid_type": "Bjóst við {{expected}}, fékk {{received}}", | ||
"invalid_type_received_undefined": "Nauðsynlegt", | ||
"invalid_literal": "Ógilt bókstaflegt gildi, bjóst við {{expected}}", | ||
"unrecognized_keys": "Óþekktir lyklar í hlut: {{- keys}}", | ||
"invalid_union": "Ógilt inntak", | ||
"invalid_union_discriminator": "Ógilt mismununargildi. Bjóst við {{- options}}", | ||
"invalid_enum_value": "Ógilt upptalningargildi. Bjóst við {{- options}}, fékk {{received}}", | ||
"invalid_arguments": "Ógildar aðgerðarbreytur", | ||
"invalid_return_type": "Ógild skilategund á falli", | ||
"invalid_date": "Ógild dagsetning", | ||
"custom": "Ógilt inntak", | ||
"invalid_intersection_types": "Ekki var hægt að sameina niðurstöður", | ||
"not_multiple_of": "Tala þarf að vera margfeldi af {{multipleOf}}", | ||
"not_finite": "Tala þarf að vera endanleg", | ||
"invalid_string": { | ||
"email": "Ógilt {{validation}}", | ||
"url": "Ógild {{validation}}", | ||
"uuid": "Ógilt {{validation}}", | ||
"cuid": "Ógilt {{validation}}", | ||
"regex": "Ógilt", | ||
"datetime": "Ógild {{validation}}", | ||
"startsWith": "Ógilt inntak: þarf að byrja á {{startsWith}}", | ||
"endsWith": "Ógilt inntak: þarf að enda á {{endsWith}}" | ||
}, | ||
"too_small": { | ||
"array": { | ||
"inclusive": "Fylki verður að innihalda að minnsta kosti {{minimum}} stök", | ||
"not_inclusive": "Fylki verður að innihalda fleiri en {{minimum}} stök" | ||
}, | ||
"string": { | ||
"inclusive": "Strengur verður að innihalda að minnsta kosti {{minimum}} stafi", | ||
"not_inclusive": "Strengur verður að innihalda meira en {{minimum}} stafi" | ||
}, | ||
"number": { | ||
"inclusive": "Tala verður að vera stærri en eða jöfn {{minimum}}", | ||
"not_inclusive": "Tala verður að vera stærri en {{minimum}}" | ||
}, | ||
"set": { | ||
"inclusive": "Ógilt inntak", | ||
"not_inclusive": "Ógilt inntak" | ||
}, | ||
"date": { | ||
"inclusive": "Dagsetning verður að vera á eftir eða sama og {{- minimum, datetime}}", | ||
"not_inclusive": "Dagsetning verður að vera á eftir {{- minimum, datetime}}" | ||
} | ||
}, | ||
"too_big": { | ||
"array": { | ||
"inclusive": "Fylki verður að innihalda að hámarki {{maximum}} stök", | ||
"not_inclusive": "Fylki verður að innihalda færri en {{maximum}} stök" | ||
}, | ||
"string": { | ||
"inclusive": "Strengur getur ekki verið lengri en {{maximum}} stafir", | ||
"not_inclusive": "Strengur verður að innihalda færri en {{maximum}} stafi" | ||
}, | ||
"number": { | ||
"inclusive": "Tala verður að vera minni en eða jöfn {{maximum}}", | ||
"not_inclusive": "Tala verður að vera minni en {{maximum}}" | ||
}, | ||
"set": { | ||
"inclusive": "Ógilt inntak", | ||
"not_inclusive": "Ógilt inntak" | ||
}, | ||
"date": { | ||
"inclusive": "Dagsetning verður að vera fyrr en eða sama og {{- maximum, datetime}}", | ||
"not_inclusive": "Dagsetning verður að vera fyrr en {{- maximum, datetime}}" | ||
} | ||
} | ||
}, | ||
"validations": { | ||
"email": "netfang", | ||
"url": "slóð", | ||
"uuid": "uuid", | ||
"cuid": "cuid", | ||
"regex": "regluleg segð", | ||
"datetime": "dagsetning og tími" | ||
}, | ||
"types": { | ||
"function": "fall", | ||
"number": "tölu", | ||
"string": "streng", | ||
"nan": "nan", | ||
"integer": "heiltölu", | ||
"float": "kommutölu", | ||
"boolean": "boolean", | ||
"date": "dagsetningu", | ||
"bigint": "stórri heiltölu", | ||
"undefined": "undefined", | ||
"symbol": "symbol", | ||
"null": "null", | ||
"array": "fylki", | ||
"object": "hlut", | ||
"unknown": "unknown", | ||
"promise": "promise", | ||
"void": "void", | ||
"never": "never", | ||
"map": "map", | ||
"set": "set" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
import { test, expect, beforeAll } from "vitest"; | ||
import { z } from "zod"; | ||
import { init, getErrorMessage } from "./helpers"; | ||
|
||
beforeAll(async () => { | ||
await init("is"); | ||
}); | ||
|
||
test("string parser error messages", () => { | ||
const schema = z.string(); | ||
|
||
expect(getErrorMessage(schema.safeParse(undefined))).toEqual("Nauðsynlegt"); | ||
expect(getErrorMessage(schema.safeParse(1))).toEqual( | ||
"Bjóst við streng, fékk tölu" | ||
); | ||
expect(getErrorMessage(schema.safeParse(true))).toEqual( | ||
"Bjóst við streng, fékk boolean" | ||
); | ||
expect(getErrorMessage(schema.safeParse(Date))).toEqual( | ||
"Bjóst við streng, fékk fall" | ||
); | ||
expect(getErrorMessage(schema.safeParse(new Date()))).toEqual( | ||
"Bjóst við streng, fékk dagsetningu" | ||
); | ||
expect(getErrorMessage(schema.email().safeParse(""))).toEqual( | ||
"Ógilt netfang" | ||
); | ||
expect(getErrorMessage(schema.url().safeParse(""))).toEqual("Ógild slóð"); | ||
expect(getErrorMessage(schema.regex(/aaa/).safeParse(""))).toEqual("Ógilt"); | ||
expect(getErrorMessage(schema.startsWith("foo").safeParse(""))).toEqual( | ||
"Ógilt inntak: þarf að byrja á foo" | ||
); | ||
expect(getErrorMessage(schema.endsWith("bar").safeParse(""))).toEqual( | ||
"Ógilt inntak: þarf að enda á bar" | ||
); | ||
expect(getErrorMessage(schema.min(5).safeParse("a"))).toEqual( | ||
"Strengur verður að innihalda að minnsta kosti 5 stafi" | ||
); | ||
expect(getErrorMessage(schema.max(5).safeParse("abcdef"))).toEqual( | ||
"Strengur getur ekki verið lengri en 5 stafir" | ||
); | ||
expect( | ||
getErrorMessage(schema.datetime().safeParse("2020-01-01T00:00:00+02:00")) | ||
).toEqual("Ógild dagsetning og tími"); | ||
}); | ||
|
||
test("number parser error messages", () => { | ||
const schema = z.number(); | ||
|
||
expect(getErrorMessage(schema.safeParse(undefined))).toEqual("Nauðsynlegt"); | ||
expect(getErrorMessage(schema.safeParse(""))).toEqual( | ||
"Bjóst við tölu, fékk streng" | ||
); | ||
expect(getErrorMessage(schema.safeParse(null))).toEqual( | ||
"Bjóst við tölu, fékk null" | ||
); | ||
expect(getErrorMessage(schema.safeParse(NaN))).toEqual( | ||
"Bjóst við tölu, fékk nan" | ||
); | ||
expect(getErrorMessage(schema.int().safeParse(0.1))).toEqual( | ||
"Bjóst við heiltölu, fékk kommutölu" | ||
); | ||
expect(getErrorMessage(schema.multipleOf(5).safeParse(2))).toEqual( | ||
"Tala þarf að vera margfeldi af 5" | ||
); | ||
expect(getErrorMessage(schema.lt(5).safeParse(10))).toEqual( | ||
"Tala verður að vera minni en 5" | ||
); | ||
expect(getErrorMessage(schema.lte(5).safeParse(10))).toEqual( | ||
"Tala verður að vera minni en eða jöfn 5" | ||
); | ||
expect(getErrorMessage(schema.gt(5).safeParse(1))).toEqual( | ||
"Tala verður að vera stærri en 5" | ||
); | ||
expect(getErrorMessage(schema.gte(5).safeParse(1))).toEqual( | ||
"Tala verður að vera stærri en eða jöfn 5" | ||
); | ||
expect(getErrorMessage(schema.positive().safeParse(0))).toEqual( | ||
"Tala verður að vera stærri en 0" | ||
); | ||
expect(getErrorMessage(schema.finite().safeParse(Infinity))).toEqual( | ||
"Tala þarf að vera endanleg" | ||
); | ||
}); | ||
|
||
test("date parser error messages", () => { | ||
const schema = z.date(); | ||
|
||
expect(getErrorMessage(schema.safeParse("2022-12-01"))).toEqual( | ||
"Bjóst við dagsetningu, fékk streng" | ||
); | ||
|
||
const testDate = new Date("2022-08-01"); | ||
|
||
expect( | ||
getErrorMessage(schema.min(testDate).safeParse(new Date("2022-07-29"))) | ||
).toEqual( | ||
`Dagsetning verður að vera á eftir eða sama og ${testDate.toLocaleDateString( | ||
"is" | ||
)}` | ||
); | ||
expect( | ||
getErrorMessage(schema.max(testDate).safeParse(new Date("2022-08-02"))) | ||
).toEqual( | ||
`Dagsetning verður að vera fyrr en eða sama og ${testDate.toLocaleDateString( | ||
"is" | ||
)}` | ||
); | ||
}); | ||
|
||
test("array parser error messages", () => { | ||
const schema = z.string().array(); | ||
|
||
expect(getErrorMessage(schema.safeParse(""))).toEqual( | ||
"Bjóst við fylki, fékk streng" | ||
); | ||
|
||
expect(getErrorMessage(schema.min(5).safeParse([""]))).toEqual( | ||
"Fylki verður að innihalda að minnsta kosti 5 stök" | ||
); | ||
expect(getErrorMessage(schema.max(2).safeParse(["", "", ""]))).toEqual( | ||
"Fylki verður að innihalda að hámarki 2 stök" | ||
); | ||
expect(getErrorMessage(schema.nonempty().safeParse([]))).toEqual( | ||
"Fylki verður að innihalda að minnsta kosti 1 stök" | ||
); | ||
}); | ||
|
||
test("other parser error messages", () => { | ||
expect(getErrorMessage(z.literal(12).safeParse(""))).toEqual( | ||
"Ógilt bókstaflegt gildi, bjóst við 12" | ||
); | ||
expect(getErrorMessage(z.enum(["A", "B", "C"]).safeParse("D"))).toEqual( | ||
"Ógilt upptalningargildi. Bjóst við 'A' | 'B' | 'C', fékk D" | ||
); | ||
expect( | ||
getErrorMessage( | ||
z | ||
.object({ dog: z.string() }) | ||
.strict() | ||
.safeParse({ dog: "", cat: "", rat: "" }) | ||
) | ||
).toEqual("Óþekktir lyklar í hlut: 'cat', 'rat'"); | ||
|
||
expect( | ||
getErrorMessage( | ||
z | ||
.discriminatedUnion("type", [ | ||
z.object({ type: z.literal("a"), a: z.string() }), | ||
z.object({ type: z.literal("b"), b: z.string() }), | ||
]) | ||
.safeParse({ type: "c", c: "abc" }) | ||
) | ||
).toEqual("Ógilt mismununargildi. Bjóst við 'a' | 'b'"); | ||
expect( | ||
getErrorMessage(z.union([z.string(), z.number()]).safeParse([true])) | ||
).toEqual("Ógilt inntak"); | ||
}); |
074554d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
zod-i18n – ./
zod-i18n.vercel.app
zod-i18n-git-main-aiji42.vercel.app
zod-i18n-aiji42.vercel.app