adding spanish translation

This commit is contained in:
Roland Osborne 2024-03-06 23:03:19 -08:00
parent 7e39f05491
commit 2c416d5150
2 changed files with 197 additions and 4 deletions

View File

@ -360,3 +360,183 @@ export const fr = {
camera: 'Caméra'
};
export const sp = {
code: 'sp',
settings: 'Configuración',
contacts: 'Contactos',
logout: 'Cerrar Sesión',
confirmLogout: '¿Estás seguro de que quieres cerrar sesión?',
contactsUpdated: 'Tus contactos han cambiado',
disconnected: 'Desconectado del servidor',
allDevices: 'Cerrar sesión en todos los dispositivos',
ok: 'Aceptar',
cancel: 'Cancelar',
new: 'Nuevo',
newMessage: 'Nuevo mensaje',
topics: 'Temas',
unsetSealing: 'Clave de seguridad no definida',
newTopic: 'Nuevo tema',
noContacts: 'Sin contactos',
noTopics: 'Sin temas',
noConnected: 'Ningún contacto conectado',
subjectOptional: 'Tema (opcional)',
members: 'Miembros',
sealedTopic: 'Tema Seguros',
start: 'Empezar',
communication: 'Comunicación Para la Web Descentralizada',
setupProfile: 'Configura tu Perfil',
connectPeople: 'Conecta con Personas',
startConversation: 'Iniciar una conversación',
default: 'Predeterminado',
dark: 'Oscuro',
light: 'Claro',
operationFailed: 'Operación fallida',
tryAgain: 'Por favor, inténtalo de nuevo.',
add: 'Agregar',
save: 'Guardar',
forget: 'Olvidar',
unlock: 'Desbloquear',
profile: 'Perfil',
application: 'Aplicación',
account: 'Cuenta',
name: 'Nombre',
node: 'Servidor',
location: 'Ubicación',
description: 'Descripción',
timeFormat: 'Formato de Hora',
dateFormat: 'Formato de Fecha',
theme: 'Tema',
language: 'Idioma',
timeUs: '12h',
timeEu: '24h',
dateUs: 'mm/dd',
dateEu: 'dd/mm',
registry: 'Visible en el Registro',
sealedTopics: 'Temas Seguros',
changeLogin: 'Cambiar Credenciales',
selectImage: 'Seleccionar',
profileImage: 'Imagen de Perfil',
profileDetails: 'Detalles del Perfil',
enableSealed: 'Activar Temas Seguros',
password: 'Contraseña',
newPassword: 'Nueva Contraseña',
confirmPassword: 'Confirmar Contraseña',
deleteKey: 'Escribe \'borrar\' para Eliminar la Clave',
delete: 'borrar',
remove: 'Eliminar',
username: 'Nombre de usuario',
updateProfile: 'Actualizar perfil',
syncError: 'Error de sincronización',
callTip: 'Llamar al contacto',
messageTip: 'Enviar mensaje al contacto',
connectedTip: 'Contacto conectado',
requestedTip: 'Solicitud de conexión enviada por el contacto',
connectingTip: 'Conexión en curso',
pendingTip: 'Solicitud de conexión enviada por un contacto desconocido',
confirmedTip: 'Contacto desconectado',
unsavedTip: 'Contacto desconocido',
actions: 'Acciones',
resync: 'Resincronizar',
connect: 'Conectar',
disconnect: 'Desconectar',
disconnectContact: 'Desconectar al Contacto',
deleteContact: 'Eliminar Contacto',
saveContact: 'Guardar Contacto',
saveAccept: 'Guardar y Aceptar la Conexión',
saveRequest: 'Guardar y solicitar la Conexión',
ignoreRequest: 'Ignorar la Solicitud',
acceptConnection: 'Aceptar Conexión',
requestConnection: 'Solicitar Conexión',
cancelRequest: 'Cancelar Solicitud',
resyncContact: 'Resincronizar Contacto',
login: 'Iniciar sesión',
create: 'Crear',
createAccount: 'Crear cuenta',
accountLogin: 'Inicio de sesión en la cuenta',
toCreate: 'Las cuentas se crean a través de un enlace generado desde el panel de administración.',
admin: 'Administrador',
loginError: 'Error de inicio de sesión',
loginMessage: 'Por favor, confirme su nombre de usuario y contraseña.',
createError: 'Error al crear la cuenta',
createMessage: 'Por favor, consulte con su administrador.',
adminError: 'Error de acceso',
adminMessage: 'Por favor, confirme su contraseña',
confirmDelete: 'Eliminar cuenta',
areSure: '¿Estás seguro de que quieres eliminar la cuenta?',
mb: 'MB',
gb: 'GB',
copied: 'Copiado',
accounts: 'Cuentas',
accessAccount: 'Acceder a la Cuenta',
browserLink: 'Enlace del Navegador',
mobileToken: 'Código Móvil',
createLink: 'Enlace para Crear una Cuenta',
configureServer: 'Configurar Servidor',
reloadAccounts: 'Recargar Cuentas',
disableAccount: 'Desactivar Cuenta',
enableAccount: 'Activar Cuenta',
deleteAccount: 'Eliminar Cuenta',
hostHint: 'dominio:puerto/aplicación',
federatedHost: 'Anfitrión federado',
storageLimit: 'Límite de almacenamiento (GB) / cuenta',
storageHint: '0 para Ilimitado',
keyType: 'Tipo de Clave',
accountCreation: 'Creación de Cuenta Pública',
enablePush: 'Activar Cotificaciones push',
allowUnsealed: 'Permitir Temas no Seguros',
topicContent: 'Contenido del tema:',
enableImage: 'Activar imágenes en el tema',
imageHint: 'Permitir la publicación de imágenes en temas',
enableAudio: 'Activar audio en el tema',
audioHint: 'Permitir la publicación de audio en temas',
enableVideo: 'Activar videos en el tema',
videoHint: 'Permitir la publicación de videos en temas',
enableWeb: 'Activar llamadas WebRTC',
webHint: 'Permitir llamadas de audio y video a contactos',
serverUrl: 'URL del servidor WebRTC',
urlHint: 'turn:ip:puerto?transporte=udp',
webUsername: 'Nombre de usuario WebRTC',
webPassword: 'Contraseña WebRTC',
failedLoad: 'Error al cargar',
limit: 'Límite',
deleteMessage: 'Eliminar mensaje',
messageHint: '¿Estás seguro de que quieres eliminar el mensaje?',
attachImage: 'Adjuntar Imagen',
attachVideo: 'Adjuntar Video',
attachAudio: 'Adjuntar Audio',
attachFile: 'Adjuntar Archivo',
fontColor: 'Cambiar el Color de la Fuente',
fontSize: 'Cambiar el Tamaño de la Fuente',
postMessage: 'Publicar Mensaje',
close: 'Cerrar',
leave: 'Salir',
confirmTopic: 'Eliminar Rema',
sureTopic: '¿Estás seguro de que quieres eliminar este tema?',
confirmLeave: 'Salir del Rema',
sureLeave: '¿Estás seguro de que quieres salir de este tema?',
details: 'Detalles',
host: 'Anfitrión',
guest: 'Invitado',
editSubject: 'Editar tema',
editMembership: 'Editar Miembros del Tema',
deleteTopic: 'Eliminar tema',
leaveTopic: 'Salir del tema',
integrated: 'Integrado',
microphone: 'Micrófono',
camera: 'Cámara'
}

