diff --git a/localizely.yml b/localizely.yml index 111ea60d4c..e4fbf8f64a 100644 --- a/localizely.yml +++ b/localizely.yml @@ -7,9 +7,13 @@ upload: locale_code: en - file: mobile/assets/i18n/de-DE.json locale_code: de + - file: mobile/assets/i18n/fr-FR.json + locale_code: fr download: files: - file: mobile/assets/i18n/en-US.json locale_code: en - file: mobile/assets/i18n/de-DE.json locale_code: de + - file: mobile/assets/i18n/fr-FR.json + locale_code: fr \ No newline at end of file diff --git a/mobile/assets/i18n/fr-FR.json b/mobile/assets/i18n/fr-FR.json new file mode 100644 index 0000000000..281eee8f3c --- /dev/null +++ b/mobile/assets/i18n/fr-FR.json @@ -0,0 +1,106 @@ +{ + "album_info_card_backup_album_excluded": "EXCLU", + "album_info_card_backup_album_included": "INCLUS", + "album_viewer_appbar_share_delete": "Supprimer l'album", + "album_viewer_appbar_share_err_delete": "Échec de la suppression de l'album", + "album_viewer_appbar_share_err_leave": "Impossible de quitter l'album", + "album_viewer_appbar_share_err_remove": "Il y a des problèmes pour retirer les éléments de l'album", + "album_viewer_appbar_share_err_title": "Échec de la modification du titre de l'album", + "album_viewer_appbar_share_leave": "Quitter l'album", + "album_viewer_appbar_share_remove": "Retirer de l'album", + "album_viewer_page_share_add_users": "Ajouter des utilisateurs", + "backup_album_selection_page_albums_device": "Albums sur l'appareil ({})", + "backup_album_selection_page_albums_tap": "Tapez pour inclure, tapez deux fois pour exclure", + "backup_album_selection_page_assets_scatter": "Les éléments peuvent être répartis sur plusieurs albums. De ce fait, les albums peuvent être inclus ou exclus pendant le processus de sauvegarde.", + "backup_album_selection_page_select_albums": "Sélectionner les albums", + "backup_album_selection_page_selection_info": "Informations sur la sélection", + "backup_album_selection_page_total_assets": "Total des éléments uniques", + "backup_all": "Tout", + "backup_controller_page_albums": "Sauvegarder les albums", + "backup_controller_page_backup": "Sauvegarder", + "backup_controller_page_backup_selected": "Sélectionné : ", + "backup_controller_page_backup_sub": "Photos et vidéos sauvegardées", + "backup_controller_page_cancel": "Annuler", + "backup_controller_page_created": "Créé le : {}", + "backup_controller_page_desc_backup": "Activez la sauvegarde pour envoyer automatiquement les nouveaux éléments sur le serveur.", + "backup_controller_page_excluded": "Exclus : ", + "backup_controller_page_failed": "Échec de l'opération ({})", + "backup_controller_page_filename": "Nom du fichier : {} [{}]", + "backup_controller_page_id": "ID : {}", + "backup_controller_page_info": "Informations de sauvegarde", + "backup_controller_page_none_selected": "Aucune sélection", + "backup_controller_page_remainder": "Restant", + "backup_controller_page_remainder_sub": "Photos et albums restants à sauvegarder à partir de la sélection", + "backup_controller_page_select": "Sélectionner", + "backup_controller_page_server_storage": "Stockage du serveur", + "backup_controller_page_start_backup": "Démarrer la sauvegarde", + "backup_controller_page_status_off": "La sauvegarde est désactivée", + "backup_controller_page_status_on": "La sauvegarde est activée", + "backup_controller_page_storage_format": "{} de {} utilisé", + "backup_controller_page_to_backup": "Albums à sauvegarder", + "backup_controller_page_total": "Total", + "backup_controller_page_total_sub": "Toutes les photos et vidéos uniques des albums sélectionnés", + "backup_controller_page_turn_off": "Désactiver la sauvegarde", + "backup_controller_page_turn_on": "Activer la sauvegarde", + "backup_controller_page_uploading_file_info": "Envoi d'informations sur le fichier", + "backup_err_only_album": "Impossible de retirer le seul album", + "backup_info_card_assets": "éléments", + "control_bottom_app_bar_delete": "Supprimer", + "create_shared_album_page_share": "Partager", + "create_shared_album_page_share_add_assets": "AJOUTER DES ÉLÉMENTS", + "create_shared_album_page_share_select_photos": "Sélectionner les photos", + "daily_title_text_date": "E, dd MMM", + "daily_title_text_date_year": "E, dd MMM, yyyy", + "date_format": "E, LLL d, y • h:mm a", + "delete_dialog_alert": "Ces éléments seront définitivement supprimés de Immich et de votre appareil.", + "delete_dialog_cancel": "Annuler", + "delete_dialog_ok": "Supprimer", + "delete_dialog_title": "Supprimer définitivement", + "exif_bottom_sheet_description": "Ajouter une description...", + "exif_bottom_sheet_details": "DÉTAILS", + "exif_bottom_sheet_location": "LOCALISATION", + "login_form_button_text": "Connexion", + "login_form_email_hint": "votreemail@email.com", + "login_form_endpoint_hint": "http://adresse-ip-serveur:port/api", + "login_form_endpoint_url": "URL du point d'accès au serveur", + "login_form_err_http": "Veuillez préciser http:// ou https://", + "login_form_err_invalid_email": "Email invalide", + "login_form_err_leading_whitespace": "Espace en début de ligne", + "login_form_err_trailing_whitespace": "Espace de fin de ligne", + "login_form_label_email": "Email", + "login_form_label_password": "Mot de passe", + "login_form_password_hint": "mot de passe", + "login_form_save_login": "Rester connecté", + "login_form_failed_login": "Erreur de connexion, vérifiez l'url du serveur, l'email et le mot de passe", + "monthly_title_text_date_format": "MMMM y", + "profile_drawer_client_server_up_to_date": "Le client et le serveur sont à jour", + "profile_drawer_sign_out": "Se déconnecter", + "search_bar_hint": "Rechercher vos photos", + "search_page_no_places": "Aucune information disponible sur la localisation", + "search_page_places": "Lieux", + "search_page_things": "Objets", + "search_result_page_new_search_hint": "Nouvelle recherche", + "select_additional_user_for_sharing_page_suggestions": "Suggestions", + "select_user_for_sharing_page_err_album": "Échec de la création de l'album", + "select_user_for_sharing_page_share_suggestions": "Suggestions", + "share_add": "Ajouter", + "share_add_photos": "Ajouter des photos", + "share_add_title": "Ajouter un titre", + "share_create_album": "Créer un album", + "share_invite": "Inviter à l'album", + "sharing_page_album": "Albums partagés", + "sharing_page_description": "Créez des albums partagés pour partager des photos et des vidéos avec les personnes de votre réseau.", + "sharing_page_empty_list": "LISTE VIDE", + "sharing_silver_appbar_create_shared_album": "Créer un album partagé", + "sharing_silver_appbar_share_partner": "Partager avec un partenaire", + "tab_controller_nav_photos": "Photos", + "tab_controller_nav_search": "Recherche", + "tab_controller_nav_sharing": "Partage", + "version_announcement_overlay_ack": "Confirmer", + "version_announcement_overlay_release_notes": "notes de mise à jour", + "version_announcement_overlay_text_1": "Bonjour, une nouvelle version de", + "version_announcement_overlay_text_2": "veuillez prendre le temps de visiter le ", + "version_announcement_overlay_text_3": " et assurez-vous que votre configuration docker-compose et .env est à jour pour éviter toute erreur de configuration, en particulier si vous utilisez WatchTower ou tout autre mécanisme qui gère la mise à jour automatique de votre application serveur.", + "version_announcement_overlay_title": "Nouvelle version serveur disponible \uD83C\uDF89" + } + \ No newline at end of file diff --git a/mobile/ios/Runner/Info.plist b/mobile/ios/Runner/Info.plist index 0c0a5984c8..a35eb7bac3 100644 --- a/mobile/ios/Runner/Info.plist +++ b/mobile/ios/Runner/Info.plist @@ -87,6 +87,7 @@ en de + fr \ No newline at end of file diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart index c14f2f39f6..4c3aa804a0 100644 --- a/mobile/lib/main.dart +++ b/mobile/lib/main.dart @@ -43,7 +43,8 @@ void main() async { // Default locale Locale('en', 'US'), // Additional locales - Locale('de', 'DE') + Locale('de', 'DE'), + Locale('fr', 'FR') ]; runApp( diff --git a/mobile/scripts/check_key_uniform.py b/mobile/scripts/check_key_uniform.py index 3140f55a12..970f491f36 100644 --- a/mobile/scripts/check_key_uniform.py +++ b/mobile/scripts/check_key_uniform.py @@ -15,5 +15,17 @@ def main(): print(f"Outdated Key! {k}") return 1 + print("CHECK FRENCH TRANSLATIONS") + with open('assets/i18n/fr-FR.json', 'r') as f: + data = json.load(f) + + for k in data.keys(): + print(k) + sp = subprocess.run(['sh', '-c', f'grep -r --include="./assets/i18n/en-US.json" "{k}"']) + + if sp.returncode != 0: + print(f"Outdated Key! {k}") + return 1 + if __name__ == '__main__': main() \ No newline at end of file