Webtop translations

Hi all,

after installing webtop with German as deafult language, I see strange labels in the UI like here:

Notice e.g. the “${scheduler.goToday.lbl}”.
I have this all around the webtop UI. How can I get a proper UI in webtop?

Thank you.

It seems not translated yet:

English: webtop-calendar/src/main/client/locale_en.properties at 610d06b665adb0e2e152aafc8f3cfaebfa99ff31 · sonicle-webtop/webtop-calendar · GitHub

German: webtop-calendar/src/main/client/locale_de.properties at 610d06b665adb0e2e152aafc8f3cfaebfa99ff31 · sonicle-webtop/webtop-calendar · GitHub

However I see this all across the webtop UI, which makes it practically unuseable.
I tried to switch default language back to English without success. Any ideas how to solve / debug that?

It should be possible to change the language in the user account settings.
I assume that the default language is set at user creation and can’t be changed for already existing users but I didn’t test.

Go to account settings (top right):
grafik

Change language:

Hi,

correct. When I change language to English, everything works. Changing back to German results in a lot of defects in the UI.

So this seems to be an issue with translations not being correctly displayed, even if the strings seem to be available in the source code as @mrmarkuz pointed out.
This behavior still happens with the latest webtop version from today.

For me it seems to be a bug.

1 Like

The needed strings are only available in the English version, not in the German one. It seems just not translated yet.

For example scheduler.goToday.lbl=Heute doesn’t exist in the German version.

I think a fallback to English would be nice when a string isn’t translated, instead of displaying something like ${scheduler.goToday.lbl}

brothers, the translation has to be done from github? i want to contribute

2 Likes

this is my contribution in Spanish, I hope you find it useful.

act-previousday.tip=Atr\u00E1s

act-today.tip=Hoy

act-today.lbl=Hoy

act-nextday.tip=Siguiente

act-dayview.lbl=D\u00EDa

act-dayview.tip=Vista diaria

act-week5view.lbl=Semana (5 d\u00EDas)

act-week5view.tip=Vista semanal (semana laboral)

act-weekview.lbl=Semana

act-weekview.tip=Vista semanal

act-dweekview.lbl=Bi-Semana

act-dweekview.tip=Vista bi-semanal

act-monthview.lbl=Mes

act-monthview.tip=Vista mensual

act-addCalendar.lbl=A\u00F1adir calendario

act-addRemoteCalendar.lbl=Agregar calendario de internet

act-viewCalendarLinks.lbl=Enlaces a este calendario

act-editCalendar.lbl=Modificar calendario

act-deleteCalendar.lbl=Eliminar calendario

act-syncRemoteCalendar.lbl=Sincronizar

act-importEvents.lbl=Importar eventos…

act-exportEvents.lbl=Exportar eventos…

act-newEvent.lbl=Evento

act-newEvent.tip=Nuevo evento

act-addEvent.lbl=A\u00F1adir evento

mni-copyormove.lbl=Mover/Copiar

act-copyEvent.lbl=Copiar al calendario…

act-moveEvent.lbl=Mover al calendario…

act-printScheduler.tip=Imprimir

act-erpExport.lbl=Exportaci\u00F3n ERP (CSV)

mni-viewFolders.lbl=Seleccionar calendarios

mni-viewFolder.lbl=Seleccionar

act-viewThisFolderOnly.lbl=Solo este calendario

act-viewAllFolders.lbl=Todos

act-viewNoneFolders.lbl=Ninguno

act-manageHiddenCalendars.lbl=Administrar visibilidad…

mni-customizeFolder.lbl=Personalizar

act-hideCalendar.lbl=Ocultar de la lista

mni-calendarColor.lbl=Color

act-restoreCalendarColor.lbl=Restaurar original

mni-calendarSync.lbl=Dispositivos sincronizados.

mni-defaultCalendar.lbl=Predeterminado

act-applyTags.lbl=Etiquetas…

mni-tags.lbl=Etiquetas

act-manageTags.lbl=Gestionar etiquetas

fld-search.emp=Buscar en calendarios…

fld-search.tip=Buscar en calendarios seleccionados

fld-search.field.title.lbl=T\u00EDtulo

fld-search.field.location.lbl=Ubicaci\u00F3n

fld-search.field.description.lbl=Descripci\u00F3n

fld-search.field.any.lbl=Cualquier campo

fld-search.field.after.lbl=Despu\u00E9s

fld-search.field.before.lbl=Antes

fld-search.field.busy.lbl=Ocupado

fld-search.field.private.lbl=Privado

fld-search.field.tags.lbl=Etiquetas

not.calendar.rsync.start.body=Sincronizaci\u00F3n iniciada

not.calendar.rsync.end.body.ok=Sincronizaci\u00F3n completada

