aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-23 18:05:14 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-23 18:05:14 +0200
commit35a7764db3f58a93c32206cb3ce74bb2f03967e7 (patch)
treed2acb2a07ee6dc2f4241fcc785c2860d57263892 /packages/meshbay-hub/src/meshbay_hub/static/locales
parent998f9c69308ee88fac36cfb77dfb6d07c6fa926a (diff)
downloadmeshbay-35a7764db3f58a93c32206cb3ce74bb2f03967e7.tar.gz
feat(hub): open, create and join invitation links in the interface
#/invite takes the link out of the address on load and keeps it in the tab through registration and sign-in; joining is one click, only the ticket goes to the hub, and the code goes only to the node the link names once it has signed its challenge. Members tab gains "Invite by link" (shared e-mail box, pending list, cancel both halves); home page takes a pasted link. Browser probe drives the real app, signed out and in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/de.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/en.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/es.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/it.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js34
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js34
10 files changed, 340 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
index 17a184e..90f5c00 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
@@ -687,6 +687,40 @@ export default {
'members.invite_email_sent': 'Eine E-Mail mit dem Code wurde an dieses Mitglied gesendet.',
'members.invite_email_failed': 'Die E-Mail konnte nicht gesendet werden — bitte teilen Sie den Code manuell mit.',
'members.invite_email_opt': 'Einladung per E-Mail senden (kann im Spam landen)',
+ 'members.link_title': "Per Link einladen",
+ 'members.link_hint': "Für jemanden, der vielleicht noch kein Konto hat. Der Link funktioniert einmal und nur für ein Konto mit dieser Adresse.",
+ 'members.link_email_placeholder': "E-Mail-Adresse",
+ 'members.link_btn': "Link erstellen",
+ 'members.link_ready': "Einladungslink für {email}:",
+ 'members.link_copy': "Kopieren",
+ 'members.link_copied': "Kopiert",
+ 'members.link_email_sent': "Der Link wurde per E-Mail gesendet.",
+ 'members.link_email_refused': "Die E-Mail konnte nicht gesendet werden — teilen Sie den Link selbst.",
+ 'members.links_pending': "Einladungslinks",
+ 'members.link_status_redeemed': "verwendet von {user}",
+ 'members.link_status_expired': "abgelaufen",
+ 'members.link_expires': "läuft ab am {date}",
+ 'members.link_cancel': "Abbrechen",
+ 'invite.title': "Sie wurden eingeladen",
+ 'invite.none': "In diesem Tab wartet keine Einladung. Öffnen Sie den erhaltenen Link erneut.",
+ 'invite.signed_out': "Jemand hat Sie in eine Gruppe auf diesem Hub eingeladen. Erstellen Sie ein Konto mit der E-Mail-Adresse, an die die Einladung ging, oder melden Sie sich an, falls Sie bereits eines haben.",
+ 'invite.register': "Konto erstellen",
+ 'invite.signin': "Anmelden",
+ 'invite.confirm': "{inviter} lädt Sie in {group} ein.",
+ 'invite.join': "Beitreten",
+ 'invite.ignore': "Ignorieren",
+ 'invite.open': "Gruppe öffnen",
+ 'invite.already_member': "Sie sind bereits Mitglied von {group}.",
+ 'invite.other_account': "Diese Einladung wurde an eine andere E-Mail-Adresse gesendet. Melden Sie sich mit dem Konto dieser Adresse an — Aliasse und Punkte müssen genau übereinstimmen.",
+ 'invite.invalid': "Diese Einladung ist nicht mehr gültig: Sie wurde verwendet, widerrufen oder ist abgelaufen. Bitten Sie um eine neue.",
+ 'invite.joining': "Beitritt…",
+ 'invite.after_register': "Melden Sie sich an, um der Gruppe beizutreten, in die Sie eingeladen wurden.",
+ 'invite.paste_title': "Mit einem Einladungslink beitreten",
+ 'invite.paste_placeholder': "Link hier einfügen",
+ 'invite.paste_btn': "Weiter",
+ 'invite.paste_invalid': "Das ist kein Einladungslink.",
+ 'invite.paste_other_hub': "Diese Einladung gilt für einen anderen Hub.",
+ 'group.link_spent': "Dieser Einladungslink ist auf dem Rechner, der die Gruppe hostet, nicht mehr gültig. Bitten Sie um einen neuen.",
'members.invite_code_hint': 'Sie können diesen Code auch über einen anderen Kanal teilen (z. B. SMS). '
+ 'Die eingeladene Person gibt ihn ein, wenn sie diese Gruppe zum ersten Mal öffnet.',
'transfers.title': 'Übertragungen',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
index a58fdd6..2b55d08 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
@@ -803,6 +803,40 @@ export default {
'members.invite_email_sent': 'An email with the code has been sent to this member.',
'members.invite_email_failed': 'Could not send the email — share the code manually.',
'members.invite_email_opt': 'Send the invitation by e-mail (may land in spam)',
+ 'members.link_title': "Invite by link",
+ 'members.link_hint': "For someone who may not have an account yet. The link works once, and only for an account registered with this address.",
+ 'members.link_email_placeholder': "E-mail address",
+ 'members.link_btn': "Create link",
+ 'members.link_ready': "Invitation link for {email}:",
+ 'members.link_copy': "Copy",
+ 'members.link_copied': "Copied",
+ 'members.link_email_sent': "The link has been sent by e-mail.",
+ 'members.link_email_refused': "The e-mail could not be sent — share the link yourself.",
+ 'members.links_pending': "Invitation links",
+ 'members.link_status_redeemed': "used by {user}",
+ 'members.link_status_expired': "expired",
+ 'members.link_expires': "expires {date}",
+ 'members.link_cancel': "Cancel",
+ 'invite.title': "You have been invited",
+ 'invite.none': "There is no invitation waiting in this tab. Open the link you received again.",
+ 'invite.signed_out': "Someone invited you to a group on this hub. Create an account with the e-mail address the invitation was sent to, or sign in if you already have one.",
+ 'invite.register': "Create an account",
+ 'invite.signin': "Sign in",
+ 'invite.confirm': "{inviter} invites you to join {group}.",
+ 'invite.join': "Join",
+ 'invite.ignore': "Ignore",
+ 'invite.open': "Open the group",
+ 'invite.already_member': "You are already a member of {group}.",
+ 'invite.other_account': "This invitation was sent to another e-mail address. Sign in with the account registered with that address — aliases and dots must match exactly.",
+ 'invite.invalid': "This invitation is no longer valid: it has been used, cancelled or has expired. Ask for a new one.",
+ 'invite.joining': "Joining…",
+ 'invite.after_register': "Sign in to join the group you were invited to.",
+ 'invite.paste_title': "Join with an invitation link",
+ 'invite.paste_placeholder': "Paste the link here",
+ 'invite.paste_btn': "Continue",
+ 'invite.paste_invalid': "That is not an invitation link.",
+ 'invite.paste_other_hub': "This invitation is for another hub.",
+ 'group.link_spent': "This invitation link is no longer valid on the machine hosting the group. Ask for a new one.",
'members.invite_code_hint': 'You can also share this code via another channel (e.g. SMS). '
+ 'They enter it the first time they open this group.',
'transfers.title': 'Transfers',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
index 09592ae..5265976 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
@@ -682,6 +682,40 @@ export default {
'members.invite_email_sent': 'Se ha enviado un correo con el código a este miembro.',
'members.invite_email_failed': 'No se pudo enviar el correo — comparta el código manualmente.',
'members.invite_email_opt': 'Enviar la invitación por correo (puede llegar a spam)',
+ 'members.link_title': "Invitar con un enlace",
+ 'members.link_hint': "Para alguien que quizá aún no tenga cuenta. El enlace sirve una vez, y solo para una cuenta registrada con esta dirección.",
+ 'members.link_email_placeholder': "Dirección de correo",
+ 'members.link_btn': "Crear enlace",
+ 'members.link_ready': "Enlace de invitación para {email}:",
+ 'members.link_copy': "Copiar",
+ 'members.link_copied': "Copiado",
+ 'members.link_email_sent': "El enlace se ha enviado por correo.",
+ 'members.link_email_refused': "No se pudo enviar el correo — comparta el enlace usted mismo.",
+ 'members.links_pending': "Enlaces de invitación",
+ 'members.link_status_redeemed': "usado por {user}",
+ 'members.link_status_expired': "caducado",
+ 'members.link_expires': "caduca el {date}",
+ 'members.link_cancel': "Cancelar",
+ 'invite.title': "Le han invitado",
+ 'invite.none': "No hay ninguna invitación esperando en esta pestaña. Vuelva a abrir el enlace que recibió.",
+ 'invite.signed_out': "Alguien le ha invitado a un grupo en este hub. Cree una cuenta con la dirección de correo a la que se envió la invitación, o inicie sesión si ya tiene una.",
+ 'invite.register': "Crear una cuenta",
+ 'invite.signin': "Iniciar sesión",
+ 'invite.confirm': "{inviter} le invita a unirse a {group}.",
+ 'invite.join': "Unirse",
+ 'invite.ignore': "Ignorar",
+ 'invite.open': "Abrir el grupo",
+ 'invite.already_member': "Ya es miembro de {group}.",
+ 'invite.other_account': "Esta invitación se envió a otra dirección de correo. Inicie sesión con la cuenta registrada con esa dirección — los alias y los puntos deben coincidir exactamente.",
+ 'invite.invalid': "Esta invitación ya no es válida: se ha usado, cancelado o ha caducado. Pida una nueva.",
+ 'invite.joining': "Uniéndose…",
+ 'invite.after_register': "Inicie sesión para unirse al grupo al que le invitaron.",
+ 'invite.paste_title': "Unirse con un enlace de invitación",
+ 'invite.paste_placeholder': "Pegue el enlace aquí",
+ 'invite.paste_btn': "Continuar",
+ 'invite.paste_invalid': "Eso no es un enlace de invitación.",
+ 'invite.paste_other_hub': "Esta invitación es para otro hub.",
+ 'group.link_spent': "Este enlace de invitación ya no es válido en la máquina que aloja el grupo. Pida uno nuevo.",
'members.invite_code_hint': 'También puede compartir este código por otro canal (ej. SMS). '
+ 'Lo introduce la primera vez que abre este grupo.',
'transfers.title': 'Transferencias',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
index b77bf2b..b6b909e 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
@@ -685,6 +685,40 @@ export default {
'members.invite_email_sent': "Un e-mail avec le code a été envoyé à ce membre.",
'members.invite_email_failed': "Impossible d’envoyer l’e-mail — partagez le code manuellement.",
'members.invite_email_opt': 'Envoyer l’invitation par e-mail (risque d’arriver dans les spams)',
+ 'members.link_title': "Inviter par lien",
+ 'members.link_hint': "Pour quelqu’un qui n’a peut-être pas encore de compte. Le lien ne sert qu’une fois, et seulement pour un compte créé avec cette adresse.",
+ 'members.link_email_placeholder': "Adresse e-mail",
+ 'members.link_btn': "Créer le lien",
+ 'members.link_ready': "Lien d’invitation pour {email} :",
+ 'members.link_copy': "Copier",
+ 'members.link_copied': "Copié",
+ 'members.link_email_sent': "Le lien a été envoyé par e-mail.",
+ 'members.link_email_refused': "L’e-mail n’a pas pu être envoyé — partagez le lien vous-même.",
+ 'members.links_pending': "Liens d’invitation",
+ 'members.link_status_redeemed': "utilisé par {user}",
+ 'members.link_status_expired': "expiré",
+ 'members.link_expires': "expire le {date}",
+ 'members.link_cancel': "Annuler",
+ 'invite.title': "Vous êtes invité",
+ 'invite.none': "Aucune invitation n’attend dans cet onglet. Rouvrez le lien que vous avez reçu.",
+ 'invite.signed_out': "Quelqu’un vous a invité dans un groupe sur ce hub. Créez un compte avec l’adresse e-mail à laquelle l’invitation a été envoyée, ou connectez-vous si vous en avez déjà un.",
+ 'invite.register': "Créer un compte",
+ 'invite.signin': "Se connecter",
+ 'invite.confirm': "{inviter} vous invite à rejoindre {group}.",
+ 'invite.join': "Rejoindre",
+ 'invite.ignore': "Ignorer",
+ 'invite.open': "Ouvrir le groupe",
+ 'invite.already_member': "Vous êtes déjà membre de {group}.",
+ 'invite.other_account': "Cette invitation a été envoyée à une autre adresse e-mail. Connectez-vous avec le compte créé avec cette adresse — les alias et les points doivent correspondre exactement.",
+ 'invite.invalid': "Cette invitation n’est plus valable : elle a été utilisée, annulée ou a expiré. Demandez-en une nouvelle.",
+ 'invite.joining': "Adhésion…",
+ 'invite.after_register': "Connectez-vous pour rejoindre le groupe auquel vous avez été invité.",
+ 'invite.paste_title': "Rejoindre avec un lien d’invitation",
+ 'invite.paste_placeholder': "Collez le lien ici",
+ 'invite.paste_btn': "Continuer",
+ 'invite.paste_invalid': "Ce n’est pas un lien d’invitation.",
+ 'invite.paste_other_hub': "Cette invitation concerne un autre hub.",
+ 'group.link_spent': "Ce lien d’invitation n’est plus valable sur la machine qui héberge le groupe. Demandez-en un nouveau.",
'members.invite_code_hint': "Vous pouvez aussi transmettre ce code par un autre canal (ex. SMS). "
+ "La personne le saisit la première fois qu’elle ouvre ce groupe.",
'transfers.title': 'Transferts',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
index 2deb4fc..2a95bf7 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
@@ -685,6 +685,40 @@ export default {
'members.invite_email_sent': "Un'e-mail con il codice è stata inviata a questo membro.",
'members.invite_email_failed': "Impossibile inviare l'e-mail — condivida il codice manualmente.",
'members.invite_email_opt': 'Invia l’invito per e-mail (potrebbe finire nello spam)',
+ 'members.link_title': "Invita tramite link",
+ 'members.link_hint': "Per chi forse non ha ancora un account. Il link funziona una volta, e solo per un account registrato con questo indirizzo.",
+ 'members.link_email_placeholder': "Indirizzo e-mail",
+ 'members.link_btn': "Crea link",
+ 'members.link_ready': "Link d’invito per {email}:",
+ 'members.link_copy': "Copia",
+ 'members.link_copied': "Copiato",
+ 'members.link_email_sent': "Il link è stato inviato per e-mail.",
+ 'members.link_email_refused': "Impossibile inviare l’e-mail — condivida il link di persona.",
+ 'members.links_pending': "Link d’invito",
+ 'members.link_status_redeemed': "usato da {user}",
+ 'members.link_status_expired': "scaduto",
+ 'members.link_expires': "scade il {date}",
+ 'members.link_cancel': "Annulla",
+ 'invite.title': "È stato invitato",
+ 'invite.none': "Nessun invito in attesa in questa scheda. Riapra il link ricevuto.",
+ 'invite.signed_out': "Qualcuno l’ha invitata in un gruppo su questo hub. Crei un account con l’indirizzo e-mail a cui è stato inviato l’invito, o acceda se ne ha già uno.",
+ 'invite.register': "Crea un account",
+ 'invite.signin': "Accedi",
+ 'invite.confirm': "{inviter} la invita a unirsi a {group}.",
+ 'invite.join': "Unisciti",
+ 'invite.ignore': "Ignora",
+ 'invite.open': "Apri il gruppo",
+ 'invite.already_member': "È già membro di {group}.",
+ 'invite.other_account': "Questo invito è stato inviato a un altro indirizzo e-mail. Acceda con l’account registrato con quell’indirizzo — alias e punti devono corrispondere esattamente.",
+ 'invite.invalid': "Questo invito non è più valido: è stato usato, annullato o è scaduto. Ne chieda uno nuovo.",
+ 'invite.joining': "Adesione…",
+ 'invite.after_register': "Acceda per unirsi al gruppo a cui è stato invitato.",
+ 'invite.paste_title': "Unisciti con un link d’invito",
+ 'invite.paste_placeholder': "Incolli qui il link",
+ 'invite.paste_btn': "Continua",
+ 'invite.paste_invalid': "Questo non è un link d’invito.",
+ 'invite.paste_other_hub': "Questo invito è per un altro hub.",
+ 'group.link_spent': "Questo link d’invito non è più valido sulla macchina che ospita il gruppo. Ne chieda uno nuovo.",
'members.invite_code_hint': 'Può anche condividere questo codice tramite un altro canale (es. SMS). '
+ 'Lo inserirà la prima volta che aprirà questo gruppo.',
'transfers.title': 'Trasferimenti',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
index 0b46994..4068e44 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
@@ -677,6 +677,40 @@ export default {
'members.invite_email_sent': 'このメンバーにコード付きのメールが送信されました。',
'members.invite_email_failed': 'メールを送信できませんでした。コードを手動で共有してください。',
'members.invite_email_opt': '招待をメールで送信(迷惑メールに入る場合があります)',
+ 'members.link_title': "リンクで招待",
+ 'members.link_hint': "まだアカウントを持っていない人向けです。リンクは1回だけ、このアドレスで登録したアカウントでのみ使えます。",
+ 'members.link_email_placeholder': "メールアドレス",
+ 'members.link_btn': "リンクを作成",
+ 'members.link_ready': "{email} への招待リンク:",
+ 'members.link_copy': "コピー",
+ 'members.link_copied': "コピーしました",
+ 'members.link_email_sent': "リンクをメールで送信しました。",
+ 'members.link_email_refused': "メールを送信できませんでした。リンクを直接共有してください。",
+ 'members.links_pending': "招待リンク",
+ 'members.link_status_redeemed': "{user} が使用",
+ 'members.link_status_expired': "期限切れ",
+ 'members.link_expires': "{date} に期限切れ",
+ 'members.link_cancel': "取り消す",
+ 'invite.title': "招待されています",
+ 'invite.none': "このタブで待機中の招待はありません。受け取ったリンクをもう一度開いてください。",
+ 'invite.signed_out': "このハブのグループに招待されています。招待が送られたメールアドレスでアカウントを作成するか、すでにお持ちならサインインしてください。",
+ 'invite.register': "アカウントを作成",
+ 'invite.signin': "サインイン",
+ 'invite.confirm': "{inviter} さんが {group} への参加に招待しています。",
+ 'invite.join': "参加",
+ 'invite.ignore': "無視",
+ 'invite.open': "グループを開く",
+ 'invite.already_member': "すでに {group} のメンバーです。",
+ 'invite.other_account': "この招待は別のメールアドレスに送られました。そのアドレスで登録したアカウントでサインインしてください。エイリアスやドットも完全に一致する必要があります。",
+ 'invite.invalid': "この招待は無効です。使用済み、取り消し済み、または期限切れです。新しい招待を依頼してください。",
+ 'invite.joining': "参加しています…",
+ 'invite.after_register': "招待されたグループに参加するにはサインインしてください。",
+ 'invite.paste_title': "招待リンクで参加",
+ 'invite.paste_placeholder': "ここにリンクを貼り付け",
+ 'invite.paste_btn': "続行",
+ 'invite.paste_invalid': "招待リンクではありません。",
+ 'invite.paste_other_hub': "この招待は別のハブのものです。",
+ 'group.link_spent': "この招待リンクは、グループをホストしているマシンでは無効になっています。新しいリンクを依頼してください。",
'members.invite_code_hint': 'このコードは別の手段(SMSなど)でも共有できます。'
+ '相手がこのグループを初めて開いたときに入力します。',
'transfers.title': '転送',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
index 310bb4d..edb6f6a 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
@@ -686,6 +686,40 @@ export default {
'members.invite_email_sent': 'Er is een e-mail met de code naar dit lid gestuurd.',
'members.invite_email_failed': 'Kon de e-mail niet verzenden — deel de code handmatig.',
'members.invite_email_opt': 'Uitnodiging per e-mail versturen (kan in spam belanden)',
+ 'members.link_title': "Uitnodigen via link",
+ 'members.link_hint': "Voor iemand die misschien nog geen account heeft. De link werkt één keer, en alleen voor een account met dit adres.",
+ 'members.link_email_placeholder': "E-mailadres",
+ 'members.link_btn': "Link maken",
+ 'members.link_ready': "Uitnodigingslink voor {email}:",
+ 'members.link_copy': "Kopiëren",
+ 'members.link_copied': "Gekopieerd",
+ 'members.link_email_sent': "De link is per e-mail verstuurd.",
+ 'members.link_email_refused': "De e-mail kon niet worden verstuurd — deel de link zelf.",
+ 'members.links_pending': "Uitnodigingslinks",
+ 'members.link_status_redeemed': "gebruikt door {user}",
+ 'members.link_status_expired': "verlopen",
+ 'members.link_expires': "verloopt op {date}",
+ 'members.link_cancel': "Annuleren",
+ 'invite.title': "U bent uitgenodigd",
+ 'invite.none': "Er wacht geen uitnodiging in dit tabblad. Open de ontvangen link opnieuw.",
+ 'invite.signed_out': "Iemand heeft u uitgenodigd voor een groep op deze hub. Maak een account aan met het e-mailadres waarnaar de uitnodiging is gestuurd, of meld u aan als u er al een hebt.",
+ 'invite.register': "Account maken",
+ 'invite.signin': "Aanmelden",
+ 'invite.confirm': "{inviter} nodigt u uit voor {group}.",
+ 'invite.join': "Deelnemen",
+ 'invite.ignore': "Negeren",
+ 'invite.open': "Groep openen",
+ 'invite.already_member': "U bent al lid van {group}.",
+ 'invite.other_account': "Deze uitnodiging is naar een ander e-mailadres gestuurd. Meld u aan met het account van dat adres — aliassen en punten moeten exact overeenkomen.",
+ 'invite.invalid': "Deze uitnodiging is niet meer geldig: ze is gebruikt, geannuleerd of verlopen. Vraag een nieuwe.",
+ 'invite.joining': "Deelnemen…",
+ 'invite.after_register': "Meld u aan om deel te nemen aan de groep waarvoor u bent uitgenodigd.",
+ 'invite.paste_title': "Deelnemen met een uitnodigingslink",
+ 'invite.paste_placeholder': "Plak de link hier",
+ 'invite.paste_btn': "Doorgaan",
+ 'invite.paste_invalid': "Dat is geen uitnodigingslink.",
+ 'invite.paste_other_hub': "Deze uitnodiging is voor een andere hub.",
+ 'group.link_spent': "Deze uitnodigingslink is niet meer geldig op de machine die de groep host. Vraag een nieuwe.",
'members.invite_code_hint': 'U kunt deze code ook via een ander kanaal delen (bijv. sms). '
+ 'De code werkt één keer en gaat nooit via de hub.',
'transfers.title': 'Overdrachten',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
index 886f1c7..d042c48 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
@@ -698,6 +698,40 @@ export default {
'members.invite_email_sent': 'E-mail z kodem został wysłany do tego członka.',
'members.invite_email_failed': 'Nie udało się wysłać e-maila — przekaż kod ręcznie.',
'members.invite_email_opt': 'Wyślij zaproszenie e-mailem (może trafić do spamu)',
+ 'members.link_title': "Zaproś linkiem",
+ 'members.link_hint': "Dla kogoś, kto może jeszcze nie mieć konta. Link działa raz i tylko dla konta założonego na ten adres.",
+ 'members.link_email_placeholder': "Adres e-mail",
+ 'members.link_btn': "Utwórz link",
+ 'members.link_ready': "Link zaproszenia dla {email}:",
+ 'members.link_copy': "Kopiuj",
+ 'members.link_copied': "Skopiowano",
+ 'members.link_email_sent': "Link został wysłany e-mailem.",
+ 'members.link_email_refused': "Nie udało się wysłać e-maila — przekaż link samodzielnie.",
+ 'members.links_pending': "Linki zaproszeń",
+ 'members.link_status_redeemed': "użyty przez {user}",
+ 'members.link_status_expired': "wygasł",
+ 'members.link_expires': "wygasa {date}",
+ 'members.link_cancel': "Anuluj",
+ 'invite.title': "Otrzymano zaproszenie",
+ 'invite.none': "W tej karcie nie czeka żadne zaproszenie. Otwórz ponownie otrzymany link.",
+ 'invite.signed_out': "Ktoś zaprosił cię do grupy na tym hubie. Załóż konto na adres e-mail, na który wysłano zaproszenie, albo zaloguj się, jeśli już je masz.",
+ 'invite.register': "Załóż konto",
+ 'invite.signin': "Zaloguj się",
+ 'invite.confirm': "{inviter} zaprasza cię do {group}.",
+ 'invite.join': "Dołącz",
+ 'invite.ignore': "Ignoruj",
+ 'invite.open': "Otwórz grupę",
+ 'invite.already_member': "Jesteś już członkiem {group}.",
+ 'invite.other_account': "To zaproszenie wysłano na inny adres e-mail. Zaloguj się na konto założone na ten adres — aliasy i kropki muszą się dokładnie zgadzać.",
+ 'invite.invalid': "To zaproszenie jest już nieważne: zostało użyte, anulowane lub wygasło. Poproś o nowe.",
+ 'invite.joining': "Dołączanie…",
+ 'invite.after_register': "Zaloguj się, aby dołączyć do grupy, do której cię zaproszono.",
+ 'invite.paste_title': "Dołącz przez link zaproszenia",
+ 'invite.paste_placeholder': "Wklej tutaj link",
+ 'invite.paste_btn': "Dalej",
+ 'invite.paste_invalid': "To nie jest link zaproszenia.",
+ 'invite.paste_other_hub': "To zaproszenie dotyczy innego huba.",
+ 'group.link_spent': "Ten link zaproszenia jest już nieważny na komputerze, który hostuje grupę. Poproś o nowy.",
'members.invite_code_hint': 'Możesz też przekazać ten kod innym kanałem (np. SMS). '
+ 'Kod działa jednorazowo i nigdy nie przechodzi przez hub.',
'transfers.title': 'Transfery',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
index 643548a..61e4d44 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js
@@ -684,6 +684,40 @@ export default {
'members.invite_email_sent': 'Um e-mail com o código foi enviado a este membro.',
'members.invite_email_failed': 'Não foi possível enviar o e-mail — compartilhe o código manualmente.',
'members.invite_email_opt': 'Enviar o convite por e-mail (pode cair no spam)',
+ 'members.link_title': "Convidar por link",
+ 'members.link_hint': "Para alguém que talvez ainda não tenha conta. O link funciona uma vez, e só para uma conta registrada com este endereço.",
+ 'members.link_email_placeholder': "Endereço de e-mail",
+ 'members.link_btn': "Criar link",
+ 'members.link_ready': "Link de convite para {email}:",
+ 'members.link_copy': "Copiar",
+ 'members.link_copied': "Copiado",
+ 'members.link_email_sent': "O link foi enviado por e-mail.",
+ 'members.link_email_refused': "Não foi possível enviar o e-mail — compartilhe o link você mesmo.",
+ 'members.links_pending': "Links de convite",
+ 'members.link_status_redeemed': "usado por {user}",
+ 'members.link_status_expired': "expirado",
+ 'members.link_expires': "expira em {date}",
+ 'members.link_cancel': "Cancelar",
+ 'invite.title': "Você foi convidado",
+ 'invite.none': "Não há convite aguardando nesta aba. Abra novamente o link que recebeu.",
+ 'invite.signed_out': "Alguém convidou você para um grupo neste hub. Crie uma conta com o endereço de e-mail para o qual o convite foi enviado, ou entre se já tiver uma.",
+ 'invite.register': "Criar uma conta",
+ 'invite.signin': "Entrar",
+ 'invite.confirm': "{inviter} convida você para participar de {group}.",
+ 'invite.join': "Participar",
+ 'invite.ignore': "Ignorar",
+ 'invite.open': "Abrir o grupo",
+ 'invite.already_member': "Você já é membro de {group}.",
+ 'invite.other_account': "Este convite foi enviado para outro endereço de e-mail. Entre com a conta registrada com esse endereço — aliases e pontos devem coincidir exatamente.",
+ 'invite.invalid': "Este convite não é mais válido: foi usado, cancelado ou expirou. Peça um novo.",
+ 'invite.joining': "Entrando…",
+ 'invite.after_register': "Entre para participar do grupo para o qual foi convidado.",
+ 'invite.paste_title': "Participar com um link de convite",
+ 'invite.paste_placeholder': "Cole o link aqui",
+ 'invite.paste_btn': "Continuar",
+ 'invite.paste_invalid': "Isso não é um link de convite.",
+ 'invite.paste_other_hub': "Este convite é para outro hub.",
+ 'group.link_spent': "Este link de convite não é mais válido na máquina que hospeda o grupo. Peça um novo.",
'members.invite_code_hint': 'Você também pode compartilhar este código por outro canal (ex: SMS). '
+ 'O código funciona uma única vez e nunca passa pelo hub.',
'transfers.title': 'Transferências',
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
index 17adb8b..34fb439 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js
@@ -666,6 +666,40 @@ export default {
'members.invite_email_sent': '包含验证码的邮件已发送给该成员。',
'members.invite_email_failed': '无法发送邮件——请手动分享验证码。',
'members.invite_email_opt': '通过电子邮件发送邀请(可能进入垃圾邮件)',
+ 'members.link_title': "通过链接邀请",
+ 'members.link_hint': "适用于可能还没有账户的人。该链接只能使用一次,且仅限使用此地址注册的账户。",
+ 'members.link_email_placeholder': "电子邮件地址",
+ 'members.link_btn': "创建链接",
+ 'members.link_ready': "发给 {email} 的邀请链接:",
+ 'members.link_copy': "复制",
+ 'members.link_copied': "已复制",
+ 'members.link_email_sent': "链接已通过电子邮件发送。",
+ 'members.link_email_refused': "无法发送电子邮件——请自行分享链接。",
+ 'members.links_pending': "邀请链接",
+ 'members.link_status_redeemed': "已由 {user} 使用",
+ 'members.link_status_expired': "已过期",
+ 'members.link_expires': "{date} 过期",
+ 'members.link_cancel': "取消",
+ 'invite.title': "您收到了邀请",
+ 'invite.none': "此标签页中没有待处理的邀请。请重新打开您收到的链接。",
+ 'invite.signed_out': "有人邀请您加入此中心上的一个群组。请使用收到邀请的电子邮件地址创建账户,如果已有账户请登录。",
+ 'invite.register': "创建账户",
+ 'invite.signin': "登录",
+ 'invite.confirm': "{inviter} 邀请您加入 {group}。",
+ 'invite.join': "加入",
+ 'invite.ignore': "忽略",
+ 'invite.open': "打开群组",
+ 'invite.already_member': "您已经是 {group} 的成员。",
+ 'invite.other_account': "此邀请发送到了另一个电子邮件地址。请使用该地址注册的账户登录——别名和点号必须完全一致。",
+ 'invite.invalid': "此邀请已失效:已被使用、取消或已过期。请索取新的邀请。",
+ 'invite.joining': "正在加入…",
+ 'invite.after_register': "登录以加入您受邀的群组。",
+ 'invite.paste_title': "使用邀请链接加入",
+ 'invite.paste_placeholder': "在此粘贴链接",
+ 'invite.paste_btn': "继续",
+ 'invite.paste_invalid': "这不是邀请链接。",
+ 'invite.paste_other_hub': "此邀请属于另一个中心。",
+ 'group.link_spent': "此邀请链接在托管该群组的机器上已失效。请索取新的链接。",
'members.invite_code_hint': '您也可以通过其他渠道(如短信)分享此验证码。'
+ '验证码仅可使用一次,且绝不会经过 hub。',
'transfers.title': '传输',