aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/de.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/en.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/es.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/it.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js71
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js71
10 files changed, 660 insertions, 50 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 7bd5169..c78bb52 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
@@ -92,7 +92,7 @@ export default {
'login.invalid': "Benutzername oder Passphrase falsch.",
'login.locked': "Zu viele falsche Passphrasen für dieses Konto. Versuchen Sie es in {minutes} Min. erneut oder setzen Sie Ihre Passphrase zurück.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'Das Internet, wie es gedacht war.',
+ 'welcome.title': 'Das Netzwerk, das nur von Ihnen abhängt.',
'welcome.lead': 'Ihre Fotos, Musik, Videos und Unterhaltungen bleiben zu Hause, auf Ihrem eigenen Computer. Mit MeshBay genießen Sie sie von überall und teilen sie mit den Menschen Ihrer Wahl.',
'welcome.app_chat': 'Chat',
'welcome.app_photos': 'Fotos',
@@ -888,6 +888,8 @@ export default {
// Group misc
'group.retry': 'Erneut versuchen',
+ 'lazy.load_failed': 'Dieser Teil der Oberfläche konnte nicht geladen werden. Der Hub wurde möglicherweise aktualisiert, seit diese Seite geöffnet wurde.',
+ 'lazy.reload': 'Seite neu laden',
// Sidebar
'sidebar.node': 'Node',
@@ -910,7 +912,7 @@ export default {
'node.service_restarting': 'Wird neu gestartet…',
'node.service_mode_hint': 'Läuft als Hintergrunddienst — startet beim Booten, vor der Anmeldung.',
'node.startup_mode_label': 'Automatisch starten:',
- 'node.startup_mode_off': 'Aus (manuell starten)',
+ 'node.startup_mode_off': 'Nur solange MeshBay geöffnet ist',
'node.startup_mode_signin': 'Bei der Anmeldung',
'node.startup_mode_service': 'Als Hintergrunddienst (startet beim Booten)',
'node.startup_mode_updating': 'Modus wird gewechselt — achten Sie auf eine Administrator-Eingabeaufforderung…',
@@ -954,8 +956,6 @@ export default {
'node.root_no_signing_key': 'Kein Signaturschlüssel verfügbar — koppeln Sie dieses Gerät zuerst mit dem Node',
'node.root_no_route': 'Keine Verbindung zum Node — verbinden Sie sich damit oder verwenden Sie die App auf dem Rechner, der ihn hostet',
'node.root_remove_last': 'Eine Gruppe braucht mindestens ein Verzeichnis',
- 'node.root_path_hint': 'Der Pfad, wie der Node ihn sieht, auf dem Rechner, der diese Gruppe hostet.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Pfad',
'node.directory': 'Verzeichnis',
'node.root_added': 'Verzeichnis hinzugefügt.',
@@ -975,7 +975,6 @@ export default {
'node.gek_init_hint': 'Noch kein Gruppenschlüssel. Führen Sie GEK init über die CLI aus, um einen einzurichten.',
'node.gek_public_hint': 'Schlüsselrotation ist für öffentliche Gruppen nicht verfügbar.',
'node.gek_rotate': 'Gruppenschlüssel rotieren',
- 'node.gek_rotate_confirm': 'Gruppenschlüssel rotieren? Verbundene Mitglieder erhalten den neuen Schlüssel automatisch. Bereits heruntergeladene Inhalte sind nicht betroffen.',
'node.gek_rotated': 'Gruppenschlüssel rotiert.',
'node.roster': 'Mitgliederliste',
'node.roster_load': 'Mitgliederliste laden',
@@ -1078,6 +1077,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Registrieren Sie sich bei TMDB, um einen eigenen API-Schlüssel zu erzeugen.',
'settings_app.tmdb_token_link': 'Schlüssel holen',
'settings_node.roots_offline_hint': 'Nicht mit dem Node verbunden — Änderungen laufen über den lokalen Node und greifen beim nächsten Neuladen.',
+ 'settings_node.roots_local_only_hint': 'Ein Verzeichnis hinzufügen sowie Lesen/Schreiben oder Wechselmedium umschalten geht nur auf dem Rechner, auf dem der Node läuft — in der Desktop-Anwendung oder mit meshbay-node root.',
'settings_node.directories_title': 'App-Verzeichnisse',
'settings_node.directories_hint': 'Freigegebene Ordner und welchen davon die Videos-, Musik- und Fotos-Apps als eigene(n) Einstiegspunkt(e) nutzen.',
@@ -1192,4 +1192,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'Abbrechen',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Melden",
+ 'report.title': "Diese Datei melden",
+ 'report.hint': "Ein Administrator dieses Hubs wird sie prüfen.",
+ 'report.reason_illegal': "Illegaler Inhalt",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Urheberrechtsverletzung",
+ 'report.reason_other': "Sonstiges",
+ 'report.detail_placeholder': "Details (optional)",
+ 'report.send': "Meldung senden",
+ 'report.sent': "Danke. Ihre Meldung wurde erfasst.",
+ 'admin.tab_reports': "Meldungen",
+ 'admin.no_reports': "Nichts wartet auf eine Entscheidung",
+ 'admin.col_reporters': "Meldende",
+ 'admin.btn_dismiss': "Verwerfen",
+ 'admin.report_block_confirm': "Diese Datei sperren? Jeder Knoten mit einer öffentlichen Gruppe stellt sie dort nicht mehr bereit.",
+ 'admin.reports_heading': "Inhaltsmeldungen",
+ 'admin.reports_hint': "Wer eine Datei in einer öffentlichen Gruppe melden darf, wie oft, und was geschieht, wenn genug Mitglieder es getan haben.",
+ 'admin.reports_min_account_age_hours': "Mindestalter des Kontos (Stunden)",
+ 'admin.reports_daily_per_account': "Meldungen pro Konto und Tag",
+ 'admin.reports_review_threshold': "Mitglieder bis zur Prüfung",
+ 'admin.reports_auto_block': "Ohne Prüfung sperren (1 = ja, 0 = nein)",
+ 'admin.reports_save': "Meldeeinstellungen speichern",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Umbenannt: „{name}“ ist nicht auf jedem System ein gültiger Name",
+ 'transfers.renamed_n': "Namen geändert, damit sie auf jedem System gültig sind: {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Einladungen",
+ 'home.invitation_hint': "Jemand hat Sie zu diesen Gruppen hinzugefügt. Nehmen Sie nur die an, die Sie erwarten: Eine Gruppe, der Sie beitreten, sieht Ihre Adresse, wenn Sie sie öffnen.",
+ 'home.invited_by': "eingeladen von {name}",
+ 'home.accept': "Annehmen",
+ 'home.decline': "Ablehnen",
+ 'members.invited': "eingeladen",
+ 'hosts.title': "Hosts",
+ 'hosts.hint': "Ihre eigenen Nodes stellen diese Gruppe ohne Rückfrage bereit. Ein anderer Node tut es erst, wenn Sie ihn hier genehmigen; ein Node, der anfragt, steht unten.",
+ 'hosts.none': "Kein anderer Node hat angefragt, diese Gruppe bereitzustellen.",
+ 'hosts.from': "Ein Node von {name}",
+ 'hosts.status_pending': "wartet auf Ihre Antwort",
+ 'hosts.status_approved': "genehmigt",
+ 'hosts.status_refused': "abgelehnt",
+ 'hosts.approve': "Genehmigen",
+ 'hosts.refuse': "Ablehnen",
+ 'hosts.online': "online",
+
+ 'group.bundle_format_retired': 'Dieser Node speichert Ihre Identität in einem Format, das diese Version nicht mehr liest. Bitten Sie den Betreiber, „meshbay-node member unpin" für Ihr Konto auszuführen und Ihnen einen neuen Einladungscode zu senden.',
+
+ 'settings.browser_access': 'Browserzugang',
+ 'settings.browser_access_on_hint': 'Ein Browser kann Ihre Gruppen mit Ihrer Passphrase öffnen: Diese Anwendung legt Ihre Identität auf jedem Node ab, so versiegelt, dass nur Ihre Passphrase zusammen mit Ihrem Hub-Konto sie öffnen kann.',
+ 'settings.browser_access_off_hint': 'Ihre Identitäten bleiben auf diesem Gerät. Nichts davon liegt auf einem Node, und ein Browser kann Ihre Gruppen nicht allein mit Ihrer Passphrase öffnen. Ein Browser, den Sie in dieser Anwendung freigeben, erhält eigene Identitäten.',
+ 'settings.browser_access_turn_on': 'Browser erlauben',
+ 'settings.browser_access_turn_off': 'Identitäten nur auf diesem Gerät behalten',
+ 'settings.browser_access_next_open': 'Wird bei jeder Gruppe beim nächsten Öffnen angewendet.',
+ 'settings.browser_access_off_in_browser': 'Der Browserzugang ist für dieses Konto ausgeschaltet. Er wird in der MeshBay-Desktopanwendung eingeschaltet, die diesen Browser auch für sich selbst freigeben kann.',
+ 'group.browser_access_off': 'Der Browserzugang ist für dieses Konto ausgeschaltet. Schalten Sie ihn in der MeshBay-Desktopanwendung (Profil) ein oder geben Sie diesen Browser dort frei.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'Der Node auf diesem Computer ist für {current} eingerichtet. Stattdessen für {next} einrichten? Er stellt dann die Gruppen, die er für {current} hostet, nicht mehr bereit.',
+ 'native.browser_access_confirm': 'Die Anmeldung über einen Browser erlauben? Die Anwendung legt Ihre Identität auf jedem genutzten Node ab, so versiegelt, dass nur Ihre Passphrase zusammen mit Ihrem Hub-Konto sie öffnen kann.',
+ 'native.declined': 'Abgebrochen — nichts wurde geändert.',
};
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 0c9cb19..f5879b3 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
@@ -95,7 +95,7 @@ export default {
'login.invalid': "Wrong username or passphrase.",
'login.locked': "Too many wrong passphrases for this account. Try again in {minutes} min, or reset your passphrase.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'The Internet as it was meant to be.',
+ 'welcome.title': 'The network that relies only on you.',
'welcome.lead': 'Your photos, music, videos and conversations stay at home, on your own computer. MeshBay lets you enjoy them from anywhere, and share them with the people you choose.',
'welcome.app_chat': 'Chat',
'welcome.app_photos': 'Photos',
@@ -778,6 +778,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Sign up on TMDB to generate your own API key.',
'settings_app.tmdb_token_link': 'Get a key',
'settings_node.roots_offline_hint': 'Not connected to the node — changes go through the local node instead, and take effect on its next reload.',
+ 'settings_node.roots_local_only_hint': 'Adding a directory, and switching read-write or removable, are done on the machine running the node — in the desktop application, or with meshbay-node root.',
'settings_node.directories_title': 'App directories',
'settings_node.directories_hint': 'Which shared folders the Videos, Music and Photos apps use as their entry point(s).',
@@ -984,6 +985,8 @@ export default {
'group.mute': 'Mute notifications',
'group.unmute': 'Unmute notifications',
'group.retry': 'Retry',
+ 'lazy.load_failed': 'This part of the interface could not be loaded. The hub may have been updated since this page was opened.',
+ 'lazy.reload': 'Reload the page',
'profile.title': 'Profile',
'usermenu.profile': 'Profile',
@@ -1006,7 +1009,7 @@ export default {
'node.service_restarting': 'Restarting…',
'node.service_mode_hint': 'Running as a background service — it starts at boot, before sign-in.',
'node.startup_mode_label': 'Start automatically:',
- 'node.startup_mode_off': 'Off (start manually)',
+ 'node.startup_mode_off': 'Only while MeshBay is open',
'node.startup_mode_signin': 'At sign-in',
'node.startup_mode_service': 'As a background service (starts at boot)',
'node.startup_mode_updating': 'Switching mode — check for an administrator prompt…',
@@ -1028,8 +1031,6 @@ export default {
'node.root_no_signing_key': 'No signing key available — pair this device with the node first',
'node.root_no_route': 'No route to the node — connect to it, or use the app on the machine hosting it',
'node.root_remove_last': 'A group needs at least one directory',
- 'node.root_path_hint': 'The path as the node sees it, on the machine hosting this group.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Path',
'node.root_added': 'Directory added.',
'node.root_removed': 'Directory removed. Restart recommended to update the index.',
@@ -1037,7 +1038,6 @@ export default {
'node.not_operator': 'Could not reach your node. Make sure it is running.',
'node.gek': 'Group key',
'node.gek_rotate': 'Rotate group key',
- 'node.gek_rotate_confirm': 'Rotate the group key? Connected members will receive the new key automatically. Content already downloaded is unaffected.',
'node.gek_rotated': 'Group key rotated.',
'node.gek_init_hint': 'No group key yet. Run GEK init from the CLI to set one up.',
'node.gek_public_hint': 'Key rotation is not available for public groups.',
@@ -1173,4 +1173,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'Cancel',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Report",
+ 'report.title': "Report this file",
+ 'report.hint': "An administrator of this hub will review it.",
+ 'report.reason_illegal': "Illegal content",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Copyright infringement",
+ 'report.reason_other': "Other",
+ 'report.detail_placeholder': "Details (optional)",
+ 'report.send': "Send report",
+ 'report.sent': "Thank you. Your report has been recorded.",
+ 'admin.tab_reports': "Reports",
+ 'admin.no_reports': "Nothing is waiting for a decision",
+ 'admin.col_reporters': "Reporters",
+ 'admin.btn_dismiss': "Dismiss",
+ 'admin.report_block_confirm': "Block this file? Every node hosting a public group will stop serving it there.",
+ 'admin.reports_heading': "Content reports",
+ 'admin.reports_hint': "Who may report a file in a public group, how often, and what happens once enough members have.",
+ 'admin.reports_min_account_age_hours': "Minimum account age (hours)",
+ 'admin.reports_daily_per_account': "Reports per account per day",
+ 'admin.reports_review_threshold': "Members before review",
+ 'admin.reports_auto_block': "Block without review (1 = yes, 0 = no)",
+ 'admin.reports_save': "Save report settings",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Renamed: “{name}” is not a valid name on every system",
+ 'transfers.renamed_n': "Names changed to be valid on every system: {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Invitations",
+ 'home.invitation_hint': "Somebody added you to these groups. Accept only the ones you expect: a group you join can see your address when you open it.",
+ 'home.invited_by': "invited by {name}",
+ 'home.accept': "Accept",
+ 'home.decline': "Decline",
+ 'members.invited': "invited",
+ 'hosts.title': "Hosts",
+ 'hosts.hint': "Your own nodes serve this group without asking. Another node serves it only once you approve it here; a node that asks is listed below.",
+ 'hosts.none': "No other node has asked to host this group.",
+ 'hosts.from': "A node of {name}",
+ 'hosts.status_pending': "waiting for your answer",
+ 'hosts.status_approved': "approved",
+ 'hosts.status_refused': "refused",
+ 'hosts.approve': "Approve",
+ 'hosts.refuse': "Refuse",
+ 'hosts.online': "online",
+
+ 'group.bundle_format_retired': 'This node holds your identity in a format this version no longer reads. Ask its operator to run “meshbay-node member unpin” for your account and send you a new invitation code.',
+
+ 'settings.browser_access': 'Browser access',
+ 'settings.browser_access_on_hint': 'A browser can open your groups with your passphrase: this application leaves your identity on each node, sealed so that only your passphrase together with your hub account can open it.',
+ 'settings.browser_access_off_hint': 'Your identities stay on this device. Nothing of them is left on any node, and a browser cannot open your groups with your passphrase alone. A browser you approve from this application gets identities of its own.',
+ 'settings.browser_access_turn_on': 'Allow browsers',
+ 'settings.browser_access_turn_off': 'Keep identities on this device only',
+ 'settings.browser_access_next_open': 'Applied to each group the next time it opens.',
+ 'settings.browser_access_off_in_browser': 'Browser access is off for this account. It is turned on in the MeshBay desktop application, which can also approve this browser for itself.',
+ 'group.browser_access_off': 'Browser access is off for this account. Turn it on in the MeshBay desktop application (Profile), or approve this browser from it.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'The node on this computer is set up for {current}. Set it up for {next} instead? It will stop serving the groups it hosts for {current}.',
+ 'native.browser_access_confirm': 'Allow signing in from a browser? The application will leave your identity on every node you use, sealed so that only your passphrase together with your hub account can open it.',
+ 'native.declined': 'Cancelled — nothing was changed.',
};
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 1399a83..a35aa96 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js
@@ -91,7 +91,7 @@ export default {
'login.invalid': "Nombre de usuario o frase de contraseña incorrectos.",
'login.locked': "Demasiadas frases de contraseña incorrectas para esta cuenta. Vuelva a intentarlo en {minutes} min o restablezca su frase de contraseña.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'Internet como debió ser.',
+ 'welcome.title': 'La red que solo depende de ti.',
'welcome.lead': 'Sus fotos, su música, sus vídeos y sus conversaciones se quedan en casa, en su propio ordenador. MeshBay le permite disfrutarlos desde cualquier lugar y compartirlos con las personas que usted elija.',
'welcome.app_chat': 'Chat',
'welcome.app_photos': 'Fotos',
@@ -882,6 +882,8 @@ export default {
// Group
'group.retry': 'Reintentar',
+ 'lazy.load_failed': 'No se pudo cargar esta parte de la interfaz. Es posible que el hub se haya actualizado desde que se abrió esta página.',
+ 'lazy.reload': 'Recargar la página',
// Sidebar
'sidebar.node': 'Node',
@@ -904,7 +906,7 @@ export default {
'node.service_restarting': 'Reiniciando…',
'node.service_mode_hint': 'Se ejecuta como servicio en segundo plano — se inicia al arrancar, antes de iniciar sesión.',
'node.startup_mode_label': 'Iniciar automáticamente:',
- 'node.startup_mode_off': 'Desactivado (iniciar manualmente)',
+ 'node.startup_mode_off': 'Solo mientras MeshBay está abierto',
'node.startup_mode_signin': 'Al iniciar sesión',
'node.startup_mode_service': 'Como servicio en segundo plano (se inicia al arrancar)',
'node.startup_mode_updating': 'Cambiando de modo — compruebe si aparece un aviso de administrador…',
@@ -948,8 +950,6 @@ export default {
'node.root_no_signing_key': 'No hay clave de firma disponible: empareja primero este dispositivo con el nodo',
'node.root_no_route': 'No hay ruta al nodo: conéctate a él o usa la aplicación en la máquina que lo aloja',
'node.root_remove_last': 'Un grupo necesita al menos un directorio',
- 'node.root_path_hint': 'La ruta tal como la ve el nodo, en la máquina que aloja este grupo.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Ruta',
'node.directory': 'Directorio',
'node.root_added': 'Directorio añadido.',
@@ -969,7 +969,6 @@ export default {
'node.gek_init_hint': 'Aún no hay clave de grupo. Ejecute GEK init desde la línea de comandos para configurarla.',
'node.gek_public_hint': 'La rotación de clave no está disponible para los grupos públicos.',
'node.gek_rotate': 'Rotar clave de grupo',
- 'node.gek_rotate_confirm': '¿Rotar la clave de grupo? Los miembros conectados recibirán la nueva clave automáticamente. El contenido ya descargado no se ve afectado.',
'node.gek_rotated': 'Clave de grupo rotada.',
'node.roster': 'Registro',
'node.roster_load': 'Cargar registro',
@@ -1072,6 +1071,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Regístrate en TMDB para generar tu propia clave de API.',
'settings_app.tmdb_token_link': 'Obtener una clave',
'settings_node.roots_offline_hint': 'Sin conexión con el nodo: los cambios pasan por el nodo local y se aplican en su próxima recarga.',
+ 'settings_node.roots_local_only_hint': 'Añadir una carpeta y cambiar lectura-escritura o extraíble se hace en la máquina del nodo: en la aplicación de escritorio o con meshbay-node root.',
'settings_node.directories_title': 'Directorios de apps',
'settings_node.directories_hint': 'Carpetas compartidas, y cuál de ellas usan las apps de Vídeos, Música y Fotos como su(s) propio(s) punto(s) de entrada.',
@@ -1186,4 +1186,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'Aceptar',
'dialog.cancel': 'Cancelar',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Denunciar",
+ 'report.title': "Denunciar este archivo",
+ 'report.hint': "Un administrador de este hub lo revisará.",
+ 'report.reason_illegal': "Contenido ilegal",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Infracción de derechos de autor",
+ 'report.reason_other': "Otro",
+ 'report.detail_placeholder': "Detalles (opcional)",
+ 'report.send': "Enviar denuncia",
+ 'report.sent': "Gracias. Su denuncia ha quedado registrada.",
+ 'admin.tab_reports': "Denuncias",
+ 'admin.no_reports': "Nada espera una decisión",
+ 'admin.col_reporters': "Denunciantes",
+ 'admin.btn_dismiss': "Descartar",
+ 'admin.report_block_confirm': "¿Bloquear este archivo? Todos los nodos que alojan un grupo público dejarán de servirlo allí.",
+ 'admin.reports_heading': "Denuncias de contenido",
+ 'admin.reports_hint': "Quién puede denunciar un archivo en un grupo público, con qué frecuencia y qué ocurre cuando suficientes miembros lo han hecho.",
+ 'admin.reports_min_account_age_hours': "Antigüedad mínima de la cuenta (horas)",
+ 'admin.reports_daily_per_account': "Denuncias por cuenta y día",
+ 'admin.reports_review_threshold': "Miembros antes de la revisión",
+ 'admin.reports_auto_block': "Bloquear sin revisión (1 = sí, 0 = no)",
+ 'admin.reports_save': "Guardar ajustes de denuncias",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Renombrado: «{name}» no es un nombre válido en todos los sistemas",
+ 'transfers.renamed_n': "Nombres cambiados para ser válidos en todos los sistemas: {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Invitaciones",
+ 'home.invitation_hint': "Alguien le ha añadido a estos grupos. Acepte solo los que espera: un grupo al que se une ve su dirección cuando lo abre.",
+ 'home.invited_by': "invitado por {name}",
+ 'home.accept': "Aceptar",
+ 'home.decline': "Rechazar",
+ 'members.invited': "invitado",
+ 'hosts.title': "Anfitriones",
+ 'hosts.hint': "Sus propios nodes sirven este grupo sin preguntar. Otro node lo sirve solo cuando usted lo aprueba aquí; un node que lo pide aparece abajo.",
+ 'hosts.none': "Ningún otro node ha pedido alojar este grupo.",
+ 'hosts.from': "Un node de {name}",
+ 'hosts.status_pending': "esperando su respuesta",
+ 'hosts.status_approved': "aprobado",
+ 'hosts.status_refused': "rechazado",
+ 'hosts.approve': "Aprobar",
+ 'hosts.refuse': "Rechazar",
+ 'hosts.online': "en línea",
+
+ 'group.bundle_format_retired': 'Este node guarda su identidad en un formato que esta versión ya no lee. Pida a su operador que ejecute «meshbay-node member unpin» para su cuenta y le envíe un nuevo código de invitación.',
+
+ 'settings.browser_access': 'Acceso desde el navegador',
+ 'settings.browser_access_on_hint': 'Un navegador puede abrir sus grupos con su frase de contraseña: esta aplicación deja su identidad en cada node, sellada de modo que solo su frase de contraseña, junto con su cuenta del hub, pueda abrirla.',
+ 'settings.browser_access_off_hint': 'Sus identidades se quedan en este dispositivo. No se deja nada de ellas en ningún node, y un navegador no puede abrir sus grupos solo con su frase de contraseña. Un navegador que apruebe desde esta aplicación recibe identidades propias.',
+ 'settings.browser_access_turn_on': 'Permitir navegadores',
+ 'settings.browser_access_turn_off': 'Guardar las identidades solo en este dispositivo',
+ 'settings.browser_access_next_open': 'Se aplica a cada grupo la próxima vez que se abra.',
+ 'settings.browser_access_off_in_browser': 'El acceso desde el navegador está desactivado para esta cuenta. Se activa en la aplicación de escritorio de MeshBay, que también puede aprobar este navegador por sí mismo.',
+ 'group.browser_access_off': 'El acceso desde el navegador está desactivado para esta cuenta. Actívelo en la aplicación de escritorio de MeshBay (Perfil) o apruebe este navegador desde ella.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'El node de este ordenador está configurado para {current}. ¿Configurarlo para {next} en su lugar? Dejará de servir los grupos que aloja para {current}.',
+ 'native.browser_access_confirm': '¿Permitir el acceso desde un navegador? La aplicación dejará su identidad en cada node que use, sellada de modo que solo su frase de contraseña, junto con su cuenta del hub, pueda abrirla.',
+ 'native.declined': 'Cancelado: no se ha cambiado nada.',
};
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 ae278d9..2e823cd 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js
@@ -91,7 +91,7 @@ export default {
'login.invalid': "Nom d'utilisateur ou phrase secrète incorrect.",
'login.locked': "Trop de phrases secrètes erronées pour ce compte. Réessayez dans {minutes} min, ou réinitialisez votre phrase secrète.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'L’Internet tel qu’il aurait dû être.',
+ 'welcome.title': 'Le réseau qui ne dépend que de vous.',
'welcome.lead': 'Vos photos, votre musique, vos vidéos et vos conversations restent chez vous, sur votre propre ordinateur. MeshBay vous permet d’en profiter de partout, et de les partager avec les personnes de votre choix.',
'welcome.app_chat': 'Messagerie',
'welcome.app_photos': 'Photos',
@@ -885,6 +885,8 @@ export default {
// Group
'group.retry': 'Réessayer',
+ 'lazy.load_failed': 'Cette partie de l\'interface n\'a pas pu être chargée. Le hub a peut-être été mis à jour depuis l\'ouverture de cette page.',
+ 'lazy.reload': 'Recharger la page',
// Sidebar
'sidebar.node': 'Node',
@@ -907,7 +909,7 @@ export default {
'node.service_restarting': 'Redémarrage…',
'node.service_mode_hint': 'Fonctionne comme service en arrière-plan — démarre au boot, avant l\'ouverture de session.',
'node.startup_mode_label': 'Démarrer automatiquement :',
- 'node.startup_mode_off': 'Désactivé (démarrage manuel)',
+ 'node.startup_mode_off': 'Uniquement quand MeshBay est ouvert',
'node.startup_mode_signin': 'À l\'ouverture de session',
'node.startup_mode_service': 'Comme service en arrière-plan (démarre au boot)',
'node.startup_mode_updating': 'Changement de mode — vérifiez une invite d\'administrateur…',
@@ -957,8 +959,6 @@ export default {
'node.root_no_signing_key': 'Aucune clé de signature disponible — appairez d\'abord cet appareil avec le nœud',
'node.root_no_route': 'Aucune route vers le nœud — connectez-vous à lui, ou utilisez l\'application sur la machine qui l\'héberge',
'node.root_remove_last': 'Un groupe a besoin d\'au moins un répertoire',
- 'node.root_path_hint': 'Le chemin tel que le nœud le voit, sur la machine qui héberge ce groupe.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Chemin',
'node.root_added': 'Répertoire ajouté.',
'node.root_remove_confirm': 'Retirer « {name} » de ce groupe ?',
@@ -981,7 +981,6 @@ export default {
'node.gek_init_hint': 'Aucune clé de groupe pour l\'instant. Lancez GEK init depuis la ligne de commande pour en créer une.',
'node.gek_public_hint': 'La rotation de clé n\'est pas disponible pour les groupes publics.',
'node.gek_rotate': 'Rotation de la clé de groupe',
- 'node.gek_rotate_confirm': 'Effectuer la rotation de la clé de groupe ? Les membres connectés recevront la nouvelle clé automatiquement. Le contenu déjà téléchargé n\'est pas affecté.',
'node.gek_rotated': 'Clé de groupe renouvelée.',
'node.roster': 'Registre',
'node.roster_load': 'Charger le registre',
@@ -1090,6 +1089,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Créez un compte TMDB pour générer votre propre clé d\'API.',
'settings_app.tmdb_token_link': 'Obtenir une clé',
'settings_node.roots_offline_hint': 'Non connecté au nœud — les changements passent par le nœud local et prennent effet à son prochain rechargement.',
+ 'settings_node.roots_local_only_hint': 'L\'ajout d\'un dossier et le passage en lecture-écriture ou amovible se font sur la machine du nœud — dans l\'application de bureau, ou avec meshbay-node root.',
'settings_node.directories_title': 'Répertoires des applications',
'settings_node.directories_hint': 'Quel(s) dossier(s) partagés les applications Vidéos, Musique et Photos utilisent comme leur(s) propre(s) point(s) d\'entrée.',
@@ -1201,4 +1201,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'Annuler',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Signaler",
+ 'report.title': "Signaler ce fichier",
+ 'report.hint': "Un administrateur de ce hub l’examinera.",
+ 'report.reason_illegal': "Contenu illégal",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Atteinte au droit d’auteur",
+ 'report.reason_other': "Autre",
+ 'report.detail_placeholder': "Précisions (facultatif)",
+ 'report.send': "Envoyer le signalement",
+ 'report.sent': "Merci. Votre signalement a été enregistré.",
+ 'admin.tab_reports': "Signalements",
+ 'admin.no_reports': "Rien n’attend de décision",
+ 'admin.col_reporters': "Signalements reçus",
+ 'admin.btn_dismiss': "Écarter",
+ 'admin.report_block_confirm': "Bloquer ce fichier ? Chaque nœud qui héberge un groupe public cessera de le servir.",
+ 'admin.reports_heading': "Signalement de contenu",
+ 'admin.reports_hint': "Qui peut signaler un fichier dans un groupe public, à quelle fréquence, et ce qui se passe quand assez de membres l’ont fait.",
+ 'admin.reports_min_account_age_hours': "Âge minimal du compte (heures)",
+ 'admin.reports_daily_per_account': "Signalements par compte et par jour",
+ 'admin.reports_review_threshold': "Membres avant examen",
+ 'admin.reports_auto_block': "Bloquer sans examen (1 = oui, 0 = non)",
+ 'admin.reports_save': "Enregistrer les réglages de signalement",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Renommé : « {name} » n’est pas un nom valide sur tous les systèmes",
+ 'transfers.renamed_n': "Noms modifiés pour être valides sur tous les systèmes : {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Invitations",
+ 'home.invitation_hint': "Quelqu'un vous a ajouté à ces groupes. N'acceptez que ceux que vous attendez : un groupe que vous rejoignez voit votre adresse quand vous l'ouvrez.",
+ 'home.invited_by': "invité par {name}",
+ 'home.accept': "Accepter",
+ 'home.decline': "Refuser",
+ 'members.invited': "invité",
+ 'hosts.title': "Hôtes",
+ 'hosts.hint': "Vos propres nodes servent ce groupe sans rien demander. Un autre node ne le sert qu'une fois approuvé ici ; un node qui le demande apparaît ci-dessous.",
+ 'hosts.none': "Aucun autre node n'a demandé à héberger ce groupe.",
+ 'hosts.from': "Un node de {name}",
+ 'hosts.status_pending': "en attente de votre réponse",
+ 'hosts.status_approved': "approuvé",
+ 'hosts.status_refused': "refusé",
+ 'hosts.approve': "Approuver",
+ 'hosts.refuse': "Refuser",
+ 'hosts.online': "en ligne",
+
+ 'group.bundle_format_retired': 'Ce node détient votre identité dans un format que cette version ne lit plus. Demandez à son opérateur d\'exécuter « meshbay-node member unpin » pour votre compte et de vous envoyer un nouveau code d\'invitation.',
+
+ 'settings.browser_access': 'Accès depuis un navigateur',
+ 'settings.browser_access_on_hint': 'Un navigateur peut ouvrir vos groupes avec votre phrase secrète : cette application dépose votre identité sur chaque node, scellée de sorte que seule votre phrase secrète, avec votre compte sur le hub, puisse l\'ouvrir.',
+ 'settings.browser_access_off_hint': 'Vos identités restent sur cet appareil. Rien d\'elles n\'est déposé sur aucun node, et un navigateur ne peut pas ouvrir vos groupes avec votre seule phrase secrète. Un navigateur que vous approuvez depuis cette application reçoit ses propres identités.',
+ 'settings.browser_access_turn_on': 'Autoriser les navigateurs',
+ 'settings.browser_access_turn_off': 'Garder les identités sur cet appareil seulement',
+ 'settings.browser_access_next_open': 'Appliqué à chaque groupe la prochaine fois qu\'il s\'ouvre.',
+ 'settings.browser_access_off_in_browser': 'L\'accès depuis un navigateur est désactivé pour ce compte. Il s\'active dans l\'application de bureau MeshBay, qui peut aussi approuver ce navigateur pour lui-même.',
+ 'group.browser_access_off': 'L\'accès depuis un navigateur est désactivé pour ce compte. Activez-le dans l\'application de bureau MeshBay (Profil), ou approuvez ce navigateur depuis celle-ci.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'Le node de cet ordinateur est configuré pour {current}. Le configurer pour {next} à la place ? Il cessera de servir les groupes qu\'il héberge pour {current}.',
+ 'native.browser_access_confirm': 'Autoriser la connexion depuis un navigateur ? L\'application déposera votre identité sur chaque node que vous utilisez, scellée de sorte que seule votre phrase secrète, avec votre compte sur le hub, puisse l\'ouvrir.',
+ 'native.declined': 'Annulé — rien n\'a été modifié.',
};
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 f0fb0d1..84879e8 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js
@@ -92,7 +92,7 @@ export default {
'login.invalid': "Nome utente o passphrase errati.",
'login.locked': "Troppe passphrase errate per questo account. Riprovi tra {minutes} min oppure reimposti la passphrase.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'Internet come doveva essere.',
+ 'welcome.title': 'La rete che dipende solo da te.',
'welcome.lead': 'Le sue foto, la sua musica, i suoi video e le sue conversazioni restano a casa, sul suo computer. MeshBay le permette di goderseli ovunque e di condividerli con le persone che sceglie.',
'welcome.app_chat': 'Chat',
'welcome.app_photos': 'Foto',
@@ -884,6 +884,8 @@ export default {
// Group misc
'group.retry': 'Riprova',
+ 'lazy.load_failed': 'Impossibile caricare questa parte dell\'interfaccia. L\'hub potrebbe essere stato aggiornato da quando questa pagina è stata aperta.',
+ 'lazy.reload': 'Ricarica la pagina',
// Sidebar
'sidebar.node': 'Node',
@@ -906,7 +908,7 @@ export default {
'node.service_restarting': 'Riavvio…',
'node.service_mode_hint': 'In esecuzione come servizio in background — si avvia all\'avvio del sistema, prima dell\'accesso.',
'node.startup_mode_label': 'Avvia automaticamente:',
- 'node.startup_mode_off': 'Disattivato (avvio manuale)',
+ 'node.startup_mode_off': 'Solo mentre MeshBay è aperto',
'node.startup_mode_signin': 'All\'accesso',
'node.startup_mode_service': 'Come servizio in background (si avvia all\'avvio del sistema)',
'node.startup_mode_updating': 'Cambio modalità — controlli se compare una richiesta di amministratore…',
@@ -956,8 +958,6 @@ export default {
'node.root_no_signing_key': 'Nessuna chiave di firma disponibile: associa prima questo dispositivo al nodo',
'node.root_no_route': 'Nessuna via verso il nodo: connettiti a esso oppure usa l\'applicazione sulla macchina che lo ospita',
'node.root_remove_last': 'Un gruppo ha bisogno di almeno una directory',
- 'node.root_path_hint': 'Il percorso come lo vede il nodo, sulla macchina che ospita questo gruppo.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Percorso',
'node.directory': 'Directory',
'node.root_added': 'Directory aggiunta.',
@@ -977,7 +977,6 @@ export default {
'node.gek_init_hint': 'Nessuna chiave di gruppo ancora. Esegua GEK init dalla riga di comando per configurarla.',
'node.gek_public_hint': 'La rotazione delle chiavi non è disponibile per i gruppi pubblici.',
'node.gek_rotate': 'Ruota chiave di gruppo',
- 'node.gek_rotate_confirm': 'Ruotare la chiave di gruppo? I membri connessi riceveranno la nuova chiave automaticamente. I contenuti già scaricati non saranno interessati.',
'node.gek_rotated': 'Chiave di gruppo ruotata.',
'node.roster': 'Roster',
'node.roster_load': 'Carica roster',
@@ -1086,6 +1085,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Registrati su TMDB per generare la tua chiave API.',
'settings_app.tmdb_token_link': 'Ottieni una chiave',
'settings_node.roots_offline_hint': 'Non connesso al nodo: le modifiche passano dal nodo locale e hanno effetto al successivo ricaricamento.',
+ 'settings_node.roots_local_only_hint': 'L\'aggiunta di una cartella e il passaggio a lettura-scrittura o rimovibile si fanno sulla macchina del nodo: nell\'applicazione desktop o con meshbay-node root.',
'settings_node.directories_title': 'Directory delle app',
'settings_node.directories_hint': 'Cartelle condivise, e quale di esse le app Video, Musica e Foto usano come proprio/i punto/i di ingresso.',
@@ -1200,4 +1200,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'Annulla',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Segnala",
+ 'report.title': "Segnala questo file",
+ 'report.hint': "Un amministratore di questo hub lo esaminerà.",
+ 'report.reason_illegal': "Contenuto illegale",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Violazione del diritto d’autore",
+ 'report.reason_other': "Altro",
+ 'report.detail_placeholder': "Dettagli (facoltativo)",
+ 'report.send': "Invia segnalazione",
+ 'report.sent': "Grazie. La tua segnalazione è stata registrata.",
+ 'admin.tab_reports': "Segnalazioni",
+ 'admin.no_reports': "Nulla attende una decisione",
+ 'admin.col_reporters': "Segnalanti",
+ 'admin.btn_dismiss': "Archivia",
+ 'admin.report_block_confirm': "Bloccare questo file? Ogni nodo che ospita un gruppo pubblico smetterà di servirlo lì.",
+ 'admin.reports_heading': "Segnalazioni di contenuti",
+ 'admin.reports_hint': "Chi può segnalare un file in un gruppo pubblico, quanto spesso e cosa succede quando abbastanza membri lo hanno fatto.",
+ 'admin.reports_min_account_age_hours': "Età minima dell’account (ore)",
+ 'admin.reports_daily_per_account': "Segnalazioni per account al giorno",
+ 'admin.reports_review_threshold': "Membri prima dell’esame",
+ 'admin.reports_auto_block': "Blocca senza esame (1 = sì, 0 = no)",
+ 'admin.reports_save': "Salva impostazioni segnalazioni",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Rinominato: «{name}» non è un nome valido su tutti i sistemi",
+ 'transfers.renamed_n': "Nomi modificati per essere validi su tutti i sistemi: {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Inviti",
+ 'home.invitation_hint': "Qualcuno ti ha aggiunto a questi gruppi. Accetta solo quelli che ti aspetti: un gruppo a cui ti unisci vede il tuo indirizzo quando lo apri.",
+ 'home.invited_by': "invitato da {name}",
+ 'home.accept': "Accetta",
+ 'home.decline': "Rifiuta",
+ 'members.invited': "invitato",
+ 'hosts.title': "Host",
+ 'hosts.hint': "I tuoi node servono questo gruppo senza chiedere. Un altro node lo serve solo dopo che lo approvi qui; un node che lo chiede compare qui sotto.",
+ 'hosts.none': "Nessun altro node ha chiesto di ospitare questo gruppo.",
+ 'hosts.from': "Un node di {name}",
+ 'hosts.status_pending': "in attesa della tua risposta",
+ 'hosts.status_approved': "approvato",
+ 'hosts.status_refused': "rifiutato",
+ 'hosts.approve': "Approva",
+ 'hosts.refuse': "Rifiuta",
+ 'hosts.online': "online",
+
+ 'group.bundle_format_retired': 'Questo node conserva la tua identità in un formato che questa versione non legge più. Chiedi al suo operatore di eseguire «meshbay-node member unpin» per il tuo account e di inviarti un nuovo codice di invito.',
+
+ 'settings.browser_access': 'Accesso dal browser',
+ 'settings.browser_access_on_hint': 'Un browser può aprire i tuoi gruppi con la tua passphrase: questa applicazione lascia la tua identità su ogni node, sigillata in modo che solo la tua passphrase, insieme al tuo account sull\'hub, possa aprirla.',
+ 'settings.browser_access_off_hint': 'Le tue identità restano su questo dispositivo. Nulla di esse viene lasciato su alcun node, e un browser non può aprire i tuoi gruppi con la sola passphrase. Un browser che approvi da questa applicazione riceve identità proprie.',
+ 'settings.browser_access_turn_on': 'Consenti i browser',
+ 'settings.browser_access_turn_off': 'Tieni le identità solo su questo dispositivo',
+ 'settings.browser_access_next_open': 'Applicato a ogni gruppo la prossima volta che si apre.',
+ 'settings.browser_access_off_in_browser': 'L\'accesso dal browser è disattivato per questo account. Si attiva nell\'applicazione desktop di MeshBay, che può anche approvare questo browser per sé.',
+ 'group.browser_access_off': 'L\'accesso dal browser è disattivato per questo account. Attivalo nell\'applicazione desktop di MeshBay (Profilo) o approva questo browser da lì.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'Il node di questo computer è configurato per {current}. Configurarlo invece per {next}? Smetterà di servire i gruppi che ospita per {current}.',
+ 'native.browser_access_confirm': 'Consentire l\'accesso da un browser? L\'applicazione lascerà la tua identità su ogni node che usi, sigillata in modo che solo la tua passphrase, insieme al tuo account sull\'hub, possa aprirla.',
+ 'native.declined': 'Annullato: non è stato modificato nulla.',
};
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 560332d..9167efe 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
@@ -92,7 +92,7 @@ export default {
'login.invalid': "ユーザー名またはパスフレーズが正しくありません。",
'login.locked': "このアカウントでパスフレーズの誤りが多すぎます。{minutes} 分後にもう一度お試しいただくか、パスフレーズをリセットしてください。",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': '本来あるべき姿のインターネット。',
+ 'welcome.title': 'あなただけが支えるネットワーク。',
'welcome.lead': '写真、音楽、動画、会話は、ご自宅の自分のパソコンに置いたまま。MeshBay なら、どこからでも楽しめて、選んだ相手と共有できます。',
'welcome.app_chat': 'チャット',
'welcome.app_photos': '写真',
@@ -872,6 +872,8 @@ export default {
// Group
'group.retry': '再試行',
+ 'lazy.load_failed': 'インターフェースのこの部分を読み込めませんでした。このページを開いた後に hub が更新された可能性があります。',
+ 'lazy.reload': 'ページを再読み込み',
// Sidebar
'sidebar.node': 'Node',
@@ -894,7 +896,7 @@ export default {
'node.service_restarting': '再起動中…',
'node.service_mode_hint': 'バックグラウンドサービスとして実行中 — サインインより前、起動時に開始します。',
'node.startup_mode_label': '自動的に開始:',
- 'node.startup_mode_off': 'オフ(手動で開始)',
+ 'node.startup_mode_off': 'MeshBay が開いている間のみ',
'node.startup_mode_signin': 'サインイン時',
'node.startup_mode_service': 'バックグラウンドサービスとして(起動時に開始)',
'node.startup_mode_updating': 'モードを切り替え中 — 管理者の確認ダイアログをご確認ください…',
@@ -942,8 +944,6 @@ export default {
'node.root_no_signing_key': '署名鍵がありません — 先にこの端末をノードとペアリングしてください',
'node.root_no_route': 'ノードへの経路がありません — 接続するか、ノードを動かしているマシンでアプリを使ってください',
'node.root_remove_last': 'グループには少なくとも 1 つのディレクトリが必要です',
- 'node.root_path_hint': 'このグループをホストしているマシン上で、ノードから見たパスです。',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'パス',
'node.directory': 'ディレクトリ',
'node.root_added': 'ディレクトリを追加しました。',
@@ -963,7 +963,6 @@ export default {
'node.gek_init_hint': 'グループ鍵が未設定です。CLI から GEK init を実行して設定してください。',
'node.gek_public_hint': '公開グループでは鍵のローテーションは利用できません。',
'node.gek_rotate': 'グループ鍵をローテーション',
- 'node.gek_rotate_confirm': 'グループ鍵をローテーションしますか?接続中のメンバーは新しい鍵を自動的に受け取ります。ダウンロード済みのコンテンツには影響しません。',
'node.gek_rotated': 'グループ鍵をローテーションしました。',
'node.roster': '名簿',
'node.roster_load': '名簿を読み込む',
@@ -1070,6 +1069,7 @@ export default {
'settings_app.tmdb_token_prompt': 'TMDB に登録して、自分の API キーを発行してください。',
'settings_app.tmdb_token_link': 'キーを取得',
'settings_node.roots_offline_hint': 'ノードに接続していません — 変更はローカルノード経由で行われ、次回の再読み込みで反映されます。',
+ 'settings_node.roots_local_only_hint': 'ディレクトリの追加と、読み書き・リムーバブルの切り替えは、ノードが動いているマシンで行います — デスクトップアプリ、または meshbay-node root で。',
'settings_node.directories_title': 'アプリのディレクトリ',
'settings_node.directories_hint': '共有フォルダと、動画・音楽・写真の各アプリがそれぞれの起点として使用するフォルダです。',
@@ -1184,4 +1184,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'キャンセル',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "報告",
+ 'report.title': "このファイルを報告",
+ 'report.hint': "このハブの管理者が確認します。",
+ 'report.reason_illegal': "違法なコンテンツ",
+ 'report.reason_spam': "スパム",
+ 'report.reason_copyright': "著作権侵害",
+ 'report.reason_other': "その他",
+ 'report.detail_placeholder': "詳細(任意)",
+ 'report.send': "報告を送信",
+ 'report.sent': "ありがとうございます。報告を受け付けました。",
+ 'admin.tab_reports': "報告",
+ 'admin.no_reports': "判断待ちの項目はありません",
+ 'admin.col_reporters': "報告者数",
+ 'admin.btn_dismiss': "却下",
+ 'admin.report_block_confirm': "このファイルをブロックしますか?公開グループをホストするすべてのノードが、そこでの提供を停止します。",
+ 'admin.reports_heading': "コンテンツの報告",
+ 'admin.reports_hint': "公開グループのファイルを誰が、どのくらいの頻度で報告できるか、そして十分な数のメンバーが報告したときに何が起こるか。",
+ 'admin.reports_min_account_age_hours': "アカウントの最低経過時間(時間)",
+ 'admin.reports_daily_per_account': "1アカウントあたり1日の報告数",
+ 'admin.reports_review_threshold': "確認までのメンバー数",
+ 'admin.reports_auto_block': "確認せずにブロック(1 = はい、0 = いいえ)",
+ 'admin.reports_save': "報告の設定を保存",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "名前を変更しました:「{name}」はすべてのシステムで有効な名前ではありません",
+ 'transfers.renamed_n': "すべてのシステムで有効になるよう変更した名前:{n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "招待",
+ 'home.invitation_hint': "誰かがあなたをこれらのグループに追加しました。心当たりのあるものだけを承諾してください。参加したグループは、開いたときにあなたのアドレスを知ることができます。",
+ 'home.invited_by': "{name} からの招待",
+ 'home.accept': "承諾",
+ 'home.decline': "辞退",
+ 'members.invited': "招待中",
+ 'hosts.title': "ホスト",
+ 'hosts.hint': "あなた自身の node は確認なしでこのグループを提供します。他の node は、ここで承認した後にのみ提供します。申請した node は下に表示されます。",
+ 'hosts.none': "このグループのホストを申請した node は他にありません。",
+ 'hosts.from': "{name} の node",
+ 'hosts.status_pending': "あなたの返答待ち",
+ 'hosts.status_approved': "承認済み",
+ 'hosts.status_refused': "拒否済み",
+ 'hosts.approve': "承認",
+ 'hosts.refuse': "拒否",
+ 'hosts.online': "オンライン",
+
+ 'group.bundle_format_retired': 'この node は、このバージョンでは読めなくなった形式であなたの ID を保持しています。運用者に、あなたのアカウントに対して「meshbay-node member unpin」を実行し、新しい招待コードを送るよう依頼してください。',
+
+ 'settings.browser_access': 'ブラウザーからのアクセス',
+ 'settings.browser_access_on_hint': 'ブラウザーはパスフレーズであなたのグループを開けます。このアプリは各 node にあなたの ID を残し、パスフレーズと hub のアカウントの両方がそろった場合にのみ開けるよう封印します。',
+ 'settings.browser_access_off_hint': 'あなたの ID はこのデバイスにとどまります。どの node にも何も残らず、ブラウザーはパスフレーズだけではグループを開けません。このアプリから承認したブラウザーには、専用の ID が作られます。',
+ 'settings.browser_access_turn_on': 'ブラウザーを許可',
+ 'settings.browser_access_turn_off': 'ID をこのデバイスだけに保持',
+ 'settings.browser_access_next_open': '各グループを次に開いたときに適用されます。',
+ 'settings.browser_access_off_in_browser': 'このアカウントではブラウザーからのアクセスがオフです。MeshBay デスクトップアプリでオンにできます。アプリからこのブラウザーだけを承認することもできます。',
+ 'group.browser_access_off': 'このアカウントではブラウザーからのアクセスがオフです。MeshBay デスクトップアプリ(プロフィール)でオンにするか、アプリからこのブラウザーを承認してください。',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'このコンピューターの node は {current} 用に設定されています。代わりに {next} 用に設定しますか?{current} のためにホストしているグループは提供されなくなります。',
+ 'native.browser_access_confirm': 'ブラウザーからのサインインを許可しますか?アプリは、利用中のすべての node にあなたの ID を残します。これは、パスフレーズと hub のアカウントの両方がそろった場合にのみ開けるよう封印されます。',
+ 'native.declined': 'キャンセルしました。何も変更されていません。',
};
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 adb94c6..4845c03 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js
@@ -92,7 +92,7 @@ export default {
'login.invalid': "Onjuiste gebruikersnaam of wachtwoordzin.",
'login.locked': "Te veel onjuiste wachtwoordzinnen voor dit account. Probeer het over {minutes} min opnieuw of stel uw wachtwoordzin opnieuw in.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'Het internet zoals het bedoeld was.',
+ 'welcome.title': 'Het netwerk dat alleen van jou afhangt.',
'welcome.lead': 'Uw foto’s, muziek, video’s en gesprekken blijven thuis, op uw eigen computer. Met MeshBay geniet u er overal van en deelt u ze met wie u maar wilt.',
'welcome.app_chat': 'Chat',
'welcome.app_photos': 'Foto’s',
@@ -886,6 +886,8 @@ export default {
// Group
'group.retry': 'Opnieuw proberen',
+ 'lazy.load_failed': 'Dit deel van de interface kon niet worden geladen. De hub is mogelijk bijgewerkt sinds deze pagina werd geopend.',
+ 'lazy.reload': 'Pagina opnieuw laden',
// Sidebar
'sidebar.node': 'Node',
@@ -908,7 +910,7 @@ export default {
'node.service_restarting': 'Herstarten…',
'node.service_mode_hint': 'Actief als achtergrondservice — start bij het opstarten, vóór het aanmelden.',
'node.startup_mode_label': 'Automatisch starten:',
- 'node.startup_mode_off': 'Uit (handmatig starten)',
+ 'node.startup_mode_off': 'Alleen zolang MeshBay open is',
'node.startup_mode_signin': 'Bij aanmelden',
'node.startup_mode_service': 'Als achtergrondservice (start bij het opstarten)',
'node.startup_mode_updating': 'Modus wijzigen — let op een beheerdersprompt…',
@@ -958,8 +960,6 @@ export default {
'node.root_no_signing_key': 'Geen ondertekeningssleutel beschikbaar — koppel dit apparaat eerst aan de node',
'node.root_no_route': 'Geen route naar de node — maak verbinding, of gebruik de app op de machine die hem host',
'node.root_remove_last': 'Een groep heeft minstens één map nodig',
- 'node.root_path_hint': 'Het pad zoals de node het ziet, op de machine die deze groep host.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Pad',
'node.directory': 'Map',
'node.root_added': 'Map toegevoegd.',
@@ -979,7 +979,6 @@ export default {
'node.gek_init_hint': 'Nog geen groepssleutel. Voer GEK init uit via de CLI om er een in te stellen.',
'node.gek_public_hint': 'Sleutelrotatie is niet beschikbaar voor openbare groepen.',
'node.gek_rotate': 'Groepssleutel roteren',
- 'node.gek_rotate_confirm': 'De groepssleutel roteren? Verbonden leden ontvangen de nieuwe sleutel automatisch. Reeds gedownloade inhoud wordt niet beïnvloed.',
'node.gek_rotated': 'Groepssleutel geroteerd.',
'node.roster': 'Ledenlijst',
'node.roster_load': 'Ledenlijst laden',
@@ -1088,6 +1087,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Meld u aan bij TMDB om uw eigen API-sleutel te maken.',
'settings_app.tmdb_token_link': 'Sleutel ophalen',
'settings_node.roots_offline_hint': 'Niet verbonden met de node — wijzigingen gaan via de lokale node en worden bij de volgende herlaadbeurt actief.',
+ 'settings_node.roots_local_only_hint': 'Een map toevoegen en lezen-schrijven of verwisselbaar omzetten gebeurt op de machine van de node — in de desktopapplicatie of met meshbay-node root.',
'settings_node.directories_title': 'App-mappen',
'settings_node.directories_hint': 'Gedeelde mappen, en welke daarvan de Video\'s-, Muziek- en Foto\'s-apps als eigen startpunt(en) gebruiken.',
@@ -1202,4 +1202,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'Annuleren',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Melden",
+ 'report.title': "Dit bestand melden",
+ 'report.hint': "Een beheerder van deze hub bekijkt het.",
+ 'report.reason_illegal': "Illegale inhoud",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Inbreuk op auteursrecht",
+ 'report.reason_other': "Overig",
+ 'report.detail_placeholder': "Details (optioneel)",
+ 'report.send': "Melding versturen",
+ 'report.sent': "Dank u. Uw melding is vastgelegd.",
+ 'admin.tab_reports': "Meldingen",
+ 'admin.no_reports': "Niets wacht op een beslissing",
+ 'admin.col_reporters': "Melders",
+ 'admin.btn_dismiss': "Afwijzen",
+ 'admin.report_block_confirm': "Dit bestand blokkeren? Elke node met een openbare groep stopt met het daar aanbieden.",
+ 'admin.reports_heading': "Inhoudsmeldingen",
+ 'admin.reports_hint': "Wie een bestand in een openbare groep mag melden, hoe vaak, en wat er gebeurt als genoeg leden dat hebben gedaan.",
+ 'admin.reports_min_account_age_hours': "Minimale leeftijd van het account (uren)",
+ 'admin.reports_daily_per_account': "Meldingen per account per dag",
+ 'admin.reports_review_threshold': "Leden vóór beoordeling",
+ 'admin.reports_auto_block': "Blokkeren zonder beoordeling (1 = ja, 0 = nee)",
+ 'admin.reports_save': "Meldingsinstellingen opslaan",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Hernoemd: ‘{name}’ is niet op elk systeem een geldige naam",
+ 'transfers.renamed_n': "Namen aangepast zodat ze op elk systeem geldig zijn: {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Uitnodigingen",
+ 'home.invitation_hint': "Iemand heeft u aan deze groepen toegevoegd. Accepteer alleen de groepen die u verwacht: een groep waar u lid van wordt, ziet uw adres wanneer u hem opent.",
+ 'home.invited_by': "uitgenodigd door {name}",
+ 'home.accept': "Accepteren",
+ 'home.decline': "Weigeren",
+ 'members.invited': "uitgenodigd",
+ 'hosts.title': "Hosts",
+ 'hosts.hint': "Uw eigen nodes bedienen deze groep zonder te vragen. Een andere node doet dat pas nadat u hem hier goedkeurt; een node die erom vraagt, staat hieronder.",
+ 'hosts.none': "Geen andere node heeft gevraagd deze groep te hosten.",
+ 'hosts.from': "Een node van {name}",
+ 'hosts.status_pending': "wacht op uw antwoord",
+ 'hosts.status_approved': "goedgekeurd",
+ 'hosts.status_refused': "geweigerd",
+ 'hosts.approve': "Goedkeuren",
+ 'hosts.refuse': "Weigeren",
+ 'hosts.online': "online",
+
+ 'group.bundle_format_retired': 'Deze node bewaart je identiteit in een formaat dat deze versie niet meer leest. Vraag de beheerder om "meshbay-node member unpin" voor je account uit te voeren en je een nieuwe uitnodigingscode te sturen.',
+
+ 'settings.browser_access': 'Browsertoegang',
+ 'settings.browser_access_on_hint': 'Een browser kan je groepen openen met je wachtzin: deze toepassing laat je identiteit achter op elke node, zo verzegeld dat alleen je wachtzin samen met je hub-account haar kan openen.',
+ 'settings.browser_access_off_hint': 'Je identiteiten blijven op dit apparaat. Er blijft niets van achter op een node, en een browser kan je groepen niet openen met alleen je wachtzin. Een browser die je vanuit deze toepassing goedkeurt, krijgt eigen identiteiten.',
+ 'settings.browser_access_turn_on': 'Browsers toestaan',
+ 'settings.browser_access_turn_off': 'Identiteiten alleen op dit apparaat houden',
+ 'settings.browser_access_next_open': 'Wordt toegepast op elke groep zodra die weer opent.',
+ 'settings.browser_access_off_in_browser': 'Browsertoegang staat uit voor dit account. Die wordt aangezet in de MeshBay-desktoptoepassing, die deze browser ook voor zichzelf kan goedkeuren.',
+ 'group.browser_access_off': 'Browsertoegang staat uit voor dit account. Zet die aan in de MeshBay-desktoptoepassing (Profiel), of keur deze browser daar goed.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'De node op deze computer is ingesteld voor {current}. In plaats daarvan instellen voor {next}? Hij stopt dan met het aanbieden van de groepen die hij voor {current} host.',
+ 'native.browser_access_confirm': 'Aanmelden vanuit een browser toestaan? De toepassing laat je identiteit achter op elke node die je gebruikt, zo verzegeld dat alleen je wachtzin samen met je hub-account haar kan openen.',
+ 'native.declined': 'Geannuleerd — er is niets gewijzigd.',
};
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 fb5a4ed..e3f21d3 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js
@@ -95,7 +95,7 @@ export default {
'login.invalid': "Nieprawidłowa nazwa użytkownika lub hasło-fraza.",
'login.locked': "Zbyt wiele błędnych haseł-fraz dla tego konta. Spróbuj ponownie za {minutes} min lub zresetuj hasło-frazę.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'Internet taki, jaki miał być.',
+ 'welcome.title': 'Sieć, która zależy tylko od Ciebie.',
'welcome.lead': 'Twoje zdjęcia, muzyka, filmy i rozmowy zostają w domu, na Twoim własnym komputerze. MeshBay pozwala korzystać z nich z dowolnego miejsca i dzielić się nimi z wybranymi osobami.',
'welcome.app_chat': 'Czat',
'welcome.app_photos': 'Zdjęcia',
@@ -904,6 +904,8 @@ export default {
// Group (supplementary)
'group.retry': 'Ponów',
+ 'lazy.load_failed': 'Nie udało się wczytać tej części interfejsu. Hub mógł zostać zaktualizowany od czasu otwarcia tej strony.',
+ 'lazy.reload': 'Wczytaj stronę ponownie',
// Sidebar (supplementary)
'sidebar.node': 'Node',
@@ -926,7 +928,7 @@ export default {
'node.service_restarting': 'Ponowne uruchamianie…',
'node.service_mode_hint': 'Działa jako usługa w tle — uruchamia się przy starcie systemu, przed zalogowaniem.',
'node.startup_mode_label': 'Uruchamiaj automatycznie:',
- 'node.startup_mode_off': 'Wyłączone (uruchamianie ręczne)',
+ 'node.startup_mode_off': 'Tylko gdy MeshBay jest otwarty',
'node.startup_mode_signin': 'Przy logowaniu',
'node.startup_mode_service': 'Jako usługa w tle (uruchamia się przy starcie systemu)',
'node.startup_mode_updating': 'Zmiana trybu — proszę sprawdzić, czy pojawiło się okno uprawnień administratora…',
@@ -980,8 +982,6 @@ export default {
'node.root_no_signing_key': 'Brak klucza podpisu — najpierw sparuj to urządzenie z węzłem',
'node.root_no_route': 'Brak połączenia z węzłem — połącz się z nim albo użyj aplikacji na komputerze, który go hostuje',
'node.root_remove_last': 'Grupa wymaga co najmniej jednego katalogu',
- 'node.root_path_hint': 'Ścieżka widziana przez węzeł, na komputerze hostującym tę grupę.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Ścieżka',
'node.directory': 'Katalog',
'node.root_added': 'Katalog dodany.',
@@ -1001,7 +1001,6 @@ export default {
'node.gek_init_hint': 'Nie ma jeszcze klucza grupy. Uruchom GEK init z wiersza poleceń, aby go skonfigurować.',
'node.gek_public_hint': 'Rotacja klucza nie jest dostępna dla grup publicznych.',
'node.gek_rotate': 'Zmień klucz grupy',
- 'node.gek_rotate_confirm': 'Zmienić klucz grupy? Połączeni członkowie otrzymają nowy klucz automatycznie. Wcześniej pobrane treści pozostaną bez zmian.',
'node.gek_rotated': 'Klucz grupy zmieniony.',
'node.roster': 'Rejestr',
'node.roster_load': 'Wczytaj rejestr',
@@ -1114,6 +1113,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Zarejestruj się w TMDB, aby wygenerować własny klucz API.',
'settings_app.tmdb_token_link': 'Pobierz klucz',
'settings_node.roots_offline_hint': 'Brak połączenia z węzłem — zmiany przechodzą przez węzeł lokalny i zaczną działać po jego następnym przeładowaniu.',
+ 'settings_node.roots_local_only_hint': 'Dodanie katalogu oraz przełączenie odczytu-zapisu lub nośnika wymiennego odbywa się na komputerze węzła — w aplikacji desktopowej lub poleceniem meshbay-node root.',
'settings_node.directories_title': 'Katalogi aplikacji',
'settings_node.directories_hint': 'Katalogi udostępnione oraz to, który z nich aplikacje Wideo, Muzyka i Zdjęcia traktują jako własny punkt (punkty) wejścia.',
@@ -1228,4 +1228,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'Anuluj',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Zgłoś",
+ 'report.title': "Zgłoś ten plik",
+ 'report.hint': "Administrator tego huba go sprawdzi.",
+ 'report.reason_illegal': "Treść nielegalna",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Naruszenie praw autorskich",
+ 'report.reason_other': "Inne",
+ 'report.detail_placeholder': "Szczegóły (opcjonalnie)",
+ 'report.send': "Wyślij zgłoszenie",
+ 'report.sent': "Dziękujemy. Zgłoszenie zostało zapisane.",
+ 'admin.tab_reports': "Zgłoszenia",
+ 'admin.no_reports': "Nic nie czeka na decyzję",
+ 'admin.col_reporters': "Zgłaszający",
+ 'admin.btn_dismiss': "Odrzuć",
+ 'admin.report_block_confirm': "Zablokować ten plik? Każdy węzeł hostujący grupę publiczną przestanie go tam udostępniać.",
+ 'admin.reports_heading': "Zgłoszenia treści",
+ 'admin.reports_hint': "Kto może zgłosić plik w grupie publicznej, jak często i co się dzieje, gdy zrobi to wystarczająco wielu członków.",
+ 'admin.reports_min_account_age_hours': "Minimalny wiek konta (godziny)",
+ 'admin.reports_daily_per_account': "Zgłoszenia na konto dziennie",
+ 'admin.reports_review_threshold': "Członkowie przed oceną",
+ 'admin.reports_auto_block': "Blokuj bez oceny (1 = tak, 0 = nie)",
+ 'admin.reports_save': "Zapisz ustawienia zgłoszeń",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Zmieniono nazwę: „{name}” nie jest prawidłową nazwą w każdym systemie",
+ 'transfers.renamed_n': "Nazwy zmienione, by były prawidłowe w każdym systemie: {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Zaproszenia",
+ 'home.invitation_hint': "Ktoś dodał Cię do tych grup. Akceptuj tylko te, których się spodziewasz: grupa, do której dołączysz, widzi Twój adres, gdy ją otwierasz.",
+ 'home.invited_by': "zaprasza {name}",
+ 'home.accept': "Akceptuj",
+ 'home.decline': "Odrzuć",
+ 'members.invited': "zaproszony",
+ 'hosts.title': "Hosty",
+ 'hosts.hint': "Twoje własne node'y obsługują tę grupę bez pytania. Inny node robi to dopiero po Twojej akceptacji tutaj; node, który o to prosi, jest widoczny poniżej.",
+ 'hosts.none': "Żaden inny node nie prosił o hostowanie tej grupy.",
+ 'hosts.from': "Node użytkownika {name}",
+ 'hosts.status_pending': "czeka na Twoją odpowiedź",
+ 'hosts.status_approved': "zaakceptowany",
+ 'hosts.status_refused': "odrzucony",
+ 'hosts.approve': "Akceptuj",
+ 'hosts.refuse': "Odrzuć",
+ 'hosts.online': "online",
+
+ 'group.bundle_format_retired': 'Ten node przechowuje Twoją tożsamość w formacie, którego ta wersja już nie odczytuje. Poproś jego operatora o uruchomienie „meshbay-node member unpin" dla Twojego konta i przesłanie nowego kodu zaproszenia.',
+
+ 'settings.browser_access': 'Dostęp z przeglądarki',
+ 'settings.browser_access_on_hint': 'Przeglądarka może otworzyć Twoje grupy Twoim hasłem: ta aplikacja zostawia Twoją tożsamość na każdym node, zapieczętowaną tak, by otworzyć ją mogło tylko Twoje hasło wraz z kontem na hubie.',
+ 'settings.browser_access_off_hint': 'Twoje tożsamości zostają na tym urządzeniu. Nic z nich nie trafia na żaden node, a przeglądarka nie otworzy Twoich grup samym hasłem. Przeglądarka zatwierdzona z tej aplikacji otrzymuje własne tożsamości.',
+ 'settings.browser_access_turn_on': 'Zezwól przeglądarkom',
+ 'settings.browser_access_turn_off': 'Trzymaj tożsamości tylko na tym urządzeniu',
+ 'settings.browser_access_next_open': 'Zostanie zastosowane w każdej grupie przy jej następnym otwarciu.',
+ 'settings.browser_access_off_in_browser': 'Dostęp z przeglądarki jest wyłączony dla tego konta. Włącza się go w aplikacji desktopowej MeshBay, która może też zatwierdzić tę przeglądarkę dla niej samej.',
+ 'group.browser_access_off': 'Dostęp z przeglądarki jest wyłączony dla tego konta. Włącz go w aplikacji desktopowej MeshBay (Profil) albo zatwierdź tę przeglądarkę w tej aplikacji.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'Node na tym komputerze jest skonfigurowany dla {current}. Skonfigurować go zamiast tego dla {next}? Przestanie obsługiwać grupy, które hostuje dla {current}.',
+ 'native.browser_access_confirm': 'Zezwolić na logowanie z przeglądarki? Aplikacja pozostawi Twoją tożsamość na każdym używanym node, zapieczętowaną tak, by otworzyć ją mogło tylko Twoje hasło wraz z kontem na hubie.',
+ 'native.declined': 'Anulowano — nic nie zostało zmienione.',
};
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 7bd11f6..00510c6 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
@@ -93,7 +93,7 @@ export default {
'login.invalid': "Nome de usuário ou frase secreta incorretos.",
'login.locked': "Muitas frases secretas incorretas para esta conta. Tente novamente em {minutes} min ou redefina sua frase secreta.",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': 'A internet como deveria ser.',
+ 'welcome.title': 'A rede que só depende de você.',
'welcome.lead': 'Suas fotos, músicas, vídeos e conversas ficam em casa, no seu próprio computador. O MeshBay permite que você aproveite tudo de qualquer lugar e compartilhe com as pessoas que escolher.',
'welcome.app_chat': 'Chat',
'welcome.app_photos': 'Fotos',
@@ -883,6 +883,8 @@ export default {
// Group misc
'group.retry': 'Tentar novamente',
+ 'lazy.load_failed': 'Não foi possível carregar esta parte da interface. O hub pode ter sido atualizado desde que esta página foi aberta.',
+ 'lazy.reload': 'Recarregar a página',
// Sidebar
'sidebar.node': 'Node',
@@ -905,7 +907,7 @@ export default {
'node.service_restarting': 'Reiniciando…',
'node.service_mode_hint': 'Em execução como serviço em segundo plano — inicia na inicialização, antes do login.',
'node.startup_mode_label': 'Iniciar automaticamente:',
- 'node.startup_mode_off': 'Desativado (iniciar manualmente)',
+ 'node.startup_mode_off': 'Somente enquanto o MeshBay estiver aberto',
'node.startup_mode_signin': 'Ao entrar na sessão',
'node.startup_mode_service': 'Como serviço em segundo plano (inicia na inicialização)',
'node.startup_mode_updating': 'Alternando modo — verifique se aparece um aviso de administrador…',
@@ -949,8 +951,6 @@ export default {
'node.root_no_signing_key': 'Nenhuma chave de assinatura disponível — pareie este dispositivo com o nó primeiro',
'node.root_no_route': 'Sem rota até o nó — conecte-se a ele ou use o aplicativo na máquina que o hospeda',
'node.root_remove_last': 'Um grupo precisa de pelo menos um diretório',
- 'node.root_path_hint': 'O caminho como o nó o vê, na máquina que hospeda este grupo.',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': 'Caminho',
'node.directory': 'Diretório',
'node.root_added': 'Diretório adicionado.',
@@ -970,7 +970,6 @@ export default {
'node.gek_init_hint': 'Ainda não há chave de grupo. Execute GEK init na CLI para configurá-la.',
'node.gek_public_hint': 'A rotação de chave não está disponível para grupos públicos.',
'node.gek_rotate': 'Rotacionar chave do grupo',
- 'node.gek_rotate_confirm': 'Rotacionar a chave do grupo? Os membros conectados receberão a nova chave automaticamente. O conteúdo já baixado não é afetado.',
'node.gek_rotated': 'Chave do grupo rotacionada.',
'node.roster': 'Cadastro',
'node.roster_load': 'Carregar cadastro',
@@ -1073,6 +1072,7 @@ export default {
'settings_app.tmdb_token_prompt': 'Cadastre-se no TMDB para gerar sua própria chave de API.',
'settings_app.tmdb_token_link': 'Obter uma chave',
'settings_node.roots_offline_hint': 'Sem conexão com o nó — as alterações passam pelo nó local e entram em vigor no próximo recarregamento.',
+ 'settings_node.roots_local_only_hint': 'Adicionar uma pasta e alternar leitura-gravação ou removível são feitos na máquina do nó — no aplicativo de desktop ou com meshbay-node root.',
'settings_node.directories_title': 'Diretórios de apps',
'settings_node.directories_hint': 'Pastas compartilhadas, e qual delas os apps Vídeos, Música e Fotos tratam como seu(s) próprio(s) ponto(s) de entrada.',
@@ -1187,4 +1187,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': 'OK',
'dialog.cancel': 'Cancelar',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "Denunciar",
+ 'report.title': "Denunciar este arquivo",
+ 'report.hint': "Um administrador deste hub vai analisá-lo.",
+ 'report.reason_illegal': "Conteúdo ilegal",
+ 'report.reason_spam': "Spam",
+ 'report.reason_copyright': "Violação de direitos autorais",
+ 'report.reason_other': "Outro",
+ 'report.detail_placeholder': "Detalhes (opcional)",
+ 'report.send': "Enviar denúncia",
+ 'report.sent': "Obrigado. Sua denúncia foi registrada.",
+ 'admin.tab_reports': "Denúncias",
+ 'admin.no_reports': "Nada aguarda decisão",
+ 'admin.col_reporters': "Denunciantes",
+ 'admin.btn_dismiss': "Descartar",
+ 'admin.report_block_confirm': "Bloquear este arquivo? Todos os nós que hospedam um grupo público deixarão de servi-lo ali.",
+ 'admin.reports_heading': "Denúncias de conteúdo",
+ 'admin.reports_hint': "Quem pode denunciar um arquivo em um grupo público, com que frequência e o que acontece quando membros suficientes o fizeram.",
+ 'admin.reports_min_account_age_hours': "Idade mínima da conta (horas)",
+ 'admin.reports_daily_per_account': "Denúncias por conta por dia",
+ 'admin.reports_review_threshold': "Membros antes da análise",
+ 'admin.reports_auto_block': "Bloquear sem análise (1 = sim, 0 = não)",
+ 'admin.reports_save': "Salvar configurações de denúncias",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "Renomeado: “{name}” não é um nome válido em todos os sistemas",
+ 'transfers.renamed_n': "Nomes alterados para serem válidos em todos os sistemas: {n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "Convites",
+ 'home.invitation_hint': "Alguém adicionou você a estes grupos. Aceite apenas os que espera: um grupo em que você entra vê o seu endereço quando você o abre.",
+ 'home.invited_by': "convidado por {name}",
+ 'home.accept': "Aceitar",
+ 'home.decline': "Recusar",
+ 'members.invited': "convidado",
+ 'hosts.title': "Hosts",
+ 'hosts.hint': "Seus próprios nodes servem este grupo sem perguntar. Outro node só o serve depois que você o aprova aqui; um node que pede aparece abaixo.",
+ 'hosts.none': "Nenhum outro node pediu para hospedar este grupo.",
+ 'hosts.from': "Um node de {name}",
+ 'hosts.status_pending': "aguardando sua resposta",
+ 'hosts.status_approved': "aprovado",
+ 'hosts.status_refused': "recusado",
+ 'hosts.approve': "Aprovar",
+ 'hosts.refuse': "Recusar",
+ 'hosts.online': "online",
+
+ 'group.bundle_format_retired': 'Este node guarda sua identidade em um formato que esta versão não lê mais. Peça ao operador que execute "meshbay-node member unpin" para sua conta e envie um novo código de convite.',
+
+ 'settings.browser_access': 'Acesso pelo navegador',
+ 'settings.browser_access_on_hint': 'Um navegador pode abrir seus grupos com sua frase secreta: este aplicativo deixa sua identidade em cada node, selada de forma que apenas sua frase secreta, junto com sua conta no hub, possa abri-la.',
+ 'settings.browser_access_off_hint': 'Suas identidades ficam neste dispositivo. Nada delas é deixado em nenhum node, e um navegador não consegue abrir seus grupos só com sua frase secreta. Um navegador que você aprovar por este aplicativo recebe identidades próprias.',
+ 'settings.browser_access_turn_on': 'Permitir navegadores',
+ 'settings.browser_access_turn_off': 'Manter as identidades só neste dispositivo',
+ 'settings.browser_access_next_open': 'Aplicado a cada grupo na próxima vez que ele abrir.',
+ 'settings.browser_access_off_in_browser': 'O acesso pelo navegador está desativado para esta conta. Ele é ativado no aplicativo de desktop do MeshBay, que também pode aprovar este navegador para si.',
+ 'group.browser_access_off': 'O acesso pelo navegador está desativado para esta conta. Ative-o no aplicativo de desktop do MeshBay (Perfil) ou aprove este navegador por ele.',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': 'O node deste computador está configurado para {current}. Configurá-lo para {next} em vez disso? Ele deixará de servir os grupos que hospeda para {current}.',
+ 'native.browser_access_confirm': 'Permitir o acesso por um navegador? O aplicativo deixará sua identidade em cada node que você usa, selada de forma que apenas sua frase secreta, junto com sua conta no hub, possa abri-la.',
+ 'native.declined': 'Cancelado — nada foi alterado.',
};
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 5509332..51a6572 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
@@ -92,7 +92,7 @@ export default {
'login.invalid': "用户名或密码短语错误。",
'login.locked': "此账户输错密码短语的次数过多。请在 {minutes} 分钟后重试,或重置密码短语。",
// Sign-in page: what MeshBay is (browser only)
- 'welcome.title': '互联网本该有的样子。',
+ 'welcome.title': '只依靠你自己的网络。',
'welcome.lead': '您的照片、音乐、视频和聊天都留在家里,保存在您自己的电脑上。MeshBay 让您随时随地享用它们,并与您选择的人分享。',
'welcome.app_chat': '聊天',
'welcome.app_photos': '照片',
@@ -860,6 +860,8 @@ export default {
// Group
'group.retry': '重试',
+ 'lazy.load_failed': '无法加载界面的这一部分。自打开此页面以来,hub 可能已更新。',
+ 'lazy.reload': '重新加载页面',
// Sidebar
'sidebar.node': 'Node',
@@ -882,7 +884,7 @@ export default {
'node.service_restarting': '正在重启…',
'node.service_mode_hint': '以后台服务方式运行 — 在开机时启动,早于登录。',
'node.startup_mode_label': '自动启动:',
- 'node.startup_mode_off': '关闭(手动启动)',
+ 'node.startup_mode_off': '仅在 MeshBay 打开时',
'node.startup_mode_signin': '登录时',
'node.startup_mode_service': '作为后台服务(开机时启动)',
'node.startup_mode_updating': '正在切换模式 — 请留意管理员权限提示…',
@@ -930,8 +932,6 @@ export default {
'node.root_no_signing_key': '没有可用的签名密钥 — 请先将本设备与节点配对',
'node.root_no_route': '无法连接到节点 — 请先连接,或在运行该节点的机器上使用应用',
'node.root_remove_last': '每个群组至少需要一个目录',
- 'node.root_path_hint': '托管该群组的机器上,节点所看到的路径。',
- 'node.root_path_placeholder': '/home/user/Media',
'node.root_path': '路径',
'node.directory': '目录',
'node.root_added': '目录已添加。',
@@ -951,7 +951,6 @@ export default {
'node.gek_init_hint': '尚无群组密钥。请从命令行运行 GEK 初始化来设置。',
'node.gek_public_hint': '公开群组不支持密钥轮换。',
'node.gek_rotate': '轮换群组密钥',
- 'node.gek_rotate_confirm': '轮换群组密钥?已连接的成员将自动收到新密钥。已下载的内容不受影响。',
'node.gek_rotated': '群组密钥已轮换。',
'node.roster': '花名册',
'node.roster_load': '加载花名册',
@@ -1058,6 +1057,7 @@ export default {
'settings_app.tmdb_token_prompt': '在 TMDB 注册以生成你自己的 API 密钥。',
'settings_app.tmdb_token_link': '获取密钥',
'settings_node.roots_offline_hint': '未连接到节点 — 变更将通过本地节点进行,并在其下次重新加载时生效。',
+ 'settings_node.roots_local_only_hint': '添加目录以及切换读写或可移除,只能在运行节点的机器上进行 — 在桌面应用中,或使用 meshbay-node root。',
'settings_node.directories_title': '应用目录',
'settings_node.directories_hint': '共享文件夹,以及“视频”“音乐”和“照片”应用各自使用哪个(些)作为入口。',
@@ -1173,4 +1173,65 @@ export default {
// In-page confirm/alert (ask.js)
'dialog.ok': '确定',
'dialog.cancel': '取消',
+
+ // Content reports (report.js, admin-page.js)
+ 'report.action': "举报",
+ 'report.title': "举报此文件",
+ 'report.hint': "本中心的管理员会进行审核。",
+ 'report.reason_illegal': "违法内容",
+ 'report.reason_spam': "垃圾信息",
+ 'report.reason_copyright': "侵犯版权",
+ 'report.reason_other': "其他",
+ 'report.detail_placeholder': "详细说明(可选)",
+ 'report.send': "提交举报",
+ 'report.sent': "谢谢,您的举报已记录。",
+ 'admin.tab_reports': "举报",
+ 'admin.no_reports': "暂无待处理事项",
+ 'admin.col_reporters': "举报人数",
+ 'admin.btn_dismiss': "驳回",
+ 'admin.report_block_confirm': "要屏蔽此文件吗?所有托管公开群组的节点都将停止在那里提供它。",
+ 'admin.reports_heading': "内容举报",
+ 'admin.reports_hint': "谁可以举报公开群组中的文件、举报频率,以及足够多的成员举报后会发生什么。",
+ 'admin.reports_min_account_age_hours': "账户最短注册时长(小时)",
+ 'admin.reports_daily_per_account': "每个账户每天的举报数",
+ 'admin.reports_review_threshold': "进入审核所需人数",
+ 'admin.reports_auto_block': "无需审核直接屏蔽(1 = 是,0 = 否)",
+ 'admin.reports_save': "保存举报设置",
+
+ // Names made writable everywhere when saved (portable-name.js)
+ 'transfers.renamed': "已重命名:“{name}”并非在所有系统上都是有效的名称",
+ 'transfers.renamed_n': "为在所有系统上有效而修改的名称:{n}",
+
+ // Invitations waiting for an answer, and the nodes a group owner approves
+ 'home.invitations': "邀请",
+ 'home.invitation_hint': "有人把你加入了这些群组。只接受你预期的邀请:你加入的群组在你打开它时可以看到你的地址。",
+ 'home.invited_by': "由 {name} 邀请",
+ 'home.accept': "接受",
+ 'home.decline': "拒绝",
+ 'members.invited': "已邀请",
+ 'hosts.title': "主机",
+ 'hosts.hint': "你自己的 node 无需询问即可提供此群组。其他 node 只有在你于此处批准后才会提供;提出申请的 node 列在下方。",
+ 'hosts.none': "没有其他 node 申请托管此群组。",
+ 'hosts.from': "{name} 的 node",
+ 'hosts.status_pending': "等待你的答复",
+ 'hosts.status_approved': "已批准",
+ 'hosts.status_refused': "已拒绝",
+ 'hosts.approve': "批准",
+ 'hosts.refuse': "拒绝",
+ 'hosts.online': "在线",
+
+ 'group.bundle_format_retired': '此 node 以本版本不再读取的格式保存您的身份。请其运营者为您的账户运行“meshbay-node member unpin”,并向您发送新的邀请码。',
+
+ 'settings.browser_access': '浏览器访问',
+ 'settings.browser_access_on_hint': '浏览器可以用您的密码短语打开您的群组:本应用会在每个 node 上留下您的身份,并加以封存,只有您的密码短语配合您的 hub 账户才能打开。',
+ 'settings.browser_access_off_hint': '您的身份保留在本设备上。任何 node 上都不会留下它们的任何内容,浏览器仅凭密码短语无法打开您的群组。您从本应用批准的浏览器会获得自己的身份。',
+ 'settings.browser_access_turn_on': '允许浏览器',
+ 'settings.browser_access_turn_off': '仅在本设备上保留身份',
+ 'settings.browser_access_next_open': '将在每个群组下次打开时生效。',
+ 'settings.browser_access_off_in_browser': '此账户已关闭浏览器访问。可在 MeshBay 桌面应用中开启,该应用也可以单独批准此浏览器。',
+ 'group.browser_access_off': '此账户已关闭浏览器访问。请在 MeshBay 桌面应用(个人资料)中开启,或从该应用批准此浏览器。',
+ // Worded by the desktop main process for its own dialogs (main.js).
+ 'native.node_account_confirm': '这台电脑上的 node 已为 {current} 设置。改为为 {next} 设置吗?它将不再为 {current} 提供其托管的群组。',
+ 'native.browser_access_confirm': '允许从浏览器登录吗?应用会在您使用的每个 node 上留下您的身份,并加以封存,只有您的密码短语配合您的 hub 账户才能打开。',
+ 'native.declined': '已取消,未做任何更改。',
};