LR-BEHAV-LOCALIZE: French and Ukrainian for this round's new strings (smart-album rules, keyword list and sets, Synchronize Folder, ratings, crop angle)

The two new catalogs landed alongside PRs that added ~127 strings; the per-language
tests require them in every catalog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Thomas
2026-10-10 01:25:38 -04:00
co-authored by Claude Opus 5.5
parent 259ddcc1a8
commit 23af0a9d1c
3 changed files with 259 additions and 5 deletions
+129 -2
View File
@@ -1734,5 +1734,132 @@
"ONNX model": "Modèle ONNX",
"commercial use subject to GPL conditions": "usage commercial soumis aux conditions de la GPL",
"Camera local tone mapping": "Mappage local des tons de l’appareil",
"Apply the local tone mapping stored in the raw (Apple ProRAW), as the camera renders it": "Appliquer le mappage local des tons enregistré dans le fichier raw (Apple ProRAW), comme le rend l’appareil"
}
"Apply the local tone mapping stored in the raw (Apple ProRAW), as the camera renders it": "Appliquer le mappage local des tons enregistré dans le fichier raw (Apple ProRAW), comme le rend l’appareil",
"Decrease Rating": "Diminuer la note",
"Increase Rating": "Augmenter la note",
"Click to type a value": "Cliquez pour saisir une valeur",
"Angle": "Angle",
"Video": "Vidéo",
"Copyrighted": "Protégé par copyright",
"Public Domain": "Domaine public",
"Unknown": "Inconnu",
"Landscape (wide)": "Paysage (large)",
"Portrait (tall)": "Portrait (haut)",
"Square": "Carré",
"In Color": "En couleur",
"No Label": "Sans étiquette",
"Choose an album…": "Choisir un album…",
"No albums yet": "Aucun album pour l'instant",
"Fix the marked rules to save this album.": "Corrigez les règles signalées pour enregistrer cet album.",
"Some rules need fixing (Edit Smart Album…):": "Certaines règles sont à corriger (Modifier l'album intelligent…) :",
"isn't a field rules know": "n'est pas un champ connu des règles",
"can't be tested that way": "ne peut pas être testé ainsi",
"is yes or no": "vaut oui ou non",
"needs a number": "demande un nombre",
"needs a time like 1/250 or 2": "demande une durée comme 1/250 ou 2",
"needs a date like 2026, 2026-08 or 2026-08-14": "demande une date comme 2026, 2026-08 ou 2026-08-14",
"has the first date after the second": "a la première date après la seconde",
"needs two values": "demande deux valeurs",
"needs a number more than 0": "demande un nombre supérieur à 0",
"needs hours, days, weeks, months or years": "demande des heures, jours, semaines, mois ou années",
"isn't one of the choices": "ne fait pas partie des choix",
"needs something to look for (or use “is empty”)": "demande quelque chose à chercher (ou utilisez « est vide »)",
"needs something to look for (or use “isn't empty”)": "demande quelque chose à chercher (ou utilisez « n'est pas vide »)",
"needs text": "demande du texte",
"can't match any rating from 0 to 5": "ne peut correspondre à aucune note de 0 à 5",
"needs an album": "demande un album",
"names an album that no longer exists": "désigne un album qui n'existe plus",
"can't test a folder; choose an album in it": "ne peut pas tester un dossier ; choisissez un album qu'il contient",
"This group is empty: add a rule or remove it.": "Ce groupe est vide : ajoutez une règle ou supprimez-le.",
"needs something to look for (or use “are empty”)": "demande quelque chose à chercher (ou utilisez « sont vides »)",
"needs something to look for (or use “aren't empty”)": "demande quelque chose à chercher (ou utilisez « ne sont pas vides »)",
"Mo": "Lu",
"Tu": "Ma",
"We": "Me",
"Th": "Je",
"Fr": "Ve",
"Sa": "Sa",
"Su": "Di",
"Pick a date": "Choisir une date",
"would make this album include itself through other smart albums": "ferait que cet album s'inclue lui-même via d'autres albums intelligents",
"Search albums": "Rechercher des albums",
"No albums match": "Aucun album ne correspond",
"This is the album you're editing": "C'est l'album que vous modifiez",
"It tests this album, so testing it back would loop": "Il teste cet album : le tester en retour créerait une boucle",
"Copy Name": "Nom de la copie",
"In a Stack": "Dans une pile",
"File Extension": "Extension de fichier",
"Video Duration": "Durée de la vidéo",
"Keyword Count": "Nombre de mots-clés",
"People Count": "Nombre de personnes",
"Shutter Speed": "Vitesse d'obturation",
"Cropped": "Recadrée",
"Keywords & People": "Mots-clés et personnes",
"Description": "Description",
"Camera Info": "Infos de l'appareil",
"Develop": "Développement",
"Keyword List": "Liste des mots-clés",
"Filter Keywords": "Filtrer les mots-clés",
"No keywords yet": "Aucun mot-clé pour l'instant",
"No keywords match": "Aucun mot-clé ne correspond",
"Keyword Name": "Nom du mot-clé",
"Synonyms": "Synonymes",
"Separated by commas": "Séparés par des virgules",
"Keyword Tag Options": "Options du mot-clé",
"Include on Export": "Inclure à l'exportation",
"Export Containing Keywords": "Exporter les mots-clés parents",
"Export Synonyms": "Exporter les synonymes",
"Create Keyword Tag": "Créer un mot-clé",
"Edit Keyword Tag": "Modifier le mot-clé",
"Create": "Créer",
"No photo has it; the keywords below it go too.": "Aucune photo ne l'a ; les mots-clés qu'il contient sont aussi supprimés.",
"Edit Keyword Tag…": "Modifier le mot-clé…",
"Put New Keywords Inside This Keyword": "Placer les nouveaux mots-clés dans celui-ci",
"Purge Unused Keywords": "Purger les mots-clés inutilisés",
"Delete Keyword…": "Supprimer le mot-clé…",
"Drop here for the top level": "Déposez ici pour le niveau supérieur",
"Their photos and the keywords below them come together under one keyword.": "Leurs photos et les mots-clés qu'ils contiennent sont réunis sous un seul mot-clé.",
"Select photos to give them keywords.": "Sélectionnez des photos pour leur attribuer des mots-clés.",
"Add to All Selected Photos": "Ajouter à toutes les photos sélectionnées",
"Will Export": "Sera exporté",
"No keywords are exported": "Aucun mot-clé n'est exporté",
"& Containing": "et parents",
"Edit Set…": "Modifier le jeu…",
"Edit Keyword Set": "Modifier le jeu de mots-clés",
"Keywords (⌥1–⌥9)": "Mots-clés (⌥1–⌥9)",
"A keyword set needs a name": "Un jeu de mots-clés doit avoir un nom",
"Save as a new set": "Enregistrer comme nouveau jeu",
"Recent Keywords is built in: choose another name": "Mots-clés récents est intégré : choisissez un autre nom",
"Import Keywords…": "Importer des mots-clés…",
"Export Keywords…": "Exporter les mots-clés…",
"Import Keywords": "Importer des mots-clés",
"Export Keywords": "Exporter les mots-clés",
"Keyword Lists": "Listes de mots-clés",
"Synchronize Folder…": "Synchroniser le dossier…",
"Synchronize Folder": "Synchroniser le dossier",
"Synchronize": "Synchroniser",
"Scanning…": "Analyse…",
"Find photos added to or missing from this folder on disk, and XMP sidecars changed by other apps": "Trouver les photos ajoutées à ce dossier sur le disque ou qui en manquent, et les fichiers annexes XMP modifiés par d'autres applications",
"Bring the library up to date with this folder and the folders inside it:": "Mettre la bibliothèque à jour avec ce dossier et ses sous-dossiers :",
"Import new photos": "Importer les nouvelles photos",
"Remove missing photos from the library": "Retirer les photos manquantes de la bibliothèque",
"Read metadata updates from XMP sidecars": "Lire les métadonnées mises à jour dans les fichiers annexes XMP",
"The library is up to date with this folder.": "La bibliothèque est à jour avec ce dossier.",
"Missing photos move to Recently Deleted and can be restored; no file on disk is touched.": "Les photos manquantes vont dans Supprimées récemment et peuvent être restaurées ; aucun fichier sur le disque n'est touché.",
"Reading a sidecar replaces the photo's rating, labels, metadata and edits with what it says.": "Lire un fichier annexe remplace la note, les étiquettes, les métadonnées et les retouches de la photo par son contenu.",
"Skipped: files already in the library elsewhere": "Ignorés : fichiers déjà ailleurs dans la bibliothèque",
"Skipped: files that can't be read": "Ignorés : fichiers illisibles",
"This folder isn't there: it was moved or renamed, or its disk isn't connected.": "Ce dossier est introuvable : il a été déplacé ou renommé, ou son disque n'est pas connecté.",
"Relink photos whose file was renamed or moved": "Relier les photos dont le fichier a été renommé ou déplacé",
"A folder is already being synchronized": "Un dossier est déjà en cours de synchronisation",
"Synchronizing…": "Synchronisation…",
"Relinked": "Reliées",
"Removed": "Retirées",
"Metadata read": "Métadonnées lues",
"Failed": "Échecs",
"Stopped": "Arrêté",
"Stopped by an error (see the log)": "Arrêté par une erreur (voir le journal)",
"Not saved": "Non enregistré",
"A folder is being synchronized": "Un dossier est en cours de synchronisation",
"Wait for the import to finish": "Attendez la fin de l'importation"
}
+128 -1
View File
@@ -1928,5 +1928,132 @@
"Choose a model below (Use) to start.": "Виберіть модель нижче («Використовувати»), щоб почати.",
"Face detector": "Детектор облич",
"Detect Faces (Photo menu) needs it: a small one-time download.": "Для виявлення облич (меню «Фото») потрібне невелике одноразове завантаження.",
"Recognition models": "Моделі розпізнавання"
"Recognition models": "Моделі розпізнавання",
"Decrease Rating": "Зменшити оцінку",
"Increase Rating": "Збільшити оцінку",
"Click to type a value": "Клацніть, щоб ввести значення",
"Angle": "Кут",
"Video": "Відео",
"Copyrighted": "Захищено авторським правом",
"Public Domain": "Суспільне надбання",
"Unknown": "Невідомо",
"Landscape (wide)": "Альбомна (широка)",
"Portrait (tall)": "Портретна (висока)",
"Square": "Квадрат",
"In Color": "Кольорове",
"No Label": "Без мітки",
"Choose an album…": "Виберіть альбом…",
"No albums yet": "Альбомів ще немає",
"Fix the marked rules to save this album.": "Виправте позначені правила, щоб зберегти цей альбом.",
"Some rules need fixing (Edit Smart Album…):": "Деякі правила треба виправити (Редагувати смарт-альбом…):",
"isn't a field rules know": "не є полем, яке знають правила",
"can't be tested that way": "не можна перевірити так",
"is yes or no": "має бути так або ні",
"needs a number": "потребує числа",
"needs a time like 1/250 or 2": "потребує часу, як-от 1/250 або 2",
"needs a date like 2026, 2026-08 or 2026-08-14": "потребує дати, як-от 2026, 2026-08 або 2026-08-14",
"has the first date after the second": "має першу дату після другої",
"needs two values": "потребує двох значень",
"needs a number more than 0": "потребує числа, більшого за 0",
"needs hours, days, weeks, months or years": "потребує годин, днів, тижнів, місяців або років",
"isn't one of the choices": "не є одним із варіантів",
"needs something to look for (or use “is empty”)": "потребує того, що шукати (або використайте «порожнє»)",
"needs something to look for (or use “isn't empty”)": "потребує того, що шукати (або використайте «не порожнє»)",
"needs text": "потребує тексту",
"can't match any rating from 0 to 5": "не може збігтися з жодною оцінкою від 0 до 5",
"needs an album": "потребує альбому",
"names an album that no longer exists": "вказує на альбом, якого вже немає",
"can't test a folder; choose an album in it": "не може перевірити теку; виберіть альбом у ній",
"This group is empty: add a rule or remove it.": "Ця група порожня: додайте правило або видаліть її.",
"needs something to look for (or use “are empty”)": "потребує того, що шукати (або використайте «порожні»)",
"needs something to look for (or use “aren't empty”)": "потребує того, що шукати (або використайте «не порожні»)",
"Mo": "Пн",
"Tu": "Вт",
"We": "Ср",
"Th": "Чт",
"Fr": "Пт",
"Sa": "Сб",
"Su": "Нд",
"Pick a date": "Виберіть дату",
"would make this album include itself through other smart albums": "змусило б цей альбом включати сам себе через інші смарт-альбоми",
"Search albums": "Пошук альбомів",
"No albums match": "Немає відповідних альбомів",
"This is the album you're editing": "Це альбом, який ви редагуєте",
"It tests this album, so testing it back would loop": "Він перевіряє цей альбом, тож зворотна перевірка зациклилася б",
"Copy Name": "Назва копії",
"In a Stack": "У стосі",
"File Extension": "Розширення файлу",
"Video Duration": "Тривалість відео",
"Keyword Count": "Кількість ключових слів",
"People Count": "Кількість людей",
"Shutter Speed": "Витримка",
"Cropped": "Кадровано",
"Keywords & People": "Ключові слова та люди",
"Description": "Опис",
"Camera Info": "Дані камери",
"Develop": "Обробка",
"Keyword List": "Список ключових слів",
"Filter Keywords": "Фільтрувати ключові слова",
"No keywords yet": "Ключових слів ще немає",
"No keywords match": "Немає відповідних ключових слів",
"Keyword Name": "Назва ключового слова",
"Synonyms": "Синоніми",
"Separated by commas": "Через кому",
"Keyword Tag Options": "Параметри ключового слова",
"Include on Export": "Включати під час експорту",
"Export Containing Keywords": "Експортувати батьківські ключові слова",
"Export Synonyms": "Експортувати синоніми",
"Create Keyword Tag": "Створити ключове слово",
"Edit Keyword Tag": "Редагувати ключове слово",
"Create": "Створити",
"No photo has it; the keywords below it go too.": "Його не має жодне фото; вкладені в нього ключові слова теж зникнуть.",
"Edit Keyword Tag…": "Редагувати ключове слово…",
"Put New Keywords Inside This Keyword": "Додавати нові ключові слова в це ключове слово",
"Purge Unused Keywords": "Очистити невикористані ключові слова",
"Delete Keyword…": "Видалити ключове слово…",
"Drop here for the top level": "Перетягніть сюди для верхнього рівня",
"Their photos and the keywords below them come together under one keyword.": "Їхні фото та вкладені ключові слова об’єднуються під одним ключовим словом.",
"Select photos to give them keywords.": "Виберіть фото, щоб додати їм ключові слова.",
"Add to All Selected Photos": "Додати до всіх вибраних фото",
"Will Export": "Буде експортовано",
"No keywords are exported": "Ключові слова не експортуються",
"& Containing": "і батьківські",
"Edit Set…": "Редагувати набір…",
"Edit Keyword Set": "Редагувати набір ключових слів",
"Keywords (⌥1–⌥9)": "Ключові слова (⌥1–⌥9)",
"A keyword set needs a name": "Набір ключових слів потребує назви",
"Save as a new set": "Зберегти як новий набір",
"Recent Keywords is built in: choose another name": "«Останні ключові слова» — вбудований набір: виберіть іншу назву",
"Import Keywords…": "Імпортувати ключові слова…",
"Export Keywords…": "Експортувати ключові слова…",
"Import Keywords": "Імпортувати ключові слова",
"Export Keywords": "Експортувати ключові слова",
"Keyword Lists": "Списки ключових слів",
"Synchronize Folder…": "Синхронізувати теку…",
"Synchronize Folder": "Синхронізувати теку",
"Synchronize": "Синхронізувати",
"Scanning…": "Сканування…",
"Find photos added to or missing from this folder on disk, and XMP sidecars changed by other apps": "Знайти фото, додані до цієї теки на диску або відсутні в ній, і файли XMP, змінені іншими програмами",
"Bring the library up to date with this folder and the folders inside it:": "Оновити бібліотеку відповідно до цієї теки та вкладених тек:",
"Import new photos": "Імпортувати нові фото",
"Remove missing photos from the library": "Прибрати відсутні фото з бібліотеки",
"Read metadata updates from XMP sidecars": "Прочитати оновлені метадані з файлів XMP",
"The library is up to date with this folder.": "Бібліотека відповідає цій теці.",
"Missing photos move to Recently Deleted and can be restored; no file on disk is touched.": "Відсутні фото переходять до «Нещодавно видалених» і їх можна відновити; файли на диску не змінюються.",
"Reading a sidecar replaces the photo's rating, labels, metadata and edits with what it says.": "Читання файлу XMP замінює оцінку, мітки, метадані та обробку фото його вмістом.",
"Skipped: files already in the library elsewhere": "Пропущено: файли, які вже є в бібліотеці в іншому місці",
"Skipped: files that can't be read": "Пропущено: файли, які не вдається прочитати",
"This folder isn't there: it was moved or renamed, or its disk isn't connected.": "Цієї теки немає: її переміщено чи перейменовано, або її диск не під’єднано.",
"Relink photos whose file was renamed or moved": "Перезв’язати фото, файл яких перейменовано чи переміщено",
"A folder is already being synchronized": "Тека вже синхронізується",
"Synchronizing…": "Синхронізація…",
"Relinked": "Перезв’язано",
"Removed": "Прибрано",
"Metadata read": "Метадані прочитано",
"Failed": "Помилки",
"Stopped": "Зупинено",
"Stopped by an error (see the log)": "Зупинено через помилку (див. журнал)",
"Not saved": "Не збережено",
"A folder is being synchronized": "Тека синхронізується",
"Wait for the import to finish": "Дочекайтеся завершення імпорту"
}
+2 -2
View File
@@ -609,13 +609,13 @@ mod tests {
"Export Keywords…",
];
let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("locales");
for code in ["de", "es", "pt-br", "ru", "ja", "zh-hans", "zh-hant"] {
for code in ["de", "es", "fr", "pt-br", "ru", "uk", "ja", "zh-hans", "zh-hant"] {
let text = std::fs::read_to_string(dir.join(format!("{code}.json"))).unwrap();
let catalog: std::collections::HashMap<String, String> = serde_json::from_str(&text).unwrap();
for label in labels {
assert!(catalog.contains_key(label), "{code}: “{label}”");
}
}
assert_eq!(Locale::ALL.len(), 8, "a language added: list its file above");
assert_eq!(Locale::ALL.len(), 10, "a language added: list its file above");
}
}