feat(i18n): Add localized language names to internationalization schema

- Extend `LocaleMessages` type with `locales` field for language names
- Update English, Spanish, and French locales with native language names
- Enhance internationalization type safety and locale representation
This commit is contained in:
padreug 2025-03-09 13:31:11 +01:00
parent f02576d94a
commit 1242d9179d
4 changed files with 130 additions and 4 deletions

View file

@ -20,6 +20,13 @@ const messages: LocaleMessages = {
serverError: 'Server error occurred', serverError: 'Server error occurred',
networkError: 'Network connection error' networkError: 'Network connection error'
}, },
locales: {
en: 'English',
es: 'Spanish',
fr: 'French',
de: 'German',
zh: 'Chinese'
},
dateTimeFormats: { dateTimeFormats: {
short: { short: {
year: 'numeric', year: 'numeric',

View file

@ -1,11 +1,61 @@
export default { import type { LocaleMessages } from '../types'
const messages: LocaleMessages = {
nav: { nav: {
title: 'Título de la Aplicación',
home: 'Inicio', home: 'Inicio',
directory: 'Directorio', directory: 'Directorio',
faq: 'Preguntas', faq: 'Preguntas Frecuentes',
title: 'Titulo Aqui',
support: 'Soporte', support: 'Soporte',
login: 'Iniciar Sesión', login: 'Iniciar Sesión',
logout: 'Cerrar Sesión' logout: 'Cerrar Sesión'
}, },
} common: {
loading: 'Cargando...',
error: 'Ha ocurrido un error',
success: 'Operación exitosa'
},
errors: {
notFound: 'Página no encontrada',
serverError: 'Error del servidor',
networkError: 'Error de conexión de red'
},
locales: {
en: 'Inglés',
es: 'Español',
fr: 'Francés',
de: 'Alemán',
zh: 'Chino'
},
dateTimeFormats: {
short: {
year: 'numeric',
month: 'short',
day: 'numeric'
},
long: {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: 'numeric',
minute: 'numeric'
}
},
numberFormats: {
currency: {
style: 'currency',
currencyDisplay: 'symbol'
},
decimal: {
style: 'decimal',
minimumFractionDigits: 2
},
percent: {
style: 'percent',
useGrouping: false
}
}
}
export default messages

61
src/i18n/locales/fr.ts Normal file
View file

@ -0,0 +1,61 @@
import type { LocaleMessages } from '../types'
const messages: LocaleMessages = {
nav: {
title: 'Titre de l\'Application',
home: 'Accueil',
directory: 'Répertoire',
faq: 'FAQ',
support: 'Support',
login: 'Connexion',
logout: 'Déconnexion'
},
common: {
loading: 'Chargement...',
error: 'Une erreur est survenue',
success: 'Opération réussie'
},
errors: {
notFound: 'Page non trouvée',
serverError: 'Erreur du serveur',
networkError: 'Erreur de connexion réseau'
},
locales: {
en: 'Anglais',
es: 'Espagnol',
fr: 'Français',
de: 'Allemand',
zh: 'Chinois'
},
dateTimeFormats: {
short: {
year: 'numeric',
month: 'short',
day: 'numeric'
},
long: {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: 'numeric',
minute: 'numeric'
}
},
numberFormats: {
currency: {
style: 'currency',
currencyDisplay: 'symbol'
},
decimal: {
style: 'decimal',
minimumFractionDigits: 2
},
percent: {
style: 'percent',
useGrouping: false
}
}
}
export default messages

View file

@ -19,6 +19,14 @@ export interface LocaleMessages {
serverError: string serverError: string
networkError: string networkError: string
} }
// Language names in the current language
locales: {
en: string
es: string
fr: string
de: string
zh: string
}
// Add date/time formats // Add date/time formats
dateTimeFormats: { dateTimeFormats: {
short: { short: {