Skip to content
Draft
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2664b8a
First draft to support multiple languages
lupusA Mar 8, 2024
9c85f8c
Added more languages as a placeholder
lupusA Mar 8, 2024
4209eaa
Further working on the feature
lupusA Mar 8, 2024
70311c8
Added placeholder for polish language support
lupusA Mar 8, 2024
a26b0fd
added Polish translation
jkowalski Mar 9, 2024
3ddce73
Further working on the feature
lupusA Mar 9, 2024
012f009
Merge branch 'add-language-support' of https://github.com/lupusA/html…
lupusA Mar 9, 2024
71f8262
Integrated polish translation
lupusA Mar 9, 2024
32a2f8f
Languages are not represented in a single JSON file
lupusA Mar 9, 2024
bc26dda
Some smaller changes
lupusA Mar 9, 2024
16619fe
Started to translate SnapshotRestore
lupusA Mar 10, 2024
eab290d
Language selection now works properly. Added some translations.
lupusA Mar 10, 2024
07d2d11
i18next is now properly initialized using suspense and lazy loading
lupusA Mar 12, 2024
de5d777
Some minor changes
lupusA Mar 12, 2024
9c97dc9
Translated SnapshotRestore
lupusA Mar 13, 2024
4fcec02
Preliminary fix tests. Tests are extened in a another PR.
lupusA Mar 13, 2024
6d7c8d9
Added more translations
lupusA Mar 16, 2024
0d1c8ca
npm audit fix
lupusA Mar 16, 2024
9780625
Further translating components. Adding languages requires no signific…
lupusA Mar 17, 2024
24281d0
Fix test
lupusA Mar 17, 2024
93298ef
Added tests and additional translations
lupusA Mar 17, 2024
4bb0e23
Further tranlsating strings
lupusA Mar 19, 2024
5550aac
Some smaller improvements. Further translating text.
lupusA Mar 21, 2024
81025f0
Further translating strings. Some minor layout fixes.
lupusA Mar 22, 2024
744bd40
Further translating. Minor layout fixes.
lupusA Mar 24, 2024
dda4271
First full translation. Some parts need fine-tuning
lupusA Mar 30, 2024
6a3b1c3
Refactored translations keys
lupusA Apr 7, 2024
42b8184
some Polish translation updates, work in progress
jkowalski Apr 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
744 changes: 615 additions & 129 deletions package-lock.json

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,18 @@
"@fortawesome/free-solid-svg-icons": "^6.5.1",
"@fortawesome/react-fontawesome": "^0.2.0",
"bootstrap": "^5.3.1",
"country-flag-icons": "^1.5.9",
"http-proxy-middleware": "^2.0.6",
"i18next": "^23.10.1",
"i18next-browser-languagedetector": "^7.2.0",
"i18next-http-backend": "^2.5.0",
"moment": "^2.30.1",
"react": "^18.2.0",
"react-bootstrap": "^2.8.0",
"react-dom": "^18.2.0",
"react-i18next": "^14.1.0",
"react-router-dom": "^5.3.4",
"react-select": "^5.8.0",
"react-table": "^7.8.0"
},
"scripts": {
Expand Down
106 changes: 106 additions & 0 deletions public/locales/de-DE/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
{
"tab.preferences":"Einstellungen",
"tab.repository":"Repository",
"tab.tasks":"Aufgaben",
"tab.policies":"Richtlinien",
"tab.snapshots":"Snapshots",

"task.all":"Alle",
"task.running":"Running",
"task.failed":"Fehlgeschlagen",
"task.loading": "Loading...",
"task.header.time.start": "Startzeit",
"task.header.status": "Status",
"task.header.kind": "Art",
"task.header.description": "Beschreibung",
"task.feedback.search": "Suchen nach Einträgen per Beschreibung",
"task.feedback.entries": "Hier erscheint eine Liste von Aufgaben, sobald Snapshots, Wartungsaufgaben oder Wiederherstellungen durchgeführt werden.",

"task.status.succeed.after": "Task succeeded after",
"task.status.canceled": "Task canceled after",
"task.status.canceling": "Canceling",
"task.status.error": "Task error",
"task.status.running.for": "Task running for",

"task.status.started": "Gestartet",
"task.status.finished": "Abgeschlossen",
"task.logs": "Protokoll",

"task.event.stop": "Stop",
"task.header.counter": "Counter",
"task.header.value": "Value",

"snapshot.header.actions": "Aktionen",
"snapshot.header.status": "Status",
"snapshot.header.snapshot.next":"Nächster Snapshot",
"snapshot.header.snapshot.last":"Letzter Snapshot",
"snapshot.header.snapshot.size":"Größe",
"snapshot.header.snapshot.owner":"Eigentümer",
"snapshot.header.snapshot.path":"Pfad",

"snapshot.event.sychronize":"Synchronisieren",
"snapshot.event.snapshot.policy": "Richtlinie",
"snapshot.event.snapshot.now": "Snapshot erstellen",
"snapshot.event.snapshot.pending": "Wartend",
"snapshot.feedback.snapshot.start": "Der Snapshot startet, sobald der vorherige abgeschlossen ist",
"snapshot.event.snapshot.new": "Neuer Snapshot",

"repository.status.initializing": "Initializing repository...",
"repository.status.connected": "Mit Repository verbunden",
"repository.event.connection.cancel":"Cancel connection",
"repository.event.connection.disconnect": "Repository trennen",
"repository.event.description.update": "Update description",

"repository.feedback.description.required":"Repository description is required",
"repository.feedback.read.only": "Repository is read-only",
"repository.feedback.eco.disabled":"Disabled",
"repository.feedback.compression.internal.supported": "ja",
"repository.feedback.compression.internal.not.supported": "nein",

"repository.attribute.server.url": "Server URL",
"repository.attribute.config.file": "Konfigurationsdatei",
"repository.attribute.provider": "Anbieter",
"repository.attribute.algorithm.encryption": "Verschlüsselungsalgorithmus",
"repository.attribute.algorithm.hash": "Hash-Algorithmus",
"repository.attribute.algorithm.splitter": "Splitter algorithm",
"repository.attribute.algorithm.eco": "Error correction algorithm",

"repository.attribute.connected.as": "Verbunden als",
"repository.attribute.compression.internal": "Interne Kompression",
"repository.attribute.format": "Repository format",
"repository.attribute.eco": "Error correction overhead",

"log.event.hide": "Hide log",
"log.event.show": "Show log",

"user.interface": "Benuteroberfläche",
"user.interface.appearance":"Erscheinung",
"user.interface.appearance.hint":"Select font size",
"user.interface.appearance.help": "Specifies the appearance of the user interface",

"user.interface.appearance.small":"klein",
"user.interface.appearance.medium":"mittel",
"user.interface.appearance.large":"groß",

"user.interface.pagesize.description": "Anzahl an Einträgen",
"user.interface.pagesize.help": "Gibt die Anzahl der Einträge in Listen an",
"user.interface.pagesize.hint": "Anzahl Einträge",

"user.interface.byte.representation.description":"Select byte representation",
"user.interface.byte.representation.select":"Select byte representation",
"user.interface.byte.representation.help":"Specifies the representation of bytes",

"user.language":"Sprache",

"lang.help": "Sets the language for the user interface",
"lang.select": "Select language",
"lang.description": "Select the language",

"theme.description": "Design",
"theme.select": "Select theme",
"theme.help": "Das aktuell ausgewählte Design",
"theme.dark":"Dunkel",
"theme.light": "Hell",
"theme.pastel": "Pastel",
"theme.ocean":"Ozean"
}
107 changes: 107 additions & 0 deletions public/locales/en-GB/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
{
"tab.preferences":"Preferences",
"tab.repository":"Repository",
"tab.tasks":"Tasks",
"tab.policies":"Policies",
"tab.snapshots":"Snapshots",

"task.all":"All",
"task.running":"Running",
"task.failed":"Failed",
"task.loading": "Loading...",
"task.header.time.start": "Start time",
"task.header.status": "Status",
"task.header.kind": "Kind",
"task.header.description": "Description",
"task.feedback.search": "Search logs by description",
"task.feedback.entries": "A list of tasks will appear here when you create snapshots, restore, run maintenance, etc.",

"task.status.succeed.after": "Task succeeded after",
"task.status.canceled": "Task canceled after",
"task.status.canceling": "Canceling",
"task.status.error": "Task error",
"task.status.running.for": "Task running for",

"task.status.started": "Started",
"task.status.finished": "Finished",
"task.logs": "Logs",

"task.event.stop": "Stop",
"task.header.counter": "Counter",
"task.header.value": "Value",

"snapshot.header.actions": "Actions",
"snapshot.header.status": "Status",
"snapshot.header.snapshot.next":"Next Snapshot",
"snapshot.header.snapshot.last":"Last Snapshot",
"snapshot.header.snapshot.size":"Size",
"snapshot.header.snapshot.owner":"Owner",
"snapshot.header.snapshot.path":"Path",

"snapshot.event.snapshot.now": "Snapshot Now",
"snapshot.event.snapshot.policy": "Policy",
"snapshot.event.snapshot.pending": "Pending",
"snapshot.feedback.snapshot.start": "Snapshot will start after the previous snapshot completes",
"snapshot.event.snapshot.new": "New Snapshot",

"snapshot.event.sychronize":"Synchronize",

"repository.status.initializing": "Initializing repository...",
"repository.status.connected": "Connected to repository",
"repository.event.connection.cancel":"Cancel connection",
"repository.event.connection.disconnect": "Disconnect from repository",
"repository.event.description.update": "Update description",

"repository.feedback.description.required":"Repository description is required",
"repository.feedback.read.only": "Repository is read-only",
"repository.feedback.eco.disabled":"Disabled",
"repository.feedback.compression.internal.supported": "yes",
"repository.feedback.compression.internal.not.supported": "no",

"repository.attribute.server.url": "Server URL",
"repository.attribute.config.file": "Config file",
"repository.attribute.provider": "Provider",
"repository.attribute.algorithm.encryption": "Encryption algorithm",
"repository.attribute.algorithm.hash": "Hash algorithm",
"repository.attribute.algorithm.splitter": "Splitter algorithm",
"repository.attribute.algorithm.eco": "Error correction algorithm",

"repository.attribute.connected.as": "Connected as",
"repository.attribute.compression.internal": "Internal compression",
"repository.attribute.format": "Repository format",
"repository.attribute.eco": "Error correction overhead",

"log.event.hide": "Hide log",
"log.event.show": "Show log",

"user.interface": "User interface",
"user.interface.appearance":"Appearance",
"user.interface.appearance.hint":"Select font size",
"user.interface.appearance.help": "Specifies the appearance of the user interface",

"user.interface.appearance.small":"small",
"user.interface.appearance.medium":"medium",
"user.interface.appearance.large":"large",

"user.interface.pagesize.description": "Page size",
"user.interface.pagesize.help": "Specifies the pagination size in tables",
"user.interface.pagesize.hint": "Page size",

"user.interface.byte.representation.description":"Select byte representation",
"user.interface.byte.representation.select":"Select byte representation",
"user.interface.byte.representation.help":"Specifies the representation of bytes",

"user.language":"Language",

"lang.help": "Sets the language for the user interface",
"lang.select": "Select language",
"lang.description": "Select the language",

"theme.description": "Theme",
"theme.select": "Select theme",
"theme.help": "The current active theme",
"theme.dark":"dark",
"theme.light": "light",
"theme.pastel": "pastel",
"theme.ocean":"ocean"
}
96 changes: 96 additions & 0 deletions public/locales/es-ES/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"tab.preferences": "Preferencias",
"tab.repository": "Repositorio",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"tab.repository": "Repositorio",
"tab.repository": "Depósito",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess either one works.

"tab.tasks": "Tareas",
"tab.policies": "Políticas",
"tab.snapshots": "Instantáneas",

@julio-lopez julio-lopez Mar 12, 2024

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what a good word would be here, but "Instantáneas" does not work.

I would probably say something like "copias de respaldo"


"task.all": "Todas",
"task.running": "En ejecución",
"task.failed": "Fallidas",
"task.loading": "Cargando...",
"task.header.time.start": "Hora de inicio",
"task.header.status": "Estado",
"task.header.kind": "Tipo",
"task.header.description": "Descripción",
"task.feedback.search": "Buscar registros por descripción",
"task.feedback.entries": "Aquí aparecerá una lista de tareas cuando crees instantáneas, restaures, ejecutes mantenimiento, etc.",

"task.status.succeed.after": "La tarea se completó con éxito después de",
"task.status.canceled": "Tarea cancelada después de",
"task.status.canceling": "Cancelando",
"task.status.error": "Error en la tarea",
"task.status.running.for": "Tarea en ejecución durante",
"task.status.started": "Iniciada",
"task.status.finished": "Finalizada",

"task.logs": "Registros",
"task.event.stop": "Detener",
"task.header.counter": "Contador",
"task.header.value": "Valor",

"snapshot.header.actions": "Acciones",
"snapshot.header.status": "Estado",
"snapshot.header.snapshot.next": "Siguiente instantánea",
"snapshot.header.snapshot.last": "Última instantánea",
"snapshot.header.snapshot.size": "Tamaño",
"snapshot.header.snapshot.owner": "Propietario",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is shorter

Suggested change
"snapshot.header.snapshot.owner": "Propietario",
"snapshot.header.snapshot.owner": "Dueño",

"snapshot.header.snapshot.path": "Ruta",
"snapshot.event.snapshot.now": "Instantánea ahora",
"snapshot.event.snapshot.policy": "Política",
"snapshot.event.snapshot.pending": "Pendiente",
"snapshot.feedback.snapshot.start": "La instantánea comenzará después de que se complete la instantánea anterior",
"snapshot.event.snapshot.new": "Nueva instantánea",
"snapshot.event.sychronize": "Sincronizar",

"repository.status.initializing": "Inicializando el repositorio...",
"repository.status.connected": "Conectado al repositorio",
"repository.event.connection.cancel": "Cancelar conexión",
"repository.event.connection.disconnect": "Desconectar del repositorio",
"repository.event.description.update": "Actualizar descripción",
"repository.feedback.description.required": "La descripción del repositorio es obligatoria",
"repository.feedback.read.only": "El repositorio es de solo lectura",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"repository.feedback.read.only": "El repositorio es de solo lectura",
"repository.feedback.read.only": "El repositorio es de sólo lectura",

"repository.feedback.eco.disabled": "Deshabilitado",
"repository.feedback.compression.internal.supported": "sí",
"repository.feedback.compression.internal.not.supported": "no",
"repository.attribute.server.url": "URL del servidor",
"repository.attribute.config.file": "Archivo de configuración",
"repository.attribute.provider": "Proveedor",
"repository.attribute.algorithm.encryption": "Algoritmo de cifrado",
"repository.attribute.algorithm.hash": "Algoritmo de hash",
"repository.attribute.algorithm.splitter": "Algoritmo de división",
"repository.attribute.algorithm.eco": "Algoritmo de corrección de errores",
"repository.attribute.connected.as": "Conectado como",
"repository.attribute.compression.internal": "Compresión interna",
"repository.attribute.format": "Formato del repositorio",
"repository.attribute.eco": "Overhead de corrección de errores",

"log.event.hide": "Ocultar registro",
"log.event.show": "Mostrar registro",

"user.interface": "Interfaz de usuario",
"user.interface.appearance": "Apariencia",
"user.interface.appearance.hint": "Selecciona el tamaño de fuente",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"user.interface.appearance.hint": "Selecciona el tamaño de fuente",
"user.interface.appearance.hint": "Selecciona el tamaño de letra",

"user.interface.appearance.help": "Especifica la apariencia de la interfaz de usuario",
"user.interface.appearance.small": "pequeño",
"user.interface.appearance.medium": "mediano",
"user.interface.appearance.large": "grande",
"user.interface.pagesize.description": "Tamaño de página",
"user.interface.pagesize.help": "Especifica el tamaño de paginación en las tablas",
"user.interface.pagesize.hint": "Tamaño de página",
"user.interface.byte.representation.description": "Selecciona la representación de bytes",
"user.interface.byte.representation.select": "Selecciona la representación de bytes",
"user.interface.byte.representation.help": "Especifica la representación de bytes",
"user.language": "Idioma",

"lang.help": "Establece el idioma para la interfaz de usuario",
"lang.select": "Selecciona el idioma",
"lang.description": "Selecciona el idioma",
"theme.description": "Tema",
"theme.select": "Seleccionar tema",
"theme.help": "El tema activo actual",
"theme.dark": "oscuro",
"theme.light": "claro",
"theme.pastel": "pastel",
"theme.ocean": "oceánico"
}
Loading