From beee7b594b677c67bb3f7b9ab388bf4ada061b43 Mon Sep 17 00:00:00 2001 From: Levani Date: Mon, 25 Mar 2024 23:43:29 +0400 Subject: [PATCH 1/2] Create zod.json --- packages/core/locales/ka/zod.json | 113 ++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 packages/core/locales/ka/zod.json diff --git a/packages/core/locales/ka/zod.json b/packages/core/locales/ka/zod.json new file mode 100644 index 0000000..524e671 --- /dev/null +++ b/packages/core/locales/ka/zod.json @@ -0,0 +1,113 @@ +{ + "errors":{ + "invalid_type":"ელოდებოდა {{expected}}, მიიღო {{received}}", + "invalid_type_received_undefined":"საჭიროა", + "invalid_type_received_null":"საჭიროა", + "invalid_literal":"არასწორი მნიშვნელობა, ელოდებოდა {{expected}}", + "unrecognized_keys":"უცნობი მნიშვნელობები ობიექტში: {{- keys}}", + "invalid_union":"არასწორი მნიშვნელობა", + "invalid_union_discriminator":"არასწორი მნიშვნელობა, ელოდებოდა {{- options}}", + "invalid_enum_value":"არასწორი ენუმერატორის მნიშვნელობა. ელოდებოდა {{- options}}, მიიღო '{{received}}'", + "invalid_arguments":"არასწორი ფუნქციის არგუმენტები", + "invalid_return_type":"არასწორი ფუნქციის დაბრუნების ტიპი", + "invalid_date":"თარიღი არასწორია.", + "custom":"არასწორი მნიშვნელობა", + "invalid_intersection_types":"გადაკვეთის შედეგები ვერ გაერთიანდა", + "not_multiple_of":"ციფრი უნდა იყოს {{multipleOf}}-ის ჯერადი", + "not_finite":"ციფრი უნდა იყოს ფინიტური", + "invalid_string":{ + "email":"არასწორი {{validation}}", + "url":"არასწორი {{validation}}", + "uuid":"არასწორი {{validation}}", + "cuid":"არასწორი {{validation}}", + "regex":"არასწორი", + "datetime":"არასწორი {{validation}}", + "startsWith":"არასწორი მნიშვნელობა: უნდა დაიწყოს \"{{startsWith}}\"-ით", + "endsWith":"არასწორი მნიშვნელობა: უნდა დამთავრდეს \"{{endsWith}}\"-ით" + }, + "too_small":{ + "array":{ + "exact":"სია უნდა შეიცავდეს ზუსტად {{minimum}} ელემენტს", + "inclusive":"სია უნდა შეიცავდეს მინიმუმ {{minimum}} ელემენტს", + "not_inclusive":"სია უნდა შეიცავდეს {{minimum}}-ზე მეტ ელემენტს" + }, + "string":{ + "exact":"სტრინგი უნდა შეიცავდეს ზუსტად {{minimum}} სიმბოლოებს", + "inclusive":"სტრინგი უნდა შეიცავდეს მინიმუმ {{minimum}} სიმბოლოებს", + "not_inclusive":"სტრინგი უნდა შეიცავდეს {{minimum}}-ზე მეტ სიმბოლოებს" + }, + "number":{ + "exact":"ციფრი ზუსტად უნდა იყოს {{minimum}}", + "inclusive":"ციფრი ან მეტი ან ტოლი უნდა იყოს {{minimum}}-ზე", + "not_inclusive":"ციფრი მეტი უნდა იყოს {{minimum}}-ზე" + }, + "set":{ + "exact":"არასწორი მნიშვნელობა", + "inclusive":"არასწორი მნიშვნელობა", + "not_inclusive":"არასწორი მნიშვნელობა" + }, + "date":{ + "exact":"თარიღი ზუსტად უნდა იყოს {{- minimum, datetime}}", + "inclusive":"თარიღი ან მეტი ან ტოლი უნდა იყოს {{- minimum, datetime}}-ზე", + "not_inclusive":"თარიღი მეტი უნდა იყოს {{- minimum, datetime}}-ზე" + } + }, + "too_big":{ + "array":{ + "exact":"სია უნდა შეიცავდეს ზუსტად {{maximum}} ელემენტს", + "inclusive":"სია უნდა შეიცავდეს მაქსიმუმ {{maximum}} ელემენტს", + "not_inclusive":"სია უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ ელემენტს" + }, + "string":{ + "exact":"სტრინგი უნდა შეიცავდეს ზუსტად {{maximum}} სიმბოლოებს", + "inclusive":"სტრინგი უნდა შეიცავდეს მაქსიმუმ {{maximum}} სიმბოლოებს", + "not_inclusive":"სტრინგი უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ სიმბოლოებს" + }, + "number":{ + "exact":"ციფრი ზუსტად უნდა იყოს {{maximum}}", + "inclusive":"ციფრი ან ნაკლები ან ტოლი უნდა იყოს {{maximum}}-ზე", + "not_inclusive":"ციფრი ნაკლები უნდა იყოს {{maximum}}-ზე" + }, + "set":{ + "exact":"არასწორი მნიშვნელობა", + "inclusive":"არასწორი მნიშვნელობა", + "not_inclusive":"არასწორი მნიშვნელობა" + }, + "date":{ + "exact":"თარიღი ზუსტად უნდა იყოს {{- maximum, datetime}}", + "inclusive":"თარიღი ან ნაკლები ან ტოლი უნდა იყოს {{- maximum, datetime}}-ზე", + "not_inclusive":"თარიღი ნაკლები უნდა იყოს {{- maximum, datetime}}-ზე" + } + } + }, + "validations":{ + "email":"ელ-ფოსტა", + "url":"url", + "uuid":"uuid", + "cuid":"cuid", + "regex":"regex", + "datetime":"datetime" + }, + "types":{ + "function":"ფუნქცია", + "number":"ციფრი", + "string":"სტრინგი", + "nan":"nan", + "integer":"ინტეჯერი", + "float":"ათწილადი", + "boolean":"boolean", + "date":"თარიღი", + "bigint":"bigint", + "undefined":"undefined", + "symbol":"სიმბოლო", + "null":"null", + "array":"სია", + "object":"ობიექტი", + "unknown":"უცნობი", + "promise":"promise", + "void":"void", + "never":"არასოდეს", + "map":"map", + "set":"სეტი" + } +} From 341a5f201860d3b8f1c3ae0756462dfe91610abd Mon Sep 17 00:00:00 2001 From: Levani Date: Thu, 28 Mar 2024 14:04:54 +0000 Subject: [PATCH 2/2] feat: add ka locale --- .../with-next-i18next/next-i18next.config.js | 1 + examples/with-next-i18next/pages/index.tsx | 1 + .../public/locales/ka/common.json | 7 + .../public/locales/ka/zod.json | 113 +++++++++ packages/core/locales/ka/zod.json | 216 +++++++++--------- packages/core/tests/integrations/ka.test.ts | 209 +++++++++++++++++ 6 files changed, 439 insertions(+), 108 deletions(-) create mode 100644 examples/with-next-i18next/public/locales/ka/common.json create mode 100644 examples/with-next-i18next/public/locales/ka/zod.json create mode 100644 packages/core/tests/integrations/ka.test.ts diff --git a/examples/with-next-i18next/next-i18next.config.js b/examples/with-next-i18next/next-i18next.config.js index 11c1412..afa3e6e 100644 --- a/examples/with-next-i18next/next-i18next.config.js +++ b/examples/with-next-i18next/next-i18next.config.js @@ -22,6 +22,7 @@ module.exports = { "is", "it", "ja", + "ka", "ko", "lt", "nb", diff --git a/examples/with-next-i18next/pages/index.tsx b/examples/with-next-i18next/pages/index.tsx index d73f44b..1115a8b 100644 --- a/examples/with-next-i18next/pages/index.tsx +++ b/examples/with-next-i18next/pages/index.tsx @@ -91,6 +91,7 @@ export default function HookForm() { + diff --git a/examples/with-next-i18next/public/locales/ka/common.json b/examples/with-next-i18next/public/locales/ka/common.json new file mode 100644 index 0000000..cf6942f --- /dev/null +++ b/examples/with-next-i18next/public/locales/ka/common.json @@ -0,0 +1,7 @@ +{ + "username": "მომხმარებლის სახელი", + "username_placeholder": "ჯონი თათქარიძე", + "email": "ელ. ფოსტა", + "favoriteNumber": "საყვარელი რიცხვი", + "submit": "დადასტურება" +} diff --git a/examples/with-next-i18next/public/locales/ka/zod.json b/examples/with-next-i18next/public/locales/ka/zod.json new file mode 100644 index 0000000..bb761cd --- /dev/null +++ b/examples/with-next-i18next/public/locales/ka/zod.json @@ -0,0 +1,113 @@ +{ + "errors": { + "invalid_type": "უნდა ყოფილიყო {{expected}}, მიიღო {{received}}", + "invalid_type_received_undefined": "საჭიროა", + "invalid_type_received_null": "საჭიროა", + "invalid_literal": "არასწორი მნიშვნელობა, უნდა ყოფილიყო {{expected}}", + "unrecognized_keys": "უცნობი მნიშვნელობები ობიექტში: {{- keys}}", + "invalid_union": "არასწორი მნიშვნელობა", + "invalid_union_discriminator": "არასწორი მნიშვნელობა, უნდა ყოფილიყო {{- options}}", + "invalid_enum_value": "არასწორი ენუმერატორის მნიშვნელობა. უნდა ყოფილიყო {{- options}}, მიიღო '{{received}}'", + "invalid_arguments": "არასწორი ფუნქციის არგუმენტები", + "invalid_return_type": "არასწორი ფუნქციის დაბრუნების ტიპი", + "invalid_date": "თარიღი არასწორია.", + "custom": "არასწორი მნიშვნელობა", + "invalid_intersection_types": "გადაკვეთის შედეგები ვერ გაერთიანდა", + "not_multiple_of": "ციფრი უნდა იყოს {{multipleOf}}-ის ჯერადი", + "not_finite": "ციფრი უნდა იყოს ფინიტური", + "invalid_string": { + "email": "არასწორი {{validation}}", + "url": "არასწორი {{validation}}", + "uuid": "არასწორი {{validation}}", + "cuid": "არასწორი {{validation}}", + "regex": "არასწორი", + "datetime": "არასწორი {{validation}}", + "startsWith": "არასწორი მნიშვნელობა: უნდა დაიწყოს \"{{startsWith}}\"-ით", + "endsWith": "არასწორი მნიშვნელობა: უნდა დამთავრდეს \"{{endsWith}}\"-ით" + }, + "too_small": { + "array": { + "exact": "სია უნდა შეიცავდეს ზუსტად {{minimum}} ელემენტს", + "inclusive": "სია უნდა შეიცავდეს მინიმუმ {{minimum}} ელემენტს", + "not_inclusive": "სია უნდა შეიცავდეს {{minimum}}-ზე მეტ ელემენტს" + }, + "string": { + "exact": "სტრინგი უნდა შეიცავდეს ზუსტად {{minimum}} სიმბოლოებს", + "inclusive": "სტრინგი უნდა შეიცავდეს მინიმუმ {{minimum}} სიმბოლოებს", + "not_inclusive": "სტრინგი უნდა შეიცავდეს {{minimum}}-ზე მეტ სიმბოლოებს" + }, + "number": { + "exact": "ციფრი ზუსტად უნდა იყოს {{minimum}}", + "inclusive": "ციფრი ან მეტი ან ტოლი უნდა იყოს {{minimum}}-ზე", + "not_inclusive": "ციფრი მეტი უნდა იყოს {{minimum}}-ზე" + }, + "set": { + "exact": "არასწორი მნიშვნელობა", + "inclusive": "არასწორი მნიშვნელობა", + "not_inclusive": "არასწორი მნიშვნელობა" + }, + "date": { + "exact": "თარიღი ზუსტად უნდა იყოს {{- minimum, datetime}}", + "inclusive": "თარიღი ან მეტი ან ტოლი უნდა იყოს {{- minimum, datetime}}-ზე", + "not_inclusive": "თარიღი მეტი უნდა იყოს {{- minimum, datetime}}-ზე" + } + }, + "too_big": { + "array": { + "exact": "სია უნდა შეიცავდეს ზუსტად {{maximum}} ელემენტს", + "inclusive": "სია უნდა შეიცავდეს მაქსიმუმ {{maximum}} ელემენტს", + "not_inclusive": "სია უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ ელემენტს" + }, + "string": { + "exact": "სტრინგი უნდა შეიცავდეს ზუსტად {{maximum}} სიმბოლოებს", + "inclusive": "სტრინგი უნდა შეიცავდეს მაქსიმუმ {{maximum}} სიმბოლოებს", + "not_inclusive": "სტრინგი უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ სიმბოლოებს" + }, + "number": { + "exact": "ციფრი ზუსტად უნდა იყოს {{maximum}}", + "inclusive": "ციფრი ან ნაკლები ან ტოლი უნდა იყოს {{maximum}}-ზე", + "not_inclusive": "ციფრი ნაკლები უნდა იყოს {{maximum}}-ზე" + }, + "set": { + "exact": "არასწორი მნიშვნელობა", + "inclusive": "არასწორი მნიშვნელობა", + "not_inclusive": "არასწორი მნიშვნელობა" + }, + "date": { + "exact": "თარიღი ზუსტად უნდა იყოს {{- maximum, datetime}}", + "inclusive": "თარიღი ან ნაკლები ან ტოლი უნდა იყოს {{- maximum, datetime}}-ზე", + "not_inclusive": "თარიღი ნაკლები უნდა იყოს {{- maximum, datetime}}-ზე" + } + } + }, + "validations": { + "email": "ელ-ფოსტა", + "url": "ლინკი", + "uuid": "uuid", + "cuid": "cuid", + "regex": "regex", + "datetime": "დრო და თარიღი" + }, + "types": { + "function": "ფუნქცია", + "number": "ციფრი", + "string": "სტრინგი", + "nan": "nan", + "integer": "ინტეჯერი", + "float": "ათწილადი", + "boolean": "boolean", + "date": "თარიღი", + "bigint": "bigint", + "undefined": "undefined", + "symbol": "სიმბოლო", + "null": "null", + "array": "სია", + "object": "ობიექტი", + "unknown": "უცნობი", + "promise": "promise", + "void": "void", + "never": "არასოდეს", + "map": "map", + "set": "სეტი" + } +} diff --git a/packages/core/locales/ka/zod.json b/packages/core/locales/ka/zod.json index 524e671..570d7a3 100644 --- a/packages/core/locales/ka/zod.json +++ b/packages/core/locales/ka/zod.json @@ -1,113 +1,113 @@ { - "errors":{ - "invalid_type":"ელოდებოდა {{expected}}, მიიღო {{received}}", - "invalid_type_received_undefined":"საჭიროა", - "invalid_type_received_null":"საჭიროა", - "invalid_literal":"არასწორი მნიშვნელობა, ელოდებოდა {{expected}}", - "unrecognized_keys":"უცნობი მნიშვნელობები ობიექტში: {{- keys}}", - "invalid_union":"არასწორი მნიშვნელობა", - "invalid_union_discriminator":"არასწორი მნიშვნელობა, ელოდებოდა {{- options}}", - "invalid_enum_value":"არასწორი ენუმერატორის მნიშვნელობა. ელოდებოდა {{- options}}, მიიღო '{{received}}'", - "invalid_arguments":"არასწორი ფუნქციის არგუმენტები", - "invalid_return_type":"არასწორი ფუნქციის დაბრუნების ტიპი", - "invalid_date":"თარიღი არასწორია.", - "custom":"არასწორი მნიშვნელობა", - "invalid_intersection_types":"გადაკვეთის შედეგები ვერ გაერთიანდა", - "not_multiple_of":"ციფრი უნდა იყოს {{multipleOf}}-ის ჯერადი", - "not_finite":"ციფრი უნდა იყოს ფინიტური", - "invalid_string":{ - "email":"არასწორი {{validation}}", - "url":"არასწორი {{validation}}", - "uuid":"არასწორი {{validation}}", - "cuid":"არასწორი {{validation}}", - "regex":"არასწორი", - "datetime":"არასწორი {{validation}}", - "startsWith":"არასწორი მნიშვნელობა: უნდა დაიწყოს \"{{startsWith}}\"-ით", - "endsWith":"არასწორი მნიშვნელობა: უნდა დამთავრდეს \"{{endsWith}}\"-ით" + "errors": { + "invalid_type": "უნდა ყოფილიყო {{expected}}, მიიღო {{received}}", + "invalid_type_received_undefined": "საჭიროა", + "invalid_type_received_null": "საჭიროა", + "invalid_literal": "არასწორი მნიშვნელობა, უნდა ყოფილიყო {{expected}}", + "unrecognized_keys": "უცნობი მნიშვნელობები ობიექტში: {{- keys}}", + "invalid_union": "არასწორი მნიშვნელობა", + "invalid_union_discriminator": "არასწორი მნიშვნელობა, უნდა ყოფილიყო {{- options}}", + "invalid_enum_value": "არასწორი ენუმერატორის მნიშვნელობა. უნდა ყოფილიყო {{- options}}, მიიღო '{{received}}'", + "invalid_arguments": "არასწორი ფუნქციის არგუმენტები", + "invalid_return_type": "არასწორი ფუნქციის დაბრუნების ტიპი", + "invalid_date": "არასწორი თარიღი", + "custom": "არასწორი მნიშვნელობა", + "invalid_intersection_types": "გადაკვეთის შედეგები ვერ გაერთიანდა", + "not_multiple_of": "ციფრი უნდა იყოს {{multipleOf}}-ის ჯერადი", + "not_finite": "ციფრი უნდა იყოს ფინიტური", + "invalid_string": { + "email": "არასწორი {{validation}}", + "url": "არასწორი {{validation}}", + "uuid": "არასწორი {{validation}}", + "cuid": "არასწორი {{validation}}", + "regex": "არასწორი", + "datetime": "არასწორი {{validation}}", + "startsWith": "არასწორი მნიშვნელობა: უნდა დაიწყოს \"{{startsWith}}\"-ით", + "endsWith": "არასწორი მნიშვნელობა: უნდა დამთავრდეს \"{{endsWith}}\"-ით" + }, + "too_small": { + "array": { + "exact": "სია უნდა შეიცავდეს ზუსტად {{minimum}} ელემენტს", + "inclusive": "სია უნდა შეიცავდეს მინიმუმ {{minimum}} ელემენტს", + "not_inclusive": "სია უნდა შეიცავდეს {{minimum}}-ზე მეტ ელემენტს" }, - "too_small":{ - "array":{ - "exact":"სია უნდა შეიცავდეს ზუსტად {{minimum}} ელემენტს", - "inclusive":"სია უნდა შეიცავდეს მინიმუმ {{minimum}} ელემენტს", - "not_inclusive":"სია უნდა შეიცავდეს {{minimum}}-ზე მეტ ელემენტს" - }, - "string":{ - "exact":"სტრინგი უნდა შეიცავდეს ზუსტად {{minimum}} სიმბოლოებს", - "inclusive":"სტრინგი უნდა შეიცავდეს მინიმუმ {{minimum}} სიმბოლოებს", - "not_inclusive":"სტრინგი უნდა შეიცავდეს {{minimum}}-ზე მეტ სიმბოლოებს" - }, - "number":{ - "exact":"ციფრი ზუსტად უნდა იყოს {{minimum}}", - "inclusive":"ციფრი ან მეტი ან ტოლი უნდა იყოს {{minimum}}-ზე", - "not_inclusive":"ციფრი მეტი უნდა იყოს {{minimum}}-ზე" - }, - "set":{ - "exact":"არასწორი მნიშვნელობა", - "inclusive":"არასწორი მნიშვნელობა", - "not_inclusive":"არასწორი მნიშვნელობა" - }, - "date":{ - "exact":"თარიღი ზუსტად უნდა იყოს {{- minimum, datetime}}", - "inclusive":"თარიღი ან მეტი ან ტოლი უნდა იყოს {{- minimum, datetime}}-ზე", - "not_inclusive":"თარიღი მეტი უნდა იყოს {{- minimum, datetime}}-ზე" - } + "string": { + "exact": "სტრინგი უნდა შეიცავდეს ზუსტად {{minimum}} სიმბოლოებს", + "inclusive": "სტრინგი უნდა შეიცავდეს მინიმუმ {{minimum}} სიმბოლოებს", + "not_inclusive": "სტრინგი უნდა შეიცავდეს {{minimum}}-ზე მეტ სიმბოლოებს" }, - "too_big":{ - "array":{ - "exact":"სია უნდა შეიცავდეს ზუსტად {{maximum}} ელემენტს", - "inclusive":"სია უნდა შეიცავდეს მაქსიმუმ {{maximum}} ელემენტს", - "not_inclusive":"სია უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ ელემენტს" - }, - "string":{ - "exact":"სტრინგი უნდა შეიცავდეს ზუსტად {{maximum}} სიმბოლოებს", - "inclusive":"სტრინგი უნდა შეიცავდეს მაქსიმუმ {{maximum}} სიმბოლოებს", - "not_inclusive":"სტრინგი უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ სიმბოლოებს" - }, - "number":{ - "exact":"ციფრი ზუსტად უნდა იყოს {{maximum}}", - "inclusive":"ციფრი ან ნაკლები ან ტოლი უნდა იყოს {{maximum}}-ზე", - "not_inclusive":"ციფრი ნაკლები უნდა იყოს {{maximum}}-ზე" - }, - "set":{ - "exact":"არასწორი მნიშვნელობა", - "inclusive":"არასწორი მნიშვნელობა", - "not_inclusive":"არასწორი მნიშვნელობა" - }, - "date":{ - "exact":"თარიღი ზუსტად უნდა იყოს {{- maximum, datetime}}", - "inclusive":"თარიღი ან ნაკლები ან ტოლი უნდა იყოს {{- maximum, datetime}}-ზე", - "not_inclusive":"თარიღი ნაკლები უნდა იყოს {{- maximum, datetime}}-ზე" - } + "number": { + "exact": "ციფრი ზუსტად უნდა იყოს {{minimum}}", + "inclusive": "ციფრი ან მეტი ან ტოლი უნდა იყოს {{minimum}}-ზე", + "not_inclusive": "ციფრი მეტი უნდა იყოს {{minimum}}-ზე" + }, + "set": { + "exact": "არასწორი მნიშვნელობა", + "inclusive": "არასწორი მნიშვნელობა", + "not_inclusive": "არასწორი მნიშვნელობა" + }, + "date": { + "exact": "თარიღი ზუსტად უნდა იყოს {{- minimum, datetime}}", + "inclusive": "თარიღი ან მეტი ან ტოლი უნდა იყოს {{- minimum, datetime}}-ზე", + "not_inclusive": "თარიღი მეტი უნდა იყოს {{- minimum, datetime}}-ზე" + } + }, + "too_big": { + "array": { + "exact": "სია უნდა შეიცავდეს ზუსტად {{maximum}} ელემენტს", + "inclusive": "სია უნდა შეიცავდეს მაქსიმუმ {{maximum}} ელემენტს", + "not_inclusive": "სია უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ ელემენტს" + }, + "string": { + "exact": "სტრინგი უნდა შეიცავდეს ზუსტად {{maximum}} სიმბოლოებს", + "inclusive": "სტრინგი უნდა შეიცავდეს მაქსიმუმ {{maximum}} სიმბოლოებს", + "not_inclusive": "სტრინგი უნდა შეიცავდეს {{maximum}}-ზე ნაკლებ სიმბოლოებს" + }, + "number": { + "exact": "ციფრი ზუსტად უნდა იყოს {{maximum}}", + "inclusive": "ციფრი ან ნაკლები ან ტოლი უნდა იყოს {{maximum}}-ზე", + "not_inclusive": "ციფრი ნაკლები უნდა იყოს {{maximum}}-ზე" + }, + "set": { + "exact": "არასწორი მნიშვნელობა", + "inclusive": "არასწორი მნიშვნელობა", + "not_inclusive": "არასწორი მნიშვნელობა" + }, + "date": { + "exact": "თარიღი ზუსტად უნდა იყოს {{- maximum, datetime}}", + "inclusive": "თარიღი ან ნაკლები ან ტოლი უნდა იყოს {{- maximum, datetime}}-ზე", + "not_inclusive": "თარიღი ნაკლები უნდა იყოს {{- maximum, datetime}}-ზე" } - }, - "validations":{ - "email":"ელ-ფოსტა", - "url":"url", - "uuid":"uuid", - "cuid":"cuid", - "regex":"regex", - "datetime":"datetime" - }, - "types":{ - "function":"ფუნქცია", - "number":"ციფრი", - "string":"სტრინგი", - "nan":"nan", - "integer":"ინტეჯერი", - "float":"ათწილადი", - "boolean":"boolean", - "date":"თარიღი", - "bigint":"bigint", - "undefined":"undefined", - "symbol":"სიმბოლო", - "null":"null", - "array":"სია", - "object":"ობიექტი", - "unknown":"უცნობი", - "promise":"promise", - "void":"void", - "never":"არასოდეს", - "map":"map", - "set":"სეტი" - } + } + }, + "validations": { + "email": "ელ-ფოსტა", + "url": "ლინკი", + "uuid": "uuid", + "cuid": "cuid", + "regex": "regex", + "datetime": "დრო და თარიღი" + }, + "types": { + "function": "ფუნქცია", + "number": "ციფრი", + "string": "სტრინგი", + "nan": "nan", + "integer": "ინტეჯერი", + "float": "ათწილადი", + "boolean": "boolean", + "date": "თარიღი", + "bigint": "bigint", + "undefined": "undefined", + "symbol": "სიმბოლო", + "null": "null", + "array": "სია", + "object": "ობიექტი", + "unknown": "უცნობი", + "promise": "promise", + "void": "void", + "never": "არასოდეს", + "map": "map", + "set": "სეტი" + } } diff --git a/packages/core/tests/integrations/ka.test.ts b/packages/core/tests/integrations/ka.test.ts new file mode 100644 index 0000000..d754572 --- /dev/null +++ b/packages/core/tests/integrations/ka.test.ts @@ -0,0 +1,209 @@ +import { test, expect, beforeAll } from "vitest"; +import { z } from "zod"; +import { init, getErrorMessage, getErrorMessageFromZodError } from "./helpers"; + +const LOCALE = "ka"; + +beforeAll(async () => { + await init(LOCALE); +}); + +test("string parser error messages", () => { + const schema = z.string(); + + expect(getErrorMessage(schema.safeParse(undefined))).toEqual("საჭიროა"); + expect(getErrorMessage(schema.safeParse(1))).toEqual( + "უნდა ყოფილიყო სტრინგი, მიიღო ციფრი" + ); + expect(getErrorMessage(schema.safeParse(true))).toEqual( + "უნდა ყოფილიყო სტრინგი, მიიღო boolean" + ); + expect(getErrorMessage(schema.safeParse(Date))).toEqual( + "უნდა ყოფილიყო სტრინგი, მიიღო ფუნქცია" + ); + expect(getErrorMessage(schema.safeParse(new Date()))).toEqual( + "უნდა ყოფილიყო სტრინგი, მიიღო თარიღი" + ); + expect(getErrorMessage(schema.email().safeParse(""))).toEqual( + "არასწორი ელ-ფოსტა" + ); + expect(getErrorMessage(schema.url().safeParse(""))).toEqual("არასწორი ლინკი"); + expect(getErrorMessage(schema.regex(/aaa/).safeParse(""))).toEqual( + "არასწორი" + ); + expect(getErrorMessage(schema.startsWith("foo").safeParse(""))).toEqual( + 'არასწორი მნიშვნელობა: უნდა დაიწყოს "foo"-ით' + ); + expect(getErrorMessage(schema.endsWith("bar").safeParse(""))).toEqual( + 'არასწორი მნიშვნელობა: უნდა დამთავრდეს "bar"-ით' + ); + expect(getErrorMessage(schema.min(5).safeParse("a"))).toEqual( + "სტრინგი უნდა შეიცავდეს მინიმუმ 5 სიმბოლოებს" + ); + expect(getErrorMessage(schema.max(5).safeParse("abcdef"))).toEqual( + "სტრინგი უნდა შეიცავდეს მაქსიმუმ 5 სიმბოლოებს" + ); + expect(getErrorMessage(schema.length(5).safeParse("abcdef"))).toEqual( + "სტრინგი უნდა შეიცავდეს ზუსტად 5 სიმბოლოებს" + ); + expect( + getErrorMessage(schema.datetime().safeParse("2020-01-01T00:00:00+02:00")) + ).toEqual("არასწორი დრო და თარიღი"); +}); + +test("number parser error messages", () => { + const schema = z.number(); + + expect(getErrorMessage(schema.safeParse(undefined))).toEqual("საჭიროა"); + expect(getErrorMessage(schema.safeParse(null))).toEqual("საჭიროა"); + expect(getErrorMessage(schema.safeParse(""))).toEqual( + "უნდა ყოფილიყო ციფრი, მიიღო სტრინგი" + ); + expect(getErrorMessage(schema.safeParse(NaN))).toEqual( + "უნდა ყოფილიყო ციფრი, მიიღო nan" + ); + expect(getErrorMessage(schema.int().safeParse(0.1))).toEqual( + "უნდა ყოფილიყო ინტეჯერი, მიიღო ათწილადი" + ); + expect(getErrorMessage(schema.multipleOf(5).safeParse(2))).toEqual( + "ციფრი უნდა იყოს 5-ის ჯერადი" + ); + expect(getErrorMessage(schema.step(0.1).safeParse(0.0001))).toEqual( + "ციფრი უნდა იყოს 0.1-ის ჯერადი" + ); + expect(getErrorMessage(schema.lt(5).safeParse(10))).toEqual( + "ციფრი ნაკლები უნდა იყოს 5-ზე" + ); + expect(getErrorMessage(schema.lte(5).safeParse(10))).toEqual( + "ციფრი ან ნაკლები ან ტოლი უნდა იყოს 5-ზე" + ); + expect(getErrorMessage(schema.gt(5).safeParse(1))).toEqual( + "ციფრი მეტი უნდა იყოს 5-ზე" + ); + expect(getErrorMessage(schema.gte(5).safeParse(1))).toEqual( + "ციფრი ან მეტი ან ტოლი უნდა იყოს 5-ზე" + ); + expect(getErrorMessage(schema.nonnegative().safeParse(-1))).toEqual( + "ციფრი ან მეტი ან ტოლი უნდა იყოს 0-ზე" + ); + expect(getErrorMessage(schema.nonpositive().safeParse(1))).toEqual( + "ციფრი ან ნაკლები ან ტოლი უნდა იყოს 0-ზე" + ); + expect(getErrorMessage(schema.negative().safeParse(1))).toEqual( + "ციფრი ნაკლები უნდა იყოს 0-ზე" + ); + expect(getErrorMessage(schema.positive().safeParse(0))).toEqual( + "ციფრი მეტი უნდა იყოს 0-ზე" + ); + expect(getErrorMessage(schema.finite().safeParse(Infinity))).toEqual( + "ციფრი უნდა იყოს ფინიტური" + ); +}); + +test("date parser error messages", async () => { + const testDate = new Date("2022-08-01"); + const schema = z.date(); + + expect(getErrorMessage(schema.safeParse("2022-12-01"))).toEqual( + "უნდა ყოფილიყო თარიღი, მიიღო სტრინგი" + ); + expect( + getErrorMessage(schema.min(testDate).safeParse(new Date("2022-07-29"))) + ).toEqual( + `თარიღი ან მეტი ან ტოლი უნდა იყოს ${testDate.toLocaleDateString(LOCALE)}-ზე` + ); + expect( + getErrorMessage(schema.max(testDate).safeParse(new Date("2022-08-02"))) + ).toEqual( + `თარიღი ან ნაკლები ან ტოლი უნდა იყოს ${testDate.toLocaleDateString( + LOCALE + )}-ზე` + ); + try { + await schema.parseAsync(new Date("invalid")); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("არასწორი თარიღი"); + } +}); + +test("array parser error messages", () => { + const schema = z.string().array(); + + expect(getErrorMessage(schema.safeParse(""))).toEqual( + "უნდა ყოფილიყო სია, მიიღო სტრინგი" + ); + expect(getErrorMessage(schema.min(5).safeParse([""]))).toEqual( + "სია უნდა შეიცავდეს მინიმუმ 5 ელემენტს" + ); + expect(getErrorMessage(schema.max(2).safeParse(["", "", ""]))).toEqual( + "სია უნდა შეიცავდეს მაქსიმუმ 2 ელემენტს" + ); + expect(getErrorMessage(schema.nonempty().safeParse([]))).toEqual( + "სია უნდა შეიცავდეს მინიმუმ 1 ელემენტს" + ); + expect(getErrorMessage(schema.length(2).safeParse([]))).toEqual( + "სია უნდა შეიცავდეს ზუსტად 2 ელემენტს" + ); +}); + +test("function parser error messages", () => { + const functionParse = z + .function(z.tuple([z.string()]), z.number()) + .parse((a: any) => a); + expect(getErrorMessageFromZodError(() => functionParse(""))).toEqual( + "არასწორი ფუნქციის დაბრუნების ტიპი" + ); + expect(getErrorMessageFromZodError(() => functionParse(1 as any))).toEqual( + "არასწორი ფუნქციის არგუმენტები" + ); +}); + +test("other parser error messages", () => { + expect( + getErrorMessage( + z + .intersection( + z.number(), + z.number().transform((x) => x + 1) + ) + .safeParse(1234) + ) + ).toEqual("გადაკვეთის შედეგები ვერ გაერთიანდა"); + expect(getErrorMessage(z.literal(12).safeParse(""))).toEqual( + "არასწორი მნიშვნელობა, უნდა ყოფილიყო 12" + ); + expect(getErrorMessage(z.enum(["A", "B", "C"]).safeParse("D"))).toEqual( + "არასწორი ენუმერატორის მნიშვნელობა. უნდა ყოფილიყო 'A' | 'B' | 'C', მიიღო 'D'" + ); + expect( + getErrorMessage( + z + .object({ dog: z.string() }) + .strict() + .safeParse({ dog: "", cat: "", rat: "" }) + ) + ).toEqual("უცნობი მნიშვნელობები ობიექტში: '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("არასწორი მნიშვნელობა, უნდა ყოფილიყო 'a' | 'b'"); + expect( + getErrorMessage(z.union([z.string(), z.number()]).safeParse([true])) + ).toEqual("არასწორი მნიშვნელობა"); + expect( + getErrorMessage( + z + .string() + .refine(() => { + return false; + }) + .safeParse("") + ) + ).toEqual("არასწორი მნიშვნელობა"); +});