π ΠΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ (i18n) β
ΠΠ»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ) Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ computed(), ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΏΡΠΈ ΡΠΌΠ΅Π½Π΅ ΡΠ·ΡΠΊΠ°.
ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ (Π±Π΅Π· i18n) β
typescript
// ΠΡΠΎΡΡΠΎΠΉ ΠΈ Π±ΡΡΡΡΡΠΉ - Π΄Π»Ρ ΡΠΎΡΠΌ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ
const form = createForm(initialValues, (r, define) =>
define({
email: r.required('Email ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½').email('ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ'),
})
)Π Π΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ (Ρ i18n) β
typescript
// Π Π΅Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ - ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈ ΡΠΌΠ΅Π½Π΅ ΡΠ·ΡΠΊΠ°
const form = createForm(
initialValues,
computed(() => {
const r = createRules()
return {
email: r.required(t('validation.required')).email(t('validation.email')),
}
})
)ΠΠΎΠ»Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ vue-i18n:
vue
<script setup lang="ts">
import { createForm, createRules } from '@sakhnovkrg/vue-form-validator'
import { useI18n } from 'vue-i18n'
import { computed } from 'vue'
const { t } = useI18n()
const form = createForm(
{ username: '', email: '', password: '' },
// Π²ΠΌΠ΅ΡΡΠΎ (r, define) => ...
computed(() => {
const r = createRules()
return {
username: r.required(t('validation.required')),
email: r.required(t('validation.required')).email(t('validation.email')),
password: r
.required(t('validation.required'))
.minLength(6, t('validation.minLength', { count: 6 })),
}
}),
{
onSubmit: async values => {
console.log('Form submitted:', values)
},
}
)
</script>
<template>
<form @submit.prevent="form.submit">
<!-- .values ΠΈ .val β Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡ, .val ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π² script -->
<input v-model="form.values.username" @blur="form.touch('username')" />
<span v-if="form.hasError('username')">{{ form.error('username') }}</span>
<input v-model="form.values.email" @blur="form.touch('email')" />
<span v-if="form.hasError('email')">{{ form.error('email') }}</span>
<!-- ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ... -->
</form>
</template>