From 663c2a56247a36a404169b3c654c4484e84032bf Mon Sep 17 00:00:00 2001 From: Matt Roberts Date: Fri, 11 Oct 2024 09:28:26 +0100 Subject: [PATCH 1/5] Translations, including Italian. --- locale/de/client.json | 13 +++- locale/el/client.json | 7 ++ locale/en/client.json | 3 + locale/es-ES/client.json | 11 ++- locale/fr/client.json | 11 ++- locale/it/client.json | 160 +++++++++++++++++++++++++++++++++++++++ locale/it/server.json | 62 +++++++++++++++ locale/nl/client.json | 15 +++- locale/pl/client.json | 15 +++- locale/pt-BR/client.json | 7 ++ locale/ru/client.json | 13 +++- locale/sk/client.json | 13 +++- locale/sv-SE/client.json | 11 ++- locale/tr/client.json | 7 ++ 14 files changed, 325 insertions(+), 23 deletions(-) create mode 100644 locale/it/client.json create mode 100644 locale/it/server.json diff --git a/locale/de/client.json b/locale/de/client.json index f8e875e75..224d2b270 100644 --- a/locale/de/client.json +++ b/locale/de/client.json @@ -3,6 +3,7 @@ "action.change": "ändern", "action.close": "Schließen", "action.confirm": "Bestätigen", + "action.copylink": "Copy link", "action.delete": "Löschen", "action.edit": "Bearbeiten", "action.markallasread": "Alle als gelesen markieren", @@ -26,7 +27,7 @@ "error.internalerror.title": "Oh! Nun, das kam unerwartet…", "error.pagenotfound.text": "Vielleicht war der Link fehlerhaft oder die Seite existiert nicht mehr.", "error.pagenotfound.title": "Die Seite wurde nicht gefunden", - "error.unauthorized.text": "Du bist nicht berechtigt diese Seite anzuschauen.", + "error.unauthorized.text": "Du bist nicht berechtigt, diese Seite anzuschauen.", "error.unauthorized.title": "Nicht berechtigt", "home.form.defaultinvitation": "Gib hier Deinen Vorschlag ein...", "home.form.defaultwelcomemessage": "Wir würden gerne erfahren, worüber Du nachdenkst.\n\nWas können wir verbessern? Hier kannst Du abstimmen, diskutieren und neue Ideen vorschlagen.", @@ -81,9 +82,12 @@ "modal.deleteaccount.text": "<0>Wenn Sie Ihr Konto löschen, werden wir all Ihre persönlichen Daten für immer löschen. Der von Ihnen veröffentlichte Inhalt bleibt erhalten, wird aber anonymisiert.<1>Dieser Prozess ist irreversibel. <2>Sind Sie sicher? ", "modal.deletecomment.header": "Kommentar löschen", "modal.deletecomment.text": "Dieser Prozess ist unumkehrbar. <0>Bist du dir sicher?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Keine Benutzer gefunden, die <0>{0} entsprechen.", "modal.showvotes.query.placeholder": "Suche nach Benutzern nach Namen...", - "modal.signin.header": "Melde dich an, um eine neue Idee zu posten", + "modal.signin.header": "Melde dich an, um teilzunehmen und abzustimmen", "mynotifications.label.readrecently": "Lesen Sie, was in den letzten 30 Tagen geschrieben wurde.", "mynotifications.message.nounread": "Keine ungelesenen Benachrichtigungen.", "mynotifications.page.subtitle": "Bleibe immer auf dem Laufenden", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Wir haben Ihnen eine Bestätigungs-E-Mail mit einem Link zur Aktivierung Ihrer Website geschickt.", "page.pendingactivation.text2": "Bitte überprüfe deinen Posteingang, um ihn zu aktivieren.", "page.pendingactivation.title": "Dein Account ist nicht aktiviert", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Kommentar hinzufügen", "showpost.discussionpanel.emptymessage": "Niemand hat bisher kommentiert.", "showpost.label.author": "Gepostet von <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} ist derzeit gesperrt.", "signin.message.onlyadmins": "Derzeit darf sich nur mit einem Administratorkonto anmelden", "signin.message.private.text": "Wenn Sie ein Konto oder eine Einladung haben, können Sie folgende Optionen nutzen, um sich anzumelden.", - "signin.message.private.title": "<0>{0} ist ein privater Bereich und erfordert eine Einladung, um ihm beizutreten.", + "signin.message.private.title": "<0>{0} ist ein privater Raum, du musst dich anmelden, um teilnehmen und abstimmen zu können.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# Tag} other {# Tags}}" } \ No newline at end of file diff --git a/locale/el/client.json b/locale/el/client.json index 371d9fb02..989f1908c 100644 --- a/locale/el/client.json +++ b/locale/el/client.json @@ -3,6 +3,7 @@ "action.change": "αλλαγή", "action.close": "Κλείσιμο", "action.confirm": "Επιβεβαίωση", + "action.copylink": "Copy link", "action.delete": "Διαγραφή", "action.edit": "Επεξεργασία", "action.markallasread": "Σήμανση όλων ως αναγνωσμένων", @@ -81,6 +82,9 @@ "modal.deleteaccount.text": "<0>Όταν επιλέξετε να διαγράψετε τον λογαριασμό σας, θα διαγράψουμε για πάντα όλες τις προσωπικές σας πληροφορίες. Το περιεχόμενο που δημοσιεύσατε θα παραμείνει, αλλά θα είναι ανώνυμο.<1>Αυτή η διαδικασία είναι μη αναστρέψιμη. <2>Είστε σίγουρος;", "modal.deletecomment.header": "Διαγραφή Σχολίου", "modal.deletecomment.text": "Αυτή η διαδικασία είναι μη αναστρέψιμη. <0>Είστε σίγουρος;", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Δεν βρέθηκαν χρήστες που να ταιριάζουν <0>{0}.", "modal.showvotes.query.placeholder": "Αναζήτηση χρηστών με όνομα...", "modal.signin.header": "Συνδεθείτε για να συμμετάσχετε και να ψηφίσετε", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Σας στείλαμε ένα email επιβεβαίωσης με ένα σύνδεσμο για να ενεργοποιήσετε τον ιστότοπό σας.", "page.pendingactivation.text2": "Παρακαλώ ελέγξτε τα εισερχόμενά σας για να το ενεργοποιήσετε.", "page.pendingactivation.title": "Ο λογαριασμός σας εκκρεμεί ενεργοποίηση", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Αφήστε ένα σχόλιο", "showpost.discussionpanel.emptymessage": "Κανείς δεν έχει σχολιάσει ακόμα.", "showpost.label.author": "Δημοσιεύτηκε από <0/> · <1/>", diff --git a/locale/en/client.json b/locale/en/client.json index 21112eff3..4fd1b1ec6 100644 --- a/locale/en/client.json +++ b/locale/en/client.json @@ -82,6 +82,9 @@ "modal.deleteaccount.text": "<0>When you choose to delete your account, we will erase all your personal information forever. The content you have published will remain, but it will be anonymised.<1>This process is irreversible. <2>Are you sure?", "modal.deletecomment.header": "Delete Comment", "modal.deletecomment.text": "This process is irreversible. <0>Are you sure?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "No users found matching <0>{0}.", "modal.showvotes.query.placeholder": "Search for users by name...", "modal.signin.header": "Sign in to participate and vote", diff --git a/locale/es-ES/client.json b/locale/es-ES/client.json index 9fa7d186a..913858665 100644 --- a/locale/es-ES/client.json +++ b/locale/es-ES/client.json @@ -3,6 +3,7 @@ "action.change": "cambiar", "action.close": "Cerrar", "action.confirm": "Confirmar", + "action.copylink": "Copy link", "action.delete": "Eliminar", "action.edit": "Editar", "action.markallasread": "Marcar Todo como Leído", @@ -27,7 +28,7 @@ "error.pagenotfound.text": "El hipervínculo que has seguido puede estar roto o quizás esta página ya no exista.", "error.pagenotfound.title": "Página no encontrada", "error.unauthorized.text": "No estás autorizado para ver esta página.", - "error.unauthorized.title": "Sin Autorización", + "error.unauthorized.title": "No está autorizado", "home.form.defaultinvitation": "Escriba aquí su sugerencia...", "home.form.defaultwelcomemessage": "Nos encantaría escuchar lo que estás pensando.\n\n¿Qué podemos hacer mejor? Este es el lugar para que votes, discutas y compartas ideas.", "home.lonely.suggestion": "Se recomienda que cree <0>al menos 3 sugerencias aquí antes de compartir este sitio. El contenido inicial es importante para empezar a atraer a su audiencia.", @@ -81,6 +82,9 @@ "modal.deleteaccount.text": "<0>Cuando decides eliminar tu cuenta, borraremos toda tu información personal para siempre. El contenido que has publicado permanecerá, pero será anónimo.<1>Este proceso es irreversible. <2>¿Estás seguro?", "modal.deletecomment.header": "Eliminar Comentario", "modal.deletecomment.text": "Este proceso es irreversible. <0>¿Estás seguro?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "No se encontraron usuarios que coincidan con <0>{0}.", "modal.showvotes.query.placeholder": "Buscar usuarios por nombre...", "modal.signin.header": "Inicia sesión para publicar y votar", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Te hemos enviado un correo electrónico de confirmación con un enlace para activar tu sitio.", "page.pendingactivation.text2": "Por favor, revisa tu bandeja de entrada para activarla.", "page.pendingactivation.title": "Tu cuenta está pendiente de activación", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Publica un comentario", "showpost.discussionpanel.emptymessage": "Nadie ha comentado todavía.", "showpost.label.author": "Publicado por <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} está actualmente bloqueado.", "signin.message.onlyadmins": "Actualmente sólo se permite iniciar sesión en una cuenta de administrador", "signin.message.private.text": "Si tienes una cuenta o una invitación, puedes usar las siguientes opciones para iniciar sesión.", - "signin.message.private.title": "<0>{0} es un espacio privado y requiere una invitación para unirse.", + "signin.message.private.title": "<0>{0} es un espacio privado, debes iniciar sesión para participar y votar.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# etiqueta} other {# etiquetas}}" } \ No newline at end of file diff --git a/locale/fr/client.json b/locale/fr/client.json index 58293a999..02a0042bf 100644 --- a/locale/fr/client.json +++ b/locale/fr/client.json @@ -3,6 +3,7 @@ "action.change": "changer", "action.close": "Fermer", "action.confirm": "Confirmer", + "action.copylink": "Copy link", "action.delete": "Supprimer", "action.edit": "Modifier", "action.markallasread": "Tout marquer comme lu", @@ -81,9 +82,12 @@ "modal.deleteaccount.text": "<0>Lorsque vous choisissez de supprimer votre compte, nous effacerons définitivement toutes vos informations personnelles. Le contenu que vous avez publié restera, mais il sera anonyme.<1>Ce processus est irréversible. <2>Êtes-vous sûr ?", "modal.deletecomment.header": "Supprimer le commentaire", "modal.deletecomment.text": "Ce processus est irréversible. <0>Êtes-vous sûr ?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Aucun utilisateur correspondant à <0>{0}.", "modal.showvotes.query.placeholder": "Rechercher des utilisateurs par nom...", - "modal.signin.header": "Connectez-vous pour poster et voter", + "modal.signin.header": "Inscrivez-vous pour participer et voter", "mynotifications.label.readrecently": "Lu sur les 30 dernier jours.", "mynotifications.message.nounread": "Pas de notification non lue.", "mynotifications.page.subtitle": "Restez au courant de ce qui se passe", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Nous vous avons envoyé un e-mail de confirmation avec un lien pour activer votre site.", "page.pendingactivation.text2": "Veuillez vérifier votre boîte de réception pour l'activer.", "page.pendingactivation.title": "Votre compte n'est pas activé", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Rédiger un commentaire", "showpost.discussionpanel.emptymessage": "Personne n'a encore commenté.", "showpost.label.author": "Posté par <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} est actuellement verrouillé.", "signin.message.onlyadmins": "Seuls les comptes administrateurs peuvent se connecter en ce moment", "signin.message.private.text": "Si vous avez un compte ou une invitation, vous pouvez utiliser les options suivantes pour vous connecter.", - "signin.message.private.title": "<0>{0} est un espace privé et nécessite une invitation pour le rejoindre.", + "signin.message.private.title": "<0>{0} est un espace privé, vous devez vous connecter pour participer et voter.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# tag} other {# tags}}" } \ No newline at end of file diff --git a/locale/it/client.json b/locale/it/client.json new file mode 100644 index 000000000..6cdc00e80 --- /dev/null +++ b/locale/it/client.json @@ -0,0 +1,160 @@ +{ + "action.cancel": "Cancella", + "action.change": "modifica", + "action.close": "Chiudi", + "action.confirm": "Conferma", + "action.copylink": "Copy link", + "action.delete": "Cancella", + "action.edit": "Modifica", + "action.markallasread": "Segna tutto come letto", + "action.ok": "OK", + "action.respond": "Rispondi", + "action.save": "Salva", + "action.signin": "Accedi", + "action.submit": "Invia", + "enum.poststatus.completed": "Completato", + "enum.poststatus.declined": "Rifiutato", + "enum.poststatus.deleted": "Eliminato", + "enum.poststatus.duplicate": "Duplicato", + "enum.poststatus.open": "Aperto", + "enum.poststatus.planned": "Pianificato", + "enum.poststatus.started": "Iniziato", + "error.expired.text": "Il link che hai cliccato è scaduto.", + "error.expired.title": "Scaduto", + "error.forbidden.text": "Non sei autorizzato a visualizzare questa pagina.", + "error.forbidden.title": "Vietato", + "error.internalerror.text": "Si è verificato un errore e stiamo lavorando per risolvere il problema! Saremo operativi a breve.", + "error.internalerror.title": "Spara! Beh, questo è inaspettato…", + "error.pagenotfound.text": "Il link che hai seguito potrebbe essere errato, oppure la pagina potrebbe essere stata rimossa.", + "error.pagenotfound.title": "Pagina non trovata", + "error.unauthorized.text": "Non sei autorizzato a visualizzare questa pagina.", + "error.unauthorized.title": "Non autorizzato", + "home.form.defaultinvitation": "Inserisci qui il tuo suggerimento...", + "home.form.defaultwelcomemessage": "Ci piacerebbe sentire quello che stai pensando.\n\nChe cosa possiamo fare meglio? Questo è il posto per voi per votare, discutere e condividere idee.", + "home.lonely.suggestion": "Si consiglia di creare <0>almeno 3 suggerimenti qui prima di condividere questo sito. Il contenuto iniziale è importante per iniziare ad coinvolgere il pubblico.", + "home.lonely.text": "Non sono stati inviati messaggi.", + "home.postfilter.label.view": "Visualizza", + "home.postfilter.option.mostdiscussed": "Più discussi", + "home.postfilter.option.mostwanted": "I più votati", + "home.postfilter.option.myvotes": "I miei voti", + "home.postfilter.option.recent": "Recenti", + "home.postfilter.option.trending": "Di tendenza", + "home.postinput.description.placeholder": "Descrivere il tuo suggerimento (opzionale)", + "home.postscontainer.label.noresults": "Nessun risultato corrisponde alla tua ricerca, prova qualcosa di diverso.", + "home.postscontainer.label.viewmore": "Vedi altri messaggi", + "home.postscontainer.query.placeholder": "Cerca", + "home.similar.subtitle": "Considerare invece di votare sui post esistenti.", + "home.similar.title": "Post simili", + "home.tagsfilter.label.with": "con", + "home.tagsfilter.selected.none": "Qualsiasi tag", + "label.actions": "Azioni", + "label.avatar": "Foto profilo", + "label.custom": "Personalizzato", + "label.description": "Descrizione", + "label.discussion": "Discussione", + "label.email": "Email", + "label.gravatar": "Gravatar", + "label.letter": "Lettera", + "label.moderation": "Moderazione", + "label.name": "Nome", + "label.none": "Vuoto", + "label.notifications": "Notifiche", + "label.or": "OPPURE", + "label.subscribe": "Abbonati", + "label.tags": "Tags", + "label.unread": "Non letto", + "label.unsubscribe": "Disiscriversi", + "label.voters": "Votanti", + "legal.agreement": "Ho letto e accetto le <0/> e <1/>.", + "legal.notice": "Accedendo, accetti i <0/> e <1/>.", + "legal.privacypolicy": "Informativa sulla privacy", + "legal.termsofservice": "Termini di servizio", + "menu.administration": "Amministrazione", + "menu.mysettings": "Le mie preferenze", + "menu.signout": "Disconnettersi", + "menu.sitesettings": "Impostazioni del Sito", + "modal.changeemail.header": "Conferma il tuo nuovo indirizzo e-mail", + "modal.changeemail.text": "Abbiamo appena inviato un link di conferma a <0>{0}. <1/> Clicca sul link per aggiornare la tua email.", + "modal.completeprofile.header": "Completa il tuo profilo", + "modal.completeprofile.name.placeholder": "Nome", + "modal.completeprofile.text": "Poiché questo è il tuo primo accesso, inserisci il tuo nome.", + "modal.deleteaccount.header": "Cancella l'account", + "modal.deleteaccount.text": "<0>Quando decidi di eliminare il tuo account, cancelleremo tutte le tue informazioni personali per sempre. I contenuti che hai pubblicato rimarranno, ma saranno anonimi.<1>Questo processo è irreversibile. <2>Sei sicuro?", + "modal.deletecomment.header": "Elimina commento", + "modal.deletecomment.text": "Questo processo è irreversibile. <0> Sei sicuro?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", + "modal.showvotes.message.zeromatches": "Nessun utente trovato corrispondente a <0>{0}.", + "modal.showvotes.query.placeholder": "Cerca gli utenti per nome...", + "modal.signin.header": "Accedi per partecipare e votare", + "mynotifications.label.readrecently": "Continua a leggere negli ultimi 30 giorni.", + "mynotifications.message.nounread": "Nessuna nuova notifica.", + "mynotifications.page.subtitle": "Rimani aggiornato su quello che sta succedendo", + "mynotifications.page.title": "Notifiche", + "mysettings.apikey.documentation": "Per imparare a utilizzare l'API, leggere la documentazione ufficiale <0>.", + "mysettings.apikey.generate": "Rigenera la chiave API", + "mysettings.apikey.newkey": "La tua nuova chiave API è: <0>{0}", + "mysettings.apikey.newkeynotice": "Conservalo in modo sicuro sui tuoi server e non memorizzalo mai nel lato client della tua app.", + "mysettings.apikey.notice": "La chiave API viene visualizzata solo quando viene generata. Se la chiave è stata persa o è stata compromessa, generatene una nuova e prendetene nota.", + "mysettings.apikey.title": "Chiave API", + "mysettings.dangerzone.delete": "Cancella il mio account", + "mysettings.dangerzone.notice": "Questo processo è irreversibile. Si prega di essere certi.", + "mysettings.dangerzone.text": "Quando decidi di eliminare il tuo account, cancelleremo tutte le tue informazioni personali per sempre. I contenuti che hai pubblicato rimarranno, ma saranno anonimi.", + "mysettings.dangerzone.title": "Cancella l'account", + "mysettings.message.avatar.custom": "Accettiamo immagini JPG, GIF e PNG, inferiori a 100KB e con un rapporto di aspetto di 1:1 con dimensioni minime di 50x50 pixel.", + "mysettings.message.avatar.gravatar": "Un <0>Gravatar verrà utilizzato in base alla tua email. Se non hai un Gravatar, viene generato un avatar di lettera basato sulle tue iniziali.", + "mysettings.message.avatar.letter": "Viene generato un avatar con una lettera basata sulle vostre iniziali.", + "mysettings.message.noemail": "Il tuo account non ha un'email.", + "mysettings.message.privateemail": "La tua email è privata e non sarà mai visualizzata pubblicamente.", + "mysettings.notification.channelemail": "Email", + "mysettings.notification.channelweb": "Web", + "mysettings.notification.event.discussion": "Discussione", + "mysettings.notification.event.discussion.staff": "commenti su tutti i post a meno che non vi sia una sottoscrizione individuale", + "mysettings.notification.event.discussion.visitors": "commenti sui post che hai sottoscritto", + "mysettings.notification.event.newpost": "Nuovo post", + "mysettings.notification.event.newpost.staff": "nuovi post su questo sito", + "mysettings.notification.event.newpost.visitors": "nuovi post su questo sito", + "mysettings.notification.event.statuschanged": "Stato modificato", + "mysettings.notification.event.statuschanged.staff": "cambio di stato su tutti i post a meno che non vi sia una sottoscrizione individuale", + "mysettings.notification.event.statuschanged.visitors": "cambio di stato sui post a cui ti sei iscritto", + "mysettings.notification.message.emailonly": "Riceverai <0>email notifiche su {about}.", + "mysettings.notification.message.none": "<0>NON riceverai una notifica su questo evento.", + "mysettings.notification.message.webandemail": "Riceverai notifiche <0>web e <1>email su {about}.", + "mysettings.notification.message.webonly": "Riceverai <0>web notifiche su {about}.", + "mysettings.notification.title": "Usa il pannello seguente per scegliere quali eventi vuoi ricevere una notifica", + "mysettings.page.subtitle": "Gestisci le impostazioni del profilo", + "mysettings.page.title": "Impostazioni", + "page.backhome": "Portami indietro alla <0>{0} pagina principale.", + "page.notinvited.text": "Non siamo riusciti a trovare un account per il tuo indirizzo email.", + "page.notinvited.title": "Nessun invito", + "page.pendingactivation.text": "Vi abbiamo inviato un'e-mail di conferma con un link per attivare il vostro sito.", + "page.pendingactivation.text2": "Per favore controlla la tua casella e-mail per l’attivazione.", + "page.pendingactivation.title": "Il tuo account è in attesa di attivazione", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", + "showpost.commentinput.placeholder": "Lascia un commento", + "showpost.discussionpanel.emptymessage": "Nessuno ha ancora commentato.", + "showpost.label.author": "Scritto da <0/>·<1/>", + "showpost.message.nodescription": "Nessuna descrizione fornita.", + "showpost.moderationpanel.text.help": "Questa operano <0>non può essere cancellata.", + "showpost.moderationpanel.text.placeholder": "Stai eliminando questo post? (Opzione)", + "showpost.notificationspanel.message.subscribed": "Stai ricevendo notifiche sull'attività di questo post.", + "showpost.notificationspanel.message.unsubscribed": "Non riceverai alcuna notifica su questo post.", + "showpost.postsearch.numofvotes": "{0} votes", + "showpost.postsearch.query.placeholder": "Cerca post originale...", + "showpost.responseform.message.mergedvotes": "I voti di questo post saranno uniti al post originale.", + "showpost.responseform.text.placeholder": "Cosa succede con questo post? Fate sapere ai vostri utenti quali sono i vostri piani...", + "showpost.votespanel.more": "+{extraVotesCount} di più", + "showpost.votespanel.seedetails": "vedi dettagli", + "signin.message.email": "Inserisci il tuo indirizzo email per accedere", + "signin.message.emaildisabled": "L'autenticazione email è stata disabilitata da un amministratore. Se hai un account amministratore e hai bisogno di bypassare questa restrizione, per favore <0>clicca qui.", + "signin.message.emailsent": "Abbiamo appena inviato un link di conferma a <0>{email}. Clicca sul link e ti verrà effettuato l'accesso.", + "signin.message.locked.text": "Per riattivare questo sito, accedi con un account amministratore e aggiorna le impostazioni richieste.", + "signin.message.locked.title": "<0>{0} è attualmente bloccato.", + "signin.message.onlyadmins": "Al momento è consentito accedere solo agli account amministratore", + "signin.message.private.text": "Se si dispone di un account o di un invito, è possibile utilizzare le seguenti opzioni per accedere.", + "signin.message.private.title": "<0>{0} è uno spazio privato, è necessario registrarsi per partecipare e votare.", + "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# tag} other {# tags}}" +} \ No newline at end of file diff --git a/locale/it/server.json b/locale/it/server.json new file mode 100644 index 000000000..c27d1efa1 --- /dev/null +++ b/locale/it/server.json @@ -0,0 +1,62 @@ +{ + "property.avatarType": "Tipo Avatar", + "property.name": "Nome", + "property.image": "Immagine", + "property.customdomain": "Dominio Personalizzato", + "property.key": "Chiave", + "property.email": "Email", + "property.title": "Titolo", + "property.comment": "Commento", + "property.status": "Stato", + "validation.required": "{name} è obbligatorio", + "validation.invalid": "{name} non è valido.", + "validation.invalidvalue": "{name} ha un valore non valido '{value}'.", + "validation.maxstringlen": "{name} deve avere meno di {len} caratteri.", + "validation.custom.maxattachments": "Un massimo di {number} allegati sono consentiti per post.", + "validation.custom.differentemail": "Scegli un'email diversa.", + "validation.custom.emailtaken": "Questa email è già in uso da qualcun altro", + "validation.custom.descriptivetitle": "Il titolo deve essere più descrittivo.", + "validation.custom.duplicatetitle": "Questo è già stato postato prima.", + "validation.custom.selfduplicate": "Impossibile essere un duplicato di se stesso.", + "validation.custom.originalpostnotfound": "Post originale non trovato.", + "validation.custom.cannotdeleteduplicatepost": "Questo post non può essere eliminato perché è referenziato da un post duplicato.", + "validation.custom.unknownsettings": "Impostazioni sconosciute denominate '{name}'", + "validation.custom.invalidemail": "\"{email}\" non è un indirizzo email valido.", + "validation.custom.invalidurl": "'{url}' non è un URL valido.", + "validation.custom.invalidcustomdomain": "'{domain}' non è un dominio personalizzato valido.", + "validation.custom.customdomaintaken": "Questo dominio personalizzato è già in uso da qualcun altro.", + "validation.custom.unsupportedfileformat": "Questo formato di file non è supportato.", + "validation.custom.minimagedimensions": "L'immagine deve avere dimensioni minime di {width}x{height} pixel.", + "validation.custom.imagesquareratio": "L'immagine deve avere un rapporto di aspetto di 1:1.", + "validation.custom.maximagesize": "La dimensione dell'immagine deve essere minore di {kilobytes}KB.", + "enum.poststatus.open": "Aperto", + "enum.poststatus.started": "Iniziato", + "enum.poststatus.completed": "Completato", + "enum.poststatus.declined": "Rifiutato", + "enum.poststatus.planned": "Pianificato", + "enum.poststatus.duplicate": "Duplicato", + "enum.poststatus.deleted": "Cancella", + "email.change_emailaddress.subject": "Conferma il tuo nuovo indirizzo e-mail", + "email.change_emailaddress.request": "Hai richiesto di cambiare la tua email da {oldEmail} a {newEmail}.", + "email.subscription.view": "visualizza sul tuo browser", + "email.subscription.change": "modifica le preferenze di notifica", + "email.subscription.unsubscribe": "cancellare dalla lista", + "email.greetings": "Ciao!", + "email.greetings_name": "Ciao, {name}!", + "email.operation_confirmation": "Clicca sul link qui sotto per confermare questa operazione.", + "email.footer.noreply": "Questa email è stata inviata da un indirizzo di sola notifica che non può accettare email in arrivo. Si prega di non rispondere a questo messaggio.", + "email.change_status.duplicate": "{title} ({postLink}) è stato chiuso come duplicato di {duplicate}.", + "email.change_status.others": "Stato di {title} ({postLink}) è cambiato in {status}.", + "email.delete_post.text": "{title} è stato cancellato.", + "email.new_comment.text": "{userName} ha lasciato un commento su {title} ({postLink}).", + "email.new_post.text": "{userName} ha creato un nuovo post {title} ({postLink}).", + "email.signin_email.subject": "Accedi a {siteName}", + "email.signin_email.text": "Ci hai chiesto d'inviarti un link di accesso ed è qui.", + "email.signin_email.confirmation": "Clicca sul link qui sotto per accedere a {siteName}.", + "email.signup_email.subject": "Il tuo nuovo sito Fider", + "email.signup_email.text": "Sei a un passo dall'attivare il tuo sito Fider.", + "email.signup_email.confirmation": "Attraverso il link qui sotto puoi verificare il tuo indirizzo email e completare il processo di attivazione.", + "email.footer.subscription_notice": "Stai ricevendo questa email perché sei iscritto a questo post. Puoi {view}, {unsubscribe} o {change}.", + "email.footer.subscription_notice2": "Stai ricevendo questa email perché sei iscritto a questo post. Puoi {change}.", + "email.footer.subscription_notice3": "Stai ricevendo questa email perché sei iscritto a questo post. Puoi {view} o {change}." +} diff --git a/locale/nl/client.json b/locale/nl/client.json index 1f1233c91..4bf20bb08 100644 --- a/locale/nl/client.json +++ b/locale/nl/client.json @@ -3,6 +3,7 @@ "action.change": "aanpassen", "action.close": "Sluiten", "action.confirm": "Bevestigen", + "action.copylink": "Copy link", "action.delete": "Verwijderen", "action.edit": "Bewerken", "action.markallasread": "Markeer alles als gelezen", @@ -26,8 +27,8 @@ "error.internalerror.title": "Ai! Nou, dit is onverwacht…", "error.pagenotfound.text": "De link waarop u heeft geklikt werkt niet of de pagina is mogelijk verwijderd.", "error.pagenotfound.title": "Pagina niet gevonden", - "error.unauthorized.text": "Je bent niet gemachtigd om deze pagina te openen.", - "error.unauthorized.title": "Geen toestemming", + "error.unauthorized.text": "Je bent niet bevoegd om deze pagina te bekijken.", + "error.unauthorized.title": "Geen toegang", "home.form.defaultinvitation": "Deel jouw suggesties hier...", "home.form.defaultwelcomemessage": "We horen graag waar je aan denkt.\n\nWat kunnen we beter doen? Dit is de plek waar je op ideeën kunt stemmen en reageren, en ook je eigen ideeën kunt delen.", "home.lonely.suggestion": "Het is aanbevolen om <0>tenminste 3 ideeën aan te maken voor het delen van de site. De initiële inhoud is belangrijk om jouw publiek te motiveren om deel te nemen.", @@ -81,9 +82,12 @@ "modal.deleteaccount.text": "<0>Als je ervoor kiest om je account te verwijderen, verwijderen we al je persoonlijke gegevens voor altijd. De inhoud die je hebt geplaatst blijft bestaan, maar zal geanonimiseerd worden.<1>Dit proces is onomkeerbaar. <2>Weet je het zeker?", "modal.deletecomment.header": "Reactie verwijderen", "modal.deletecomment.text": "Dit proces is onomkeerbaar. <0>Weet je het zeker?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Geen gebruikers gevonden voor <0>{0}.", "modal.showvotes.query.placeholder": "Zoek gebruikers op naam...", - "modal.signin.header": "Log in om een bericht achter te laten en om te stemmen", + "modal.signin.header": "Log in om mee te doen en te stemmen", "mynotifications.label.readrecently": "In de afgelopen 30 dagen gelezen.", "mynotifications.message.nounread": "Geen ongelezen meldingen.", "mynotifications.page.subtitle": "Blijf op de hoogte van wat er gebeurt", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "We hebben je een bevestigingsmail gestuurd met een link om jouw site te activeren.", "page.pendingactivation.text2": "Controleer je inbox om het te activeren.", "page.pendingactivation.title": "Je account is nog niet geactiveerd", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Laat een reactie achter", "showpost.discussionpanel.emptymessage": "Nog niemand heeft gereageerd.", "showpost.label.author": "Geplaatst door <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} is momenteel vergrendeld.", "signin.message.onlyadmins": "Momenteel alleen toegestaan om in te loggen met een beheerdersaccount", "signin.message.private.text": "Als je een account of een uitnodiging hebt, kun je de volgende methodes gebruiken om in te loggen.", - "signin.message.private.title": "<0>{0} is een privéruimte en vereist een uitnodiging om deel te kunnen nemen.", + "signin.message.private.title": "<0>{0} is a private space, you must sign in to participate and vote.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# tag} other {# tags}}" } \ No newline at end of file diff --git a/locale/pl/client.json b/locale/pl/client.json index ee8409f03..95f4bc633 100644 --- a/locale/pl/client.json +++ b/locale/pl/client.json @@ -3,6 +3,7 @@ "action.change": "zmień", "action.close": "Zamknij", "action.confirm": "Potwierdź", + "action.copylink": "Copy link", "action.delete": "Usuń", "action.edit": "Edytuj", "action.markallasread": "Oznacz wszystkie jako przeczytane", @@ -26,8 +27,8 @@ "error.internalerror.title": "Ups! Wystąpił niespodziewany błąd…", "error.pagenotfound.text": "Link w który kliknąłeś wygasł lub strona została usunięta.", "error.pagenotfound.title": "Nie odnaleziono strony", - "error.unauthorized.text": "Potwierdź swoją tożsamość aby wyświetlić tą stronę.", - "error.unauthorized.title": "Błąd uwierzytelnienia", + "error.unauthorized.text": "Nie masz uprawnień do przeglądania tej strony.", + "error.unauthorized.title": "Brak autoryzacji", "home.form.defaultinvitation": "Wpisz swoją sugestię tutaj...", "home.form.defaultwelcomemessage": "Chcemy się dowiedzieć o czym myślisz.\n\nCo możemy poprawić? To jest miejsce, w którym możesz głosować, dyskutować i dzielić się pomysłami.", "home.lonely.suggestion": "Zaleca się stworzenie tutaj <0>co najmniej 3 sugestii przed udostępnieniem tej witryny. Początkowa zawartość jest ważna do zaangażowania swoich odbiorców.", @@ -81,9 +82,12 @@ "modal.deleteaccount.text": "<0>Jeśli zdecydujesz na usunięcie swojego konta, na zawsze usuniemy wszystkie Twoje dane osobowe. Opublikowana zawartość pozostanie na stronie, ale zostanie anonimowa.<1>Ten proces jest nieodwracalny. <2>Czy jesteś pewien?", "modal.deletecomment.header": "Usuń komentarz", "modal.deletecomment.text": "Ten proces jest nieodwracalny. <0>Czy jesteś pewien?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Nie znaleziono użytkowników pasujących do <0>{0}.", "modal.showvotes.query.placeholder": "Wyszukaj użytkowników według nazwy...", - "modal.signin.header": "Zaloguj się aby pisać i głosować", + "modal.signin.header": "Zaloguj się aby wziąć udział i głosować", "mynotifications.label.readrecently": "Przeczytaj ostatnie 30 dni.", "mynotifications.message.nounread": "Brak nowych powiadomień.", "mynotifications.page.subtitle": "Bądź na bieżąco z tym, co się dzieje", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Wysłaliśmy do Ciebie maila z linkiem do aktywowania Twojej strony.", "page.pendingactivation.text2": "Sprawdź swoją skrzynkę odbiorczą, aby ją aktywować.", "page.pendingactivation.title": "Twoje konto oczekuje na aktywację", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Skomentuj", "showpost.discussionpanel.emptymessage": "Wygląda na to, że nikt jeszcze nie skomentował.", "showpost.label.author": "Wysłane przez <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} jest aktualnie zablokowany.", "signin.message.onlyadmins": "Obecnie możliwe jest logowanie tylko na konto administratora", "signin.message.private.text": "Jeśli posiadasz konto lub zaproszenie możesz użyć poniższych opcji aby się zalogować.", - "signin.message.private.title": "<0>{0} is a private space, you must sign in to participate and vote.", + "signin.message.private.title": "<0>{0} to przestrzeń prywatna, musisz się zalogować, aby uczestniczyć i głosować.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# tag} few {# tagów} many {# tagów} other {# tagi}}" } \ No newline at end of file diff --git a/locale/pt-BR/client.json b/locale/pt-BR/client.json index 96e0c68d5..440941a39 100644 --- a/locale/pt-BR/client.json +++ b/locale/pt-BR/client.json @@ -3,6 +3,7 @@ "action.change": "alterar", "action.close": "Fechar", "action.confirm": "Confirmar", + "action.copylink": "Copy link", "action.delete": "Deletar", "action.edit": "Editar", "action.markallasread": "Marcar todas como lidas", @@ -81,6 +82,9 @@ "modal.deleteaccount.text": "<0>Quando você optar por excluir sua conta, todas as suas informações pessoais serão removidas para sempre. O conteúdo que você publicou permanecerá, mas será anonimizado.<1>Esse processo é irreversível. <2>Você tem certeza?", "modal.deletecomment.header": "Excluir comentário", "modal.deletecomment.text": "Este processo é irreversível. <0>Tem certeza?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Nenhum usuário encontrado para <0>{0}.", "modal.showvotes.query.placeholder": "Procurar usuários por nome...", "modal.signin.header": "Faça login para participar e votar", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Enviamos a você um e-mail de confirmação com um link para ativar o seu site.", "page.pendingactivation.text2": "Verifique sua caixa de entrada para ativá-la.", "page.pendingactivation.title": "Sua conta está com ativação pendente", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Deixe um comentário", "showpost.discussionpanel.emptymessage": "Ninguém comentou ainda.", "showpost.label.author": "Publicado por <0/> · <1/>", diff --git a/locale/ru/client.json b/locale/ru/client.json index 7cafb1ada..97875c4a9 100644 --- a/locale/ru/client.json +++ b/locale/ru/client.json @@ -3,6 +3,7 @@ "action.change": "изменить", "action.close": "Закрыть", "action.confirm": "Подтвердить", + "action.copylink": "Copy link", "action.delete": "Удалить", "action.edit": "Изменить", "action.markallasread": "Отметить всё как прочитанное", @@ -27,7 +28,7 @@ "error.pagenotfound.text": "Кажется, ссылка, по которой вы перешли, недействительна. Возможно, эта страница была удалена.", "error.pagenotfound.title": "Страница не найдена", "error.unauthorized.text": "Вы не можете просматривать эту страницу.", - "error.unauthorized.title": "Нет доступа", + "error.unauthorized.title": "Не авторизован", "home.form.defaultinvitation": "Введите предложение здесь...", "home.form.defaultwelcomemessage": "Мы хотели бы услышать ваше мнение. \n\nКак мы можем улучшиться? Здесь можно голосовать, обсуждать и делиться идеями.", "home.lonely.suggestion": "Советуем создать <0>хотя бы 3 предложения перед публикацией этого сайта. Это важно для большего вовлечения аудитории.", @@ -81,9 +82,12 @@ "modal.deleteaccount.text": "<0>Если нужно, мы удалим всю информацию о вашем аккаунте навсегда. Всё, что вы публиковали, останется, но будет анонимизировано.<1>Это действие необратимо. <2>Вы уверены?", "modal.deletecomment.header": "Удалить комментарий", "modal.deletecomment.text": "Это действие необратимо. <0>Вы уверены?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Не удалось найти пользователей с <0>{0}.", "modal.showvotes.query.placeholder": "Найдите пользователей по их имени...", - "modal.signin.header": "Войдите, чтобы создавать посты и голосовать", + "modal.signin.header": "Войдите в систему для участия и голосования", "mynotifications.label.readrecently": "Прочитанные за 30 дней.", "mynotifications.message.nounread": "Нет непрочитанных уведомлений.", "mynotifications.page.subtitle": "Будьте в курсе того, что здесь происходит", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Мы отправили вам письмо со ссылкой для активации этого сайта.", "page.pendingactivation.text2": "Проверьте свою почту, чтобы продолжить.", "page.pendingactivation.title": "Ваш аккаунт ожидает подтверждения", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Оставить комментарий", "showpost.discussionpanel.emptymessage": "Комментариев нет.", "showpost.label.author": "Создал <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} сейчас заблокирован.", "signin.message.onlyadmins": "Сейчас войти можно только с аккаунта администратора", "signin.message.private.text": "Если у вас есть аккаунт или приглашение, вы можете использовать их для входа.", - "signin.message.private.title": "<0>{0} - приватный сайт. Вам нужно приглашение, чтобы присоединиться к нему.", + "signin.message.private.title": "<0>{0} является приватным пространством, вы должны войти в систему, чтобы принять участие и проголосовать.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# tag} other {# tags}}" } \ No newline at end of file diff --git a/locale/sk/client.json b/locale/sk/client.json index a034368de..5224b9fb8 100644 --- a/locale/sk/client.json +++ b/locale/sk/client.json @@ -3,6 +3,7 @@ "action.change": "zmeniť", "action.close": "Zavrieť", "action.confirm": "Potvrdiť", + "action.copylink": "Copy link", "action.delete": "Vymazať", "action.edit": "Upraviť", "action.markallasread": "Označiť všetko ako prečítané", @@ -27,7 +28,7 @@ "error.pagenotfound.text": "Odkaz, na ktorý ste klikli, môže byť nefunkčný alebo bola stránka odstránená.", "error.pagenotfound.title": "Stránka nenájdená", "error.unauthorized.text": "Nemáte oprávnenie na zobrazenie tejto stránky.", - "error.unauthorized.title": "Neautorizované", + "error.unauthorized.title": "Neautorizovaný", "home.form.defaultinvitation": "Sem zadajte svoj návrh...", "home.form.defaultwelcomemessage": "Radi by sme počuli, čo máte na mysli.\n\nČo môžeme urobiť lepšie? Tu môžete hlasovať, diskutovať a zdieľať nápady.", "home.lonely.suggestion": "Pred zdieľaním tejto stránky tu odporúčame vytvoriť <0> aspoň 3 návrhy. Počiatočný obsah je dôležitý, aby ste mohli zaujať publikum.", @@ -81,9 +82,12 @@ "modal.deleteaccount.text": "<0>Keď sa rozhodnete odstrániť svoj účet, všetky vaše osobné informácie navždy vymažeme. Obsah, ktorý ste zverejnili, zostane, ale bude anonymizovaný. <1> Tento proces je nevratný.<2>Ste si istí?", "modal.deletecomment.header": "Odstrániť komentár", "modal.deletecomment.text": "Tento proces je nevratný. <0>Ste si istí?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Nenašli sa žiadni používatelia <0>{0}.", "modal.showvotes.query.placeholder": "Vyhľadajte používateľov podľa mena...", - "modal.signin.header": "Prihláste sa, aby ste mohli pridávať príspevky a hlasovať", + "modal.signin.header": "Ak sa chcete zúčastniť diskusie a hlasovať, prihláste sa", "mynotifications.label.readrecently": "Prečítajte si posledných 30 dní.", "mynotifications.message.nounread": "Žiadne neprečítané upozornenia.", "mynotifications.page.subtitle": "Majte prehľad o tom, čo sa deje", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Poslali sme vám potvrdzovací email s odkazom na aktiváciu vašich stránok.", "page.pendingactivation.text2": "Aktivujte prosím svoju doručenú poštu.", "page.pendingactivation.title": "Váš účet čaká na aktiváciu", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Zanechať komentár", "showpost.discussionpanel.emptymessage": "Zatiaľ sa nikto nevyjadril.", "showpost.label.author": "Pridané <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} je momentálne zamknutý.", "signin.message.onlyadmins": "V súčasnosti je povolené iba prihlásenie do účtu správcu", "signin.message.private.text": "Ak máte účet alebo pozvánku, na prihlásenie môžete použiť nasledujúce možnosti.", - "signin.message.private.title": "<0>{0} je súkromný priestor a vyžaduje si pozvánku, aby ste sa k nemu mohli pridať.", + "signin.message.private.title": "<0>{0} je súkromný priestor, ak sa chcete zúčastniť diskusie a hlasovať, musíte sa prihlásiť.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# tag} other {# tags}}" } \ No newline at end of file diff --git a/locale/sv-SE/client.json b/locale/sv-SE/client.json index 2096a2fea..a8ecfb7c9 100644 --- a/locale/sv-SE/client.json +++ b/locale/sv-SE/client.json @@ -3,6 +3,7 @@ "action.change": "ändra", "action.close": "Stäng", "action.confirm": "Bekräfta", + "action.copylink": "Copy link", "action.delete": "Radera", "action.edit": "Ändra", "action.markallasread": "Markera alla som lästa", @@ -81,9 +82,12 @@ "modal.deleteaccount.text": "<0>När du väljer att radera ditt konto kommer vi att radera all din personliga information för evigt. Innehållet du har publicerat kommer att finnas kvar, men det kommer att vara anonymiserat.<1>Denna process är oåterkallelig. <2>Är du säker?", "modal.deletecomment.header": "Radera kommentar", "modal.deletecomment.text": "Denna process är oåterkallelig. <0>Är du säker?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Inga användare hittades som matchar <0>{0}.", "modal.showvotes.query.placeholder": "Sök efter användare med namn...", - "modal.signin.header": "Logga in för att skriva inlägg och rösta", + "modal.signin.header": "Logga in för att delta och rösta", "mynotifications.label.readrecently": "Läst de senaste 30 dagarna.", "mynotifications.message.nounread": "Inga olästa aviseringar.", "mynotifications.page.subtitle": "Håll dig uppdaterad om vad som händer", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Vi har skickat ett bekräftelsemail med en länk för att aktivera din webbplats.", "page.pendingactivation.text2": "Kontrollera din inkorg för att aktivera den.", "page.pendingactivation.title": "Ditt konto väntar på aktivering", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Skriv en kommentar", "showpost.discussionpanel.emptymessage": "Ingen har kommenterat ännu.", "showpost.label.author": "Skriven av <0/> · <1/>", @@ -148,6 +155,6 @@ "signin.message.locked.title": "<0>{0} är för närvarande låst.", "signin.message.onlyadmins": "För närvarande endast tillåtet att logga in med ett administratörskonto", "signin.message.private.text": "Om du har ett konto eller en inbjudan kan du använda följande alternativ för att logga in.", - "signin.message.private.title": "<0>{0} är ett privat utrymme och kräver en inbjudan för att ansluta till det.", + "signin.message.private.title": "<0>{0} är ett privat utrymme, du måste logga in för att delta och rösta.", "{count, plural, one {# tag} other {# tags}}": "{count, plural, =1 {# etikett} other {# etiketter}}" } \ No newline at end of file diff --git a/locale/tr/client.json b/locale/tr/client.json index 00529164e..bc7a3904f 100644 --- a/locale/tr/client.json +++ b/locale/tr/client.json @@ -3,6 +3,7 @@ "action.change": "değiştir", "action.close": "Kapat", "action.confirm": "Onayla", + "action.copylink": "Copy link", "action.delete": "Sil", "action.edit": "Düzenle", "action.markallasread": "Tümünü Okundu olarak işaretle", @@ -81,6 +82,9 @@ "modal.deleteaccount.text": "<0>Hesabınızı kaldırdığınız zaman size ait bütün kişisel bilgileri kalıcı olarak sileceğiz. Yayınladığınız öneriler sitede anonim olarak kalmaya devam edecek.<1>Bu geri alınamaz bir işlemdir. <2>Devam etmek istiyor musunuz?", "modal.deletecomment.header": "Yorumu Sil", "modal.deletecomment.text": "Bu geri alınamaz bir işlemdir. <0>Emin misiniz?", + "modal.notifications.nonew": "No new notifications", + "modal.notifications.previous": "Previous notifications", + "modal.notifications.unread": "Unread notifications", "modal.showvotes.message.zeromatches": "Eşleşen kullanıcı bulunamadı <0>{0}.", "modal.showvotes.query.placeholder": "Kullanıcıları ismiyle arayın...", "modal.signin.header": "Öneride bulunmak ve oy vermek için giriş yapın", @@ -127,6 +131,9 @@ "page.pendingactivation.text": "Size, sayfanız için aktivasyon bağlantısı barındıran bir onay e-postası gönderdik.", "page.pendingactivation.text2": "Aktivasyon için lütfen gelen kutunuzu kontrol edin.", "page.pendingactivation.title": "Hesabınız aktivasyon beklemektedir", + "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", + "showpost.comment.copylink.success": "Comment link copied to clipboard", + "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", "showpost.commentinput.placeholder": "Yorum yazın", "showpost.discussionpanel.emptymessage": "Henüz hiç kimse yorum yapmadı.", "showpost.label.author": "<0/> · <1/> tarafından gönderildi", From c7840aa8eee6401750f72e20386714b19b11f963 Mon Sep 17 00:00:00 2001 From: Matt Roberts Date: Tue, 5 Nov 2024 12:01:17 +0000 Subject: [PATCH 2/5] Russian spelling mistakes. --- locale/ru/client.json | 16 ++++++++-------- locale/ru/server.json | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/locale/ru/client.json b/locale/ru/client.json index 97875c4a9..b13fb1882 100644 --- a/locale/ru/client.json +++ b/locale/ru/client.json @@ -46,7 +46,7 @@ "home.similar.subtitle": "Возможно, стоит проголосовать за уже существующие посты.", "home.similar.title": "Похожие посты", "home.tagsfilter.label.with": "с", - "home.tagsfilter.selected.none": "Любые тэги", + "home.tagsfilter.selected.none": "Любые теги", "label.actions": "Действия", "label.avatar": "Аватар", "label.custom": "Пользовательский", @@ -61,7 +61,7 @@ "label.notifications": "Уведомления", "label.or": "ИЛИ", "label.subscribe": "Подписаться", - "label.tags": "Тэги", + "label.tags": "Теги", "label.unread": "Непрочитанные", "label.unsubscribe": "Отписаться", "label.voters": "Проголосовавшие", @@ -82,9 +82,9 @@ "modal.deleteaccount.text": "<0>Если нужно, мы удалим всю информацию о вашем аккаунте навсегда. Всё, что вы публиковали, останется, но будет анонимизировано.<1>Это действие необратимо. <2>Вы уверены?", "modal.deletecomment.header": "Удалить комментарий", "modal.deletecomment.text": "Это действие необратимо. <0>Вы уверены?", - "modal.notifications.nonew": "No new notifications", - "modal.notifications.previous": "Previous notifications", - "modal.notifications.unread": "Unread notifications", + "modal.notifications.nonew": "Нет новых уведомлений", + "modal.notifications.previous": "Предыдущие уведомления", + "modal.notifications.unread": "Непрочитанные уведомления", "modal.showvotes.message.zeromatches": "Не удалось найти пользователей с <0>{0}.", "modal.showvotes.query.placeholder": "Найдите пользователей по их имени...", "modal.signin.header": "Войдите в систему для участия и голосования", @@ -131,9 +131,9 @@ "page.pendingactivation.text": "Мы отправили вам письмо со ссылкой для активации этого сайта.", "page.pendingactivation.text2": "Проверьте свою почту, чтобы продолжить.", "page.pendingactivation.title": "Ваш аккаунт ожидает подтверждения", - "showpost.comment.copylink.error": "Failed to copy comment link, please copy page URL", - "showpost.comment.copylink.success": "Comment link copied to clipboard", - "showpost.comment.unknownhighlighted": "Invalid comment ID #{id}", + "showpost.comment.copylink.error": "Не удалось скопировать ссылку на комментарий, пожалуйста скопируйте URL страницы", + "showpost.comment.copylink.success": "Ссылка на комментарий скопирована в буфер", + "showpost.comment.unknownhighlighted": "Некорректный ID комментария #{id}", "showpost.commentinput.placeholder": "Оставить комментарий", "showpost.discussionpanel.emptymessage": "Комментариев нет.", "showpost.label.author": "Создал <0/> · <1/>", diff --git a/locale/ru/server.json b/locale/ru/server.json index 15fa495a2..c550dfb2d 100644 --- a/locale/ru/server.json +++ b/locale/ru/server.json @@ -11,7 +11,7 @@ "validation.required": "Нужно указать {name}.", "validation.invalid": "{name} имеет некорректный формат.", "validation.invalidvalue": "{name} имеет некорректное значение '{value}'.", - "validation.maxstringlen": "{name} должен быть не длинее {len} символов.", + "validation.maxstringlen": "{name} должен быть не длиннее {len} символов.", "validation.custom.maxattachments": "Вы не можете прикрепить более {number} вложений.", "validation.custom.differentemail": "Выберите другой адрес электронной почты.", "validation.custom.emailtaken": "Этот адрес электронной почты использует кто-то другой", @@ -45,8 +45,8 @@ "email.greetings_name": "Привет, {name}!", "email.operation_confirmation": "Перейдите по ссылке ниже, чтобы подтвердить это действие.", "email.footer.noreply": "Это письмо было отправлено с адреса, через который мы не принимаем входящие сообщения. Пожалуйста, не отвечайте на это сообщение.", - "email.change_status.duplicate": "Мы закрыли пост {title} ({postLink}), т. к. это дубликат другого поста {duplicate}.", - "email.change_status.others": "Статус предлжения {title} ({postLink}) был изменён на {status}.", + "email.change_status.duplicate": "Мы закрыли пост {title} ({postLink}), так как это дубликат другого поста {duplicate}.", + "email.change_status.others": "Статус предложения {title} ({postLink}) был изменён на {status}.", "email.delete_post.text": "Пост {title} был удалён.", "email.new_comment.text": "{userName} оставил комментарий на {title} ({postLink}).", "email.new_post.text": "{userName} создал новый пост: {title} ({postLink}).", From b2e3fde28e553c3c9b97da0d60046f40fd698f6e Mon Sep 17 00:00:00 2001 From: Matt Roberts Date: Tue, 5 Nov 2024 12:09:26 +0000 Subject: [PATCH 3/5] Italian locale settings added --- app/pkg/i18n/i18n.go | 1 + locale/locales.ts | 3 +++ package.json | 1 + public/services/i18n.ts | 3 ++- public/ssr.tsx | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/pkg/i18n/i18n.go b/app/pkg/i18n/i18n.go index 77fc55047..28753aca8 100644 --- a/app/pkg/i18n/i18n.go +++ b/app/pkg/i18n/i18n.go @@ -26,6 +26,7 @@ var localeToPlurals = map[string]string{ "pl": "pl", "ru": "ru", "sk": "sk", + "it": "it", "tr": "tr", } diff --git a/locale/locales.ts b/locale/locales.ts index d8a9aeafb..55a52db36 100644 --- a/locale/locales.ts +++ b/locale/locales.ts @@ -21,6 +21,9 @@ const locales: { [key: string]: Locale } = { "sv-SE": { text: "Swedish", }, + "it": { + text: "Italian", + }, nl: { text: "Dutch", }, diff --git a/package.json b/package.json index 5262b9fc7..87fffd7ce 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,7 @@ "ru", "sk", "tr", + "it", "el" ] }, diff --git a/public/services/i18n.ts b/public/services/i18n.ts index e6bfad2db..27be3864e 100644 --- a/public/services/i18n.ts +++ b/public/services/i18n.ts @@ -1,5 +1,5 @@ import { i18n, I18n } from "@lingui/core" -import { en, pt, fr, el, de, se, pl, ru, sk, nl, es, tr } from "make-plural/plurals" +import { en, pt, fr, el, de, se, pl, ru, sk, nl, es, tr, it } from "make-plural/plurals" export function activateI18NSync(locale: string, messages?: any): I18n { i18n.loadLocaleData("en", { plurals: en }) @@ -7,6 +7,7 @@ export function activateI18NSync(locale: string, messages?: any): I18n { i18n.loadLocaleData("sv-SE", { plurals: se }) i18n.loadLocaleData("es-ES", { plurals: es }) i18n.loadLocaleData("el", { plurals: el }) + i18n.loadLocaleData("it", { plurals: it }) i18n.loadLocaleData("nl", { plurals: nl }) i18n.loadLocaleData("de", { plurals: de }) i18n.loadLocaleData("fr", { plurals: fr }) diff --git a/public/ssr.tsx b/public/ssr.tsx index ef766da76..6c3936008 100644 --- a/public/ssr.tsx +++ b/public/ssr.tsx @@ -12,6 +12,7 @@ const messages: { [key: string]: any } = { en: require(`../locale/en/client`), "pt-BR": require(`../locale/pt-BR/client`), "sv-SE": require(`../locale/sv-SE/client`), + it: require(`../locale/it/client`), "es-ES": require(`../locale/es-ES/client`), el: require(`../locale/el/client`), nl: require(`../locale/nl/client`), From 6ff2f93b1ab61dfe01b35cba3cd97b3418696de0 Mon Sep 17 00:00:00 2001 From: Matt Roberts Date: Tue, 5 Nov 2024 12:19:26 +0000 Subject: [PATCH 4/5] Fixed lint issues --- locale/locales.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/locales.ts b/locale/locales.ts index 55a52db36..51f957583 100644 --- a/locale/locales.ts +++ b/locale/locales.ts @@ -21,7 +21,7 @@ const locales: { [key: string]: Locale } = { "sv-SE": { text: "Swedish", }, - "it": { + it: { text: "Italian", }, nl: { From 602a132c0c0a42d43876d2ef919b938740e74ca5 Mon Sep 17 00:00:00 2001 From: Matt Roberts Date: Thu, 28 Nov 2024 20:31:58 +0000 Subject: [PATCH 5/5] Added Chinese (Simplified) --- app/pkg/i18n/i18n.go | 1 + locale/locales.ts | 3 + locale/zh-CN/client.json | 160 +++++++++++++++++++++++++++++++++++++++ locale/zh-CN/server.json | 62 +++++++++++++++ package.json | 1 + public/services/i18n.ts | 3 +- public/ssr.tsx | 1 + 7 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 locale/zh-CN/client.json create mode 100644 locale/zh-CN/server.json diff --git a/app/pkg/i18n/i18n.go b/app/pkg/i18n/i18n.go index 28753aca8..ccf155880 100644 --- a/app/pkg/i18n/i18n.go +++ b/app/pkg/i18n/i18n.go @@ -28,6 +28,7 @@ var localeToPlurals = map[string]string{ "sk": "sk", "it": "it", "tr": "tr", + "zh-CN": "zh", } type Params map[string]any diff --git a/locale/locales.ts b/locale/locales.ts index 51f957583..e4a54b2fa 100644 --- a/locale/locales.ts +++ b/locale/locales.ts @@ -45,6 +45,9 @@ const locales: { [key: string]: Locale } = { ar: { text: "Arabic", }, + "zh-CN": { + text: "Chinese (Simplified)", + }, } export default locales diff --git a/locale/zh-CN/client.json b/locale/zh-CN/client.json new file mode 100644 index 000000000..951d84ac9 --- /dev/null +++ b/locale/zh-CN/client.json @@ -0,0 +1,160 @@ +{ + "action.cancel": "取消", + "action.change": "修改", + "action.close": "关闭", + "action.confirm": "确认", + "action.copylink": "复制链接", + "action.delete": "删除", + "action.edit": "编辑", + "action.markallasread": "将全部标记为已读", + "action.ok": "确定", + "action.respond": "回复/标记", + "action.save": "保存", + "action.signin": "登录", + "action.submit": "提交", + "enum.poststatus.completed": "完成", + "enum.poststatus.declined": "拒绝", + "enum.poststatus.deleted": "删除", + "enum.poststatus.duplicate": "重复", + "enum.poststatus.open": "开启", + "enum.poststatus.planned": "计划中", + "enum.poststatus.started": "进行中", + "error.expired.text": "您点击的链接已过期.", + "error.expired.title": "过期", + "error.forbidden.text": "您无权查看此页面.", + "error.forbidden.title": "被禁止的", + "error.internalerror.text": "发生错误,我们正在努力解决问题!我们很快就会投入运行.", + "error.internalerror.title": "哇!好吧,这太出乎意料了…", + "error.pagenotfound.text": "您点击的链接可能已断开,或者页面可能已被删除.", + "error.pagenotfound.title": "未找到页面", + "error.unauthorized.text": "您无权查看此页面.", + "error.unauthorized.title": "未经授权", + "home.form.defaultinvitation": "在此处输入您的建议...", + "home.form.defaultwelcomemessage": "我们很想听听你在想什么。\n\n我们能做得更好吗?这是您投票、讨论和分享想法的地方.", + "home.lonely.suggestion": "建议您在共享此网站之前,在此处创建<0>至少3个建议。初始内容对于开始吸引观众很重要.", + "home.lonely.text": "尚未创建任何帖子.", + "home.postfilter.label.view": "看板", + "home.postfilter.option.mostdiscussed": "讨论最多", + "home.postfilter.option.mostwanted": "投票最多", + "home.postfilter.option.myvotes": "我的投票", + "home.postfilter.option.recent": "最近", + "home.postfilter.option.trending": "趋势", + "home.postinput.description.placeholder": "描述你的建议(可选)", + "home.postscontainer.label.noresults": "没有与您的搜索匹配的结果,请尝试其他搜索.", + "home.postscontainer.label.viewmore": "查看更多帖子", + "home.postscontainer.query.placeholder": "搜索", + "home.similar.subtitle": "考虑对现有内容进行投票.", + "home.similar.title": "类似帖子", + "home.tagsfilter.label.with": "关于", + "home.tagsfilter.selected.none": "任何标签", + "label.actions": "行动", + "label.avatar": "Avatar", + "label.custom": "自定义", + "label.description": "说明", + "label.discussion": "讨论", + "label.email": "邮箱", + "label.gravatar": "Gravatar", + "label.letter": "稍后", + "label.moderation": "管理", + "label.name": "名称", + "label.none": "None", + "label.notifications": "通知", + "label.or": "或者", + "label.subscribe": "订阅", + "label.tags": "标签", + "label.unread": "未读", + "label.unsubscribe": "取消订阅", + "label.voters": "投票者", + "legal.agreement": "我已阅读并同意 <0/> 和 <1/>.", + "legal.notice": "登录即表示您同意 <0/> and <1/>.", + "legal.privacypolicy": "隐私政策", + "legal.termsofservice": "服务条款", + "menu.administration": "管理", + "menu.mysettings": "我的设置", + "menu.signout": "退出", + "menu.sitesettings": "站点设置", + "modal.changeemail.header": "确认你的新邮箱", + "modal.changeemail.text": "我们刚刚向发送了一个确认链接 <0>{0}. <1/> 点击链接更新您的电子邮件.", + "modal.completeprofile.header": "填写您的个人资料", + "modal.completeprofile.name.placeholder": "名称", + "modal.completeprofile.text": "因为这是您第一次登录,请输入您的姓名.", + "modal.deleteaccount.header": "删除帐户", + "modal.deleteaccount.text": "<0>当您选择删除您的帐户时,我们将永远删除您的所有个人信息。您发布的内容将保留,但将匿名.<1>这个过程是不可逆转的. <2>你确定吗?", + "modal.deletecomment.header": "删除评论", + "modal.deletecomment.text": "这个过程是不可逆转的. <0>你确定吗?", + "modal.notifications.nonew": "无新通知", + "modal.notifications.previous": "以前的通知", + "modal.notifications.unread": "未读通知", + "modal.showvotes.message.zeromatches": "未找到匹配的用户 <0>{0}.", + "modal.showvotes.query.placeholder": "按名称搜索用户...", + "modal.signin.header": "登录参与投票", + "mynotifications.label.readrecently": "过去30天阅读.", + "mynotifications.message.nounread": "无未读通知.", + "mynotifications.page.subtitle": "及时了解正在发生的事情", + "mynotifications.page.title": "通知", + "mysettings.apikey.documentation": "要了解如何使用API,请阅读 <0>官方文档.", + "mysettings.apikey.generate": "重新生成API密钥", + "mysettings.apikey.newkey": "您的新API密钥是: <0>{0}", + "mysettings.apikey.newkeynotice": "将其安全地存储在服务器上,切勿将其存储在应用程序的客户端.", + "mysettings.apikey.notice": "API密钥仅在生成时显示。如果您的密钥丢失或已被泄露,请生成一个新的密钥并记录下来.", + "mysettings.apikey.title": "API 密钥", + "mysettings.dangerzone.delete": "删除我的帐户", + "mysettings.dangerzone.notice": "这个过程是不可逆转的. 请确定.", + "mysettings.dangerzone.text": "当您选择删除您的帐户时,我们将永远删除您的所有个人信息。您发布的内容将保留,但将匿名.", + "mysettings.dangerzone.title": "删除帐户", + "mysettings.message.avatar.custom": "我们接受小于100KB、纵横比为1:1、最小尺寸为50x50像素的JPG、GIF和PNG图像.", + "mysettings.message.avatar.gravatar": "一个 <0>Gravatar 将根据您的电子邮件使用。如果你没有Gravatar,系统会为你生成一个基于你首字母的字母头像.", + "mysettings.message.avatar.letter": "根据您的首字母为您生成一个字母头像.", + "mysettings.message.noemail": "您的帐户没有电子邮件.", + "mysettings.message.privateemail": "您的电子邮件是私人的,永远不会公开显示.", + "mysettings.notification.channelemail": "电子邮件", + "mysettings.notification.channelweb": "网站", + "mysettings.notification.event.discussion": "讨论", + "mysettings.notification.event.discussion.staff": "对所有帖子发表评论,除非单独取消订阅", + "mysettings.notification.event.discussion.visitors": "对您订阅的帖子的评论", + "mysettings.notification.event.newpost": "新帖子", + "mysettings.notification.event.newpost.staff": "本网站上的新帖子", + "mysettings.notification.event.newpost.visitors": "本网站上的新帖子", + "mysettings.notification.event.statuschanged": "状态已更改", + "mysettings.notification.event.statuschanged.staff": "除非单独取消订阅,否则所有帖子的状态都会发生变化", + "mysettings.notification.event.statuschanged.visitors": "您订阅的帖子的状态更改", + "mysettings.notification.message.emailonly": "您将收到 <0>电子邮件 相关的通知 {about}.", + "mysettings.notification.message.none": "您将 <0>不会 收到有关此事件的任何通知.", + "mysettings.notification.message.webandemail": "您将收到关于以下内容的<0>网络和<1>电子邮件通知 {about}.", + "mysettings.notification.message.webonly": "您将收到有关以下内容的<0>网络通知 {about}.", + "mysettings.notification.title": "使用以下面板选择要接收通知的事件", + "mysettings.page.subtitle": "管理您的个人资料设置", + "mysettings.page.title": "设置", + "page.backhome": "带我回到<0>{0}主页.", + "page.notinvited.text": "我们找不到您电子邮件地址的帐户.", + "page.notinvited.title": "未被邀请", + "page.pendingactivation.text": "我们向您发送了一封确认电子邮件,其中包含激活您账户的网站链接.", + "page.pendingactivation.text2": "请检查您的收件箱以激活它.", + "page.pendingactivation.title": "您的帐户正在等待激活", + "showpost.comment.copylink.error": "复制评论链接失败,请复制页面URL", + "showpost.comment.copylink.success": "评论链接已复制到剪贴板", + "showpost.comment.unknownhighlighted": "无效的评论ID #{id}", + "showpost.commentinput.placeholder": "发表评论", + "showpost.discussionpanel.emptymessage": "还没有人发表评论.", + "showpost.label.author": "发表者 <0/> · <1/>", + "showpost.message.nodescription": "未提供描述.", + "showpost.moderationpanel.text.help": "此操作<0>无法撤消.", + "showpost.moderationpanel.text.placeholder": "你为什么要删除这篇内容?(可选)", + "showpost.notificationspanel.message.subscribed": "您正在收到有关此帖子活动的通知.", + "showpost.notificationspanel.message.unsubscribed": "您将不会收到有关此帖子的任何通知.", + "showpost.postsearch.numofvotes": "{0} 投票", + "showpost.postsearch.query.placeholder": "搜索原始帖子...", + "showpost.responseform.message.mergedvotes": "此帖子的投票将合并到原始帖子中.", + "showpost.responseform.text.placeholder": "这篇文章怎么了?让你的用户知道你的计划是什么...", + "showpost.votespanel.more": "+{extraVotesCount} 更多", + "showpost.votespanel.seedetails": "查看详细信息", + "signin.message.email": "输入您的电子邮件地址以登录", + "signin.message.emaildisabled": "管理员已禁用电子邮件身份验证。如果您有管理员帐户并且需要绕过此限制,请 <0>点击这里.", + "signin.message.emailsent": "我们刚刚向发送了一个确认链接 <0>{email}. 单击链接,您将登录.", + "signin.message.locked.text": "要重新激活此网站,请使用管理员帐户登录并更新所需的设置.", + "signin.message.locked.title": "<0>{0} 当前已锁定.", + "signin.message.onlyadmins": "目前只允许登录管理员帐户", + "signin.message.private.text": "如果您有帐户或邀请,您可以使用以下选项登录.", + "signin.message.private.title": "<0>{0} 这是一个私人空间,您必须登录才能参与和投票.", + "{count, plural, one {# tag} other {# tags}}": "{count, plural, one {# tag} other {# tags}}" +} \ No newline at end of file diff --git a/locale/zh-CN/server.json b/locale/zh-CN/server.json new file mode 100644 index 000000000..9fef03c40 --- /dev/null +++ b/locale/zh-CN/server.json @@ -0,0 +1,62 @@ +{ + "property.avatarType": "头像类型", + "property.name": "名称", + "property.image": "图片", + "property.customdomain": "自定义域名", + "property.key": "密码", + "property.email": "电子邮件", + "property.title": "标题", + "property.comment": "评论", + "property.status": "状态", + "validation.required": "{name} 是必需的.", + "validation.invalid": "{name} 无效.", + "validation.invalidvalue": "{name} 具有无效值 '{value}'.", + "validation.maxstringlen": "{name} 必须小于 {len} 字符.", + "validation.custom.maxattachments": "每篇帖子允许添加最多 {number} 个附件.", + "validation.custom.differentemail": "选择其他电子邮件.", + "validation.custom.emailtaken": "此电子邮件已被其他人使用", + "validation.custom.descriptivetitle": "标题需要更具描述性.", + "validation.custom.duplicatetitle": "这已经发布过了.", + "validation.custom.selfduplicate": "不能与自身重复.", + "validation.custom.originalpostnotfound": "未找到原始帖子.", + "validation.custom.cannotdeleteduplicatepost": "无法删除此帖子,因为它被重复的帖子引用.", + "validation.custom.unknownsettings": "未知的设置 '{name}'", + "validation.custom.invalidemail": "'{email}' 不是有效的电子邮件地址.", + "validation.custom.invalidurl": "'{url}' 不是有效的URL.", + "validation.custom.invalidcustomdomain": "'{domain}' 不是有效的自定义域.", + "validation.custom.customdomaintaken": "此自定义域已被其他人使用.", + "validation.custom.unsupportedfileformat": "不支持此文件格式.", + "validation.custom.minimagedimensions": "图像的最小尺寸必须为 {width}x{height} 像素.", + "validation.custom.imagesquareratio": "图像的纵横比必须为 1:1.", + "validation.custom.maximagesize": "图像大小必须小于 {kilobytes}KB.", + "enum.poststatus.open": "打开", + "enum.poststatus.started": "启动", + "enum.poststatus.completed": "完成", + "enum.poststatus.declined": "拒绝", + "enum.poststatus.planned": "计划中", + "enum.poststatus.duplicate": "重复", + "enum.poststatus.deleted": "删除", + "email.change_emailaddress.subject": "确认您的新电子邮件", + "email.change_emailaddress.request": "您已请求更改电子邮件 {oldEmail} 为 {newEmail}.", + "email.subscription.view": "在浏览器上查看", + "email.subscription.change": "更改您的通知首选项", + "email.subscription.unsubscribe": "取消订阅", + "email.greetings": "Hello!", + "email.greetings_name": "Hello, {name}!", + "email.operation_confirmation": "单击下面的链接确认此操作.", + "email.footer.noreply": "此电子邮件是从无法接受传入电子邮件的仅通知地址发送的。请不要回复此消息.", + "email.change_status.duplicate": "{title} ({postLink}) 已作为一个已关闭的 复制品 关于 {duplicate}.", + "email.change_status.others": "状态 {title} ({postLink}) 已更改为 {status}.", + "email.delete_post.text": "{title} 已经 删除了.", + "email.new_comment.text": "{userName} 发表评论 {title} ({postLink}).", + "email.new_post.text": "{userName} 创建了一个新帖子 {title} ({postLink}).", + "email.signin_email.subject": "登录到 {siteName}", + "email.signin_email.text": "您要求我们向您发送登录链接,现在是.", + "email.signin_email.confirmation": "单击下面的链接登录 {siteName}.", + "email.signup_email.subject": "您的新 Fider 网站", + "email.signup_email.text": "您距离激活 Fider 网站仅一步之遥.", + "email.signup_email.confirmation": "通过下面的链接,您可以验证您的电子邮件地址并完成激活过程.", + "email.footer.subscription_notice": "您收到此电子邮件是因为您订阅了此帖子。你可以 {view}, {unsubscribe} 或者 {change}.", + "email.footer.subscription_notice2": "您收到此电子邮件是因为您订阅了此帖子。你可以 {change}.", + "email.footer.subscription_notice3": "您收到此电子邮件是因为您订阅了此帖子。你可以 {view} 或者 {change}." +} diff --git a/package.json b/package.json index 87fffd7ce..62d2f2b42 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "sk", "tr", "it", + "zh-CN", "el" ] }, diff --git a/public/services/i18n.ts b/public/services/i18n.ts index 27be3864e..c721e154b 100644 --- a/public/services/i18n.ts +++ b/public/services/i18n.ts @@ -1,5 +1,5 @@ import { i18n, I18n } from "@lingui/core" -import { en, pt, fr, el, de, se, pl, ru, sk, nl, es, tr, it } from "make-plural/plurals" +import { en, pt, fr, el, de, se, pl, ru, sk, nl, es, tr, it, zh } from "make-plural/plurals" export function activateI18NSync(locale: string, messages?: any): I18n { i18n.loadLocaleData("en", { plurals: en }) @@ -15,6 +15,7 @@ export function activateI18NSync(locale: string, messages?: any): I18n { i18n.loadLocaleData("ru", { plurals: ru }) i18n.loadLocaleData("sk", { plurals: sk }) i18n.loadLocaleData("tr", { plurals: tr }) + i18n.loadLocaleData("zh-CH", { plurals: zh }) i18n.load(locale, messages) i18n.activate(locale) return i18n diff --git a/public/ssr.tsx b/public/ssr.tsx index 6c3936008..d418aacd9 100644 --- a/public/ssr.tsx +++ b/public/ssr.tsx @@ -14,6 +14,7 @@ const messages: { [key: string]: any } = { "sv-SE": require(`../locale/sv-SE/client`), it: require(`../locale/it/client`), "es-ES": require(`../locale/es-ES/client`), + "zh-CN": require(`../locale/zh-CN/client`), el: require(`../locale/el/client`), nl: require(`../locale/nl/client`), de: require(`../locale/de/client`),