;
31 | ```
32 | ::
33 |
34 | ::div
35 | ---
36 | label: Component
37 | ---
38 |
39 | ```vue [overload.vue]
40 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | Save
67 |
68 |
69 |
70 | ```
71 | ::
72 |
73 | ::div
74 | ---
75 | label: en-GB Locale
76 | ---
77 |
78 | ```json [en-GB.json]
79 | {
80 | "zodI18n": {
81 | "errors": {
82 | "invalid_string": {
83 | "url": "overload by your global translation, original translation: Invalid url"
84 | }
85 | }
86 | }
87 | }
88 | ```
89 | ::
90 | ::
91 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Nuxt ZodI18n
2 |
3 | [![npm version][npm-version-src]][npm-version-href]
4 | [![npm downloads][npm-downloads-src]][npm-downloads-href]
5 | [![License][license-src]][license-href]
6 | [![Nuxt][nuxt-src]][nuxt-href]
7 |
8 | A Nuxt Module for localizing zod error messages.
9 |
10 | Check the playground for usage doc and test will come later
11 |
12 | - [✨ Release Notes](/CHANGELOG.md)
13 | - [🏀 Online playground](https://stackblitz.com/github/xibman/nuxt-zod-i18n?file=playground%2Fapp.vue)
14 |
15 |
16 | ## Features
17 |
18 |
19 |
20 | - This library depends on [@nuxtjs/i18n](https://i18n.nuxtjs.org/) .
21 | - Provide a Global error map for zod see [Zod ERROR_HANDLING](https://zod.dev/ERROR_HANDLING?id=global-error-map)
22 | - Translation for zod errors based on [ZodIssueCode](https://zod.dev/ERROR_HANDLING?id=zodissuecode)
23 | - A way to translate custom errors
24 |
25 | ## Quick Setup
26 |
27 | 1. Add `nuxt-zod-i18n` dependency to your project
28 |
29 | ```bash
30 | npx nuxi@latest module add nuxt-zod-i18n
31 | ```
32 |
33 | 2. Add `nuxt-zod-i18n` to the `modules` section of `nuxt.config.ts` before `@nuxtjs/i18n` module
34 |
35 | ```js
36 | export default defineNuxtConfig({
37 | modules: ['nuxt-zod-i18n', '@nuxtjs/i18n']
38 | })
39 | ```
40 |
41 | That's it! You can now use Nuxt ZodI18n in your Nuxt app ✨
42 |
43 | ## Development
44 |
45 | ```bash
46 | # Install dependencies
47 | npm install
48 |
49 | # Generate type stubs
50 | npm run dev:prepare
51 |
52 | # Develop with the playground
53 | npm run dev
54 |
55 | # Build the playground
56 | npm run dev:build
57 |
58 | # Run ESLint
59 | npm run lint
60 |
61 | # Run Vitest
62 | npm run test
63 | npm run test:watch
64 |
65 | # Release new version
66 | npm run release
67 | ```
68 |
69 |
70 | [npm-version-src]: https://img.shields.io/npm/v/nuxt-zod-i18n/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
71 | [npm-version-href]: https://npmjs.com/package/nuxt-zod-i18n
72 |
73 | [npm-downloads-src]: https://img.shields.io/npm/dm/nuxt-zod-i18n.svg?style=flat&colorA=18181B&colorB=28CF8D
74 | [npm-downloads-href]: https://npm.chart.dev/nuxt-zod-i18n
75 |
76 | [license-src]: https://img.shields.io/npm/l/nuxt-zod-i18n.svg?style=flat&colorA=18181B&colorB=28CF8D
77 | [license-href]: https://npmjs.com/package/nuxt-zod-i18n
78 |
79 | [nuxt-src]: https://img.shields.io/badge/Nuxt-18181B?logo=nuxt.js
80 | [nuxt-href]: https://nuxt.com
81 |
--------------------------------------------------------------------------------
/.github/workflows/studio.yml:
--------------------------------------------------------------------------------
1 | name: studio-nuxt-build
2 | run-name: studio nuxt build
3 |
4 | on:
5 | # Runs on pushes targeting the default branch
6 | push:
7 | branches:
8 | - 'main'
9 |
10 | # Allows you to run this workflow manually from the Actions tab
11 | workflow_dispatch:
12 |
13 | env:
14 | HUSKY: 0
15 |
16 | # Add write workflow permissions
17 | permissions:
18 | contents: write
19 |
20 | # Allow one concurrent deployment
21 | concurrency:
22 | group: 'pages'
23 | cancel-in-progress: true
24 |
25 | jobs:
26 | # Build job
27 | build-and-deploy:
28 | runs-on: ${{ matrix.os }}
29 |
30 | strategy:
31 | matrix:
32 | os: [ubuntu-latest]
33 | node: [20]
34 |
35 | steps:
36 | - name: Checkout
37 | uses: actions/checkout@v4
38 |
39 | - name: Identify package manager
40 | id: pkgman
41 | run: |
42 | cache=`[ -f "docs/pnpm-lock.yaml" ] && echo "pnpm" || ([ -f "docs/package-lock.json" ] && echo "npm" || ([ -f "docs/yarn.lock" ] && echo "yarn" || echo ""))`
43 | package_manager=`[ ! -z "$cache" ] && echo "$cache" || echo "pnpm"`
44 | echo "cache=$cache" >> $GITHUB_OUTPUT
45 | echo "package_manager=$package_manager" >> $GITHUB_OUTPUT
46 |
47 | - uses: pnpm/action-setup@v4
48 | if: ${{ steps.pkgman.outputs.package_manager == 'pnpm' }}
49 | name: Install pnpm
50 | id: pnpm-install
51 | with:
52 | version: 10.13.1
53 |
54 | - uses: actions/setup-node@v4
55 | with:
56 | node-version: ${{ matrix.node }}
57 | cache: ${{ steps.pkgman.outputs.cache }}
58 |
59 | - name: Install dependencies
60 | run: ${{ steps.pkgman.outputs.package_manager }} install
61 |
62 | - name: Prepare Module
63 | run: ${{ steps.pkgman.outputs.package_manager }} dev:prepare
64 |
65 |
66 | - name: Generate
67 | run: ${{ steps.pkgman.outputs.package_manager }} docs:generate
68 | env:
69 | NUXT_PUBLIC_STUDIO_API_URL: https://api.nuxt.studio
70 | NUXT_PUBLIC_STUDIO_TOKENS: 021898e2298d7d23c1c6f39ef9c1e5c66b4fd4f9415f2a69dbb18f23b3c3016d
71 | NUXT_UI_PRO_LICENSE: ${{ secrets.NUXT_UI_PRO_LICENSE }}
72 | NUXT_PUBLIC_SITE_URL: ${{ vars.NUXT_PUBLIC_SITE_URL }}
73 |
74 | - name: Add .nojekyll file
75 | run: touch ./docs/.output/public/.nojekyll
76 |
77 | # Deployment job
78 | - name: Deploy 🚀
79 | uses: JamesIves/github-pages-deploy-action@v4
80 | with:
81 | folder: ./docs/.output/public
82 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.yml:
--------------------------------------------------------------------------------
1 | name: '🐛 Bug report'
2 | description: Report a bug to help us improve the module.
3 | labels: ['bug']
4 | body:
5 | - type: markdown
6 | attributes:
7 | value: |
8 | Before reporting a bug, please make sure that you have read through our [documentation](https://xibman-nuxt-zod-i18n.nuxt.space) and existing [issues](https://github.com/xibman/nuxt-zod-i18n/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc).
9 | - type: textarea
10 | id: env
11 | attributes:
12 | label: Environment
13 | description: You can use `npx nuxi info` to fill this section
14 | placeholder: |
15 | - Operating System: `Darwin`
16 | - Node Version: `v18.16.0`
17 | - Nuxt Version: `3.7.3`
18 | - CLI Version: `3.8.4`
19 | - Nitro Version: `2.6.3`
20 | - Package Manager: `pnpm@8.7.4`
21 | - Builder: `-`
22 | - User Config: `-`
23 | - Runtime Modules: `-`
24 | - Build Modules: `-`
25 | validations:
26 | required: true
27 | - type: input
28 | id: version
29 | attributes:
30 | label: Version
31 | placeholder: v2.8.0
32 | validations:
33 | required: true
34 | - type: textarea
35 | id: reproduction
36 | attributes:
37 | label: Reproduction
38 | description: Please provide a reproduction link using this template https://stackblitz.com/github/xibman/nuxt-zod-i18n. A minimal [reproduction is required](https://antfu.me/posts/why-reproductions-are-required) unless you are absolutely sure that the issue is obvious and the provided information is enough to understand the problem. If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label. If no reproduction is provided we might close it.
39 | placeholder: https://stackblitz.com/github/xibman/nuxt-zod-i18n
40 | validations:
41 | required: true
42 | - type: textarea
43 | id: description
44 | attributes:
45 | label: Description
46 | description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description.
47 | validations:
48 | required: true
49 | - type: textarea
50 | id: additonal
51 | attributes:
52 | label: Additional context
53 | description: If applicable, add any other context or screenshots here.
54 | - type: textarea
55 | id: logs
56 | attributes:
57 | label: Logs
58 | description: |
59 | Optional if provided reproduction. Please try not to insert an image but copy paste the log text.
60 | render: shell-script
61 |
--------------------------------------------------------------------------------
/docs/content/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Nuxt zodI18n
3 | description: Welcome to Nuxt zodI18n documentation.
4 | ---
5 |
6 | ::u-page-hero{}
7 | ---
8 | orientation: horizontal
9 | ---
10 |
11 |
12 | :::ProseH1
13 | Quick Setup
14 | :::
15 |
16 | :::prose-pre
17 | ---
18 | code: npx nuxi@latest module add nuxt-zod-i18n
19 | filename: Terminal
20 | ---
21 | ```bash
22 | npx nuxi@latest module add nuxt-zod-i18n
23 | ```
24 | :::
25 |
26 | :::prose-pre
27 | ---
28 | code: "export default defineNuxtConfig({\n modules: ['nuxt-zod-i18n', '@nuxtjs/i18n'] \n})"
29 | filename: nuxt.config.ts
30 | ---
31 | ```ts
32 | export default defineNuxtConfig({
33 | modules: ['nuxt-zod-i18n', '@nuxtjs/i18n']
34 | })
35 | ```
36 | :::
37 |
38 |
39 | #title
40 | Nuxt [zodI18n]{.text-primary}
41 |
42 | #description
43 | Easily Translate Zod''s default error messages.
44 |
45 | #links
46 | :::u-button
47 | ---
48 | size: xl
49 | to: /getting-started
50 | icon: i-heroicons-rocket-launch
51 | ---
52 | Get started
53 | :::
54 |
55 | :::u-button
56 | ---
57 | color: neutral
58 | icon: i-simple-icons-github
59 | size: xl
60 | target: _blank
61 | to: https://github.com/xibman/nuxt-zod-i18n
62 | variant: subtle
63 | ---
64 | Open on Github
65 | :::
66 |
67 | :::u-button
68 | ---
69 | color: neutral
70 | icon: i-simple-icons-stackblitz
71 | size: xl
72 | target: _blank
73 | to: https://stackblitz.com/github/xibman/nuxt-zod-i18n?file=playground%2Fapp.vue
74 | variant: subtle
75 | ---
76 | Playground
77 | :::
78 | ::
79 |
80 | ::u-page-section
81 | #title
82 | Translate zod error message easily
83 |
84 | #features
85 | :::u-page-card{spotlight-color="primary" spotlight}
86 | ---
87 | icon: i-simple-icons-googletranslate
88 | target: _blank
89 | to: https://github.com/xibman/nuxt-zod-i18n/tree/main/src/runtime/i18n/locales
90 | ---
91 | #title
92 | i18n
93 |
94 | #description
95 | Multiple locale available
96 | :::
97 |
98 | :::u-page-card{spotlight-color="primary" spotlight}
99 | ---
100 | icon: i-simple-icons-nuxtdotjs
101 | target: _blank
102 | to: https://i18n.nuxtjs.org/
103 | ---
104 | #title
105 | Nuxt i18n
106 |
107 | #description
108 | Integration with nuxt/i18n
109 | :::
110 |
111 | :::u-page-card{spotlight-color="primary" spotlight}
112 | ---
113 | icon: i-heroicons-arrow-path-solid
114 | target: _blank
115 | to: https://ui.nuxt.com
116 | ---
117 | #title
118 | Nuxt UI
119 |
120 | #description
121 | Lazy-loading of translation messages
122 | :::
123 | ::
124 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nuxt-zod-i18n",
3 | "version": "1.12.1",
4 | "description": "A Nuxt Module for localizing zod error messages.",
5 | "repository": "xibman/nuxt-zod-i18n",
6 | "license": "MIT",
7 | "type": "module",
8 | "exports": {
9 | ".": {
10 | "types": "./dist/types.d.mts",
11 | "import": "./dist/module.mjs"
12 | }
13 | },
14 | "main": "./dist/module.mjs",
15 | "typesVersions": {
16 | "*": {
17 | ".": [
18 | "./dist/types.d.mts"
19 | ]
20 | }
21 | },
22 | "files": [
23 | "dist"
24 | ],
25 | "scripts": {
26 | "check": "npm run lint:fix",
27 | "dev": "npm run dev:prepare && nuxi dev playground",
28 | "dev:build": "nuxi build playground",
29 | "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
30 | "docs:build": "nuxi build docs",
31 | "docs:dev": "nuxi dev docs",
32 | "docs:generate": "nuxi generate docs",
33 | "docs:preview": "nuxi preview docs",
34 | "fix": "npm run lint:fix",
35 | "i18n:download": "localazy download && pnpm fix",
36 | "i18n:upload": "localazy upload",
37 | "lint": "eslint .",
38 | "lint:fix": "pnpm lint --fix",
39 | "prepack": "nuxt-module-build build",
40 | "release": "npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags",
41 | "test": "vitest run",
42 | "test:watch": "vitest watch",
43 | "test:types": "vue-tsc --noEmit ",
44 | "prepare": "husky"
45 | },
46 | "dependencies": {
47 | "@nuxt/kit": "^3.17.7",
48 | "defu": "^6.1.4",
49 | "zod": "^3.25.76"
50 | },
51 | "devDependencies": {
52 | "@localazy/cli": "^2.0.8",
53 | "@nuxt/devtools": "^2.6.2",
54 | "@nuxt/eslint-config": "^1.7.1",
55 | "@nuxt/module-builder": "^1.0.2",
56 | "@nuxt/schema": "^3.17.7",
57 | "@nuxt/test-utils": "^3.19.2",
58 | "@nuxtjs/i18n": "^9.5.6",
59 | "@types/node": "^22.10.5",
60 | "changelogen": "^0.6.2",
61 | "eslint": "^9.31.0",
62 | "eslint-plugin-jsonc": "^2.20.1",
63 | "husky": "^9.1.7",
64 | "lint-staged": "^16.1.2",
65 | "nuxt": "^3.17.7",
66 | "typescript": "^5.8.3",
67 | "vitest": "^3.2.4",
68 | "vue-tsc": "^3.0.4"
69 | },
70 | "lint-staged": {
71 | "*.{js,ts,vue,json,md,yml}": "eslint"
72 | },
73 | "resolutions": {
74 | "unimport": "4.1.1"
75 | },
76 | "pnpm": {
77 | "onlyBuiltDependencies": [
78 | "better-sqlite3"
79 | ],
80 | "ignoredBuiltDependencies": [
81 | "vue-demi"
82 | ],
83 | "overrides": {
84 | "unimport": "4.1.1",
85 | "@nuxtjs/mdc@<0.17.2": ">=0.17.2",
86 | "@eslint/plugin-kit@<0.3.4": ">=0.3.4"
87 | }
88 | },
89 | "packageManager": "pnpm@10.13.1"
90 | }
91 |
--------------------------------------------------------------------------------
/docs/app/components/OgImage/OgImageDocs.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
54 |
55 |
56 |
60 | {{ headline }}
61 |
62 |
66 | {{ title }}
67 |
68 |
72 | {{ description }}
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/playground/app/pages/complex.vue:
--------------------------------------------------------------------------------
1 |
20 |
21 |
22 |
23 |
30 |
31 |
37 |
38 | {{ t('pages.index.title') }}
39 |
40 |
41 |
46 |
51 |
52 |
57 |
62 |
63 |
68 |
73 |
74 |
79 |
84 |
85 |
90 |
95 |
96 |
101 | {{ t('dictionary.save') }}
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/docs/app/pages/[...slug].vue:
--------------------------------------------------------------------------------
1 |
54 |
55 |
56 |
57 |
63 |
64 |
65 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
79 |
83 |
87 |
91 |
95 |
96 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/docs/public/img/nuxt-i18n.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/zh-TW.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "格式錯誤",
5 | "invalid_arguments": "參數錯誤",
6 | "invalid_date": "錯誤的日期",
7 | "invalid_enum_value": "無效的 '{received}' 值,請輸入 {options}",
8 | "invalid_intersection_types": "交集類型無法合併",
9 | "invalid_literal": "無效的輸入,請輸入 {expected}",
10 | "invalid_return_type": "錯誤的回傳值類型",
11 | "invalid_string": {
12 | "cuid": "{validation} 格式錯誤",
13 | "datetime": "{validation} 格式錯誤",
14 | "email": "{validation} 格式錯誤",
15 | "endsWith": "必須以 \"{endsWith}\" 結尾",
16 | "regex": "格式錯誤",
17 | "startsWith": "必須以 \"{startsWith}\" 開始",
18 | "url": "{validation} 格式錯誤",
19 | "uuid": "{validation} 格式錯誤"
20 | },
21 | "invalid_type": "期望輸入的是{expected},而輸入的是 {received}",
22 | "invalid_type_received_undefined": "必填的欄位",
23 | "invalid_union": "輸入格式錯誤",
24 | "invalid_union_discriminator": "無效的識別符,請輸入 {options}",
25 | "not_finite": "不能為無限值",
26 | "not_multiple_of": "必須是 {multipleOf} 的倍數",
27 | "required": "必填",
28 | "too_big": {
29 | "array": {
30 | "exact": "數組必須完 {maximum} 全包含元素",
31 | "inclusive": "最多只能包含 {maximum} 個元素",
32 | "not_inclusive": "必須少於 {maximum} 個元素"
33 | },
34 | "date": {
35 | "exact": "日期必須準確 {maximum}",
36 | "inclusive": "日期必須早於或等於 {maximum}",
37 | "not_inclusive": "日期必須早於 {maximum}"
38 | },
39 | "number": {
40 | "exact": "數字必須是準確的 {maximum}",
41 | "inclusive": "必須小於或等於 {maximum}",
42 | "not_inclusive": "必須小於 {maximum}"
43 | },
44 | "set": {
45 | "exact": "無效的輸入",
46 | "inclusive": "無效的輸入",
47 | "not_inclusive": "無效的輸入"
48 | },
49 | "string": {
50 | "exact": "字符串必須完 {maximum} 全包含字符",
51 | "inclusive": "最多只能包含 {maximum} 個字元",
52 | "not_inclusive": "必須少於 {maximum} 個字元"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "數組必須完 {minimum} 全包含元素",
58 | "inclusive": "至少需要包含 {minimum} 個元素",
59 | "not_inclusive": "必須包含多於 {minimum} 個元素"
60 | },
61 | "date": {
62 | "exact": "日期必須準確 {minimum}",
63 | "inclusive": "日期必須晚於或等於 {minimum}",
64 | "not_inclusive": "日期必須晚於 {minimum}"
65 | },
66 | "number": {
67 | "exact": "數字必須準確無誤 {minimum}",
68 | "inclusive": "必須大於或等於 {minimum}",
69 | "not_inclusive": "必須大於 {minimum}"
70 | },
71 | "set": {
72 | "exact": "無效的輸入",
73 | "inclusive": "無效的輸入",
74 | "not_inclusive": "無效的輸入"
75 | },
76 | "string": {
77 | "exact": "字串必須完全包含 {minimum} 人物)",
78 | "inclusive": "至少需要包含 {minimum} 個字元",
79 | "not_inclusive": "必須包含多於 {minimum} 個字元"
80 | }
81 | },
82 | "unrecognized_keys": "無法識別物件的鍵值:{keys}"
83 | },
84 | "types": {
85 | "array": "陣列",
86 | "bigint": "大整數",
87 | "boolean": "布林值",
88 | "date": "日期",
89 | "float": "浮點數",
90 | "function": "函數",
91 | "integer": "整數",
92 | "map": "字典",
93 | "nan": "NaN",
94 | "never": "不存在",
95 | "null": "空對象",
96 | "number": "數字",
97 | "object": "物件",
98 | "promise": "Promise",
99 | "set": "集合",
100 | "string": "字串",
101 | "symbol": "符號",
102 | "undefined": "未定義",
103 | "unknown": "未知",
104 | "void": "空"
105 | },
106 | "validations": {
107 | "cuid": "小心",
108 | "datetime": "日期時間",
109 | "email": "電子郵件",
110 | "regex": "正則表達式",
111 | "url": "連結",
112 | "uuid": "新聞"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/module.ts:
--------------------------------------------------------------------------------
1 | import { readdir } from 'node:fs/promises'
2 | import { defu } from 'defu'
3 | import {
4 | addPlugin,
5 | createResolver,
6 | defineNuxtModule,
7 | useLogger,
8 | } from '@nuxt/kit'
9 | import type { NuxtI18nOptions, LocaleObject } from '@nuxtjs/i18n'
10 | import { getNormalizedLocales } from './utils'
11 |
12 | // Module options TypeScript interface definition
13 | export interface ModuleOptions {
14 | useModuleLocale: boolean
15 | dateFormat: Intl.DateTimeFormatOptions
16 | localeCodesMapping?: Record
17 | }
18 |
19 | declare module '@nuxt/schema' {
20 | interface PublicRuntimeConfig {
21 | zodI18n: {
22 | dateFormat: Intl.DateTimeFormatOptions
23 | localeCodesMapping: Record
24 | }
25 | }
26 | }
27 |
28 | export default defineNuxtModule().with({
29 | meta: {
30 | compatibility: {
31 | nuxt: '>=3.0.0',
32 | },
33 | name: 'nuxt-zod-i18n',
34 | configKey: 'zodI18n',
35 | },
36 | // Default configuration options of the Nuxt module
37 | defaults: {
38 | useModuleLocale: true,
39 | dateFormat: {
40 | day: 'numeric',
41 | month: 'long',
42 | year: 'numeric',
43 | },
44 | },
45 | async setup(options, nuxt) {
46 | const { resolve } = createResolver(import.meta.url)
47 | const logger = useLogger('zodI18n')
48 |
49 | let i18nOptions: NuxtI18nOptions | null = null
50 |
51 | // Check NuxtI18n module availability
52 | const checkI18nAvailable = !nuxt.options.modules.some((module) => {
53 | const i18nModuleNames = ['@nuxtjs/i18n', '@nuxtjs/i18n-edge']
54 | if (typeof module === 'string') {
55 | const isRegistered = i18nModuleNames.includes(module)
56 | if (isRegistered) {
57 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
58 | i18nOptions = (nuxt.options as any).i18n
59 | }
60 | return isRegistered
61 | }
62 | if (Array.isArray(module)) {
63 | const [moduleName, options] = module
64 | const isRegistered = i18nModuleNames.includes(moduleName as string)
65 | if (isRegistered) {
66 | i18nOptions = options
67 | }
68 | return isRegistered
69 | }
70 |
71 | return false
72 | })
73 |
74 | if (checkI18nAvailable) {
75 | logger.fatal('Nuxt I18n required')
76 | }
77 |
78 | if (options.useModuleLocale) {
79 | const appLocalesCode = getNormalizedLocales(
80 | i18nOptions && (i18nOptions as NuxtI18nOptions)?.locales
81 | ? (i18nOptions as NuxtI18nOptions).locales
82 | : [],
83 | ).map(({ code }) => code)
84 |
85 | const languageFiles = await readdir(resolve('./runtime/i18n/locales'))
86 |
87 | const locales = languageFiles.reduce((acc, file) => {
88 | const code
89 | = options.localeCodesMapping?.[file.replace('.json', '')]
90 | || file.replace('.json', '')
91 | if (appLocalesCode.includes(code)) {
92 | acc.push({ file, code })
93 | }
94 |
95 | return acc
96 | }, [])
97 |
98 | nuxt.hook('i18n:registerModule', (register) => {
99 | register({
100 | langDir: resolve('./runtime/i18n/locales'),
101 | locales,
102 | })
103 | })
104 | }
105 |
106 | nuxt.options.runtimeConfig.public.zodI18n = defu(
107 | nuxt.options.runtimeConfig.public.zodI18n,
108 | {
109 | dateFormat: options.dateFormat as Intl.DateTimeFormatOptions,
110 | localeCodesMapping: options.localeCodesMapping,
111 | },
112 | )
113 |
114 | // Do not add the extension since the `.ts` will be transpiled to `.mjs` after `npm run prepack`
115 | addPlugin(resolve('./runtime/plugin'))
116 | },
117 | })
118 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "错误的输入格式",
5 | "invalid_arguments": "错误的函数参数格式",
6 | "invalid_date": "错误的日期格式",
7 | "invalid_enum_value": "错误的枚举值 '{received}'。请输入 {options}",
8 | "invalid_intersection_types": "交叉类型结果无法被合并",
9 | "invalid_literal": "错误的字面量值,请输入 {expected}",
10 | "invalid_return_type": "错误的函数返回值格式",
11 | "invalid_string": {
12 | "cuid": "错误的 {validation} 格式",
13 | "datetime": "错误的 {validation} 格式",
14 | "email": "错误的 {validation} 格式",
15 | "endsWith": "文本必须以 \"{endsWith}\" 结尾",
16 | "regex": "错误的格式",
17 | "startsWith": "文本必须以 \"{startsWith}\" 开头",
18 | "url": "错误的 {validation} 格式",
19 | "uuid": "错误的 {validation} 格式"
20 | },
21 | "invalid_type": "预期输入为 {expected},而输入为 {received}",
22 | "invalid_type_received_undefined": "必填",
23 | "invalid_union": "不满足联合类型中的选项",
24 | "invalid_union_discriminator": "标识值无法被区分。请输入 {options}",
25 | "not_finite": "数值必须有限",
26 | "not_multiple_of": "数值必须是 {multipleOf} 的倍数",
27 | "required": "必填",
28 | "too_big": {
29 | "array": {
30 | "exact": "数组元素必须为 {maximum} 个",
31 | "inclusive": "数组元素不得多于 {maximum} 个",
32 | "not_inclusive": "数组元素必须少于 {maximum} 个"
33 | },
34 | "date": {
35 | "exact": "日期必须为 {maximum}",
36 | "inclusive": "日期不得早于 {maximum}",
37 | "not_inclusive": "日期必须晚于 {maximum}"
38 | },
39 | "number": {
40 | "exact": "数值必须为 {maximum}",
41 | "inclusive": "数值不得大于 {maximum}",
42 | "not_inclusive": "数值必须小于 {maximum}"
43 | },
44 | "set": {
45 | "exact": "错误的输入格式",
46 | "inclusive": "错误的输入格式",
47 | "not_inclusive": "错误的输入格式"
48 | },
49 | "string": {
50 | "exact": "文本长度必须为 {maximum} 个字符",
51 | "inclusive": "文本长度不得多于 {maximum} 个字符",
52 | "not_inclusive": "文本长度必须少于 {maximum} 个字符"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "数组元素必须为 {minimum} 个",
58 | "inclusive": "数组元素不得少于 {minimum} 个",
59 | "not_inclusive": "数组元素必须超过 {minimum} 个"
60 | },
61 | "date": {
62 | "exact": "日期必须为 {minimum}",
63 | "inclusive": "日期不得晚于 {minimum}",
64 | "not_inclusive": "日期必须早于 {minimum}"
65 | },
66 | "number": {
67 | "exact": "数值必须为 {minimum}",
68 | "inclusive": "数值不得小于 {minimum}",
69 | "not_inclusive": "数值必须大于 {minimum}"
70 | },
71 | "set": {
72 | "exact": "错误的输入格式",
73 | "inclusive": "错误的输入格式",
74 | "not_inclusive": "错误的输入格式"
75 | },
76 | "string": {
77 | "exact": "文本长度必须为 {minimum} 个字符",
78 | "inclusive": "文本长度不得少于 {minimum} 个字符",
79 | "not_inclusive": "文本长度必须超过 {minimum} 个字符"
80 | }
81 | },
82 | "unrecognized_keys": "对象中的键无法识别: {keys}"
83 | },
84 | "types": {
85 | "array": "数组",
86 | "bigint": "大整数",
87 | "boolean": "布尔值",
88 | "date": "日期",
89 | "float": "浮点数",
90 | "function": "函数",
91 | "integer": "整数",
92 | "map": "字典",
93 | "nan": "非数",
94 | "never": "不存在",
95 | "null": "空对象",
96 | "number": "数字",
97 | "object": "对象",
98 | "promise": "Promise",
99 | "set": "集合",
100 | "string": "字符串",
101 | "symbol": "符号",
102 | "undefined": "未定义",
103 | "unknown": "未知",
104 | "void": "空"
105 | },
106 | "validations": {
107 | "cuid": "毛茸茸的",
108 | "datetime": "日期时间",
109 | "email": "邮件",
110 | "regex": "正则表达式",
111 | "url": "链接",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/fa-IR.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "ورودی نامعتبر",
5 | "invalid_arguments": "آرگومان های تابع نامعتبر است",
6 | "invalid_date": "تاریخ نامعتبر",
7 | "invalid_enum_value": "مقدار enum نامعتبر است. انتظار می رود {options} بررسی شود، دریافت '{received}'",
8 | "invalid_intersection_types": "نتایج فصل مشترک را نمیتوان ادغام کرد",
9 | "invalid_literal": "مقدار دقیق نامعتبر، {expected} مورد انتظار است",
10 | "invalid_return_type": "نوع بارگشت تابع نامعتبر است",
11 | "invalid_string": {
12 | "cuid": "{validation} نامعتبر",
13 | "datetime": "{validation} نامعتبر",
14 | "email": "{validation} نامعتبر",
15 | "endsWith": "ورودی نامعتبر: باید با «{endsWith}» پایان یابد",
16 | "regex": "نامعتبر",
17 | "startsWith": "ورودی نامعتبر: باید با \"{startsWith}» شروع شود",
18 | "url": "{validation} نامعتبر",
19 | "uuid": "{validation} نامعتبر"
20 | },
21 | "invalid_type": "{expected} مورد انتظار بود، {received} دریافت شده",
22 | "invalid_type_received_undefined": "مورد نیاز",
23 | "invalid_union": "ورودی نامعتبر",
24 | "invalid_union_discriminator": "مقدار تفکیک کننده نامعتبر. انتظار میرود {options} بررسی شود",
25 | "not_finite": "عدد باید محدود باشد",
26 | "not_multiple_of": "عدد باید مضربی از {multipleOf} باشد",
27 | "required": "مورد نیاز",
28 | "too_big": {
29 | "array": {
30 | "exact": "آرایه باید دقیقاً شامل {maximum} عنصر باشد",
31 | "inclusive": "آرایه باید حاوی حداکثر {maximum} عتصر باشد",
32 | "not_inclusive": "آرایه باید حاوی کمتر از {maximum} عنصر باشد"
33 | },
34 | "date": {
35 | "exact": "تاریخ باید دقیقاً {maximum} باشد",
36 | "inclusive": "تاریخ باید کوچکتر یا مساوی {maximum} باشد",
37 | "not_inclusive": "تاریخ باید کوچکتر از {maximum} باشد"
38 | },
39 | "number": {
40 | "exact": "عدد باید دقیقا {maximum} باشد",
41 | "inclusive": "عدد باید کمتر یا مساوی {maximum} باشد",
42 | "not_inclusive": "عدد باید کمتر از {maximum} باشد"
43 | },
44 | "set": {
45 | "exact": "ورودی نامعتبر",
46 | "inclusive": "ورودی نامعتبر",
47 | "not_inclusive": "ورودی نامعتبر"
48 | },
49 | "string": {
50 | "exact": "رشته باید دقیقاً حاوی {maximum} کاراکتر باشد",
51 | "inclusive": "رشته باید حاوی حداکثر {maximum} کاراکتر باشد",
52 | "not_inclusive": "رشته باید حاوی کمتر از {maximum} کاراکتر باشد"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "آرایه باید دقیقاً شامل {minimum} عنصر باشد",
58 | "inclusive": "آرایه باید حداقل حاوی {minimum} عتصر باشد",
59 | "not_inclusive": "آرایه باید حاوی بیش از {minimum} عنصر باشد"
60 | },
61 | "date": {
62 | "exact": "تاریخ باید دقیقاً {minimum} باشد",
63 | "inclusive": "تاریخ باید بزرگتر یا برابر {minimum} باشد",
64 | "not_inclusive": "تاریخ باید بزرگتر از {minimum} باشد"
65 | },
66 | "number": {
67 | "exact": "عدد باید دقیقا {minimum} باشد",
68 | "inclusive": "عدد باید بزرگتر یا برابر {minimum} باشد",
69 | "not_inclusive": "عدد باید بزرگتر از {minimum} باشد"
70 | },
71 | "set": {
72 | "exact": "ورودی نامعتبر",
73 | "inclusive": "ورودی نامعتبر",
74 | "not_inclusive": "ورودی نامعتبر"
75 | },
76 | "string": {
77 | "exact": "رشته باید دقیقاً حاوی {minimum} کاراکتر باشد",
78 | "inclusive": "رشته باید حداقل حاوی {minimum} کاراکتر باشد",
79 | "not_inclusive": "رشته باید حاوی بیش از {minimum} کاراکتر باشد"
80 | }
81 | },
82 | "unrecognized_keys": "کلید (های) شناخته نشده در شی: {keys} بررسی شود"
83 | },
84 | "types": {
85 | "array": "array",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "date",
89 | "float": "float",
90 | "function": "function",
91 | "integer": "integer",
92 | "map": "map",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "number",
97 | "object": "object",
98 | "promise": "promise",
99 | "set": "set",
100 | "string": "string",
101 | "symbol": "symbol",
102 | "undefined": "undefined",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "روز و تاریخ",
109 | "email": "ایمیل",
110 | "regex": "regex",
111 | "url": "url",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/en-GB.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Invalid input",
5 | "invalid_arguments": "Invalid function arguments",
6 | "invalid_date": "Invalid date",
7 | "invalid_enum_value": "Invalid enum value. Expected {options}, received '{received}'",
8 | "invalid_intersection_types": "Intersection results could not be merged",
9 | "invalid_literal": "Invalid literal value, expected {expected}",
10 | "invalid_return_type": "Invalid function return type",
11 | "invalid_string": {
12 | "cuid": "Invalid {validation}",
13 | "datetime": "Invalid {validation}",
14 | "email": "Invalid {validation}",
15 | "endsWith": "Invalid input: must end with \"{endsWith}\"",
16 | "regex": "Invalid",
17 | "startsWith": "Invalid input: must start with \"{startsWith}\"",
18 | "url": "Invalid {validation}",
19 | "uuid": "Invalid {validation}"
20 | },
21 | "invalid_type": "Expected {expected}, received {received}",
22 | "invalid_type_received_undefined": "Required",
23 | "invalid_union": "Invalid input",
24 | "invalid_union_discriminator": "Invalid discriminator value. Expected {options}",
25 | "not_finite": "Number must be finite",
26 | "not_multiple_of": "Number must be a multiple of {multipleOf}",
27 | "required": "Required",
28 | "too_big": {
29 | "array": {
30 | "exact": "Array must contain exactly {maximum} element(s)",
31 | "inclusive": "Array must contain at most {maximum} element(s)",
32 | "not_inclusive": "Array must contain less than {maximum} element(s)"
33 | },
34 | "date": {
35 | "exact": "Date must be exactly {maximum}",
36 | "inclusive": "Date must be smaller than or equal to {maximum}",
37 | "not_inclusive": "Date must be smaller than {maximum}"
38 | },
39 | "number": {
40 | "exact": "Number must be exactly {maximum}",
41 | "inclusive": "Number must be less than or equal to {maximum}",
42 | "not_inclusive": "Number must be less than {maximum}"
43 | },
44 | "set": {
45 | "exact": "Invalid input",
46 | "inclusive": "Invalid input",
47 | "not_inclusive": "Invalid input"
48 | },
49 | "string": {
50 | "exact": "String must contain exactly {maximum} character(s)",
51 | "inclusive": "String must contain at most {maximum} character(s)",
52 | "not_inclusive": "String must contain under {maximum} character(s)"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Array must contain exactly {minimum} element(s)",
58 | "inclusive": "Array must contain at least {minimum} element(s)",
59 | "not_inclusive": "Array must contain more than {minimum} element(s)"
60 | },
61 | "date": {
62 | "exact": "Date must be exactly {minimum}",
63 | "inclusive": "Date must be greater than or equal to {minimum}",
64 | "not_inclusive": "Date must be greater than {minimum}"
65 | },
66 | "number": {
67 | "exact": "Number must be exactly {minimum}",
68 | "inclusive": "Number must be greater than or equal to {minimum}",
69 | "not_inclusive": "Number must be greater than {minimum}"
70 | },
71 | "set": {
72 | "exact": "Invalid input",
73 | "inclusive": "Invalid input",
74 | "not_inclusive": "Invalid input"
75 | },
76 | "string": {
77 | "exact": "String must contain exactly {minimum} character(s)",
78 | "inclusive": "String must contain at least {minimum} character(s)",
79 | "not_inclusive": "String must contain over {minimum} character(s)"
80 | }
81 | },
82 | "unrecognized_keys": "Unrecognized key(s) in object: {keys}"
83 | },
84 | "types": {
85 | "array": "array",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "date",
89 | "float": "float",
90 | "function": "function",
91 | "integer": "integer",
92 | "map": "map",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "number",
97 | "object": "object",
98 | "promise": "promise",
99 | "set": "set",
100 | "string": "string",
101 | "symbol": "symbol",
102 | "undefined": "undefined",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "datetime",
109 | "email": "email",
110 | "regex": "regex",
111 | "url": "url",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/uk-UA.json:
--------------------------------------------------------------------------------
1 | {
2 | "errors": {
3 | "custom": "Невірне введення",
4 | "invalid_arguments": "Невірні аргументи функції",
5 | "invalid_date": "Невірний формат дати",
6 | "invalid_enum_value": "Невірне значення enum. Очікувалося {options}, отримано '{received}'",
7 | "invalid_intersection_types": "Результати перетину не вдалося об'єднати",
8 | "invalid_literal": "Невірне літеральне значення, очікувалось {expected}",
9 | "invalid_return_type": "Невірний тип значення, що повертається функцією",
10 | "invalid_string": {
11 | "cuid": "Невірне введення {validation}",
12 | "datetime": "Невірний формат {validation}",
13 | "email": "Невірна {validation}",
14 | "endsWith": "Невірне введення: повинно закінчуватись на \"{endsWith}\"",
15 | "regex": "Невдала валідація",
16 | "startsWith": "Невірне введення: повинно починатись з \"{startsWith}\"",
17 | "url": "Невірний {validation}",
18 | "uuid": "Невірне введення {validation}"
19 | },
20 | "invalid_type": "Очікувався тип {expected}, отримано {received}",
21 | "invalid_type_received_undefined": "Обов'язковe поле",
22 | "invalid_union": "Невірне введення",
23 | "invalid_union_discriminator": "Неправильне значення дискримінатора. Очікувалось {options}",
24 | "not_finite": "Число повинно бути скінченним",
25 | "not_multiple_of": "Число повинно бути кратним {multipleOf}",
26 | "required": "Обов'язкове поле",
27 | "too_big": {
28 | "array": {
29 | "exact": "Масив повинен містити рівно {maximum} елемента(-ів)",
30 | "inclusive": "Масив повинен містити не більше {maximum} елемента(-ів)",
31 | "not_inclusive": "Масив повинен містити менше {maximum} елемента(-ів)"
32 | },
33 | "date": {
34 | "exact": "Дата повинна бути точно {maximum}",
35 | "inclusive": "Дата повинна бути меншою або дорівнювати {maximum}",
36 | "not_inclusive": "Дата повинно бути меншою ніж {maximum}"
37 | },
38 | "number": {
39 | "exact": "Число повинно бути рівно {maximum}",
40 | "inclusive": "Число повинно бути менше або дорівнювати {maximum}",
41 | "not_inclusive": "Число повинно бути менше {maximum}"
42 | },
43 | "set": {
44 | "exact": "Неправильний ввід",
45 | "inclusive": "Невірне введення",
46 | "not_inclusive": "Невірний ввід"
47 | },
48 | "string": {
49 | "exact": "Рядок повинен містити рівно {maximum} символа(-ів)",
50 | "inclusive": "Рядок повинен містити не більше {maximum} символа(-ів)",
51 | "not_inclusive": "Рядок повинен містити менше {maximum} символа(-ів)"
52 | }
53 | },
54 | "too_small": {
55 | "array": {
56 | "exact": "Масив повинен містити рівно {minimum} елемента(-ів)",
57 | "inclusive": "Масив повинен містити щонайменше {minimum} елемента(-ів)",
58 | "not_inclusive": "Масив повинен містити більше {minimum} елемента(-ів)"
59 | },
60 | "date": {
61 | "exact": "Дата повинно бути точно {minimum}",
62 | "inclusive": "Дата повинно бути більшою або рівною {minimum}",
63 | "not_inclusive": "Дата повинно бути більшою ніж {minimum}"
64 | },
65 | "number": {
66 | "exact": "Число повинно бути рівне {minimum}",
67 | "inclusive": "Число повинно бути більше або дорівнювати {minimum}",
68 | "not_inclusive": "Число повинно бути більше {minimum}"
69 | },
70 | "set": {
71 | "exact": "Невірний ввід",
72 | "inclusive": "Невірний ввід",
73 | "not_inclusive": "Невірний ввід"
74 | },
75 | "string": {
76 | "exact": "Рядок повинен містити рівно {minimum} символа(-ів)",
77 | "inclusive": "Рядок повинен містити щонайменше {minimum} символа(-ів)",
78 | "not_inclusive": "Рядок повинен містити більше {minimum} символа(-ів)"
79 | }
80 | },
81 | "unrecognized_keys": "Нерозпізнані ключі в об'єкті: {keys}"
82 | },
83 | "types": {
84 | "array": "масив",
85 | "bigint": "bigint",
86 | "boolean": "булеве значення",
87 | "date": "дата",
88 | "float": "дробове число",
89 | "function": "функція",
90 | "integer": "цифра",
91 | "map": "хеш-таблиця",
92 | "nan": "NaN",
93 | "never": "never",
94 | "null": "null",
95 | "number": "число",
96 | "object": "об'єкт",
97 | "promise": "promise",
98 | "set": "множина",
99 | "string": "рядок",
100 | "symbol": "символ",
101 | "undefined": "не визнечене",
102 | "unknown": "невідоме",
103 | "void": "void"
104 | },
105 | "validations": {
106 | "cuid": "cuid",
107 | "datetime": "дата й час",
108 | "email": "ел. пошта",
109 | "regex": "регулярний вираз",
110 | "url": "посилання",
111 | "uuid": "uuid"
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/id-ID.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Input tidak valid",
5 | "invalid_arguments": "Argumen function tidak valid",
6 | "invalid_date": "Tanggal tidak valid",
7 | "invalid_enum_value": "Nilai enum '{received}' tidak ditemukan dalam {options}",
8 | "invalid_intersection_types": "Hasil intersection tidak dapat disatukan",
9 | "invalid_literal": "Nilai literal tidak valid, seharusnya {expected}",
10 | "invalid_return_type": "Tipe data return function tidak valid",
11 | "invalid_string": {
12 | "cuid": "Format {validation} tidak valid",
13 | "datetime": "Format {validation} tidak valid",
14 | "email": "Format {validation} tidak valid",
15 | "endsWith": "String harus diakhiri dengan \"{endsWith}\"",
16 | "regex": "Tidak valid",
17 | "startsWith": "String harus dimulai dengan \"{startsWith}\"",
18 | "url": "Format {validation} tidak valid",
19 | "uuid": "Format {validation} tidak valid"
20 | },
21 | "invalid_type": "Nilai seharusnya memiliki tipe data {expected}, diterima {received}",
22 | "invalid_type_received_undefined": "Wajib diisi",
23 | "invalid_union": "Input tidak valid",
24 | "invalid_union_discriminator": "Nilai discriminator tidak ditemukan dalam {options}",
25 | "not_finite": "Angka harus berhingga",
26 | "not_multiple_of": "Angka harus merupakan kelipatan dari {multipleOf}",
27 | "required": "Wajib diisi",
28 | "too_big": {
29 | "array": {
30 | "exact": "Array harus berisi {maximum} elemen",
31 | "inclusive": "Array berisi maksimal {maximum} elemen",
32 | "not_inclusive": "Array harus berisi kurang dari {maximum} elemen"
33 | },
34 | "date": {
35 | "exact": "Tanggal harus bernilai {maximum}",
36 | "inclusive": "Tanggal harus kurang atau sama dengan dari {maximum}",
37 | "not_inclusive": "Tanggal harus kurang dari {maximum}"
38 | },
39 | "number": {
40 | "exact": "Angka harus bernilai {maximum}",
41 | "inclusive": "Angka harus kurang atau sama dengan {maximum}",
42 | "not_inclusive": "Angka harus kurang dari {maximum}"
43 | },
44 | "set": {
45 | "exact": "Input tidak valid",
46 | "inclusive": "Input tidak valid",
47 | "not_inclusive": "Input tidak valid"
48 | },
49 | "string": {
50 | "exact": "String harus {maximum} karakter",
51 | "inclusive": "String maksimal {maximum} karakter",
52 | "not_inclusive": "String harus kurang dari {maximum} karakter"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Array harus berisi {minimum} elemen",
58 | "inclusive": "Array harus berisi minimal {minimum} elemen",
59 | "not_inclusive": "Array harus berisi lebih dari {minimum} elemen"
60 | },
61 | "date": {
62 | "exact": "Tanggal harus bernilai {minimum}",
63 | "inclusive": "Tanggal harus lebih atau sama dengan dari {minimum}",
64 | "not_inclusive": "Tanggal harus lebih dari {minimum}"
65 | },
66 | "number": {
67 | "exact": "Angka harus bernilai {minimum}",
68 | "inclusive": "Angka harus lebih atau sama dengan dari {minimum}",
69 | "not_inclusive": "Angka harus lebih dari {minimum}"
70 | },
71 | "set": {
72 | "exact": "Input tidak valid",
73 | "inclusive": "Input tidak valid",
74 | "not_inclusive": "Input tidak valid"
75 | },
76 | "string": {
77 | "exact": "String harus {minimum} karakter",
78 | "inclusive": "String minimal {minimum} karakter",
79 | "not_inclusive": "String harus lebih dari {minimum} karakter"
80 | }
81 | },
82 | "unrecognized_keys": "Key {keys} tidak valid pada object"
83 | },
84 | "types": {
85 | "array": "array",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "date",
89 | "float": "float",
90 | "function": "function",
91 | "integer": "integer",
92 | "map": "map",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "number",
97 | "object": "object",
98 | "promise": "promise",
99 | "set": "set",
100 | "string": "string",
101 | "symbol": "symbol",
102 | "undefined": "undefined",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "datetime",
109 | "email": "email",
110 | "regex": "regex",
111 | "url": "url",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/cs-CZ.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Neplatný vstup",
5 | "invalid_arguments": "Neplatné argumenty funkce",
6 | "invalid_date": "Neplatné datum",
7 | "invalid_enum_value": "Neplatná hodnota výčtu. Očekává se {options}, ale bylo obdrženo '{received}'",
8 | "invalid_intersection_types": "Hodnoty průniku nelze sloučit",
9 | "invalid_literal": "Neplatná doslovná hodnota, očekává se {expected}",
10 | "invalid_return_type": "Neplatný typ návratové hodnoty",
11 | "invalid_string": {
12 | "cuid": "Neplatný {validation}",
13 | "datetime": "Neplatné {validation}",
14 | "email": "Neplatný {validation}",
15 | "endsWith": "Neplatný vstup: musí končit \"{endsWith}\"",
16 | "regex": "Neplatná kombinace",
17 | "startsWith": "Neplatný vstup: musí začínat \"{startsWith}\"",
18 | "url": "Neplatná {validation}",
19 | "uuid": "Neplatná {validation}"
20 | },
21 | "invalid_type": "Typ vstupu musí být {expected}, ale byl obdržen typ {received}",
22 | "invalid_type_received_undefined": "Povinné",
23 | "invalid_union": "Neplatný vstup",
24 | "invalid_union_discriminator": "Neplatná hodnota diskriminátoru. Očekává se {options}",
25 | "not_finite": "Číslo nesmí být nekonečné",
26 | "not_multiple_of": "Číslo musí být násobkem {multipleOf}",
27 | "required": "Požadované",
28 | "too_big": {
29 | "array": {
30 | "exact": "Pole musí obsahovat přesně {maximum} prvek/prvků",
31 | "inclusive": "Pole musí obsahovat nejvýše {maximum} prvek/prvků",
32 | "not_inclusive": "Pole musí obsahovat méně než {maximum} prvek/prvků"
33 | },
34 | "date": {
35 | "exact": "Datum musí být přesně {maximum}",
36 | "inclusive": "Datum musí být menší nebo rovno {maximum}",
37 | "not_inclusive": "Datum musí být menší než {maximum}"
38 | },
39 | "number": {
40 | "exact": "Číslo musí být přesně {maximum}",
41 | "inclusive": "Číslo musí být menší nebo rovno {maximum}",
42 | "not_inclusive": "Číslo musí být menší než {maximum}"
43 | },
44 | "set": {
45 | "exact": "Neplatný vstup",
46 | "inclusive": "Neplatný vstup",
47 | "not_inclusive": "Neplatný vstup"
48 | },
49 | "string": {
50 | "exact": "Text musí obsahovat přesně {maximum} znak/znaků",
51 | "inclusive": "Text musí obsahovat nejvýše {maximum} znak/znaků",
52 | "not_inclusive": "Text musí obsahovat méně než {maximum} znak/znaků"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Pole musí obsahovat přesně {minimum} prvek/prvků",
58 | "inclusive": "Pole musí obsahovat alespoň {minimum} prvek/prvků",
59 | "not_inclusive": "Pole musí obsahovat nejvýše {minimum} prvek/prvků"
60 | },
61 | "date": {
62 | "exact": "Datum musí být přesně {minimum}",
63 | "inclusive": "Datum musí být větší nebo rovno {minimum}",
64 | "not_inclusive": "Datum musí být větší než {minimum}"
65 | },
66 | "number": {
67 | "exact": "Číslo musí být přesně {minimum}",
68 | "inclusive": "Číslo musí být větší nebo rovno {minimum}",
69 | "not_inclusive": "Číslo musí být větší než {minimum}"
70 | },
71 | "set": {
72 | "exact": "Neplatný vstup",
73 | "inclusive": "Neplatný vstup",
74 | "not_inclusive": "Neplatný vstup"
75 | },
76 | "string": {
77 | "exact": "Text musí obsahovat přesně {minimum} znak/znaků",
78 | "inclusive": "Text musí obsahovat alespoň {minimum} znak/znaků",
79 | "not_inclusive": "Text musí obsahovat nejvýše {minimum} znak/znaků"
80 | }
81 | },
82 | "unrecognized_keys": "Nerozpoznané klíče v objektu: {keys}"
83 | },
84 | "types": {
85 | "array": "pole",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "datum",
89 | "float": "reálné číslo",
90 | "function": "funkce",
91 | "integer": "celé číslo",
92 | "map": "mapa",
93 | "nan": "NaN",
94 | "never": "never",
95 | "null": "null",
96 | "number": "číslo",
97 | "object": "objekt",
98 | "promise": "promise",
99 | "set": "mnnožina",
100 | "string": "text",
101 | "symbol": "symbol",
102 | "undefined": "nedefinováno",
103 | "unknown": "neznámý",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "datum a čas",
109 | "email": "e-mail",
110 | "regex": "regex",
111 | "url": "url",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/tr-TR.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Geçersiz girdi",
5 | "invalid_arguments": "Geçersiz fonksiyon parametreleri",
6 | "invalid_date": "Geçersiz tarih",
7 | "invalid_enum_value": "Geçersiz enum değeri. İncelemek için {options} bekleniyordu, '{received}' alındı",
8 | "invalid_intersection_types": "Kesişim sonuçları birleştirilemedi",
9 | "invalid_literal": "Geçersiz değer, beklenen {expected}",
10 | "invalid_return_type": "Fonksiyondan dönen tip geçersiz",
11 | "invalid_string": {
12 | "cuid": "Geçersiz {validation}",
13 | "datetime": "Geçersiz {validation}",
14 | "email": "Geçersiz {validation}",
15 | "endsWith": "Geçersiz girdi: Sonu \"{endsWith}\" ile bitmelidir",
16 | "regex": "Geçersiz",
17 | "startsWith": "Geçersiz girdi: \"{startsWith}” ile başlamalıdır",
18 | "url": "Geçersiz {validation}",
19 | "uuid": "Geçersiz {validation}"
20 | },
21 | "invalid_type": "Beklenen {expected}, alındı {received}",
22 | "invalid_type_received_undefined": "Gerekli",
23 | "invalid_union": "Geçersiz girdi",
24 | "invalid_union_discriminator": "Geçersiz ayırıcı değeri. İncelemek için beklenen {options}",
25 | "not_finite": "Sayı sonlu bir değer olmalıdır",
26 | "not_multiple_of": "Sayı bunların katı olmalıdır {multipleOf}",
27 | "required": "Gerekli",
28 | "too_big": {
29 | "array": {
30 | "exact": "Dizi tam olarak {maximum} öğe(ler) içermelidir",
31 | "inclusive": "Dizi en fazla {maximum} öğe(ler) içermelidir",
32 | "not_inclusive": "Dizi {maximum} sayıda elemandan daha az olmalıdır."
33 | },
34 | "date": {
35 | "exact": "Tarih tam olarak şu şekilde olmalıdır {maximum}",
36 | "inclusive": "Tarih, {maximum} değerinden küçük veya buna eşit olmalıdır",
37 | "not_inclusive": "Tarih {maximum} değerinden küçük olmalıdır"
38 | },
39 | "number": {
40 | "exact": "Sayı tam olarak {maximum} olmalıdır",
41 | "inclusive": "Sayı {maximum} veya bundan küçük olmalıdır:",
42 | "not_inclusive": "Sayı {maximum}'den küçük olmalıdır"
43 | },
44 | "set": {
45 | "exact": "Geçersiz girdi",
46 | "inclusive": "Geçersiz girdi",
47 | "not_inclusive": "Geçersiz girdi"
48 | },
49 | "string": {
50 | "exact": "Dize tam olarak {maximum} karakter içermelidir",
51 | "inclusive": "Dize en fazla {maximum} karakter içermelidir",
52 | "not_inclusive": "Dize {maximum} karakter altında olmalıdır"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Dizi tam olarak {minimum} öğe olmalıdır.",
58 | "inclusive": "Dizi en az {minimum} öğe içermelidir",
59 | "not_inclusive": "Dizi {minimum} adresinden daha fazla öğe içermelidir"
60 | },
61 | "date": {
62 | "exact": "Tarih tam olarak {minimum} olmalıdır",
63 | "inclusive": "Tarih {minimum} tarihten büyük veya ona eşit olmalıdır:",
64 | "not_inclusive": "Tarih {minimum}'den büyük olmalıdır"
65 | },
66 | "number": {
67 | "exact": "Sayı tam olarak {minimum} olmalıdır",
68 | "inclusive": "Sayı {minimum} den büyük veya ona eşit olmalıdır",
69 | "not_inclusive": "Sayı {minimum}'den büyük olmalıdır"
70 | },
71 | "set": {
72 | "exact": "Geçersiz girdi",
73 | "inclusive": "Geçersiz girdi",
74 | "not_inclusive": "Geçersiz girdi"
75 | },
76 | "string": {
77 | "exact": "Dize tam olarak {minimum} karakter içermelidir",
78 | "inclusive": "Dize en az {minimum} karakter içermelidir",
79 | "not_inclusive": "Dize {minimum} üzerinde karakter içermelidir"
80 | }
81 | },
82 | "unrecognized_keys": "Nesnedeki tanınmayan anahtarlar:{keys} incele"
83 | },
84 | "types": {
85 | "array": "dizi",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "tarih",
89 | "float": "float",
90 | "function": "fonksiyon",
91 | "integer": "tam sayı",
92 | "map": "harita",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "number",
97 | "object": "object",
98 | "promise": "promise",
99 | "set": "set",
100 | "string": "string",
101 | "symbol": "sembol",
102 | "undefined": "tanımsız",
103 | "unknown": "bilinmeyen",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "datetime",
109 | "email": "email",
110 | "regex": "regex",
111 | "url": "url",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/nl-NL.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Ongeldige invoer",
5 | "invalid_arguments": "Ongeldige functieargumenten",
6 | "invalid_date": "Ongeldige datum",
7 | "invalid_enum_value": "Ongeldige enumwaarde. Verwacht {options}, ontvangt '{received}'",
8 | "invalid_intersection_types": "Resultaten van intersecties konden niet worden samengevoegd",
9 | "invalid_literal": "Ongeldige waarde, verwacht {expected}",
10 | "invalid_return_type": "Ongeldig functiereturntype",
11 | "invalid_string": {
12 | "cuid": "Ongeldige {validation}",
13 | "datetime": "Ongeldige {validation}",
14 | "email": "Ongeldige {validation}",
15 | "endsWith": "Ongeldige invoer: moet eindigen met \"{endsWith}\"",
16 | "regex": "Ongeldig",
17 | "startsWith": "Ongeldige invoer: moet beginnen met \"{startsWith}\"",
18 | "url": "Ongeldige {validation}",
19 | "uuid": "Ongeldige {validation}"
20 | },
21 | "invalid_type": "Verwacht {expected}, ontvangen {received}",
22 | "invalid_type_received_undefined": "Verplicht",
23 | "invalid_union": "Ongeldige invoer",
24 | "invalid_union_discriminator": "Ongeldige discriminatiewaarde. Verwacht {options}",
25 | "not_finite": "Getal moet eindig zijn",
26 | "not_multiple_of": "Getal moet een veelvoud zijn van {multipleOf}",
27 | "required": "Verplicht",
28 | "too_big": {
29 | "array": {
30 | "exact": "Array moet exact {maximum} element(en) bevatten",
31 | "inclusive": "Array mag maximaal {maximum} element(en) bevatten",
32 | "not_inclusive": "Array moet minder dan {maximum} element(en) bevatten"
33 | },
34 | "date": {
35 | "exact": "Datum moet exact {maximum} zijn",
36 | "inclusive": "Datum moet kleiner of gelijk zijn aan {maximum}",
37 | "not_inclusive": "Datum moet kleiner zijn dan {maximum}"
38 | },
39 | "number": {
40 | "exact": "Getal moet exact {maximum} zijn",
41 | "inclusive": "Getal moet kleiner of gelijk zijn aan {maximum}",
42 | "not_inclusive": "Getal moet kleiner zijn dan {maximum}"
43 | },
44 | "set": {
45 | "exact": "Ongeldige invoer",
46 | "inclusive": "Ongeldige invoer",
47 | "not_inclusive": "Ongeldige invoer"
48 | },
49 | "string": {
50 | "exact": "String moet exact {maximum} teken(en) bevatten",
51 | "inclusive": "String mag maximaal {maximum} teken(en) bevatten",
52 | "not_inclusive": "String moet minder dan {maximum} teken(en) bevatten"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Array moet exact {minimum} element(en) bevatten",
58 | "inclusive": "Array moet minimaal {minimum} element(en) bevatten",
59 | "not_inclusive": "Array moet meer dan {minimum} element(en) bevatten"
60 | },
61 | "date": {
62 | "exact": "Datum moet exact {minimum} zijn",
63 | "inclusive": "Datum moet groter of gelijk zijn aan {minimum}",
64 | "not_inclusive": "Datum moet groter zijn dan {minimum}"
65 | },
66 | "number": {
67 | "exact": "Getal moet exact {minimum} zijn",
68 | "inclusive": "Getal moet groter of gelijk zijn aan {minimum}",
69 | "not_inclusive": "Getal moet groter zijn dan {minimum}"
70 | },
71 | "set": {
72 | "exact": "Ongeldige invoer",
73 | "inclusive": "Ongeldige invoer",
74 | "not_inclusive": "Ongeldige invoer"
75 | },
76 | "string": {
77 | "exact": "String moet exact {minimum} karakter(s) bevatten",
78 | "inclusive": "String moet minimaal {minimum} karakter(s) bevatten",
79 | "not_inclusive": "String moet meer dan {minimum} karakter(s) bevatten"
80 | }
81 | },
82 | "unrecognized_keys": "Onbekende key(s) in object: {keys}"
83 | },
84 | "types": {
85 | "array": "array",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "datum",
89 | "float": "float",
90 | "function": "function",
91 | "integer": "integer",
92 | "map": "map",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "getal",
97 | "object": "object",
98 | "promise": "promise",
99 | "set": "set",
100 | "string": "string",
101 | "symbol": "symbol",
102 | "undefined": "undefined",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "datetime",
109 | "email": "email",
110 | "regex": "regex",
111 | "url": "url",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/de-DE.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Ungültige Eingabe",
5 | "invalid_arguments": "Ungültige Funktionsargumente",
6 | "invalid_date": "Ungültiges Datum",
7 | "invalid_enum_value": "Ungültiger Enum-Wert. {options} erwartet, '{received}' erhalten",
8 | "invalid_intersection_types": "Schnittmengenergebnisse konnten nicht zusammengeführt werden",
9 | "invalid_literal": "Ungültiger Literalwert, {expected} erwartet",
10 | "invalid_return_type": "Ungültiger Funktionsrückgabewert",
11 | "invalid_string": {
12 | "cuid": "Ungültige {validation}",
13 | "datetime": "Ungültiger {validation}",
14 | "email": "Ungültige {validation}",
15 | "endsWith": "Ungültige Eingabe: muss mit \"{endsWith}\" enden",
16 | "regex": "Ungültig",
17 | "startsWith": "Ungültige Eingabe: muss mit \"{startsWith}\" beginnen",
18 | "url": "Ungültige {validation}",
19 | "uuid": "Ungültige {validation}"
20 | },
21 | "invalid_type": "{expected} erwartet, {received} erhalten",
22 | "invalid_type_received_undefined": "Darf nicht leer sein",
23 | "invalid_union": "Ungültige Eingabe",
24 | "invalid_union_discriminator": "Ungültiger Diskriminatorwert, {options} erwartet",
25 | "not_finite": "Zahl muss endlich sein",
26 | "not_multiple_of": "Zahl muss ein Vielfaches von {multipleOf} sein",
27 | "required": "Erforderlich",
28 | "too_big": {
29 | "array": {
30 | "exact": "Array muss genau {maximum} Element(e) enthalten",
31 | "inclusive": "Array darf höchstens {maximum} Element(e) enthalten",
32 | "not_inclusive": "Array muss weniger als {maximum} Element(e) enthalten"
33 | },
34 | "date": {
35 | "exact": "Datum muss genau {maximum} sein",
36 | "inclusive": "Datum muss kleiner oder gleich {maximum} sein",
37 | "not_inclusive": "Datum muss kleiner als {maximum} sein"
38 | },
39 | "number": {
40 | "exact": "Zahl muss genau {maximum} sein",
41 | "inclusive": "Zahl muss kleiner oder gleich {maximum} sein",
42 | "not_inclusive": "Zahl muss kleiner als {maximum} sein"
43 | },
44 | "set": {
45 | "exact": "Ungültige Eingabe",
46 | "inclusive": "Ungültige Eingabe",
47 | "not_inclusive": "Ungültige Eingabe"
48 | },
49 | "string": {
50 | "exact": "String muss genau {maximum} Zeichen enthalten",
51 | "inclusive": "String darf höchstens {maximum} Zeichen enthalten",
52 | "not_inclusive": "String muss weniger als {maximum} Zeichen enthalten"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Array muss genau {minimum} Element(e) enthalten",
58 | "inclusive": "Array muss mindestens {minimum} Element(e) enthalten",
59 | "not_inclusive": "Array muss mehr als {minimum} Element(e) enthalten"
60 | },
61 | "date": {
62 | "exact": "Datum muss genau {minimum} sein",
63 | "inclusive": "Datum muss größer oder gleich {minimum} sein",
64 | "not_inclusive": "Datum muss größer als {minimum} sein"
65 | },
66 | "number": {
67 | "exact": "Zahl muss genau {minimum} sein",
68 | "inclusive": "Zahl muss größer oder gleich {minimum} sein",
69 | "not_inclusive": "Zahl muss größer als {minimum} sein"
70 | },
71 | "set": {
72 | "exact": "Ungültige Eingabe",
73 | "inclusive": "Ungültige Eingabe",
74 | "not_inclusive": "Ungültige Eingabe"
75 | },
76 | "string": {
77 | "exact": "String muss genau {minimum} Zeichen enthalten",
78 | "inclusive": "String muss mindestens {minimum} Zeichen enthalten",
79 | "not_inclusive": "String muss mehr als {minimum} Zeichen enthalten"
80 | }
81 | },
82 | "unrecognized_keys": "Unbekannte Schlüssel im Objekt: {keys}"
83 | },
84 | "types": {
85 | "array": "Array",
86 | "bigint": "Bigint",
87 | "boolean": "Boolean",
88 | "date": "Datum",
89 | "float": "Gleitkommazahl",
90 | "function": "Funktion",
91 | "integer": "Ganzzahl",
92 | "map": "Map",
93 | "nan": "NaN",
94 | "never": "Never",
95 | "null": "Nullwert",
96 | "number": "Zahl",
97 | "object": "Objekt",
98 | "promise": "Promise",
99 | "set": "Set",
100 | "string": "String",
101 | "symbol": "Symbol",
102 | "undefined": "Undefined",
103 | "unknown": "Unknown",
104 | "void": "Void"
105 | },
106 | "validations": {
107 | "cuid": "CUID",
108 | "datetime": "Datums- und Uhrzeitwert",
109 | "email": "E-Mail-Adresse",
110 | "regex": "Regex",
111 | "url": "URL",
112 | "uuid": "UUID"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/pt-BR.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Entrada inválida",
5 | "invalid_arguments": "Argumentos de função inválidos",
6 | "invalid_date": "Data inválida",
7 | "invalid_enum_value": "Valor de enum inválido. Esperava-se que {options} fosse revisto, mas recebeu '{received}'",
8 | "invalid_intersection_types": "Não foi possível fundir os resultados da intersecção",
9 | "invalid_literal": "Valor literal inválido, esperado {expected}",
10 | "invalid_return_type": "Tipo de retorno de função inválido",
11 | "invalid_string": {
12 | "cuid": "Inválido {validation}",
13 | "datetime": "Inválido {validation}",
14 | "email": "Inválido {validation}",
15 | "endsWith": "Entrada inválida: deve terminar com \"{endsWith}\"",
16 | "regex": "Inválido",
17 | "startsWith": "Entrada inválida: deve começar por \"{startsWith}\"",
18 | "url": "Inválido {validation}",
19 | "uuid": "Inválido {validation}"
20 | },
21 | "invalid_type": "Esperado {expected}, recebido {received}",
22 | "invalid_type_received_undefined": "Obrigatório",
23 | "invalid_union": "Entrada inválida",
24 | "invalid_union_discriminator": "Valor de discriminador inválido. Esperado {options} para rever",
25 | "not_finite": "O número deve ser finito",
26 | "not_multiple_of": "O número deve ser um múltiplo de {multipleOf}",
27 | "required": "Obrigatório",
28 | "too_big": {
29 | "array": {
30 | "exact": "O array deve conter exatamente {maximum} elemento(s)",
31 | "inclusive": "O array deve conter no máximo {maximum} elemento(s)",
32 | "not_inclusive": "O array deve conter menos de {maximum} elemento(s)"
33 | },
34 | "date": {
35 | "exact": "A data deve ser exatamente {maximum}",
36 | "inclusive": "A data deve ser menor ou igual a {maximum}",
37 | "not_inclusive": "A data deve ser inferior do que {maximum}"
38 | },
39 | "number": {
40 | "exact": "O número deve ser exatamente {maximum}",
41 | "inclusive": "O número deve ser menor ou igual a {maximum}",
42 | "not_inclusive": "O número deve ser inferior a {maximum}"
43 | },
44 | "set": {
45 | "exact": "Entrada inválida",
46 | "inclusive": "Entrada inválida",
47 | "not_inclusive": "Entrada inválida"
48 | },
49 | "string": {
50 | "exact": "O texto deve conter exatamente {maximum} carácter(es)",
51 | "inclusive": "O texto deve conter no máximo {maximum} carácter(es)",
52 | "not_inclusive": "O texto deve conter menos de {maximum} carácter(es)"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "O array deve conter exatamente {minimum} elemento(s)",
58 | "inclusive": "O array deve conter pelo menos {minimum} elemento(s)",
59 | "not_inclusive": "O array deve conter mais de {minimum} elemento(s)"
60 | },
61 | "date": {
62 | "exact": "A data deve ser exatamente {minimum}",
63 | "inclusive": "A data deve ser maior ou igual a {minimum}",
64 | "not_inclusive": "A data deve ser superior a {minimum}"
65 | },
66 | "number": {
67 | "exact": "O número deve ser exatamente {minimum}",
68 | "inclusive": "O número deve ser maior ou igual a {minimum}",
69 | "not_inclusive": "O número deve ser maior que {minimum}"
70 | },
71 | "set": {
72 | "exact": "Entrada inválida",
73 | "inclusive": "Entrada inválida",
74 | "not_inclusive": "Entrada inválida"
75 | },
76 | "string": {
77 | "exact": "O texto deve conter exatamente {minimum} carácter(es)",
78 | "inclusive": "O texto deve conter pelo menos {minimum} carácter(es)",
79 | "not_inclusive": "O texto deve conter mais de {minimum} carácter(es)"
80 | }
81 | },
82 | "unrecognized_keys": "Chave(s) não reconhecida(s) no objeto: {keys} para rever"
83 | },
84 | "types": {
85 | "array": "array",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "date",
89 | "float": "float",
90 | "function": "function",
91 | "integer": "integer",
92 | "map": "map",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "number",
97 | "object": "object",
98 | "promise": "promise",
99 | "set": "set",
100 | "string": "string",
101 | "symbol": "symbol",
102 | "undefined": "undefined",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "Data/hora",
109 | "email": "E-mail",
110 | "regex": "regex",
111 | "url": "URL",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/es-ES.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Campo inválido",
5 | "invalid_arguments": "Argumentos de función inválidos",
6 | "invalid_date": "Fecha inválida",
7 | "invalid_enum_value": "Valor inválido. Se esperaba {options}, se recibió '{received}'",
8 | "invalid_intersection_types": "Valores de intersección no pudieron ser mezclados",
9 | "invalid_literal": "Valor literal inválido, se esperaba {expected}",
10 | "invalid_return_type": "Tipo de retorno de función inválido",
11 | "invalid_string": {
12 | "cuid": "{validation} inválido",
13 | "datetime": "{validation} inválida",
14 | "email": "{validation} inválido",
15 | "endsWith": "Campo inválido: debe finalizar con \"{endsWith}\"",
16 | "regex": "Inválido",
17 | "startsWith": "Campo inválido: debe comenzar con \"{startsWith}\"",
18 | "url": "{validation} inválido",
19 | "uuid": "{validation} inválido"
20 | },
21 | "invalid_type": "Se esperaba {expected}, se recibió {received}",
22 | "invalid_type_received_undefined": "Requerido",
23 | "invalid_union": "Campo inválido",
24 | "invalid_union_discriminator": "Valor discriminador inválido. Se esperaba {options}",
25 | "not_finite": "Número no puede ser infinito",
26 | "not_multiple_of": "Número debe ser múltiplo de {multipleOf}",
27 | "required": "Requerido",
28 | "too_big": {
29 | "array": {
30 | "exact": "La lista debe contener exactamente {maximum} elemento(s)",
31 | "inclusive": "La lista debe contener como máximo {maximum} elemento(s)",
32 | "not_inclusive": "La lista debe contener menos que {maximum} elemento(s)"
33 | },
34 | "date": {
35 | "exact": "La fecha debe ser exactamente {maximum}",
36 | "inclusive": "La fecha debe ser menor o igual al {maximum}",
37 | "not_inclusive": "La fecha debe ser menor que el {maximum}"
38 | },
39 | "number": {
40 | "exact": "El número debe ser exactamente {maximum}",
41 | "inclusive": "El número debe ser menor o igual a {maximum}",
42 | "not_inclusive": "El número debe ser menor que {maximum}"
43 | },
44 | "set": {
45 | "exact": "Campo inválido",
46 | "inclusive": "Campo inválido",
47 | "not_inclusive": "Campo inválido"
48 | },
49 | "string": {
50 | "exact": "El texto debe contener exactamente {maximum} carácter(es)",
51 | "inclusive": "El texto debe contener como máximo {maximum} carácter(es)",
52 | "not_inclusive": "El texto debe contener menos de {maximum} carácter(es)"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "La lista debe contener exactamente {minimum} elemento(s)",
58 | "inclusive": "La lista debe contener al menos {minimum} elemento(s)",
59 | "not_inclusive": "La lista debe contener más de {minimum} elemento(s)"
60 | },
61 | "date": {
62 | "exact": "La fecha debe ser exactamente {minimum}",
63 | "inclusive": "La fecha debe ser mayor o igual al {minimum}",
64 | "not_inclusive": "La fecha debe ser mayor que el {minimum}"
65 | },
66 | "number": {
67 | "exact": "El número debe ser exactamente {minimum}",
68 | "inclusive": "El número debe ser mayor o igual a {minimum}",
69 | "not_inclusive": "El número debe ser mayor que {minimum}"
70 | },
71 | "set": {
72 | "exact": "Campo inválido",
73 | "inclusive": "Campo inválido",
74 | "not_inclusive": "Campo inválido"
75 | },
76 | "string": {
77 | "exact": "El texto debe contener exactamente {minimum} carácter(es)",
78 | "inclusive": "El texto debe contener al menos {minimum} carácter(es)",
79 | "not_inclusive": "El texto debe contener más de {minimum} carácter(es)"
80 | }
81 | },
82 | "unrecognized_keys": "Llave(s) no reconocida(s) en el objeto: {keys}"
83 | },
84 | "types": {
85 | "array": "lista",
86 | "bigint": "entero grande",
87 | "boolean": "booleano",
88 | "date": "fecha",
89 | "float": "decimal",
90 | "function": "función",
91 | "integer": "entero",
92 | "map": "mapa",
93 | "nan": "valor no númerico",
94 | "never": "nunca",
95 | "null": "nulo",
96 | "number": "número",
97 | "object": "objeto",
98 | "promise": "promesa",
99 | "set": "conjunto",
100 | "string": "texto",
101 | "symbol": "símbolo",
102 | "undefined": "indefinido",
103 | "unknown": "desconocido",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "fecha",
109 | "email": "correo",
110 | "regex": "expresión regular",
111 | "url": "enlace",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/ru-RU.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Неверный ввод",
5 | "invalid_arguments": "Неверный тип аргументов функции",
6 | "invalid_date": "Неверный формат даты",
7 | "invalid_enum_value": "Неверное значение перечисления. Ожидалось {options}, получено '{received}'",
8 | "invalid_intersection_types": "Результаты пересечения не могут быть объединены",
9 | "invalid_literal": "Неверное значение литерала, ожидалось {expected}",
10 | "invalid_return_type": "Неверный тип возвращаемого значения функции",
11 | "invalid_string": {
12 | "cuid": "Неверный {validation}",
13 | "datetime": "Неверный {validation}",
14 | "email": "Неверный {validation}",
15 | "endsWith": "Неверный формат, должен заканчиваться на \"{endsWith}\"",
16 | "regex": "Неверное значение строки",
17 | "startsWith": "Неверный формат, должен начинаться с \"{startsWith}\"",
18 | "url": "Неверный {validation}",
19 | "uuid": "Неверный {validation}"
20 | },
21 | "invalid_type": "Ожидался тип - {expected}, получено - {received}",
22 | "invalid_type_received_undefined": "Обязательный",
23 | "invalid_union": "Результаты пересечения не могут быть объединены",
24 | "invalid_union_discriminator": "Неверное значение дискриминатора. Ожидалось {options}",
25 | "not_finite": "Число должно быть конечным",
26 | "not_multiple_of": "Число должно быть кратно {multipleOf}",
27 | "required": "Обязательно",
28 | "too_big": {
29 | "array": {
30 | "exact": "Массив должен содержать ровно {maximum} элемента(ов)",
31 | "inclusive": "Массив должен содержать не более {maximum} элемента(ов)",
32 | "not_inclusive": "Массив должен содержать менее {maximum} элемента(ов)"
33 | },
34 | "date": {
35 | "exact": "Дата должна быть {maximum}",
36 | "inclusive": "Дата должна быть меньше или равна {maximum}",
37 | "not_inclusive": "Дата должна быть меньше {maximum}"
38 | },
39 | "number": {
40 | "exact": "Число должно быть ровно {maximum}",
41 | "inclusive": "Число должно быть меньше или равно {maximum}",
42 | "not_inclusive": "Число должно быть меньше {maximum}"
43 | },
44 | "set": {
45 | "exact": "Неверный ввод",
46 | "inclusive": "Неверный ввод",
47 | "not_inclusive": "Неверный ввод"
48 | },
49 | "string": {
50 | "exact": "Строка должна содержать ровно {maximum} символа(ов)",
51 | "inclusive": "Строка должна содержать не более {maximum} символа(ов)",
52 | "not_inclusive": "Строка должна содержать менее {maximum} символа(ов)"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Массив должен содержать ровно {minimum} элемента(ов)",
58 | "inclusive": "Массив должен содержать не более {minimum} элемента(ов)",
59 | "not_inclusive": "Массив должен содержать менее {minimum} элемента(ов)"
60 | },
61 | "date": {
62 | "exact": "Дата должна быть {minimum}",
63 | "inclusive": "Дата должна быть меньше или равна {minimum}",
64 | "not_inclusive": "Дата должна быть меньше {minimum}"
65 | },
66 | "number": {
67 | "exact": "Число должно быть ровно {minimum}",
68 | "inclusive": "Число должно быть меньше или равно {minimum}",
69 | "not_inclusive": "Число должно быть меньше {minimum}"
70 | },
71 | "set": {
72 | "exact": "Неверный ввод",
73 | "inclusive": "Неверный ввод",
74 | "not_inclusive": "Неверный ввод"
75 | },
76 | "string": {
77 | "exact": "Строка должна содержать ровно {minimum} символа(ов)",
78 | "inclusive": "Строка должна содержать не менее {minimum} символа(ов)",
79 | "not_inclusive": "Строка должна содержать более {minimum} символа(ов)"
80 | }
81 | },
82 | "unrecognized_keys": "Неверные ключи в объекте: {keys}"
83 | },
84 | "types": {
85 | "array": "массив",
86 | "bigint": "bigint",
87 | "boolean": "булево значение",
88 | "date": "дата",
89 | "float": "число с плавающей точкой",
90 | "function": "функция",
91 | "integer": "целое число",
92 | "map": "хеш-таблица",
93 | "nan": "NaN",
94 | "never": "never",
95 | "null": "null",
96 | "number": "число",
97 | "object": "объект",
98 | "promise": "promise",
99 | "set": "множество",
100 | "string": "строка",
101 | "symbol": "символ",
102 | "undefined": "не определено",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "CUID",
108 | "datetime": "дата и время",
109 | "email": "email",
110 | "regex": "регулярное выражение",
111 | "url": "ссылка",
112 | "uuid": "UUID"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/pt-PT.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Entrada inválida",
5 | "invalid_arguments": "Argumentos de função inválidos",
6 | "invalid_date": "Data inválida",
7 | "invalid_enum_value": "Valor de enum inválido. Esperava-se que {options} fosse revisto, mas recebeu '{received}'",
8 | "invalid_intersection_types": "Não foi possível fundir os resultados da intersecção",
9 | "invalid_literal": "Valor literal inválido, esperado {expected}",
10 | "invalid_return_type": "Tipo de retorno de função inválido",
11 | "invalid_string": {
12 | "cuid": "Inválido {validation}",
13 | "datetime": "Inválido {validation}",
14 | "email": "Inválido {validation}",
15 | "endsWith": "Entrada inválida: deve terminar com \"{endsWith}\"",
16 | "regex": "Inválido",
17 | "startsWith": "Entrada inválida: deve começar por \"{startsWith}\"",
18 | "url": "Inválido {validation}",
19 | "uuid": "Inválido {validation}"
20 | },
21 | "invalid_type": "Esperado {expected}, recebido {received}",
22 | "invalid_type_received_undefined": "Necessário",
23 | "invalid_union": "Entrada inválida",
24 | "invalid_union_discriminator": "Valor de discriminador inválido. Esperado {options} para rever",
25 | "not_finite": "O número deve ser finito",
26 | "not_multiple_of": "O número deve ser um múltiplo de {multipleOf}",
27 | "required": "Necessário",
28 | "too_big": {
29 | "array": {
30 | "exact": "A matriz deve conter exatamente {maximum} elemento(s)",
31 | "inclusive": "A matriz deve conter no máximo {maximum} elemento(s)",
32 | "not_inclusive": "A matriz deve conter menos de {maximum} elemento(s)"
33 | },
34 | "date": {
35 | "exact": "A data deve ser exatamente {maximum}",
36 | "inclusive": "A data deve ser menor ou igual a {maximum}",
37 | "not_inclusive": "A data deve ser mais pequena do que {maximum}"
38 | },
39 | "number": {
40 | "exact": "O número deve ser exatamente {maximum}",
41 | "inclusive": "O número deve ser menor ou igual a {maximum}",
42 | "not_inclusive": "O número deve ser inferior a {maximum}"
43 | },
44 | "set": {
45 | "exact": "Entrada inválida",
46 | "inclusive": "Entrada inválida",
47 | "not_inclusive": "Entrada inválida"
48 | },
49 | "string": {
50 | "exact": "A cadeia de caracteres deve conter exatamente {maximum} carácter(es)",
51 | "inclusive": "A cadeia de caracteres deve conter no máximo {maximum} carácter(es)",
52 | "not_inclusive": "A cadeia de caracteres deve conter menos de {maximum} carácter(es)"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "A matriz deve conter exatamente {minimum} elemento(s)",
58 | "inclusive": "A matriz deve conter pelo menos {minimum} elemento(s)",
59 | "not_inclusive": "A matriz deve conter mais de {minimum} elemento(s)"
60 | },
61 | "date": {
62 | "exact": "A data deve ser exatamente {minimum}",
63 | "inclusive": "A data deve ser maior ou igual a {minimum}",
64 | "not_inclusive": "A data deve ser superior a {minimum}"
65 | },
66 | "number": {
67 | "exact": "O número deve ser exatamente {minimum}",
68 | "inclusive": "O número deve ser maior ou igual a {minimum}",
69 | "not_inclusive": "O número deve ser maior que {minimum}"
70 | },
71 | "set": {
72 | "exact": "Entrada inválida",
73 | "inclusive": "Entrada inválida",
74 | "not_inclusive": "Entrada inválida"
75 | },
76 | "string": {
77 | "exact": "A cadeia de caracteres deve conter exatamente {minimum} carácter(es)",
78 | "inclusive": "A cadeia de caracteres deve conter pelo menos {minimum} carácter(es)",
79 | "not_inclusive": "A cadeia de caracteres deve conter mais de {minimum} carácter(es)"
80 | }
81 | },
82 | "unrecognized_keys": "Chave(s) não reconhecida(s) no objeto: {keys} para rever"
83 | },
84 | "types": {
85 | "array": "array",
86 | "bigint": "bigint",
87 | "boolean": "boolean",
88 | "date": "date",
89 | "float": "float",
90 | "function": "function",
91 | "integer": "integer",
92 | "map": "map",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "number",
97 | "object": "object",
98 | "promise": "promise",
99 | "set": "set",
100 | "string": "string",
101 | "symbol": "symbol",
102 | "undefined": "undefined",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuidado",
108 | "datetime": "Data/hora",
109 | "email": "Correio eletrónico",
110 | "regex": "regex",
111 | "url": "URL",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/fr-FR.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Champ invalide",
5 | "invalid_arguments": "La fonction a reçu des arguments invalides",
6 | "invalid_date": "Date invalide",
7 | "invalid_enum_value": "La valeur '{received}' n'existe pas dans les options: {options}",
8 | "invalid_intersection_types": "Les résultats d'intersection n'ont pas pu être fusionnés",
9 | "invalid_literal": "La valeur doit être {expected}",
10 | "invalid_return_type": "La fonction a retourné un type invalide",
11 | "invalid_string": {
12 | "cuid": "{validation} invalide",
13 | "datetime": "{validation} invalide",
14 | "email": "{validation} invalide",
15 | "endsWith": "Champ invalide: doit se terminer par \"{endsWith}\"",
16 | "regex": "{validation} invalide",
17 | "startsWith": "Champ invalide: doit commencer par \"{startsWith}\"",
18 | "url": "{validation} invalide",
19 | "uuid": "{validation} invalide"
20 | },
21 | "invalid_type": "Type invalide: {expected} doit être fourni(e), mais {received} a été reçu(e)",
22 | "invalid_type_received_undefined": "Obligatoire",
23 | "invalid_union": "Champ invalide",
24 | "invalid_union_discriminator": "La valeur du discriminateur est invalide. Options attendus: {options}",
25 | "not_finite": "Le nombre doit être fini",
26 | "not_multiple_of": "Le nombre doit être un multiple de {multipleOf}",
27 | "required": "Requis",
28 | "too_big": {
29 | "array": {
30 | "exact": "La liste doit contenir exactement {maximum} élément(s)",
31 | "inclusive": "La liste doit contenir au plus {maximum} élément(s)",
32 | "not_inclusive": "La liste doit contenir moins de {maximum} élément(s)"
33 | },
34 | "date": {
35 | "exact": "La date doit être égale au {maximum}",
36 | "inclusive": "La date doit être inférieure ou égale au {maximum}",
37 | "not_inclusive": "La date doit être inférieure au {maximum}"
38 | },
39 | "number": {
40 | "exact": "Le nombre doit être égale à {maximum}",
41 | "inclusive": "Le nombre doit être inférieur ou égal à {maximum}",
42 | "not_inclusive": "Le nombre doit être inférieur à {maximum}"
43 | },
44 | "set": {
45 | "exact": "Champ invalide",
46 | "inclusive": "Champ invalide",
47 | "not_inclusive": "Champ invalide"
48 | },
49 | "string": {
50 | "exact": "Le texte doit contenir exactement {maximum} caractère(s)",
51 | "inclusive": "Le texte doit contenir au plus {maximum} caractère(s)",
52 | "not_inclusive": "Le texte doit contenir moins de {maximum} caractère(s)"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "La liste doit contenir exactement {minimum} élément(s)",
58 | "inclusive": "La liste doit contenir au moins {minimum} élément(s)",
59 | "not_inclusive": "La liste doit contenir plus de {minimum} élément(s)"
60 | },
61 | "date": {
62 | "exact": "La date doit être égale au {minimum}",
63 | "inclusive": "La date doit être supérieure ou égale au {minimum} ",
64 | "not_inclusive": "La date doit être supérieure au {minimum}"
65 | },
66 | "number": {
67 | "exact": "Le nombre doit être égal à {minimum}",
68 | "inclusive": "Le nombre doit être supérieur ou égal à {minimum}",
69 | "not_inclusive": "Le nombre doit être supérieur à {minimum}"
70 | },
71 | "set": {
72 | "exact": "Champ invalide",
73 | "inclusive": "Champ invalide",
74 | "not_inclusive": "Champ invalide"
75 | },
76 | "string": {
77 | "exact": "Le texte doit contenir exactement {minimum} caractère(s)",
78 | "inclusive": "Le texte doit contenir au moins {minimum} caractère(s)",
79 | "not_inclusive": "Le texte doit centenir plus de {minimum} caractère(s)"
80 | }
81 | },
82 | "unrecognized_keys": "Une ou plusieurs clé(s) non reconnue(s) dans l'objet: {keys}"
83 | },
84 | "types": {
85 | "array": "liste",
86 | "bigint": "grand entier",
87 | "boolean": "booléen",
88 | "date": "date",
89 | "float": "décimal",
90 | "function": "fonction",
91 | "integer": "entier",
92 | "map": "map",
93 | "nan": "NaN",
94 | "never": "never",
95 | "null": "null",
96 | "number": "nombre",
97 | "object": "objet",
98 | "promise": "promise",
99 | "set": "ensemble",
100 | "string": "chaîne de caractères",
101 | "symbol": "symbole",
102 | "undefined": "undefined",
103 | "unknown": "inconnu",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "CUID",
108 | "datetime": "datetime",
109 | "email": "e-mail",
110 | "regex": "expression régulière",
111 | "url": "lien",
112 | "uuid": "UUID"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/it-IT.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Dato non valido",
5 | "invalid_arguments": "Argomenti della funzione non validi",
6 | "invalid_date": "Data non valida",
7 | "invalid_enum_value": "Valore enum non valido. Atteso {options} per la revisione, ricevuto '{received}'.",
8 | "invalid_intersection_types": "Non è stato possibile unire i risultati delle intersezioni",
9 | "invalid_literal": "Valore letterale non valido, atteso {expected}",
10 | "invalid_return_type": "Tipo di ritorno della funzione non valido",
11 | "invalid_string": {
12 | "cuid": "{validation} non valido",
13 | "datetime": "{validation} non valide",
14 | "email": "{validation} non valida",
15 | "endsWith": "Dato non valido: deve terminare con \"{endsWith}\".",
16 | "regex": "Invalido",
17 | "startsWith": "Dato non valido: deve iniziare con \"{startsWith}\".",
18 | "url": "{validation} non valido",
19 | "uuid": "{validation} non valido"
20 | },
21 | "invalid_type": "Previsto {expected}, ricevuto {received}",
22 | "invalid_type_received_undefined": "Richiesto",
23 | "invalid_union": "Dato non valido",
24 | "invalid_union_discriminator": "Valore discriminante non valido. Previsto {options} da rivedere",
25 | "not_finite": "Il numero deve essere finito",
26 | "not_multiple_of": "Il numero deve essere un multiplo di {multipleOf}",
27 | "required": "Richiesto",
28 | "too_big": {
29 | "array": {
30 | "exact": "Il vettore deve contenere esattamente {maximum} elementi",
31 | "inclusive": "Il vettore deve contenere al massimo {maximum} elementi.",
32 | "not_inclusive": "Il vettore deve contenere meno di {maximum} elementi"
33 | },
34 | "date": {
35 | "exact": "La data deve essere esattamente {maximum}",
36 | "inclusive": "La data deve essere minore o uguale a {maximum}",
37 | "not_inclusive": "La data deve essere più piccola di {maximum}"
38 | },
39 | "number": {
40 | "exact": "Il numero deve essere esattamente {maximum}",
41 | "inclusive": "Il numero deve essere inferiore o uguale a {maximum}",
42 | "not_inclusive": "Il numero deve essere inferiore a {maximum}"
43 | },
44 | "set": {
45 | "exact": "Dato non valido",
46 | "inclusive": "Dato non valido",
47 | "not_inclusive": "Dato non valido"
48 | },
49 | "string": {
50 | "exact": "La stringa deve contenere esattamente {maximum} caratteri",
51 | "inclusive": "La stringa deve contenere al massimo {maximum} caratteri",
52 | "not_inclusive": "La stringa deve contenere meno di {maximum} caratteri"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "Il vettore deve contenere esattamente {minimum} elementi",
58 | "inclusive": "Il vettore deve contenere almeno {minimum} elementi.",
59 | "not_inclusive": "Il vettore deve contenere più di {minimum} elementi"
60 | },
61 | "date": {
62 | "exact": "La data deve essere esattamente {minimum}",
63 | "inclusive": "La data deve essere maggiore o uguale a {minimum}",
64 | "not_inclusive": "La data deve essere maggiore di {minimum}"
65 | },
66 | "number": {
67 | "exact": "Il numero deve essere esattamente {minimum}",
68 | "inclusive": "Il numero deve essere maggiore o uguale a {minimum}",
69 | "not_inclusive": "Il numero deve essere maggiore di {minimum}"
70 | },
71 | "set": {
72 | "exact": "Dato non valido",
73 | "inclusive": "Dato non valido",
74 | "not_inclusive": "Dato non valido"
75 | },
76 | "string": {
77 | "exact": "La stringa deve contenere esattamente {minimum} caratteri",
78 | "inclusive": "La stringa deve contenere almeno {minimum} caratteri",
79 | "not_inclusive": "La stringa deve contenere più di {minimum} caratteri"
80 | }
81 | },
82 | "unrecognized_keys": "Chiave(i) non riconosciuta(e) nell'oggetto: {keys} da rivedere"
83 | },
84 | "types": {
85 | "array": "vettore",
86 | "bigint": "intero grande",
87 | "boolean": "booleano",
88 | "date": "data",
89 | "float": "float",
90 | "function": "funzione",
91 | "integer": "intero",
92 | "map": "mappa",
93 | "nan": "nan",
94 | "never": "never",
95 | "null": "null",
96 | "number": "numero",
97 | "object": "oggetto",
98 | "promise": "promessa",
99 | "set": "set",
100 | "string": "stringa",
101 | "symbol": "simbolo",
102 | "undefined": "undefined",
103 | "unknown": "unknown",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "CUID",
108 | "datetime": "Data e ora",
109 | "email": "Email",
110 | "regex": "Regex",
111 | "url": "URL",
112 | "uuid": "UUID"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/sk-SK.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Neplatný vstup",
5 | "invalid_arguments": "Neplatné argumenty funkcie",
6 | "invalid_date": "Neplatný dátum",
7 | "invalid_enum_value": "Neplatná hodnota výčtu. Očakáva sa {options}, ale bolo obdržané '{received}'",
8 | "invalid_intersection_types": "Hodnoty prieniku nie je možné zlúčiť",
9 | "invalid_literal": "Neplatná doslovná hodnota, očakáva sa {expected}",
10 | "invalid_return_type": "Neplatný typ návratovej hodnoty",
11 | "invalid_string": {
12 | "cuid": "Neplatné {validation}",
13 | "datetime": "Neplatný {validation}",
14 | "email": "Neplatný {validation}",
15 | "endsWith": "Neplatný vstup: musí končiť \"{endsWith}\"",
16 | "regex": "Neplatná kombinácia",
17 | "startsWith": "Neplatný vstup: musí začínať \"{startsWith}\"",
18 | "url": "Neplatná {validation}",
19 | "uuid": "Neplatné {validation}"
20 | },
21 | "invalid_type": "Typ vstupu musí byť {expected}, ale bol obdržaný typ {received}",
22 | "invalid_type_received_undefined": "Povinné",
23 | "invalid_union": "Neplatný vstup",
24 | "invalid_union_discriminator": "Neplatná hodnota diskriminátora. Očakáva sa {options}",
25 | "not_finite": "Číslo nesmie byť nekonečné",
26 | "not_multiple_of": "Číslo musí byť násobkom {multipleOf}",
27 | "required": "Požadované",
28 | "too_big": {
29 | "array": {
30 | "exact": "Pole musí obsahovať presne {maximum} prvky",
31 | "exact_one": "Pole musí obsahovať presne jeden prvok",
32 | "inclusive": "Pole musí obsahovať najviac {maximum} prvky",
33 | "inclusive_one": "Pole musí obsahovať najviac jeden prvok",
34 | "not_inclusive": "Pole musí obsahovať menej než {maximum} prvky",
35 | "not_inclusive_one": "Pole musí byť prázdne"
36 | },
37 | "date": {
38 | "exact": "Dátum musí byť presne {maximum}",
39 | "inclusive": "Dátum musí byť menší alebo rovný {maximum}",
40 | "not_inclusive": "Dátum musí byť menší než {maximum}"
41 | },
42 | "number": {
43 | "exact": "Číslo musí byť presne {maximum}",
44 | "inclusive": "Číslo musí byť menšie alebo rovné {maximum}",
45 | "not_inclusive": "Číslo musí byť menšie než {maximum}"
46 | },
47 | "set": {
48 | "exact": "Neplatný vstup",
49 | "inclusive": "Neplatný vstup",
50 | "not_inclusive": "Neplatný vstup"
51 | },
52 | "string": {
53 | "exact": "Text musí obsahovať presne {maximum} znak(y)",
54 | "inclusive": "Text musí obsahovať najviac {maximum} znak(y)",
55 | "not_inclusive": "Text musí obsahovať menej než {maximum} znak(y)"
56 | }
57 | },
58 | "too_small": {
59 | "array": {
60 | "exact": "Pole musí obsahovať presne {minimum} prvky",
61 | "exact_one": "Pole musí obsahovať presne jeden prvok",
62 | "inclusive": "Pole musí obsahovať aspoň {minimum} prvky",
63 | "inclusive_one": "Pole musí obsahovať aspoň jeden prvok",
64 | "not_inclusive": "Pole musí obsahovať viac ako {minimum} prvky",
65 | "not_inclusive_one": "Pole musí obsahovať aspoň dva prvky"
66 | },
67 | "date": {
68 | "exact": "Dátum musí byť presne {minimum}",
69 | "inclusive": "Dátum musí byť väčší alebo rovný {minimum}",
70 | "not_inclusive": "Dátum musí byť väčší než {minimum}"
71 | },
72 | "number": {
73 | "exact": "Číslo musí byť presne {minimum}",
74 | "inclusive": "Číslo musí byť väčšie alebo rovné {minimum}",
75 | "not_inclusive": "Číslo musí byť väčšie než {minimum}"
76 | },
77 | "set": {
78 | "exact": "Neplatný vstup",
79 | "inclusive": "Neplatný vstup",
80 | "not_inclusive": "Neplatný vstup"
81 | },
82 | "string": {
83 | "exact": "Text musí obsahovať presne {minimum} znak(y)",
84 | "inclusive": "Text musí obsahovať aspoň {minimum} znak(y)",
85 | "not_inclusive": "Text musí obsahovať najviac {minimum} znak(y)"
86 | }
87 | },
88 | "unrecognized_keys": "Nerozpoznané kľúče v objekte: {keys}"
89 | },
90 | "types": {
91 | "array": "pole",
92 | "bigint": "bigint",
93 | "boolean": "boolean",
94 | "date": "dátum",
95 | "float": "reálne číslo",
96 | "function": "funkcia",
97 | "integer": "celé číslo",
98 | "map": "mapa",
99 | "nan": "NaN",
100 | "never": "never",
101 | "null": "null",
102 | "number": "číslo",
103 | "object": "objekt",
104 | "promise": "promise",
105 | "set": "množina",
106 | "string": "text",
107 | "symbol": "symbol",
108 | "undefined": "nedefinované",
109 | "unknown": "neznáme",
110 | "void": "void"
111 | },
112 | "validations": {
113 | "cuid": "cuid",
114 | "datetime": "dátum a čas",
115 | "email": "e-mail",
116 | "regex": "regex",
117 | "url": "url",
118 | "uuid": "uuid"
119 | }
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/src/runtime/i18n/locales/hu-HU.json:
--------------------------------------------------------------------------------
1 | {
2 | "zodI18n": {
3 | "errors": {
4 | "custom": "Érvénytelen bevitel",
5 | "invalid_arguments": "Érvénytelen függvény paraméterek",
6 | "invalid_date": "Érvénytelen dátum",
7 | "invalid_enum_value": "Érvénytelen enum érték. Várt értékek: {options}, kapott érték: '{received}'",
8 | "invalid_intersection_types": "A metszet eredményeket nem lehetett egyesíteni",
9 | "invalid_literal": "Érvénytelen literál érték, várt érték: {expected}",
10 | "invalid_return_type": "Érvénytelen függvény visszatérési típus",
11 | "invalid_string": {
12 | "cuid": "Érvénytelen {validation}",
13 | "datetime": "Érvénytelen {validation}",
14 | "email": "Érvénytelen {validation}",
15 | "endsWith": "Érvénytelen bevitel: \"{endsWith}\"-re kell végződnie",
16 | "regex": "Érvénytelen",
17 | "startsWith": "Érvénytelen bevitel: \"{startsWith}\"-vel kell kezdődnie",
18 | "url": "Érvénytelen {validation}",
19 | "uuid": "Érvénytelen {validation}"
20 | },
21 | "invalid_type": "Várt típus: {expected}, kapott típus: {received}",
22 | "invalid_type_received_undefined": "Kötelező",
23 | "invalid_union": "Érvénytelen bevitel",
24 | "invalid_union_discriminator": "Érvénytelen diszkriminátor érték. Várt értékek: {options}",
25 | "not_finite": "A számnak végesnek kell lennie",
26 | "not_multiple_of": "A számnak a(z) {multipleOf} többszörösének kell lennie",
27 | "required": "Kötelező",
28 | "too_big": {
29 | "array": {
30 | "exact": "A tömbnek pontosan {maximum} elemet kell tartalmaznia",
31 | "inclusive": "A tömb legfeljebb {maximum} elemet tartalmazhat",
32 | "not_inclusive": "A tömbnek kevesebb mint {maximum} elemet kell tartalmaznia"
33 | },
34 | "date": {
35 | "exact": "A dátumnak pontosan {maximum}-nak kell lennie",
36 | "inclusive": "A dátumnak kisebbnek vagy egyenlőnek kell lennie mint {maximum}",
37 | "not_inclusive": "A dátumnak kisebbnek kell lennie mint {maximum}"
38 | },
39 | "number": {
40 | "exact": "A számnak pontosan {maximum}-nak kell lennie",
41 | "inclusive": "A számnak kisebbnek vagy egyenlőnek kell lennie mint {maximum}",
42 | "not_inclusive": "A számnak kisebbnek kell lennie mint {maximum}"
43 | },
44 | "set": {
45 | "exact": "Érvénytelen bevitel",
46 | "inclusive": "Érvénytelen bevitel",
47 | "not_inclusive": "Érvénytelen bevitel"
48 | },
49 | "string": {
50 | "exact": "A szövegnek pontosan {maximum} karaktert kell tartalmaznia",
51 | "inclusive": "A szöveg legfeljebb {maximum} karaktert tartalmazhat",
52 | "not_inclusive": "A szövegnek kevesebb mint {maximum} karaktert kell tartalmaznia"
53 | }
54 | },
55 | "too_small": {
56 | "array": {
57 | "exact": "A tömbnek pontosan {minimum} elemet kell tartalmaznia",
58 | "inclusive": "A tömbnek legalább {minimum} elemet kell tartalmaznia",
59 | "not_inclusive": "A tömbnek több mint {minimum} elemet kell tartalmaznia"
60 | },
61 | "date": {
62 | "exact": "A dátumnak pontosan {minimum}-nak kell lennie",
63 | "inclusive": "A dátumnak nagyobbnak vagy egyenlőnek kell lennie mint {minimum}",
64 | "not_inclusive": "A dátumnak nagyobbnak kell lennie mint {minimum}"
65 | },
66 | "number": {
67 | "exact": "A számnak pontosan {minimum}-nak kell lennie",
68 | "inclusive": "A számnak nagyobbnak vagy egyenlőnek kell lennie mint {minimum}",
69 | "not_inclusive": "A számnak nagyobbnak kell lennie mint {minimum}"
70 | },
71 | "set": {
72 | "exact": "Érvénytelen bevitel",
73 | "inclusive": "Érvénytelen bevitel",
74 | "not_inclusive": "Érvénytelen bevitel"
75 | },
76 | "string": {
77 | "exact": "A szövegnek pontosan {minimum} karaktert kell tartalmaznia",
78 | "inclusive": "A szövegnek legalább {minimum} karaktert kell tartalmaznia",
79 | "not_inclusive": "A szövegnek több mint {minimum} karaktert kell tartalmaznia"
80 | }
81 | },
82 | "unrecognized_keys": "Ismeretlen kulcs(ok) az objektumban: {keys}"
83 | },
84 | "types": {
85 | "array": "tömb",
86 | "bigint": "nagy egész",
87 | "boolean": "logikai",
88 | "date": "dátum",
89 | "float": "tört",
90 | "function": "függvény",
91 | "integer": "egész",
92 | "map": "map",
93 | "nan": "NaN",
94 | "never": "soha",
95 | "null": "null",
96 | "number": "szám",
97 | "object": "objektum",
98 | "promise": "promise",
99 | "set": "halmaz",
100 | "string": "szöveg",
101 | "symbol": "szimbólum",
102 | "undefined": "definiálatlan",
103 | "unknown": "ismeretlen",
104 | "void": "void"
105 | },
106 | "validations": {
107 | "cuid": "cuid",
108 | "datetime": "dátumidő",
109 | "email": "e-mail",
110 | "regex": "reguláris kifejezés",
111 | "url": "webcím",
112 | "uuid": "uuid"
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/runtime/plugin.ts:
--------------------------------------------------------------------------------
1 | import type { Composer } from 'vue-i18n'
2 | import { defaultErrorMap, z, ZodIssueCode, ZodParsedType } from 'zod'
3 | import { joinValues, jsonStringifyReplacer, getKeyAndValues } from './utils'
4 | import { defineNuxtPlugin, useRuntimeConfig } from '#app'
5 |
6 | export default defineNuxtPlugin({
7 | name: 'zodI18n:plugin',
8 | // @ts-expect-error plugin from @nuxt/i18n
9 | dependsOn: ['i18n:plugin'],
10 | parallel: true,
11 | setup: (nuxtApp) => {
12 | const { dateFormat } = useRuntimeConfig().public.zodI18n
13 | const i18n = nuxtApp.$i18n as Composer
14 | const { t, d } = i18n
15 |
16 | const errorMap: z.ZodErrorMap = (error, ctx) => {
17 | let message: string
18 |
19 | message = defaultErrorMap(error, ctx).message
20 |
21 | switch (error.code) {
22 | case ZodIssueCode.invalid_type:
23 | if (error.received === ZodParsedType.undefined) {
24 | message = t('zodI18n.errors.invalid_type_received_undefined')
25 | }
26 | else {
27 | message = t('zodI18n.errors.invalid_type', {
28 | expected: t(`zodI18n.types.${error.expected}`),
29 | received: t(`zodI18n.types.${error.received}`),
30 | })
31 | }
32 | break
33 | case ZodIssueCode.invalid_literal:
34 | message = t('zodI18n.errors.invalid_literal', {
35 | expected: JSON.stringify(error.expected, jsonStringifyReplacer),
36 | })
37 | break
38 | case ZodIssueCode.unrecognized_keys:
39 | message = t('zodI18n.errors.unrecognized_keys', {
40 | keys: joinValues(error.keys, ', '),
41 | })
42 | break
43 | case ZodIssueCode.invalid_union:
44 | message = t('zodI18n.errors.invalid_union')
45 | break
46 | case ZodIssueCode.invalid_union_discriminator:
47 | message = t('zodI18n.errors.invalid_union_discriminator', {
48 | options: joinValues(error.options),
49 | })
50 | break
51 | case ZodIssueCode.invalid_enum_value:
52 | message = t('zodI18n.errors.invalid_enum_value', {
53 | options: joinValues(error.options),
54 | received: error.received,
55 | })
56 | break
57 | case ZodIssueCode.invalid_arguments:
58 | message = t('zodI18n.errors.invalid_arguments')
59 | break
60 | case ZodIssueCode.invalid_return_type:
61 | message = t('zodI18n.errors.invalid_return_type')
62 | break
63 | case ZodIssueCode.invalid_date:
64 | message = t('zodI18n.errors.invalid_date')
65 | break
66 | case ZodIssueCode.invalid_string:
67 | if (typeof error.validation === 'object') {
68 | if ('startsWith' in error.validation) {
69 | message = t('zodI18n.errors.invalid_string.startsWith', {
70 | startsWith: error.validation.startsWith,
71 | })
72 | }
73 | else if ('endsWith' in error.validation) {
74 | message = t('zodI18n.errors.invalid_string.endsWith', {
75 | endsWith: error.validation.endsWith,
76 | })
77 | }
78 | }
79 | else {
80 | message = t(`zodI18n.errors.invalid_string.${error.validation}`, {
81 | validation: t(`zodI18n.validations.${error.validation}`),
82 | })
83 | }
84 | break
85 | case ZodIssueCode.too_small:
86 | message = t(
87 | `zodI18n.errors.too_small.${error.type}.${
88 | error.exact ? 'exact' : error.inclusive ? 'inclusive' : 'not_inclusive'
89 | }`,
90 | {
91 | minimum: error.type === 'date' ? d(new Date(error.minimum as number), dateFormat) : error.minimum,
92 | },
93 | )
94 | break
95 | case ZodIssueCode.too_big:
96 | message = t(
97 | `zodI18n.errors.too_big.${error.type}.${
98 | error.exact ? 'exact' : error.inclusive ? 'inclusive' : 'not_inclusive'
99 | }`,
100 | {
101 | maximum: error.type === 'date' ? d(new Date(error.maximum as number), dateFormat) : error.maximum,
102 | },
103 | )
104 | break
105 | case ZodIssueCode.custom:
106 | // eslint-disable-next-line no-case-declarations
107 | const { key, values } = getKeyAndValues(error.params?.i18n, 'zodI18n.errors.custom', i18n)
108 |
109 | message = t(key, values)
110 | break
111 | case ZodIssueCode.invalid_intersection_types:
112 | message = t('zodI18n.errors.invalid_intersection_types')
113 | break
114 | case ZodIssueCode.not_multiple_of:
115 | message = t('zodI18n.errors.not_multiple_of', {
116 | multipleOf: error.multipleOf,
117 | })
118 | break
119 | case ZodIssueCode.not_finite:
120 | message = t('zodI18n.errors.not_finite')
121 | break
122 | default:
123 | break
124 | }
125 |
126 | return { message }
127 | }
128 |
129 | z.setErrorMap(errorMap)
130 | },
131 | })
132 |
--------------------------------------------------------------------------------
/docs/nuxt.schema.ts:
--------------------------------------------------------------------------------
1 | import { field, group } from '@nuxt/content/preview'
2 |
3 | export default defineNuxtSchema({
4 | appConfig: {
5 | ui: group({
6 | title: 'UI',
7 | description: 'UI Customization.',
8 | icon: 'i-mdi-palette-outline',
9 | fields: {
10 | colors: group({
11 | title: 'Colors',
12 | description: 'Manage main colors of your application',
13 | icon: 'i-mdi-palette-outline',
14 | fields: {
15 | primary: field({
16 | type: 'string',
17 | title: 'Primary',
18 | description: 'Primary color of your UI.',
19 | icon: 'i-mdi-palette-outline',
20 | default: 'green',
21 | required: ['red', 'orange', 'amber', 'yellow', 'lime', 'green', 'emerald', 'teal', 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose'],
22 | }),
23 | neutral: field({
24 | type: 'string',
25 | title: 'Neutral',
26 | description: 'Neutral color of your UI.',
27 | icon: 'i-mdi-palette-outline',
28 | default: 'slate',
29 | required: ['slate', 'gray', 'zinc', 'neutral', 'stone'],
30 | }),
31 | },
32 | }),
33 | icons: group({
34 | title: 'Icons',
35 | description: 'Manage icons used in the application.',
36 | icon: 'i-mdi-application-settings-outline',
37 | fields: {
38 | search: field({
39 | type: 'icon',
40 | title: 'Search Bar',
41 | description: 'Icon to display in the search bar.',
42 | icon: 'i-mdi-magnify',
43 | default: 'i-lucide-search',
44 | }),
45 | dark: field({
46 | type: 'icon',
47 | title: 'Dark mode',
48 | description: 'Icon of color mode button for dark mode.',
49 | icon: 'i-mdi-moon-waning-crescent',
50 | default: 'i-lucide-moon',
51 | }),
52 | light: field({
53 | type: 'icon',
54 | title: 'Light mode',
55 | description: 'Icon of color mode button for light mode.',
56 | icon: 'i-mdi-white-balance-sunny',
57 | default: 'i-lucide-sun',
58 | }),
59 | external: field({
60 | type: 'icon',
61 | title: 'External Link',
62 | description: 'Icon for external link.',
63 | icon: 'i-mdi-arrow-top-right',
64 | default: 'i-lucide-external-link',
65 | }),
66 | chevron: field({
67 | type: 'icon',
68 | title: 'Chevron',
69 | description: 'Icon for chevron.',
70 | icon: 'i-mdi-chevron-down',
71 | default: 'i-lucide-chevron-down',
72 | }),
73 | hash: field({
74 | type: 'icon',
75 | title: 'Hash',
76 | description: 'Icon for hash anchors.',
77 | icon: 'i-ph-hash',
78 | default: 'i-lucide-hash',
79 | }),
80 | },
81 | }),
82 | },
83 | }),
84 | seo: group({
85 | title: 'SEO',
86 | description: 'SEO configuration.',
87 | icon: 'i-ph-app-window',
88 | fields: {
89 | siteName: field({
90 | type: 'string',
91 | title: 'Site Name',
92 | description: 'Name used in ogSiteName and used as second part of your page title (My page title - Nuxt UI Pro).',
93 | icon: 'i-mdi-web',
94 | default: [],
95 | }),
96 | },
97 | }),
98 | header: group({
99 | title: 'Header',
100 | description: 'Header configuration.',
101 | icon: 'i-mdi-page-layout-header',
102 | fields: {
103 | title: field({
104 | type: 'string',
105 | title: 'Title',
106 | description: 'Title to display in the header.',
107 | icon: 'i-mdi-format-title',
108 | default: '',
109 | }),
110 | to: field({
111 | type: 'string',
112 | title: 'To',
113 | description: 'URL to redirect to when the title is clicked.',
114 | icon: 'i-mdi-link-variant',
115 | default: '',
116 | }),
117 | logo: group({
118 | title: 'Logo',
119 | description: 'Header logo configuration.',
120 | icon: 'i-mdi-image-filter-center-focus-strong-outline',
121 | fields: {
122 | light: field({
123 | type: 'media',
124 | title: 'Light Mode Logo',
125 | description: 'Pick an image from your gallery.',
126 | icon: 'i-mdi-white-balance-sunny',
127 | default: '',
128 | }),
129 | dark: field({
130 | type: 'media',
131 | title: 'Dark Mode Logo',
132 | description: 'Pick an image from your gallery.',
133 | icon: 'i-mdi-moon-waning-crescent',
134 | default: '',
135 | }),
136 | alt: field({
137 | type: 'string',
138 | title: 'Alt',
139 | description: 'Alt to display for accessibility.',
140 | icon: 'i-mdi-alphabet-latin',
141 | default: '',
142 | }),
143 | },
144 | }),
145 | search: field({
146 | type: 'boolean',
147 | title: 'Search Bar',
148 | description: 'Hide or display the search bar.',
149 | icon: 'i-mdi-magnify',
150 | default: true,
151 | }),
152 | colorMode: field({
153 | type: 'boolean',
154 | title: 'Color Mode',
155 | description: 'Hide or display the color mode button in your header.',
156 | icon: 'i-mdi-moon-waning-crescent',
157 | default: true,
158 | }),
159 | links: field({
160 | type: 'array',
161 | title: 'Links',
162 | description: 'Array of link object displayed in header.',
163 | icon: 'i-mdi-link-variant',
164 | default: [],
165 | }),
166 | },
167 | }),
168 | footer: group({
169 | title: 'Footer',
170 | description: 'Footer configuration.',
171 | icon: 'i-mdi-page-layout-footer',
172 | fields: {
173 | credits: field({
174 | type: 'string',
175 | title: 'Footer credits section',
176 | description: 'Text to display as credits in the footer.',
177 | icon: 'i-mdi-circle-edit-outline',
178 | default: '',
179 | }),
180 | colorMode: field({
181 | type: 'boolean',
182 | title: 'Color Mode',
183 | description: 'Hide or display the color mode button in the footer.',
184 | icon: 'i-mdi-moon-waning-crescent',
185 | default: false,
186 | }),
187 | links: field({
188 | type: 'array',
189 | title: 'Links',
190 | description: 'Array of link object displayed in footer.',
191 | icon: 'i-mdi-link-variant',
192 | default: [],
193 | }),
194 | },
195 | }),
196 | toc: group({
197 | title: 'Table of contents',
198 | description: 'TOC configuration.',
199 | icon: 'i-mdi-table-of-contents',
200 | fields: {
201 | title: field({
202 | type: 'string',
203 | title: 'Title',
204 | description: 'Text to display as title of the main toc.',
205 | icon: 'i-mdi-format-title',
206 | default: '',
207 | }),
208 | bottom: group({
209 | title: 'Bottom',
210 | description: 'Bottom TOC configuration.',
211 | icon: 'i-mdi-table-of-contents',
212 | fields: {
213 | title: field({
214 | type: 'string',
215 | title: 'Title',
216 | description: 'Text to display as title of the bottom toc.',
217 | icon: 'i-mdi-format-title',
218 | default: '',
219 | }),
220 | edit: field({
221 | type: 'string',
222 | title: 'Edit Page Link',
223 | description: 'URL of your repository content folder.',
224 | icon: 'i-ph-note-pencil',
225 | default: '',
226 | }),
227 | links: field({
228 | type: 'array',
229 | title: 'Links',
230 | description: 'Array of link object displayed in bottom toc.',
231 | icon: 'i-mdi-link-variant',
232 | default: [],
233 | }),
234 | },
235 | }),
236 | },
237 | }),
238 | },
239 | })
240 |
241 | declare module '@nuxt/schema' {
242 | interface CustomAppConfig {
243 | ui: {
244 | icons: object
245 | }
246 | }
247 | }
248 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## v1.12.1
4 |
5 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.12.0...v1.12.1)
6 |
7 | ### 💅 Refactors
8 |
9 | - **documentation:** Migrate doc to nuxt content V3 & nuxt ui pro V3 ([35c276e](https://github.com/xibman/nuxt-zod-i18n/commit/35c276e))
10 | - **playground:** Fix nuxt ui type related to v3 ([62eee11](https://github.com/xibman/nuxt-zod-i18n/commit/62eee11))
11 | - **chore:** Update module builder to 1.0.2 ([0078680](https://github.com/xibman/nuxt-zod-i18n/commit/0078680))
12 | - **module:** Remove check nuxt major version ([83943df](https://github.com/xibman/nuxt-zod-i18n/commit/83943df))
13 | - **module:** Add default empty array value for locales in getNormalizedLocales ([dc8d31e](https://github.com/xibman/nuxt-zod-i18n/commit/dc8d31e))
14 |
15 | ### 📦 Build
16 |
17 | - **playground:** Update to nuxt 3.17.7 and to NuxtUi 3.2.0 ([c12116f](https://github.com/xibman/nuxt-zod-i18n/commit/c12116f))
18 | - **module:** Update dependencies ([8cd9c74](https://github.com/xibman/nuxt-zod-i18n/commit/8cd9c74))
19 |
20 | ### 🏡 Chore
21 |
22 | - **module:** Update dependencies and migrate doc to content V3 ([70d6eee](https://github.com/xibman/nuxt-zod-i18n/commit/70d6eee))
23 |
24 | ### 🎨 Styles
25 |
26 | - **linting:** Fox linting config for eslint / vscode ([0aa860a](https://github.com/xibman/nuxt-zod-i18n/commit/0aa860a))
27 |
28 | ### 🤖 CI
29 |
30 | - **github-action:** Sync pnpm version to 10.13.1 ([73a4cdc](https://github.com/xibman/nuxt-zod-i18n/commit/73a4cdc))
31 | - **deploy:** Remove @nuxthq/studio ([2b24544](https://github.com/xibman/nuxt-zod-i18n/commit/2b24544))
32 |
33 | ### ❤️ Contributors
34 |
35 | - Xibman
36 | - Georget Julien
37 |
38 | ## v1.12.0
39 |
40 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.11.5...v1.12.0)
41 |
42 | ### 🚀 Enhancements
43 |
44 | - Add nl-NL locale ([ddb9af7](https://github.com/xibman/nuxt-zod-i18n/commit/ddb9af7))
45 | - Add brazilian portuguese json ([3272f2d](https://github.com/xibman/nuxt-zod-i18n/commit/3272f2d))
46 | - **i18n:** Add nl-NL locale ([2b87772](https://github.com/xibman/nuxt-zod-i18n/commit/2b87772))
47 | - **i18n:** Add new translation for pt-BR ([ea51ce5](https://github.com/xibman/nuxt-zod-i18n/commit/ea51ce5))
48 |
49 | ### 🩹 Fixes
50 |
51 | - Formatting, minor linting ([5d6d67c](https://github.com/xibman/nuxt-zod-i18n/commit/5d6d67c))
52 | - **translations:** Sk-SK language formatting, minor linting ([2d8c18a](https://github.com/xibman/nuxt-zod-i18n/commit/2d8c18a))
53 |
54 | ### 🏡 Chore
55 |
56 | - **deps-dev:** Bump vitest from 2.1.8 to 2.1.9 ([ec86a1a](https://github.com/xibman/nuxt-zod-i18n/commit/ec86a1a))
57 |
58 | ### ❤️ Contributors
59 |
60 | - Georget Julien
61 | - Vinicius Marinho
62 | - GreenmeisterDavid
63 |
64 | ## v1.11.5
65 |
66 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.11.4...v1.11.5)
67 |
68 | ### 🩹 Fixes
69 |
70 | - Interpolation placeholders adapted ([91cd4d5](https://github.com/xibman/nuxt-zod-i18n/commit/91cd4d5))
71 | - 'Entrada inválida' replaced with 'Campo inválido' ([0b2dc87](https://github.com/xibman/nuxt-zod-i18n/commit/0b2dc87))
72 |
73 | ### ❤️ Contributors
74 |
75 | - Douglas Ramírez ([@DouglasAR01](http://github.com/DouglasAR01))
76 |
77 | ## v1.11.4
78 |
79 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.11.3...v1.11.4)
80 |
81 | ### 💅 Refactors
82 |
83 | - **playground:** Opting Nuxt 4 apply new Directory Structure ([bdb564f](https://github.com/xibman/nuxt-zod-i18n/commit/bdb564f))
84 | - **eslint:** Update directory to target app folder for linting ([8396dab](https://github.com/xibman/nuxt-zod-i18n/commit/8396dab))
85 | - **module:** Apply New Directory Structure ([7128234](https://github.com/xibman/nuxt-zod-i18n/commit/7128234))
86 |
87 | ### 📖 Documentation
88 |
89 | - **opting nuxt 4:** Apply new directory structure ([49ed645](https://github.com/xibman/nuxt-zod-i18n/commit/49ed645))
90 |
91 | ### ❤️ Contributors
92 |
93 | - Xibman
94 |
95 | ## v1.11.3
96 |
97 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.11.2...v1.11.3)
98 |
99 | ### 🩹 Fixes
100 |
101 | - **playground:** Move i18n translation to follow new directory structure ([f0989a3](https://github.com/xibman/nuxt-zod-i18n/commit/f0989a3))
102 | - **module:** Add typing for PublicRuntimeConfig ([e236fad](https://github.com/xibman/nuxt-zod-i18n/commit/e236fad))
103 |
104 | ### 💅 Refactors
105 |
106 | - **vscode config:** Update eslint config to use flat config ([61db2f4](https://github.com/xibman/nuxt-zod-i18n/commit/61db2f4))
107 | - **doc:** Clean typing ([ad16d5a](https://github.com/xibman/nuxt-zod-i18n/commit/ad16d5a))
108 |
109 | ### 🏡 Chore
110 |
111 | - **dependencies:** Update dependencies ([2dae81c](https://github.com/xibman/nuxt-zod-i18n/commit/2dae81c))
112 | - **libs:** Update libs and pin typescript version to 5.6.3 ([7be8194](https://github.com/xibman/nuxt-zod-i18n/commit/7be8194))
113 |
114 | ### ✅ Tests
115 |
116 | - **i18n:** Move i18n translation to follow new directory structure ([0ed46ed](https://github.com/xibman/nuxt-zod-i18n/commit/0ed46ed))
117 |
118 | ### 🎨 Styles
119 |
120 | - **linting:** Apply linting ([d979802](https://github.com/xibman/nuxt-zod-i18n/commit/d979802))
121 |
122 | ### 🤖 CI
123 |
124 | - **pnpm:** Update version to 9.15.0 ([5606f8d](https://github.com/xibman/nuxt-zod-i18n/commit/5606f8d))
125 | - **pnpm:** Sync pnpm version to 9.15.2 ([3feca01](https://github.com/xibman/nuxt-zod-i18n/commit/3feca01))
126 |
127 | ### ❤️ Contributors
128 |
129 | - Xibman
130 |
131 | ## v1.11.2
132 |
133 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.11.1...v1.11.2)
134 |
135 | ### 🏡 Chore
136 |
137 | - **dependencies:** Update dependencies ([b37b25e](https://github.com/xibman/nuxt-zod-i18n/commit/b37b25e))
138 | - **dependencies:** Update @nuxt/eslint-config to 0.7.2 ([df4173e](https://github.com/xibman/nuxt-zod-i18n/commit/df4173e))
139 | - **dependencies:** Restore module resolution for nuxt-component-meta ([9771e01](https://github.com/xibman/nuxt-zod-i18n/commit/9771e01))
140 |
141 | ### 🤖 CI
142 |
143 | - **pnpm version:** Align pnpm version to 9.14.4 ([7acd1f3](https://github.com/xibman/nuxt-zod-i18n/commit/7acd1f3))
144 |
145 | ### ❤️ Contributors
146 |
147 | - Xibman
148 |
149 | ## v1.11.1
150 |
151 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.11.0...v1.11.1)
152 |
153 | ### 🩹 Fixes
154 |
155 | - **invalid_type message:** Running translation for invalid_type error parameters ([c8898af](https://github.com/xibman/nuxt-zod-i18n/commit/c8898af))
156 |
157 | ### 🎨 Styles
158 |
159 | - **linting:** Apply linting ([95c89af](https://github.com/xibman/nuxt-zod-i18n/commit/95c89af))
160 |
161 | ### ❤️ Contributors
162 |
163 | - Xibman
164 | - Adam Troll
165 |
166 | ## v1.11.0
167 |
168 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.10.0...v1.11.0)
169 |
170 | ### 🚀 Enhancements
171 |
172 | - Add hu-HU translation ([2b63560](https://github.com/xibman/nuxt-zod-i18n/commit/2b63560))
173 |
174 | ### ❤️ Contributors
175 |
176 | - Adam Troll
177 |
178 | ## v1.10.0
179 |
180 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.9.0...v1.10.0)
181 |
182 | ### 🚀 Enhancements
183 |
184 | - Add id-ID Translation ([fe88fa8](https://github.com/xibman/nuxt-zod-i18n/commit/fe88fa8))
185 |
186 | ### 💅 Refactors
187 |
188 | - **chore:** Use new nuxt kit tools isNuxtMajorVersion and defineNuxtModule().with() ([d236b1d](https://github.com/xibman/nuxt-zod-i18n/commit/d236b1d))
189 | - **compatibility:** Replace iso by language before deprecation in nuxtI18n V9 ([9bb79bf](https://github.com/xibman/nuxt-zod-i18n/commit/9bb79bf))
190 |
191 | ### 📖 Documentation
192 |
193 | - Fix: workaround for Nuxt prerender regression ([e05d195](https://github.com/xibman/nuxt-zod-i18n/commit/e05d195))
194 |
195 | ### 🏡 Chore
196 |
197 | - **release:** V1.9.0 ([286ca03](https://github.com/xibman/nuxt-zod-i18n/commit/286ca03))
198 | - **global:** Update dependencies ([74d9439](https://github.com/xibman/nuxt-zod-i18n/commit/74d9439))
199 | - **global:** Update dependencies ([9391448](https://github.com/xibman/nuxt-zod-i18n/commit/9391448))
200 | - **pnpm:** Set pnpm version to 9.x.x ([6ad33f4](https://github.com/xibman/nuxt-zod-i18n/commit/6ad33f4))
201 |
202 | ### 🤖 CI
203 |
204 | - **github-actions:** Update pnpm/action-setup to v4 ([cade352](https://github.com/xibman/nuxt-zod-i18n/commit/cade352))
205 | - **husky:** Update config for v10 ([012e4bd](https://github.com/xibman/nuxt-zod-i18n/commit/012e4bd))
206 | - **doc:** Fix doc build by adding nuxt image ([7cbd2c9](https://github.com/xibman/nuxt-zod-i18n/commit/7cbd2c9))
207 | - **build:** Add new module resolution for nuxt-component-meta ([8685a88](https://github.com/xibman/nuxt-zod-i18n/commit/8685a88))
208 |
209 | ### ❤️ Contributors
210 |
211 | - Xibman
212 | - KingSit3
213 | - Julien Georget
214 |
215 | ## v1.9.0
216 |
217 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.8.1...v1.9.0)
218 |
219 | ### 🚀 Enhancements
220 |
221 | - Add uk-UA.json ([ebef74d](https://github.com/xibman/nuxt-zod-i18n/commit/ebef74d))
222 |
223 | ### 🩹 Fixes
224 |
225 | - **i18n:** Template surrounding for uk-UA locale ([90da19b](https://github.com/xibman/nuxt-zod-i18n/commit/90da19b))
226 | - **i18n:** Small typo in uk-UA locale ([243d8df](https://github.com/xibman/nuxt-zod-i18n/commit/243d8df))
227 |
228 | ### ❤️ Contributors
229 |
230 | - Andrii ([@sundevista](http://github.com/sundevista))
231 |
232 | ## v1.8.1
233 |
234 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.8.0...v1.8.1)
235 |
236 | ### 💅 Refactors
237 |
238 | - **ts:** Remove @ts-expect-error comment for module config merge ([885bf98](https://github.com/xibman/nuxt-zod-i18n/commit/885bf98))
239 |
240 | ### 🏡 Chore
241 |
242 | - **global:** Update dependencies ([e3c53db](https://github.com/xibman/nuxt-zod-i18n/commit/e3c53db))
243 | - Indicate compatibility with new v4 major ([a0e9f16](https://github.com/xibman/nuxt-zod-i18n/commit/a0e9f16))
244 | - **dependencies:** Update dependencies ([f7c1c84](https://github.com/xibman/nuxt-zod-i18n/commit/f7c1c84))
245 |
246 | ### ❤️ Contributors
247 |
248 | - Julien Georget
249 | - Daniel Roe ([@danielroe](http://github.com/danielroe))
250 |
251 | ## v1.8.0
252 |
253 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.7.0...v1.8.0)
254 |
255 | ### 🚀 Enhancements
256 |
257 | - **i18n:** Add new language ru-RU thanks to @ncodealex ([2791b3b](https://github.com/xibman/nuxt-zod-i18n/commit/2791b3b))
258 |
259 | ### 🩹 Fixes
260 |
261 | - **i18n:** Add missing space in zh language ([98a6820](https://github.com/xibman/nuxt-zod-i18n/commit/98a6820))
262 |
263 | ### ❤️ Contributors
264 |
265 | - Julien Georget
266 |
267 | ## v1.7.0
268 |
269 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.6.0...v1.7.0)
270 |
271 | ### 🚀 Enhancements
272 |
273 | - **i18n:** Add localazy for i18n keys managment ([90246e4](https://github.com/xibman/nuxt-zod-i18n/commit/90246e4))
274 | - **i18n:** Add new languages fr-IR tr-TR ([74aff6d](https://github.com/xibman/nuxt-zod-i18n/commit/74aff6d))
275 |
276 | ### 📖 Documentation
277 |
278 | - Update doc for error interpolation ([9dde48f](https://github.com/xibman/nuxt-zod-i18n/commit/9dde48f))
279 |
280 | ### 🏡 Chore
281 |
282 | - **commit hook:** Add commit hook to lint / test before pushing to repo ([8dd17fe](https://github.com/xibman/nuxt-zod-i18n/commit/8dd17fe))
283 |
284 | ### 🎨 Styles
285 |
286 | - **linting:** Use eslint v9 and flat config ([360da10](https://github.com/xibman/nuxt-zod-i18n/commit/360da10))
287 | - **linting:** Apply linting ([894f0c9](https://github.com/xibman/nuxt-zod-i18n/commit/894f0c9))
288 |
289 | ### 🤖 CI
290 |
291 | - **husky:** Disable husky on ci ([8056f64](https://github.com/xibman/nuxt-zod-i18n/commit/8056f64))
292 |
293 | ### ❤️ Contributors
294 |
295 | - Julien Georget
296 |
297 | ## v1.6.0
298 |
299 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.5.0...v1.6.0)
300 |
301 | ### 🚀 Enhancements
302 |
303 | - **module option:** Add new option useModuleLocale to toggle module locale loading ([3fefe9c](https://github.com/xibman/nuxt-zod-i18n/commit/3fefe9c))
304 |
305 | ### 🩹 Fixes
306 |
307 | - **plugin loading strategy:** Load plugin in parallel mode with explicit dependency to i18n:plugin ([e85d879](https://github.com/xibman/nuxt-zod-i18n/commit/e85d879))
308 |
309 | ### 💅 Refactors
310 |
311 | - **typing:** Rework type import from @nuxt/i18n ([57806a2](https://github.com/xibman/nuxt-zod-i18n/commit/57806a2))
312 |
313 | ### 📖 Documentation
314 |
315 | - Use new `nuxi module add` command in installation ([#24](https://github.com/xibman/nuxt-zod-i18n/pull/24))
316 | - **modules options:** Add doc for new module option useModuleLocale ([5f181ad](https://github.com/xibman/nuxt-zod-i18n/commit/5f181ad))
317 |
318 | ### ❤️ Contributors
319 |
320 | - Julien Georget
321 | - Daniel Roe ([@danielroe](http://github.com/danielroe))
322 |
323 | ## v1.5.0
324 |
325 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.4.0...v1.5.0)
326 |
327 | ### 🚀 Enhancements
328 |
329 | - **i18n:** Add translation for both simplified and traditional Chinese ([#21](https://github.com/xibman/nuxt-zod-i18n/pull/21))
330 |
331 | ### 🩹 Fixes
332 |
333 | - **typing:** Correct @nuxtjs/i18n typing imports ([9b0855f](https://github.com/xibman/nuxt-zod-i18n/commit/9b0855f))
334 |
335 | ### 💅 Refactors
336 |
337 | - **ts:** Remove comment to ignore type for getNormalizedLocales ([1d3c6d0](https://github.com/xibman/nuxt-zod-i18n/commit/1d3c6d0))
338 |
339 | ### 🎨 Styles
340 |
341 | - **linting:** Apply linting to new zh translations ([d296b4a](https://github.com/xibman/nuxt-zod-i18n/commit/d296b4a))
342 |
343 | ### ❤️ Contributors
344 |
345 | - Julien Georget
346 | - Kyle Xie ([@KyleXie](http://github.com/KyleXie))
347 |
348 | ## v1.4.0
349 |
350 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.3.0...v1.4.0)
351 |
352 | ### 🚀 Enhancements
353 |
354 | - **locales loading:** Use nuxt/i18n config to restrict module locale to load ([5a62629](https://github.com/xibman/nuxt-zod-i18n/commit/5a62629))
355 |
356 | ### 🩹 Fixes
357 |
358 | - **issue template:** Fix ident problem ([afce42b](https://github.com/xibman/nuxt-zod-i18n/commit/afce42b))
359 | - **issue template:** Fix wrong formated lines ([ae80e7b](https://github.com/xibman/nuxt-zod-i18n/commit/ae80e7b))
360 | - **issue template:** Fix name for translation template ([3464cdd](https://github.com/xibman/nuxt-zod-i18n/commit/3464cdd))
361 |
362 | ### 📖 Documentation
363 |
364 | - **github:** Add issue template for translations ([b119792](https://github.com/xibman/nuxt-zod-i18n/commit/b119792))
365 | - **translation:** Add link to localazy translation interface ([e7005f9](https://github.com/xibman/nuxt-zod-i18n/commit/e7005f9))
366 |
367 | ### 🏡 Chore
368 |
369 | - Update deps ([9f17aaf](https://github.com/xibman/nuxt-zod-i18n/commit/9f17aaf))
370 |
371 | ### 🎨 Styles
372 |
373 | - Linting ([41b99cb](https://github.com/xibman/nuxt-zod-i18n/commit/41b99cb))
374 |
375 | ### ❤️ Contributors
376 |
377 | - Julien Georget
378 |
379 | ## v1.3.0
380 |
381 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.2.0...v1.3.0)
382 |
383 | ### 🚀 Enhancements
384 |
385 | - **module:** Add locales mapping to ModuleOptions ([#14](https://github.com/xibman/nuxt-zod-i18n/pull/14))
386 |
387 | ### 🏡 Chore
388 |
389 | - **global:** Update dependencies ([920ea44](https://github.com/xibman/nuxt-zod-i18n/commit/920ea44))
390 |
391 | ### ❤️ Contributors
392 |
393 | - Daniele Nicosia
394 | - Julien Georget
395 |
396 | ## v1.2.0
397 |
398 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.1.0...v1.2.0)
399 |
400 | ### 🚀 Enhancements
401 |
402 | - **doc:** Add missing config for prerendering ([01c0993](https://github.com/xibman/nuxt-zod-i18n/commit/01c0993))
403 | - **repository:** Add issue and PR template ([48e0004](https://github.com/xibman/nuxt-zod-i18n/commit/48e0004))
404 |
405 | ### 🩹 Fixes
406 |
407 | - **doc deployment:** Add goal to stub and prepare module ([7e55348](https://github.com/xibman/nuxt-zod-i18n/commit/7e55348))
408 | - **doc deployement:** Add -w goal to @nuxthq/studio installation ([4f5cf05](https://github.com/xibman/nuxt-zod-i18n/commit/4f5cf05))
409 | - **doc deployement:** Add -w goal to @nuxthq/studio installation ([7ccaba9](https://github.com/xibman/nuxt-zod-i18n/commit/7ccaba9))
410 | - **doc:** Update seo and add image for open graph ([f07c0f6](https://github.com/xibman/nuxt-zod-i18n/commit/f07c0f6))
411 |
412 | ### 📖 Documentation
413 |
414 | - **documentation:** Add full doc for the module ([b15f690](https://github.com/xibman/nuxt-zod-i18n/commit/b15f690))
415 | - **error page:** Add missing header links ([840d733](https://github.com/xibman/nuxt-zod-i18n/commit/840d733))
416 | - **doc:** Clean seo ([3066218](https://github.com/xibman/nuxt-zod-i18n/commit/3066218))
417 | - **playground:** Update translations ([6a78b43](https://github.com/xibman/nuxt-zod-i18n/commit/6a78b43))
418 |
419 | ### 🏡 Chore
420 |
421 | - **app:** Initial commit by Nuxt Studio ([7e78be2](https://github.com/xibman/nuxt-zod-i18n/commit/7e78be2))
422 | - **deployment:** Add workflow file ([7698b12](https://github.com/xibman/nuxt-zod-i18n/commit/7698b12))
423 | - **dependencies:** Update dependencies ([bce3b83](https://github.com/xibman/nuxt-zod-i18n/commit/bce3b83))
424 | - **dependencies:** Update Dependencies ([f52b4eb](https://github.com/xibman/nuxt-zod-i18n/commit/f52b4eb))
425 | - **dependencies update:** Update ui-pro ([497331f](https://github.com/xibman/nuxt-zod-i18n/commit/497331f))
426 | - **linting:** Add rule to enforce key order in json files ([4eb5066](https://github.com/xibman/nuxt-zod-i18n/commit/4eb5066))
427 | - **global:** Update dependencies ([c6e7225](https://github.com/xibman/nuxt-zod-i18n/commit/c6e7225))
428 |
429 | ### 🎨 Styles
430 |
431 | - **global:** Linting ([a8e8ef7](https://github.com/xibman/nuxt-zod-i18n/commit/a8e8ef7))
432 |
433 | ### 🤖 CI
434 |
435 | - **doc deployment:** Add goal to prepare module before building doc ([76444a7](https://github.com/xibman/nuxt-zod-i18n/commit/76444a7))
436 | - **doc deplyment:** Update github action to prepare module before building doc ([f1f7978](https://github.com/xibman/nuxt-zod-i18n/commit/f1f7978))
437 | - **doc deployment:** Update deploy action ([0f26058](https://github.com/xibman/nuxt-zod-i18n/commit/0f26058))
438 | - **doc deployment:** Add missing env NUXT_PUBLIC_SITE_URL ([86e3141](https://github.com/xibman/nuxt-zod-i18n/commit/86e3141))
439 | - **deploy:** Remove NUXT_APP_BASE_URL from generate goal ([1659aba](https://github.com/xibman/nuxt-zod-i18n/commit/1659aba))
440 |
441 | ### ❤️ Contributors
442 |
443 | - Julien Georget
444 | - Georget Julien
445 |
446 | ## v1.1.0
447 |
448 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.0.4...v1.1.0)
449 |
450 | ### 🚀 Enhancements
451 |
452 | - **playground:** Add new overload example ([b8ae329](https://github.com/xibman/nuxt-zod-i18n/commit/b8ae329))
453 |
454 | ### 📖 Documentation
455 |
456 | - **readme:** Add information regarding module import order ([3a203e2](https://github.com/xibman/nuxt-zod-i18n/commit/3a203e2))
457 |
458 | ### 🏡 Chore
459 |
460 | - **linting / formating:** Add rules to format and lint full project ([b23b438](https://github.com/xibman/nuxt-zod-i18n/commit/b23b438))
461 |
462 | ### 🎨 Styles
463 |
464 | - **linting:** Lint full project with new rules ([e1b7ba6](https://github.com/xibman/nuxt-zod-i18n/commit/e1b7ba6))
465 | - **linting:** Linting ([c50b008](https://github.com/xibman/nuxt-zod-i18n/commit/c50b008))
466 |
467 | ### ❤️ Contributors
468 |
469 | - Julien Georget
470 |
471 | ## v1.0.4
472 |
473 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.0.3...v1.0.4)
474 |
475 | ### 🩹 Fixes
476 |
477 | - **runtime config:** Add missing import from #app for useRuntimeConfig ([49c924e](https://github.com/xibman/nuxt-zod-i18n/commit/49c924e))
478 |
479 | ### ❤️ Contributors
480 |
481 | - Julien Georget
482 |
483 | ## v1.0.3
484 |
485 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.0.2...v1.0.3)
486 |
487 | ### 🩹 Fixes
488 |
489 | - **global:** Move utils folder to runtime for full export ([af2ebe0](https://github.com/xibman/nuxt-zod-i18n/commit/af2ebe0))
490 |
491 | ### ❤️ Contributors
492 |
493 | - Julien Georget
494 |
495 | ## v1.0.2
496 |
497 | [compare changes](https://github.com/xibman/nuxt-zod-i18n/compare/v1.0.1...v1.0.2)
498 |
499 | ### 🩹 Fixes
500 |
501 | - **locales:** Move locales folder into runtime folder ([088f8a0](https://github.com/xibman/nuxt-zod-i18n/commit/088f8a0))
502 |
503 | ### 📖 Documentation
504 |
505 | - **readme:** Add missing link to playground ([32f274e](https://github.com/xibman/nuxt-zod-i18n/commit/32f274e))
506 |
507 | ### ❤️ Contributors
508 |
509 | - Julien Georget
510 |
511 | ## v1.0.1
512 |
513 | ### 🏡 Chore
514 |
515 | - Initial commit ([9cf92be](https://github.com/xibman/nuxt-zod-i18n/commit/9cf92be))
516 |
517 | ### ❤️ Contributors
518 |
519 | - Julien Georget
520 |
--------------------------------------------------------------------------------