Skip to content

Commit bc6fa48

Browse files
committed
fix(i18n): no-break space before punctuation in the French editor tooltips
1 parent 188ea2f commit bc6fa48

4 files changed

Lines changed: 21 additions & 12 deletions

File tree

‎src/i18n/__tests__/tooltipCopy.test.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,15 @@ describe("editor tooltip strings", () => {
220220
expect(bakedIn).toEqual([]);
221221
});
222222

223+
// French sets a no-break space before : ; ? !, so a tooltip never wraps with the mark starting
224+
// the next line ("Ajouter Caméra plein écran" / ": affiche ...").
225+
it("fr keeps punctuation with the word before it", () => {
226+
const loose = editorEntries
227+
.map(([namespace, key]) => [`${namespace}.${key}`, read("fr", namespace, key)] as const)
228+
.filter(([, text]) => / [:;?!]/.test(text));
229+
expect(loose).toEqual([]);
230+
});
231+
223232
// One term per concept: the HUD's toggle and this row are the same setting.
224233
it.each(locales)("%s calls the Record mode cursor row what the HUD calls it", (locale) => {
225234
expect(read(locale, "editor", "rec.editableCursor")).toBe(

‎src/i18n/locales/fr/editor.json‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
"microphone": "Microphone",
116116
"camera": "Caméra",
117117
"editableCursor": "Curseur éditable",
118-
"editableCursorTip": "Activé : curseur éditable, avec changement de style et zoom automatique. Désactivé : curseur système, enregistré dans la vidéo.",
118+
"editableCursorTip": "Activé : curseur éditable, avec changement de style et zoom automatique. Désactivé : curseur système, enregistré dans la vidéo.",
119119
"autoZoom": "Zoom automatique après l'enregistrement",
120120
"hideDesktopIcons": "Masquer les icônes du bureau",
121121
"hideDesktopIconsHintMac": "Retire les icônes du bureau des enregistrements d'écran. Elles restent sur votre bureau.",
@@ -158,15 +158,15 @@
158158
"regenerateAs": "Régénérer en",
159159
"auto": "Auto",
160160
"regenerate": "Régénérer",
161-
"regenerateTip": "Régénérer : transcrire à nouveau dans la langue choisie",
161+
"regenerateTip": "Régénérer : transcrire à nouveau dans la langue choisie",
162162
"transcriptEmpty": "La transcription est vide.",
163163
"notGeneratedHint": "Pas encore générée — choisissez une langue et cliquez sur régénérer.",
164164
"transcribing": "Transcription en cours",
165165
"downloadingModel": "Téléchargement du modèle vocal",
166166
"initializingModel": "Démarrage du modèle vocal",
167167
"pendingTranscription": "Transcription en attente",
168168
"transcriptionFailed": "Échec de la transcription",
169-
"cpuBackendHint": "Exécution sur le CPU : environ 2× plus lent que sur le GPU",
169+
"cpuBackendHint": "Exécution sur le CPU : environ 2× plus lent que sur le GPU",
170170
"noTranscript": "Aucune transcription",
171171
"generationFailedHint": "Échec de la génération — choisissez une langue et régénérez.",
172172
"detectedLanguage": "Langue détectée : {{language}}",
@@ -216,7 +216,7 @@
216216
"trimHiddenDuration": "{{duration}} s de média source masqués de la timeline éditée.",
217217
"restoreDeleteTrim": "Restaurer (supprimer le découpage)",
218218
"collapseInspector": "Réduire l'inspecteur",
219-
"editClipTip": "Modifier le clip : recadrage, début et fin",
219+
"editClipTip": "Modifier le clip : recadrage, début et fin",
220220
"captionsDescription": "Générer des sous-titres synchronisés aux mots à partir de la transcription et les déposer sur la timeline.",
221221
"generateCaptions": "Générer les sous-titres",
222222
"cropDescription": "Recadrer l'enregistrement — choisissez un format et zoomez sur la région à conserver.",

‎src/i18n/locales/fr/settings.json‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,11 +336,11 @@
336336
"transcript": "Transcription",
337337
"captions": "Sous-titres",
338338
"tips": {
339-
"effects": "Composition : arrière-plan, cadre, ombre et marge",
340-
"layout": "Disposition caméra : position, forme et taille de la caméra",
341-
"audio": "Audio : niveau de sortie de toute la vidéo",
342-
"cursor": "Curseur : style, taille et effets",
343-
"transcript": "Transcription : modifiez les mots pour couper la vidéo"
339+
"effects": "Composition : arrière-plan, cadre, ombre et marge",
340+
"layout": "Disposition caméra : position, forme et taille de la caméra",
341+
"audio": "Audio : niveau de sortie de toute la vidéo",
342+
"cursor": "Curseur : style, taille et effets",
343+
"transcript": "Transcription : modifiez les mots pour couper la vidéo"
344344
}
345345
},
346346
"crop": {

‎src/i18n/locales/fr/timeline.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
"buttons": {
33
"addZoom": "Ajouter un zoom à l'instant actuel",
44
"autoFocusAll": "Mise au point auto pour tous les zooms",
5-
"autoFocusAllTip": "Tous les zooms suivent le curseur. Désactivé : vous choisissez la mise au point de chaque zoom.",
5+
"autoFocusAllTip": "Tous les zooms suivent le curseur. Désactivé : vous choisissez la mise au point de chaque zoom.",
66
"clearTimeline": "Supprimer tous les zooms, coupes, vitesses, annotations et Caméra plein écran. Clips, audio et sous-titres sont conservés.",
7-
"addTrim": "Ajouter une coupe : retire une partie de la vidéo à l'instant actuel",
7+
"addTrim": "Ajouter une coupe : retire une partie de la vidéo à l'instant actuel",
88
"addAnnotation": "Ajouter du texte, une flèche, une image ou un flou à l'instant actuel",
99
"addSpeed": "Ajouter un changement de vitesse à l'instant actuel",
10-
"addCameraFullscreen": "Ajouter Caméra plein écran : affiche la caméra en plein écran à l'instant actuel"
10+
"addCameraFullscreen": "Ajouter Caméra plein écran : affiche la caméra en plein écran à l'instant actuel"
1111
},
1212
"hints": {
1313
"pressZoom": "Appuyez sur Z pour ajouter un zoom",

0 commit comments

Comments
 (0)