View File

@ -1,6 +1,6 @@
import { useEffect, useState } from 'react';
import { LightTheme, DarkTheme } from 'constants/Colors';
import { en, fr } from 'constants/Strings';
import { en, fr, sp } from 'constants/Strings';
export function useSettingsContext() {
@ -13,7 +13,7 @@ export function useSettingsContext() {
scheme: null,
colors: {},
menuStyle: {},
languages: [{ value: null, label: 'Default' }, { value: 'en', label: 'English' }, { value: 'fr', label: 'Français' }],
languages: [{ value: null, label: 'Default' }, { value: 'en', label: 'English' }, { value: 'fr', label: 'Français' }, { value: 'sp', label: 'Español' }],
language: null,
strings: en,
dateFormat: 'mm/dd',
@ -122,16 +122,22 @@ export function useSettingsContext() {
if (language && language.startsWith('fr')) {
updateState({ language: 'fr', strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
}
else if (language && language.startsWith('sp')) {
updateState({ language: 'sp', strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
}
else if (language && language.startsWith('en')) {
updateState({ language: 'en', strings: en, themes: [{ value: null, label: en.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
}
else {
const browser = navigator.language;
if (browser && browser.startsWith('fr')) {
updateState({ language: null, strings: fr });
updateState({ language: null, strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
}
else if (browser && browser.startsWith('sp')) {
updateState({ language: null, strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
}
else {
updateState({ language: null, strings: en });
updateState({ language: null, strings: en, themes: [{ value: null, label: en.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
}
}
@ -171,6 +177,10 @@ export function useSettingsContext() {
localStorage.setItem('language', 'fr');
updateState({ language: 'fr', strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
}
else if (code && code.startsWith('sp')) {
localStorage.setItem('language', 'sp');
updateState({ language: 'sp', strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
}
else if (code && code.startsWith('en')) {
localStorage.setItem('language', 'en');
updateState({ language: 'en', strings: en, themes: [{ value: null, label: fr.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
@ -181,6 +191,9 @@ export function useSettingsContext() {
if (browser && browser.startsWith('fr')) {
updateState({ language: null, strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
}
if (browser && browser.startsWith('sp')) {
updateState({ language: null, strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
}
else {
updateState({ language: null, strings: en, themes: [{ value: null, label: en.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
}