From 158bc6426811a57a31eff25437b23e3aea0a579a Mon Sep 17 00:00:00 2001 From: Kolkman Date: Wed, 26 Aug 2026 12:16:55 +0200 Subject: [PATCH] Added german, french, spanish and dutch locale (Dutch has been verified) --- Makefile | 2 +- VIBE/CHAT_LOG.md | 6 ++++ VIBE/PROMPTS.md | 1 + XPI/unsigned/LinkLog-0.1.0.xpi | Bin 41759 -> 47290 bytes scripts/release/validate_xpi.py | 4 +++ webextension/_locales/de/messages.json | 45 +++++++++++++++++++++++++ webextension/_locales/es/messages.json | 45 +++++++++++++++++++++++++ webextension/_locales/fr/messages.json | 45 +++++++++++++++++++++++++ webextension/_locales/nl/messages.json | 45 +++++++++++++++++++++++++ 9 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 webextension/_locales/de/messages.json create mode 100644 webextension/_locales/es/messages.json create mode 100644 webextension/_locales/fr/messages.json create mode 100644 webextension/_locales/nl/messages.json diff --git a/Makefile b/Makefile index 051b602..d978709 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ XPI_FILE := LinkLog-$(EXTENSION_VERSION).xpi XPI_UNSIGNED_DIR := XPI/unsigned XPI_SIGNED_DIR := XPI/signed XPI_OUTPUT := $(XPI_UNSIGNED_DIR)/$(XPI_FILE) -EXTENSION_FILES := manifest.json logo.svg icon-16.png icon-32.png icon-48.png icon-96.png options.css options.html options.js popup.css popup.html popup.js l10n.js _locales/en-US/messages.json +EXTENSION_FILES := manifest.json logo.svg icon-16.png icon-32.png icon-48.png icon-96.png options.css options.html options.js popup.css popup.html popup.js l10n.js _locales/en-US/messages.json _locales/es/messages.json _locales/de/messages.json _locales/fr/messages.json _locales/nl/messages.json EXTENSION_SOURCES := $(addprefix webextension/,$(EXTENSION_FILES)) XPI_VALIDATOR := scripts/release/validate_xpi.py diff --git a/VIBE/CHAT_LOG.md b/VIBE/CHAT_LOG.md index 7315aa5..b5bb1b8 100644 --- a/VIBE/CHAT_LOG.md +++ b/VIBE/CHAT_LOG.md @@ -240,6 +240,12 @@ Localize the firefox plugin. ### Assistant outcome Added Firefox `browser.i18n` support with an `en-US` message catalog, localized popup and settings page labels and runtime messages, localized manifest metadata, and included the localization resources in XPI packaging and validation. +### User +Create a Spanish, German, French and Dutch locale. + +### Assistant outcome +Added complete Spanish (`es`), German (`de`), French (`fr`), and Dutch (`nl`) Firefox locale catalogs and updated XPI packaging and validation to include all four locales. + ### User Show the avatar with each entry on the home page. On the specific // page don't show the avatar and user name with each entry diff --git a/VIBE/PROMPTS.md b/VIBE/PROMPTS.md index 25caeac..540423c 100644 --- a/VIBE/PROMPTS.md +++ b/VIBE/PROMPTS.md @@ -126,6 +126,7 @@ 117. Continue to log interactions to the VIBE directory. 118. On the home page, when clicking on the avatar or the user, show the profile information. 119. Localize the firefox plugin. +120. Create a spanish, german, french and dutch locale. ## Future entries diff --git a/XPI/unsigned/LinkLog-0.1.0.xpi b/XPI/unsigned/LinkLog-0.1.0.xpi index d004638ba7f12a61463d36229ca35613aa4beaa9..0fe8b22741e7291ddcc4f3d17ed4fc6aed255788 100644 GIT binary patch delta 5738 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 barrM>fxb2_-miZ`iMhVx0sytuzefK9Ji(OK delta 268 zcmdn>k!k)hChh=lW)=|!CI$|MB@?+-SxxrzWtnU=&1zs=J9$Ba3acBC@3#45!+jRU zC6iaSDnS%%zRO2q+07WWW$p8QV diff --git a/scripts/release/validate_xpi.py b/scripts/release/validate_xpi.py index 170e7e1..0f85f95 100644 --- a/scripts/release/validate_xpi.py +++ b/scripts/release/validate_xpi.py @@ -22,6 +22,10 @@ REQUIRED_FILES = { 'popup.js', 'l10n.js', '_locales/en-US/messages.json', + '_locales/es/messages.json', + '_locales/de/messages.json', + '_locales/fr/messages.json', + '_locales/nl/messages.json', } diff --git a/webextension/_locales/de/messages.json b/webextension/_locales/de/messages.json new file mode 100644 index 0000000..79ff2d9 --- /dev/null +++ b/webextension/_locales/de/messages.json @@ -0,0 +1,45 @@ +{ + "extensionName": {"message": "LinkLog"}, + "extensionDescription": {"message": "Webseiten-Links erfassen und an LinkLog senden."}, + "settingsTitle": {"message": "LinkLog-Einstellungen"}, + "titleLabel": {"message": "Titel"}, + "urlLabel": {"message": "URL"}, + "commentLabel": {"message": "Kommentar"}, + "commentPlaceholder": {"message": "Dein Kommentar"}, + "tagsLabel": {"message": "Tags"}, + "loadingTags": {"message": "Tags werden geladen..."}, + "newTagsPlaceholder": {"message": "#neuer-tag, #anderer-tag"}, + "saveLink": {"message": "Link speichern"}, + "settings": {"message": "Einstellungen"}, + "signOut": {"message": "Abmelden"}, + "backendUrlLabel": {"message": "Backend-URL"}, + "usernameLabel": {"message": "Benutzername"}, + "usernamePlaceholder": {"message": "alice"}, + "passwordLabel": {"message": "Passwort"}, + "saveAndLogIn": {"message": "Speichern und anmelden"}, + "thisPlugin": {"message": "Dieses Add-on"}, + "pluginDescription": {"message": "Dieses Add-on protokolliert Links auf einem LinkLog-Server, der sie auf einer Website und je nach Konfiguration der Add-ons möglicherweise auch in einem Fediverse-Dienst oder an anderen Orten veröffentlicht."}, + "accountRequirement": {"message": "Nutzer dieses Add-ons benötigen ein Konto auf einem LinkLog-Server"}, + "privacy": {"message": "Datenschutz"}, + "privacyDescription": {"message": "Dieses Add-on respektiert deine Privatsphäre und erhebt keine personenbezogenen Daten über das hinaus, was zum Protokollieren von Links auf deinem LinkLog-Server erforderlich ist."}, + "storedData": {"message": "Die URL, nach einem bestmöglichen Versuch, Tracking-Parameter zu entfernen, der Seitentitel, ein möglicher Kommentar und der Besuchszeitpunkt werden auf dem Server gespeichert und zusammen mit dem dort registrierten Nutzerprofil veröffentlicht."}, + "backendHeading": {"message": "LinkLog-Backend"}, + "backendDescription": {"message": "Die Backend-URL gehört zu einer selbst gehosteten LinkLog-Anwendung. Ihr"}, + "backendSource": {"message": "Quellcode ist im Repository verfügbar."}, + "copyright": {"message": "Copyright © 2026 Olaf Kolkman"}, + "repository": {"message": "Repository"}, + "signInToSelectTags": {"message": "Melde dich an, um vorhandene Tags auszuwählen."}, + "loadTagsFailed": {"message": "Vorhandene Tags konnten nicht geladen werden."}, + "submitting": {"message": "Wird gesendet..."}, + "configureAndLogIn": {"message": "Konfiguriere die Backend-URL und melde dich zuerst an."}, + "sessionExpired": {"message": "Sitzung abgelaufen. Authentifiziere dich in den Einstellungen erneut."}, + "submissionFailed": {"message": "Senden fehlgeschlagen"}, + "linkSaved": {"message": "Link erfolgreich gespeichert"}, + "submissionFailedConnection": {"message": "Senden fehlgeschlagen. Überprüfe die Verbindung zum Backend."}, + "loggedInAt": {"message": "$USERNAME$ ist bei $BACKEND$ angemeldet", "placeholders": {"username": {"content": "$1"}, "backend": {"content": "$2"}}}, + "fillAllFields": {"message": "Fülle alle Felder aus"}, + "loginFailed": {"message": "Anmeldung fehlgeschlagen"}, + "loggedInSuccessfully": {"message": "Erfolgreich angemeldet"}, + "unableToLogIn": {"message": "Anmeldung nicht möglich. Überprüfe Backend-URL und Zugangsdaten."}, + "signedOut": {"message": "Abgemeldet"} +} diff --git a/webextension/_locales/es/messages.json b/webextension/_locales/es/messages.json new file mode 100644 index 0000000..85cbc90 --- /dev/null +++ b/webextension/_locales/es/messages.json @@ -0,0 +1,45 @@ +{ + "extensionName": {"message": "LinkLog"}, + "extensionDescription": {"message": "Captura y envía enlaces de páginas a LinkLog."}, + "settingsTitle": {"message": "Configuración de LinkLog"}, + "titleLabel": {"message": "Título"}, + "urlLabel": {"message": "URL"}, + "commentLabel": {"message": "Comentario"}, + "commentPlaceholder": {"message": "Tu comentario"}, + "tagsLabel": {"message": "Etiquetas"}, + "loadingTags": {"message": "Cargando etiquetas..."}, + "newTagsPlaceholder": {"message": "#nueva-etiqueta, #otra-etiqueta"}, + "saveLink": {"message": "Guardar enlace"}, + "settings": {"message": "Configuración"}, + "signOut": {"message": "Cerrar sesión"}, + "backendUrlLabel": {"message": "URL del servidor"}, + "usernameLabel": {"message": "Nombre de usuario"}, + "usernamePlaceholder": {"message": "alice"}, + "passwordLabel": {"message": "Contraseña"}, + "saveAndLogIn": {"message": "Guardar e iniciar sesión"}, + "thisPlugin": {"message": "Este complemento"}, + "pluginDescription": {"message": "Este complemento registra enlaces en un servidor LinkLog, que los publicará en un sitio web y posiblemente en un servicio fediverso u otros destinos, según los complementos configurados."}, + "accountRequirement": {"message": "Los usuarios de este complemento necesitan una cuenta en un servidor LinkLog"}, + "privacy": {"message": "Privacidad"}, + "privacyDescription": {"message": "Este complemento respeta tu privacidad y no recopila datos personales más allá de lo necesario para registrar enlaces en tu servidor LinkLog."}, + "storedData": {"message": "La URL, tras intentar eliminar los parámetros de seguimiento, el título de la página, un posible comentario y la hora de visita se guardarán en el servidor y se harán públicos junto con el perfil del usuario registrado en el servidor."}, + "backendHeading": {"message": "Servidor LinkLog"}, + "backendDescription": {"message": "La URL del servidor es una aplicación LinkLog autoalojada. Consulta su"}, + "backendSource": {"message": "para ver el código fuente."}, + "copyright": {"message": "Copyright © 2026 Olaf Kolkman"}, + "repository": {"message": "Repositorio"}, + "signInToSelectTags": {"message": "Inicia sesión para seleccionar etiquetas existentes."}, + "loadTagsFailed": {"message": "No se pudieron cargar las etiquetas existentes."}, + "submitting": {"message": "Enviando..."}, + "configureAndLogIn": {"message": "Configura la URL del servidor e inicia sesión primero."}, + "sessionExpired": {"message": "La sesión ha caducado. Vuelve a autenticarte en la configuración."}, + "submissionFailed": {"message": "Error al enviar"}, + "linkSaved": {"message": "Enlace guardado correctamente"}, + "submissionFailedConnection": {"message": "Error al enviar. Comprueba la conexión con el servidor."}, + "loggedInAt": {"message": "$USERNAME$ ha iniciado sesión en $BACKEND$", "placeholders": {"username": {"content": "$1"}, "backend": {"content": "$2"}}}, + "fillAllFields": {"message": "Rellena todos los campos"}, + "loginFailed": {"message": "Error de inicio de sesión"}, + "loggedInSuccessfully": {"message": "Sesión iniciada correctamente"}, + "unableToLogIn": {"message": "No se pudo iniciar sesión. Comprueba la URL y las credenciales."}, + "signedOut": {"message": "Sesión cerrada"} +} diff --git a/webextension/_locales/fr/messages.json b/webextension/_locales/fr/messages.json new file mode 100644 index 0000000..d833e4c --- /dev/null +++ b/webextension/_locales/fr/messages.json @@ -0,0 +1,45 @@ +{ + "extensionName": {"message": "LinkLog"}, + "extensionDescription": {"message": "Capturer et envoyer des liens de pages à LinkLog."}, + "settingsTitle": {"message": "Paramètres de LinkLog"}, + "titleLabel": {"message": "Titre"}, + "urlLabel": {"message": "URL"}, + "commentLabel": {"message": "Commentaire"}, + "commentPlaceholder": {"message": "Votre commentaire"}, + "tagsLabel": {"message": "Étiquettes"}, + "loadingTags": {"message": "Chargement des étiquettes..."}, + "newTagsPlaceholder": {"message": "#nouvelle-étiquette, #autre-étiquette"}, + "saveLink": {"message": "Enregistrer le lien"}, + "settings": {"message": "Paramètres"}, + "signOut": {"message": "Se déconnecter"}, + "backendUrlLabel": {"message": "URL du serveur"}, + "usernameLabel": {"message": "Nom d’utilisateur"}, + "usernamePlaceholder": {"message": "alice"}, + "passwordLabel": {"message": "Mot de passe"}, + "saveAndLogIn": {"message": "Enregistrer et se connecter"}, + "thisPlugin": {"message": "Cette extension"}, + "pluginDescription": {"message": "Cette extension enregistre les liens sur un serveur LinkLog, qui les publiera sur un site web et éventuellement sur un service du fédivers ou ailleurs, selon les extensions configurées."}, + "accountRequirement": {"message": "Les utilisateurs de cette extension doivent avoir un compte sur un serveur LinkLog"}, + "privacy": {"message": "Confidentialité"}, + "privacyDescription": {"message": "Cette extension respecte votre vie privée et ne recueille aucune donnée personnelle au-delà de ce qui est nécessaire pour enregistrer des liens sur votre serveur LinkLog."}, + "storedData": {"message": "L’URL, après une tentative de suppression des paramètres de suivi, le titre de la page, un éventuel commentaire et l’heure de la visite seront enregistrés sur le serveur et rendus publics avec le profil de l’utilisateur qui y est inscrit."}, + "backendHeading": {"message": "Serveur LinkLog"}, + "backendDescription": {"message": "L’URL du serveur correspond à une application LinkLog auto-hébergée. Consultez son"}, + "backendSource": {"message": "pour voir le code source."}, + "copyright": {"message": "Copyright © 2026 Olaf Kolkman"}, + "repository": {"message": "Dépôt"}, + "signInToSelectTags": {"message": "Connectez-vous pour sélectionner des étiquettes existantes."}, + "loadTagsFailed": {"message": "Impossible de charger les étiquettes existantes."}, + "submitting": {"message": "Envoi..."}, + "configureAndLogIn": {"message": "Configurez l’URL du serveur et connectez-vous d’abord."}, + "sessionExpired": {"message": "Session expirée. Reconnectez-vous dans les paramètres."}, + "submissionFailed": {"message": "Échec de l’envoi"}, + "linkSaved": {"message": "Lien enregistré"}, + "submissionFailedConnection": {"message": "Échec de l’envoi. Vérifiez la connexion au serveur."}, + "loggedInAt": {"message": "$USERNAME$ est connecté à $BACKEND$", "placeholders": {"username": {"content": "$1"}, "backend": {"content": "$2"}}}, + "fillAllFields": {"message": "Veuillez remplir tous les champs"}, + "loginFailed": {"message": "Échec de la connexion"}, + "loggedInSuccessfully": {"message": "Connexion réussie"}, + "unableToLogIn": {"message": "Connexion impossible. Vérifiez l’URL du serveur et vos identifiants."}, + "signedOut": {"message": "Déconnecté"} +} diff --git a/webextension/_locales/nl/messages.json b/webextension/_locales/nl/messages.json new file mode 100644 index 0000000..9217e63 --- /dev/null +++ b/webextension/_locales/nl/messages.json @@ -0,0 +1,45 @@ +{ + "extensionName": {"message": "LinkLog"}, + "extensionDescription": {"message": "Paginakoppelingen vastleggen en naar LinkLog verzenden."}, + "settingsTitle": {"message": "LinkLog-instellingen"}, + "titleLabel": {"message": "Titel"}, + "urlLabel": {"message": "URL"}, + "commentLabel": {"message": "Opmerking"}, + "commentPlaceholder": {"message": "Je opmerking"}, + "tagsLabel": {"message": "Tags"}, + "loadingTags": {"message": "Tags worden geladen..."}, + "newTagsPlaceholder": {"message": "#nieuwe-tag, #andere-tag"}, + "saveLink": {"message": "Koppeling opslaan"}, + "settings": {"message": "Instellingen"}, + "signOut": {"message": "Uitloggen"}, + "backendUrlLabel": {"message": "Backend-URL"}, + "usernameLabel": {"message": "Gebruikersnaam"}, + "usernamePlaceholder": {"message": "alice"}, + "passwordLabel": {"message": "Wachtwoord"}, + "saveAndLogIn": {"message": "Opslaan en inloggen"}, + "thisPlugin": {"message": "Deze plug-in"}, + "pluginDescription": {"message": "Deze plug-in legt koppelingen vast op een LinkLog-server, die ze publiceert op een website en mogelijk op een fediverse-dienst of andere locaties, afhankelijk van de geconfigureerde plug-ins."}, + "accountRequirement": {"message": "Gebruikers van deze plug-in hebben een account op een LinkLog-server nodig"}, + "privacy": {"message": "Privacy"}, + "privacyDescription": {"message": "Deze plug-in respecteert je privacy en verzamelt geen persoonsgegevens buiten wat nodig is om koppelingen op je LinkLog-server vast te leggen."}, + "storedData": {"message": "De URL, na een poging om trackingparameters te verwijderen, de paginatitel, een eventuele opmerking en het tijdstip van bezoek worden op de backendserver opgeslagen en samen met het profiel van de geregistreerde gebruiker openbaar gemaakt."}, + "backendHeading": {"message": "LinkLog-backend"}, + "backendDescription": {"message": "De backend-URL is een zelfgehoste LinkLog-toepassing. Bekijk de"}, + "backendSource": {"message": "voor de broncode."}, + "copyright": {"message": "Copyright © 2026 Olaf Kolkman"}, + "repository": {"message": "Repository"}, + "signInToSelectTags": {"message": "Log in om bestaande tags te selecteren."}, + "loadTagsFailed": {"message": "Bestaande tags konden niet worden geladen."}, + "submitting": {"message": "Verzenden..."}, + "configureAndLogIn": {"message": "Configureer de backend-URL en log eerst in."}, + "sessionExpired": {"message": "Sessie verlopen. Verifieer opnieuw in de instellingen."}, + "submissionFailed": {"message": "Verzenden mislukt"}, + "linkSaved": {"message": "Koppeling opgeslagen"}, + "submissionFailedConnection": {"message": "Verzenden mislukt. Controleer de verbinding met de backend."}, + "loggedInAt": {"message": "$USERNAME$ is ingelogd op $BACKEND$", "placeholders": {"username": {"content": "$1"}, "backend": {"content": "$2"}}}, + "fillAllFields": {"message": "Vul alle velden in"}, + "loginFailed": {"message": "Inloggen mislukt"}, + "loggedInSuccessfully": {"message": "Succesvol ingelogd"}, + "unableToLogIn": {"message": "Inloggen mislukt. Controleer de backend-URL en inloggegevens."}, + "signedOut": {"message": "Uitgelogd"} +}