not.calendar.rsync.end.body.err=Error de sincronizaci\u00F3n\n(“{0}”)

not.calendar.resourceAvailChange.body.available=El recurso est\u00E1 disponible nuevamente.

not.calendar.resourceAvailChange.body.unavailable=El recurso ya no est\u00E1 disponible. Verifique sus reservas en curso.

not.calendar.resourceReservationReply.body.accepted=La reserva para ‘{0}’ fue confirmada.

not.calendar.resourceReservationReply.body.declined=La reserva para ‘{0}’ fue rechazada.

not.calendar.resourceUsageUnauthorized.body=Su perfil de usuario no tiene permiso para usar el recurso.

trfolders.origin.my=Mis Calendarios

trfolders.origin.resources=Recursos

trfolders.default=predeterminado

multical.dayText=D\u00EDa

multical.weekText=Semana

scheduler.today=Hoy

scheduler.more=+ m\u00E1s {0}…

scheduler.ddcreateevent=Nuevo evento: {0}

scheduler.ddcopyevent=Copiar evento: {0}

scheduler.ddmoveevent=Mover evento: {0}

scheduler.ddresizeevent=Actualizar evento: {0}

gpevents.duration.lbl=Duraci\u00F3n

gpevents.tags.lbl=Etiquetas

calendar.tit=Calendario

calendar.confirm.delete=\u00BFEst\u00E1s seguro de eliminar ‘{0}’ y todos los eventos asociados?

calendar.confirm.hide=\u00BFEst\u00E1s seguro de ocultar el calendario?

calendar.confirm.remotesync=La sincronizaci\u00F3n puede llevar tiempo. \u00BFEst\u00E1s seguro de querer continuar?\n(Ser\u00E1s notificado al finalizar)

calendar.confirm.tags.set=\u00BFEst\u00E1s seguro de agregar las etiquetas seleccionadas a cada evento en el calendario ‘{0}’?

calendar.confirm.tags.unset=\u00BFEst\u00E1s seguro de eliminar las etiquetas seleccionadas de cada evento en el calendario ‘{0}’?

calendar.main.tit=Propiedades

calendar.main.defaults.tit=Valores predeterminados

calendar.remote.tit=Calendario de internet

calendar.fld-name.lbl=Nombre

calendar.fld-provider.lbl=Tipo

calendar.fld-description.lbl=Descripci\u00F3n

calendar.fld-color.lbl=Color

calendar.fld-sync.lbl=Sincronizaci\u00F3n (EAS)

calendar.fld-visibility.lbl=Visibilidad

calendar.fld-visibility.default=Normal

calendar.fld-visibility.private=Privado

calendar.fld-showme.lbl=Mostrarme como

calendar.fld-showme.available=Disponible

calendar.fld-showme.busy=Ocupado

calendar.fld-reminder.lbl=Recordatorio

calendar.fld-invitation.lbl=Invitaciones

calendar.fld-notifyOnExtUpdate.lbl=Recibir una notificaci\u00F3n cuando alguien m\u00E1s modifique mi calendario

calendar.fld-remoteUrl.lbl=URL

calendar.fld-remoteUsername.lbl=Nombre de usuario

calendar.fld-remotePassword.lbl=Contrase\u00F1a

calendar.fld-remoteSyncFrequency.lbl=Sincronizaci\u00F3n

calendar.fld-remoteSyncFrequency.emp=Manual

calendar.btn-syncnow.tip=Sincronizar ahora

calendar.btn-syncnow.partial.lbl=Solo cambios

calendar.btn-syncnow.full.lbl=Completo

calendar.tbi-lastSync.lbl=\u00DAltima sincronizaci\u00F3n:

calendarLinks.tit=Enlaces a este calendario

calendarLinks.fld-davCalUrl.lbl=URL de CalDAV

calendarRemoteWiz.tit=Calendario de internet

calendarRemoteWiz.s1.tit=Suscribirse a un calendario remoto (Webcal/Webdav)

calendarRemoteWiz.s1.txt=Especificar par\u00E1metros de conexi\u00F3n

calendarRemoteWiz.s2.tit=Confirmar la suscripci\u00F3n

calendarRemoteWiz.s2.txt=Elegir un nombre y un color para el nuevo calendario y hacer clic en ‘Siguiente’ para continuar.

calendarRemoteWiz.s3.tit=Suscripci\u00F3n completada

calendarRemoteWiz.s3.txt=La sincronizaci\u00F3n inicial comenzar\u00E1 pronto.\nEsta operaci\u00F3n puede llevar tiempo. Ser\u00E1s notificado al finalizar.

calendarRemoteWiz.fld-provider.lbl=Tipo

calendarRemoteWiz.fld-url.lbl=URL

calendarRemoteWiz.fld-username.lbl=Nombre de usuario

