From b03415a0ebaa00a6a7a7c4f04b01ab9ec0b0fdb2 Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:43:17 +0300 Subject: [PATCH 1/9] New translation keys in en-US locale --- messages/en-US.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/messages/en-US.json b/messages/en-US.json index ecaef172..b569248f 100644 --- a/messages/en-US.json +++ b/messages/en-US.json @@ -224,6 +224,8 @@ "orgErrorDeleteMessage": "An error occurred while deleting the organization.", "orgDeleted": "Organization deleted", "orgDeletedMessage": "The organization and its data has been deleted.", + "orgMissing": "Organization ID Missing", + "orgMissingMessage": "Unable to regenerate invitation without an organization ID.", "accessUsersManage": "Manage Users", "accessUsersDescription": "Invite users and add them to roles to manage access to your organization", "accessUsersSearch": "Search users...", @@ -248,6 +250,7 @@ "weeks": "Weeks", "months": "Months", "years": "Years", + "day": "{count, plural, =1 {# day} other {# days}}", "apiKeysTitle": "API Key Information", "apiKeysNameMin": "Name must be at least 2 characters.", "apiKeysNameMax": "Name must not be longer than 255 characters.", @@ -351,5 +354,32 @@ "total": "Total", "licenseContinuePayment": "Continue to Payment", "pricingPage": "pricing page", - "licensePricingPage": "For the most up-to-date pricing and discounts, please visit the " + "licensePricingPage": "For the most up-to-date pricing and discounts, please visit the ", + "invite": "Invitations", + "inviteRegenerate": "Regenerate Invitation", + "inviteRegenerateDescription": "Revoke previous invitation and create a new one", + "inviteRemove": "Remove Invitation", + "inviteRemoveError": "Failed to remove invitation", + "inviteRemoveErrorDescription": "An error occurred while removing the invitation.", + "inviteRemoved": "Invitation removed", + "inviteRemovedDescription": "The invitation for {email} has been removed.", + "inviteQuestionRemove": "Are you sure you want to remove the invitation{email, plural, ='' {}, other { for #}}?", + "inviteMessageRemove": "Once removed, this invitation will no longer be valid. You can always re-invite the user later.", + "inviteMessageConfirm": "To confirm, please type the email address of the invitation below.", + "inviteQuestionRegenerate": "Are you sure you want to regenerate the invitation for{email, plural, ='' {}, other { for #}}? This will revoke the previous invitation.", + "inviteRemoveConfirm": "Confirm Remove Invitation", + "inviteRegenerated": "Invitation Regenerated", + "inviteSent": "A new invitation has been sent to {email}.", + "inviteSentEmail": "Send email notification to the user", + "inviteGenerate": "A new invitation has been generated for {email}.", + "inviteDuplicateError": "Duplicate Invite", + "inviteDuplicateErrorDescription": "An invitation for this user already exists.", + "inviteRateLimitError": "Rate Limit Exceeded", + "inviteRateLimitErrorDescription": "You have exceeded the limit of 3 regenerations per hour. Please try again later.", + "inviteRegenerateError": "Failed to Regenerate Invitation", + "inviteRegenerateErrorDescription": "An error occurred while regenerating the invitation.", + "inviteValidityPeriod": "Validity Period", + "inviteValidityPeriodSelect": "Select validity period", + "inviteRegenerateMessage": "The invitation has been regenerated. The user must access the link below to accept the invitation.", + "inviteRegenerateButton": "Regenerate" } From 3e9dc4753b5b8e1a62c2c187f50a0cf2f928a45f Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:43:42 +0300 Subject: [PATCH 2/9] New translation keys in de-DE locale --- messages/de-DE.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/messages/de-DE.json b/messages/de-DE.json index aa41476f..b0709526 100644 --- a/messages/de-DE.json +++ b/messages/de-DE.json @@ -224,6 +224,8 @@ "orgErrorDeleteMessage": "Beim Löschen der Organisation ist ein Fehler aufgetreten.", "orgDeleted": "Organisation gelöscht", "orgDeletedMessage": "Die Organisation und ihre Daten wurden gelöscht.", + "orgMissing": "Organisations-ID fehlt", + "orgMissingMessage": "Einladung kann ohne Organisations-ID nicht neu generiert werden.", "accessUsersManage": "Benutzer verwalten", "accessUsersDescription": "Lade Benutzer ein und füge sie zu Rollen hinzu, um den Zugriff auf deine Organisation zu verwalten", "accessUsersSearch": "Benutzer suchen...", @@ -248,6 +250,7 @@ "weeks": "Wochen", "months": "Monate", "years": "Jahre", + "day": "{count, plural, =1 {# Tag} other {# Tage}}", "apiKeysTitle": "API-Schlüssel Information", "apiKeysNameMin": "Name muss mindestens 2 Zeichen lang sein.", "apiKeysNameMax": "Name darf nicht länger als 255 Zeichen sein.", @@ -351,5 +354,32 @@ "total": "Gesamt", "licenseContinuePayment": "Weiter zur Zahlung", "pricingPage": "Preisseite", - "licensePricingPage": "Für die aktuellsten Preise und Rabatte, besuchen Sie bitte die " + "licensePricingPage": "Für die aktuellsten Preise und Rabatte, besuchen Sie bitte die ", + "invite": "Einladungen", + "inviteRegenerate": "Einladung neu generieren", + "inviteRegenerateDescription": "Vorherige Einladung widerrufen und neue erstellen", + "inviteRemove": "Einladung entfernen", + "inviteRemoveError": "Einladung konnte nicht entfernt werden", + "inviteRemoveErrorDescription": "Beim Entfernen der Einladung ist ein Fehler aufgetreten.", + "inviteRemoved": "Einladung entfernt", + "inviteRemovedDescription": "Die Einladung für {email} wurde entfernt.", + "inviteQuestionRemove": "Sind Sie sicher, dass Sie die Einladung{email, plural, ='' {}, other { für #}} entfernen möchten?", + "inviteMessageRemove": "Sobald entfernt, wird diese Einladung nicht mehr gültig sein. Sie können den Benutzer später jederzeit erneut einladen.", + "inviteMessageConfirm": "Bitte geben Sie zur Bestätigung die E-Mail-Adresse der Einladung unten ein.", + "inviteQuestionRegenerate": "Sind Sie sicher, dass Sie die Einladung{email, plural, ='' {}, other { für #}} neu generieren möchten? Dies wird die vorherige Einladung widerrufen.", + "inviteRemoveConfirm": "Entfernen der Einladung bestätigen", + "inviteRegenerated": "Einladung neu generiert", + "inviteSent": "Eine neue Einladung wurde an {email} gesendet.", + "inviteSentEmail": "E-Mail-Benachrichtigung an den Benutzer senden", + "inviteGenerate": "Eine neue Einladung wurde für {email} generiert.", + "inviteDuplicateError": "Doppelte Einladung", + "inviteDuplicateErrorDescription": "Eine Einladung für diesen Benutzer existiert bereits.", + "inviteRateLimitError": "Ratenlimit überschritten", + "inviteRateLimitErrorDescription": "Sie haben das Limit von 3 Neugenerierungen pro Stunde überschritten. Bitte versuchen Sie es später erneut.", + "inviteRegenerateError": "Fehler beim Neugenerieren der Einladung", + "inviteRegenerateErrorDescription": "Beim Neugenerieren der Einladung ist ein Fehler aufgetreten.", + "inviteValidityPeriod": "Gültigkeitszeitraum", + "inviteValidityPeriodSelect": "Gültigkeitszeitraum auswählen", + "inviteRegenerateMessage": "Die Einladung wurde neu generiert. Der Benutzer muss den untenstehenden Link aufrufen, um die Einladung anzunehmen.", + "inviteRegenerateButton": "Neu generieren", } From f91a4e88d5361680c50d219536ce99d6e639a305 Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:43:51 +0300 Subject: [PATCH 3/9] New translation keys in fr-FR locale --- messages/fr-FR.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/messages/fr-FR.json b/messages/fr-FR.json index 3d879f33..8aceedcd 100644 --- a/messages/fr-FR.json +++ b/messages/fr-FR.json @@ -224,6 +224,8 @@ "orgErrorDeleteMessage": "Une erreur s'est produite lors de la suppression de l'organisation.", "orgDeleted": "Organisation supprimée", "orgDeletedMessage": "L'organisation et ses données ont été supprimées.", + "orgMissing": "ID d'organisation manquant", + "orgMissingMessage": "Impossible de régénérer l'invitation sans un ID d'organisation.", "accessUsersManage": "Gérer les utilisateurs", "accessUsersDescription": "Invitez des utilisateurs et ajoutez-les aux rôles pour gérer l'accès à votre organisation", "accessUsersSearch": "Rechercher des utilisateurs...", @@ -248,6 +250,7 @@ "weeks": "Semaines", "months": "Mois", "years": "Années", + "day": "{count, plural, =1 {# jour} other {# jours}}", "apiKeysTitle": "Informations sur la clé API", "apiKeysNameMin": "Le nom doit comporter au moins 2 caractères.", "apiKeysNameMax": "Le nom ne doit pas dépasser 255 caractères.", @@ -351,5 +354,32 @@ "total": "Total", "licenseContinuePayment": "Continuer vers le paiement", "pricingPage": "page de tarification", - "licensePricingPage": "Pour les prix et les remises les plus récentes, veuillez visiter le " + "licensePricingPage": "Pour les prix et les remises les plus récentes, veuillez visiter le ", + "invite": "Invitations", + "inviteRegenerate": "Régénérer l'invitation", + "inviteRegenerateDescription": "Révoquer l'invitation précédente et en créer une nouvelle", + "inviteRemove": "Supprimer l'invitation", + "inviteRemoveError": "Échec de la suppression de l'invitation", + "inviteRemoveErrorDescription": "Une erreur s'est produite lors de la suppression de l'invitation.", + "inviteRemoved": "Invitation supprimée", + "inviteRemovedDescription": "L'invitation pour {email} a été supprimée.", + "inviteQuestionRemove": "Êtes-vous sûr de vouloir supprimer l'invitation{email, plural, ='' {}, other { pour #}} ?", + "inviteMessageRemove": "Une fois supprimée, cette invitation ne sera plus valide. Vous pourrez toujours réinviter l'utilisateur plus tard.", + "inviteMessageConfirm": "Pour confirmer, veuillez saisir l'adresse e-mail de l'invitation ci-dessous.", + "inviteQuestionRegenerate": "Êtes-vous sûr de vouloir régénérer l'invitation{email, plural, ='' {}, other { pour #}} ? Cela révoquera l'invitation précédente.", + "inviteRemoveConfirm": "Confirmer la suppression de l'invitation", + "inviteRegenerated": "Invitation régénérée", + "inviteSent": "Une nouvelle invitation a été envoyée à {email}.", + "inviteSentEmail": "Envoyer une notification par e-mail à l'utilisateur", + "inviteGenerate": "Une nouvelle invitation a été générée pour {email}.", + "inviteDuplicateError": "Invitation en double", + "inviteDuplicateErrorDescription": "Une invitation pour cet utilisateur existe déjà.", + "inviteRateLimitError": "Limite de taux dépassée", + "inviteRateLimitErrorDescription": "Vous avez dépassé la limite de 3 régénérations par heure. Veuillez réessayer plus tard.", + "inviteRegenerateError": "Échec de la régénération de l'invitation", + "inviteRegenerateErrorDescription": "Une erreur s'est produite lors de la régénération de l'invitation.", + "inviteValidityPeriod": "Période de validité", + "inviteValidityPeriodSelect": "Sélectionner la période de validité", + "inviteRegenerateMessage": "L'invitation a été régénérée. L'utilisateur doit accéder au lien ci-dessous pour accepter l'invitation.", + "inviteRegenerateButton": "Régénérer" } From fa21934d5d18cb6f6b0e9cb6830d842ee94be55e Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:44:36 +0300 Subject: [PATCH 4/9] New translation keys in it-IT locale --- messages/it-IT.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/messages/it-IT.json b/messages/it-IT.json index 9e42af9d..fd5852ef 100644 --- a/messages/it-IT.json +++ b/messages/it-IT.json @@ -224,6 +224,8 @@ "orgErrorDeleteMessage": "Si è verificato un errore durante l'eliminazione dell'organizzazione.", "orgDeleted": "Organizzazione eliminata", "orgDeletedMessage": "L'organizzazione e i suoi dati sono stati eliminati.", + "orgMissing": "ID Organizzazione Mancante", + "orgMissingMessage": "Impossibile rigenerare l'invito senza un ID organizzazione.", "accessUsersManage": "Gestisci Utenti", "accessUsersDescription": "Invita gli utenti e aggiungili ai ruoli per gestire l'accesso alla tua organizzazione", "accessUsersSearch": "Cerca utenti...", @@ -248,6 +250,7 @@ "weeks": "Settimane", "months": "Mesi", "years": "Anni", + "day": "{count, plural, =1 {# giorno} other {# giorni}}", "apiKeysTitle": "Informazioni Chiave API", "apiKeysNameMin": "Il nome deve contenere almeno 2 caratteri.", "apiKeysNameMax": "Il nome non deve essere più lungo di 255 caratteri.", @@ -351,5 +354,32 @@ "total": "Totale", "licenseContinuePayment": "Continua al pagamento", "pricingPage": "pagina prezzi", - "licensePricingPage": "Per i prezzi e gli sconti più aggiornati, visita il " + "licensePricingPage": "Per i prezzi e gli sconti più aggiornati, visita il ", + "invite": "Inviti", + "inviteRegenerate": "Rigenera Invito", + "inviteRegenerateDescription": "Revoca l'invito precedente e creane uno nuovo", + "inviteRemove": "Rimuovi Invito", + "inviteRemoveError": "Impossibile rimuovere l'invito", + "inviteRemoveErrorDescription": "Si è verificato un errore durante la rimozione dell'invito.", + "inviteRemoved": "Invito rimosso", + "inviteRemovedDescription": "L'invito per {email} è stato rimosso.", + "inviteQuestionRemove": "Sei sicuro di voler rimuovere l'invito{email, plural, ='' {}, other { per #}}?", + "inviteMessageRemove": "Una volta rimosso, questo invito non sarà più valido. Puoi sempre reinvitare l'utente in seguito.", + "inviteMessageConfirm": "Per confermare, digita l'indirizzo email dell'invito qui sotto.", + "inviteQuestionRegenerate": "Sei sicuro di voler rigenerare l'invito{email, plural, ='' {}, other { per #}}? Questo revocherà l'invito precedente.", + "inviteRemoveConfirm": "Conferma Rimozione Invito", + "inviteRegenerated": "Invito Rigenerato", + "inviteSent": "Un nuovo invito è stato inviato a {email}.", + "inviteSentEmail": "Invia notifica email all'utente", + "inviteGenerate": "Un nuovo invito è stato generato per {email}.", + "inviteDuplicateError": "Invito Duplicato", + "inviteDuplicateErrorDescription": "Esiste già un invito per questo utente.", + "inviteRateLimitError": "Limite di Frequenza Superato", + "inviteRateLimitErrorDescription": "Hai superato il limite di 3 rigenerazioni per ora. Riprova più tardi.", + "inviteRegenerateError": "Impossibile Rigenerare l'Invito", + "inviteRegenerateErrorDescription": "Si è verificato un errore durante la rigenerazione dell'invito.", + "inviteValidityPeriod": "Periodo di Validità", + "inviteValidityPeriodSelect": "Seleziona periodo di validità", + "inviteRegenerateMessage": "L'invito è stato rigenerato. L'utente deve accedere al link qui sotto per accettare l'invito.", + "inviteRegenerateButton": "Rigenera" } From 0fd3271ef47fd2350e4577c190a0654fb3f9baed Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:44:46 +0300 Subject: [PATCH 5/9] New translation keys in pl-PL locale --- messages/pl-PL.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/messages/pl-PL.json b/messages/pl-PL.json index 6b538257..e3bd8550 100644 --- a/messages/pl-PL.json +++ b/messages/pl-PL.json @@ -224,6 +224,8 @@ "orgErrorDeleteMessage": "Wystąpił błąd podczas usuwania organizacji.", "orgDeleted": "Organizacja usunięta", "orgDeletedMessage": "Organizacja i jej dane zostały usunięte.", + "orgMissing": "Brak ID organizacji", + "orgMissingMessage": "Nie można ponownie wygenerować zaproszenia bez ID organizacji.", "accessUsersManage": "Zarządzaj użytkownikami", "accessUsersDescription": "Zaproś użytkowników i dodaj je do ról do zarządzania dostępem do Twojej organizacji", "accessUsersSearch": "Szukaj użytkowników...", @@ -248,6 +250,7 @@ "weeks": "Tygodnie", "months": "Miesiące", "years": "Lata", + "day": "{count, plural, =1 {# dzień} other {# dni}}", "apiKeysTitle": "Informacje o kluczu API", "apiKeysNameMin": "Nazwa musi mieć co najmniej 2 znaki.", "apiKeysNameMax": "Nazwa nie może być dłuższa niż 255 znaków.", @@ -351,5 +354,32 @@ "total": "Łącznie", "licenseContinuePayment": "Przejdź do płatności", "pricingPage": "strona cenowa", - "licensePricingPage": "Aby uzyskać najnowsze ceny i rabaty, odwiedź " + "licensePricingPage": "Aby uzyskać najnowsze ceny i rabaty, odwiedź ", + "invite": "Zaproszenia", + "inviteRegenerate": "Wygeneruj ponownie zaproszenie", + "inviteRegenerateDescription": "Unieważnij poprzednie zaproszenie i utwórz nowe", + "inviteRemove": "Usuń zaproszenie", + "inviteRemoveError": "Nie udało się usunąć zaproszenia", + "inviteRemoveErrorDescription": "Wystąpił błąd podczas usuwania zaproszenia.", + "inviteRemoved": "Zaproszenie usunięte", + "inviteRemovedDescription": "Zaproszenie dla {email} zostało usunięte.", + "inviteQuestionRemove": "Czy na pewno chcesz usunąć zaproszenie{email, plural, ='' {}, other { dla #}}?", + "inviteMessageRemove": "Po usunięciu to zaproszenie nie będzie już ważne. Zawsze możesz ponownie zaprosić użytkownika później.", + "inviteMessageConfirm": "Aby potwierdzić, wpisz poniżej adres email zaproszenia.", + "inviteQuestionRegenerate": "Czy na pewno chcesz ponownie wygenerować zaproszenie{email, plural, ='' {}, other { dla #}}? Spowoduje to unieważnienie poprzedniego zaproszenia.", + "inviteRemoveConfirm": "Potwierdź usunięcie zaproszenia", + "inviteRegenerated": "Zaproszenie wygenerowane ponownie", + "inviteSent": "Nowe zaproszenie zostało wysłane do {email}.", + "inviteSentEmail": "Wyślij powiadomienie email do użytkownika", + "inviteGenerate": "Nowe zaproszenie zostało wygenerowane dla {email}.", + "inviteDuplicateError": "Zduplikowane zaproszenie", + "inviteDuplicateErrorDescription": "Zaproszenie dla tego użytkownika już istnieje.", + "inviteRateLimitError": "Przekroczono limit żądań", + "inviteRateLimitErrorDescription": "Przekroczyłeś limit 3 regeneracji na godzinę. Spróbuj ponownie później.", + "inviteRegenerateError": "Nie udało się ponownie wygenerować zaproszenia", + "inviteRegenerateErrorDescription": "Wystąpił błąd podczas ponownego generowania zaproszenia.", + "inviteValidityPeriod": "Okres ważności", + "inviteValidityPeriodSelect": "Wybierz okres ważności", + "inviteRegenerateMessage": "Zaproszenie zostało ponownie wygenerowane. Użytkownik musi uzyskać dostęp do poniższego linku, aby zaakceptować zaproszenie.", + "inviteRegenerateButton": "Wygeneruj ponownie" } From 89729a451cc434f13970ca7220dced56a8988b89 Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:44:56 +0300 Subject: [PATCH 6/9] New translation keys in pt-PT locale --- messages/pt-PT.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/messages/pt-PT.json b/messages/pt-PT.json index 1f1d2da1..555a2a33 100644 --- a/messages/pt-PT.json +++ b/messages/pt-PT.json @@ -224,6 +224,8 @@ "orgErrorDeleteMessage": "Ocorreu um erro ao excluir a organização.", "orgDeleted": "Organização excluída", "orgDeletedMessage": "A organização e seus dados foram excluídos.", + "orgMissing": "ID da Organização Ausente", + "orgMissingMessage": "Não é possível regenerar o convite sem um ID de organização.", "accessUsersManage": "Gerenciar Usuários", "accessUsersDescription": "Convidar usuários e adicioná-los a funções para gerenciar o acesso à sua organização", "accessUsersSearch": "Procurar usuários...", @@ -248,6 +250,7 @@ "weeks": "semanas", "months": "Meses", "years": "anos", + "day": "{count, plural, =1 {# dia} other {# dias}}", "apiKeysTitle": "Informações da Chave API", "apiKeysNameMin": "O nome deve ter pelo menos 2 caracteres.", "apiKeysNameMax": "O nome não deve ter mais de 255 caracteres.", @@ -351,5 +354,32 @@ "total": "Total:", "licenseContinuePayment": "Continuar para o pagamento", "pricingPage": "Página de preços", - "licensePricingPage": "Para os preços e descontos mais atualizados, por favor, visite " + "licensePricingPage": "Para os preços e descontos mais atualizados, por favor, visite ", + "invite": "Convites", + "inviteRegenerate": "Regenerar Convite", + "inviteRegenerateDescription": "Revogar convite anterior e criar um novo", + "inviteRemove": "Remover Convite", + "inviteRemoveError": "Falha ao remover convite", + "inviteRemoveErrorDescription": "Ocorreu um erro ao remover o convite.", + "inviteRemoved": "Convite removido", + "inviteRemovedDescription": "O convite para {email} foi removido.", + "inviteQuestionRemove": "Tem certeza que deseja remover o convite{email, plural, ='' {}, other { para #}}?", + "inviteMessageRemove": "Uma vez removido, este convite não será mais válido. Você sempre pode convidar o usuário novamente mais tarde.", + "inviteMessageConfirm": "Para confirmar, digite o endereço de e-mail do convite abaixo.", + "inviteQuestionRegenerate": "Tem certeza que deseja regenerar o convite{email, plural, ='' {}, other { para #}}? Isso irá revogar o convite anterior.", + "inviteRemoveConfirm": "Confirmar Remoção do Convite", + "inviteRegenerated": "Convite Regenerado", + "inviteSent": "Um novo convite foi enviado para {email}.", + "inviteSentEmail": "Enviar notificação por e-mail ao usuário", + "inviteGenerate": "Um novo convite foi gerado para {email}.", + "inviteDuplicateError": "Convite Duplicado", + "inviteDuplicateErrorDescription": "Já existe um convite para este usuário.", + "inviteRateLimitError": "Limite de Taxa Excedido", + "inviteRateLimitErrorDescription": "Você excedeu o limite de 3 regenerações por hora. Por favor, tente novamente mais tarde.", + "inviteRegenerateError": "Falha ao Regenerar Convite", + "inviteRegenerateErrorDescription": "Ocorreu um erro ao regenerar o convite.", + "inviteValidityPeriod": "Período de Validade", + "inviteValidityPeriodSelect": "Selecione o período de validade", + "inviteRegenerateMessage": "O convite foi regenerado. O usuário deve acessar o link abaixo para aceitar o convite.", + "inviteRegenerateButton": "Regenerar" } From 491b4e7b18f4deebede6be6f0772c53a1cb8c173 Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:45:12 +0300 Subject: [PATCH 7/9] New translation keys in tr-TR locale --- messages/tr-TR.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/messages/tr-TR.json b/messages/tr-TR.json index ecaef172..dd638953 100644 --- a/messages/tr-TR.json +++ b/messages/tr-TR.json @@ -224,6 +224,8 @@ "orgErrorDeleteMessage": "An error occurred while deleting the organization.", "orgDeleted": "Organization deleted", "orgDeletedMessage": "The organization and its data has been deleted.", + "orgMissing": "Organization ID Missing", + "orgMissingMessage": "Unable to regenerate invitation without an organization ID.", "accessUsersManage": "Manage Users", "accessUsersDescription": "Invite users and add them to roles to manage access to your organization", "accessUsersSearch": "Search users...", @@ -248,6 +250,7 @@ "weeks": "Weeks", "months": "Months", "years": "Years", + "day": "{count, plural, =1 {# day} other {# days}}", "apiKeysTitle": "API Key Information", "apiKeysNameMin": "Name must be at least 2 characters.", "apiKeysNameMax": "Name must not be longer than 255 characters.", @@ -351,5 +354,32 @@ "total": "Total", "licenseContinuePayment": "Continue to Payment", "pricingPage": "pricing page", - "licensePricingPage": "For the most up-to-date pricing and discounts, please visit the " + "licensePricingPage": "For the most up-to-date pricing and discounts, please visit the ", + "invite": "Invitations", + "inviteRegenerate": "Regenerate Invitation", + "inviteRegenerateDescription": "Revoke previous invitation and create a new one", + "inviteRemove": "Remove Invitation", + "inviteRemoveError": "Failed to remove invitation", + "inviteRemoveErrorDescription": "An error occurred while removing the invitation.", + "inviteRemoved": "Invitation removed", + "inviteRemovedDescription": "The invitation for {email} has been removed.", + "inviteQuestionRemove": "Are you sure you want to remove the invitation{email, plural, ='' {}, other { for #}}?", + "inviteMessageRemove": "Once removed, this invitation will no longer be valid. You can always re-invite the user later.", + "inviteMessageConfirm": "To confirm, please type the email address of the invitation below.", + "inviteQuestionRegenerate": "Are you sure you want to regenerate the invitation for{email, plural, ='' {}, other { for #}}? This will revoke the previous invitation.", + "inviteRemoveConfirm": "Confirm Remove Invitation", + "inviteRegenerated": "Invitation Regenerated", + "inviteSent": "A new invitation has been sent to {email}.", + "inviteSentEmail": "Send email notification to the user", + "inviteGenerate": "A new invitation has been generated for {email}.", + "inviteDuplicateError": "Duplicate Invite", + "inviteDuplicateErrorDescription": "An invitation for this user already exists.", + "inviteRateLimitError": "Rate Limit Exceeded", + "inviteRateLimitErrorDescription": "You have exceeded the limit of 3 regenerations per hour. Please try again later.", + "inviteRegenerateError": "Failed to Regenerate Invitation", + "inviteRegenerateErrorDescription": "An error occurred while regenerating the invitation.", + "inviteValidityPeriod": "Validity Period", + "inviteValidityPeriodSelect": "Select validity period", + "inviteRegenerateMessage": "The invitation has been regenerated. The user must access the link below to accept the invitation.", + "inviteRegenerateButton": "Regenerate", } From 840d5c2b66d624260e7ca67c80a1c6ca37c3f7ce Mon Sep 17 00:00:00 2001 From: vlalx <143875984+vlalx@users.noreply.github.com> Date: Wed, 7 May 2025 17:46:16 +0300 Subject: [PATCH 8/9] Add translation keys in settings/access/invitations --- .../invitations/InvitationsDataTable.tsx | 2 +- .../access/invitations/InvitationsTable.tsx | 31 +++++---- .../invitations/RegenerateInvitationForm.tsx | 64 +++++++++---------- 3 files changed, 46 insertions(+), 51 deletions(-) diff --git a/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx b/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx index ecce6913..57b1d746 100644 --- a/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx +++ b/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx @@ -22,7 +22,7 @@ export function InvitationsDataTable({ diff --git a/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx b/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx index 9618df14..5a48646d 100644 --- a/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx +++ b/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx @@ -17,6 +17,7 @@ import { useOrgContext } from "@app/hooks/useOrgContext"; import { toast } from "@app/hooks/useToast"; import { createApiClient } from "@app/lib/api"; import { useEnvContext } from "@app/hooks/useEnvContext"; +import { useTranslations } from "next-intl"; export type InvitationRow = { id: string; @@ -39,6 +40,8 @@ export default function InvitationsTable({ const [selectedInvitation, setSelectedInvitation] = useState(null); + const t = useTranslations(); + const api = createApiClient(useEnvContext()); const { org } = useOrgContext(); @@ -51,7 +54,7 @@ export default function InvitationsTable({ @@ -62,7 +65,7 @@ export default function InvitationsTable({ setSelectedInvitation(invitation); }} > - Regenerate Invitation + {t('inviteRegenerate')} { @@ -71,7 +74,7 @@ export default function InvitationsTable({ }} > - Remove Invitation + {t('inviteRemove')} @@ -112,17 +115,16 @@ export default function InvitationsTable({ .catch((e) => { toast({ variant: "destructive", - title: "Failed to remove invitation", - description: - "An error occurred while removing the invitation." + title: t('inviteRemoveError'), + description: t('inviteRemoveErrorDescription') }); }); if (res && res.status === 200) { toast({ variant: "default", - title: "Invitation removed", - description: `The invitation for ${selectedInvitation.email} has been removed.` + title: t('inviteRemoved'), + description: t('inviteRemovedDescription', {email: selectedInvitation.email}) }); setInvitations((prev) => @@ -146,23 +148,20 @@ export default function InvitationsTable({ dialog={

- Are you sure you want to remove the invitation for{" "} - {selectedInvitation?.email}? + {t('inviteQuestionRemove', {email: selectedInvitation?.email ?? ''})}

- Once removed, this invitation will no longer be - valid. You can always re-invite the user later. + {t('inviteMessageRemove')}

- To confirm, please type the email address of the - invitation below. + {t('inviteMessageConfirm')}

} - buttonText="Confirm Remove Invitation" + buttonText={t('inviteRemoveConfirm')} onConfirm={removeInvitation} string={selectedInvitation?.email ?? ""} - title="Remove Invitation" + title={t('inviteRemove')} /> { @@ -79,9 +82,8 @@ export default function RegenerateInvitationForm({ if (!org?.org.orgId) { toast({ variant: "destructive", - title: "Organization ID Missing", - description: - "Unable to regenerate invitation without an organization ID.", + title: t('orgMissing'), + description: t('orgMissingMessage'), duration: 5000 }); return; @@ -105,15 +107,15 @@ export default function RegenerateInvitationForm({ if (sendEmail) { toast({ variant: "default", - title: "Invitation Regenerated", - description: `A new invitation has been sent to ${invitation.email}.`, + title: t('inviteRegenerated'), + description: t('inviteSent', {email: invitation.email}), duration: 5000 }); } else { toast({ variant: "default", - title: "Invitation Regenerated", - description: `A new invitation has been generated for ${invitation.email}.`, + title: t('inviteRegenerated'), + description: t('inviteGenerate', {email: invitation.email}), duration: 5000 }); } @@ -130,24 +132,22 @@ export default function RegenerateInvitationForm({ if (error.response?.status === 409) { toast({ variant: "destructive", - title: "Duplicate Invite", - description: "An invitation for this user already exists.", + title: t('inviteDuplicateError'), + description: t('inviteDuplicateErrorDescription'), duration: 5000 }); } else if (error.response?.status === 429) { toast({ variant: "destructive", - title: "Rate Limit Exceeded", - description: - "You have exceeded the limit of 3 regenerations per hour. Please try again later.", + title: t('inviteRateLimitError'), + description: t('inviteRateLimitErrorDescription'), duration: 5000 }); } else { toast({ variant: "destructive", - title: "Failed to Regenerate Invitation", - description: - "An error occurred while regenerating the invitation.", + title: t('inviteRegenerateError'), + description: t('inviteRegenerateErrorDescription'), duration: 5000 }); } @@ -168,18 +168,16 @@ export default function RegenerateInvitationForm({ > - Regenerate Invitation + {t('inviteRegenerate')} - Revoke previous invitation and create a new one + {t('inviteRegenerateDescription')} {!inviteLink ? (

- Are you sure you want to regenerate the - invitation for {invitation?.email}? This - will revoke the previous invitation. + {t('inviteQuestionRegenerate', {email: invitation?.email ?? ''})}