@underpostnet/underpost
Version:
519 lines (499 loc) • 21.6 kB
JavaScript
import { newInstance, getId, cap, capFirst } from './CommonJs.js';
import { DropDown } from './DropDown.js';
import { loggerFactory } from './Logger.js';
import { s, htmls, getLang } from './VanillaJs.js';
const logger = loggerFactory(import.meta);
const textFormatted = (str = '    . . .') => capFirst(str.toLowerCase());
const Translate = {
Data: {},
Token: {},
Event: {},
Options: {},
Parse: function (lang) {
s('html').lang = lang;
Object.keys(this.Token).map((translateHash) => {
if (translateHash in this.Token && lang in this.Token[translateHash]) {
if (!('placeholder' in this.Options[translateHash]) && s(`.${translateHash}`))
htmls(
`.${translateHash}`,
this.Options[translateHash]?.disableTextFormat
? this.Token[translateHash][lang]
: textFormatted(this.Token[translateHash][lang]),
);
else if ('placeholder' in this.Token[translateHash] && s(this.Token[translateHash].placeholder))
s(this.Token[translateHash].placeholder).placeholder = this.Options[translateHash]?.disableTextFormat
? this.Token[translateHash][lang]
: textFormatted(this.Token[translateHash][lang]);
}
});
for (const keyEvent of Object.keys(this.Event)) this.Event[keyEvent]();
},
Render: function (keyLang, placeholder, options = { disableTextFormat: false }) {
if (!(keyLang in this.Data)) {
// TODO: add translate package or library for this case
logger.warn('translate key lang does not exist: ', keyLang);
return options.disableTextFormat ? keyLang : textFormatted(keyLang);
}
if (placeholder) this.Data[keyLang].placeholder = placeholder;
keyLang = this.Data[keyLang];
const translateHash = getId(this.Token, 'trans');
this.Options[translateHash] = options;
this.Token[translateHash] = newInstance(keyLang);
if ('placeholder' in keyLang) {
if (s('html').lang in keyLang)
return options.disableTextFormat ? keyLang[s('html').lang] : textFormatted(keyLang[s('html').lang]);
return options.disableTextFormat ? keyLang['en'] : textFormatted(keyLang['en']);
}
if (s('html').lang in keyLang)
return html`<span class="${translateHash}"
>${options.disableTextFormat ? keyLang[s('html').lang] : textFormatted(keyLang[s('html').lang])}</span
>`;
return html`<span class="${translateHash}"
>${options.disableTextFormat ? keyLang['en'] : textFormatted(keyLang['en'])}</span
>`;
},
renderLang: function (language) {
localStorage.setItem('lang', language);
this.Parse(language);
if (s(`.action-btn-lang-render`)) htmls(`.action-btn-lang-render`, s('html').lang);
},
RenderSetting: async function () {
return html` <div class="in section-mp">
${await DropDown.Render({
id: 'settings-lang',
value: s('html').lang ? s('html').lang : 'en',
label: html`${Translate.Render('lang')}`,
data: ['en', 'es'].map((language) => {
return {
display: html`<i class="fa-solid fa-language"></i> ${Translate.Render(language)}`,
value: language,
onClick: () => Translate.renderLang(language),
};
}),
})}
</div>`;
},
};
const TranslateCore = {
Init: async function () {
s('html').lang = getLang();
Translate.Data = {
...Translate.Data,
isEmpty: {
es: 'Este campo no puede estar vacío',
en: 'This field cannot be empty',
},
isEmail: {
es: 'Por favor, introduce una dirección de correo electrónico válida',
en: 'Please enter a valid email address',
},
isLength: {
es: 'Mínimo 2 caracteres, máximo 20 caracteres',
en: 'Minimum 2 characters, maximum 20 characters',
},
passwordMismatch: {
es: 'Las contraseñas no coinciden',
en: 'Passwords do not match',
},
invalidPhoneNumber: {
es: 'Por favor, introduce un número de teléfono válido',
en: 'Please enter a valid phone number',
},
invalidDate: {
es: 'Por favor, introduce una fecha válida',
en: 'Please enter a valid date',
},
customValidator: {
es: 'Este campo no cumple con los requisitos específicos',
en: 'This field does not meet specific requirements',
},
};
Translate.Data['isMobilePhone'] = {
en: 'Invalid mobile phone number. Please check the format and try again.',
es: 'Número de teléfono móvil no válido. Revisa el formato e intenta nuevamente.',
};
Translate.Data['whatsapp-number'] = {
en: 'Enter your WhatsApp number, including your country code.',
es: 'Número de WhatsApp, recuerda colocar el código de tu país',
};
Translate.Data['¿'] = {
en: '',
es: '¿',
};
Translate.Data['color-copy'] = { es: 'color copiado en el portapapeles', en: 'color copied to clipboard' };
Translate.Data['pallet-colors'] = { en: 'pallet colors', es: 'paleta de colores' };
Translate.Data['fullscreen'] = { en: 'Fullscreen', es: 'Pantalla completa' };
Translate.Data['lang'] = { en: 'Language', es: 'Idioma' };
Translate.Data['name'] = { en: 'Name', es: 'Nombre' };
Translate.Data['select'] = { en: 'Select', es: 'Seleccionar' };
Translate.Data['close'] = { en: 'Close', es: 'Cerrar' };
Translate.Data['en'] = { en: 'English', es: 'Ingles' };
Translate.Data['es'] = { en: 'Spanish', es: 'Español' };
Translate.Data['theme'] = { en: 'Theme', es: 'Tema' };
Translate.Data['success-upload-file'] = { en: 'file uploaded successfully', es: 'archivo subido correctamente' };
Translate.Data['file'] = { en: 'file', es: 'archivo' };
Translate.Data['error-upload-file'] = { en: 'error uploading file', es: 'error al subir el archivo' };
Translate.Data['generate'] = { en: 'generate', es: 'Generar' };
Translate.Data['download'] = { en: 'download', es: 'Descargar' };
Translate.Data['delete'] = { en: 'delete', es: 'Eliminar' };
Translate.Data['success-delete'] = { en: 'success delete item', es: 'Item eliminado con exito' };
Translate.Data['invalid-data'] = { en: 'Invalid data', es: 'Datos invalidos' };
Translate.Data['upload'] = { en: 'upload', es: 'Subir' };
Translate.Data['load'] = { en: 'load', es: 'Cargar' };
Translate.Data['settings'] = { en: 'settings', es: 'configuraciones' };
Translate.Data['search'] = { en: 'Search', es: 'Buscar' };
Translate.Data['view'] = { en: 'view', es: 'ver' };
Translate.Data['user'] = { en: 'User', es: 'Usuario' };
Translate.Data['pass'] = { en: 'Password', es: 'Contraseña' };
Translate.Data['email'] = { en: 'Email', es: 'Correo Electronico' };
Translate.Data['clear'] = { en: 'Reset', es: 'Limpiar' };
Translate.Data['select-role'] = { en: 'Select Role', es: 'Seleccionar Rol' };
Translate.Data['sign-up'] = { en: 'Sign Up', es: 'Registrarse' };
Translate.Data['log-in'] = { en: 'Log In', es: 'Ingresar' };
Translate.Data['log-out'] = { en: 'Log Out', es: 'Cerrar Sesión' };
Translate.Data['broker'] = { en: 'Broker', es: 'Agente de ventas' };
Translate.Data['owner'] = { en: 'Owner', es: 'Propietario' };
Translate.Data['password'] = { en: 'Password', es: 'Contraseña' };
Translate.Data['repeat'] = { en: 'Repeat', es: 'Repetir' };
Translate.Data['username'] = { en: 'username', es: 'Nombre de usuario' };
Translate.Data['success-register-user'] = {
en: 'user successfully registered',
es: 'Usuario registrado con exito',
};
Translate.Data['no-valid-register'] = { en: 'No valid register', es: 'Registro no válido' };
Translate.Data['success-user'] = { en: 'user/s successfully obtained', es: 'Usuario/s obtenido correctamente' };
Translate.Data['width'] = { en: 'width', es: 'ancho' };
Translate.Data['height'] = { en: 'height', es: 'altura' };
Translate.Data['type'] = { en: 'Type', es: 'Tipo' };
Translate.Data['write'] = { en: 'write', es: 'escribir' };
Translate.Data['send'] = { en: 'Send', es: 'Enviar' };
Translate.Data['success-user-log-in'] = {
en: 'User successfully logged in.',
es: 'Usuario ha iniciado sesión exitosamente.',
};
Translate.Data['error-user-log-in'] = {
en: 'Error during user login. Please check your credentials and try again.',
es: 'Error durante el inicio de sesión del usuario. Por favor, verifica tus credenciales e intenta nuevamente.',
};
Translate.Data['confirm-logout'] = { en: 'Confirm Logout', es: 'Confirmar cierre de sesión' };
Translate.Data['success-logout'] = { en: 'Successful session logout', es: 'Cierre de sesión exitoso' };
Translate.Data['account'] = { en: 'Account', es: 'Cuenta' };
Translate.Data['update'] = { en: 'Update', es: 'Actualizar' };
Translate.Data['success-update-user'] = { en: 'user update successfully', es: 'usuario actualizado correctamente' };
Translate.Data['error-update-user'] = { en: 'error update user', es: 'error al actualizar el usuario' };
Translate.Data['edit'] = { en: 'Edit', es: 'Editar' };
Translate.Data['unconfirmed'] = { en: 'unconfirmed', es: 'No confirmado' };
Translate.Data['confirmed'] = { en: 'confirmed', es: 'Confirmado' };
Translate.Data['confirm'] = { en: 'confirm', es: 'confirmar' };
Translate.Data['cancel'] = { en: 'cancel', es: 'cancelar' };
Translate.Data['verify-email'] = { en: 'Verify email', es: 'email de verificacion' };
Translate.Data[`email send`] = { en: 'email send', es: 'email enviado' };
Translate.Data['success-generate-keys'] = { en: 'Keys generated successfully.', es: 'Llaves generadas con éxito.' };
Translate.Data['error-generate-keys'] = { en: 'Error generating keys.', es: 'Error al generar las llaves.' };
Translate.Data['copy'] = { en: 'Copy', es: 'Copiar' };
Translate.Data['keys'] = { en: 'Keys', es: 'Llaves' };
Translate.Data['success-copy-data'] = { es: '¡Datos copiados con éxito!', en: 'Data copied successfully!' };
Translate.Data['character'] = { es: 'Personaje', en: 'Character' };
Translate.Data['file-path'] = { en: 'file path', es: 'ruta de archivo' };
Translate.Data['drop-file'] = { en: 'drop file', es: 'soltar archivo' };
Translate.Data['file-upload-failed'] = { en: 'file upload failed', es: 'error al subir el archivo' };
Translate.Data['current-path'] = { en: 'current path', es: 'ruta actual' };
Translate.Data['go'] = { en: 'go', es: 'ir' };
Translate.Data['home-directory'] = { en: 'Home directory', es: 'Directorio de inicio' };
Translate.Data['create'] = { en: 'create', es: 'Crear' };
Translate.Data['home'] = { en: 'Home', es: 'Inicio' };
Translate.Data['calendar'] = { es: 'Calendario', en: 'Calendar' };
Translate.Data['docs'] = { es: 'Documentacion', en: 'Documentation' };
Translate.Data['clean-cache'] = { es: 'Limpiar caché', en: 'Clean cache' };
Translate.Data['add'] = { es: 'Agregar', en: 'Add' };
Translate.Data['mode'] = { es: 'Modo', en: 'Mode' };
Translate.Data['result'] = { es: 'Resultado', en: 'Result' };
Translate.Data['results'] = { es: 'Resultados', en: 'Results' };
Translate.Data['no-result-found'] = {
es: 'No se encontraron resultados',
en: 'No results found',
};
Translate.Data['no-preview-available'] = {
en: 'No preview available',
es: 'Vista previa no disponible',
};
Translate.Data['recent'] = { es: 'Reciente', en: 'recent' };
Translate.Data = {
...Translate.Data,
...{
title: {
en: 'Title Content Entry',
es: 'Titulo de entrada',
},
author: {
en: 'Author',
es: 'Autor',
},
date: {
en: 'Published on',
es: 'Publicado el',
},
content: {
en: 'Content',
es: 'Contenido',
},
_content: {
en: 'This is the content of the new blog entry.',
es: 'Este es el contenido de la nueva entrada de blog.',
},
tags: {
en: 'Tags',
es: 'Etiquetas',
},
categories: {
en: 'Categories',
es: 'Categorías',
},
comments: {
en: 'Comments',
es: 'Comentarios',
},
['server-maintenance']: {
en: "The server is under maintenance <br> we'll be back soon.",
es: 'El servidor está en mantenimiento <br> volveremos pronto.',
},
['no-internet-connection']: {
en: 'No internet connection <br> verify your network',
es: 'Sin conexión a internet <br> verifica tu red',
},
['page-not-found']: {
en: 'Page not found',
es: 'Página no encontrada',
},
['page-broken']: {
es: 'Algo salio mal',
en: 'Something went wrong',
},
['back']: {
en: 'Back to <br> homepage',
es: 'Volver a <br> la pagina principal',
},
},
};
Translate.Data['warning-upload-no-selects-file'] = {
es: 'No ha seleccionado ningún archivo para subir.',
en: 'No file selected for upload.',
};
Translate.Data['no-can-connect-stream-device'] = {
es: 'No se pudo conectar al dispositivo de transmisión.',
en: 'Unable to connect to the stream device.',
};
Translate.Data['equip'] = {
es: 'Equipar',
en: 'Equip',
};
Translate.Data['unequip'] = {
es: 'Desequipar',
en: 'Unequip',
};
Translate.Data['i-have-account'] = {
en: 'I have an account',
es: 'Tengo una cuenta',
};
Translate.Data['i-not-have-account'] = {
en: 'I do not have an account',
es: 'No tengo una cuenta',
};
Translate.Data['forgot-password'] = {
en: 'Forgot Password',
es: 'Olvidé mi contraseña',
};
Translate.Data['recover'] = {
en: 'Recover',
es: 'Recuperar',
};
Translate.Data['send-recover-verify-email'] = {
en: 'Send recover email',
es: 'Enviar email de recuperación',
};
Translate.Data['recover-verify-email'] = {
en: 'recover email',
es: 'email de recuperación',
};
Translate.Data['15-min-valid-recover-email'] = {
en: 'The recovery email link will expire in 15 minutes.',
es: 'El enlace de recuperación del email expirará en 15 minutos.',
};
Translate.Data['success-recover-verify-email'] = {
en: 'Email send with recover password instructions.',
es: 'Email enviado con instrucciones para recuperar contraseña.',
};
Translate.Data['error-recover-verify-email'] = {
en: 'Error sending recover email.',
es: 'Error al enviar email de recuperación.',
};
Translate.Data['success-recover-password'] = {
en: 'Password successfully updated.',
es: 'Contraseña actualizada con éxito.',
};
Translate.Data['error-recover-password'] = {
en: 'Error updating password.',
es: 'Error al actualizar la contraseña.',
};
Translate.Data['change-password'] = {
en: 'Change Password',
es: 'Cambiar contraseña',
};
Translate.Data['resend'] = { en: 'Resend', es: 'Reenviar' };
Translate.Data['delete-account'] = { en: 'Delete Account', es: 'Borrar cuenta' };
Translate.Data['success-delete-account'] = {
en: 'Account deleted successfully.',
es: 'Cuenta borrada con éxito.',
};
Translate.Data['error-delete-account'] = {
en: 'Error deleting account.',
es: 'Error al borrar la cuenta.',
};
Translate.Data['confirm-delete-account'] = {
en: 'Are you sure you want to delete your account?',
es: '¿Estás seguro de que deseas borrar tu cuenta?',
};
Translate.Data['default-management'] = {
en: 'Default Management',
es: 'Gestión por defecto',
};
Translate.Data['field'] = {
en: 'Field',
es: 'Campo',
};
Translate.Data['success-updated'] = {
en: 'Successfully updated.',
es: 'Actualizado con éxito.',
};
Translate.Data['item-success-delete'] = {
en: 'Item successfully deleted.',
es: 'Elemento eliminado con éxito.',
};
Translate.Data['success-delete-all-items'] = {
en: 'All items successfully deleted.',
es: 'Todos los elementos eliminados con éxito.',
};
Translate.Data['success-create-item'] = {
en: 'Item successfully created.',
es: 'Elemento creado con éxito.',
};
Translate.Data['user-management'] = {
en: 'User Management',
es: 'Gestión de usuarios',
};
Translate.Data['success-update-item'] = { en: 'Item successfully updated.', es: 'Elemento actualizado con éxito.' };
Translate.Data['error-update-item'] = { en: 'Error updating item', es: 'Elemento actualizado con éxito.' };
Translate.Data['instance-management'] = {
en: 'Instance Management',
es: 'Gestión de instancias',
};
Translate.Data['login-attempts-remaining'] = {
en: 'Login attempts remaining:',
es: 'Intentos de inicio de sesión restantes:',
};
Translate.Data['account-locked-try-again-in'] = {
en: 'Account locked. Try again in:',
es: 'Cuenta bloqueada. Intente nuevamente en:',
};
Translate.Data['pre-release'] = {
en: 'Pre release',
es: 'Pre lanzamiento',
};
Translate.Data['all-day'] = {
en: 'Every day',
es: 'Todos los días',
};
Translate.Data['allDay'] = Translate.Data['all-day'];
Translate.Data['allday'] = Translate.Data['all-day'];
Translate.Data['month'] = {
en: 'Month',
es: 'Mes',
};
Translate.Data['week'] = {
en: 'Week',
es: 'Semana',
};
Translate.Data['summary'] = {
en: 'Summary',
es: 'Resumen',
};
Translate.Data['today'] = {
en: 'Today',
es: 'Hoy',
};
Translate.Data['success-add-event-scheduler'] = {
en: 'Event successfully added to scheduler.',
es: 'Evento añadido correctamente al calendario.',
};
Translate.Data['success-edit-event-scheduler'] = {
en: 'Event successfully updated to scheduler.',
es: 'Evento actualizado correctamente al calendario.',
};
Translate.Data['success-get-events-scheduler'] = {
en: 'Events successfully retrieved from scheduler.',
es: 'Eventos obtenidos correctamente del calendario.',
};
Translate.Data['success-add-post'] = {
en: 'Post added successfully',
es: 'Post añadido con éxito',
};
Translate.Data['success-get-posts'] = {
en: 'Posts successfully retrieved',
es: 'Posts obtenidos con éxito',
};
Translate.Data['confirm-delete-item'] = {
en: 'Are you sure you want to delete this item?',
es: '¿Estás seguro de que deseas eliminar este elemento?',
};
Translate.Data['success-edit-post'] = {
en: 'Post edited successfully',
es: 'Post editado con éxito',
};
Translate.Data['confirm-delete-all-data'] = {
en: 'Are you sure you want to delete all data?',
es: 'Estas seguro de eliminar todos los datos?',
};
Translate.Data['charge-complete'] = {
en: 'Charge complete',
es: 'Carga completada',
};
Translate.Data['play'] = { es: 'Jugar', en: 'Play' };
Translate.Data['pause'] = { es: 'Pausar', en: 'Pause' };
Translate.Data['stop'] = { es: 'Parar', en: 'Stop' };
Translate.Data['previous'] = { es: 'Anterior', en: 'Previous' };
Translate.Data['next'] = { es: 'Siguiente', en: 'Next' };
Translate.Data['buy'] = { es: 'comprar', en: 'Buy' };
Translate.Data['sell'] = { es: 'Vender', en: 'sell' };
Translate.Data['monday'] = { es: 'Lunes', en: 'Monday' };
Translate.Data['tuesday'] = { es: 'Martes', en: 'Tuesday' };
Translate.Data['wednesday'] = { es: 'Miércoles', en: 'Wednesday' };
Translate.Data['thursday'] = { es: 'Jueves', en: 'Thursday' };
Translate.Data['friday'] = { es: 'Viernes', en: 'Friday' };
Translate.Data['saturday'] = { es: 'Sábado', en: 'Saturday' };
Translate.Data['sunday'] = { es: 'Domingo', en: 'Sunday' };
Translate.Data['description'] = { es: 'Descripción', en: 'Description' };
Translate.Data['daysOfWeek'] = { es: 'Días de la semana', en: 'Days of the week' };
Translate.Data['startTime'] = { es: 'Hora de inicio', en: 'Start time' };
Translate.Data['endTime'] = { es: 'Hora de finalizacion', en: 'End time' };
Translate.Data['appointment-scheduled'] = {
en: 'Your appointment has been scheduled',
es: 'Tu cita ha sido programada',
};
Translate.Data['info'] = { es: 'Información', en: 'Info' };
Translate.Data['complete-name'] = { es: 'Nombre completo', en: 'Complete name' };
Translate.Data['identityDocument'] = { es: 'Rut', en: 'Identity document' };
Translate.Data['day'] = { es: 'Día', en: 'Day' };
Translate.Data['month'] = { es: 'Mes', en: 'Month' };
Translate.Data['year'] = { es: 'Año', en: 'Year' };
Translate.Data['phone'] = { es: 'Teléfono', en: 'Phone' };
Translate.Data['invalid-identity-document'] = {
en: 'Invalid identity document',
es: 'Documento de identidad inválido',
};
Translate.Data['expired-session'] = {
en: 'Your session has expired. Please log in again.',
es: 'Su sesión ha expirado. Por favor, inicie sesión de nuevo.',
};
},
};
export { Translate, TranslateCore, textFormatted };