Skip to content

Commit dc5de70

Browse files
authored
Merge pull request #3189 from freedomofpress/vicki/translation-prep
inbox: prepare strings for translation
2 parents f77bb0e + ae5c277 commit dc5de70

File tree

13 files changed

+170
-45
lines changed

13 files changed

+170
-45
lines changed

app/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SecureDrop App
1+
# SecureDrop Inbox
22

33
A pre-alpha re-implementation of the SecureDrop Client for Qubes, built with modern web technologies.
44

app/architecture.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# SecureDrop App Architecture
1+
# SecureDrop Inbox Architecture
22

3-
The SecureDrop App is an Electron application written in TypeScript that provides a user interface for the [SecureDrop Workstation](https://github.com/freedomofpress/securedrop-workstation/tree/main) on Qubes OS, allowing users to securely download and decrypt messages and submissions from sources and send replies. For comprehensive documentation on the entire system, see the Workstation documentation.
3+
The SecureDrop Inbox is an Electron application written in TypeScript that provides a user interface for the [SecureDrop Workstation](https://github.com/freedomofpress/securedrop-workstation/tree/main) on Qubes OS, allowing users to securely download and decrypt messages and submissions from sources and send replies. For comprehensive documentation on the entire system, see the Workstation documentation.
44

55
The core components of the application are:
66

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[Desktop Entry]
2-
Name=SecureDrop App
2+
Name=SecureDrop Inbox
33
Exec=securedrop-app
44
Icon=utilities-terminal
55
Type=Application

app/src/main/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ setUmask();
4949

5050
// Handle --version flag early, before any other initialization
5151
if (process.argv.includes("--version")) {
52-
console.log(`SecureDrop App v${app.getVersion()}`);
52+
console.log(`SecureDrop Inbox v${app.getVersion()}`);
5353
process.exit(0);
5454
}
5555

@@ -63,9 +63,9 @@ if (!gotTheLock) {
6363
dialog
6464
.showMessageBox({
6565
type: "info",
66-
title: "SecureDrop App",
66+
title: "SecureDrop Inbox",
6767
// TODO: ideally this would be localized
68-
message: "The SecureDrop App is already running.",
68+
message: "The SecureDrop Inbox is already running.",
6969
buttons: ["OK"],
7070
})
7171
.then(() => {
@@ -147,7 +147,7 @@ if (!gotTheLock) {
147147
cryptoConfig: configForCrypto,
148148
};
149149
} catch (error) {
150-
console.error("Failed to initialize SecureDrop App:", error);
150+
console.error("Failed to initialize SecureDrop Inbox:", error);
151151
process.exit(1);
152152
}
153153
}
@@ -171,7 +171,7 @@ if (!gotTheLock) {
171171
height: 900,
172172
minWidth: 1200,
173173
minHeight: 900,
174-
title: "SecureDrop App",
174+
title: "SecureDrop Inbox",
175175
icon: join(__dirname, "../renderer/resources/icon.png"),
176176
show: false,
177177
autoHideMenuBar: true,

app/src/renderer/components/FirstRunPopup.test.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ describe("FirstRunPopup Component", () => {
1717
renderWithProviders(<FirstRunPopup />);
1818

1919
await waitFor(() => {
20-
expect(screen.getByText("Welcome to SecureDrop")).toBeInTheDocument();
20+
expect(
21+
screen.getByText("Welcome to SecureDrop Inbox"),
22+
).toBeInTheDocument();
2123
});
2224

2325
expect(
@@ -37,7 +39,7 @@ describe("FirstRunPopup Component", () => {
3739

3840
await waitFor(() => {
3941
expect(
40-
screen.getByText("Welcome to the new SecureDrop App"),
42+
screen.getByText("Welcome to the new SecureDrop Inbox"),
4143
).toBeInTheDocument();
4244
});
4345

@@ -60,9 +62,11 @@ describe("FirstRunPopup Component", () => {
6062
});
6163

6264
// Modal should not be visible
63-
expect(screen.queryByText("Welcome to SecureDrop")).not.toBeInTheDocument();
6465
expect(
65-
screen.queryByText("Welcome to the new SecureDrop App"),
66+
screen.queryByText("Welcome to SecureDrop Inbox"),
67+
).not.toBeInTheDocument();
68+
expect(
69+
screen.queryByText("Welcome to the new SecureDrop Inbox"),
6670
).not.toBeInTheDocument();
6771
});
6872

@@ -75,7 +79,9 @@ describe("FirstRunPopup Component", () => {
7579
renderWithProviders(<FirstRunPopup />);
7680

7781
await waitFor(() => {
78-
expect(screen.getByText("Welcome to SecureDrop")).toBeInTheDocument();
82+
expect(
83+
screen.getByText("Welcome to SecureDrop Inbox"),
84+
).toBeInTheDocument();
7985
});
8086

8187
const okButton = screen.getByRole("button", { name: "OK" });

app/src/renderer/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html>
33
<head>
44
<meta charset="UTF-8" />
5-
<title>SecureDrop App</title>
5+
<title>SecureDrop Inbox</title>
66
</head>
77

88
<body>

app/src/renderer/locales/de.json

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
{
2+
"MainContent": {
3+
"menu": {
4+
"exportTranscript": "Transkript exportieren",
5+
"printTranscript": "Transkript drucken"
6+
}
7+
},
8+
"Sidebar": {
9+
"account": {
10+
"signIn": "Anmelden",
11+
"Quit": "Beenden"
12+
}
13+
},
14+
"SignIn": {
15+
"username": {
16+
"label": "Benutzername",
17+
"minLength": "Dieser Benutzername wird nicht funktionieren. Er sollte mindestens 3 Zeichen lang sein."
18+
},
19+
"passphrase": {
20+
"label": "Passphrase",
21+
"invalidLength": "Diese Passphrase wird nicht funktionieren. Sie sollte zwischen 14 und 128 Zeichen lang sein."
22+
},
23+
"twoFactorCode": {
24+
"label": "Zwei-Faktor-Code"
25+
},
26+
"errors": {
27+
"network": {
28+
"header": "Der SecureDrop-Server konnte nicht erreicht werden.",
29+
"body": "Bitte überprüfen Sie Ihre Internet- sowie die Tor-Verbindung und versuchen Sie es erneut."
30+
},
31+
"credentials": {
32+
"header": "Diese Anmeldedaten haben nicht funktioniert.",
33+
"body": "Bitte versuchen Sie es erneut und stellen Sie sicher, dass Sie einen neuen 2-Faktor-Code verwenden."
34+
},
35+
"generic": {
36+
"header": "Das hat nicht funktioniert.",
37+
"body": "Bitte überprüfen Sie alles und versuchen Sie es erneut."
38+
},
39+
"sessionExpired": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an."
40+
}
41+
},
42+
"Item": {
43+
"wizard": {
44+
"beCareful": "Seien Sie vorsichtig, wenn Sie mit Dateien außerhalb Ihres Workstation-Rechners arbeiten."
45+
},
46+
"exportWizard": {
47+
"exportFailed": "Export fehlgeschlagen",
48+
"noDeviceDetected": "Keine USB-Laufwerke erkannt",
49+
"multiDeviceDetected": "Zu viele USB-Laufwerke erkannt; bitte stecke ein unterstütztes Laufwerk ein.",
50+
"invalidDeviceDetected": "Das Laufwerk ist entweder nicht verschlüsselt oder es liegt ein anderer Fehler vor. Falls es ein VeraCrypt-Laufwerk ist, müssen Sie es in der sd-devices VM entsperren, bevor Sie es erneut verwenden können.",
51+
"errorUnlockLuks": "Die angegebene Passphrase hat nicht funktioniert. Bitte versuchen Sie es erneut.",
52+
"errorExportCleanup": "Die Dateien wurden erfolgreich exportiert, aber einige temporäre Dateien bleiben auf der Festplatte. Starte neu, um sie zu entfernen.",
53+
"errorUnmountVolumeBusy": "Die Dateien wurden erfolgreich exportiert, aber das USB-Laufwerk konnte nicht ausgehängt werden.",
54+
"errorMount": "Fehler bei der Einbindung des Laufwerks",
55+
"errorExport": "Fehler beim Export",
56+
"errorMissingFiles": "Dateien wurden verschoben oder fehlen und konnten nicht exportiert werden.",
57+
"deviceError": "Bei diesem Laufwerk ist ein Fehler aufgetreten. Bitte deinen Administrator um Hilfe.",
58+
"unexpectedError": "Es ist ein Fehler aufgetreten. Bitte kontaktiere den Support.",
59+
"exportSuccessWithWarning": "Export erfolgreich, aber Laufwerk wurde nicht gesperrt",
60+
"insertUSBInstructions": "Bitte lege eines der speziell für die SecureDrop Workstation bereitgestellten Exportlaufwerke ein. Wenn du ein VeraCrypt-Laufwerk verwendest, entriegele es manuell, bevor du fortfährst.",
61+
"unlock": "Passphrase für USB-Laufwerk eingeben",
62+
"passphrase": "Passphrase"
63+
},
64+
"printWizard": {
65+
"errorUnprintableType": "Dieser Dateityp kann nicht geprintet werden."
66+
}
67+
}
68+
}

app/src/renderer/locales/en.json

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
"FirstRunPopup": {
33
"ok": "OK",
44
"newUser": {
5-
"title": "Welcome to SecureDrop",
6-
"body": "Messages and documents sent to you via SecureDrop will show up here. Initial data synchronization may take several minutes.<br><br>You can press <kbd>F1</kbd> for help at any time. For further questions, consult your system administrator or reach out to SecureDrop support via Signal. Documentation and instructions for accessing support are available at workstation.securedrop.org, which can be accessed from a different computer."
5+
"title": "Welcome to SecureDrop Inbox",
6+
"body": "Messages and documents sent to you via SecureDrop will show up here. Initial data synchronization may take several minutes.<br><br>You can press <kbd>F1</kbd> for help at any time. For further questions, consult your system administrator or reach out to SecureDrop support via Signal. Documentation and instructions for accessing support are available at securedrop.org/inbox, which can be accessed from a different computer."
77
},
88
"migration": {
9-
"title": "Welcome to the new SecureDrop App",
10-
"body": "The application has been rewritten from the ground up to make it faster and to add long-requested features. Initial data synchronization may take several minutes. Any previously downloaded files will need to be re-downloaded.<br><br>If you encounter an issue or would like to use the original SecureDrop Client, you can access it for a limited time via Qubes Menu ▸ ⚙️ ▸ Other ▸ SecureDrop Client (legacy). If you need to return to the old Client, please reach out to SecureDrop support via Signal and tell us about the issues you encountered so we can address them.<br><br>You can press <kbd>Ctrl+?</kbd> for help at any time. For further questions, consult your system administrator or reach out to SecureDrop support via Signal. Documentation and instructions for accessing support are available at workstation.securedrop.org, which can be accessed from a different computer."
9+
"title": "Welcome to the new SecureDrop Inbox",
10+
"body": "The application has been rewritten from the ground up to make it faster and to add long-requested features. Initial data synchronization may take several minutes. Any previously downloaded files will need to be re-downloaded.<br><br>If you encounter an issue or would like to use the original SecureDrop Client, you can access it for a limited time via Qubes Menu ▸ ⚙️ ▸ Other ▸ SecureDrop Client (legacy). If you need to return to the old Client, please reach out to SecureDrop support via Signal and tell us about the issues you encountered so we can address them.<br><br>You can press <kbd>F1</kbd> for help at any time. For further questions, consult your system administrator or reach out to SecureDrop support via Signal. Documentation and instructions for accessing support are available at securedrop.org/inbox, which can be accessed from a different computer."
1111
}
1212
},
1313
"common": {
@@ -29,7 +29,6 @@
2929
"exportTranscript": "Export Transcript",
3030
"exportSource": "Export Transcript and Files",
3131
"printTranscript": "Print Transcript",
32-
"deleteSource": "Delete Source Account",
3332
"clickToOpen": "Click to open"
3433
},
3534
"itemEncrypted": "Message is encrypted...",
@@ -40,7 +39,8 @@
4039
"unknown": "Unknown",
4140
"pendingReplyTooltip": "The reply is pending and will be sent to the source in the next sync",
4241
"successReplyTooltip": "Reply sent successfully",
43-
"seenReplyTooltip": "Reply seen and deleted by source"
42+
"seenReplyTooltip": "Reply seen and deleted by source",
43+
"alreadyRunning": "The SecureDrop Inbox is already running"
4444
},
4545
"Sidebar": {
4646
"account": {
@@ -50,19 +50,18 @@
5050
"signedIn": "Signed in",
5151
"syncNow": "Sync now",
5252
"Help": "Help",
53-
"getHelp": "Get help",
5453
"keyboardShortcuts": "Keyboard Shortcuts",
5554
"aboutSecureDrop": "About SecureDrop",
5655
"Quit": "Quit",
5756
"aboutClose": "Close"
5857
},
5958
"helpModals": {
6059
"keyboardTitle": "Keyboard shortcuts",
61-
"aboutAppTitle": "SecureDrop Client",
60+
"aboutAppTitle": "SecureDrop Inbox",
6261
"aboutAppDesc": "Secure communications for journalists and sources",
6362
"aboutAppVersion": "Version",
6463
"aboutMoreTitle": "More Information",
65-
"aboutMoreContent": "https://securedrop.org/app",
64+
"aboutMoreContent": "https://securedrop.org/inbox",
6665
"aboutRepoTitle": "Source code",
6766
"aboutRepoContent": "https://github.com/freedomofpress/securedrop-client",
6867
"aboutLicence": "SecureDrop is open source and released under the GNU Affero General Public License v3.",
@@ -179,7 +178,7 @@
179178
},
180179
"sessionExpired": "Your session expired. Please log in again."
181180
},
182-
"version": "SecureDrop App v{{version}}"
181+
"version": "SecureDrop Inbox v{{version}}"
183182
},
184183
"Item": {
185184
"encryptedFile": "Encrypted File",
@@ -191,7 +190,6 @@
191190
"cancel": "Cancel",
192191
"filenameTooltip": "Filename available after downloading",
193192
"viewFile": "View",
194-
"exportFile": "Export file",
195193
"exportToUSB": "Export to USB",
196194
"printFile": "Print",
197195
"wizard": {

app/src/renderer/locales/es.json

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
"MainContent": {
3+
"menu": {
4+
"exportTranscript": "Exportar la transcripción",
5+
"printTranscript": "Imprimir la transcripción"
6+
}
7+
},
8+
"Sidebar": {
9+
"account": {
10+
"Quit": "Salir"
11+
}
12+
},
13+
"SignIn": {
14+
"username": {
15+
"label": "Nombre de Usuario",
16+
"minLength": "Ese nombre de usuario no funcionará. Debería tener al menos un largo de 3 caracteres."
17+
},
18+
"passphrase": {
19+
"label": "Frase de contraseña",
20+
"invalidLength": "Esa frase de contraseña no funcionará. Debería tener entre 14 y 128 caracteres de largo."
21+
},
22+
"twoFactorCode": {
23+
"label": "Código de autenticación de dos factores"
24+
},
25+
"errors": {
26+
"network": {
27+
"header": "No se pudo alcanzar al servidor SecureDrop.",
28+
"body": "Por favor comprueba tus conexiones a Internet y Tor e inténtalo de nuevo."
29+
},
30+
"credentials": {
31+
"header": "Esas credenciales no funcionaron.",
32+
"body": "Por favor inténtalo de nuevo, y asegúrate de usar un nuevo código de autenticación de dos factores."
33+
},
34+
"generic": {
35+
"header": "Eso no funcionó.",
36+
"body": "Por favor comprueba todo e inténtalo de nuevo."
37+
},
38+
"sessionExpired": "Tu sesión expiró. Por favor iníciala de nuevo."
39+
}
40+
},
41+
"Item": {
42+
"wizard": {
43+
"beCareful": "Recuerda ser cuidadoso cuando trabajes con archivos fuera de tu estación de trabajo."
44+
},
45+
"exportWizard": {
46+
"errorUnlockLuks": "La frase de contraseña ingresada no funcionó. Por favor inténtalo de nuevo.",
47+
"unlock": "Ingresar frase de contraseña para unidad USB",
48+
"passphrase": "Frase de contraseña"
49+
}
50+
}
51+
}

app/src/renderer/locales/fr.json

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"menu": {
1717
"exportTranscript": "Exporter la transcription",
1818
"printTranscript": "Imprimer la transcription",
19-
"deleteSource": "Supprimer le compte de la source",
2019
"clickToOpen": "Clicquer pour ouvrir"
2120
},
2221
"itemEncrypted": "Message chiffré...",
@@ -32,7 +31,8 @@
3231
"signOut": "Se déconnecter",
3332
"offlineMode": "Mode hors ligne",
3433
"signIn": "Se connecter",
35-
"signedIn": "Connecté"
34+
"signedIn": "Connecté",
35+
"Quit": "Fermer"
3636
},
3737
"sourcelist": {
3838
"filters": {
@@ -138,8 +138,7 @@
138138
"body": "Veuillez tout vérifier et réessayer."
139139
},
140140
"sessionExpired": "Votre session a expiré. Reconnectez-vous."
141-
},
142-
"version": "Application SecureDrop v{{version}}"
141+
}
143142
},
144143
"Item": {
145144
"encryptedFile": "Fichier Crypté",
@@ -151,7 +150,6 @@
151150
"cancel": "Annuler",
152151
"filenameTooltip": "Nom de fichier disponible après le téléchargement",
153152
"viewFile": "Voir",
154-
"exportFile": "Exporter le fichier",
155153
"exportToUSB": "Exporter vers USB",
156154
"printFile": "Imprimer",
157155
"wizard": {
@@ -175,24 +173,24 @@
175173
"readyExport": "Prêt à exporter.",
176174
"understandRisks": "Comprendre les risques avant d'exporter des fichiers",
177175
"insertUSBInstructions": "Veuillez insérer l'un des lecteurs d'exportation fournis spécifiquement pour le poste de travail SecureDrop. Si vous utilisez un lecteur VeraCrypt, déverrouillez-le manuellement avant de continuer.",
178-
"unlock": "Entrer la phrase de passe pour le lecteur USB",
176+
"unlock": "Saisir la phrase de passe de la clé USB",
179177
"passphrase": "Phrase de passe",
180178
"exportSuccess": "Exportation réussie",
181179
"exportSuccessWithWarning": "Exportation réussie, mais le lecteur n'a pas été verrouillé",
182-
"exportFailed": "Échec de l'exportation",
183-
"noDeviceDetected": "Aucun lecteur USB détecté",
184-
"multiDeviceDetected": "Trop de lecteurs USB détectés; veuillez insérer un seul lecteur pris en charge.",
180+
"exportFailed": "Échec d'exportation",
181+
"noDeviceDetected": "Aucune clé USB n'a été détectée",
182+
"multiDeviceDetected": "Trop de clés USB ont été détectées ; insérez une seule clé prise en charge.",
185183
"invalidDeviceDetected": "Soit le lecteur n'est pas chiffré, soit il y a un autre problème. S'il s'agit d'un lecteur VeraCrypt, veuillez le déverrouiller depuis la VM sd-devices, puis réessayez.",
186184
"unknownDeviceDetected": "Périphérique USB inconnu détecté.",
187-
"errorUnlockLuks": "La phrase de passe fournie n'a pas fonctionné. Veuillez réessayer.",
185+
"errorUnlockLuks": "La phrase de passe est erronée. Réessayez.",
188186
"errorUnlockGeneric": "Échec du déverrouillage du lecteur. Veuillez réessayer.",
189-
"errorExportCleanup": "Les fichiers ont été exportés avec succès, mais certains fichiers temporaires restent sur le disque. Redémarrez pour les supprimer.",
190-
"errorUnmountVolumeBusy": "Les fichiers ont été exportés avec succès, mais le lecteur USB n'a pas pu être démonté.",
191-
"errorMount": "Erreur lors du montage du lecteur",
192-
"errorExport": "Erreur lors de l'exportation",
193-
"errorMissingFiles": "Les fichiers ont été déplacés ou sont manquants et n'ont pas pu être exportés.",
194-
"deviceError": "Erreur rencontrée avec ce lecteur. Consultez votre administrateur pour obtenir de l'aide.",
195-
"unexpectedError": "Erreur rencontrée. Veuillez contacter le support."
187+
"errorExportCleanup": "Les fichiers ont été exportés, mais certains fichiers temporaires restent sur le disque. Redémarrez l'ordinateur afin de les supprimer.",
188+
"errorUnmountVolumeBusy": "Les fichiers ont été exportés, mais la clé USB n'a pas pu être démontée.",
189+
"errorMount": "Erreur de montage du lecteur",
190+
"errorExport": "Erreur d'exportation",
191+
"errorMissingFiles": "Des fichiers ont été déplacés ou manquaient et n'ont pas pu être exportés.",
192+
"deviceError": "Erreur est survenue avec cette clé. Consultez votre administrateur pour obtenir de l'aide.",
193+
"unexpectedError": "Une erreur est survenue. Contactez l'assistance."
196194
},
197195
"printWizard": {
198196
"title": "Imprimer le fichier",

0 commit comments

Comments
 (0)