calendarRemoteWiz.fld-password.lbl=Contrase\u00F1a

calendarRemoteWiz.fld-name.lbl=Nombre

calendarRemoteWiz.fld-color.lbl=Color

calendarRemoteWiz.fld-syncFrequency.lbl=Actualizaci\u00F3n

calendarRemoteWiz.fld-syncFrequency.emp=Manualmente

event.tit=Evento

event.act-addAttendee.lbl=Agregar asistente

event.act-addResource.lbl=Agregar recurso

event.confirm.delete=\u00BFEst\u00E1s seguro de eliminar ‘{0}’?

event.meeting.info=Este evento contiene un enlace a una reuni\u00F3n.

event.recurring.confirm.save=El evento es parte de un conjunto. \u00BFQu\u00E9 te gustar\u00EDa modificar?

event.recurring.confirm.delete=El evento es parte de un conjunto. \u00BFQu\u00E9 te gustar\u00EDa eliminar?

event.recurring.confirm.restore=\u00BFEst\u00E1s seguro de restaurar el evento en el conjunto?

event.recurring.confirm.series=La configuraci\u00F3n de recurrencia ha cambiado.\nLas modificaciones se aplicar\u00E1n a toda la serie. \u00BFContinuar?

event.send.confirm.save=\u00BFTe gustar\u00EDa enviar un correo de invitaci\u00F3n a los invitados?

event.send.confirm.update=\u00BFTe gustar\u00EDa enviar un correo de actualizaci\u00F3n a los invitados?

event.send.confirm.yes=Enviar

event.send.confirm.no=No enviar

event.error.rrpaste=La regla de recurrencia (RRULE) pegada no es v\u00E1lida

event.appointment.tit=Cita

event.invitation.tit=Invitados

event.recurrence.tit=Recurrencia

event.attachments.tit=Adjuntos

event.cfields.tit=Campos personalizados

event.fld-owner.lbl=Propietario

event.fld-calendar.lbl=Calendario

event.fld-title.lbl=Evento

event.fld-location.lbl=Lugar

event.fld-startDate.lbl=Inicio

event.fld-endDate.lbl=Final

event.fld-allDay.lbl=D\u00EDa completo

event.fld-timezone.lbl=Zona horaria

event.fld-description.lbl=Descripci\u00F3n

event.fld-reminder.lbl=Recordatorio

event.fld-private.lbl=Privado

event.fld-busy.lbl=Ocupado

event.fld-activity.lbl=Actividad

event.fld-masterData.lbl=Cliente/Proveedor

event.fld-statMasterData.lbl=Ref estad\u00EDstica

event.fld-causal.lbl=Causales/Confirmar

event.gp-attendees.notify.lbl=Notificaci\u00F3n

event.gp-attendees.recipient.lbl=Participantes

event.gp-attendees.recipientType.lbl=Tipolog\u00EDa

event.gp-attendees.recipientRole.lbl=Rol

event.gp-attendees.responseStatus.lbl=Respuesta

event.btn-now.tip=Ajustar hora actual

event.btn-planning.lbl=Mostrar disponibilidad…

customPanels.gp.tags.emp=(panel para todos los eventos)

customPanel.fld-tags.emp=ninguno (panel para todos los eventos)

calendarChooser.fld-owner.lbl=Usuario

calendarChooser.fld-calendar.lbl=Calendario

hiddenCalendars.tit=Calendarios ocultos

importEvents.tit=Importar eventos…

importEvents.path.fld-path.ics=Archivo ICal (*.ics, *.ical, *.icalendar)

erpExport.tit=Exportaci\u00F3n ERP (CSV)

erpExport.start.fld-fromDate.lbl=Fecha de inicio

erpExport.start.fld-toDate.lbl=Fecha final

confirm.recurrence.this=Este evento

confirm.recurrence.since=Este evento y todos los eventos futuros

confirm.recurrence.all=Todos los eventos dentro del conjunto

opts.main.tit=General

opts.main.fld-view.lbl=Vista predeterminada

opts.main.fld-timeResolution.lbl=Resoluci\u00F3n de tiempo

opts.main.fld-workdayStart.lbl=Horas de trabajo (inicio)

opts.main.fld-workdayEnd.lbl=Horas de trabajo (final)

opts.main.fld-eventReminderDelivery.lbl=Notificaci\u00F3n de recordatorio

portlet.events.tit=Eventos

portlet.events.gp.emp=No hay eventos que mostrar

portlet.events.gp.dateat={0} en {1}

portlet.events.gp.dateat.today=Hoy

portlet.events.gp.dateat.tomorrow=Ma\u00F1ana

portlet.events.gp.act-joinMeeting.tip=Unirse a la reuni\u00F3n

