Composables

useUiTranslations

Accesso alle traduzioni UI integrate di @pzeta/vue-form per componenti custom e applicazioni che non usano @pzeta/vue-i18n.

Panoramica

@pzeta/vue-form include un dizionario completo di traduzioni per tutti i testi dell'interfaccia utente: placeholder, label di pulsanti, messaggi di errore UI, etichette di sezione. Queste traduzioni sono esportate direttamente dal modulo i18n della libreria.

Italiano è precaricato come lingua di default. Inglese è disponibile tramite import dinamico.

API

import { it, loadEn } from '@pzeta/vue-form'
import type { TranslationDictionary, UiMessages, ValidationMessages } from '@pzeta/vue-form'

Esportazioni

ExportTipoDescrizione
itTranslationDictionaryDizionario italiano completo — precaricato, disponibile immediatamente
loadEn() => Promise<{ default: TranslationDictionary }>Carica il dizionario inglese on-demand
TranslationDictionarytypeInterfaccia che combina ValidationMessages e UiMessages
ValidationMessagestypeSolo messaggi di validazione
UiMessagestypeSolo messaggi UI per componenti

Chiavi UI disponibili

Le chiavi UI sono organizzate sotto il namespace ui.*. Di seguito la struttura completa.

ui.common — Testi generici

ChiaveValore ITDescrizione
ui.common.search"Cerca..."Placeholder ricerca
ui.common.cancel"Annulla"Pulsante annulla
ui.common.save"Salva"Pulsante salva
ui.common.create"Crea"Pulsante crea
ui.common.edit"Modifica"Pulsante modifica
ui.common.delete"Elimina"Pulsante elimina
ui.common.new"Nuovo"Etichetta nuovo
ui.common.loading"Caricamento..."Stato di caricamento
ui.common.noOptions"Nessuna opzione disponibile"Lista vuota
ui.common.noElements"Nessun elemento"Contenuto vuoto
ui.common.noElementsSelected"Nessun elemento selezionato"Selezione vuota
ui.common.selectPlaceholder"Seleziona..."Placeholder select
ui.common.clickToSelect"Clicca per selezionare"Invito selezione
ui.common.clickToEdit"Clicca per modificare"Invito modifica
ui.common.yes"Sì"Conferma
ui.common.no"No"Negazione

ui.actions — Azioni componenti

ChiaveValore ITComponente
ui.actions.moveUp"Sposta su"Lista ordinabile
ui.actions.moveDown"Sposta giù"Lista ordinabile
ui.actions.moveSelected"Sposta selezionati"PickList
ui.actions.moveAll"Sposta tutti"PickList
ui.actions.removeSelected"Rimuovi selezionati"PickList
ui.actions.removeAll"Rimuovi tutti"PickList
ui.actions.takePhoto"Scatta foto"CameraInput
ui.actions.takeNewPhoto"Scatta nuova foto"CameraInput
ui.actions.deletePhoto"Elimina foto"CameraInput
ui.actions.switchCamera"Cambia fotocamera"CameraInput
ui.actions.startScan"Avvia scansione"BarcodeInput
ui.actions.clear"Cancella"Vari
ui.actions.uploadImage"Carica immagine"ImageInput

ui.labels — Etichette sezioni

ChiaveValore ITComponente
ui.labels.available"Disponibili"PickList
ui.labels.selected"Selezionati"PickList
ui.labels.elements"Elementi"Vari
ui.labels.other"Altre"Categorie

ui.placeholders — Placeholder input

ChiaveValore ITComponente
ui.placeholders.searchIcon"Cerca icona..."IconPicker
ui.placeholders.startWriting"Inizia a scrivere..."Editor
ui.placeholders.enterAddress"Inserisci un indirizzo"AddressInput
ui.placeholders.scanOrEnterCode"Scansiona o inserisci codice..."BarcodeInput

ui.errors — Errori UI

ChiaveValore ITQuando
ui.errors.loadingData"Errore caricamento dati"Fetch fallito
ui.errors.loadingOptions"Errore caricamento opzioni"Select remote
ui.errors.saving"Errore salvataggio"Submit fallito
ui.errors.deleting"Errore eliminazione"Delete fallita
ui.errors.fetchingAddresses"Errore nel recupero degli indirizzi"AddressInput
ui.errors.fetchingAddressDetails"Errore nel recupero dei dettagli dell'indirizzo"AddressInput
ui.errors.cameraAccess"Impossibile accedere alla fotocamera"CameraInput
ui.errors.tiptapNotAvailable"Tiptap non disponibile..."RichTextEditor
ui.errors.barcodeNotSupported"BarcodeDetector API non supportata in questo browser"BarcodeInput
ui.errors.scanError"Errore durante la scansione"BarcodeInput

Esempi

Accesso diretto senza i18n

import { it } from '@pzeta/vue-form'

// Accesso diretto al dizionario italiano
console.log(it.ui.common.save)        // "Salva"
console.log(it.ui.common.noOptions)   // "Nessuna opzione disponibile"
console.log(it.ui.errors.loadingData) // "Errore caricamento dati"

Integrazione con @pzeta/vue-i18n

Il caso d'uso principale è registrare il dizionario in @pzeta/vue-i18n al bootstrap dell'applicazione, poi accedere alle chiavi con t():

// main.ts
import { createApp } from 'vue'
import { createI18n } from '@pzeta/vue-i18n'
import { it, loadEn } from '@pzeta/vue-form'

const i18n = createI18n({
  locale: 'it',
  messages: { it },
})

const app = createApp(App)
app.use(i18n)
<script setup lang="ts">
import { useI18n } from '@pzeta/vue-i18n'

const { t } = useI18n()
</script>

<template>
  <button>{{ t('ui.common.save') }}</button>
  <span>{{ t('ui.common.noOptions') }}</span>
</template>

Caricamento lazy della lingua inglese

import { loadEn } from '@pzeta/vue-form'

// Al cambio lingua
const switchToEnglish = async () => {
  const enModule = await loadEn()
  i18n.setLocaleMessages('en', enModule.default)
  i18n.locale.value = 'en'
}

Costruire un componente custom con traduzioni UI

<script setup lang="ts">
import { useI18n } from '@pzeta/vue-i18n'

const { t } = useI18n()

defineProps<{
  loading: boolean
  options: Array<{ id: number; label: string }>
}>()
</script>

<template>
  <div>
    <span v-if="loading">{{ t('ui.common.loading') }}</span>
    <ul v-else-if="options.length === 0">
      <li>{{ t('ui.common.noOptions') }}</li>
    </ul>
    <ul v-else>
      <li v-for="opt in options" :key="opt.id">{{ opt.label }}</li>
    </ul>
  </div>
</template>

Estendere il dizionario con chiavi custom

import type { TranslationDictionary } from '@pzeta/vue-form'

interface AppTranslations extends TranslationDictionary {
  app: {
    welcome: string
    logout: string
  }
}

const myIt: AppTranslations = {
  ...it,
  app: {
    welcome: 'Benvenuto',
    logout: 'Esci',
  },
}

Note

  • Il dizionario italiano (it) è sempre disponibile senza import dinamici. Usarlo come fallback in applicazioni SSR dove la lingua non è ancora determinata.
  • Le chiavi validation.* dello stesso dizionario coprono tutti i messaggi di errore dei validatori. Non è necessario un dizionario separato.
  • Per la struttura completa dei tipi consultare TranslationDictionary, ValidationMessages e UiMessages esportati da @pzeta/vue-form.