portlet.events.sbar.count=Buscar: {0} eventos encontrados

wtcalplanninggrid.legend.free.txt=Libre

wtcalplanninggrid.legend.freeWorkdayOff.txt=D\u00EDa no laborable

wtcalplanninggrid.legend.busy.txt=Ocupado

wtcalplanninggrid.legend.unknown.txt=Sin informaci\u00F3n

wtcalplanninggrid.viewOptions.hideWorkdayOff.lbl=Ocultar horas no laborables

wtcalplanninggrid.viewOptions.resolution.lbl=Resoluci\u00F3n de intervalo de tiempo

wtcalplanninggrid.viewOptions.resolution.60.lbl=60 minutos

wtcalplanninggrid.viewOptions.resolution.30.lbl=30 minutos

wtcalplanninggrid.viewOptions.resolution.15.lbl=15 minutos

wtcalplanninggrid.btn-hidePlanning.lbl=Volver a los asistentes…

wtcalplanninggrid.attendee.lbl=Asistente

wtcalplanninggrid.organizer=(organizador)

store.view.d=D\u00EDa

store.view.w5=Semana (5 d\u00EDas)

store.view.w=Semana

store.view.dw=2-Semanas

store.view.m=Mes

store.reminder.0=0 Minutos

store.reminder.1=1 Minuto

store.reminder.5=5 Minutos

store.reminder.10=10 Minutos

store.reminder.15=15 Minutos

store.reminder.30=30 Minutos

store.reminder.45=45 Minutos

store.reminder.60=1 Hora

store.reminder.120=2 Horas

store.reminder.180=3 Horas

store.reminder.240=4 Horas

store.reminder.300=5 Horas

store.reminder.360=6 Horas

store.reminder.420=7 Horas

store.reminder.480=8 Horas

store.reminder.540=9 Horas

store.reminder.600=10 Horas

store.reminder.660=11 Horas

store.reminder.720=12 Horas

store.reminder.1080=18 Horas

store.reminder.1440=24 Horas

store.reminder.2880=48 Horas

store.reminder.10080=1 Semana

store.reminder.20160=2 Semanas

store.reminder.43200=30 D\u00EDas

store.attendeeRcptType.IND=Persona

store.attendeeRcptType.RES=Recurso

store.attendeeRcptRole.REQ=Requerido

store.attendeeRcptRole.OPT=Opcional

store.attendeeRcptRole.CHA=Organizador

store.attendeeRespStatus.NA=Ninguna

store.attendeeRespStatus.DE=Rechazado

store.attendeeRespStatus.TE=Intento

store.attendeeRespStatus.AC=Aceptado

store.reminderDelivery.app=En WebTop

store.reminderDelivery.email=Email

store.sync.O=Inactivo

store.sync.R=Solo lectura

store.sync.W=Activo

store.calendarProvider.local=Local

store.calendarProvider.webcal=Webcal (Internet)

store.calendarProvider.caldav=CalDAV (Internet)

store.remoteSyncFreq.15=Cada 15 minutos

store.remoteSyncFreq.30=Cada 30 minutos

store.remoteSyncFreq.60=Cada 60 minutos

store.timeResolution.15=15 minutos

store.timeResolution.30=30 minutos

pub.error.eventnotfound=El evento no est\u00E1 disponible o ha sido eliminado.

pub.error.badrequest=Lo siento, la p\u00E1gina solicitada no est\u00E1 disponible.

pub.event.fld-description.et=Ninguna descripci\u00F3n

pub.event.fld-when.lbl=Cu\u00E1ndo

pub.event.fld-where.lbl=D\u00F3nde

pub.event.fld-whereUrl.lbl=mapa

pub.event.fld-calendar.lbl=Calendario

pub.event.fld-organizer.lbl=Organizador

pub.event.fld-attendees.lbl=Participantes

auditLog.EVENT.CREATE=Evento creado

auditLog.EVENT.UPDATE=Evento actualizado

auditLog.EVENT.DELETE=Evento eliminado

auditLog.EVENT.MOVE=Evento movido

auditLog.EVENT.TAG=Etiquetas cambiadas

auditLog.CALENDAR.CREATE=Calendario creado

auditLog.CALENDAR.UPDATE=Calendario actualizado

auditLog.CALENDAR.DELETE=Calendario eliminado

auditLog.CALENDAR.TAG=Etiquetas de eventos actualizadas

act-pasteList.lbl=Pegar destinatarios

act-pasteList.tip=Pegar direcciones de correo (por ejemplo, desde una columna de hoja de c\u00E1lculo)

act-pasteList.tit=Pegar direcciones de correo

act-pasteContactsList.lbl=Importar destinatarios desde la lista de contactos

act-pasteContactsList.confirm.tit=Importar destinatarios desde la lista de contactos

3 Likes