portée/label.
issues.label_exclusive_warning=Tout label d'une portée en conflit sera retiré lors de la modification des labels d’un ticket ou d’une demande d’ajout.
issues.label_count=%d labels
-issues.label_open_issues=%d tickets ouverts
+issues.label_open_issues=%d issues ouvertes
issues.label_edit=Éditer
issues.label_delete=Supprimer
issues.label_modify=Modifier le label
@@ -1582,7 +1582,7 @@ issues.attachment.download=`Cliquez pour télécharger « %s ».`
issues.subscribe=S’abonner
issues.unsubscribe=Se désabonner
issues.unpin_issue=Désépingler le ticket
-issues.max_pinned=Vous ne pouvez pas épingler plus de tickets
+issues.max_pinned=Vous ne pouvez pas épingler plus d'issues
issues.pin_comment=a épinglé ça %s
issues.unpin_comment=a désépinglé ça %s
issues.lock=Verrouiller la conversation
@@ -1605,7 +1605,7 @@ issues.lock.title=Verrouiller la conversation
issues.unlock.title=Déverrouiller la conversation
issues.comment_on_locked=Vous ne pouvez pas commenter un ticket verrouillé.
issues.delete=Supprimer
-issues.delete.title=Supprimer ce ticket ?
+issues.delete.title=Supprimer cette issue ?
issues.delete.text=Voulez-vous vraiment supprimer ce ticket ? (Cette opération supprimera définitivement tout le contenu. Envisagez plutôt de le fermer si vous avez l'intention de l'archiver)
issues.tracker=Minuteur
issues.start_tracking_short=Démarrer le chronomètre
@@ -1668,7 +1668,7 @@ issues.dependency.issue_remove_text=Cela supprimera la dépendance de ce ticket.
issues.dependency.pr_remove_text=Cela supprimera la dépendance de cette demande d'ajout. Continuer ?
issues.dependency.setting=Autoriser les dépendances pour les tickets et les demandes d'ajouts
issues.dependency.add_error_same_issue=Vous ne pouvez pas faire dépendre un ticket de lui-même.
-issues.dependency.add_error_dep_issue_not_exist=Le ticket dépendant n'existe pas.
+issues.dependency.add_error_dep_issue_not_exist=L'issue dépendante n'existe pas.
issues.dependency.add_error_dep_not_exist=La dépendance n'existe pas.
issues.dependency.add_error_dep_exists=La dépendance existe déjà.
issues.dependency.add_error_cannot_create_circular=Vous ne pouvez pas créer une dépendance avec deux tickets qui se bloquent l'un l'autre.
@@ -1757,7 +1757,7 @@ pulls.cannot_merge_work_in_progress=Cette demande d’ajout est en chantier.
pulls.still_in_progress=Toujours en cours ?
pulls.add_prefix=Ajouter le préfixe %s
pulls.remove_prefix=Enlever le préfixe %s
-pulls.data_broken=Cette demande d’ajout est impossible par manque d'informations de bifurcation.
+pulls.data_broken=Cette demande d’ajout est impossible par manque d'informations de fork.
pulls.files_conflicted=Cette demande d'ajout contient des modifications en conflit avec la branche ciblée.
pulls.is_checking=Vérification des conflits de fusion en cours. Réessayez dans quelques instants.
pulls.is_ancestor=Cette branche est déjà présente dans la branche ciblée. Il n'y a rien à fusionner.
@@ -1957,8 +1957,8 @@ activity.title.issues_n=%d tickets
activity.title.issues_closed_from=%s fermé par %s
activity.title.issues_created_by=%s créé par %s
activity.closed_issue_label=Fermé
-activity.new_issues_count_1=Nouveau ticket
-activity.new_issues_count_n=Nouveaux tickets
+activity.new_issues_count_1=Nouvelle issue
+activity.new_issues_count_n=Nouvelles issues
activity.new_issue_label=Ouvert
activity.title.unresolved_conv_1=%d conversation non résolue
activity.title.unresolved_conv_n=%d conversations non résolues
@@ -2007,9 +2007,9 @@ settings.hooks=Webhooks
settings.githooks=Git hooks
settings.basic_settings=Paramètres de base
settings.mirror_settings=Réglages miroir
-settings.mirror_settings.docs=Configurez votre dépôt pour synchroniser automatiquement les révisions, étiquettes et branches avec un autre dépôt.
-settings.mirror_settings.docs.disabled_pull_mirror.instructions=Configurez votre projet pour soumettre automatiquement les révisions, étiquettes et branches vers un autre dépôt. Les miroirs ont été désactivés par l'administrateur de votre site.
-settings.mirror_settings.docs.disabled_push_mirror.instructions=Configurez votre projet pour synchroniser automatiquement les révisions, étiquettes et branches d'un autre dépôt.
+settings.mirror_settings.docs=Configurez votre dépôt pour synchroniser automatiquement les révisions, tags et branches avec un autre dépôt.
+settings.mirror_settings.docs.disabled_pull_mirror.instructions=Configurez votre projet pour soumettre automatiquement les révisions, tags et branches vers un autre dépôt. Les miroirs ont été désactivés par l'administrateur de votre site.
+settings.mirror_settings.docs.disabled_push_mirror.instructions=Configurez votre projet pour synchroniser automatiquement les révisions, tags et branches d'un autre dépôt.
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Pour l’instant, cela ne peut être fait que dans le menu « Nouvelle migration ». Pour plus d’informations, veuillez consulter :
settings.mirror_settings.docs.disabled_push_mirror.info=Les miroirs push ont été désactivés par l’administrateur de votre site.
settings.mirror_settings.docs.no_new_mirrors=Votre dépôt se synchronise avec un dépôt distant. Vous ne pouvez pas créer de nouveaux miroirs pour le moment.
@@ -2045,15 +2045,15 @@ settings.use_external_wiki=Utiliser un wiki externe
settings.external_wiki_url=URL wiki externe
settings.external_wiki_url_error=L’URL du wiki externe n’est pas une URL valide.
settings.external_wiki_url_desc=Les visiteurs sont redirigés vers l’URL du wiki externe lors d'un clic sur l’onglet wiki.
-settings.issues_desc=Activer le suivi de tickets du dépôt
-settings.use_internal_issue_tracker=Utiliser le suivi de tickets interne
-settings.use_external_issue_tracker=Utiliser un système de suivi de tickets externe
-settings.external_tracker_url=Adresse du système de tickets externe
+settings.issues_desc=Activer le suivi d'issues du dépôt
+settings.use_internal_issue_tracker=Utiliser le suivi d'issues interne
+settings.use_external_issue_tracker=Utiliser un système de suivi d'issues externe
+settings.external_tracker_url=Adresse du système d'issues externe
settings.external_tracker_url_error=L’URL du système de suivi de tickets externe n’est pas une URL valide.
settings.external_tracker_url_desc=Les visiteurs sont redirigés vers l’URL du système de suivi de tickets externe lors d'un clic sur l’onglet tickets.
-settings.tracker_url_format=Format de l'URL du système de tickets
+settings.tracker_url_format=Format de l'URL du système d'issues
settings.tracker_url_format_error=L’URL du système de suivi de tickets externe n’est pas une URL valide.
-settings.tracker_issue_style=Format du nombre de tickets du système de tickets externe
+settings.tracker_issue_style=Format du nombre d'issues du système d'issues externe
settings.tracker_issue_style.numeric=Numérique
settings.tracker_issue_style.alphanumeric=Alphanumérique
settings.tracker_issue_style.regexp=Expression régulière
@@ -2089,10 +2089,10 @@ settings.convert_notices_1=Cette opération convertira le miroir en dépôt stan
settings.convert_confirm=Convertir le dépôt
settings.convert_succeed=Le miroir a été converti en dépôt standard.
settings.convert_fork=Convertir en dépôt standard
-settings.convert_fork_desc=Vous pouvez convertir cette bifurcation en dépôt standard. Cette action est irréversible.
-settings.convert_fork_notices_1=Cette opération convertira la bifurcation en dépôt standard. Cette action est irréversible.
+settings.convert_fork_desc=Vous pouvez convertir ce fork en dépôt standard. Cette action est irréversible.
+settings.convert_fork_notices_1=Cette opération convertira le fork en dépôt standard. Cette action est irréversible.
settings.convert_fork_confirm=Convertir le dépôt
-settings.convert_fork_succeed=La bifurcation a été convertie en dépôt standard.
+settings.convert_fork_succeed=Le fork a été converti en dépôt standard.
settings.transfer.title=Changer de propriétaire
settings.transfer.rejected=Le transfert du dépôt a été rejeté.
settings.transfer.success=Le transfert du dépôt a réussi.
@@ -2130,7 +2130,7 @@ settings.delete=Supprimer ce dépôt
settings.delete_desc=Supprimer un dépôt est permanent et irréversible.
settings.delete_notices_1=- Cette opération est irréversible.
settings.delete_notices_2=- Cette opération supprimera définitivement le dépôt %s, y compris le code, les tickets, les commentaires, les données de wiki et les accès des collaborateurs.
-settings.delete_notices_fork_1=- Les bifurcations de ce dépôt deviendront indépendants après suppression.
+settings.delete_notices_fork_1=- Les forks de ce dépôt deviendront indépendants après suppression.
settings.deletion_success=Le dépôt a été supprimé.
settings.update_settings_success=Les options du dépôt ont été mises à jour.
settings.update_settings_no_unit=Impossible de désactiver toutes les fonctionnalités d'un dépôt. Vous ne pourrez gère l'utiliser.
@@ -2195,8 +2195,8 @@ settings.event_create=Création
settings.event_create_desc=Branche ou étiquette créé.
settings.event_delete=Suppression
settings.event_delete_desc=Branche ou étiquette supprimée.
-settings.event_fork=Bifurcation
-settings.event_fork_desc=Dépôt bifurqué.
+settings.event_fork=Fork
+settings.event_fork_desc=Dépôt forké.
settings.event_wiki=Wiki
settings.event_wiki_desc=Page wiki créée, renommée, modifiée ou supprimée.
settings.event_release=Publication
@@ -2205,11 +2205,11 @@ settings.event_push=Soumission
settings.event_push_desc=Soumission Git.
settings.event_repository=Dépôt
settings.event_repository_desc=Dépôt créé ou supprimé.
-settings.event_header_issue=Événements de ticket
+settings.event_header_issue=Événements d'issues
settings.event_issues=Modification
settings.event_issues_desc=Ticket ouvert, rouvert, fermé ou modifié.
settings.event_issue_assign=Assigné
-settings.event_issue_assign_desc=Ticket assigné ou dé-assigné.
+settings.event_issue_assign_desc=Issue assignée ou dé-assignée.
settings.event_issue_label=Étiqueté
settings.event_issue_label_desc=Labels attribués ou retirés.
settings.event_issue_milestone=Jalonné
@@ -2351,9 +2351,9 @@ settings.edit_protected_branch=Éditer
settings.protected_branch_required_rule_name=Nom de la règle requise
settings.protected_branch_duplicate_rule_name=Il existe déjà une règle pour cet ensemble de branches
settings.protected_branch_required_approvals_min=Le nombre de revues nécessaires ne peut être négatif.
-settings.tags=Étiquettes
-settings.tags.protection=Protection d'étiquette
-settings.tags.protection.pattern=Motif d'étiquette
+settings.tags=Tags
+settings.tags.protection=Protection des tags
+settings.tags.protection.pattern=Motif de tag
settings.tags.protection.allowed=Autorisé
settings.tags.protection.allowed.users=Utilisateurs autorisés
settings.tags.protection.allowed.teams=Équipes autorisées
@@ -2369,7 +2369,7 @@ settings.matrix.room_id=ID de la salle
settings.matrix.message_type=Type de message
settings.archive.button=Archiver ce dépôt
settings.archive.header=Archiver ce dépôt
-settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous !).
+settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous !). Il est recommandé de documenter la raison de l'archivage afin d'orienter les futurs développeurs susceptibles de forker le dépôt.
settings.archive.success=Ce dépôt a été archivé avec succès.
settings.archive.error=Une erreur s'est produite lors de l'archivage du dépôt. Voir le journal pour plus de détails.
settings.archive.error_ismirror=Vous ne pouvez pas archiver un dépôt en miroir.
@@ -2578,7 +2578,7 @@ object_format = Format de l'objet
editor.invalid_commit_mail = Courriel invalide pour la création d'un commit.
commits.browse_further = Continuer la navigation
commits.renamed_from = Renommé depuis %s
-pulls.nothing_to_compare_have_tag = La branche/tag sélectionné sont identiques.
+pulls.nothing_to_compare_have_tag = Les branches/tags sélectionnés sont identiques.
issues.blocked_by_user = Vous ne pouvez pas créer de tickets sur ce dépôt car vous avez été bloqué par son propriétaire.
pulls.blocked_by_user = Vous ne pouvez pas créer une pull request sur ce dépôt car vous êtes bloqué par son propriétaire.
wiki.cancel = Annuler
@@ -2607,7 +2607,7 @@ activity.navbar.code_frequency = Fréquence de code
activity.navbar.recent_commits = Commits récents
file_follow = Suivre le lien symbolique
settings.confirmation_string = Chaine de confirmation
-pulls.agit_explanation = Créé par le workflow AGit. AGit permet aux contributeurs de proposer des modifications en utilisant "git push" sans créer une bifurcation ou une nouvelle branche.
+pulls.agit_explanation = Créé par le workflow AGit. AGit permet aux contributeurs de proposer des modifications en utilisant "git push" sans créer un fork ou une nouvelle branche.
stars = Étoiles
editor.commit_id_not_matching = Le fichier a été modifié pendant que vous l'éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
commits.search_branch = Cette branche
@@ -2880,78 +2880,14 @@ last_page=Dernière
total=Total : %d
settings=Paramètres administrateur
-dashboard.new_version_hint=Forgejo %s est maintenant disponible, vous utilisez %s. Consultez le blog pour plus de détails.
-dashboard.statistic=Résumé
-dashboard.operations=Opérations de maintenance
-dashboard.system_status=État du système
-dashboard.operation_name=Nom de l'Opération
-dashboard.operation_switch=Basculer
-dashboard.operation_run=Exécuter
dashboard.clean_unbind_oauth=Effacer les connexions OAuth associées
dashboard.clean_unbind_oauth_success=Toutes les connexions OAuth associées ont été supprimées.
-dashboard.task.started=Tâche démarrée : %[1]s
-dashboard.task.process=Tâche : %[1]s
-dashboard.task.cancelled=Tâche %[1]s annulée : %[3]s
-dashboard.task.error=Erreur dans la tâche : %[1]s : %[3]s
-dashboard.task.finished=Tâche : %[1]s démarrée par %[2]s est terminée
-dashboard.task.unknown=Tâche inconnue : %[1]s
-dashboard.cron.started=Tâche planifiée démarrée : %[1]s
-dashboard.cron.process=Tâche récurrente : %[1]s
-dashboard.cron.cancelled=Tâche récurrente %[1]s annulée : %[3]s
-dashboard.cron.error=Erreur dans la tâche récurrente %s : %[3]s
-dashboard.cron.finished=Tâche récurrente %[1]s terminée
dashboard.delete_inactive_accounts=Supprimer tous les comptes non actifs
-dashboard.delete_inactive_accounts.started=Tâche de suppression de tous les comptes inactifs démarrée.
dashboard.delete_repo_archives=Supprimer toutes les archives des dépôts (ZIP, TAR.GZ, etc..)
-dashboard.delete_repo_archives.started=Tâche de suppression de toutes les archives de dépôts démarrée.
dashboard.delete_missing_repos=Supprimer tous les dépôts dont les fichiers Git sont manquants
-dashboard.delete_missing_repos.started=Tâche de suppression de tous les dépôts sans fichiers Git démarrée.
-dashboard.delete_generated_repository_avatars=Supprimer les avatars de dépôt générés
-dashboard.sync_repo_branches=Synchroniser les branches manquantes depuis Git vers la base de donnée
-dashboard.sync_repo_tags = Synchroniser les étiquettes depuis Git vers la base de donnée
-dashboard.update_mirrors=Actualiser les miroirs
-dashboard.repo_health_check=Vérifier l'état de santé de tous les dépôts
-dashboard.check_repo_stats=Voir les statistiques de tous les dépôts
-dashboard.archive_cleanup=Supprimer les archives des vieux dépôts
-dashboard.deleted_branches_cleanup=Nettoyer les branches supprimées
-dashboard.update_migration_poster_id=Actualiser les ID des affiches de migration
-dashboard.git_gc_repos=Exécuter le ramasse-miette des dépôts
-dashboard.resync_all_sshkeys=Mettre à jour le fichier « ssh/authorized_keys » avec les clés SSH Forgejo.
-dashboard.resync_all_sshprincipals=Mettre à jour le fichier « .ssh/authorized_principals » avec les principaux de Forgejo SSH.
-dashboard.resync_all_hooks=Re-synchroniser les déclencheurs Git de tous les dépôts (pre-receive, update, post-receive, proc-receive, ...)
-dashboard.reinit_missing_repos=Réinitialiser tous les dépôts Git manquants pour lesquels un enregistrement existe
-dashboard.sync_external_users=Synchroniser les données de l’utilisateur externe
-dashboard.cleanup_hook_task_table=Nettoyer la table hook_task
-dashboard.cleanup_packages=Nettoyer des paquets expirés
-dashboard.cleanup_actions=Nettoyer les journaux et les artefacts des actions obsolètes
dashboard.delete_old_actions=Supprimer toutes les anciennes activités de la base de données
-dashboard.delete_old_actions.started=Suppression de toutes les anciennes activités de la base de données démarrée.
-dashboard.update_checker=Vérificateur de mise à jour
-dashboard.delete_old_system_notices=Supprimer toutes les anciennes observations de la base de données
-dashboard.gc_lfs=Épousseter les métaobjets LFS
-dashboard.stop_zombie_tasks=Arrêter les actions zombies
-dashboard.stop_endless_tasks=Arrêter les actions sans fin
-dashboard.cancel_abandoned_jobs=Annuler les actions abandonnées
-dashboard.start_schedule_tasks=Démarrer les actions planifiées
-dashboard.sync_branch.started=Début de la synchronisation des branches
-dashboard.sync_tag.started = La synchronisation des étiquettes a commencé
-dashboard.rebuild_issue_indexer=Reconstruire l’indexeur des tickets
-
users.user_manage_panel=Gestion du compte utilisateur
users.new_account=Créer un compte
-users.name=Nom d'utilisateur
-users.full_name=Nom complet
-users.activated=Activé
-users.admin=Administrateur
-users.restricted=Restreint
-users.reserved=Réservé
-users.bot=Robot
-users.remote=Distant
-users.2fa=2FA
-users.repos=Dépôts
-users.created=Créés
-users.last_login=Dernière connexion
-users.never_login=Jamais connecté
users.send_register_notify=Informer de l'inscription par courriel
users.new_success=Le compte "%s" a bien été créé.
users.edit=Éditer
@@ -2997,35 +2933,13 @@ emails.change_email_header=Mettre à jour les propriétés du courriel
emails.change_email_text=Êtes-vous sûr de vouloir mettre à jour cette adresse courriel ?
orgs.org_manage_panel=Gestion des organisations
-orgs.name=Nom
-orgs.teams=Équipes
-orgs.members=Membres
-orgs.new_orga=Nouvelle organisation
-
repos.repo_manage_panel=Gestion des dépôts
repos.unadopted=Dépôts non adoptés
repos.unadopted.no_more=Aucun dépôt candidat à l'adoption n'a été trouvé.
-repos.owner=Propriétaire
-repos.name=Nom
repos.private=Privé
-repos.issues=Tickets
-repos.size=Taille
-repos.lfs_size=Taille LFS
-
packages.package_manage_panel=Gestion des paquets
-packages.total_size=Taille totale : %s
-packages.unreferenced_size=Taille non référencée : %s
packages.cleanup=Purger les données expirées
packages.cleanup.success=Les données expirées ont été nettoyées avec succès
-packages.owner=Propriétaire
-packages.creator=Créateur
-packages.name=Nom
-packages.version=Version
-packages.type=Type
-packages.repository=Dépôt
-packages.size=Taille
-packages.published=Publiés
-
defaulthooks=Déclencheurs web par défaut
defaulthooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Forgejo se déclenchent. Ceux créés ici sont par défaut copiés sur tous les nouveaux dépôts. Pour plus d'information, consultez le guide des webhooks.
defaulthooks.add_webhook=Ajouter un déclencheur web par défaut
@@ -3154,7 +3068,6 @@ config.offline_mode=Mode hors-ligne
config.disable_router_log=Désactiver la journalisation du routeur
config.run_user=Exécuter avec l'utilisateur
config.run_mode=Mode d’exécution
-config.git_version=Version de Git
config.app_data_path=Chemin des données d'application
config.repo_root_path=Emplacement des Dépôts
config.lfs_root_path=Répertoire racine LFS
@@ -3162,32 +3075,11 @@ config.log_file_root_path=Chemin des fichiers logs
config.script_type=Type de script
config.reverse_auth_user=Annuler l'authentification par proxy de l'utilisateur
-config.ssh_config=Configuration SSH
-config.ssh_enabled=Activé
-config.ssh_start_builtin_server=Utiliser le serveur incorporé
-config.ssh_domain=Domaine du serveur SSH
-config.ssh_port=Port
-config.ssh_listen_port=Port d'écoute
-config.ssh_root_path=Emplacement racine
-config.ssh_key_test_path=Chemin de test des clés
-config.ssh_keygen_path=Chemin vers le générateur de clefs ("ssh-keygen")
-config.ssh_minimum_key_size_check=Vérification de la longueur de clé minimale
-config.ssh_minimum_key_sizes=Tailles de clé minimales
-
config.lfs_config=Configuration LFS
config.lfs_enabled=Activé
config.lfs_content_path=Chemin du contenu LFS
config.lfs_http_auth_expiry=Expiration de l'authentification HTTP LFS
-config.db_config=Configuration de la base de données
-config.db_type=Type
-config.db_host=Hôte
-config.db_name=Nom
-config.db_user=Nom d'utilisateur
-config.db_schema=Schéma
-config.db_ssl_mode=SSL
-config.db_path=Emplacement
-
config.service_config=Configuration du service
config.register_email_confirm=Exiger la confirmation de l'e-mail lors de l'inscription
config.disable_register=Désactiver le formulaire d'inscription
@@ -3209,26 +3101,13 @@ config.allow_dots_in_usernames = Les points sont autorisés dans les noms d'util
config.default_allow_only_contributors_to_track_time=Restreindre le suivi de temps aux contributeurs
config.no_reply_address=Domaine pour les courriels cachés
config.default_visibility_organization=Visibilité par défaut des nouvelles organisations
-config.default_enable_dependencies=Activer les dépendances pour les tickets par défaut
+config.default_enable_dependencies=Activer les dépendances pour les issues par défaut
config.webhook_config=Configuration des déclencheurs
config.queue_length=Longueur de la file d'attente
config.deliver_timeout=Expiration d'envoi
config.skip_tls_verify=Passer la vérification TLS
-config.mailer_config=Configuration du service SMTP
-config.mailer_enabled=Activé
-config.mailer_enable_helo=Activer HELO
-config.mailer_name=Nom
-config.mailer_protocol=Protocole
-config.mailer_smtp_addr=Adresse SMTP
-config.mailer_smtp_port=Port SMTP
-config.mailer_user=Utilisateur
-config.mailer_use_sendmail=Utiliser Sendmail
-config.mailer_sendmail_path=Chemin d’accès à Sendmail
-config.mailer_sendmail_args=Arguments supplémentaires pour Sendmail
-config.mailer_sendmail_timeout=Délai d’attente de Sendmail
-config.mailer_use_dummy=Factice
config.test_email_placeholder=E-mail (ex : test@example.com)
config.send_test_mail=Envoyer un courriel de test
config.send_test_mail_submit=Envoyer
@@ -3258,18 +3137,6 @@ config.picture_service=Service d'imagerie
config.disable_gravatar=Désactiver Gravatar
config.enable_federated_avatar=Activer les avatars fédérés
-config.git_config=Configuration de Git
-config.git_disable_diff_highlight=Désactiver la surbrillance syntaxique de diff
-config.git_max_diff_lines=Lignes de diff Max (pour un seul fichier)
-config.git_max_diff_line_characters=Nombre max de caractères de diff (pour une seule ligne)
-config.git_max_diff_files=Nombre max de fichiers de diff (à afficher)
-config.git_gc_args=Arguments de GC
-config.git_migrate_timeout=Délai imparti pour une migration
-config.git_mirror_timeout=Délai imparti pour mettre à jour le miroir
-config.git_clone_timeout=Délai imparti pour l'opération "clone"
-config.git_pull_timeout=Délai imparti pour l'opération "Pull"
-config.git_gc_timeout=Délai imparti pour l'opération "GC"
-
config.log_config=Configuration du journal
config.logger_name_fmt=Logger : %s
config.disabled_logger=Désactivé
@@ -3346,13 +3213,13 @@ monitor.duration = Durée (s)
create_repo=a créé le dépôt %s
rename_repo=a rebaptisé le dépôt %[1]s en %[3]s
commit_repo=a soumis sur %[3]s dans %[4]s
-create_issue=`a ouvert le ticket %[3]s#%[2]s`
-close_issue=`a fermé le ticket %[3]s#%[2]s`
-reopen_issue=`a rouvert le ticket %[3]s#%[2]s`
+create_issue=`a ouvert l'issue %[3]s#%[2]s`
+close_issue=`a fermé l'issue %[3]s#%[2]s`
+reopen_issue=`a rouvert l'issue %[3]s#%[2]s`
create_pull_request=`a créé la demande d’ajout %[3]s#%[2]s`
close_pull_request=`a fermé la demande d’ajout %[3]s#%[2]s`
reopen_pull_request=`a rouvert la demande d’ajout %[3]s#%[2]s`
-comment_issue=`a commenté le ticket %[3]s#%[2]s`
+comment_issue=`a commenté l'issue %[3]s#%[2]s`
comment_pull=`a commenté la demande d’ajout %[3]s#%[2]s`
merge_pull_request=`a fusionné la demande d’ajout %[3]s#%[2]s`
auto_merge_pull_request=`a fusionné automatiquement la demande d’ajout %[3]s#%[2]s`
@@ -3440,7 +3307,7 @@ workflow.enable=Activer le workflow
workflow.enable_success=Le workflow « %s » a bien été activé.
workflow.disabled=Le flux de travail est désactivé.
-need_approval_desc=Besoin d’approbation pour exécuter des flux de travail pour une demande d’ajout de bifurcation.
+need_approval_desc=Besoin d’approbation pour exécuter des flux de travail pour une pull request de fork.
variables.id_not_exist = La variable numéro %d n’existe pas.
workflow.dispatch.use_from = Utiliser un workflow depuis
@@ -3490,10 +3357,10 @@ branch_kind = Chercher les branches…
commit_kind = Chercher les commits…
exact = Exact
exact_tooltip = Inclure uniquement les résultats qui correspondent exactement au terme recherché
-issue_kind = Rechercher dans les tickets…
+issue_kind = Rechercher dans les issues…
union = Union
union_tooltip = Inclus les résultats contenant au moins un des mots clé séparés par des espaces
-pull_kind = Rechercher dans les demande d'ajout…
+pull_kind = Rechercher dans les pull requests…
regexp_tooltip = Interpréter le terme de recherche comme une expression régulière
regexp = RegExp
diff --git a/options/locale/locale_fr_CA.ini b/options/locale/locale_fr_CA.ini
new file mode 100644
index 0000000000..7737605e28
--- /dev/null
+++ b/options/locale/locale_fr_CA.ini
@@ -0,0 +1,3393 @@
+[common]
+home=Accueil
+dashboard=Tableau de bord
+explore=Explorer
+help=Aide
+logo=Logo
+sign_in=Connexion
+sign_in_with_provider=Se connecter avec %s
+sign_in_or=ou
+sign_out=Déconnexion
+sign_up=S'inscrire
+link_account=Lier un compte
+register=S'inscrire
+version=Version
+powered_by=Propulsé par %s
+page=Page
+template=Modèle
+language=Langue
+notifications=Notifications
+active_stopwatch=Suivi du temps actif
+tracked_time_summary=Résumé du pointage d’après les filtres de la liste des tickets
+create_new=Créer…
+user_profile_and_more=Profil et réglages…
+signed_in_as=Connecté en tant que
+enable_javascript=Ce site Web nécessite JavaScript.
+toc=Sommaire
+licenses=Licences
+return_to_forgejo=Revenir à Forgejo
+
+username=Nom d'utilisateur
+email=Courriel
+password=Mot de passe
+access_token=Jeton d’accès
+re_type=Confirmez le mot de passe
+captcha=CAPTCHA
+twofa=Authentification à deux facteurs
+twofa_scratch=Code de secours pour l'authentification à deux facteurs
+passcode=Code d'accès
+
+repository=Dépôt
+organization=Organisation
+mirror=Miroir
+new_mirror=Nouveau miroir
+new_fork=Nouvelle bifurcation
+new_project=Nouveau projet
+new_project_column=Nouvelle colonne
+admin_panel=Administration du site
+settings=Paramètres
+your_profile=Profil
+your_starred=Favoris
+your_settings=Configuration
+
+all=Tous
+sources=Sources
+mirrors=Miroirs
+collaborative=Collaboratif
+forks=Bifurcations
+
+activities=Activités
+pull_requests=Demandes d'ajout
+issues=Tickets
+milestones=Jalons
+
+ok=OK
+cancel=Annuler
+retry=Réessayez
+rerun=Relancer
+rerun_all=Relancer toutes les tâches
+save=Enregistrer
+add=Ajouter
+add_all=Tout ajouter
+remove=Supprimer
+remove_all=Tout supprimer
+remove_label_str=Supprimer l’élément « %s »
+edit=Éditer
+view=Voir
+
+enabled=Activé
+disabled=Désactivé
+locked=Verrouillée
+
+copy=Copier
+copy_url=Copier l'URL
+copy_hash=Copier le hach
+copy_content=Copier le contenu
+copy_branch=Copier le nom de la branche
+copy_success=Copié !
+copy_error=Échec de la copie
+copy_type_unsupported=Ce type de fichier ne peut pas être copié
+
+write=Écrire
+preview=Aperçu
+loading=Chargement…
+
+error=Erreur
+error404=La page que vous essayez d'atteindre n'existe pas, a été supprimé ou vous n'êtes pas autorisé à la voir.
+go_back=Retour
+
+never=Jamais
+unknown=Inconnu
+
+rss_feed=Flux RSS
+
+pin=Épingler
+unpin=Désépingler
+
+artifacts=Artefacts
+confirm_delete_artifact = Êtes-vous certain de vouloir supprimer l'artefect "%s" ?
+archived=Archivé
+
+concept_system_global=Global
+concept_user_individual=Individuel
+concept_code_repository=Dépôt
+concept_user_organization=Organisation
+
+show_timestamps=Afficher les dates
+show_log_seconds=Afficher les secondes
+show_full_screen=Affichez en plein écran
+download_logs=Télécharger les logs
+
+confirm_delete_selected=Êtes-vous sûr de vouloir supprimer tous les éléments sélectionnés ?
+
+name=Nom
+value=Valeur
+filter.clear = Effacer le filtre
+filter.is_archived = Archivé
+filter.not_archived = Non archivé
+filter.is_fork = Bifurcations
+filter.not_fork = Non bifurqué
+filter.not_mirror = Non miroirs
+filter.is_template = Modèles
+filter.not_template = Non modèles
+filter.public = Publique
+filter.private = Privé
+filter = Filtre
+filter.is_mirror = Miroirs
+toggle_menu = Menu va-et-vient
+more_items = Plus d'éléments
+invalid_data = Données invalides : %v
+copy_generic = Copier dans le presse-papiers
+test = Test
+new_migrate.title = Nouvelle migration
+new_org.title = Nouvelle organisation
+new_repo.link = Nouveau dépôt
+error413 = Votre quota est épuisé.
+new_repo.title = Nouveau dépôt
+new_migrate.link = Nouvelle migration
+new_org.link = Nouvelle organisation
+copy_path = Copier le chemin
+
+[aria]
+navbar=Barre de navigation
+footer=Pied de page
+footer.software=À propos du logiciel
+footer.links=Liens
+
+[heatmap]
+number_of_contributions_in_the_last_12_months=%s contributions au cours des 12 derniers mois
+contributions_zero=Aucune contribution
+less=Moins
+more=Plus
+contributions_one = contribution
+contributions_few = contributions
+contributions_format = {contributions} le {day} {month} {year}
+
+[editor]
+buttons.heading.tooltip=Ajouter un en-tête
+buttons.bold.tooltip=Ajouter du texte en gras (Ctrl+B / ⌘B)
+buttons.italic.tooltip=Ajouter du texte en italique (Ctrl+I / ⌘I)
+buttons.quote.tooltip=Citer le texte
+buttons.code.tooltip=Ajouter du code
+buttons.link.tooltip=Ajouter un lien (Ctrl+K / ⌘K)
+buttons.list.unordered.tooltip=Ajouter une liste à puces
+buttons.list.ordered.tooltip=Ajouter une liste numérotée
+buttons.list.task.tooltip=Ajouter une liste de tâches
+buttons.mention.tooltip=Mentionner un utilisateur ou une équipe
+buttons.ref.tooltip=Référencer un ticket ou demande d’ajout
+buttons.switch_to_legacy.tooltip=Utiliser l’ancien éditeur à la place
+buttons.enable_monospace_font=Activer la police à chasse fixe
+buttons.disable_monospace_font=Désactiver la police à chasse fixe
+buttons.indent.tooltip = Indenter les éléments d'un niveau
+buttons.unindent.tooltip = Supprimer un niveau d'indentation
+buttons.new_table.tooltip = Ajouter une table
+table_modal.header = Ajouter une table
+table_modal.placeholder.header = Entête
+table_modal.placeholder.content = Contenu
+table_modal.label.rows = Lignes
+table_modal.label.columns = Colonnes
+link_modal.header = Ajouter un lien
+link_modal.url = Url
+link_modal.description = Description
+link_modal.paste_reminder = Indice : avec une URL dans votre clipboard, vous pouvez copier directement dans l'éditeur pour créer un lien.
+
+[filter]
+string.asc=A - Z
+string.desc=Z - A
+
+[error]
+occurred=Une erreur s’est produite
+report_message=Si vous pensez qu'il s'agit d'un bug Forgejo, veuillez consulter les tickets de Codeberg ou ouvrir un nouveau ticket si nécessaire.
+not_found=La cible n'a pu être trouvée.
+network_error=Erreur réseau
+server_internal = Erreur interne du serveur
+
+[startpage]
+app_desc=Un service Git auto-hébergé sans prise de tête
+install=Facile à installer
+install_desc=Il suffit de lancer l’exécutable adapté à votre plateforme, le déployer avec Docker ou de l’installer depuis un gestionnaire de paquet.
+platform=Multi-plateforme
+platform_desc=Forgejo est confirmé fonctionner sur des systèmes d'exploitation libres comme Linux et FreeBSD, ainsi que différentes architectures CPU. Choisissez ce que vous préférez !
+lightweight=Léger
+lightweight_desc=Forgejo utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
+license=Open Source
+license_desc=Toutes les sources sont sur Forgejo ! Rejoignez-nous et contribuez à rendre ce projet encore meilleur. Ne craignez pas de devenir un·e contributeur·trice !
+
+[install]
+install=Installation
+title=Configuration initiale
+docker_helper=Si vous exécutez Forgejo dans Docker, veuillez lire la documentation avant de modifier les paramètres.
+require_db_desc=Forgejo nécessite MySQL, PostgreSQL, SQLite3 ou TiDB (avec le protocole MySQL).
+db_title=Paramètres de la base de données
+db_type=Type de base de données
+host=Hôte
+user=Nom d'utilisateur
+password=Mot de passe
+db_name=Nom de base de données
+db_schema=Schéma
+db_schema_helper=Laisser vide pour la base de données par défaut ("public").
+ssl_mode=SSL
+path=Emplacement
+sqlite_helper=Chemin d'accès pour la base de données SQLite3.portée/label.
+issues.label_exclusive_warning=Tout label d'une portée en conflit sera retiré lors de la modification des labels d’un ticket ou d’une demande d’ajout.
+issues.label_count=%d labels
+issues.label_open_issues=%d tickets ouverts
+issues.label_edit=Éditer
+issues.label_delete=Supprimer
+issues.label_modify=Modifier le label
+issues.label_deletion=Supprimer le label
+issues.label_deletion_desc=Supprimer un labeel l’enlève de tous les tickets. Continuer ?
+issues.label_deletion_success=Le label a été supprimé.
+issues.label.filter_sort.alphabetically=Par ordre alphabétique
+issues.label.filter_sort.reverse_alphabetically=Par ordre alphabétique inversé
+issues.label.filter_sort.by_size=Plus petite taille
+issues.label.filter_sort.reverse_by_size=Plus grande taille
+issues.num_participants_few=%d participants
+issues.attachment.open_tab=`Cliquez ici pour voir « %s » dans un nouvel onglet.`
+issues.attachment.download=`Cliquez pour télécharger « %s ».`
+issues.subscribe=S’abonner
+issues.unsubscribe=Se désabonner
+issues.unpin_issue=Désépingler le ticket
+issues.max_pinned=Vous ne pouvez pas épingler plus de tickets
+issues.pin_comment=a épinglé ça %s
+issues.unpin_comment=a désépinglé ça %s
+issues.lock=Verrouiller la conversation
+issues.unlock=Déverrouiller la conversation
+issues.lock.unknown_reason=Impossible de verrouiller un ticket avec une raison inconnue.
+issues.lock_duplicate=Un ticket ne peut pas être verrouillé à deux reprises.
+issues.unlock_error=Impossible de déverrouiller un ticket qui n'est pas verrouillé.
+issues.lock_with_reason=a verrouillé en tant que %s et limité la conversation aux collaborateurs %s
+issues.lock_no_reason=a verrouillé et limité la conversation aux collaborateurs %s
+issues.unlock_comment=a déverrouillé cette conversation %s
+issues.lock_confirm=Verrouiller
+issues.unlock_confirm=Déverrouiller
+issues.lock.notice_1=- Les autres utilisateurs ne peuvent pas ajouter de nouveaux commentaires à ce ticket.
+issues.lock.notice_2=- Vous et les autres collaborateurs ayant accès à ce dépôt peuvent toujours laisser des commentaires que d’autres peuvent voir.
+issues.lock.notice_3=- Vous pouvez toujours déverrouiller ce ticket à l'avenir.
+issues.unlock.notice_1=- Tout le monde sera de nouveau en mesure de commenter ce ticket.
+issues.unlock.notice_2=- Vous pouvez toujours verrouiller ce ticket à l'avenir.
+issues.lock.reason=Motif de verrouillage
+issues.lock.title=Verrouiller la conversation
+issues.unlock.title=Déverrouiller la conversation
+issues.comment_on_locked=Vous ne pouvez pas commenter un ticket verrouillé.
+issues.delete=Supprimer
+issues.delete.title=Supprimer ce ticket ?
+issues.delete.text=Voulez-vous vraiment supprimer ce ticket ? (Cette opération supprimera définitivement tout le contenu. Envisagez plutôt de le fermer si vous avez l'intention de l'archiver)
+issues.tracker=Minuteur
+issues.start_tracking_short=Démarrer le chronomètre
+issues.start_tracking=Démarrer le suivi du temps
+issues.start_tracking_history=`a commencé son travail %s.`
+issues.tracker_auto_close=Le minuteur sera automatiquement arrêté quand le ticket sera fermé
+issues.tracking_already_started=`Vous avez déjà un minuteur en cours sur un autre ticket !`
+issues.stop_tracking=Arrêter le chronomètre
+issues.stop_tracking_history=`a fini de travailler %s.`
+issues.cancel_tracking=Abandonner le minuteur
+issues.cancel_tracking_history=`a abandonné son minuteur %s.`
+issues.add_time=Ajouter du temps manuellement
+issues.del_time=Supprimer ce minuteur du journal
+issues.add_time_short=Pointer du temps
+issues.add_time_cancel=Annuler
+issues.add_time_history=`a pointé du temps de travail %s.`
+issues.del_time_history=`a supprimé son temps de travail %s.`
+issues.add_time_hours=Heures
+issues.add_time_minutes=Minutes
+issues.add_time_sum_to_small=Aucun minuteur n'a été saisi.
+issues.time_spent_total=Temps passé total
+issues.time_spent_from_all_authors=`Temps passé total : %s`
+issues.due_date=Échéance
+issues.push_commit_1=a ajouté %d révision %s
+issues.push_commits_n=a ajouté %d révisions %s
+issues.force_push_codes=`a forcé %[1]s de %[2]s %[8]s à %[4]s %[9]s %[6]s.`
+issues.force_push_compare=Comparer
+issues.due_date_form=aaaa-mm-jj
+issues.due_date_form_edit=Éditer
+issues.due_date_form_remove=Supprimer
+issues.due_date_not_set=Aucune échéance n'a été définie.
+issues.due_date_added=a ajouté l'échéance %s %s
+issues.due_date_modified=a modifié l'échéance de %[2]s à %[1]s %[3]s
+issues.due_date_remove=a supprimé l'échéance %s %s
+issues.due_date_overdue=En retard
+issues.due_date_invalid=La date d’échéance est invalide ou hors plage. Veuillez utiliser le format "aaaa-mm-dd".
+issues.dependency.title=Dépendances
+issues.dependency.issue_no_dependencies=Aucune dépendance définie.
+issues.dependency.pr_no_dependencies=Aucune dépendance définie.
+issues.dependency.no_permission_1=Vous n’avez pas la permission de voir la dépendance de %d
+issues.dependency.no_permission_n=Vous n’avez pas la permission de voir les dépendances de %d
+issues.dependency.no_permission.can_remove=Vous n'avez pas la permission de voir cette dépendance, mais vous pouvez la supprimer
+issues.dependency.add=Ajouter une dépendance…
+issues.dependency.cancel=Annuler
+issues.dependency.remove=Supprimer
+issues.dependency.remove_info=Supprimer cette dépendance
+issues.dependency.added_dependency=`a créé une dépendance %s.`
+issues.dependency.removed_dependency=`a supprimé une dépendance %s.`
+issues.dependency.pr_closing_blockedby=La fermeture de cette demande d’ajout est bloquée par les tickets suivants
+issues.dependency.issue_closing_blockedby=La fermeture de ce ticket est bloquée par les tickets suivants
+issues.dependency.issue_close_blocks=Cette demande d'ajout empêche la clôture des tickets suivants
+issues.dependency.pr_close_blocks=Cette demande d'ajout empêche la clôture des tickets suivants
+issues.dependency.issue_close_blocked=Vous devez fermer tous les tickets qui bloquent ce ticket avant de pouvoir le fermer.
+issues.dependency.issue_batch_close_blocked=Impossible de fermer tous les tickets que vous avez choisis, car le ticket #%d a toujours des dépendances ouvertes
+issues.dependency.pr_close_blocked=Vous devez fermer tous les tickets qui bloquent cette demande d'ajout avant de pouvoir la fusionner.
+issues.dependency.blocks_short=Bloque
+issues.dependency.blocked_by_short=Dépend de
+issues.dependency.remove_header=Supprimer cette dépendance
+issues.dependency.issue_remove_text=Cela supprimera la dépendance de ce ticket. Continuer ?
+issues.dependency.pr_remove_text=Cela supprimera la dépendance de cette demande d'ajout. Continuer ?
+issues.dependency.setting=Autoriser les dépendances pour les tickets et les demandes d'ajouts
+issues.dependency.add_error_same_issue=Vous ne pouvez pas faire dépendre un ticket de lui-même.
+issues.dependency.add_error_dep_issue_not_exist=Le ticket dépendant n'existe pas.
+issues.dependency.add_error_dep_not_exist=La dépendance n'existe pas.
+issues.dependency.add_error_dep_exists=La dépendance existe déjà.
+issues.dependency.add_error_cannot_create_circular=Vous ne pouvez pas créer une dépendance avec deux tickets qui se bloquent l'un l'autre.
+issues.dependency.add_error_dep_not_same_repo=Les deux tickets doivent être dans le même dépôt.
+issues.review.self.approval=Vous ne pouvez approuver vos propres demandes d'ajout.
+issues.review.self.rejection=Vous ne pouvez demander de changements sur vos propres demandes de changement.
+issues.review.approve=a approuvé ces modifications %s
+issues.review.comment=a évalué cette demande d’ajout %s
+issues.review.dismissed=a révoqué l’évaluation de %s %s
+issues.review.dismissed_label=Révoquée
+issues.review.left_comment=a laissé un commentaire
+issues.review.content.empty=Vous devez laisser un commentaire indiquant le(s) changement(s) demandé(s).
+issues.review.reject=a requis les changements %s
+issues.review.wait=a été sollicité pour évaluer cette demande d’ajout %s
+issues.review.add_review_request=demande d'évaluation de %[1]s %[2]s
+issues.review.remove_review_request=demande d’évaluation retirée pour %[1]s %[2]s
+issues.review.remove_review_request_self=a refusé d’évaluer cette demande d’ajout %s
+issues.review.pending=En attente
+issues.review.pending.tooltip=Ce commentaire n'est pas encore visible par les autres utilisateurs. Pour soumettre vos commentaires en attente, sélectionnez "%s" → "%s/%s/%s" en haut de la page.
+issues.review.reviewers=Évaluateurs
+issues.review.outdated=Périmé
+issues.review.outdated_description=Le contenu a changé depuis que ce commentaire a été fait
+issues.review.option.show_outdated_comments=Afficher les commentaires obsolètes
+issues.review.option.hide_outdated_comments=Masquer les commentaires obsolètes
+issues.review.show_outdated=Afficher les révisions périmées
+issues.review.hide_outdated=Cacher les révisions périmées
+issues.review.show_resolved=Développer
+issues.review.hide_resolved=Réduire
+issues.review.resolve_conversation=Clore la conversation
+issues.review.un_resolve_conversation=Rouvrir la conversation
+issues.review.resolved_by=a marqué cette conversation comme résolue
+issues.reference_issue.body=Corps
+issues.content_history.deleted=a supprimé
+issues.content_history.edited=a édité
+issues.content_history.created=a créé
+issues.content_history.delete_from_history=Supprimer de l’historique
+issues.content_history.delete_from_history_confirm=Supprimer de l’historique ?
+issues.content_history.options=Options
+compare.compare_base=base
+compare.compare_head=comparer
+
+pulls.desc=Active les demandes d’ajouts et l’évaluation du code.
+pulls.new=Nouvelle demande d'ajout
+pulls.view=Voir la demande d'ajout
+pulls.compare_changes=Nouvelle demande d’ajout
+pulls.allow_edits_from_maintainers=Autoriser les modifications des mainteneurs
+pulls.allow_edits_from_maintainers_desc=Les utilisateurs ayant un accès en écriture à la branche de base peuvent également soumettre sur cette branche
+pulls.allow_edits_from_maintainers_err=La mise à jour à échoué
+pulls.compare_changes_desc=Sélectionnez la branche dans laquelle fusionner et la branche depuis laquelle tirer les modifications.
+pulls.has_viewed_file=Consulté
+pulls.has_changed_since_last_review=Modifié depuis votre dernier passage
+pulls.viewed_files_label=%[1]d / %[2]d fichiers vus
+pulls.expand_files=Développer tous les fichiers
+pulls.collapse_files=Réduire tous les fichiers
+pulls.compare_base=fusionner dans
+pulls.compare_compare=tirer les modifications depuis
+pulls.switch_comparison_type=Changer le type de comparaison
+pulls.switch_head_and_base=Passez de head à base
+pulls.filter_branch=Filtre de branche
+pulls.no_results=Aucun résultat trouvé.
+pulls.show_all_commits=Afficher toutes les révisions
+pulls.show_changes_since_your_last_review=Affiche les modifications depuis votre dernière évaluation
+pulls.showing_only_single_commit=Affiche uniquement les changements de la révision %[1]s
+pulls.showing_specified_commit_range=Affichage des changements filtré entre %[1]s..%[2]s
+pulls.select_commit_hold_shift_for_range=Maintenir Maj et cliquer sur des révisions pour faire un intervalle
+pulls.review_only_possible_for_full_diff=Une évaluation n'est possible que lorsque vous affichez le différentiel complet
+pulls.filter_changes_by_commit=Filtrer par révision
+pulls.nothing_to_compare=Ces branches sont identiques. Il n’y a pas besoin de créer une demande d'ajout.
+pulls.nothing_to_compare_and_allow_empty_pr=Ces branches sont égales. Cette demande d'ajout sera vide.
+pulls.has_pull_request='Il existe déjà une demande d'ajout entre ces deux branches : %[2]s#%[3]d'
+pulls.create=Créer une demande d'ajout
+pulls.change_target_branch_at=`a remplacée la branche cible %s par %s %s`
+pulls.tab_conversation=Discussion
+pulls.tab_commits=Révisions
+pulls.tab_files=Fichiers Modifiés
+pulls.reopen_to_merge=Veuillez rouvrir cette demande d'ajout pour effectuer l'opération de fusion.
+pulls.cant_reopen_deleted_branch=Cette demande d'ajout ne peut pas être rouverte car la branche a été supprimée.
+pulls.merged=Fusionnée
+pulls.merged_success=Demande d’ajout fusionnée et fermée avec succès
+pulls.closed=Demande d’ajout fermée
+pulls.manually_merged=Fusionné manuellement
+pulls.merged_info_text=La branche %s peut maintenant être supprimée.
+pulls.is_closed=La demande d’ajout a été fermée.
+pulls.title_wip_desc=`Préfixer le titre par %s pour empêcher cette demande d'ajout d'être fusionnée par erreur.`
+pulls.cannot_merge_work_in_progress=Cette demande d’ajout est en chantier.
+pulls.still_in_progress=Toujours en cours ?
+pulls.add_prefix=Ajouter le préfixe %s
+pulls.remove_prefix=Enlever le préfixe %s
+pulls.data_broken=Cette demande d’ajout est impossible par manque d'informations de bifurcation.
+pulls.files_conflicted=Cette demande d'ajout contient des modifications en conflit avec la branche ciblée.
+pulls.is_checking=Vérification des conflits de fusion en cours. Réessayez dans quelques instants.
+pulls.is_ancestor=Cette branche est déjà présente dans la branche ciblée. Il n'y a rien à fusionner.
+pulls.is_empty=Les changements sur cette branche sont déjà sur la branche cible. Cette révision sera vide.
+pulls.required_status_check_failed=Certains contrôles requis n'ont pas réussi.
+pulls.required_status_check_missing=Certains contrôles requis sont manquants.
+pulls.required_status_check_administrator=En tant qu'administrateur, vous pouvez toujours fusionner cette requête de pull.
+pulls.blocked_by_approvals=Cette demande d'ajout n’est pas suffisamment approuvée. %d approbations obtenues sur %d.
+pulls.blocked_by_rejection=Cette demande d’ajout nécessite des corrections sollicitées par un évaluateur officiel.
+pulls.blocked_by_official_review_requests=Cette demande d’ajout est bloquée car il manque une ou plusieurs approbations officielles.
+pulls.blocked_by_outdated_branch=Cette demande d’ajout est bloquée car elle est obsolète.
+pulls.blocked_by_changed_protected_files_1=Cette demande d'ajout est bloquée car elle modifie un fichier protégé :
+pulls.blocked_by_changed_protected_files_n=Cette demande d'ajout est bloquée car elle modifie des fichiers protégés :
+pulls.can_auto_merge_desc=Cette demande d'ajout peut être fusionnée automatiquement.
+pulls.cannot_auto_merge_desc=Cette demande d’ajout ne peut être fusionnée automatiquement en raison de conflits.
+pulls.cannot_auto_merge_helper=Fusionner manuellement pour résoudre les conflits.
+pulls.num_conflicting_files_1=%d fichier en conflit
+pulls.num_conflicting_files_n=%d fichiers en conflit
+pulls.approve_count_1=%d approuvé
+pulls.approve_count_n=%d approuvés
+pulls.reject_count_1=%d demande de modifications
+pulls.reject_count_n=%d demandes de modifications
+pulls.waiting_count_1=%d évaluation en attente
+pulls.waiting_count_n=%d évaluations en attente
+pulls.wrong_commit_id=l'ID de la révision doit être un ID de révision sur la branche cible
+
+pulls.no_merge_desc=Cette demande d’ajout ne peut être fusionnée car toutes les options de fusion du dépôt sont désactivées.
+pulls.no_merge_helper=Activez des options de fusion dans les paramètres du dépôt ou fusionnez la demande manuellement.
+pulls.no_merge_wip=Cette demande d’ajout ne peut pas être fusionnée car elle est marquée en chantier.
+pulls.no_merge_not_ready=Cette demande d’ajout n’est pas prête à être fusionnée, vérifiez les évaluations en cours et le contrôle qualité.
+pulls.no_merge_access=Vous n'êtes pas autorisé⋅e à fusionner cette demande d'ajout.
+pulls.merge_pull_request=Créer une révision de fusion
+pulls.rebase_merge_pull_request=Rebaser puis avancer rapidement
+pulls.rebase_merge_commit_pull_request=Rebaser puis créer une révision de fusion
+pulls.squash_merge_pull_request=Créer une révision de concaténation
+pulls.fast_forward_only_merge_pull_request = Fast-forward uniquement
+pulls.merge_manually=Fusionner manuellement
+pulls.merge_commit_id=L'ID de la révision de fusion
+pulls.require_signed_wont_sign=La branche nécessite des révisions signées mais cette fusion ne sera pas signée
+
+pulls.invalid_merge_option=Vous ne pouvez pas utiliser cette option de fusion pour cette demande.
+pulls.merge_conflict=Fusion échouée : il y a eu un conflit lors de la fusion. Indice : Essayez une stratégie différente
+pulls.merge_conflict_summary=Message d'erreur
+pulls.rebase_conflict=Fusion échouée : il y a eu un conflit lors du rebasage de la révision %[1]s. Indice : Essayez une stratégie différente
+pulls.rebase_conflict_summary=Message d'erreur
+pulls.unrelated_histories=Fusion échouée : La tête de fusion et la base ne partagent pas d'historique commun. Indice : Essayez une stratégie différente
+pulls.merge_out_of_date=Fusion échouée : La base a été mise à jour en cours de fusion. Indice : Réessayez.
+pulls.head_out_of_date=Fusion échouée : L’en-tête a été mis à jour pendant la fusion. Indice : réessayez.
+pulls.has_merged=Échec : La demande d’ajout est déjà fusionnée, vous ne pouvez plus la fusionner, ni modifier sa branche cible.
+pulls.push_rejected=Échec du push : la soumission a été rejetée. Revoyez les Git hook pour ce dépôt.
+pulls.push_rejected_summary=Message de rejet complet
+pulls.push_rejected_no_message=Échec du push : la soumission a été rejetée sans raison. Revoyez les Git hooks pour ce dépôt
+pulls.open_unmerged_pull_exists=`Vous ne pouvez pas rouvrir ceci car la demande d’ajout #%d, en attente, a des propriétés identiques.`
+pulls.status_checking=Certains contrôles sont en attente
+pulls.status_checks_success=Tous les contrôles ont réussi
+pulls.status_checks_warning=Quelques vérifications ont signalé des avertissements
+pulls.status_checks_failure=Certaines vérifications ont échoué
+pulls.status_checks_error=Quelques vérifications ont signalé des erreurs
+pulls.status_checks_requested=Requis
+pulls.status_checks_details=Détails
+pulls.status_checks_hide_all=Masquer toutes les vérifications
+pulls.status_checks_show_all=Afficher toutes les vérifications
+pulls.update_branch=Actualiser la branche par fusion
+pulls.update_branch_rebase=Actualiser la branche par rebasage
+pulls.update_branch_success=La mise à jour de la branche a réussi
+pulls.update_not_allowed=Vous n'êtes pas autorisé à mettre à jour la branche
+pulls.outdated_with_base_branch=Cette branche est désynchronisée avec la branche de base
+pulls.close=Fermer la demande d’ajout
+pulls.closed_at=`a fermé cette demande d'ajout %s`
+pulls.reopened_at=`a rouvert cette demande d'ajout %s`
+pulls.cmd_instruction_hint=Voir les instructions en ligne de commande
+pulls.cmd_instruction_checkout_title=Basculer
+pulls.cmd_instruction_checkout_desc=Depuis votre dépôt, basculer sur une nouvelle branche et tester des modifications.
+pulls.cmd_instruction_merge_title=Fusionner
+pulls.cmd_instruction_merge_desc=Fusionner les modifications et mettre à jour sur Forgejo.
+pulls.clear_merge_message=Effacer le message de fusion
+pulls.clear_merge_message_hint=Effacer le message de fusion ne supprimera que le message de la révision, mais pas les pieds de révision générés tels que "Co-Authored-By:".
+
+pulls.auto_merge_button_when_succeed=(Lorsque les vérifications ont réussi)
+pulls.auto_merge_when_succeed=Fusionner automatiquement si toutes les vérifications passent
+pulls.auto_merge_newly_scheduled=La demande d'ajout était programmée pour fusionner lorsque toutes les vérifications aurait réussi.
+pulls.auto_merge_has_pending_schedule=%[1]s Ont planifié cette demande d'ajout pour fusionner automatiquement lorsque toutes les vérifications réussissent %[2]s.
+
+pulls.auto_merge_cancel_schedule=Annuler la fusion automatique
+pulls.auto_merge_not_scheduled=Cette demande d'ajout n'est pas planifiée pour fusionner automatiquement.
+pulls.auto_merge_canceled_schedule=La fusion automatique a été annulée pour cette demande d'ajout.
+
+pulls.auto_merge_newly_scheduled_comment=`a programmé la fusion automatique de cette demande d’ajout, si toutes les vérifications passent, %[1]s.`
+pulls.auto_merge_canceled_schedule_comment=`a annulé la fusion automatique de cette demande d'ajout %[1]s.`
+
+pulls.delete.title=Supprimer cette demande d'ajout ?
+pulls.delete.text=Voulez-vous vraiment supprimer cet demande d'ajout ? (Cela supprimera définitivement tout le contenu. Envisagez de le fermer à la place, si vous avez l'intention de le garder archivé)
+
+pulls.recently_pushed_new_branches=Vous avez soumis sur la branche %[1]s %[2]s
+
+pull.deleted_branch=(supprimé) : %s
+
+milestones.new=Nouveau jalon
+milestones.closed=%s fermé
+milestones.update_ago=Actualisé %s
+milestones.no_due_date=Aucune date d'échéance
+milestones.open=Ouvrir
+milestones.close=Fermer
+milestones.new_subheader=Les jalons peuvent vous aider à organiser vos tickets et à suivre leurs progrès.
+milestones.completeness=%d%% Complété
+milestones.create=Créer un Jalon
+milestones.title=Titre
+milestones.desc=Description
+milestones.due_date=Date d'échéance (facultatif)
+milestones.clear=Effacer
+milestones.invalid_due_date_format=Le format de la date d'échéance est invalide, il doit être comme suit "aaaa-mm-jj".
+milestones.create_success=Le jalon "%s" a été créé.
+milestones.edit=Éditer le Jalon
+milestones.edit_subheader=Les jalons organisent les tickets et le suivi d'avancement.
+milestones.cancel=Annuler
+milestones.modify=Mettre à jour un jalon
+milestones.edit_success=Le jalon "%s" a été mis à jour.
+milestones.deletion=Supprimer un Jalon
+milestones.deletion_desc=Supprimer un jalon le retire de tous les tickets. Continuer ?
+milestones.deletion_success=Le jalon a été supprimé.
+milestones.filter_sort.earliest_due_data=Date d’échéance la plus proche
+milestones.filter_sort.latest_due_date=Date d’échéance la plus récente
+milestones.filter_sort.least_complete=Le moins complété
+milestones.filter_sort.most_complete=Le plus complété
+milestones.filter_sort.most_issues=Le plus de tickets
+milestones.filter_sort.least_issues=Le moins de tickets
+
+signing.will_sign=Cette révision sera signée avec la clé « %s ».
+signing.wont_sign.error=Une erreur s'est produite lors des vérifications préliminaires à la signature de la révision.
+signing.wont_sign.nokey=Aucune clé n’est disponible sur cette instance pour signer cette révision.
+signing.wont_sign.never=Les révisions ne sont jamais signées.
+signing.wont_sign.always=Les révisions sont toujours signées.
+signing.wont_sign.pubkey=La révision ne sera pas signée car vous votre compte ne possède pas de clé publique.
+signing.wont_sign.twofa=Vous devez activer l'authentification à deux facteurs pour signer vos révisions.
+signing.wont_sign.parentsigned=Cette révision ne sera pas signée car son parent n’est pas signée.
+signing.wont_sign.basesigned=La fusion ne sera pas signée car la première révision n’est pas signée.
+signing.wont_sign.headsigned=La fusion ne sera pas signée car la dernière révision n’est pas signée.
+signing.wont_sign.commitssigned=La fusion ne sera pas signée car ses révisions ne sont pas signées.
+signing.wont_sign.approved=La fusion ne sera pas signée car la demande d'ajout n'a pas été approuvée.
+signing.wont_sign.not_signed_in=Vous n'êtes pas connecté.
+
+ext_wiki=Wiki externe
+wiki=Wiki
+wiki.welcome=Bienvenue sur le wiki.
+wiki.welcome_desc=Le wiki vous permet d'écrire ou de partager de la documentation avec vos collaborateurs.
+wiki.desc=Écrire et partager de la documentation avec vos collaborateurs.
+wiki.create_first_page=Créer la première page
+wiki.page=Page
+wiki.filter_page=Filtrer la page
+wiki.new_page=Page
+wiki.page_title=Titre de la page
+wiki.page_content=Contenu de la page
+wiki.default_commit_message=Écrire une note concernant cette mise à jour (optionnel).
+wiki.save_page=Enregistrer la page
+wiki.last_commit_info=%s a édité cette page %s
+wiki.edit_page_button=Modifier
+wiki.new_page_button=Nouvelle page
+wiki.file_revision=Révisions de la page
+wiki.wiki_page_revisions=Révisions de la page wiki
+wiki.back_to_wiki=Retour à la page wiki
+wiki.delete_page_button=Supprimer la page
+wiki.delete_page_notice_1=Supprimer la page de wiki "%s" est irréversible. Continuer ?
+wiki.page_already_exists=Une page de wiki avec le même nom existe déjà.
+wiki.reserved_page=Le nom de page de wiki "%s" est réservé.
+wiki.pages=Pages
+wiki.last_updated=Dernière mise à jour : %s
+wiki.page_name_desc=Entrez un nom pour cette page Wiki. Certains noms spéciaux sont « Home », « _Sidebar » et « _Footer ».
+wiki.original_git_entry_tooltip=Voir le fichier Git original au lieu d'utiliser un lien convivial.
+
+activity=Activité
+activity.navbar.contributors = Contributeurs
+activity.period.filter_label=Période :
+activity.period.daily=1 jour
+activity.period.halfweekly=3 jours
+activity.period.weekly=1 semaine
+activity.period.monthly=1 mois
+activity.period.quarterly=3 mois
+activity.period.semiyearly=6 mois
+activity.period.yearly=1 an
+activity.overview=Vue d'ensemble
+activity.merged_prs_count_1=Demande d'ajout fusionnée
+activity.merged_prs_count_n=Demandes d'ajout fusionnées
+activity.opened_prs_count_1=Demande d'ajout proposée
+activity.opened_prs_count_n=Demandes d'ajout proposées
+activity.title.user_1=%d utilisateur
+activity.title.user_n=%d utilisateurs
+activity.title.prs_1=%d demande d'ajout
+activity.title.prs_n=%d demandes d'ajout
+activity.title.prs_merged_by=%s fusionnée par %s
+activity.title.prs_opened_by=%s proposée par %s
+activity.merged_prs_label=Fusionnée
+activity.opened_prs_label=Proposée
+activity.closed_issues_count_1=Ticket fermé
+activity.closed_issues_count_n=Tickets fermés
+activity.title.issues_1=%d ticket
+activity.title.issues_n=%d tickets
+activity.title.issues_closed_from=%s fermé par %s
+activity.title.issues_created_by=%s créé par %s
+activity.closed_issue_label=Fermé
+activity.new_issues_count_1=Nouveau ticket
+activity.new_issues_count_n=Nouveaux tickets
+activity.new_issue_label=Ouvert
+activity.title.unresolved_conv_1=%d conversation non résolue
+activity.title.unresolved_conv_n=%d conversations non résolues
+activity.unresolved_conv_desc=Ces tickets et demandes de fusion récemment mis à jour n'ont pas encore été résolus.
+activity.unresolved_conv_label=Ouvrir
+activity.title.releases_1=%d publication
+activity.title.releases_n=%d publications
+activity.title.releases_published_by=%s publiée par %s
+activity.published_release_label=Publication
+activity.no_git_activity=Il n'y a pas eu de nouvelle révision dans cette période.
+activity.git_stats_exclude_merges=En excluant les fusions,
+activity.git_stats_author_1=%d auteur
+activity.git_stats_author_n=%d auteurs
+activity.git_stats_pushed_1=a soumis
+activity.git_stats_pushed_n=ont soumis
+activity.git_stats_commit_1=%d révision
+activity.git_stats_commit_n=%d révisions
+activity.git_stats_push_to_branch=sur %s et
+activity.git_stats_push_to_all_branches=sur toutes les branches.
+activity.git_stats_on_default_branch=Sur %s,
+activity.git_stats_file_1=%d fichier
+activity.git_stats_file_n=%d fichiers
+activity.git_stats_files_changed_1=a changé
+activity.git_stats_files_changed_n=ont changé
+activity.git_stats_additions=et il y a eu
+activity.git_stats_addition_1=%d ajout
+activity.git_stats_addition_n=%d ajouts
+activity.git_stats_and_deletions=et
+activity.git_stats_deletion_1=%d suppression
+activity.git_stats_deletion_n=%d suppressions
+
+contributors.contribution_type.filter_label = Type de contributeur :
+contributors.contribution_type.commits = Commits
+contributors.contribution_type.additions = Ajouts
+contributors.contribution_type.deletions = Suppressions
+settings=Paramètres
+settings.desc=Les paramètres sont l'endroit où gérer les options du dépôt
+settings.options=Dépôt
+settings.collaboration=Collaborateurs
+settings.collaboration.admin=Administrateur
+settings.collaboration.write=Écriture
+settings.collaboration.read=Lecture
+settings.collaboration.owner=Propriétaire
+settings.collaboration.undefined=Indéfini
+settings.hooks=Webhooks
+settings.githooks=Git hooks
+settings.basic_settings=Paramètres de base
+settings.mirror_settings=Réglages miroir
+settings.mirror_settings.docs=Configurez votre dépôt pour synchroniser automatiquement les révisions, étiquettes et branches avec un autre dépôt.
+settings.mirror_settings.docs.disabled_pull_mirror.instructions=Configurez votre projet pour soumettre automatiquement les révisions, étiquettes et branches vers un autre dépôt. Les miroirs ont été désactivés par l'administrateur de votre site.
+settings.mirror_settings.docs.disabled_push_mirror.instructions=Configurez votre projet pour synchroniser automatiquement les révisions, étiquettes et branches d'un autre dépôt.
+settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Pour l’instant, cela ne peut être fait que dans le menu « Nouvelle migration ». Pour plus d’informations, veuillez consulter :
+settings.mirror_settings.docs.disabled_push_mirror.info=Les miroirs push ont été désactivés par l’administrateur de votre site.
+settings.mirror_settings.docs.no_new_mirrors=Votre dépôt se synchronise avec un dépôt distant. Vous ne pouvez pas créer de nouveaux miroirs pour le moment.
+settings.mirror_settings.docs.can_still_use=Bien que vous ne puissiez pas modifier les miroirs ou en créer de nouveaux, vous pouvez toujours utiliser le(s) miroir(s) existant(s).
+settings.mirror_settings.docs.pull_mirror_instructions=Pour configurer un miroir pull, veuillez consulter :
+settings.mirror_settings.docs.more_information_if_disabled=Vous pouvez en savoir plus sur les miroirs push et pull ici :
+settings.mirror_settings.docs.doc_link_title=Comment mettre en miroir les dépôts ?
+settings.mirror_settings.docs.doc_link_pull_section=la section « Pulling from a remote repository » de la documentation.
+settings.mirror_settings.docs.pulling_remote_title=Tirer depuis un dépôt distant
+settings.mirror_settings.mirrored_repository=Dépôt en miroir
+settings.mirror_settings.direction=Direction
+settings.mirror_settings.direction.pull=Tirer
+settings.mirror_settings.direction.push=Soumission
+settings.mirror_settings.last_update=Dernière mise à jour
+settings.mirror_settings.push_mirror.none=Aucun miroir push configuré
+settings.mirror_settings.push_mirror.remote_url=URL du dépôt distant Git
+settings.mirror_settings.push_mirror.add=Ajouter un miroir push
+settings.mirror_settings.push_mirror.edit_sync_time=Modifier la fréquence de synchronisation du miroir
+
+settings.sync_mirror=Synchroniser maintenant
+settings.pull_mirror_sync_in_progress=Récupération des changements depuis le miroir distant %s en cours.
+settings.push_mirror_sync_in_progress=Versement des changements vers le miroir distant %s en cours.
+settings.site=Site Web
+settings.update_settings=Appliquer les paramètres
+settings.update_mirror_settings=Mettre à jour les paramètres du miroir
+settings.branches.switch_default_branch=Changer de branche
+settings.branches.update_default_branch=Changer la branche par défaut
+settings.branches.add_new_rule=Ajouter une nouvelle règle
+settings.advanced_settings=Paramètres avancés
+settings.wiki_desc=Activer le wiki du dépôt
+settings.use_internal_wiki=Utiliser le wiki interne
+settings.use_external_wiki=Utiliser un wiki externe
+settings.external_wiki_url=URL wiki externe
+settings.external_wiki_url_error=L’URL du wiki externe n’est pas une URL valide.
+settings.external_wiki_url_desc=Les visiteurs sont redirigés vers l’URL du wiki externe lors d'un clic sur l’onglet wiki.
+settings.issues_desc=Activer le suivi de tickets du dépôt
+settings.use_internal_issue_tracker=Utiliser le suivi de tickets interne
+settings.use_external_issue_tracker=Utiliser un système de suivi de tickets externe
+settings.external_tracker_url=Adresse du système de tickets externe
+settings.external_tracker_url_error=L’URL du système de suivi de tickets externe n’est pas une URL valide.
+settings.external_tracker_url_desc=Les visiteurs sont redirigés vers l’URL du système de suivi de tickets externe lors d'un clic sur l’onglet tickets.
+settings.tracker_url_format=Format de l'URL du système de tickets
+settings.tracker_url_format_error=L’URL du système de suivi de tickets externe n’est pas une URL valide.
+settings.tracker_issue_style=Format du nombre de tickets du système de tickets externe
+settings.tracker_issue_style.numeric=Numérique
+settings.tracker_issue_style.alphanumeric=Alphanumérique
+settings.tracker_issue_style.regexp=Expression régulière
+settings.tracker_issue_style.regexp_pattern=Motif d'expression régulière
+settings.tracker_issue_style.regexp_pattern_desc=Le premier groupe capturé sera utilisé à la place de {index}.
+settings.tracker_url_format_desc=Utilisez les balises {user}, {repo} et {index} respectivement pour le nom d'utilisateur, le nom du dépôt et le numéro de ticket.
+settings.enable_timetracker=Activer le suivi du temps
+settings.allow_only_contributors_to_track_time=Restreindre le suivi de temps aux contributeurs
+settings.pulls_desc=Activer les demandes d'ajout
+settings.pulls.ignore_whitespace=Ignorer les espaces lors des conflits
+settings.pulls.enable_autodetect_manual_merge=Activer la détection automatique de la fusion manuelle (Remarque : dans certains cas particuliers, des erreurs de détection peuvent se produire)
+settings.pulls.allow_rebase_update=Activer la mise à jour de demande d'ajout par rebase
+settings.pulls.default_delete_branch_after_merge=Supprimer la branche après la fusion par default
+settings.pulls.default_allow_edits_from_maintainers=Autoriser les modifications par les mainteneurs par défaut
+settings.releases_desc=Activer les publications du dépôt
+settings.packages_desc=Activer le registre des paquets du dépôt
+settings.projects_desc=Activer les projets de dépôt
+settings.actions_desc=Activer l'intégration continue avec Forgejo Actions
+settings.admin_settings=Paramètres administrateur
+settings.admin_enable_health_check=Activer les vérifications de santé du dépôt (git fsck)
+settings.admin_code_indexer=Indexeur de code
+settings.admin_stats_indexer=Indexeur des statistiques de code
+settings.admin_indexer_commit_sha=Dernier commit indexé
+settings.admin_indexer_unindexed=Non indexé
+settings.reindex_button=Ajouter à queue de réindexation
+settings.reindex_requested=Réindexation demandée
+settings.admin_enable_close_issues_via_commit_in_any_branch=Fermer un ticket via une révision faite sur une branche non par défaut
+settings.danger_zone=Zone de danger
+settings.new_owner_has_same_repo=Le nouveau propriétaire a déjà un dépôt nommé ainsi.
+settings.convert=Convertir en dépôt standard
+settings.convert_desc=Vous pouvez convertir ce miroir en dépôt standard. Cette action est irréversible.
+settings.convert_notices_1=Cette opération convertira le miroir en dépôt standard. Cette action est irréversible.
+settings.convert_confirm=Convertir le dépôt
+settings.convert_succeed=Le miroir a été converti en dépôt standard.
+settings.convert_fork=Convertir en dépôt standard
+settings.convert_fork_desc=Vous pouvez convertir cette bifurcation en dépôt standard. Cette action est irréversible.
+settings.convert_fork_notices_1=Cette opération convertira la bifurcation en dépôt standard. Cette action est irréversible.
+settings.convert_fork_confirm=Convertir le dépôt
+settings.convert_fork_succeed=La bifurcation a été convertie en dépôt standard.
+settings.transfer.title=Changer de propriétaire
+settings.transfer.rejected=Le transfert du dépôt a été rejeté.
+settings.transfer.success=Le transfert du dépôt a réussi.
+settings.transfer_abort=Annuler le transfert
+settings.transfer_abort_invalid=Vous ne pouvez pas annuler un transfert de dépôt inexistant.
+settings.transfer_abort_success=Le transfert du dépôt vers %s a bien été stoppé.
+settings.transfer_desc=Transférer ce dépôt à un autre utilisateur ou une organisation dont vous possédez des droits d'administrateur.
+settings.transfer_in_progress=Il y a actuellement un transfert en cours. Veuillez l'annuler si vous souhaitez transférer ce dépôt à un autre utilisateur.
+settings.transfer_notices_1=- Vous perdrez l'accès à ce dépôt si vous le transférez à un autre utilisateur.
+settings.transfer_notices_2=- Vous conserverez l'accès à ce dépôt si vous le transférez à une organisation dont vous êtes (co-)propriétaire.
+settings.transfer_notices_3=- Si le dépôt est privé et est transféré à un utilisateur individuel, cette action s'assure que l'utilisateur a au moins la permission de lire (et modifie les permissions si nécessaire).
+settings.transfer_owner=Nouveau propriétaire
+settings.transfer_perform=Effectuer le transfert
+settings.transfer_started=`Ce dépôt a été marqué pour le transfert et attend la confirmation de "%s"`
+settings.transfer_succeed=Le dépôt a été transféré.
+settings.signing_settings=Paramètres de vérification de la signature
+settings.trust_model=Niveau de confiance
+settings.trust_model.default=Modèle de confiance par défaut
+settings.trust_model.default.desc=Utiliser le niveau de confiance configuré par défaut pour cette instance Forgejo.
+settings.trust_model.collaborator=Collaborateur
+settings.trust_model.collaborator.long=Collaborateur : ne se fier qu'aux signatures des collaborateurs du dépôt
+settings.trust_model.collaborator.desc=La signature d'une révision est dite « fiable » si elle correspond à un collaborateur du dépôt, indépendamment de son auteur. À défaut, si elle correspond à l'auteur de la révision, elle sera « dilettante », et « discordante » sinon.
+settings.trust_model.committer=Auteur
+settings.trust_model.committer.long=Auteur : ne se fier qu'aux signatures des auteurs des révisions (mimique GitHub en forçant Forgejo à co-signer ses révisions)
+settings.trust_model.committer.desc=La signature d'une révision est dite « fiable » si elle corresponds à son auteur, autrement elle est « discordante ». Pour les révisions déléguées à Forgejo, elles seront signées par Forgejo et l'auteur original sera crédité "Co-authored-by:" et "Co-committed-by:" en pied de révision. Pour cela, la clé configurée par défaut de Forgejo doit correspondre à celle d'un utilisateur.
+settings.trust_model.collaboratorcommitter=Collaborateur et Auteur
+settings.trust_model.collaboratorcommitter.long=Collaborateur et Auteur : ne se fier qu'aux signatures des auteurs collaborant au dépôt
+settings.trust_model.collaboratorcommitter.desc=La signature d'une révision est dite « fiable » si elle correponds à l'auteur collaborant au dépôt. Elle est « dilettante » si elle ne correponds qu'à l'auteur, et autrement « discordante ». Pour les révisions déléguées à Forgejo, elles seront signées par Forgejo et l'auteur original sera crédité "Co-authored-by:" et "Co-committed-by:" en pied de révision. Pour cela, la clé configurée par défaut de Forgejo doit correspondre à celle d'un utilisateur.
+settings.wiki_delete=Supprimer les données du wiki
+settings.wiki_delete_desc=Supprimer les données du wiki d'un dépôt est permanent. Cette action est irréversible.
+settings.wiki_delete_notices_1=- Ceci supprimera de manière permanente et désactivera le wiki de dépôt pour %s.
+settings.confirm_wiki_delete=Supprimer les données du wiki
+settings.wiki_deletion_success=Les données du wiki de ce dépôt ont été effacées.
+settings.delete=Supprimer ce dépôt
+settings.delete_desc=Supprimer un dépôt est permanent et irréversible.
+settings.delete_notices_1=- Cette opération est irréversible.
+settings.delete_notices_2=- Cette opération supprimera définitivement le dépôt %s, y compris le code, les tickets, les commentaires, les données de wiki et les accès des collaborateurs.
+settings.delete_notices_fork_1=- Les bifurcations de ce dépôt deviendront indépendants après suppression.
+settings.deletion_success=Le dépôt a été supprimé.
+settings.update_settings_success=Les options du dépôt ont été mises à jour.
+settings.update_settings_no_unit=Impossible de désactiver toutes les fonctionnalités d'un dépôt. Vous ne pourrez gère l'utiliser.
+settings.confirm_delete=Supprimer le dépôt
+settings.add_collaborator=Ajouter un collaborateur
+settings.add_collaborator_success=Le collaborateur a été ajouté.
+settings.add_collaborator_inactive_user=Impossible d'ajouter un utilisateur inactif en tant que collaborateur.
+settings.add_collaborator_owner=Impossible d'ajouter un propriétaire en tant que collaborateur.
+settings.add_collaborator_duplicate=Le collaborateur est déjà ajouté à ce dépôt.
+settings.delete_collaborator=Supprimer
+settings.collaborator_deletion=Supprimer le collaborateur
+settings.collaborator_deletion_desc=La suppression d'un collaborateur révoque son accès à ce dépôt. Continuer ?
+settings.remove_collaborator_success=Le collaborateur a été retiré.
+settings.org_not_allowed_to_be_collaborator=Les organisations ne peuvent être ajoutées en tant que collaborateur.
+settings.change_team_access_not_allowed=La modification de l'accès de l'équipe au dépôt a été limitée au propriétaire de l'organisation
+settings.team_not_in_organization=L'équipe n'est pas dans la même organisation que le dépôt
+settings.teams=Équipes
+settings.add_team=Ajouter une équipe
+settings.add_team_duplicate=L'équipe a déjà le dépôt
+settings.add_team_success=L'équipe a maintenant accès au dépôt.
+settings.change_team_permission_tip=La permission de l'équipe est définie sur la page de configuration de l'équipe et ne peut pas être modifiée par dépôt
+settings.delete_team_tip=Cette équipe a accès à tous les dépôts et ne peut pas être supprimée
+settings.remove_team_success=L'accès de l'équipe au dépôt a été supprimé.
+settings.add_webhook=Ajouter un webhook
+settings.add_webhook.invalid_channel_name=Le nom du canal Webhook ne peut pas être vide et ne peut pas contenir seulement un caractère #.
+settings.hooks_desc=Les Webhooks font automatiquement des requêtes HTTP POST à un serveur lorsque certains événements Forgejo se déclenchent. Lire la suite dans le guide des Webhooks.
+settings.webhook_deletion=Retirer le webhook
+settings.webhook_deletion_desc=Supprimer un webhook supprime ses paramètres et son historique. Continuer ?
+settings.webhook_deletion_success=Le webhook a été supprimé.
+settings.webhook.test_delivery=Tester l'envoi
+settings.webhook.test_delivery_desc=Testez ce webhook avec un faux événement.
+settings.webhook.test_delivery_desc_disabled=Pour tester ce webhook avec un faux événement, activez-le.
+settings.webhook.request=Requête
+settings.webhook.response=Réponse
+settings.webhook.headers=Entêtes
+settings.webhook.payload=Contenu
+settings.webhook.body=Corps
+settings.webhook.replay.description=Rejouer ce déclencheur.
+settings.webhook.replay.description_disabled=Pour rejouer ce webhook, activez-le.
+settings.webhook.delivery.success=Un événement a été ajouté à la file d'attente. Cela peut prendre quelques secondes avant qu'il n'apparaisse dans l'historique de livraison.
+settings.githooks_desc=Les Git hooks sont lancés par Git lui-même. Ils sont modifiables dans la liste ci-dessous afin de configurer des opérations personnalisées.
+settings.githook_edit_desc=Si un Hook est inactif, un exemple de contenu vous sera proposé. Un contenu laissé vide signifie un Hook inactif.
+settings.githook_name=Nom du hook
+settings.githook_content=Contenu du Hook
+settings.update_githook=Mettre le Hook à jour
+settings.add_webhook_desc=Forgejo enverra à l'URL cible des requêtes POST avec le Content-Type spécifié. Lire la suite dans le guide des webhooks.
+settings.payload_url=URL cible
+settings.http_method=Méthode HTTP
+settings.content_type=Type de contenu POST
+settings.secret=Secret
+settings.slack_username=Nom d'utilisateur
+settings.slack_icon_url=URL de l'icône
+settings.slack_color=Couleur
+settings.discord_username=Nom d'utilisateur
+settings.discord_icon_url=URL de l'icône
+settings.event_desc=Événement déclencheur :
+settings.event_push_only=Événements de soumissions
+settings.event_send_everything=Tous les événements
+settings.event_choose=Événements personnalisés…
+settings.event_header_repository=Événements du dépôt
+settings.event_create=Création
+settings.event_create_desc=Branche ou étiquette créé.
+settings.event_delete=Suppression
+settings.event_delete_desc=Branche ou étiquette supprimée.
+settings.event_fork=Bifurcation
+settings.event_fork_desc=Dépôt bifurqué.
+settings.event_wiki=Wiki
+settings.event_wiki_desc=Page wiki créée, renommée, modifiée ou supprimée.
+settings.event_release=Publication
+settings.event_release_desc=Publication publiée, mise à jour ou supprimée.
+settings.event_push=Soumission
+settings.event_push_desc=Soumission Git.
+settings.event_repository=Dépôt
+settings.event_repository_desc=Dépôt créé ou supprimé.
+settings.event_header_issue=Événements de ticket
+settings.event_issues=Modification
+settings.event_issues_desc=Ticket ouvert, rouvert, fermé ou modifié.
+settings.event_issue_assign=Assigné
+settings.event_issue_assign_desc=Ticket assigné ou dé-assigné.
+settings.event_issue_label=Étiqueté
+settings.event_issue_label_desc=Labels attribués ou retirés.
+settings.event_issue_milestone=Jalonné
+settings.event_issue_milestone_desc=Ticket jalonné ou dé-jalonné.
+settings.event_issue_comment=Commenté
+settings.event_issue_comment_desc=Commentaire créé, modifié ou supprimé.
+settings.event_header_pull_request=Événements de demande d'ajout
+settings.event_pull_request=Demande d'ajout
+settings.event_pull_request_desc=Demande d’ajout ouverte, rouverte, fermée ou modifiée.
+settings.event_pull_request_assign=Assignée
+settings.event_pull_request_assign_desc=Demande d'ajout assignée ou non assignée.
+settings.event_pull_request_label=Étiquetée
+settings.event_pull_request_label_desc=Label attribué ou retiré.
+settings.event_pull_request_milestone=Jalonnée
+settings.event_pull_request_milestone_desc=Jalonnée ou dé-jalonnée.
+settings.event_pull_request_comment=Commentaires
+settings.event_pull_request_comment_desc=Commentaire créé, modifié ou supprimé.
+settings.event_pull_request_review=Évaluations
+settings.event_pull_request_review_desc=Demande d’ajout approuvée, rejetée ou commentaires d'évaluation ajoutés.
+settings.event_pull_request_sync=Synchronisée
+settings.event_pull_request_sync_desc=Branche mise à jour automatiquement avec la branche cible.
+settings.event_pull_request_review_request=Requête d’évaluation
+settings.event_pull_request_review_request_desc=Création ou suppresion de demandes d’évaluation.
+settings.event_pull_request_approvals=Approbations de demande d'ajout
+settings.event_pull_request_merge=Fusion de demande d'ajout
+settings.event_package=Paquet
+settings.event_package_desc=Paquet créé ou supprimé.
+settings.branch_filter=Filtre de branche
+settings.branch_filter_desc=Liste de branches et motifs globs autorisant la soumission, la création et suppression de branches. Laisser vide ou utiliser * englobent toutes les branches. Voir la syntaxe Glob. Exemples : master, {master,release*}.
+settings.authorization_header=En-tête « Authorization »
+settings.authorization_header_desc=Si présent, sera ajouté aux requêtes comme en-tête d’authentification. Exemples : %s.
+settings.active=Actif
+settings.active_helper=Les informations sur les événements déclenchés seront envoyées à cette url de Webhook.
+settings.add_hook_success=Nouveau Webhook ajouté.
+settings.update_webhook=Actualiser le déclencheur « webhook »
+settings.update_hook_success=Déclencheur Web actualisé.
+settings.delete_webhook=Retirer le déclencheur
+settings.recent_deliveries=Livraisons récentes
+settings.hook_type=Type de déclencheur
+settings.slack_token=Jeton
+settings.slack_domain=Domaine
+settings.slack_channel=Canal
+settings.add_web_hook_desc=Intégrez %s dans votre dépôt.
+settings.web_hook_name_gitea=Gitea
+settings.web_hook_name_forgejo = Forgejo
+settings.web_hook_name_gogs=Gogs
+settings.web_hook_name_slack=Slack
+settings.web_hook_name_discord=Discord
+settings.web_hook_name_dingtalk=DingTalk
+settings.web_hook_name_telegram=Telegram
+settings.web_hook_name_matrix=Matrix
+settings.web_hook_name_msteams=Microsoft Teams
+settings.web_hook_name_feishu=Feishu / Lark Suite
+settings.web_hook_name_feishu_only =Feishu
+settings.web_hook_name_larksuite_only =Lark Suite
+settings.web_hook_name_wechatwork=WeCom (Wechat Work)
+settings.web_hook_name_packagist=Packagist
+settings.packagist_username=Nom d'utilisateur Packagist
+settings.packagist_api_token=Jeton API
+settings.packagist_package_url=URL du paquet Packagist
+settings.deploy_keys=Clés de déploiement
+settings.add_deploy_key=Ajouter une clé de déploiement
+settings.deploy_key_desc=Les clefs de déploiement peuvent avoir un accès en lecture seule ou en lecture et écriture au dépôt.
+settings.is_writable=Activer l'accès en écriture
+settings.is_writable_info=Autoriser cette clé de déploiement à soumettre sur le dépôt.
+settings.no_deploy_keys=Il n'y a pas encore de clefs de déploiement.
+settings.title=Titre
+settings.deploy_key_content=Contenu
+settings.key_been_used=Une clef de déploiement identique est déjà en cours d'utilisation.
+settings.key_name_used=Une clef de déploiement du même nom existe déjà.
+settings.add_key_success=La clé de déploiement "%s" a été ajoutée.
+settings.deploy_key_deletion=Supprimer une clé de déploiement
+settings.deploy_key_deletion_desc=La suppression d'une clef de déploiement révoque son accès à ce dépôt. Continuer ?
+settings.deploy_key_deletion_success=La clé de déploiement a été supprimée.
+settings.branches=Branches
+settings.protected_branch=Protection de branche
+settings.protected_branch.save_rule=Enregistrer la règle
+settings.protected_branch.delete_rule=Supprimer la règle
+settings.branch_protection=Paramètres de protection pour les branches du motif "%s"
+settings.protect_disable_push=Désactiver la soumission (push)
+settings.protect_disable_push_desc=Aucune soumission ne sera possible sur cette branche.
+settings.protect_enable_push=Activer la soumission (push)
+settings.protect_enable_push_desc=Toute personne ayant un accès en écriture sera autorisée à soumettre sur cette branche (sans forcer).
+settings.protect_enable_merge=Activer la fusion
+settings.protect_enable_merge_desc=Toute personne ayant un accès en écriture sera autorisée à fusionner les demandes d'ajout dans cette branche.
+settings.protect_whitelist_committers=Liste blanche des soumissions (push)
+settings.protect_whitelist_committers_desc=Seuls les utilisateurs ou les équipes autorisés pourront soumettre sur cette branche (sans forcer).
+settings.protect_whitelist_deploy_keys=Mettez les clés de déploiement sur liste blanche avec accès en écriture pour soumettre.
+settings.protect_whitelist_users=Utilisateurs sur liste blanche pour pousser
+settings.protect_whitelist_teams=Équipes sur liste blanche pour pousser
+settings.protect_merge_whitelist_committers=Activer la liste blanche pour la fusion
+settings.protect_merge_whitelist_committers_desc=N'autoriser que les utilisateurs et les équipes en liste blanche d'appliquer les demandes de fusion sur cette branche.
+settings.protect_merge_whitelist_users=Utilisateurs en liste blanche pour fusionner
+settings.protect_merge_whitelist_teams=Équipes en liste blanche pour fusionner
+settings.protect_check_status_contexts=Activer le contrôle de status
+settings.protect_status_check_patterns=Motifs de vérification des statuts
+settings.protect_status_check_patterns_desc=Entrez des motifs pour spécifier quelles vérifications doivent réussir avant que des branches puissent être fusionnées. Un motif par ligne. Un motif ne peut être vide.
+settings.protect_check_status_contexts_desc=Exiger le status « succès » avant de fusionner. Quand activée, une branche protégée ne peux accepter que des soumissions ou des fusions ayant le status « succès ». Lorsqu'il n'y a pas de contexte, la dernière révision fait foi.
+settings.protect_check_status_contexts_list=Contrôles qualité trouvés au cours de la semaine dernière pour ce dépôt
+settings.protect_status_check_matched=Correspondant
+settings.protect_invalid_status_check_pattern=Motif de vérification des statuts incorrect : « %s ».
+settings.protect_no_valid_status_check_patterns=Aucun motif de vérification des statuts valide.
+settings.protect_required_approvals=Approbations requises
+settings.protect_required_approvals_desc=Permet de fusionner les demandes d’ajout lorsque suffisamment d’évaluation sont positives.
+settings.protect_approvals_whitelist_enabled=Restreindre les approbations aux utilisateurs ou aux équipes en liste blanche
+settings.protect_approvals_whitelist_enabled_desc=Seuls les évaluations des utilisateurs ou des équipes suivantes compteront dans les approbations requises. Si laissé vide, les évaluations de toute personne ayant un accès en écriture seront comptabilisées à la place.
+settings.protect_approvals_whitelist_users=Évaluateurs autorisés
+settings.protect_approvals_whitelist_teams=Équipes d’évaluateurs autorisés
+settings.dismiss_stale_approvals=Révoquer automatiquement les approbations périmées
+settings.dismiss_stale_approvals_desc=Lorsque des nouvelles révisions changent le contenu de la demande d’ajout, les approbations existantes sont révoquées.
+settings.ignore_stale_approvals = Ignorer les approbations obsolètes
+settings.ignore_stale_approvals_desc = Ne pas prendre en compte les approbations faites sur d'anciens commits (revues obsolètes) dans le total des approbations pour cette PR. Sans effet si les revues obsolètes ont déjà été annulées.
+settings.require_signed_commits=Exiger des révisions (commits) signées
+settings.require_signed_commits_desc=Rejeter les soumissions sur cette branche lorsqu'ils ne sont pas signés ou vérifiables.
+settings.protect_branch_name_pattern=Motif de nom de branche protégé
+settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la documentation pour la syntaxe du motif. Exemples : main, release/**
+settings.protect_patterns=Motifs
+settings.protect_protected_file_patterns=Motifs de fichiers protégés (séparés par un point virgule ";")
+settings.protect_protected_file_patterns_desc=Les fichiers protégés ne peuvent être modifiés, même si l'utilisateur a le droit d'ajouter, éditer ou supprimer des fichiers dans cette branche. Plusieurs motifs peuvent être séparés par un point-virgule (";"). Veuillez voir %[2]s la documentation pour la syntaxe des motifs. Exemples : .drone.yml, /docs/**/*.txt.
+settings.protect_unprotected_file_patterns=Motifs de fichiers non protégés (séparés par un point virgule ";")
+settings.protect_unprotected_file_patterns_desc=Les fichiers non-protégés qui peuvent être modifiés si l'utilisateur a le droit d'écriture, prenant le pas sur les restrictions de push. Plusieurs motifs peuvent être séparés par un point-virgule (";"). Veuillez voir %[2]s la documentation pour la syntaxe des motifs. Exemples : .drone.yml, /docs/**/*.txt.
+settings.update_protect_branch_success=La règle de protection de branche "%s" a été mise à jour.
+settings.remove_protected_branch_success=La règle de protection de branche "%s" a été retirée.
+settings.remove_protected_branch_failed=Impossible de retirer la règle de protection de branche "%s".
+settings.protected_branch_deletion=Désactiver la protection de branche
+settings.protected_branch_deletion_desc=Désactiver la protection de branche permet aux utilisateurs ayant accès en écriture de pousser des modifications sur la branche. Continuer ?
+settings.block_rejected_reviews=Bloquer la fusion en cas d’évaluations négatives
+settings.block_rejected_reviews_desc=La fusion ne sera pas possible lorsque des modifications sont demandées par les évaluateurs officiels, même s'il y a suffisamment d’approbations.
+settings.block_on_official_review_requests=Bloquer la fusion en cas de demande d’évaluation officielle
+settings.block_on_official_review_requests_desc=La fusion ne sera pas possible tant qu’elle aura des demandes d’évaluations officielles, même s'il y a suffisamment d’approbations.
+settings.block_outdated_branch=Bloquer la fusion si la demande d'ajout est obsolète
+settings.block_outdated_branch_desc=La fusion ne sera pas possible lorsque la branche principale est derrière la branche de base.
+settings.default_branch_desc=Sélectionnez une branche par défaut pour les demandes de fusion et les révisions :
+settings.merge_style_desc=Styles de fusion
+settings.default_merge_style_desc=Style de fusion par défaut
+settings.choose_branch=Choisissez une branche…
+settings.no_protected_branch=Il n'y a pas de branche protégée.
+settings.edit_protected_branch=Éditer
+settings.protected_branch_required_rule_name=Nom de la règle requise
+settings.protected_branch_duplicate_rule_name=Il existe déjà une règle pour cet ensemble de branches
+settings.protected_branch_required_approvals_min=Le nombre de revues nécessaires ne peut être négatif.
+settings.tags=Étiquettes
+settings.tags.protection=Protection d'étiquette
+settings.tags.protection.pattern=Motif d'étiquette
+settings.tags.protection.allowed=Autorisé
+settings.tags.protection.allowed.users=Utilisateurs autorisés
+settings.tags.protection.allowed.teams=Équipes autorisées
+settings.tags.protection.allowed.noone=Personne
+settings.tags.protection.create=Ajouter une règle
+settings.tags.protection.none=Il n'y a pas d'étiquettes protégées.
+settings.tags.protection.pattern.description=Vous pouvez utiliser au choix un nom unique, un motif de glob ou une expression régulière qui correspondra à plusieurs étiquettes. Pour plus d’informations, consultez le guide sur les étiquettes protégées.
+settings.bot_token=Jeton (token) de bot
+settings.chat_id=ID de conversation
+settings.thread_id=ID du fil
+settings.matrix.homeserver_url=URL du serveur d'accueil
+settings.matrix.room_id=ID de la salle
+settings.matrix.message_type=Type de message
+settings.archive.button=Archiver ce dépôt
+settings.archive.header=Archiver ce dépôt
+settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous !). Il est recommandé de documenter la raison de l'archivage afin d'orienter les futurs développeurs susceptibles de forker le dépôt.
+settings.archive.success=Ce dépôt a été archivé avec succès.
+settings.archive.error=Une erreur s'est produite lors de l'archivage du dépôt. Voir le journal pour plus de détails.
+settings.archive.error_ismirror=Vous ne pouvez pas archiver un dépôt en miroir.
+settings.archive.branchsettings_unavailable=Le paramétrage des branches n'est pas disponible quand le dépôt est archivé.
+settings.archive.tagsettings_unavailable=Le paramétrage des étiquettes n'est pas disponible si le dépôt est archivé.
+settings.archive.mirrors_unavailable = Les miroirs ne sont pas disponibles si le dépôt a été archivé.
+settings.unarchive.button=Désarchiver ce dépôt
+settings.unarchive.header=Réhabiliter ce dépôt
+settings.unarchive.text=Réhabiliter un dépôt dégèle les actions de révisions et de soumissions, la gestion des tickets et des demandes d'ajouts.
+settings.unarchive.success=Le dépôt a bien été réhabilité.
+settings.unarchive.error=Une erreur est survenue en essayant deréhabiliter ce dépôt. Voir le journal pour plus de détails.
+settings.update_avatar_success=L'avatar du dépôt a été mis à jour.
+settings.lfs=LFS
+settings.lfs_filelist=Fichiers LFS stockés dans ce dépôt
+settings.lfs_no_lfs_files=Aucun fichier LFS stocké dans ce dépôt
+settings.lfs_findcommits=Trouver des révisions
+settings.lfs_lfs_file_no_commits=Aucune révision trouvée pour ce fichier LFS
+settings.lfs_noattribute=Ce chemin n'a pas l'attribut verrouillable dans la branche par défaut
+settings.lfs_delete=Supprimer le fichier LFS possédant l'OID %s
+settings.lfs_delete_warning=La suppression d'un fichier LFS peut causer l'erreur "l'objet n'existe pas"au checkout. Êtes-vous certain ?
+settings.lfs_findpointerfiles=Trouver les fichiers pointeurs
+settings.lfs_locks=Verrous
+settings.lfs_invalid_locking_path=Chemin invalide : %s
+settings.lfs_invalid_lock_directory=Impossible de verrouiller le répertoire : %s
+settings.lfs_lock_already_exists=Verrou déjà existant : %s
+settings.lfs_lock=Verrou
+settings.lfs_lock_path=Chemin de fichier à verrouiller…
+settings.lfs_locks_no_locks=Pas de verrous
+settings.lfs_lock_file_no_exist=Le fichier verrouillé n'existe pas dans la branche par défaut
+settings.lfs_force_unlock=Forcer le déverrouillage
+settings.lfs_pointers.found=%d pointeur(s) sur blob trouvés - %d associés, %d non associés (%d manquant dans le magasin)
+settings.lfs_pointers.sha=SHA du blob
+settings.lfs_pointers.oid=OID
+settings.lfs_pointers.inRepo=Dans le dépôt
+settings.lfs_pointers.exists=Existe en magasin
+settings.lfs_pointers.accessible=Accessible à l'utilisateur
+settings.lfs_pointers.associateAccessible=Associer %d OID accessibles
+settings.rename_branch_failed_exist=Impossible de renommer la branche car la branche %s existe déjà.
+settings.rename_branch_failed_not_exist=Impossible de renommer la branche %s car elle n’existe pas.
+settings.rename_branch_success=La branche %s à été renommée avec succès en %s.
+settings.rename_branch=Renommer la branche
+
+diff.browse_source=Parcourir la source
+diff.parent=Parent
+diff.commit=révision
+diff.git-notes=Notes
+diff.data_not_available=Contenu de la comparaison (diff) indisponible
+diff.options_button=Option de comparaison (diff)
+diff.download_patch=Télécharger le patch en tant que fichier
+diff.download_diff=Télécharger le fichier diff
+diff.show_split_view=Vue séparée
+diff.show_unified_view=Vue unifiée
+diff.whitespace_button=Espace
+diff.whitespace_show_everything=Afficher toutes les modifications
+diff.whitespace_ignore_all_whitespace=Ignorer les espaces lors de la comparaison des lignes
+diff.whitespace_ignore_amount_changes=Ignorer les changements quand ce sont des espaces
+diff.whitespace_ignore_at_eol=Ignorer les blancs en fin de ligne
+diff.stats_desc= %d fichiers modifiés avec %d ajouts et %d suppressions
+diff.stats_desc_file=%d modifications : %d ajouts et %d suppressions
+diff.bin=BIN
+diff.bin_not_shown=Fichier binaire non affiché.
+diff.view_file=Voir le fichier
+diff.file_before=Avant
+diff.file_after=Après
+diff.file_image_width=Largeur
+diff.file_image_height=Hauteur
+diff.file_byte_size=Taille
+diff.file_suppressed=Le diff du fichier est caché, car celui-ci est trop grand
+diff.file_suppressed_line_too_long=Le diff du fichier est caché, car une ou plusieurs lignes sont trop longues
+diff.too_many_files=Certains fichiers ne sont pas affichés car ce diff contient trop de modifications
+diff.show_more=Voir plus
+diff.load=Voir la diff
+diff.generated=générée
+diff.vendored=externe
+diff.comment.add_line_comment=Commenter cette ligne
+diff.comment.placeholder=Laisser un commentaire
+diff.comment.markdown_info=Formater avec Markdown est autorisé.
+diff.comment.add_single_comment=Commenter (simple)
+diff.comment.add_review_comment=Commenter
+diff.comment.start_review=Débuter une évaluation
+diff.comment.reply=Répondre
+diff.review=Terminer l'évaluation
+diff.review.header=Évaluer
+diff.review.placeholder=Commenter cette évaluation
+diff.review.comment=Commenter
+diff.review.approve=Approuver
+diff.review.self_reject=Les auteurs d’une demande d’ajout ne peuvent pas demander des changements sur leur propre demande d’ajout
+diff.review.reject=Demander des changements
+diff.review.self_approve=Les auteurs d’une demande d’ajout ne peuvent pas approuver leur propre demande d’ajout
+diff.committed_by=révisé par
+diff.protected=Protégé
+diff.image.side_by_side=Côte à côte
+diff.image.swipe=Glisser
+diff.image.overlay=Superposition
+diff.has_escaped=Cette ligne contient des caractères Unicode cachés
+diff.show_file_tree=Afficher l’arborescence des fichiers
+diff.hide_file_tree=Masquer l’arborescence des fichiers
+
+releases.desc=Suivi des publications et des téléchargements.
+release.releases=Publications
+release.detail=Détails de la publication
+release.tags=Étiquettes
+release.new_release=Nouvelle publication
+release.draft=Brouillon
+release.prerelease=Pré-publication
+release.stable=Stable
+release.compare=Comparer
+release.edit=Éditer
+release.ahead.commits=%d révisions
+release.ahead.target=à %s depuis cette publication
+tag.ahead.target=à %s depuis cette étiquette
+release.source_code=Code source
+release.new_subheader=Les publications vous aide à organiser les versions marquantes de votre projet.
+release.edit_subheader=Les publications vous aide à organiser les versions marquantes de votre projet.
+release.tag_name=Nom de l'étiquette
+release.target=Cible
+release.tag_helper=Choisissez une étiquette existante ou créez une nouvelle étiquette.
+release.tag_helper_new=Nouvelle étiquette. Cette étiquette sera créée à partir de la cible.
+release.tag_helper_existing=Étiquette existante.
+release.title=Titre de la publication
+release.title_empty=Le titre ne peut pas être vide.
+release.message=Décrire cette publication
+release.prerelease_desc=Marquer comme pré-publication
+release.prerelease_helper=Marquer cette publication comme impropre à la production.
+release.cancel=Annuler
+release.publish=Publier
+release.save_draft=Sauvegarder le brouillon
+release.edit_release=Actualiser la publication
+release.delete_release=Supprimer cette publication
+release.delete_tag=Supprimer l'étiquette
+release.deletion=Supprimer cette publication
+release.deletion_desc=Supprimer une publication ne supprime que ça. Cela n’affecte pas les étiquettes Git, le code ou l’historique. Continuer ?
+release.deletion_success=Cette livraison a été supprimée.
+release.deletion_tag_desc=Ceci supprimera cette étiquette du dépôt. Le contenu du dépôt et l'historique resteront inchangés. Continuer ?
+release.deletion_tag_success=L'étiquette a été supprimée.
+release.tag_name_already_exist=Une publication avec cette étiquette existe déjà.
+release.tag_name_invalid=Le nom de l'étiquette est invalide.
+release.tag_name_protected=Ce nom d'étiquette est protégé.
+release.tag_already_exist=Ce nom d'étiquette existe déjà.
+release.downloads=Téléchargements
+release.add_tag_msg=Utiliser le titre et le contenu de la publication comme message d’étiquette.
+release.add_tag=Créer l'étiquette
+release.releases_for=Publications pour %s
+release.tags_for=Étiquettes pour %s
+
+branch.name=Nom de la branche
+branch.already_exists=Une branche nommée "%s" existe déjà.
+branch.delete_head=Supprimer
+branch.delete=Supprimer la branche "%s"
+branch.delete_html=Supprimer la branche
+branch.delete_desc=La suppression d’une branche est permanente. Bien qu’une branche supprimée puisse temporairement subsister, elle NE PEUT PAS être facilement restaurée. Continuer ?
+branch.deletion_success=La branche "%s" a été supprimée.
+branch.deletion_failed=Impossible de supprimer la branche "%s".
+branch.delete_branch_has_new_commits=La branche "%s" ne peut être supprimé, car de nouvelles révisions ont été ajoutées après la fusion.
+branch.create_branch=Créer la branche %s
+branch.create_from=`de "%s"`
+branch.create_success=La branche "%s" a été créée.
+branch.branch_already_exists=La branche "%s" existe déjà dans ce dépôt.
+branch.branch_name_conflict=Le nom de la branche "%s" entre en conflit avec la branche déjà existante "%s".
+branch.tag_collision=La branche "%s" ne peut être créée car une étiquette avec un nom identique existe déjà dans le dépôt.
+branch.deleted_by=Supprimée par %s
+branch.restore_success=La branche "%s" a été restaurée.
+branch.restore_failed=Impossible de restaurer la branche "%s".
+branch.protected_deletion_failed=La branche "%s" est protégé. Elle ne peut pas être supprimée.
+branch.default_deletion_failed=La branche "%s" est la branche par défaut. Elle ne peut pas être supprimée.
+branch.restore=Restaurer la branche "%s"
+branch.download=Télécharger la branche "%s"
+branch.rename=Renommer la branche "%s"
+branch.included_desc=Cette branche fait partie de la branche par défaut
+branch.included=Incluses
+branch.create_new_branch=Créer une branche à partir de la branche :
+branch.confirm_create_branch=Créer une branche
+branch.warning_rename_default_branch=Vous renommez la branche par défaut.
+branch.rename_branch_to=Renommer la branche "%s".
+branch.create_branch_operation=Créer une branche
+branch.new_branch=Créer une nouvelle branche
+branch.new_branch_from=`Créer une nouvelle branche à partir de "%s"`
+branch.renamed=La branche %s à été renommée en %s.
+
+tag.create_tag=Créer l'étiquette %s
+tag.create_tag_operation=Créer une étiquette
+tag.confirm_create_tag=Créer une étiquette
+tag.create_tag_from=Créer une nouvelle étiquette à partir de « %s »
+
+tag.create_success=L'étiquette « %s » a été créée.
+
+topic.manage_topics=Gérer les sujets
+topic.done=Terminé
+topic.count_prompt=Vous ne pouvez pas sélectionner plus de 25 sujets
+topic.format_prompt=Les sujets doivent commencer par un caractère alphanumérique, peuvent inclure des traits d’union « - » et des points « . », et mesurer jusqu'à 35 caractères. Les lettres doivent être en minuscules.
+
+find_file.go_to_file=Aller au fichier
+find_file.no_matching=Aucun fichier correspondant trouvé
+
+error.csv.too_large=Impossible de visualiser le fichier car il est trop volumineux.
+error.csv.unexpected=Impossible de visualiser ce fichier car il contient un caractère inattendu ligne %d, colonne %d.
+error.csv.invalid_field_count=Impossible de visualiser ce fichier car il contient un nombre de champs incorrect à la ligne %d.
+admin.update_flags = Mise à jour des drapeaux
+admin.failed_to_replace_flags = Échec de remplacement des drapeaux du dépôt
+admin.flags_replaced = Drapeaux du dépôt remplacés
+rss.must_be_on_branch = Vous devez vous trouver sur une branche pour obtenir un flux RSS.
+admin.manage_flags = Gérer les drapeaux
+admin.enabled_flags = Drapeaux actifs pour le dépôt :
+object_format_helper = Format des objets d'un dépôt. Ne peut pas être changé. SHA1 est le plus compatible.
+object_format = Format de l'objet
+editor.invalid_commit_mail = Courriel invalide pour la création d'un commit.
+commits.browse_further = Continuer la navigation
+commits.renamed_from = Renommé depuis %s
+pulls.nothing_to_compare_have_tag = La branche/tag sélectionné sont identiques.
+issues.blocked_by_user = Vous ne pouvez pas créer de tickets sur ce dépôt car vous avez été bloqué par son propriétaire.
+pulls.blocked_by_user = Vous ne pouvez pas créer une pull request sur ce dépôt car vous êtes bloqué par son propriétaire.
+wiki.cancel = Annuler
+settings.wiki_globally_editable = Permettre l'édition du wiki a tout le monde
+pulls.commit_ref_at = `a référencé cette pull request depuis un commit %s`
+settings.new_owner_blocked_doer = Le nouveau propriétaire vous a bloqué.
+settings.enter_repo_name = Confirmez en entrant le propriétaire et le nom du dépôt exactement comme affiché :
+settings.wiki_rename_branch_main = Normalise le nom de la branche du Wiki
+settings.wiki_rename_branch_main_desc = Renommer la branche utilisée en interne par le Wiki en "%s". Cette modification est permanente et ne peut être annulée.
+settings.wiki_rename_branch_main_notices_2 = Cela changera le nom de la branche interne associée au dépôt du wiki %s de façon permanente. Les checkouts existant devront être mis à jour.
+settings.wiki_branch_rename_success = Le nom de branche du wiki associé au dépôt a été normalisé avec succès.
+settings.confirm_wiki_branch_rename = Renommer la branche du wiki
+settings.add_collaborator_blocked_them = Il n'est pas possible d'ajouter ce collaborateur parce-qu'il a bloqué le propriétaire du dépôt.
+settings.mirror_settings.pushed_repository = Dépôt poussé
+settings.add_collaborator_blocked_our = Il n'est pas possible d'ajouter ce collaborateur parce-que le propriétaire du dépôt l'a bloqué.
+settings.wiki_rename_branch_main_notices_1 = Cette operation NE PEUT PAS être annulée.
+settings.wiki_branch_rename_failure = Le nom de la branche associée au wiki du dépôt n'a pu être normalisé.
+pulls.reopen_failed.head_branch = La pull request ne peut pas être re-ouverte car la branch d'origine n'existe plus.
+settings.units.units = Fonctionnalités
+pulls.reopen_failed.base_branch = La pull request ne peut pas être re-ouverte car la branche de destination n'existe plus.
+settings.units.overview = Vue générale
+settings.units.add_more = Ajouter en plus
+activity.navbar.pulse = Pouls
+pulls.made_using_agit = AGit
+activity.navbar.code_frequency = Fréquence de code
+activity.navbar.recent_commits = Commits récents
+file_follow = Suivre le lien symbolique
+settings.confirmation_string = Chaine de confirmation
+pulls.agit_explanation = Créé par le workflow AGit. AGit permet aux contributeurs de proposer des modifications en utilisant "git push" sans créer une bifurcation ou une nouvelle branche.
+stars = Étoiles
+editor.commit_id_not_matching = Le fichier a été modifié pendant que vous l'éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
+commits.search_branch = Cette branche
+open_with_editor = Ouvrir avec %s
+pulls.ready_for_review = Prêt à être évalué ?
+editor.push_out_of_date = Le push semble obsolète.
+issues.num_participants_one = %d participant
+issues.archived_label_description = (Archivé) %s
+settings.add_webhook.invalid_path = L'emplacement ne peut pas contenir ni ".", ni "..", ni être vide, et ne peut pas commencer ou se terminer par un slash.
+settings.sourcehut_builds.secrets_helper = Permettre au job d'accéder aux secrets de build (nécessite la permission SECRETS:RO)
+size_format = %[1]s : %[2]s, %[3]s : %[4]s ; %[3]s : %[4]s
+settings.sourcehut_builds.visibility = Visibilité du job
+settings.sourcehut_builds.secrets = Secrets
+settings.sourcehut_builds.manifest_path = Chemin du manifest de build
+release.system_generated = Cet attachement a été généré automatiquement.
+settings.enforce_on_admins_desc = Les administrateurs du dépôt ne peuvent pas passer outre cette règle.
+settings.web_hook_name_sourcehut_builds = Builds SourceHut
+settings.enforce_on_admins = Appliquer cette règles aux administrateurs du dépôt
+settings.rename_branch_failed_protected = Impossible de renommer la branche %s car il s'agit d'une branche protégée.
+settings.event_pull_request_enforcement = Amélioration
+settings.graphql_url = URL GraphQL
+settings.matrix.room_id_helper = L'identifiant du salon peut être obtenu dans le client web Element. Par exemple : %s.
+settings.sourcehut_builds.access_token_helper = Un jeton d'accès ayant des permissions JOBS:RW. Génère un jeton builds.sr.ht ou un jeton builds.sr.ht token ayant accès aux secrets sur meta.sr.ht.
+settings.matrix.access_token_helper = Il est recommandé de créer un compte Matrix dédié pour cela. Le jeton d'accès peut être obtenu depuis le client web Element (dans un onglet privé/incognito). Il faut ensuite fermer l'onglet privé/icognito (se déconnecter invaliderait le jeton).
+release.hide_archive_links = Masquer les archives générées automatiquement
+release.hide_archive_links_helper = Masquer les archives de code source générées automatiquement pour cette publication. Par exemple, si vous téléchargez vos propres archives.
+settings.transfer.button = Changer de propriétaire
+settings.transfer.modal.title = Changer de propriétaire
+wiki.search = Recherche dans le wiki
+wiki.no_search_results = Pas de résultats
+form.string_too_long = La chaîne de caractère fournie fait plus de %d caractères.
+settings.federation_settings = Paramètres de féderation
+project = Projets
+subscribe.issue.guest.tooltip = Authentifiez vous pour vous abonner à ce ticket.
+subscribe.pull.guest.tooltip = Authentifiez vous pour suivre cette demande d'ajout.
+issues.author.tooltip.pr = Cet utilisateur est l'auteur de cette pull request.
+issues.author.tooltip.issue = Cet utilisateur est l'auteur de ce ticket.
+issues.edit.already_changed = Impossible de sauvegarder les changements du ticket car son contenu a déjà été modifié par un autre utilisateur. Veuillez recharger la page et essayer de l'éditer à nouveau pour éviter d'écraser ses changements
+pulls.edit.already_changed = Impossible de sauvegarder les changements de la pull request car son contenu a déjà été modifié par un autre utilisateur. Veuillez recharger la page et essayer de l'éditer à nouveau pour éviter d'écraser ses changements
+settings.federation_following_repos = Les URL des dépôts suivis séparés par ";", sans espace.
+settings.federation_not_enabled = La fédération n'est pas activée pour votre instance.
+comments.edit.already_changed = Impossible de sauvegarder les changements du commentaire car son contenu a déjà été modifié par un autre utilisateur. Veuillez recharger la page et essayer de l'éditer à nouveau pour éviter d'écraser ses changements
+settings.federation_apapiurl = URL de fédération de ce dépôt. A copier-coller dans les paramètres de fédérations d'un autre dépôt comme URL d'un dépôt à suivre.
+mirror_denied_combination = Il n'est pas possible de combiner une authentification par clé publique et par mot de passe.
+mirror_public_key = Clé SSH publique
+mirror_use_ssh.text = Utiliser l'authentification SSH
+mirror_use_ssh.helper = Forgejo va créer un miroir du dépôt via Git sur SSH et créer une paire de clés pour vous lorsque vous sélectionnez cette option. Vous devez vous assurer que la clé publique générée est autorisée à pousser dans le dépôt de destination. Il n'est pas possible d'utiliser l'autorisation basée sur un mot de passe si vous choisissez cette option.
+no_eol.text = Pas d'EOL
+mirror_use_ssh.not_available = L'authentification par SSH n'est pas disponible.
+no_eol.tooltip = Ce fichier ne contient pas de caractère final de fin de ligne.
+release.type_attachment = Pièce jointe
+settings.transfer_quota_exceeded = Le nouvel utilisateur (%s) a dépassé son quota. Le dépôt n'a pas été transféré.
+settings.pull_mirror_sync_quota_exceeded = Quota dépassé, les modifications ne sont pas tirées.
+activity.commit = Activité de commit
+settings.mirror_settings.push_mirror.copy_public_key = Copier la clé publique
+release.asset_external_url = URL externe
+release.invalid_external_url = URL externe non valable : "%s "
+milestones.filter_sort.name = Nom
+settings.mirror_settings.push_mirror.none_ssh = Aucun
+settings.protect_new_rule = Créer une nouvelle règle de protection de branche
+pulls.cmd_instruction_merge_warning = Avertissement : Le paramètre "détection automatique de la fusion manuelle" n'est pas activé pour ce dépôt, vous devrez marquer cette demande d'ajout comme manuellement fusionnée après.
+release.type_external_asset = Actif externe
+activity.published_prerelease_label = Pré-version
+activity.published_tag_label = Étiquette
+release.asset_name = Nom de l'actif
+release.add_external_asset = Ajouter un actif externe
+issues.new.assign_to_me = Assigner à moi-même
+issues.all_title = Tous
+settings.discord_icon_url.exceeds_max_length = L'URL de l’icône ne doit pas dépasser 2048 caractères
+issues.review.add_review_requests = demandes d'évaluation de %[1]s %[2]s
+issues.review.remove_review_requests = demandes d’évaluation retirée pour %[1]s %[2]s
+issues.review.add_remove_review_requests = demandes d'évaluation pour %[1]s et demandes d'évaluation retirées pour %[2]s %[3]s
+pulls.delete_after_merge.head_branch.is_protected = La branche head que vous voulez supprimer est une branche protégée et ne peut pas être supprimée.
+pulls.delete_after_merge.head_branch.is_default = La branche head que vous voulez supprimer est la branche par défaut et ne peut pas être supprimée.
+pulls.delete_after_merge.head_branch.insufficient_branch = Vous n'avez pas le droit de supprimer la branche head.
+issues.filter_sort.relevance = Pertinence
+diff.git-notes.remove-body = Cette note sera supprimée.
+diff.git-notes.add = Ajouter une note
+diff.git-notes.remove-header = Supprimer la note
+issues.summary_card_alt = Fiche de synthèse d'un ticket nommé "%s" dans le dépôt %s
+editor.add_tmpl.filename = fichier
+issues.num_reviews_one = %d revue
+issues.num_reviews_few = %d revues
+settings.default_update_style_desc = Style de mise à jour des demandes de fusion qui sont en retard par rapport à la branche de base.
+release.summary_card_alt = Carte résumé de la publication dont le titre est "%s" dans le dépôt %s
+pulls.sign_in_require = Identifiez vous pour créer une nouvelle demande d'ajout.
+new_from_template = Utiliser un modèle
+new_from_template_description = Vous pouvez sélectionner un modèle de dépôt existant sur cette instance et appliquer ses paramètres.
+new_advanced = Options avancées
+new_advanced_expand = Cliquer pour développer
+auto_init_description = Débuter l'historique Git avec un README et ajouter en option les fichier de licence et .gitignore.
+issues.reaction.add = Ajouter une réaction
+issues.reaction.alt_few = %[1]s a réagit %[2]s.
+issues.reaction.alt_many = %[1]s et %[2]d de plus ont réagit %[3]s.
+issues.reaction.alt_remove = Enlever la réaction %[1]s du commentaire.
+issues.reaction.alt_add = Ajouter la réaction %[1]s du commentaire.
+issues.context.menu = Menu commentaire
+summary_card_alt = Carte résumé du dépôt %s
+archive.pull.noreview = Ce dépôt est archivé. Vous ne pouvez pas faire de revue de demandes d'ajout.
+editor.commit_email = Courriel de commit
+commits.view_single_diff = Voir les changements dans ce fichier introduit par ce commit
+issues.reopen.blocked_by_user = Vous ne pouvez pas ré-ouvrir ce ticket care vous êtes bloqués par le propriétaire du dépôt ou le créateur de ce ticket.
+migrate.repo_desc_helper = Laisser vide afin d'importer une description existante
+issues.filter_no_results = Pas de résultats
+issues.filter_no_results_placeholder = Essayez d'ajuster vos critères de recherche.
+archive.nocomment = Il n'est pas possible de commenter car le dépôt est archivé.
+comment.blocked_by_user = Il n'est pas possible de commenter car vous avez été bloqué par le propriétaire du dépôt ou l'auteur.
+pulls.editable = Editable
+pulls.editable_explanation = Cette pull request peut être éditée par les mainteneurs. Vous pouvez y contribuer directement.
+sync_fork.branch_behind_one = Cette branche a %[1]d commits de retard sur %[2]s
+sync_fork.branch_behind_few = Cettte branche a %[1]d commits de retard sur %[2]s
+sync_fork.button = Sync
+settings.event_action_failure = Échec
+settings.event_action_recover = Récupérer
+settings.event_action_success = Réussite
+settings.event_header_action = Événements d'exécution d'action
+settings.event_action_success_desc = L'exécution de l'action a réussi.
+settings.event_action_failure_desc = L'exécution de l'action a échoué.
+settings.event_action_recover_desc = L'exécution de l'action a réussi après l'échec de la dernière exécution de l'action dans le même workflow.
+issues.filter_type.all_pull_requests = Toutes les demandes d'ajout
+
+[graphs]
+component_loading = Chargement %s…
+component_loading_failed = Échec de chargement de %s
+
+component_loading_info = Cela peut prendre du temps…
+component_failed_to_load = Une erreur inattendue s'est produite.
+contributors.what = contributions
+code_frequency.what = fréquence de code
+recent_commits.what = commits récents
+
+
+[org]
+org_name_holder=Nom de l'organisation
+org_full_name_holder=Nom complet de l'organisation
+org_name_helper=Le nom de l'organisation doit être court et mémorable.
+create_org=Créer une organisation
+repo_updated=Actualisé %s
+members=Membres
+teams=Équipes
+code=Code
+lower_members=Membres
+lower_repositories=dépôts
+create_new_team=Nouvelle équipe
+create_team=Créer une équipe
+org_desc=Description
+team_name=Nom de l'équipe
+team_desc=Description
+team_name_helper=Le nom d'équipe doit être court et mémorable.
+team_desc_helper=Décrire le but ou le rôle de l’équipe.
+team_access_desc=Accès au dépôt
+team_permission_desc=Autorisation
+team_unit_desc=Permettre l’accès aux sections du dépôt
+team_unit_disabled=(Désactivé)
+
+form.name_reserved=Le nom d'organisation "%s" est réservé.
+form.name_pattern_not_allowed=Le motif « %s » n'est pas autorisé dans un nom d'organisation.
+form.create_org_not_allowed=Vous n'êtes pas autorisé à créer une organisation.
+
+settings=Paramètres
+settings.options=Organisation
+settings.full_name=Nom complet
+settings.email=Courriel de contact
+settings.website=Site Web
+settings.location=Localisation
+settings.permission=Autorisations
+settings.repoadminchangeteam=L'administrateur de dépôt peut ajouter et supprimer l'accès aux équipes
+settings.visibility=Visibilité
+settings.visibility.public=Public
+settings.visibility.limited=Limité (Visible uniquement aux utilisateurs connectés)
+settings.visibility.limited_shortname=Limité
+settings.visibility.private=Privé (visible uniquement aux membres de l’organisation)
+settings.visibility.private_shortname=Privé
+
+settings.update_settings=Appliquer les paramètres
+settings.update_setting_success=Les paramètres de l'organisation ont été mis à jour.
+settings.change_orgname_prompt=Remarque : Changer le nom de l'organisation changera également l'URL de votre organisation et libèrera l'ancien nom.
+settings.change_orgname_redirect_prompt=L'ancien nom d'utilisateur redirigera jusqu'à ce qu'il soit réclamé.
+settings.update_avatar_success=L'avatar de l'organisation a été mis à jour.
+settings.delete=Supprimer l'organisation
+settings.delete_account=Supprimer cette organisation
+settings.delete_prompt=Cette organisation sera supprimée définitivement. Cette action est IRRÉVERSIBLE !
+settings.confirm_delete_account=Confirmer la suppression
+settings.delete_org_title=Supprimer l'organisation
+settings.delete_org_desc=Cette organisation sera supprimée définitivement. Voulez-vous continuer ?
+settings.hooks_desc=Vous pouvez ajouter des webhooks qui seront activés pour tous les dépôts de cette organisation.
+
+settings.labels_desc=Ajoute des labels qui peuvent être utilisés sur les tickets pour tous les dépôts de cette organisation.
+
+members.membership_visibility=Visibilité des membres :
+members.public=Visible
+members.public_helper=Rendre caché
+members.private=Caché
+members.private_helper=Rendre visible
+members.member_role=Rôle du membre :
+members.owner=Propriétaire
+members.member=Membre
+members.remove=Exclure
+members.remove.detail=Supprimer %[1]s de %[2]s ?
+members.leave=Quitter
+members.leave.detail=Êtes vous certain·e de vouloir quitter l'organisation «%s» ?
+members.invite_desc=Ajouter un nouveau membre à %s :
+members.invite_now=Envoyer une invitation
+
+teams.join=Rejoindre
+teams.leave=Quitter
+teams.leave.detail=Êtes vous certain·e de vouloir quitter l'équipe «%s» ?
+teams.can_create_org_repo=Créer des dépôts
+teams.can_create_org_repo_helper=Les membres peuvent créer de nouveaux dépôts dans l'organisation. Le créateur obtiendra l'accès administrateur au nouveau dépôt.
+teams.none_access=Aucun accès
+teams.none_access_helper=L'option "Aucun accès" n'a pas d'effet sur les dépôts privés.
+teams.general_access=Accès personnalisé
+teams.general_access_helper=Les permissions des membres seront déterminées par la table des permissions ci-dessous.
+teams.read_access=Lecture
+teams.write_access=Écriture
+teams.admin_access=Accès administrateur
+teams.admin_access_helper=Les membres peuvent tirer et pousser des modifications vers les dépôts de l'équipe, et y ajouter des collaborateurs.
+teams.no_desc=Aucune description
+teams.settings=Paramètres
+teams.owners_permission_desc=Les propriétaires ont un accès complet à tous les dépôts et disposent d'un accès administrateur de l'organisation.
+teams.members=Membres de L'équipe
+teams.update_settings=Appliquer les paramètres
+teams.delete_team=Supprimer l'équipe
+teams.add_team_member=Ajouter un membre
+teams.invite_team_member=Inviter à %s
+teams.invite_team_member.list=Invitations en attente
+teams.delete_team_title=Supprimer l'équipe
+teams.delete_team_desc=Supprimer une équipe supprime l'accès aux dépôts à ses membres. Continuer ?
+teams.delete_team_success=L’équipe a été supprimée.
+teams.admin_permission_desc=Cette équipe permet l'accès administrateur : les membres peuvent voir, participer et ajouter des collaborateurs à ses dépôts.
+teams.create_repo_permission_desc=De plus, cette équipe accorde la permission Créer un dépôt : les membres peuvent créer de nouveaux dépôts dans l'organisation.
+teams.repositories=Dépôts de l'équipe
+teams.remove_all_repos_title=Supprimer tous les dépôts de l'équipe
+teams.remove_all_repos_desc=Ceci supprimera tous les dépôts de l'équipe.
+teams.add_all_repos_title=Ajouter tous les dépôts
+teams.add_all_repos_desc=Ceci ajoutera tous les dépôts de l'organisation à l'équipe.
+teams.add_nonexistent_repo=Le dépôt que vous essayez d'ajouter n'existe pas, veuillez le créer d'abord.
+teams.add_duplicate_users=L’utilisateur est déjà un membre de l’équipe.
+teams.repos.none=Aucun dépôt n'est accessible par cette équipe.
+teams.members.none=Aucun membre dans cette équipe.
+teams.specific_repositories=Dépôts spécifiques
+teams.specific_repositories_helper=Les membres auront seulement accès aux dépôts explicitement ajoutés à l'équipe. Sélectionner ceci ne supprimera pas automatiquement les dépôts déjà ajoutés avec Tous les dépôts.
+teams.all_repositories=Tous les dépôts
+teams.all_repositories_helper=L'équipe a accès à tous les dépôts. Sélectionner ceci ajoutera tous les dépôts existants à l'équipe.
+teams.invite.title=Vous avez été invité à rejoindre l'équipe %s dans l'organisation %s.
+teams.invite.by=Invité par %s
+teams.invite.description=Veuillez cliquer sur le bouton ci-dessous pour rejoindre l’équipe.
+follow_blocked_user = Vous ne pouvez pas suivre cette organisation car elle vous a bloqué.
+open_dashboard = Ouvrir le tableau de bord
+settings.change_orgname_redirect_prompt.with_cooldown.few = L'ancien nom d'organisation sera disponible pour n'importe qui après une période de %[1]d jours. Vous pouvez toujours réclamer votre ancien nom d'organisation pendant cette période.
+settings.change_orgname_redirect_prompt.with_cooldown.one = L'ancien nom d'organisation sera disponible pour n'importe qui après une période d'%[1]d jour. Vous pouvez toujours réclamer votre ancien nom d'organisation pendant cette période.
+
+[admin]
+dashboard=Tableau de bord
+self_check = Auto vérification
+identity_access=Identité et accès
+users=Comptes utilisateurs
+organizations=Organisations
+assets=Ressources de code
+repositories=Dépôts
+hooks=Déclencheurs web
+integrations=Intégrations
+authentication=Sources d'authentification
+emails=Courriels de l'utilisateur
+config=Configuration
+notices=Informations système
+monitor=Surveillance
+first_page=Première
+last_page=Dernière
+total=Total : %d
+settings=Paramètres administrateur
+
+dashboard.clean_unbind_oauth=Effacer les connexions OAuth associées
+dashboard.clean_unbind_oauth_success=Toutes les connexions OAuth associées ont été supprimées.
+dashboard.delete_inactive_accounts=Supprimer tous les comptes non actifs
+dashboard.delete_repo_archives=Supprimer toutes les archives des dépôts (ZIP, TAR.GZ, etc..)
+dashboard.delete_missing_repos=Supprimer tous les dépôts dont les fichiers Git sont manquants
+dashboard.delete_old_actions=Supprimer toutes les anciennes activités de la base de données
+users.user_manage_panel=Gestion du compte utilisateur
+users.new_account=Créer un compte
+users.send_register_notify=Informer de l'inscription par courriel
+users.new_success=Le compte "%s" a bien été créé.
+users.edit=Éditer
+users.auth_source=Sources d'authentification
+users.local=Locales
+users.auth_login_name=Nom d'utilisateur pour l'authentification
+users.password_helper=Laissez le mot de passe vide pour le garder inchangé.
+users.update_profile_success=Le compte a bien été mis à jour.
+users.edit_account=Modifier un compte
+users.max_repo_creation=Nombre maximal de dépôts
+users.max_repo_creation_desc=(Mettre à -1 pour utiliser la limite globale par défaut.)
+users.is_activated=Ce compte est activé
+users.prohibit_login=Suspendre le compte
+users.is_admin=Compte administrateur·rice
+users.is_restricted=Compte restreint
+users.allow_git_hook=Autoriser la création de déclencheurs Git
+users.allow_git_hook_tooltip=Les Déclencheurs Git sont exécutés par le même utilisateur que Forgejo, qui a des privilèges systèmes élevés. Les utilisateurs ayant ce droit peuvent altérer touts les dépôts, compromettre la base de données applicative, et se promouvoir administrateurs de Forgejo.
+users.allow_import_local=Autoriser l'importation de dépôts locaux
+users.allow_create_organization=Autoriser la création d'organisations
+users.update_profile=Modifier un compte
+users.delete_account=Supprimer cet utilisateur
+users.cannot_delete_self=Vous ne pouvez pas vous supprimer vous-même
+users.still_own_repo=Cet utilisateur possède un ou plusieurs dépôts. Veuillez les supprimer ou les transférer à un autre utilisateur.
+users.still_has_org=Cet utilisateur est membre d'une organisation. Veuillez le retirer de toutes les organisations dont il est membre au préalable.
+users.purge=Purger l'utilisateur
+users.purge_help=Éradique l’utilisateur et tous ses dépôts, organisations et paquets. Tous les commentaires et tickets dont l'utilisateur est l'auteur seront aussi effacés.
+users.still_own_packages=Cet utilisateur possède encore un ou plusieurs paquets. Supprimez d’abord ces paquets.
+users.deletion_success=Le compte a été supprimé.
+users.reset_2fa=Réinitialiser l'authentification à deux facteurs
+users.details=Informations de l’utilisateur
+
+emails.email_manage_panel=Gestion des courriels des utilisateurs
+emails.primary=Principale
+emails.activated=Activée
+emails.filter_sort.email=Courriel
+emails.filter_sort.email_reverse=Courriel (inversé)
+emails.filter_sort.name=Nom d'utilisateur
+emails.filter_sort.name_reverse=Nom d'utilisateur (inverse)
+emails.updated=Courriel mis à jour
+emails.not_updated=Impossible de mettre à jour l’adresse courriel demandée : %v
+emails.duplicate_active=Cette adresse courriel est déjà active pour un autre utilisateur.
+emails.change_email_header=Mettre à jour les propriétés du courriel
+emails.change_email_text=Êtes-vous sûr de vouloir mettre à jour cette adresse courriel ?
+
+orgs.org_manage_panel=Gestion des organisations
+repos.repo_manage_panel=Gestion des dépôts
+repos.unadopted=Dépôts non adoptés
+repos.unadopted.no_more=Aucun dépôt candidat à l'adoption n'a été trouvé.
+repos.private=Privé
+packages.package_manage_panel=Gestion des paquets
+packages.cleanup=Purger les données expirées
+packages.cleanup.success=Les données expirées ont été nettoyées avec succès
+defaulthooks=Déclencheurs web par défaut
+defaulthooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Forgejo se déclenchent. Ceux créés ici sont par défaut copiés sur tous les nouveaux dépôts. Pour plus d'information, consultez le guide des webhooks.
+defaulthooks.add_webhook=Ajouter un déclencheur web par défaut
+defaulthooks.update_webhook=Mettre à jour le déclencheur web par défaut
+
+systemhooks=Déclencheurs système
+systemhooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Forgejo se déclenchent. Ceux créé ici agiront sur tous les dépôts, ce qui peux impacter les performances du système. Pour plus d’information, consultez le guide des webhooks.
+systemhooks.add_webhook=Ajouter un rappel système
+systemhooks.update_webhook=Mettre à jour un rappel système
+
+auths.auth_manage_panel=Gestion des sources d'authentification
+auths.new=Ajouter une source d'authentification
+auths.name=Nom
+auths.type=Type
+auths.enabled=Activé
+auths.syncenabled=Activer la synchronisation des utilisateurs
+auths.updated=Mis à jour
+auths.auth_type=Type d'authentification
+auths.auth_name=Nom de l'authentification
+auths.security_protocol=Protocole de sécurité
+auths.domain=Domaine
+auths.host=Hôte
+auths.port=Port
+auths.bind_dn=Bind DN
+auths.bind_password=Mot de passe Bind
+auths.user_base=Utilisateur search base
+auths.user_dn=Utilisateur DN
+auths.attribute_username=Attribut nom d'utilisateur
+auths.attribute_username_placeholder=Laisser vide afin d'utiliser le nom d'utilisateur spécifié dans Forgejo.
+auths.attribute_name=Attribut prénom
+auths.attribute_surname=Attribut nom de famille
+auths.attribute_mail=Attribut courriel
+auths.attribute_ssh_public_key=Attribut clef SSH publique
+auths.attribute_avatar=Attribut de l'avatar
+auths.attributes_in_bind=Aller chercher les attributs dans le contexte de liaison DN
+auths.allow_deactivate_all=Permettre à un résultat de recherche vide de désactiver tous les utilisateurs
+auths.use_paged_search=Utiliser la recherche paginée
+auths.search_page_size=Taille de la page
+auths.filter=Filtre utilisateur
+auths.admin_filter=Filtre administrateur
+auths.restricted_filter=Filtre restrictif
+auths.restricted_filter_helper=Laisser vide pour ne définir aucun utilisateur comme restreint. Utilisez un astérisque ("*") pour définir tous les utilisateurs qui ne correspondent pas au filtre Admin comme restreint.
+auths.verify_group_membership=Vérifier l’appartenance au groupe LDAP (laisser vide pour ignorer)
+auths.group_search_base=DN de recherche du groupe
+auths.group_attribute_list_users=Attribut de groupe contenant la liste des utilisateurs
+auths.user_attribute_in_group=Attribut utilisateur listé dans le groupe
+auths.map_group_to_team=Associer les groupes LDAP aux équipes d'organisation (laissez vide pour ignorer)
+auths.map_group_to_team_removal=Retirer les utilisateurs des équipes synchronisées si l'utilisateur n'appartient pas au groupe LDAP correspondant
+auths.enable_ldap_groups=Activer les groupes LDAP
+auths.ms_ad_sa=Rechercher les attributs MS AD
+auths.smtp_auth=Type d'authentification SMTP
+auths.smtphost=Hôte SMTP
+auths.smtpport=Port SMTP
+auths.allowed_domains=Domaines autorisés
+auths.allowed_domains_helper=Laisser ce champ vide autorise tous les domaines. Séparez les domaines multiples avec une virgule (",").
+auths.skip_tls_verify=Ne pas vérifier TLS
+auths.force_smtps=Forcer SMTPS
+auths.force_smtps_helper=SMTPS est toujours utilisé sur le port 465. Définissez ceci pour forcer SMTPS sur d'autres ports. (STARTTLS sera utilisé sur d'autres ports si cela est supporté par l'hôte.)
+auths.helo_hostname=Nom d’hôte HELO
+auths.helo_hostname_helper=Nom d’hôte envoyé avec HELO. Laisser vide pour envoyer le nom d’hôte actuel.
+auths.disable_helo=Désactiver HELO
+auths.pam_service_name=Nom du Service PAM
+auths.pam_email_domain=Domaine de messagerie PAM (optionnel)
+auths.oauth2_provider=Fournisseur OAuth2
+auths.oauth2_icon_url=URL de l'icône
+auths.oauth2_clientID=ID du client (clé)
+auths.oauth2_clientSecret=Secret du client
+auths.openIdConnectAutoDiscoveryURL=URL de découverte OpenID Connect
+auths.oauth2_use_custom_url=Utiliser des URLs personnalisées au lieu de l’URL par défaut
+auths.oauth2_tokenURL=URL du jeton
+auths.oauth2_authURL=URL d'autorisation
+auths.oauth2_profileURL=URL du profil
+auths.oauth2_emailURL=URL de l'e-mail
+auths.skip_local_two_fa=Ignorer l’authentification à deux facteurs locale
+auths.skip_local_two_fa_helper=Laisser indéfini signifie que les utilisateurs locaux avec l’authentification à deux facteurs activée devront tout de même s’y soumettre pour se connecter
+auths.oauth2_tenant=Locataire
+auths.oauth2_scopes=Champs d'application supplémentaires
+auths.oauth2_required_claim_name=Nom de réclamation requis
+auths.oauth2_required_claim_name_helper=Définissez ce nom pour restreindre la connexion depuis cette source aux utilisateurs ayant une réclamation avec ce nom
+auths.oauth2_required_claim_value=Valeur de réclamation requise
+auths.oauth2_required_claim_value_helper=Restreindre la connexion depuis cette source aux utilisateurs ayant réclamé cette valeur
+auths.oauth2_group_claim_name=Réclamer le nom fournissant les noms de groupe pour cette source. (facultatif)
+auths.oauth2_admin_group=Valeur de réclamation de groupe pour les administrateurs. (Optionnel, nécessite un nom de réclamation)
+auths.oauth2_restricted_group=Valeur de réclamation de groupe pour les utilisateurs restreints. (Optionnel, nécessite un nom de réclamation)
+auths.oauth2_map_group_to_team=Associe les groupes réclamés avec les équipes de l'organisation. (Optionnel, nécessite un nom de réclamation)
+auths.oauth2_map_group_to_team_removal=Supprimer les utilisateurs des équipes synchronisées si l'utilisateur n'appartient pas au groupe correspondant.
+auths.tips=Conseils
+auths.tips.oauth2.general=Authentification OAuth2
+auths.tips.oauth2.general.tip=Lors de l'enregistrement d'une nouvelle authentification OAuth2, l'URL de rappel/redirection doit être :
+auths.tip.oauth2_provider=Fournisseur OAuth2
+auths.tip.bitbucket=Créez un nouveau jeton OAuth sur %s
+auths.tip.nextcloud=`Enregistrez un nouveau consommateur OAuth sur votre instance en utilisant le menu "Paramètres -> Sécurité -> Client OAuth 2.0"`
+auths.tip.dropbox=Créez une nouvelle application sur %s
+auths.tip.facebook=`Enregistrez une nouvelle application sur %s et ajoutez le produit "Facebook Login"`
+auths.tip.github=Créez une nouvelle application OAuth sur %s
+auths.tip.google_plus=Obtenez des identifiants OAuth2 sur la console API de Google (%s)
+auths.tip.openid_connect=Utilisez l'URL de découvert OpenID (%[1]s en %[3]s
+commit_repo=a soumis sur %[3]s dans %[4]s
+create_issue=`a ouvert le ticket %[3]s#%[2]s`
+close_issue=`a fermé le ticket %[3]s#%[2]s`
+reopen_issue=`a rouvert le ticket %[3]s#%[2]s`
+create_pull_request=`a créé la demande d’ajout %[3]s#%[2]s`
+close_pull_request=`a fermé la demande d’ajout %[3]s#%[2]s`
+reopen_pull_request=`a rouvert la demande d’ajout %[3]s#%[2]s`
+comment_issue=`a commenté le ticket %[3]s#%[2]s`
+comment_pull=`a commenté la demande d’ajout %[3]s#%[2]s`
+merge_pull_request=`a fusionné la demande d’ajout %[3]s#%[2]s`
+auto_merge_pull_request=`a fusionné automatiquement la demande d’ajout %[3]s#%[2]s`
+transfer_repo=a transféré le dépôt %s vers %s
+push_tag=a poussé l’étiquette %[3]s de %[4]s
+delete_tag=a supprimé l’étiquette %[2]s de %[3]s
+delete_branch=a supprimée la branche %[2]s de %[3]s
+compare_branch=Comparer
+compare_commits=Comparer %d révisions
+compare_commits_general=Comparer les révisions
+mirror_sync_push=a synchronisé les révisions de %[3]s d’un miroir vers %[4]s
+mirror_sync_create=a synchronisé la nouvelle référence %[3]s d’un miroir vers %[4]s
+mirror_sync_delete=a synchronisé puis supprimé la nouvelle référence %[2]s vers %[3]s depuis le miroir
+approve_pull_request=`a approuvé %[3]s#%[2]s`
+reject_pull_request=`a suggérés des changements pour %[3]s#%[2]s`
+publish_release=`a publié %[4]s dans %[3]s`
+review_dismissed=`a révoqué l’évaluation de %[4]s dans %[3]s#%[2]s`
+review_dismissed_reason=Raison :
+create_branch=a créé la branche %[3]s dans %[4]s
+starred_repo=aime %[2]s
+watched_repo=observe %[2]s
+
+[tool]
+now=maintenant
+future=futur
+1s=1 seconde
+1m=1 minute
+1h=1 heure
+1d=1 jour
+1w=1 semaine
+1mon=1 mois
+1y=1 an
+seconds=%d secondes
+minutes=%d minutes
+hours=%d heures
+days=%d jours
+weeks=%d semaines
+months=%d mois
+years=%d ans
+raw_seconds=secondes
+raw_minutes=minutes
+
+[dropzone]
+
+[notification]
+
+[gpg]
+
+[units]
+unit=Unité
+error.no_unit_allowed_repo=Vous n'êtes pas autorisé à accéder à n'importe quelle section de ce dépôt.
+error.unit_not_allowed=Vous n'êtes pas autorisé à accéder à cette section du dépôt.
+
+[packages]
+desc=Gérer les paquets du dépôt.
+conan.details.repository=Dépôt
+owner.settings.cleanuprules.enabled=Activé
+owner.settings.cleanuprules.keep.count.1=1 version par paquet
+owner.settings.cleanuprules.keep.count.n=%d versions par paquet
+
+[secrets]
+secrets=Secrets
+description=Les secrets seront transmis à certaines actions et ne pourront pas être lus autrement.
+none=Il n'y a pas encore de secrets.
+creation=Ajouter un secret
+creation.name_placeholder=Caractères alphanumériques ou tirets bas uniquement, insensibles à la casse, ne peut commencer par FORGEJO_, GITEA_ ou GITHUB_
+creation.value_placeholder=Entrez n’importe quoi. Les blancs cernant seront taillés.
+creation.success=Le secret "%s" a été ajouté.
+creation.failed=Impossible d'ajouter le secret.
+deletion=Supprimer le secret
+deletion.description=La suppression d'un secret est permanente et irréversible. Continuer ?
+deletion.success=Le secret a été supprimé.
+deletion.failed=Impossible de supprimer le secret.
+management=Gestion des secrets
+
+[actions]
+unit.desc=Gérer l'intégration continue avec Forgejo Actions.
+
+runs.no_runs=Le flux de travail n'a pas encore d'exécution.
+runs.empty_commit_message=(message de révision vide)
+
+workflow.disable=Désactiver le workflow
+workflow.disable_success=Le flux de travail « %s » a bien été désactivé.
+workflow.enable=Activer le workflow
+workflow.enable_success=Le workflow « %s » a bien été activé.
+workflow.disabled=Le flux de travail est désactivé.
+
+need_approval_desc=Besoin d’approbation pour exécuter des flux de travail pour une demande d’ajout de bifurcation.
+
+variables.id_not_exist = La variable numéro %d n’existe pas.
+workflow.dispatch.use_from = Utiliser un workflow depuis
+workflow.dispatch.trigger_found = Ce workflow a un déclencheur d'événement {user}, {repo} en {index} voor de gebruikersnaam, repositorynaam en kwestie-index.
+settings.tracker_url_format_desc=Gebruik de aanduidingen {user}, {repo} en {index} voor de gebruikersnaam, repositorynaam en probleem-index.
settings.enable_timetracker=Tijdregistratie inschakelen
settings.allow_only_contributors_to_track_time=Sta alleen bijdragers toe tijdregistratie te gebruiken
settings.pulls_desc=Repository pull requests inschakelen
@@ -2321,7 +2321,7 @@ issues.label_archive = Label archiveren
issues.label_exclusive_warning = Eventuele conflicterende scoped labels worden verwijderd bij het bewerken van de labels van een issue of pull request.
issues.unpin_comment = ontpind dit %s
pulls.show_changes_since_your_last_review = Wijzigingen weergeven sinds je laatste beoordeling
-mirror_address_url_invalid = De opgegeven URL is ongeldig. Zorg ervoor dat de onderdelen van de URL correct worden geëscape.
+mirror_address_url_invalid = De opgegeven URL is ongeldig. Zorg ervoor dat de onderdelen van de URL correct worden geëscaped.
desc.sha256 = SHA256
form.name_reserved = De repository naam "%s" is gereserveerd.
form.name_pattern_not_allowed = Het patroon "%s" is niet toegestaan in een repository naam.
@@ -2457,7 +2457,7 @@ pulls.reopen_failed.base_branch = De pull request kan niet worden heropend, omda
pulls.reopen_failed.head_branch = De pull request kan niet worden heropend, omdat de head branch niet meer bestaat.
pulls.auto_merge_newly_scheduled_comment = `deze pull request is gepland om automatisch samen te voegen als alle controles succesvol zijn %[1]s`
settings.protect_status_check_matched = Overeengekomen
-settings.archive.text = Het archiveren van de repo zal het volledig alleen-lezen maken. Het zal worden verborgen op het dashboard. Niemand (zelfs u niet!) kan nieuwe commits, issues of pull requests maken.
+settings.archive.text = Het archiveren van de repo zal het volledig alleen-lezen maken. Het zal worden verborgen op het dashboard. Niemand (zelfs u niet!) kan nieuwe commits, issues of pull requests maken. Het is aangeraden om de reden van archivering te documenteren om toekomstige ontwikkelaars die de repository willen forken te helpen.
settings.unarchive.button = Repo unarchiveren
branch.deletion_success = Branch "%s" is verwijderd.
branch.deletion_failed = Het verwijderen van de branch "%s" is mislukt.
@@ -2574,7 +2574,7 @@ settings.mirror_settings.docs.pull_mirror_instructions = Raadpleeg voor het inst
settings.mirror_settings.docs.more_information_if_disabled = Hier vindt u meer informatie over duw- en pull mirrors:
settings.mirror_settings.docs.pulling_remote_title = Pullen uit een externe repository
settings.mirror_settings.pushed_repository = Gepusht repository
-settings.units.units = Eenheden
+settings.units.units = Onderdelen
settings.mirror_settings.push_mirror.remote_url = Git externe repository URL
settings.units.overview = Overzicht
settings.mirror_settings.push_mirror.edit_sync_time = Synchronisatie-interval van mirror bewerken
@@ -2872,55 +2872,12 @@ first_page=Eerste
last_page=Laatste
total=Totaal: %d
-dashboard.statistic=Overzicht
-dashboard.operations=Onderhoudswerkzaamheden
-dashboard.system_status=Systeemstatus
-dashboard.operation_name=Bewerking naam
-dashboard.operation_switch=Omschakelen
-dashboard.operation_run=Uitvoeren
dashboard.clean_unbind_oauth=Niet-verbonden OAuth verbindingen opschonen
dashboard.clean_unbind_oauth_success=Alle ongebonden OAuth verbindingen zijn verwijderd.
-dashboard.task.started=Taak gestart: %[1]s
-dashboard.task.process=Taak: %[1]s
-dashboard.task.error=Fout in taak: %[1]s: %[3]s
-dashboard.task.finished=Taak: %[1]s gestart door %[2]s is voltooid
-dashboard.task.unknown=Onbekende taak: %[1]s
-dashboard.cron.started=Gestarte cron: %[1]s
-dashboard.cron.process=Cron: %[1]s
-dashboard.cron.error=Fout in cron: %s: %[3]s
-dashboard.cron.finished=Cron: %[1]s is klaar
dashboard.delete_inactive_accounts=Verwijder alle niet geactiveerde accounts
-dashboard.delete_inactive_accounts.started=Verwijder alle niet geactiveerde accounts taak gestart.
-dashboard.delete_repo_archives.started=Verwijder alle repositoryarchieven taak gestart.
dashboard.delete_missing_repos=Verwijder alle repositories waarvan hun Git bestanden missen
-dashboard.delete_missing_repos.started=Verwijder alle repositories die hun Git bestanden missen taak gestart.
-dashboard.delete_generated_repository_avatars=Verwijder gegenereerde repository avatars
-dashboard.update_mirrors=Mirrors bijwerken
-dashboard.repo_health_check=Controleer alle repositories
-dashboard.check_repo_stats=Bekijk alle repository statistieken
-dashboard.archive_cleanup=Verwijder oude repositories archieven
-dashboard.deleted_branches_cleanup=Verwijderde branches opschonen
-dashboard.update_migration_poster_id=Werk migratie-poster IDs bij
-dashboard.git_gc_repos=Voer garbage collectie uit voor alle repositories
-dashboard.resync_all_sshkeys=Werk de ".ssh/authorized_keys" bestand bij met Forgejo SSH sleutels.
-dashboard.resync_all_sshprincipals=Update het ".ssh/authorized_principals" bestand met Forgejo SSH verantwoordelijken.
-dashboard.resync_all_hooks=Git hooks van alle repositories opnieuw synchroniseren (pre-receive, update en, post-receive hooks van alle repositories, proc-receive, ...)
-dashboard.reinit_missing_repos=Herinitialiseer alle ontbrekende Git repositories waarvoor records bestaan
-dashboard.sync_external_users=Externe gebruikersgegevens synchroniseren
-dashboard.delete_old_system_notices=Verwijder alle oude systeemmededelingen uit de database
-
users.user_manage_panel=Gebruikersaccounts beheren
users.new_account=Gebruikersaccount aanmaken
-users.name=Gebruikersnaam
-users.full_name=Volledige naam
-users.activated=Geactiveerd
-users.admin=Beheerder
-users.restricted=Beperkt
-users.2fa=2FA
-users.repos=Repos
-users.created=Aangemaakt
-users.last_login=Laatste keer ingelogd
-users.never_login=Nooit ingelogd
users.send_register_notify=Via e-mail informeren over registratie
users.edit=Bewerken
users.auth_source=Authenticatiebron
@@ -2957,29 +2914,12 @@ emails.duplicate_active=Dit e-mailadres is al actief voor een andere gebruiker.
emails.change_email_header=Update e-mail eigenschappen
orgs.org_manage_panel=Organisaties beheren
-orgs.name=Naam
-orgs.teams=Teams
-orgs.members=Leden
-orgs.new_orga=Nieuwe organisatie
-
repos.repo_manage_panel=Repositories beheren
repos.unadopted=Niet-geadopteerde repositories
repos.unadopted.no_more=Geen niet-geadopteerde repositories gevonden.
-repos.owner=Eigenaar
-repos.name=Naam
repos.private=Prive
-repos.issues=Issues
-repos.size=Grootte
-
-packages.owner=Eigenaar
-packages.name=Naam
-packages.type=Type
-packages.repository=Opslagplaats
-packages.size=Grootte
-
-
systemhooks=Systeem webhooks
-systemhooks.add_webhook=Systeem Webhook toevoegen
+systemhooks.add_webhook=Systeem-webhook toevoegen
systemhooks.update_webhook=Systeem-webhook bijwerken
auths.new=Authenticatiebron toevoegen
@@ -2996,17 +2936,17 @@ auths.host=Host
auths.port=Poort
auths.bind_dn=Binden DN
auths.bind_password=Bind wachtwoord
-auths.user_base=Gebruikers zoek base
-auths.user_dn=User DN
-auths.attribute_username=Gebruikersnaam attribuut
+auths.user_base=Zoekbasis voor gebruikers
+auths.user_dn=Gebruikers-DN
+auths.attribute_username=Gebruikersnaam-attribuut
auths.attribute_username_placeholder=Laat leeg om de gebruikersnaam in Forgejo te gebruiken.
-auths.attribute_name=Voornaam attribuut
-auths.attribute_surname=Achternaam attribuut
-auths.attribute_mail=E-mail attribuut
-auths.attribute_ssh_public_key=Publieke SSH sleutel attribuut
-auths.attributes_in_bind=Verkrijg attributes van de bind DN context
-auths.allow_deactivate_all=Laat een leeg zoekresultaat toe om alle gebruikers te deactiveren
-auths.use_paged_search=Gebruik paged zoeken
+auths.attribute_name=Voornaam-attribuut
+auths.attribute_surname=Achternaam-attribuut
+auths.attribute_mail=E-mail-attribuut
+auths.attribute_ssh_public_key=Publieke SSH-sleutelattribuut
+auths.attributes_in_bind=Verkrijg attributen van de bind-DN-context
+auths.allow_deactivate_all=Sta een leeg zoekresultaat toe om alle gebruikers te deactiveren
+auths.use_paged_search=Gebruik gepagineerd zoeken
auths.search_page_size=Paginagrootte
auths.filter=Gebruikersfilter
auths.admin_filter=Beheerdersfilter
@@ -3021,8 +2961,8 @@ auths.smtpport=SMTP-poort
auths.allowed_domains=Toegelaten domeinen
auths.allowed_domains_helper=Laat leeg om alle domeinen toe te staan. Meerdere domeinen scheiden met een komma (",").
auths.skip_tls_verify=TLS-verificatie overslaan
-auths.pam_service_name=PAM servicenaam
-auths.oauth2_provider=OAuth2 provider
+auths.pam_service_name=PAM-servicenaam
+auths.oauth2_provider=OAuth2-aanbieder
auths.oauth2_clientID=Client-ID (sleutel)
auths.oauth2_clientSecret=Client-secret
auths.openIdConnectAutoDiscoveryURL=OpenID Connect Automatische Ontdekking URL
@@ -3060,38 +3000,17 @@ config.offline_mode=Lokale modus
config.disable_router_log=Router-log uitschakelen
config.run_user=Gebruiker om als uit te voeren
config.run_mode=Uitvoer modus
-config.git_version=Git versie
config.repo_root_path=Repository basis pad
config.lfs_root_path=LFS rootpad
config.log_file_root_path=Log-pad
config.script_type=Script soort
config.reverse_auth_user=Reverse proxy verificatie gebruiker
-config.ssh_config=SSH-configuratie
-config.ssh_enabled=Ingeschakeld
-config.ssh_start_builtin_server=Gebruik de ingebouwde server
-config.ssh_port=Poort
-config.ssh_listen_port=Luisterpoort
-config.ssh_root_path=Root-pad
-config.ssh_key_test_path=Pad voor key-tests
-config.ssh_keygen_path=Pad van keygen ("ssh-keygen")
-config.ssh_minimum_key_size_check=Controleer minimale key-lengte
-config.ssh_minimum_key_sizes=Minimale key-lengtes
-
config.lfs_config=LFS configuratie
config.lfs_enabled=Ingeschakeld
config.lfs_content_path=LFS inhoudspad
config.lfs_http_auth_expiry=LFS HTTP auth vervaltijd
-config.db_config=Databaseconfiguratie
-config.db_type=Type
-config.db_host=Host
-config.db_name=Naam
-config.db_user=Gebruikersnaam
-config.db_schema=Schema
-config.db_ssl_mode=SSL
-config.db_path=Pad
-
config.service_config=Serviceconfiguratie
config.register_email_confirm=E-mailbevestiging vereist bij registreren
config.disable_register=Schakel zelf registratie uit
@@ -3119,15 +3038,6 @@ config.queue_length=Lengte van wachtrij
config.deliver_timeout=Bezorging verlooptijd
config.skip_tls_verify=TLS-verificatie overslaan
-config.mailer_enabled=Ingeschakeld
-config.mailer_name=Naam
-config.mailer_smtp_port=SMTP poort
-config.mailer_user=Gebruiker
-config.mailer_use_sendmail=Gebruik Sendmail
-config.mailer_sendmail_path=Sendmail pad
-config.mailer_sendmail_args=Extra argumenten voor Sendmail
-config.mailer_sendmail_timeout=Sendmail time-out
-config.mailer_use_dummy=Dummy
config.test_email_placeholder=E-mailadres (bijv. test@example.com)
config.send_test_mail=Test e-mail verzenden
@@ -3154,17 +3064,6 @@ config.picture_service=Foto service
config.disable_gravatar=Gravatar uitschakelen
config.enable_federated_avatar=Federated avatars toestaan
-config.git_config=Git configuratie
-config.git_disable_diff_highlight=Diff syntax highlighting uitschakelen
-config.git_max_diff_lines=Max diff regels per bestand
-config.git_max_diff_files=Max. getoonde diff-bestanden
-config.git_gc_args=GC-argumenten
-config.git_migrate_timeout=Migratie time-out
-config.git_mirror_timeout=Time-out mirror update
-config.git_clone_timeout=Kloon operatie timeout
-config.git_pull_timeout=Pull operatie timeout
-config.git_gc_timeout=GC operatie timeout
-
config.log_config=Logconfiguratie
config.disabled_logger=Uitgeschakeld
config.access_log_mode=Toegangslog-modus
@@ -3201,7 +3100,7 @@ notices.desc=Beschrijving
notices.op=Op.
notices.delete_success=De systeemmeldingen zijn verwijderd.
notices.operations = Operaties
-self_check.no_problem_found = Nog geen probleem gevonden.
+self_check.no_problem_found = Nog geen problemen gevonden.
self_check.database_collation_mismatch = Verwacht dat de database collatie gebruikt: %s
users.new_success = De gebruikersaccount "%s" is aangemaakt.
users.cannot_delete_self = Je kunt jezelf niet verwijderen
@@ -3210,14 +3109,8 @@ users.still_own_packages = Deze gebruiker bezit nog steeds één of meerdere pak
users.reset_2fa = 2FA opnieuw instellen
users.details = Gebruikersgegevens
emails.change_email_text = Weet je zeker dat je dit e-mailadres wilt bijwerken?
-repos.lfs_size = LFS grootte
packages.package_manage_panel = Pakketten beheren
-packages.total_size = Totale grootte: %s
-packages.unreferenced_size = Grootte waarnaar niet wordt verwezen: %s
packages.cleanup.success = Verlopen gegevens succesvol opgeschoond
-packages.creator = Maker
-packages.version = Versie
-packages.published = Gepubliceerd
defaulthooks = Standaard webhooks
defaulthooks.update_webhook = Standaard webhook bijwerken
auths.auth_manage_panel = Authenticatiebronnen beheren
@@ -3226,33 +3119,17 @@ auths.oauth2_group_claim_name = Claimnaam die groepsnamen geeft voor deze bron.
auths.oauth2_admin_group = Groepsclaimwaarde voor beheerdersgebruikers. (Optioneel - vereist bovenstaande claimnaam)
auths.oauth2_map_group_to_team = Breng geclaimde groepen in kaart voor organisatieteams. (Optioneel - vereist bovenstaande claimnaam)
users.purge_help = Verwijder de gebruiker en alle repositories, organisaties en pakketten die eigendom zijn van de gebruiker. Alle reacties en issues geplaatst door deze gebruiker zullen ook worden verwijderd.
-users.bot = Bot
auths.oauth2_required_claim_name_helper = Stel deze naam in om het aanmelden vanuit deze bron te beperken tot gebruikers met een claim met deze naam
auths.oauth2_restricted_group = Groepsclaimwaarde voor beperkte gebruikers. (Optioneel - vereist bovenstaande claimnaam)
packages.cleanup = Verlopen gegevens opschonen
defaulthooks.add_webhook = Standaard webhook toevoegen
auths.oauth2_required_claim_value_helper = Stel deze waarde in om het aanmelden vanuit deze bron te beperken tot gebruikers met een claim met deze naam en waarde
-users.remote = Externe
-users.reserved = Gereserveerd
defaulthooks.desc = Webhooks doen automatisch HTTP POST verzoeken naar een server wanneer bepaalde Forgejo gebeurtenissen zich voordoen. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the webhooks guide.
auths.verify_group_membership = Controleer het groepslidmaatschap in LDAP (laat het filter leeg om over te slaan)
-dashboard.rebuild_issue_indexer = Herbouw issue indexer
systemhooks.desc = Webhooks doen automatisch HTTP POST verzoeken naar een server wanneer bepaalde Forgejo gebeurtenissen zich voordoen. Webhooks die hier gedefinieerd zijn, werken op alle repositories op het systeem, dus houd rekening met mogelijke gevolgen voor de prestaties. Lees meer in de webhooks guide.
hooks = Webhooks
integrations = Integraties
-dashboard.new_version_hint = Forgejo %s is nu beschikbaar, u gebruikt versie %s. Zie de blog voor meer details.
-dashboard.sync_repo_tags = Tags synchroniseren van git data naar database
-dashboard.cleanup_hook_task_table = Tabel hook_task opschonen
-dashboard.cleanup_packages = Verlopen pakketten opschonen
-dashboard.cleanup_actions = Verlopen logs en artefacten van actions opschonen
-dashboard.delete_old_actions.started = Het verwijderen van alle oude activiteiten uit de database is gestart.
-dashboard.update_checker = Update checker
-dashboard.stop_zombie_tasks = Zombietaken stoppen
-dashboard.stop_endless_tasks = Eindeloze taken stoppen
-dashboard.start_schedule_tasks = Start geplande taken
-dashboard.sync_branch.started = Branch synchronisatie is gestart
-dashboard.sync_tag.started = Tag synchronisatie is gestart
-auths.attribute_avatar = Avatar attribuut
+auths.attribute_avatar = Avatar-attribuut
auths.enable_ldap_groups = LDAP-groepen inschakelen
auths.ms_ad_sa = MS AD zoekattributen
dashboard.delete_old_actions = Verwijder alle oude activiteiten uit de database
@@ -3260,14 +3137,10 @@ identity_access = Identiteit & toegang
assets = Code assets
auths.helo_hostname_helper = Hostnaam verzonden met HELO. Laat leeg om huidige hostnaam te versturen.
self_check = Zelfcontrole
-dashboard.cron.cancelled = Cron: %[1]s geannuleerd: %[3]s
dashboard.delete_repo_archives = Verwijder alle archieven van repository (ZIP, TAR.GZ, enz.)
-dashboard.cancel_abandoned_jobs = Verlaten jobs annuleren
auths.helo_hostname = HELO hostnaam
settings = Beheerdersinstellingen
-dashboard.task.cancelled = Taak: %[1]s geannuleerd: %[3]s
auths.force_smtps = SMTPS Forceren
-dashboard.sync_repo_branches = Synchroniseren gemiste branches van git data naar database
monitor.processes_count = %d Processen
monitor.process.children = Kinderen
self_check.database_inconsistent_collation_columns = Database gebruikt collatie %s, maar deze kolommen gebruiken onjuiste collaties. Dit kan onverwachte problemen veroorzaken.
@@ -3275,26 +3148,23 @@ monitor.stacktrace = Stacktrace
monitor.download_diagnosis_report = Diagnoserapport downloaden
self_check.database_collation_case_insensitive = Database gebruikt collatie %s, wat een ongevoelige collatie is. Hoewel Forgejo ermee kan werken, kunnen er enkele zeldzame gevallen zijn die niet werken zoals verwacht.
self_check.database_fix_mysql = Voor MySQL/MariaDB gebruikers zou je het "forgejo doctor convert" commando kunnen gebruiken om de collatieproblemen op te lossen, of je zou het probleem ook kunnen oplossen door "ALTER ... COLLATE ..." SQL's handmatig op te lossen.
-dashboard.gc_lfs = LFS meta-objecten afval opruimen
auths.map_group_to_team = Breng LDAP-groepen in kaart voor organisatieteams (laat het veld leeg om over te slaan)
auths.oauth2_required_claim_name = Verplichte claimnaam
auths.oauth2_scopes = Aanvullende scopes
auths.skip_local_two_fa_helper = Niet ingesteld betekent dat lokale gebruikers met 2FA nog steeds 2FA moeten passeren om in te loggen
auths.skip_local_two_fa = Lokale 2FA overslaan
-auths.oauth2_icon_url = Pictogram URL
-auths.pam_email_domain = PAM e-maildomein (optioneel)
+auths.oauth2_icon_url = URL naar Pictogram
+auths.pam_email_domain = PAM-e-maildomein (optioneel)
auths.tip.gitea = Registreer een nieuwe OAuth2-toepassing. De handleiding is te vinden op %s
auths.tip.discord = Registreer een nieuwe toepassing op %s
auths.tip.bitbucket = Registreer een nieuwe OAuth consumer op %s en voeg de rechten “Account” - “Read” toe
auths.tips.oauth2.general.tip = Bij het registreren van een nieuwe OAuth2-authenticatie moet de callback/redirect URL zijn:
-config.ssh_domain = SSH-server domein
auths.login_source_of_type_exist = Er bestaat al een authenticatiebron van dit type.
auths.login_source_exist = De authenticatiebron "%s" bestaat al.
config.test_mail_sent = Er is een testmail verzonden naar "%s".
config.test_mail_failed = Er is geen testmail verzonden naar "%s": %v
config.access_log_template = Sjabloon voor toegangslogboek
config.logger_name_fmt = Logger: %s
-config.git_max_diff_line_characters = Max diff tekens per regel
auths.map_group_to_team_removal = Gebruikers verwijderen uit gesynchroniseerde teams als gebruiker niet tot overeenkomstige LDAP-groep behoort
config.send_test_mail_submit = Stuur
auths.unable_to_initialize_openid = OpenID Connect Provider kan niet worden geïnitialiseerd: %s
@@ -3311,11 +3181,7 @@ config.set_setting_failed = Instelling %s mislukt om te zetten
auths.oauth2_tenant = Tenant
config.domain = Serverdomein
config.app_data_path = Pad voor app-gegevens
-config.mailer_smtp_addr = SMTP-adres
-config.mailer_protocol = Protocol
-config.mailer_enable_helo = HELO inschakelen
auths.oauth2_map_group_to_team_removal = Verwijder gebruikers uit gesynchroniseerde teams als de gebruiker niet tot de overeenkomstige groep behoort.
-config.mailer_config = Mailer configuratie
config_settings = Instellingen
auths.tips.gmail_settings = Gmail instellingen:
config_summary = Samenvatting
diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini
index 7354373710..e46cb7e074 100644
--- a/options/locale/locale_pl-PL.ini
+++ b/options/locale/locale_pl-PL.ini
@@ -426,7 +426,7 @@ password_pwned = Wybrane hasło znajduje się na tutaj, aby rozpocząć nową sesję.
+invalid_code_forgot_password = Twój kod potwierdzający jest niepoprawny lub wygasł. Naciśnij tutaj, aby rozpocząć nową sesję.
invalid_password = Twoje hasło nie zgadza się z hasłem, które zostało użyte do stworzenia konta.
reset_password_wrong_user = Jesteś zalogowany(-a) jako %s, ale link odzyskujący jest dla %s
oauth.signin.error.access_denied = Wniosek o autoryzację został odrzucony.
@@ -2876,57 +2876,14 @@ first_page=Pierwsza
last_page=Ostatnia
total=Ogółem: %d
-dashboard.statistic=Podsumowanie
-dashboard.operations=Operacje konserwacji
-dashboard.system_status=Status strony
-dashboard.operation_name=Nazwa operacji
-dashboard.operation_switch=Przełącz
-dashboard.operation_run=Uruchom
dashboard.clean_unbind_oauth=Usuń wychodzące połączenia OAuth
dashboard.clean_unbind_oauth_success=Wszystkie połączenia wychodzące OAuth zostały usunięte.
-dashboard.task.started=Rozpoczęto zadanie: %[1]s
-dashboard.task.process=Zadanie: %[1]s
-dashboard.task.error=Błąd w zadaniu: %[1]s: %[3]s
-dashboard.task.finished=Zadanie: %[1]s rozpoczęte przez %[2]s zostało ukończone
-dashboard.task.unknown=Nieznane zadanie: %[1]s
-dashboard.cron.started=Uruchomiono Crona: %[1]s
-dashboard.cron.process=Cron: %[1]s
-dashboard.cron.error=Błąd w Cronie: %s: %[3]s
-dashboard.cron.finished=Cron: %[1]s zakończony
dashboard.delete_inactive_accounts=Usuń wszystkie nieaktywowane konta
-dashboard.delete_inactive_accounts.started=Zadanie usuwania nieaktywowanych kont zostało rozpoczęte.
dashboard.delete_repo_archives=Usuń wszystkie archiwa repozytoriów (ZIP, TAR.GZ, itp..)
-dashboard.delete_repo_archives.started=Zadanie usuwania archiwów repozytoriów zostało rozpoczęte.
dashboard.delete_missing_repos=Usuń wszystkie repozytoria, które nie mają plików Gita
-dashboard.delete_missing_repos.started=Zadanie usuwania repozytoriów, które nie mają plików Gita, zostało rozpoczęte.
-dashboard.delete_generated_repository_avatars=Usuń wygenerowane awatary repozytoriów
-dashboard.update_mirrors=Aktualizuj kopie lustrzane
-dashboard.repo_health_check=Sprawdź stan wszystkich repozytoriów
-dashboard.check_repo_stats=Sprawdź statystyki wszystkich repozytoriów
-dashboard.archive_cleanup=Usuń stare archiwa repozytoriów
-dashboard.deleted_branches_cleanup=Wyczyść usunięte galęzie
-dashboard.git_gc_repos=Wykonaj zbieranie śmieci ze wszystkich repozytoriów
-dashboard.resync_all_sshkeys=Zaktualizuj plik '.ssh/authorized_keys' z kluczami SSH Forgejo.
-dashboard.resync_all_sshprincipals=Zaktualizuj plik ".ssh/authorized_principals" z podmiotami SSH Forgejo.
-dashboard.resync_all_hooks=Ponownie synchronizuj hooki Git we wszystkich repozytoriach (pre-receive, update, post-receive, proc-receive, …)
-dashboard.reinit_missing_repos=Ponownie zainicjalizuj wszystkie brakujące repozytoria Git, dla których istnieją rekordy
-dashboard.sync_external_users=Synchronizuj zewnętrzne dane użytkownika
-dashboard.cleanup_hook_task_table=Wyczyść tabelę hook_task
dashboard.delete_old_actions=Usuń wszystkie stare akcje z bazy danych
-dashboard.delete_old_actions.started=Usuwanie wszystkich starych akcji z bazy danych rozpoczęte.
-
users.user_manage_panel=Zarządzanie kontami użytkowników
users.new_account=Utwórz konto użytkownika
-users.name=Nazwa użytkownika
-users.full_name=Imię i nazwisko
-users.activated=Aktywny
-users.admin=Administrator
-users.restricted=Ograniczone
-users.2fa=2FA
-users.repos=Repozytoria
-users.created=Utworzony
-users.last_login=Ostatnie logowanie
-users.never_login=Nigdy nie zalogował(a) się
users.send_register_notify=Wyślij użytkownikowi powiadomienie o rejestracji
users.edit=Edytuj
users.auth_source=Źródło uwierzytelniania
@@ -2964,33 +2921,17 @@ emails.duplicate_active=Ten e-mail jest już aktywny dla innego użytkownika.
emails.change_email_header=Aktualizuj właściwości adresu e-mail
orgs.org_manage_panel=Zarządzanie organizacjami
-orgs.name=Nazwa
-orgs.teams=Zespoły
-orgs.members=Członkowie
-orgs.new_orga=Nowa organizacja
-
repos.repo_manage_panel=Zarządzanie repozytoriami
repos.unadopted=Nieprzyjęte repozytoria
repos.unadopted.no_more=Nie znaleziono więcej nieadoptowanych repozytoriów.
-repos.owner=Właściciel
-repos.name=Nazwa
repos.private=Prywatne
-repos.issues=Zgłoszenia
-repos.size=Rozmiar
-
-packages.owner=Właściciel
-packages.name=Nazwa
-packages.type=Typ
-packages.repository=Repozytorium
-packages.size=Rozmiar
-
defaulthooks=Domyślne webhooki
-defaulthooks.add_webhook=Dodaj domyślny Webhook
-defaulthooks.update_webhook=Zaktualizuj domyślny Webhook
+defaulthooks.add_webhook=Dodaj domyślny webhook
+defaulthooks.update_webhook=Zaktualizuj domyślny webhook
systemhooks=Webhooki systemowe
-systemhooks.add_webhook=Dodaj Webhook Systemowy
-systemhooks.update_webhook=Aktualizuj Webhook Systemowy
+systemhooks.add_webhook=Dodaj webhook systemowy
+systemhooks.update_webhook=Aktualizuj webhook systemowy
auths.auth_manage_panel=Zarządzanie źródłami uwierzytelniania
auths.new=Dodaj źródło uwierzytelniania
@@ -3079,38 +3020,17 @@ config.offline_mode=Tryb lokalny
config.disable_router_log=Wyłącz dziennik routera
config.run_user=Uruchom jako nazwa użytkownika
config.run_mode=Tryb uruchamienia
-config.git_version=Wersja Git
config.repo_root_path=Ścieżka główna repozytoriów
config.lfs_root_path=Ścieżka główna katalogu LFS
config.log_file_root_path=Ścieżka dla logów
config.script_type=Typ skryptu
config.reverse_auth_user=Użytkownik odwrotnego proxy
-config.ssh_config=Konfiguracja SSH
-config.ssh_enabled=Włączone
-config.ssh_start_builtin_server=Wykorzystaj wbudowany serwer
-config.ssh_port=Port
-config.ssh_listen_port=Port nasłuchiwania
-config.ssh_root_path=Ścieżka do katalogu głównego
-config.ssh_key_test_path=Ścieżka do klucza testowego
-config.ssh_keygen_path=Ścieżka do generatora ('ssh-keygen')
-config.ssh_minimum_key_size_check=Sprawdzanie minimalnej długości klucza
-config.ssh_minimum_key_sizes=Minimalne rozmiary kluczy
-
config.lfs_config=Konfiguracja LFS
config.lfs_enabled=Włączone
config.lfs_content_path=Ścieżka zawartości LFS
config.lfs_http_auth_expiry=Wygasanie uwierzytelnienia LFS HTTP
-config.db_config=Konfiguracja bazy danych
-config.db_type=Typ
-config.db_host=Serwer
-config.db_name=Nazwa
-config.db_user=Nazwa użytkownika
-config.db_schema=Schemat
-config.db_ssl_mode=SSL
-config.db_path=Ścieżka
-
config.service_config=Konfiguracja usługi
config.register_email_confirm=Wymagaj potwierdzenia adresu e-mail przy rejestracji
config.disable_register=Wyłącz samodzielną rejestrację
@@ -3138,14 +3058,6 @@ config.queue_length=Długość kolejki
config.deliver_timeout=Limit czasu doręczenia
config.skip_tls_verify=Pomiń weryfikację TLS
-config.mailer_enabled=Włączona
-config.mailer_name=Nazwa
-config.mailer_smtp_port=Port SMTP
-config.mailer_user=Użytkownik
-config.mailer_use_sendmail=Używaj Sendmail
-config.mailer_sendmail_path=Ścieżka Sendmail
-config.mailer_sendmail_args=Dodatkowe argumenty Sendmail
-config.mailer_sendmail_timeout=Limit czasu Sendmail
config.test_email_placeholder=Email (np. test@example.com)
config.send_test_mail=Wyślij testową wiadomość e-mail
@@ -3172,18 +3084,6 @@ config.picture_service=Usługa obrazów
config.disable_gravatar=Wyłącz Gravatar
config.enable_federated_avatar=Włącz federowane awatary
-config.git_config=Konfiguracja Git
-config.git_disable_diff_highlight=Wyłącz wyróżnianie składni diff
-config.git_max_diff_lines=Maksymalna liczba linii diff na plik
-config.git_max_diff_line_characters=Maksymalna liczba znaków diff na linię
-config.git_max_diff_files=Maksymalna liczba plików diff
-config.git_gc_args=Argumenty GC
-config.git_migrate_timeout=Limit czasu migracji
-config.git_mirror_timeout=Limit czasu aktualizacji kopii lustrzanej
-config.git_clone_timeout=Limit czasu operacji klonowania
-config.git_pull_timeout=Limit czasu dla operacji pull
-config.git_gc_timeout=Limit czasu operacji GC
-
config.log_config=Konfiguracja dziennika
config.disabled_logger=Wyłączone
config.access_log_mode=Tryb dziennika dostępu
@@ -3221,41 +3121,20 @@ notices.delete_success=Powiadomienia systemu zostały usunięte.
monitor.last_execution_result = Wynik
monitor.process.children = Dzieci
integrations = Integracje
-users.bot = Bot
-packages.version = Wersja
-packages.creator = Twórca
notices.operations = Operacje
config.send_test_mail_submit = Wyślij
-packages.published = Opublikowane
-config.mailer_protocol = Protokół
monitor.stats = Statystyki
-users.remote = Zdalnie
config_summary = Podsumowanie
config_settings = Ustawienia
assets = Zasoby kodu
-dashboard.cleanup_packages = Wyczyść przedawnione pakiety
-dashboard.delete_old_system_notices = Usuń wszystkie stare powiadomienia systemowe z bazy danych
users.details = Szczegóły użytkownika
emails.deletion_success = Adres e-mail został usunięty.
emails.delete_primary_email_error = Nie możesz usunąć głównego adresu e-mail.
users.purge_help = Wymusza usunięcie użytkownika razem z jakimikolwiek repozytoriami, organizacjami, oraz pakietami których ten użytkownik jest właścicielem. Wszystkie komentarze i zgłoszenia przez tego użytkownika również zostaną usunięte.
-dashboard.sync_branch.started = Synchronizacja gałęzi rozpoczęta
-dashboard.cancel_abandoned_jobs = Anuluj porzucone prace akcji
-users.reserved = Zarezerwowane
-dashboard.task.cancelled = Zadanie: %[1]s anulowane: %[3]s
-dashboard.sync_repo_branches = Synchronizuj pominięte gałęzie z danych Git do bazy danych
-dashboard.sync_repo_tags = Synchronizuj tagi z danych Git do bazy danych
settings = Ustawienia administratora
-dashboard.stop_zombie_tasks = Zatrzymaj zadania zombi akcji
users.cannot_delete_self = Nie możesz usunąć sam(a) siebie
packages.cleanup.success = Pomyślnie wyczyszczono przedawnione dane
-dashboard.sync_tag.started = Synchronizacja tagu rozpoczęta
-dashboard.gc_lfs = Wywołaj GC na metaobiektach LFS
-dashboard.stop_endless_tasks = Zatrzymaj niekończące się zadania akcji
-repos.lfs_size = Wielkość LFS
packages.package_manage_panel = Zarządzaj pakietami
-dashboard.cleanup_actions = Wyczyść przedawnione logi i artefakty z akcji
-dashboard.rebuild_issue_indexer = Przebuduj indekser zgłoszeń
users.new_success = Konto użytkownika "%s" zostało utworzone.
users.purge = Pozbądź się użytkownika
users.activated.description = Zakończenie weryfikacji e-mail. Właściciel nieaktywowanego konta nie będzie mógł się zalogować dopóki weryfikacja e-mail nie została zakończona.
@@ -3268,21 +3147,15 @@ users.still_own_packages = Ten użytkownik nadal jest właścicielem jednego lub
emails.change_email_text = Czy jesteś pewien(-na), że chcesz zaktualizować ten adres e-mail?
emails.delete = Usuń adres e-mail
emails.delete_desc = Czy jesteś pewien(-na), że chcesz usunąć ten adres e-mail?
-packages.total_size = Wielkość całkowita: %s
-packages.unreferenced_size = Nieodniesiona wielkość: %s
packages.cleanup = Wyczyść przedawnione dane
defaulthooks.desc = Webhooki automatycznie wykonują żądania HTTP POST do serwera kiedy pewne wydarzenia Forgejo zostają wywołane. Webhooki zdefiniowane tutaj są domyślne i będą kopiowane do wszystkich nowych repozytoriów. Przeczytaj więcej w przewodniku webhooków.
-dashboard.new_version_hint = Forgejo %s jest już dostępne, w tej chwili korzystasz z %s. Sprawdź szczegóły na blogu.
identity_access = Tożsamość i dostęp
-dashboard.cron.cancelled = Cron: %[1]s anulowany: %[3]s
config.domain = Domena serwera
-config.mailer_config = Konfiguracja Mailer
auths.tip.gitea = Zarejestruj nową aplikację OAuth2. Przewodnik można znaleźć na %s
auths.unable_to_initialize_openid = Nie można zainicjalizować Dostawcy Uwierzytelniania OpenID Connect: %s
auths.force_smtps = Wymuś SMTPS
auths.helo_hostname = Nazwa hosta HELO
self_check = Autoweryfikacja
-config.mailer_enable_helo = Włącz HELO
auths.tips.gmail_settings = Ustawienia Gmail:
auths.map_group_to_team_removal = Usuń użytkowników z synchronizowanych zespołów jeżeli użytkownik nie należy do odpowiadającej grupy LDAP
auths.enable_ldap_groups = Włącz grupy LDAP
@@ -3295,11 +3168,10 @@ monitor.download_diagnosis_report = Pobierz raport diagnostyczny
auths.skip_local_two_fa_helper = Pozostawienie tej opcji jako odznaczonej oznacza, że użytkownicy lokalni z aktywowanym 2FA nadal będą musieli przejść 2FA by móc się zalogować
config.app_slogan = Slogan instancji
config.test_mail_failed = Nie udało się wysłać testowego e-maila do "%s": %v
-config.mailer_use_dummy = Testowa
config.cache_test_failed = Nie udało się zbadać pamięci podręcznej: %v.
config.cache_test = Przetestuj Pamięć Podręczną
monitor.processes_count = %d Procesów
-self_check.no_problem_found = Nie znaleziono jeszcze żadnych problemów.
+self_check.no_problem_found = Nie znaleziono żadnych problemów.
config.cache_test_succeeded = Test pamięci podręcznej zakończony powodzeniem, otrzymano odpowiedź w ciągu %s.
auths.login_source_exist = Źródło uwierzytelniania "%s" już istnieje.
auths.new_success = Uwierzytelnianie "%s" została dodana.
@@ -3310,19 +3182,14 @@ auths.default_domain_name = Domyślna nazwa domeny używana do adresu e-mail
config.allow_dots_in_usernames = Zezwól użytkownikom na użycie kropek w ich nazwach użytkowników. Nie wpływa na już istniejące konta.
config.open_with_editor_app_help = Edytory dostępne w menu klonowania "Otwórz przy pomocy". Jeżeli pozostawione puste, ustawienie domyślne będzie użyte. Rozwiń by zobaczyć ustawienie domyślne.
monitor.duration = Okres (s)
-config.ssh_domain = Domena serwera SSH
-config.mailer_smtp_addr = Host SMTP
auths.tip.gitlab_new = Zarejestruj nową aplikację na %s
auths.oauth2_scopes = Dodatkowe zakresy
auths.tips.oauth2.general.tip = Podczas rejestrowania nowego uwierzytelniania OAuth2, callback/przekierowanie URL powinno być:
auths.oauth2_group_claim_name = Nazwa oświadczenia określającego nazwy grup dla tego źródła. (Opcjonalne)
-dashboard.update_migration_poster_id = Aktualizuj ID autora migracji
config.access_log_template = Szablon dziennika dostępu
-dashboard.start_schedule_tasks = Uruchomienie zaplanowanych zadań akcji
config.logger_name_fmt = Dziennik: %s
self_check.database_collation_case_insensitive = Baza danych korzysta z układu sortowania %s, dla którego nie ma znaczenia wielkość liter. Mimo, że Forgejo mógłoby działać z tym ustawieniem poprawnie, mogą wydarzyć się rzadkie przypadki, które nie będą działać zgodnie z oczekiwaniami.
auths.helo_hostname_helper = Nazwa hosta wysyłana z HELO. Aby wysłać bieżącą nazwę hosta, pozostaw puste.
-dashboard.update_checker = Sprawdzanie aktualizacji
auths.oauth2_required_claim_name_helper = Ustaw tę nazwę by ograniczyć logowanie z tego źródła dla użytkowników z oświadczeniem o tej nazwie
auths.group_attribute_list_users = Atrybut grupy zawierający listę użytkowników
auths.attribute_avatar = Atrybut awatara
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index 7e505b6920..27c3978415 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -121,7 +121,7 @@ value=Valor
go_back = Voltar
view = Visualizar
copy_hash = Copiar hash
-tracked_time_summary = Resumo do tempo de rastreamento baseado em filtros da lista de issues
+tracked_time_summary = Resumo do tempo rastreado baseado em filtros da lista de issues
confirm_delete_artifact = Tem certeza de que deseja excluir o artefato "%s"?
filter = Filtro
filter.clear = Limpar filtros
@@ -239,7 +239,7 @@ err_empty_db_path=O caminho do banco de dados SQLite3 não pode ser em branco.
no_admin_and_disable_registration=Você não pode desabilitar o auto-cadastro do usuário sem criar uma conta de administrador.
err_empty_admin_password=A senha do administrador não pode ser em branco.
err_empty_admin_email=O e-mail do administrador não pode ser em branco.
-err_admin_name_is_reserved=Nome de usuário do administrador é inválido, nome de usuário está reservado
+err_admin_name_is_reserved=Nome de usuário administrador é inválido, este nome já está reservado
err_admin_name_pattern_not_allowed=Nome de usuário administrador é inválido, o nome de usuário corresponde a um padrão reservado
err_admin_name_is_invalid=Nome de usuário do administrador inválido
@@ -277,7 +277,7 @@ server_service_title=Configurações do servidor e serviços de terceiros
offline_mode=Habilitar modo local
offline_mode.description=Desabilitar redes de entrega de conteúdo (CDNs) de terceiros e fornecer todos os recursos localmente.
disable_gravatar=Desabilitar o gravatar
-disable_gravatar.description=Desabilitar o uso do Gravatar e avatar de fontes de terceiros. Um avatar padrão será usado a menos que um usuário localmente carrega um avatar.
+disable_gravatar.description=Desabilitar o uso do Gravatar e avatar de fontes de terceiros. Um avatar padrão será usado a menos que um usuário localmente carregue um avatar.
federated_avatar_lookup=Habilitar avatares federados
federated_avatar_lookup.description=Buscar avatares usando Libravatar.
disable_registration=Somente administradores podem criar novas contas
@@ -286,9 +286,9 @@ allow_only_external_registration.description=Usuários apenas poderão criar nov
openid_signin=Habilitar acesso via OpenID
openid_signin.description=Habilitar o acesso de usuários via OpenID.
openid_signup=Habilitar cadastros via OpenID
-openid_signup.description=Permitir que os usuários criem contas com OpenID se o autorregistro estiver habilitado.
+openid_signup.description=Permitir que os usuários criem contas com OpenID se o autocadastro estiver habilitado.
enable_captcha=Habilitar CAPTCHA ao registrar
-enable_captcha.description=Impor validação por CAPTCHA para cadastro de usuários.
+enable_captcha.description=Exigir validação por CAPTCHA para cadastro de usuários.
require_sign_in_view=Apenas usuários logados podem visualizar páginas
require_sign_in_view.description=Limitar acesso ao conteúdo apenas aos usuários autenticados. Visitantes só poderão acessar as páginas de autenticação.
admin_setting.description=Criar uma conta de administrador é opcional. O primeiro usuário cadastrado automaticamente se tornará um administrador.
@@ -320,7 +320,7 @@ no_reply_address=Domínio de e-mail oculto
no_reply_address_helper=Nome de domínio para usuários com endereço de e-mail oculto. Por exemplo, o nome de usuário "joe" será registrado no Git como "joe@noreply.example.org" se o domínio de e-mail oculto estiver definido como "noreply.example.org".
password_algorithm=Algoritmo de hash de senhas
invalid_password_algorithm=Algoritmo de hash de senha inválido
-password_algorithm_helper=Escolha o algoritmo de hash para as senhas. Diferentes algoritmos têm requerimentos e forças diversos. O algoritmo argon2 é bastante seguro, mas usa muita memória e pode ser inapropriado para sistemas com menos recursos.
+password_algorithm_helper=Escolha o algoritmo de hash para as senhas. Diferentes algoritmos têm requisitos e forças diversos. O algoritmo argon2 é bastante seguro, mas usa muita memória e pode ser inapropriado para sistemas com menos recursos.
enable_update_checker=Verificar por atualizações automaticamente
env_config_keys=Configuração do ambiente
env_config_keys_prompt=As seguintes variáveis de ambiente também serão aplicadas ao seu arquivo de configuração:
@@ -428,7 +428,7 @@ authorization_failed_desc=A autorização falhou porque detectamos uma solicita
password_pwned=A senha que você escolheu faz parte de uma lista de senhas roubadas expostas anteriormente em violações de dados. Tente novamente com uma senha diferente e considere alterar essa senha em outro lugar também.
password_pwned_err=Não foi possível concluir a requisição ao HaveIBeenPwned
change_unconfirmed_email_error = Erro ao alterar o endereço de e-mail: %v
-change_unconfirmed_email_summary = Alterar o endereço de e-mail que o e-mail de ativação será enviado para.
+change_unconfirmed_email_summary = Alterar o endereço de e-mail para onde enviar mensagens de ativação.
last_admin = Não é possível remover o último administrador. Deve existir ao menos um usuário administrador.
change_unconfirmed_email = Se você colocou o endereço de e-mail errado durante o cadastro, você pode alterá-lo abaixo, e uma confirmação será enviada para o novo endereço.
hint_register = Precisa de uma conta? Registre-se agora.
@@ -667,7 +667,7 @@ followers.title.few = seguidores
public_activity.visibility_hint.self_private = Sua atividade está visível apenas para você e para os administradores da instância. Configurar.
public_activity.visibility_hint.self_public = Sua atividade está visível para todos, exceto as interações em espaços privados. Clique para configurar.
public_activity.visibility_hint.admin_public = Sua atividade está visível para todos, mas como um administrador você também pode ver interações em espaços privados.
-public_activity.visibility_hint.admin_private = Essa atividade está visível para você porque você é um administrador, mas o usuário dejesa que ela seja mantida em privado.
+public_activity.visibility_hint.admin_private = Essa atividade está visível para você porque você é um administrador, mas o usuário deseja que ela seja mantida em privado.
public_activity.visibility_hint.self_private_profile = Sua atividade só é visível para você e para os administradores do servidor porque seu perfil é privado. Configurar.
[settings]
@@ -922,8 +922,8 @@ passcode_invalid=Esse código de acesso é inválido. Tente novamente.
twofa_enrolled=Sua conta foi inscrita na autenticação de dois fatores. Armazene seu token de recuperação de uso único (%s) em um local seguro, pois ele não será exibido novamente.
twofa_failed_get_secret=Falha ao obter o segredo.
-webauthn_desc=Chaves de segurança são dispositivos de hardware que contém chaves de criptografia. Elas podem ser usadas para autenticação de dois fatores. A chave de segurança deve suportar o padrão WebAuthnn Authenticator.
-webauthn_register_key=Adicionar chave
+webauthn_desc=Chaves de segurança são dispositivos de hardware que contém chaves de criptografia. Elas podem ser usadas para autenticação de dois fatores. A chave de segurança deve suportar o padrão WebAuthn Authenticator.
+webauthn_register_key=Adicionar chave de segurança
webauthn_nickname=Apelido
webauthn_delete_key=Remover chave
webauthn_delete_key_desc=Se você remover uma chave de segurança, não será possível utilizá-la para fazer login. Continuar?
@@ -931,8 +931,8 @@ webauthn_delete_key_desc=Se você remover uma chave de segurança, não será po
manage_account_links=Contas vinculadas
manage_account_links_desc=Estas contas externas estão vinculadas a sua conta de Forgejo.
link_account=Vincular conta
-remove_account_link=Remover conta
-remove_account_link_desc=A exclusão da chave SSH revogará o acesso à sua conta. Continuar?
+remove_account_link=Remover conta vinculada
+remove_account_link_desc=A remoção de uma conta vinculada revogará o acesso dessa conta à sua conta do Forgejo. Continuar?
remove_account_link_success=A conta vinculada foi removida.
hooks.desc=Adicione webhooks que serão acionados para todos os repositórios que você possui.
@@ -991,7 +991,7 @@ keep_pronouns_private.description = Isto irá esconder seus pronomes de visitant
storage_overview = Visão geral de armazenamento
quota = Cota
quota.applies_to_org = As seguintes regras de cota se aplicam a esta organização
-quota.rule.exceeded = Excedido
+quota.rule.exceeded = Excedida
quota.rule.no_limit = Ilimitado
quota.sizes.all = Tudo
quota.sizes.repos.all = Repositórios
@@ -1002,7 +1002,7 @@ quota.sizes.git.lfs = LFS Git
quota.sizes.assets.all = Assets
quota.sizes.assets.attachments.all = Anexos
quota.sizes.assets.attachments.issues = Anexos de issue
-quota.sizes.assets.attachments.releases = Anexos de release
+quota.sizes.assets.attachments.releases = Anexos de lançamento
quota.sizes.assets.artifacts = Artefatos
quota.sizes.assets.packages.all = Pacotes
quota.sizes.wiki = Wiki
@@ -1934,10 +1934,10 @@ activity.title.unresolved_conv_1=%d conversa não resolvida
activity.title.unresolved_conv_n=%d conversas não resolvidas
activity.unresolved_conv_desc=Estas issues foram recentemente alteradas e pull requests ainda não foram resolvidos.
activity.unresolved_conv_label=Aberta
-activity.title.releases_1=%d release
+activity.title.releases_1=%d lançamento
activity.title.releases_n=%d lançamentos
activity.title.releases_published_by=%s publicada(s) por %s
-activity.published_release_label=Release
+activity.published_release_label=Lançamento
activity.no_git_activity=Não houve nenhuma atividade de commit neste período.
activity.git_stats_exclude_merges=Excluindo merges,
activity.git_stats_author_1=%d autor
@@ -2025,7 +2025,7 @@ settings.pulls.enable_autodetect_manual_merge=Habilitar a detecção automática
settings.pulls.allow_rebase_update=Ativar atualização do branch do pull request por rebase
settings.pulls.default_delete_branch_after_merge=Excluir o branch de pull request após o merge por padrão
settings.pulls.default_allow_edits_from_maintainers=Permitir edições de mantenedores por padrão
-settings.releases_desc=Habilitar releases no repositório
+settings.releases_desc=Habilitar lançamentos no repositório
settings.packages_desc=Habilitar registro de pacotes do repositório
settings.projects_desc=Habilitar projetos do repositório
settings.actions_desc=Habilitar pipelines integradas de CI/CD com Forgejo Actions
@@ -2400,9 +2400,9 @@ releases.desc=Acompanhe as versões e downloads do projeto.
release.releases=Versões
release.detail=Detalhes da versão
release.tags=Tags
-release.new_release=Nova release
+release.new_release=Nova versão
release.draft=Rascunho
-release.prerelease=Pré-release
+release.prerelease=Pré-lançamento
release.stable=Estável
release.compare=Comparar
release.edit=Editar
@@ -2420,15 +2420,15 @@ release.tag_helper_existing=Tag existente.
release.title=Título da versão
release.title_empty=O título não pode estar em branco.
release.message=Descreva esta versão
-release.prerelease_desc=Marcar como pré-release
+release.prerelease_desc=Marcar como pré-lançamento
release.prerelease_helper=Marcar esta versão como inadequada para uso em produção.
release.cancel=Cancelar
-release.publish=Publicar release
+release.publish=Publicar versão
release.save_draft=Salvar rascunho
-release.edit_release=Atualizar release
-release.delete_release=Excluir release
+release.edit_release=Atualizar versão
+release.delete_release=Excluir versão
release.delete_tag=Excluir tag
-release.deletion=Excluir release
+release.deletion=Excluir versão
release.deletion_success=A versão foi excluída.
release.deletion_tag_desc=A tag será excluída do repositório. Conteúdo do repositório e histórico permanecerão inalterados. Continuar?
release.deletion_tag_success=A tag foi excluída.
@@ -2673,11 +2673,11 @@ release.type_attachment = Anexo
release.type_external_asset = Recurso externo
release.asset_name = Nome do recurso
release.asset_external_url = URL Externa
-release.hide_archive_links_helper = Esconder automaticamente arquivos de código fonte gerados para esse release. Por exemplo, se você estiver enviando os seus manualmente.
+release.hide_archive_links_helper = Esconder automaticamente arquivos de código fonte gerados para esse lançamento. Por exemplo, se você estiver enviando os seus manualmente.
branch.delete_desc = Apagar um branch é permanente. Ainda que o branch apagado possa continuar a existir por um breve período antes de ser realmente apagado, isso NÃO PODE ser desfeito na maioria dos casos. Continuar?
release.add_external_asset = Adicionar componente externo
release.invalid_external_url = URL externo inválido: "%s"
-release.deletion_desc = Eliminar um release apenas o remove do Forgejo. Isso não irá afetar a tag no Git, o conteúdo do seu repositório ou o histórico. Continuar?
+release.deletion_desc = Eliminar um lançamento apenas o remove do Forgejo. Isso não irá afetar a tag no Git, o conteúdo do seu repositório ou o histórico. Continuar?
issues.all_title = Todas
issues.new.assign_to_me = Designar a mim
settings.discord_icon_url.exceeds_max_length = A URL do ícone precisa ter 2048 caracteres ou menos
@@ -2708,7 +2708,7 @@ issues.reaction.add = Adicionar reação
issues.reaction.alt_few = %[1]s reagiu com %[2]s.
issues.reaction.alt_many = %[1]s e mais %[2]d reagiram com %[3]s.
summary_card_alt = Cartão de resumo do repositório %s
-release.summary_card_alt = Cartão de resumo de um release intitulado "%s" no repositório %s
+release.summary_card_alt = Cartão de resumo de um lançamento intitulado "%s" no repositório %s
archive.pull.noreview = Este repositório está arquivado. Não é possível revisar propostas.
editor.commit_email = Email de commit
commits.view_single_diff = Ver modificações neste arquivo introduzidas neste commit
@@ -2881,67 +2881,14 @@ first_page=Primeira
last_page=Última
total=Total: %d
-dashboard.new_version_hint=Uma nova versão está disponível: %s. Versão atual: %s. Visite o blog para mais informações.
-dashboard.statistic=Resumo
-dashboard.operations=Operações de manutenção
-dashboard.system_status=Status do sistema
-dashboard.operation_name=Nome da operação
-dashboard.operation_switch=Trocar
-dashboard.operation_run=Executar
dashboard.clean_unbind_oauth=Limpar conexões OAuth não vinculadas
dashboard.clean_unbind_oauth_success=Todas as conexões de OAuth não vinculadas foram excluídas.
-dashboard.task.started=Tarefa Iniciada: %[1]s
-dashboard.task.process=Tarefa: %[1]s
-dashboard.task.error=Erro na Tarefa: %[1]s: %[3]s
-dashboard.task.finished=Tarefa: %[1]s iniciada por %[2]s foi finalizada
-dashboard.task.unknown=Tarefa desconhecida: %[1]s
-dashboard.cron.started=Cron Iniciado: %[1]s
-dashboard.cron.process=Cron: %[1]s
-dashboard.cron.error=Erro no Cron: %s: %[3]s
-dashboard.cron.finished=Cron: %[1]s terminou
dashboard.delete_inactive_accounts=Excluir todas as contas não ativadas
-dashboard.delete_inactive_accounts.started=A tarefa de apagar todas as contas não ativadas foi iniciada.
dashboard.delete_repo_archives=Excluir todos os arquivos dos repositórios (ZIP, TAR.GZ, etc..)
-dashboard.delete_repo_archives.started=A tarefa de remover todos os arquivos foi iniciada.
dashboard.delete_missing_repos=Excluir todos os repositórios que não possuem seus arquivos Git
-dashboard.delete_missing_repos.started=Foi iniciada a tarefa de excluir todos os repositórios que não têm arquivos Git.
-dashboard.delete_generated_repository_avatars=Excluir avatares gerados do repositório
-dashboard.update_mirrors=Atualizar espelhos
-dashboard.repo_health_check=Verificar estado de saúde de todos os repositórios
-dashboard.check_repo_stats=Verificar estatísticas de todos os repositórios
-dashboard.archive_cleanup=Apagar arquivos antigos de repositório
-dashboard.deleted_branches_cleanup=Realizar limpeza de branches apagados
-dashboard.update_migration_poster_id=Sincronizar os IDs do remetente da migração
-dashboard.git_gc_repos=Coleta de lixo em todos os repositórios
-dashboard.resync_all_sshkeys=Atualizar o arquivo ".ssh/authorized_keys" com as chaves SSH do Forgejo.
-dashboard.resync_all_sshprincipals=Atualizar o arquivo ".ssh/authorized_principals" com os principals SSH do Forgejo.
-dashboard.resync_all_hooks=Ressincronizar hooks Git de todos os repositórios (pre-receive, update, post-receive, proc-receive, …)
-dashboard.reinit_missing_repos=Reinicializar todos os repositórios Git perdidos cujos registros existem
-dashboard.sync_external_users=Sincronizar dados de usuário externo
-dashboard.cleanup_hook_task_table=Limpar tabela hook_task
-dashboard.cleanup_packages=Limpar pacotes expirados
dashboard.delete_old_actions=Excluir todas as atividades antigas do banco de dados
-dashboard.delete_old_actions.started=A exclusão de todas as atividades antigas do banco de dados foi iniciada.
-dashboard.update_checker=Verificador de atualização
-dashboard.delete_old_system_notices=Excluir todos os avisos de sistema antigos do banco de dados
-dashboard.gc_lfs=Coletar lixos dos meta-objetos LFS
-dashboard.stop_zombie_tasks=Parar tarefas de Actions zumbis
-dashboard.stop_endless_tasks=Parar tarefas de Actions intermináveis
-dashboard.cancel_abandoned_jobs=Cancelar trabalhos abandonados de Actions
-
users.user_manage_panel=Gerenciar contas de usuário
users.new_account=Criar conta de usuário
-users.name=Nome de usuário
-users.full_name=Nome completo
-users.activated=Ativado
-users.admin=Administrador
-users.restricted=Restrito
-users.remote=Remoto
-users.2fa=2FA
-users.repos=Repositórios
-users.created=Criado
-users.last_login=Último acesso
-users.never_login=Nunca entrou
users.send_register_notify=Notificar sobre cadastros via e-mail
users.new_success=Usuário "%s" criado.
users.edit=Editar
@@ -2986,34 +2933,12 @@ emails.duplicate_active=Este endereço de e-mail já está em uso por outro usu
emails.change_email_header=Atualizar propriedades do e-mail
orgs.org_manage_panel=Gerenciar organizações
-orgs.name=Nome
-orgs.teams=Equipes
-orgs.members=Membros
-orgs.new_orga=Nova organização
-
repos.repo_manage_panel=Gerenciar repositórios
repos.unadopted=Repositórios não adotados
repos.unadopted.no_more=Não foram encontrados repositórios não adotados.
-repos.owner=Proprietário(a)
-repos.name=Nome
repos.private=Privado
-repos.issues=Issues
-repos.size=Tamanho
-repos.lfs_size=Tamanho do LFS
-
packages.package_manage_panel=Gerenciar pacotes
-packages.total_size=Tamanho total: %s
-packages.unreferenced_size=Tamanho não referenciado: %s
packages.cleanup=Limpar dados expirados
-packages.owner=Proprietário
-packages.creator=Criador
-packages.name=Nome
-packages.version=Versão
-packages.type=Tipo
-packages.repository=Repositório
-packages.size=Tamanho
-packages.published=Publicado
-
defaulthooks=Webhooks padrão
defaulthooks.add_webhook=Adicionar Webhook Padrão
defaulthooks.update_webhook=Atualizar Webhook Padrão
@@ -3139,39 +3064,17 @@ config.offline_mode=Modo local
config.disable_router_log=Desabilitar log do roteador
config.run_user=Executar como este usuário
config.run_mode=Modo de execução
-config.git_version=Versão do Git
config.repo_root_path=Localização raiz do repositório
config.lfs_root_path=Localização raiz de LFS
config.log_file_root_path=Localização do log
config.script_type=Tipo de script
config.reverse_auth_user=Usuário de autenticação do proxy reverso
-config.ssh_config=Configuração de SSH
-config.ssh_enabled=Habilitado
-config.ssh_start_builtin_server=Usar o servidor embutido
-config.ssh_domain=Domínio do servidor SSH
-config.ssh_port=Porta
-config.ssh_listen_port=Porta de escuta
-config.ssh_root_path=Caminho raiz
-config.ssh_key_test_path=Localização de teste para chave
-config.ssh_keygen_path=Localização do gerador de chaves ("ssh-keygen")
-config.ssh_minimum_key_size_check=Verificar tamanho mínimo da chave
-config.ssh_minimum_key_sizes=Tamanhos mínimos da chave
-
config.lfs_config=Configuração de LFS
config.lfs_enabled=Habilitado
config.lfs_content_path=Localização do conteúdo LFS
config.lfs_http_auth_expiry=Tempo de expiração da autenticação HTTP de LFS
-config.db_config=Configuração do banco de dados
-config.db_type=Tipo
-config.db_host=Servidor
-config.db_name=Nome
-config.db_user=Nome de usuário
-config.db_schema=Esquema
-config.db_ssl_mode=SSL
-config.db_path=Caminho
-
config.service_config=Configuração do serviço
config.register_email_confirm=Exigir confirmação de e-mail para se cadastrar
config.disable_register=Desabilitar autocadastro
@@ -3200,19 +3103,6 @@ config.queue_length=Tamanho da fila
config.deliver_timeout=Tempo limite de entrega
config.skip_tls_verify=Ignorar verificação de TLS
-config.mailer_config=Configuração de envio de e-mails
-config.mailer_enabled=Habilitado
-config.mailer_enable_helo=Ativar HELO
-config.mailer_name=Nome
-config.mailer_protocol=Protocolo
-config.mailer_smtp_addr=Host SMTP
-config.mailer_smtp_port=Porta SMTP
-config.mailer_user=Usuário
-config.mailer_use_sendmail=Usar o Sendmail
-config.mailer_sendmail_path=Localização do Sendmail
-config.mailer_sendmail_args=Argumentos extras para o Sendmail
-config.mailer_sendmail_timeout=Tempo limite do Sendmail
-config.mailer_use_dummy=Dummy
config.test_email_placeholder=E-mail (por exemplo, teste@exemplo.com.br)
config.send_test_mail=Enviar e-mail de teste
config.send_test_mail_submit=Enviar
@@ -3242,18 +3132,6 @@ config.picture_service=Serviço de imagens
config.disable_gravatar=Desabilitar o gravatar
config.enable_federated_avatar=Habilitar avatares federados
-config.git_config=Configuração do Git
-config.git_disable_diff_highlight=Desabilitar realce de sintaxe em diffs
-config.git_max_diff_lines=Máximo de linhas por arquivo em diffs
-config.git_max_diff_line_characters=Máximo de caracteres por linha em diffs
-config.git_max_diff_files=Máximo de arquivos de diff exibidos
-config.git_gc_args=Argumentos do GC
-config.git_migrate_timeout=Tempo limite de migração
-config.git_mirror_timeout=Tempo limite para atualização de espelhos
-config.git_clone_timeout=Tempo limite para operações de clonagem
-config.git_pull_timeout=Tempo limite para operações de pull
-config.git_gc_timeout=Tempo limite para operação de GC
-
config.log_config=Configuração de log
config.logger_name_fmt=Logger: %s
config.disabled_logger=Desabilitado
@@ -3300,13 +3178,9 @@ notices.op=Op.
notices.delete_success=Os avisos do sistema foram excluídos.
identity_access = Identidade e acesso
settings = Configurações de administrador
-users.bot = Robô
-dashboard.start_schedule_tasks = Iniciar tarefas de Actions programadas
-users.reserved = Reservado
emails.change_email_text = Tem certeza de que deseja atualizar este endereço de e-mail?
self_check = Autoverificação
auths.tip.gitea = Registre um novo aplicativo OAuth2. A documentação pode ser encontrada em %s/
-dashboard.sync_tag.started = Sincronização de tags iniciada
self_check.no_problem_found = Por enquanto não há algum problema.
config_settings = Configurações
config_summary = Resumo
@@ -3314,30 +3188,23 @@ auths.tips.gmail_settings = Configurações do Gmail:
auths.tip.gitlab_new = Registre um novo aplicativo em %s
config.app_slogan = Slogan do servidor
auths.default_domain_name = Domínio padrão usado para o endereço de e-mail
-dashboard.sync_repo_tags = Sincronizar etiquetas do Git para o banco de dados
config.app_data_path = Caminho dos dados do aplicativo
-dashboard.task.cancelled = Tarefa: %[1]s cancelada: %[3]s
-dashboard.sync_branch.started = Sincronização de ramos iniciada
-dashboard.sync_repo_branches = Sincronizar ramos perdidos do Git para o banco de dados
packages.cleanup.success = Os dados expirados foram limpos com sucesso
systemhooks.desc = Os webhooks fazem automaticamente solicitações HTTP POST para um servidor quando certos eventos Forgejo são acionados. Os webhooks definidos aqui atuarão em todos os repositórios do sistema, então, considere quaisquer implicações de desempenho que isso possa ter. Leia mais no guia de webhooks.
defaulthooks.desc = Os webhooks fazem automaticamente solicitações HTTP POST para um servidor quando certos eventos Forgejo são acionados. Os webhooks definidos aqui são padrões e serão copiados para todos os novos repositórios. Leia mais no guia de webhooks.
self_check.database_fix_mysql = Para usuários do MySQL/MariaDB, você pode usar o comando "forgejo doctor convert" para corrigir os problemas de ordenamento, ou também pode corrigir o problema usando "ALTER ... COLLATE ..." SQLs manualmente.
config.cache_test_succeeded = Teste de cache bem-sucedido, obteve uma resposta em %s.
self_check.database_inconsistent_collation_columns = O banco de dados está usando o ordenamento %s, mas essas colunas estão usando ordenamentos incompatíveis. Isso pode causar alguns problemas inesperados.
-dashboard.rebuild_issue_indexer = Reconstruir indexador de problemas
assets = Ativos de código
config.open_with_editor_app_help = Os editores "Abrir com" para o menu clone. Se deixado em branco, o padrão será usado. Expanda para ver o padrão.
config.cache_test_slow = Teste de cache bem-sucedido, mas a resposta é lenta: %s.
config.cache_test = Cache de Teste
config.cache_test_failed = Falha ao sondar o cache: %v.
self_check.database_collation_mismatch = Esperar que o banco de dados use o ordenamento: %s
-dashboard.cleanup_actions = Limpar logs expirados e artefatos de Actions
emails.delete = Excluir endereço de email
emails.delete_primary_email_error = Você não pode excluir o email principal.
emails.deletion_success = O endereço de email foi excluído.
emails.delete_desc = Tem certeza de que deseja excluir este endereço de e-mail?
-dashboard.cron.cancelled = Cron: %[1]s cancelado: %[3]s
users.activated.description = Conclusão da verificação de e-mail. O proprietário de uma conta não ativada não poderá efetuar login até que a verificação de e-mail seja concluída.
users.block.description = Bloquear este usuário de interagir com este serviço através de sua conta e proibir o login.
users.admin.description = Conceda a este usuário acesso total a todos os recursos administrativos disponíveis por meio da interface do usuário da Web e da API.
@@ -3374,7 +3241,7 @@ mirror_sync_create=sincronizou a nova referência %[3]s para
mirror_sync_delete=referência excluída e sincronizada %[2]s em %[3]s do espelhamento
approve_pull_request=`aprovou %[3]s#%[2]s`
reject_pull_request=`sugeriu modificações para %[3]s#%[2]s`
-publish_release=`lançou o release "%[4]s" em %[3]s`
+publish_release=`lançou %[4]s em %[3]s`
review_dismissed=`descartou a revisão de %[4]s para %[3]s#%[2]s`
review_dismissed_reason=Motivo:
create_branch=criou o branch %[3]s em %[4]s
@@ -3511,8 +3378,8 @@ issues.read = Leitura: Visualizar e criar issues e comentários.
code.write = Escrita: Fazer push para o repositório, criar branches e tags.
issues.write = Escrita: Encerrar issues e gerir metadados como rótulos, marcos, responsáveis, prazos e dependências.
pulls.read = Leitura: Ler e criar propostas de revisão.
-releases.read = Leitura: Visualizar e baixar releases.
-releases.write = Escrita: Publicar editar e apagar releases e seus recursos.
+releases.read = Leitura: Visualizar e baixar lançamentos.
+releases.write = Escrita: Publicar editar e apagar lançamentos e seus recursos.
wiki.read = Leitura: Ler a wiki integrada e o histórico dela.
wiki.write = Escrita: Criar, alterar e apagar páginas na wiki integrada.
projects.read = Ler: Acesse os painéis de projetos do repositório.
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index cede616bce..c7553cdce8 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -2882,78 +2882,14 @@ last_page=Última
total=total: %d
settings=Configurações de administração
-dashboard.new_version_hint=O Forgejo %s está disponível, você está a correr a versão %s. Verifique o blog para mais detalhes.
-dashboard.statistic=Resumo
-dashboard.operations=Operações de manutenção
-dashboard.system_status=Estado do sistema
-dashboard.operation_name=Nome da operação
-dashboard.operation_switch=Comutar
-dashboard.operation_run=Executar
dashboard.clean_unbind_oauth=Limpar conexões OAuth não vinculadas
dashboard.clean_unbind_oauth_success=Todas as conexões OAuth não vinculadas foram eliminadas.
-dashboard.task.started=Tarefa iniciada: %[1]s
-dashboard.task.process=Tarefa: %[1]s
-dashboard.task.cancelled=Tarefa: %[1]s cancelada: %[3]s
-dashboard.task.error=Erro na tarefa: %[1]s: %[3]s
-dashboard.task.finished=Tarefa: %[1]s iniciada por %[2]s foi concluída
-dashboard.task.unknown=Tarefa desconhecida: %[1]s
-dashboard.cron.started=Cron iniciado: %[1]s
-dashboard.cron.process=Cron: %[1]s
-dashboard.cron.cancelled=Cron: %[1]s cancelado: %[3]s
-dashboard.cron.error=Erro no cron: %s: %[3]s
-dashboard.cron.finished=Cron: %[1]s concluído
dashboard.delete_inactive_accounts=Eliminar todas as contas que não tenham sido habilitadas
-dashboard.delete_inactive_accounts.started=Foi iniciada a eliminação de todas as contas que não foram habilitadas.
dashboard.delete_repo_archives=Eliminar todos os arquivos dos repositórios (ZIP, TAR.GZ, etc)
-dashboard.delete_repo_archives.started=Foi iniciada a tarefa de eliminação de todos os repositórios arquivados.
dashboard.delete_missing_repos=Eliminar todos os repositórios que não tenham os seus ficheiros Git
-dashboard.delete_missing_repos.started=Foi iniciada a tarefa de eliminação de todos os repositórios que não têm ficheiros git.
-dashboard.delete_generated_repository_avatars=Eliminar avatares gerados do repositório
-dashboard.sync_repo_branches=Sincronizar ramos perdidos de dados do Git para a base de dados
-dashboard.sync_repo_tags=Sincronizar etiquetas dos dados do Git para a base de dados
-dashboard.update_mirrors=Sincronizar réplicas
-dashboard.repo_health_check=Verificar a saúde de todos os repositórios
-dashboard.check_repo_stats=Verificar as estatísticas de todos os repositórios
-dashboard.archive_cleanup=Eliminar arquivos de repositórios antigos
-dashboard.deleted_branches_cleanup=Limpar ramos eliminados
-dashboard.update_migration_poster_id=Sincronizar os IDs do remetente da migração
-dashboard.git_gc_repos=Fazer a recolha do lixo em todos os repositórios
-dashboard.resync_all_sshkeys=Sincronizar o ficheiro ".ssh/authorized_keys" com as chaves SSH do Forgejo.
-dashboard.resync_all_sshprincipals=Modificar o ficheiro ".ssh/authorized_principals" com os protagonistas SSH do Forgejo.
-dashboard.resync_all_hooks=Voltar a sincronizar automatismos Git de todos os repositórios (pre-receive, update, post-receive, proc-receive, …)
-dashboard.reinit_missing_repos=Reinicializar todos os repositórios Git em falta para os quais existam registos
-dashboard.sync_external_users=Sincronizar dados externos do utilizador
-dashboard.cleanup_hook_task_table=Limpar tabela hook_task
-dashboard.cleanup_packages=Limpar pacotes expirados
-dashboard.cleanup_actions=Limpar registos e artefactos expirados das operações
dashboard.delete_old_actions=Eliminar todos os trabalhos antigos da base de dados
-dashboard.delete_old_actions.started=Foi iniciado o processo de eliminação de todos os trabalhos antigos da base de dados.
-dashboard.update_checker=Verificador de novas versões
-dashboard.delete_old_system_notices=Eliminar todas as notificações do sistema antigas da base de dados
-dashboard.gc_lfs=Recolher lixo dos meta-elementos LFS
-dashboard.stop_zombie_tasks=Parar tarefas de operações zombies
-dashboard.stop_endless_tasks=Parar tarefas de operações intermináveis
-dashboard.cancel_abandoned_jobs=Cancelar trabalhos de operações abandonados
-dashboard.start_schedule_tasks=Iniciar tarefas de operações de agendamento
-dashboard.sync_branch.started=Sincronização de ramos iniciada
-dashboard.sync_tag.started=Sincronização de etiquetas iniciada
-dashboard.rebuild_issue_indexer=Reconstruir indexador de questões
-
users.user_manage_panel=Gerir contas de utilizador
users.new_account=Criar conta de utilizador
-users.name=Nome de utilizador
-users.full_name=Nome completo
-users.activated=Em uso
-users.admin=Admin.
-users.restricted=Restrita
-users.reserved=Reservado
-users.bot=Bot
-users.remote=Remoto
-users.2fa=Autenticação em dois passos
-users.repos=Repos.
-users.created=Criada
-users.last_login=Último acesso
-users.never_login=Nunca acedeu
users.send_register_notify=Notificar sobre o registo via email
users.new_success=A conta de utilizador "%s" foi criada.
users.edit=Editar
@@ -2999,35 +2935,13 @@ emails.change_email_header=Modificar propriedades do email
emails.change_email_text=Tem a certeza que quer modificar este endereço de email?
orgs.org_manage_panel=Gerir organizações
-orgs.name=Nome
-orgs.teams=Equipas
-orgs.members=Membros
-orgs.new_orga=Nova organização
-
repos.repo_manage_panel=Gerir repositórios
repos.unadopted=Repositórios não adotados
repos.unadopted.no_more=Não foram encontrados repositórios não adotados.
-repos.owner=Proprietário(a)
-repos.name=Nome
repos.private=Privado
-repos.issues=Questões
-repos.size=Tamanho
-repos.lfs_size=Tamanho do LFS
-
packages.package_manage_panel=Gerir pacotes
-packages.total_size=Tamanho total: %s
-packages.unreferenced_size=Tamanho não referenciado: %s
packages.cleanup=Limpar dados expirados
packages.cleanup.success=Limpou os dados expirados com sucesso
-packages.owner=Proprietário
-packages.creator=Criador
-packages.name=Nome
-packages.version=Versão
-packages.type=Tipo
-packages.repository=Repositório
-packages.size=Tamanho
-packages.published=Publicado
-
defaulthooks=Automatismos web predefinidos
defaulthooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Forgejo. Os automatismos web definidos aqui são os predefinidos e serão copiados para todos os novos repositórios. Leia mais no guia de automatismos web.
defaulthooks.add_webhook=Adicionar automatismo web predefinido
@@ -3156,7 +3070,6 @@ config.offline_mode=Modo local
config.disable_router_log=Desabilitar registos do encaminhador (router)
config.run_user=Executa com este nome de utilizador
config.run_mode=Modo de execução
-config.git_version=Versão do Git
config.app_data_path=Localização dos dados da aplicação
config.repo_root_path=Localização dos repositórios
config.lfs_root_path=Localização dos LFS
@@ -3164,32 +3077,11 @@ config.log_file_root_path=Localização dos registos
config.script_type=Tipo de script
config.reverse_auth_user=Utilizador de autenticação do reverse proxy
-config.ssh_config=Configuração SSH
-config.ssh_enabled=Habilitado
-config.ssh_start_builtin_server=Usar servidor integrado
-config.ssh_domain=Domínio do servidor SSH
-config.ssh_port=Porto
-config.ssh_listen_port=Porto de escuta
-config.ssh_root_path=Localização base
-config.ssh_key_test_path=Localização do teste das chaves
-config.ssh_keygen_path=Localização do gerador de chaves ("ssh-keygen")
-config.ssh_minimum_key_size_check=Verificação de tamanho mínimo da chave
-config.ssh_minimum_key_sizes=Tamanhos mínimos da chave
-
config.lfs_config=Configuração do LFS
config.lfs_enabled=Habilitado
config.lfs_content_path=Localização do conteúdo LFS
config.lfs_http_auth_expiry=Prazo da autenticação LFS HTTP
-config.db_config=Configuração da base de dados
-config.db_type=Tipo
-config.db_host=Servidor
-config.db_name=Nome
-config.db_user=Nome de utilizador
-config.db_schema=Esquema
-config.db_ssl_mode=SSL
-config.db_path=Localização
-
config.service_config=Configuração do serviço
config.register_email_confirm=Exigir confirmação de email para se inscrever
config.disable_register=Desabilitar a auto-inscrição
@@ -3217,19 +3109,6 @@ config.queue_length=Comprimento da fila
config.deliver_timeout=Prazo da entrega
config.skip_tls_verify=Ignorar validação TLS
-config.mailer_config=Configuração de envio de email
-config.mailer_enabled=Habilitado
-config.mailer_enable_helo=Habilitar HELO
-config.mailer_name=Nome
-config.mailer_protocol=Protocolo
-config.mailer_smtp_addr=Anfitrião SMTP
-config.mailer_smtp_port=Porto do SMTP
-config.mailer_user=Utilizador
-config.mailer_use_sendmail=Usar o sendmail
-config.mailer_sendmail_path=Localização do sendmail
-config.mailer_sendmail_args=Argumentos extras para o sendmail
-config.mailer_sendmail_timeout=Tempo limite do Sendmail
-config.mailer_use_dummy=Fictício
config.test_email_placeholder=Email (ex.: teste@exemplo.com)
config.send_test_mail=Enviar email de teste
config.send_test_mail_submit=Enviar
@@ -3259,18 +3138,6 @@ config.picture_service=Serviço de imagem
config.disable_gravatar=Desabilitar o Gravatar
config.enable_federated_avatar=Habilitar avatares federados
-config.git_config=Configuração do Git
-config.git_disable_diff_highlight=Desabilitar o realce de sintaxe no diff
-config.git_max_diff_lines=Número máximo de linhas diff por ficheiro
-config.git_max_diff_line_characters=Número máximos de caracteres diff por linha
-config.git_max_diff_files=Número máximo de ficheiros diff a serem apresentados
-config.git_gc_args=Argumentos da recolha de lixo
-config.git_migrate_timeout=Prazo da migração
-config.git_mirror_timeout=Prazo para a sincronização da réplica
-config.git_clone_timeout=Prazo da operação de clonagem
-config.git_pull_timeout=Prazo da operação de puxar
-config.git_gc_timeout=Prazo da operação de recolha de lixo
-
config.log_config=Configuração do registo
config.logger_name_fmt=Registador: %s
config.disabled_logger=Desabilitado
diff --git a/options/locale/locale_ro.ini b/options/locale/locale_ro.ini
index ec266dfd90..b304bb86e6 100644
--- a/options/locale/locale_ro.ini
+++ b/options/locale/locale_ro.ini
@@ -539,4 +539,15 @@ CommitSummary = Rezumatul commit-urilor
CommitMessage = Mesajul commit-ului
CommitChoice = Alegerea commit-ului
TreeName = Locația fișierului
-Content = Conținut
\ No newline at end of file
+Content = Conținut
+PayloadUrl = URL pentru payload
+require_error = ` nu poate fi gol.`
+alpha_dash_error = ` trebuie să conțină doar caractere alfanumerice, dash ("-") și underscore ("_").`
+alpha_dash_dot_error = ` trebuie să conțină doar caractere alfanumerice, dash ("-"), underscore ("_") și punct (".").`
+unknown_error = Eroare necunoscută:
+captcha_incorrect = Codul CAPTCHA este incorect.
+password_not_match = Parolele nu se potrivesc.
+lang_select_error = Selectează o limbă din listă.
+username_been_taken = Numele de utilizator este deja luat.
+username_change_not_local_user = Nu este permis ca utilizatorii non-locali să își schimbe numele de utilizator.
+repo_name_been_taken = Numele de repository este deja luat.
\ No newline at end of file
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 43e21a0c18..a349d5c744 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -2882,71 +2882,14 @@ first_page=Первая
last_page=Последняя
total=Всего: %d
-dashboard.new_version_hint=Доступна новая версия Forgejo %s, вы используете %s. Более подробную информацию читайте в блоге.
-dashboard.statistic=Статистика
-dashboard.operations=Обслуживание
-dashboard.system_status=Состояние системы
-dashboard.operation_name=Имя операции
-dashboard.operation_switch=Переключить
-dashboard.operation_run=Запуск
dashboard.clean_unbind_oauth=Очистить список незавершённых авторизаций OAuth
dashboard.clean_unbind_oauth_success=Все незавершённые связи OAuth были удалены.
-dashboard.task.started=Началось задание: %[1]s
-dashboard.task.process=Задание: %[1]s
-dashboard.task.cancelled=Задание %[1]s отменено: %[3]s
-dashboard.task.error=Ошибка в задании: %[1]s: %[3]s
-dashboard.task.finished=Задание %[1]s, начатое %[2]s, завершено
-dashboard.task.unknown=Неизвестное задание: %[1]s
-dashboard.cron.started=Планировщик запущен: %[1]s
-dashboard.cron.process=Планировщик: %[1]s
-dashboard.cron.cancelled=Планировщик: %[1]s отменено: %[3]s
-dashboard.cron.error=Ошибка в запланированном задании: %s: %[3]s
-dashboard.cron.finished=Планировщик: %[1]s завершено
dashboard.delete_inactive_accounts=Удалить все неактивированные учётные записи
-dashboard.delete_inactive_accounts.started=Удаление всех неактивированных учётных записей началось.
dashboard.delete_repo_archives=Удалить все архивы репозиториев (ZIP, TAR.GZ и др...)
-dashboard.delete_repo_archives.started=Удаление всех архивов репозитория началось.
dashboard.delete_missing_repos=Удалить все записи о репозиториях с отсутствующими файлами Git
-dashboard.delete_missing_repos.started=Начато удаление всех репозиториев без Git-файлов.
-dashboard.delete_generated_repository_avatars=Удалить сгенерированные картинки репозиториев
-dashboard.update_mirrors=Обновить зеркала
-dashboard.repo_health_check=Проверка состояния всех репозиториев
-dashboard.check_repo_stats=Проверить всю статистику репозитория
-dashboard.archive_cleanup=Удалить старые архивы репозитория
-dashboard.deleted_branches_cleanup=Очистка удалённых ветвей
-dashboard.update_migration_poster_id=Обновить ИД плакатов миграции
-dashboard.git_gc_repos=Выполнить сборку мусора для всех репозиториев
-dashboard.resync_all_sshkeys=Обновить SSH-ключи Forgejo в файле «.ssh/authorized_keys».
-dashboard.resync_all_sshprincipals=Обновить учётные данные SSH Forgejo в файле «.ssh/authorized_principals».
-dashboard.resync_all_hooks=Синхронизировать Git-хуки во всех репозиториях (pre-receive, update, post-receive, …)
-dashboard.reinit_missing_repos=Переинициализировать все отсутствующие Git репозитории, для которых существуют записи
-dashboard.sync_external_users=Синхронизировать данные сторонних пользователей
-dashboard.cleanup_hook_task_table=Очистить таблицу hook_task
-dashboard.cleanup_packages=Удалить устаревшие пакеты
dashboard.delete_old_actions=Удалить все старые активности из базы данных
-dashboard.delete_old_actions.started=Запущено удаление всех старых активностей из БД.
-dashboard.update_checker=Проверка обновлений
-dashboard.delete_old_system_notices=Удалить все старые системные уведомления из базы данных
-dashboard.gc_lfs=Выполнить сборку мусора метаобъектов LFS
-dashboard.stop_zombie_tasks=Остановить зомби-задания Действий
-dashboard.stop_endless_tasks=Остановить непрекращающиеся задания Действий
-dashboard.cancel_abandoned_jobs=Отменить брошенные задания Действий
-dashboard.start_schedule_tasks=Запустить запланированные задания Действий
-
users.user_manage_panel=Управление пользователями
users.new_account=Создать новую уч. запись
-users.name=Имя пользователя
-users.full_name=Полное имя
-users.activated=Активирован
-users.admin=Администратор
-users.restricted=Ограничен
-users.reserved=Резерв
-users.bot=Бот
-users.2fa=2ФА
-users.repos=Репозитории
-users.created=Регистрация
-users.last_login=Последний вход
-users.never_login=Никогда не входил
users.send_register_notify=Уведомить о регистрации по эл. почте
users.new_success=Учётная запись «%s» создана.
users.edit=Редактировать
@@ -2992,38 +2935,16 @@ emails.change_email_header=Обновить свойства эл. почты
emails.change_email_text=Вы уверены, что хотите обновить этот адрес эл. почты?
orgs.org_manage_panel=Управление организациями
-orgs.name=Название
-orgs.teams=Команды
-orgs.members=Участники
-orgs.new_orga=Создать организацию
-
repos.repo_manage_panel=Управление репозиториями
repos.unadopted=Непринятые репозитории
repos.unadopted.no_more=Непринятые репозитории не найдены.
-repos.owner=Владелец
-repos.name=Название
repos.private=Частный
-repos.issues=Задачи
-repos.size=Размер
-repos.lfs_size=Размер LFS
-
packages.package_manage_panel=Управление пакетами
-packages.total_size=Общий размер: %s
-packages.unreferenced_size=Неуказанный размер: %s
packages.cleanup=Очистить устаревшие данные
packages.cleanup.success=Очистка устаревших данных успешно завершена
-packages.owner=Владелец
-packages.creator=Автор
-packages.name=Наименование
-packages.version=Версия
-packages.type=Тип
-packages.repository=Репозиторий
-packages.size=Размер
-packages.published=Опубликовано
-
defaulthooks=Стандартные веб-хуки
defaulthooks.add_webhook=Добавить стандартный Веб-хук
-defaulthooks.update_webhook=Обновить стандартный Веб-хук
+defaulthooks.update_webhook=Обновить стандартный веб-хук
systemhooks=Системные веб-хуки
systemhooks.add_webhook=Добавить системный веб-хук
@@ -3145,7 +3066,6 @@ config.offline_mode=Локальный режим
config.disable_router_log=Отключение журнала маршрутизатора
config.run_user=Работа под пользователем
config.run_mode=Режим работы
-config.git_version=Версия git
config.app_data_path=Путь к данным приложения
config.repo_root_path=Путь до каталога репозиториев
config.lfs_root_path=Корневой путь LFS
@@ -3153,32 +3073,11 @@ config.log_file_root_path=Путь журналов
config.script_type=Тип сценария
config.reverse_auth_user=Пользователь для авторизации на обратном прокси
-config.ssh_config=Конфигурация SSH
-config.ssh_enabled=SSH включён
-config.ssh_start_builtin_server=Использовать встроенный сервер
-config.ssh_domain=Домен SSH сервера
-config.ssh_port=Порт
-config.ssh_listen_port=Прослушиваемый порт
-config.ssh_root_path=Корневой путь
-config.ssh_key_test_path=Путь к тестовому ключу
-config.ssh_keygen_path=Путь до генератора ключей («ssh-keygen»)
-config.ssh_minimum_key_size_check=Проверка минимального размер ключа
-config.ssh_minimum_key_sizes=Минимальные размеры ключей
-
config.lfs_config=Конфигурация LFS
config.lfs_enabled=Включено
config.lfs_content_path=Путь к содержимому LFS
config.lfs_http_auth_expiry=Срок действия HTTP-аутентификации LFS
-config.db_config=Конфигурация базы данных
-config.db_type=Тип
-config.db_host=Сервер
-config.db_name=Имя
-config.db_user=Пользователь
-config.db_schema=Схема
-config.db_ssl_mode=SSL
-config.db_path=Путь
-
config.service_config=Конфигурация служб
config.register_email_confirm=Требовать подтверждение по эл. почте для регистрации
config.disable_register=Саморегистрация отключена
@@ -3207,19 +3106,6 @@ config.queue_length=Длина очереди
config.deliver_timeout=Задержка доставки
config.skip_tls_verify=Пропуск проверки TLS
-config.mailer_config=Конфигурация почтового сервера
-config.mailer_enabled=Почта включена
-config.mailer_enable_helo=Включить HELO
-config.mailer_name=Имя
-config.mailer_protocol=Протокол
-config.mailer_smtp_addr=Адрес SMTP
-config.mailer_smtp_port=Порт SMTP
-config.mailer_user=Пользователь
-config.mailer_use_sendmail=Использовать Sendmail
-config.mailer_sendmail_path=Путь Sendmail
-config.mailer_sendmail_args=Дополнительные аргументы для Sendmail
-config.mailer_sendmail_timeout=Истечение ожидания Sendmail
-config.mailer_use_dummy=Заглушка
config.test_email_placeholder=Эл. почта (например, test@example.com)
config.send_test_mail=Отправить тестовое письмо
config.send_test_mail_submit=Отправить
@@ -3249,18 +3135,6 @@ config.picture_service=Служба изображений
config.disable_gravatar=Отключить Gravatar
config.enable_federated_avatar=Федерированные изображения профилей
-config.git_config=Конфигурация Git
-config.git_disable_diff_highlight=Отключить подсветку синтаксиса при сравнении
-config.git_max_diff_lines=Макс. количество строк в файле при сравнении
-config.git_max_diff_line_characters=Макс. количество символов в строке при сравнении
-config.git_max_diff_files=Макс. отображаемое количество файлов при сравнении
-config.git_gc_args=Аргументы сборщика мусора
-config.git_migrate_timeout=Ограничение времени переносов
-config.git_mirror_timeout=Ограничение времени на синхронизацию зеркала
-config.git_clone_timeout=Ограничение времени операций клонирования
-config.git_pull_timeout=Ограничение времени на получение изменений
-config.git_gc_timeout=Ограничение времени на сборку мусора
-
config.log_config=Конфигурация журнала
config.logger_name_fmt=Журнал: %s
config.disabled_logger=Отключен
@@ -3305,25 +3179,18 @@ notices.type_2=Задание
notices.desc=Описание
notices.op=Oп.
notices.delete_success=Уведомления системы были удалены.
-self_check.no_problem_found = Пока проблем не обнаружено.
+self_check.no_problem_found = Пока проблем не выявлено.
auths.tip.gitea = Зарегистрируйте новое приложение OAuth2. Доступна инструкция: %s
auths.tips.oauth2.general.tip = При регистрации нового приложения OAuth2 ссылка обратного перенаправления должна быть:
self_check.database_fix_mysql = Пользователи MySQL и MariaDB могут исправить проблемы с сопоставлением командой "forgejo doctor convert". Также можно вручную вписать "ALTER ... COLLATE ..." в SQL.
-dashboard.cleanup_actions = Удалить устаревшие журналы и артефакты Действий
-dashboard.sync_repo_branches = Синхронизировать ветви из Git в базу данных
assets = Кодовые объекты
-dashboard.sync_tag.started = Начата синхронизация тегов
settings = Админ. настройки
self_check.database_collation_case_insensitive = БД использует нечувствительное сопоставление %s. Хоть Forgejo и будет работать, могут возникать случаи с неожиданным поведением.
self_check.database_inconsistent_collation_columns = БД использует сопоставление %s, но эти столбцы используют перемешанные сопоставления. Это может вызывать неожиданные проблемы.
-dashboard.sync_branch.started = Начата синхронизация ветвей
-dashboard.sync_repo_tags = Синхронизировать теги Git-репозиториев в базу данных
self_check.database_collation_mismatch = Ожидается, что БД использует сопоставление: %s
self_check = Самопроверка
-dashboard.rebuild_issue_indexer = Пересобрать индексатор задач
systemhooks.desc = Веб-хуки автоматически совершают POST запросы до указанного HTTP сервера, когда в Forgejo происходят определённые события. Заданные здесь веб-хуки будут срабатывать во всех репозиториях на этом сервере и могут привести к проблемам с производительностью. Подробнее о веб-хуках.
defaulthooks.desc = Веб-хуки автоматически совершают POST запросы до указанного HTTP сервера, когда в Forgejo происходят определённые события. Заданные здесь веб-хуки используются по умолчанию и будут добавлены во все новые репозитории. Подробнее о веб-хуках.
-users.remote = Дистанц
config_summary = Сводка
config.open_with_editor_app_help = Приложения для "Открыть в" в меню. Оставьте пустым для приложений по умолчанию. Разверните для просмотра.
config_settings = Настройки
diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini
index bc07de0e6f..6372ba11c2 100644
--- a/options/locale/locale_si-LK.ini
+++ b/options/locale/locale_si-LK.ini
@@ -1917,57 +1917,14 @@ first_page=පළමු
last_page=පසුගිය
total=මුළු: %d
-dashboard.statistic=සාරාංශය
-dashboard.operations=නඩත්තු මෙහෙයුම්
-dashboard.system_status=පද්ධතියේ තත්වය
-dashboard.operation_name=මෙහෙයුමේ නම
-dashboard.operation_switch=මාරුවන්න
-dashboard.operation_run=ධාවනය
dashboard.clean_unbind_oauth=පිරිසිදු නොබැඳි OAUTH සම්බන්ධතා
dashboard.clean_unbind_oauth_success=සියලුම නොබැඳි OAUTH සම්බන්ධතා මකා දමා ඇත.
-dashboard.task.started=ආරම්භ කාර්යය:%[1]s
-dashboard.task.process=කාර්යය:%[1]s
-dashboard.task.error=කාර්යයයේ දෝෂය:%[1]s:%[3]s
-dashboard.task.finished=කාර්යය:%[1]s[2]s විසින් ආරම්භ කර ඇත
-dashboard.task.unknown=නොදන්නා කාර්යය:%[1]s
-dashboard.cron.started=ආරම්භ Con:%[1]s
-dashboard.cron.process=ක්රෝන්:%[1]s
-dashboard.cron.error=ක්රෝන් හි දෝෂය: %s:%[3]s
-dashboard.cron.finished=ක්රෝන්:%[1]s අවසන් වී ඇත
dashboard.delete_inactive_accounts=සියලුම අක්රීය ගිණුම් මකන්න
-dashboard.delete_inactive_accounts.started=සියලුම අක්රීය ගිණුම් කාර්යය ආරම්භ කර මකා දමන්න.
dashboard.delete_repo_archives=සියලුම ගබඩාවන් 'ලේඛනාගාරය මකන්න (ZIP, TAR.GZ, ආදිය..)
-dashboard.delete_repo_archives.started=සියලුම ගබඩාවල් ලේඛනාගාර කාර්යය ආරම්භ කිරීම මකන්න.
dashboard.delete_missing_repos=ඔවුන්ගේ Git ගොනු අතුරුදහන් වූ සියලුම ගබඩාවන් මකන්න
-dashboard.delete_missing_repos.started=සියළුම ගබඩාවන් මකා දමන්න Git ගොනු කාර්යය ආරම්භ විය.
-dashboard.delete_generated_repository_avatars=ජනනය කරන ලද නිධි අවතාරය මකන්න
-dashboard.update_mirrors=දර්පණ යාවත්කාලීන කරන්න
-dashboard.repo_health_check=සෞඛ්ය සියලු ගබඩාවලදී පරීක්ෂා
-dashboard.check_repo_stats=සියළුම කෝෂ්ඨවල සංඛ්යාලේඛන පරීක්ෂා කරන්න
-dashboard.archive_cleanup=පැරණි නිධි ලේඛනාගාරය මකන්න
-dashboard.deleted_branches_cleanup=මකාදැමූ ශාඛා පිරිසිදු කිරීම
-dashboard.update_migration_poster_id=සංක්රමණ පෝස්ටර් යාවත්කාලීන කිරීම
-dashboard.git_gc_repos=කසළ සියලු ගබඩාවල් එකතු කරයි
-dashboard.resync_all_sshkeys=Forgejo SSH යතුරු සමඟ '.ssh/authorized_keys' ගොනුව යාවත්කාලීන කරන්න.
-dashboard.resync_all_sshprincipals=Forgejo SSH විදුහල්පතිවරුන් සමඟ '.ssh/authorized_විදුහල්පති' ගොනුව යාවත්කාලීන කරන්න.
-dashboard.resync_all_hooks=පෙර ලැබීමට, යාවත්කාලීන කිරීමට සහ සියලු ගබඩාවන් නැවත ලබා ගැනීමට කොකු නැවත සකස් කරන්න.
-dashboard.reinit_missing_repos=අතුරුදහන් වූ සියලුම ගිට් නිධි නැවත ආරම්භ කිරීම
-dashboard.sync_external_users=බාහිර පරිශීලක දත්ත සමමුහූර්තනය
-dashboard.cleanup_hook_task_table=පිරිසිදු hook_task වගුව
dashboard.delete_old_actions=සියලු පැරණි ක්රියා දත්ත සමුදායෙන් මකන්න
-dashboard.delete_old_actions.started=දත්ත සමුදාය ආරම්භ සිට සියලු පැරණි ක්රියා මකන්න.
-
users.user_manage_panel=පරිශීලක ගිණුම් කළමනාකරණය
users.new_account=පරිශීලක ගිණුමක් සාදන්න
-users.name=පරිශීලක නාමය
-users.full_name=සම්පූර්ණ නම
-users.activated=සක්රිය
-users.admin=පරිපාලක
-users.restricted=සීමා
-users.repos=කෝෂ්ඨය
-users.created=සෑදීම
-users.last_login=අවසන් සංඥා දී
-users.never_login=කවදාවත් සිග්නෙඩ්-දී
users.send_register_notify=පරිශීලක ලියාපදිංචි දැනුම්දීම යවන්න
users.edit=සංස්කරණය
users.auth_source=සත්යාපන මූලාශ්රය
@@ -2005,26 +1962,10 @@ emails.duplicate_active=මෙම විද්යුත් තැපැල්
emails.change_email_header=විද්යුත් ගුණාංග යාවත්කාලීන කරන්න
orgs.org_manage_panel=සංවිධාන කළමනාකරණය
-orgs.name=නම
-orgs.teams=කණ්ඩායම්
-orgs.members=සාමාජිකයින්
-orgs.new_orga=නව සංවිධානය
-
repos.repo_manage_panel=කෝෂ්ඨ කළමනාකරණය
repos.unadopted=සම්මත නොකළ ගබඩාවලදී
repos.unadopted.no_more=තවත් සම්මත නොකළ ගබඩාවක් සොයාගත නොහැකි විය
-repos.owner=හිමිකරු
-repos.name=නම
repos.private=පෞද්ගලික
-repos.issues=ගැටළු
-repos.size=ප්රමාණය
-
-packages.owner=හිමිකරු
-packages.name=නම
-packages.type=වර්ගය
-packages.repository=කෝෂ්ඨය
-packages.size=ප්රමාණය
-
defaulthooks=පෙරනිමි වෙබ් කොකු
defaulthooks.add_webhook=පෙරනිමි වෙබ් හූක් එකතු කරන්න
defaulthooks.update_webhook=පෙරනිමි වෙබ් හූක් යාවත්කාලීන කරන්න
@@ -2130,38 +2071,17 @@ config.offline_mode=දේශීය ප්රකාරය
config.disable_router_log=Router ලොග් අක්රීය
config.run_user=පරිශීලක නාමය ලෙස ධාවනය
config.run_mode=ධාවනය ප්රකාරය
-config.git_version=ගිට් අනුවාදය
config.repo_root_path=ගබඩාව මූල මාර්ගය
config.lfs_root_path=LFS මූල මාර්ගය
config.log_file_root_path=ලොග් මාර්ගය
config.script_type=ස්ක්රිප්ට් වර්ගය
config.reverse_auth_user=ප්රතිලෝම පරිශීලක සත්යාපන
-config.ssh_config=SSH වින්යාසය
-config.ssh_enabled=සබල කර ඇත
-config.ssh_start_builtin_server=Built-දී සේවාදායකය භාවිතා
-config.ssh_domain=SSH සේවාදායකය වසම්
-config.ssh_port=වරාය
-config.ssh_listen_port=සවන් වරාය
-config.ssh_root_path=මූල මාර්ගය
-config.ssh_key_test_path=ප්රධාන ටෙස්ට් මාර්ගය
-config.ssh_keygen_path=Keygen ('ssh-keygen') මාර්ගය
-config.ssh_minimum_key_size_check=අවම කී ප්රමාණය පරීක්ෂා
-config.ssh_minimum_key_sizes=අවම යතුරෙහි ප්රමාණ
-
config.lfs_config=LFS වින්යාසය
config.lfs_enabled=සබල කර ඇත
config.lfs_content_path=LFS අන්තර්ගත මාර්ගය
config.lfs_http_auth_expiry=LFS HTTP හෝත් කල් ඉකුත්වන
-config.db_config=දත්ත සමුදායෙහි වින්යාසය
-config.db_type=වර්ගය
-config.db_host=සත්කාරක
-config.db_name=නම
-config.db_user=පරිශීලක නාමය
-config.db_schema=යෝජනා ක්රමය
-config.db_path=මාර්ගය
-
config.service_config=සේවාවේ වින්යාසය
config.register_email_confirm=ලියාපදිංචි වීමට විද්යුත් තැපැල් තහවුරු කිරීම අවශ්ය වේ
config.disable_register=ස්වයං ලියාපදිංචිය අක්රීය කරන්න
@@ -2189,14 +2109,6 @@ config.queue_length=පෝලිම් දිග
config.deliver_timeout=කාලය ගලවාගන්න
config.skip_tls_verify=TLS සත්යාපනය මඟ හරින්න
-config.mailer_enabled=සබල කර ඇත
-config.mailer_name=නම
-config.mailer_smtp_port=ප්රශ්නය විසඳිලා වරාය
-config.mailer_user=පරිශීලක
-config.mailer_use_sendmail=සෙන්ඩ්මේල් භාවිතා කරන්න
-config.mailer_sendmail_path=සෙන්ඩ්මේල් මාර්ගය
-config.mailer_sendmail_args=Sendmail වෙත අමතර තර්ක
-config.mailer_sendmail_timeout=සෙන්ඩ්මේල් වේලාව
config.test_email_placeholder=වි-තැපෑල (උදා. පරීක්ෂාව@උදාහරණය.ලංකා)
config.send_test_mail=අත්හදා බැලීමේ වි-තැපෑල යවන්න
@@ -2223,18 +2135,6 @@ config.picture_service=පින්තුරය සේවා
config.disable_gravatar=ග්රැවටාර් අබල කරන්න
config.enable_federated_avatar=ෆෙඩරල් අවතාර් සක්රීය කරන්න
-config.git_config=ගිට් වින්යාසය
-config.git_disable_diff_highlight=ඩිෆ් සයින්ටැක්ස් ඉස්මතු කරන්න අක්රීය කරන්න
-config.git_max_diff_lines=මැක්ස් ඩිෆ් ලයින්ස් (තනි ගොනුවක් සඳහා)
-config.git_max_diff_line_characters=මැක්ස් ඩිෆ් චරිත (තනි රේඛාවක් සඳහා)
-config.git_max_diff_files=මැක්ස් ඩිෆ් ගොනු (පෙන්වීමට)
-config.git_gc_args=GC තර්ක
-config.git_migrate_timeout=සංක්රමණ කාලය
-config.git_mirror_timeout=මිරර් යාවත්කාලීන වේලාව
-config.git_clone_timeout=පරිගණක ක්රිඩාවට සමාන මෙහෙයුම් කාලය
-config.git_pull_timeout=මෙහෙයුම කාල ඉමුද අදින්න
-config.git_gc_timeout=GC මෙහෙයුම කාලය
-
config.log_config=ලොග් වින්යාසය
config.disabled_logger=අබල කර ඇත
config.access_log_mode=ප්රවේශ ලොග් ප්රකාරය
diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini
index 829d8eaffe..39c85fd2ed 100644
--- a/options/locale/locale_sk-SK.ini
+++ b/options/locale/locale_sk-SK.ini
@@ -1309,16 +1309,7 @@ teams.all_repositories_helper=Tím má prístup ku všetkým repozitárom. Výbe
repositories=Repozitáre
hooks=Webhooky
-dashboard.delete_generated_repository_avatars=Odstrániť vygenerované avatary repozitárov
-
-
-
-
-repos.owner=Vlastník
repos.private=Súkromný
-packages.owner=Vlastník
-packages.repository=Repozitár
-
defaulthooks=Defaultné webhooky
defaulthooks.add_webhook=Pridať defaultný webhook
defaulthooks.update_webhook=Aktualizovať defaultný webhook
@@ -1332,8 +1323,6 @@ auths.oauth2_tokenURL=Token URL
config.app_ver=Verzia Forgejo
config.app_url=Základná URL Forgejo
-config.ssh_enabled=Povolené
-
config.lfs_enabled=Povolené
@@ -1341,9 +1330,6 @@ config.default_keep_email_private=Skrývanie e-mail adries ako predvolené
config.webhook_config=Nastavenie webhooku
-config.mailer_enabled=Povolené
-config.mailer_enable_helo=Povolené HELO
-
config.oauth_enabled=Povolené
diff --git a/options/locale/locale_sl.ini b/options/locale/locale_sl.ini
index ca991b53b4..feb24727a3 100644
--- a/options/locale/locale_sl.ini
+++ b/options/locale/locale_sl.ini
@@ -227,21 +227,10 @@ users.purge_help = Prisilno izbrišite uporabnika in vsa skladišča, organizaci
auths.restricted_filter_helper = Pustite prazno, če ne želite nastaviti nobenega uporabnika kot omejenega. Uporabite zvezdico ("*"), če želite vse uporabnike, ki se ne ujemajo z administratorskim filtrom, nastaviti kot omejene.
auths.tip.twitter = Pojdite na %s, ustvarite aplikacijo in preverite, ali je omogočena možnost "Allow this application to be used to Sign in with Twitter"
auths.tip.yandex = Ustvarite novo aplikacijo na spletnem mestu %s. V razdelku "Yandex.Passport API" izberite naslednja dovoljenja: "Dostop do e-poštnega naslova", "Dostop do avatarja uporabnika" in "Dostop do uporabniškega imena, imena in priimka, spola"
-config.git_migrate_timeout = Časovna omejitev migracije
-config.git_gc_args = Argumenti GC
-config.git_max_diff_files = Prikazane največje razlike v datotekah
notices.system_notice_list = Sistemska obvestila
monitor.cron = Opravila Cron
config.access_log_template = Predloga dnevnika dostopa
config.access_log_mode = Način beleženja dostopa
-config.git_gc_timeout = GC Časovni rok delovanja
-config.git_pull_timeout = Potegnite Časovni rok delovanja
-config.git_clone_timeout = Časovni limit operacije kloniranja
-config.git_mirror_timeout = Časovna omejitev posodobitve zrcala
-config.git_max_diff_lines = Največ razlikovalnih vrstic na datoteko
-config.git_disable_diff_highlight = Onemogočite razlikovanje sintakse
-config.git_config = Konfiguracija Git
-config.git_max_diff_line_characters = Največ različnih znakov na vrstico
notices.view_detail_header = Podrobnosti obvestila
config.log_config = Konfiguracija dnevnika
config.allow_dots_in_usernames = Uporabnikom dovolite uporabo pik v uporabniških imenih. Ne vpliva na obstoječe račune.
diff --git a/options/locale/locale_sr-SP.ini b/options/locale/locale_sr-SP.ini
index 7e2fea2e88..56276a5529 100644
--- a/options/locale/locale_sr-SP.ini
+++ b/options/locale/locale_sr-SP.ini
@@ -546,29 +546,12 @@ first_page=Први
last_page=Последњи
total=Укупно: %d
-dashboard.operation_name=Име операције
-dashboard.operation_switch=Пребаци
-dashboard.operation_run=Покрени
-users.activated=Активиран
-users.admin=Администратор
-users.repos=репоси
-users.created=Креирано
users.edit=Уреди
users.auth_source=Извор аутентикације
users.local=Локално
-orgs.name=Име
-orgs.teams=Тимови
-orgs.members=Чланови
-
-repos.owner=Власник
-repos.name=Име
repos.private=Приватно
-repos.issues=Задаци
-
-
-
auths.name=Име
auths.type=Тип
auths.enabled=Омогућено
@@ -599,23 +582,6 @@ config.repo_root_path=Пут до корена репозиторијума
config.script_type=Врста скрипта
config.reverse_auth_user=Корисничко име за обрнуту аутентикацију (reverse proxy)
-config.ssh_config=ССХ конфигурација
-config.ssh_enabled=Активирано
-config.ssh_port=Порт
-config.ssh_listen_port=Порт за слушање
-config.ssh_root_path=Основни пут
-config.ssh_key_test_path=Пут до кључа
-config.ssh_keygen_path=Пут до генератора кључева ('ssh-keygen')
-config.ssh_minimum_key_size_check=Провера минималне величине кључа
-config.ssh_minimum_key_sizes=Минимална величина кључа
-
-
-config.db_config=Конфигурација базе података
-config.db_type=Тип
-config.db_host=Хост
-config.db_name=Име
-config.db_path=Пут
-
config.service_config=Подешавања сервиса
config.show_registration_button=Прикажи дугме за регистрацију
config.active_code_lives=Дужина трајанја активацијског кода
@@ -624,10 +590,6 @@ config.webhook_config=Подешавања Webhook
config.queue_length=Дужина реда
config.deliver_timeout=Време до отказивање слања
-config.mailer_enabled=Омогућено
-config.mailer_name=Име
-config.mailer_user=Корисник
-
config.oauth_config=Подешавања OAuth
config.oauth_enabled=Укључено
@@ -649,18 +611,6 @@ config.picture_service=Услуга за слике
config.disable_gravatar=Онемогући Gravatar
config.enable_federated_avatar=Омогући Federated Avatars
-config.git_config=Git конфигурација
-config.git_disable_diff_highlight=Онемогући бојење синтаксе када гледате разлике
-config.git_max_diff_lines=Максималан број редова с разликама по фајлу
-config.git_max_diff_line_characters=Максималан број карактера с разликама по реду
-config.git_max_diff_files=Максималан број измењених датотека (приказаних)
-config.git_gc_args=Аргументи cкупљања смећа (GC)
-config.git_migrate_timeout=Време до отказања миграције
-config.git_mirror_timeout=Време до отазање синхронизацији огледала
-config.git_clone_timeout=Време до отказивања клонирањем
-config.git_pull_timeout=Време до отказивања pull операцији
-config.git_gc_timeout=Време до отказивања cакупљање смећа
-
config.log_config=Kонфигурација журнала
monitor.cron=Cron задаци
monitor.name=Име
diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini
index d786a17f0f..6d1f050a5d 100644
--- a/options/locale/locale_sv-SE.ini
+++ b/options/locale/locale_sv-SE.ini
@@ -2864,30 +2864,11 @@ first_page=Första
last_page=Sista
total=Totalt: %d
-dashboard.statistic=Översikt
-dashboard.operations=Operationer för underhåll
-dashboard.system_status=Systemstatus
-dashboard.operation_name=Operationsnamn
-dashboard.operation_switch=Byt till
-dashboard.operation_run=Kör
dashboard.clean_unbind_oauth=Rena obundna OAuth anslutningar
dashboard.clean_unbind_oauth_success=Alla obundna OAuth anslutningar har raderats.
dashboard.delete_missing_repos=Ta bort alla kodförråd som saknar filer specifika för Git
-dashboard.delete_generated_repository_avatars=Ta bort genererade profilbilder för kodförrådet
-dashboard.git_gc_repos=Rensa skräpfiler i samtliga kodförråd
-dashboard.resync_all_hooks=Återsynkronisera pre-receive-, update- och post-receive-krokar för alla kodförråd
-dashboard.reinit_missing_repos=Återinitialisera alla saknade kodförråd för vilka det finns poster
-dashboard.sync_external_users=Synkronisera extern användardata
users.user_manage_panel=Hantera användarkonton
users.new_account=Skapa användarkonto
-users.name=Användarnamn
-users.full_name=Fullständigt namn
-users.activated=Aktiverad
-users.admin=Administratör
-users.repos=Kodförråd
-users.created=Skapad
-users.last_login=Senaste inloggning
-users.never_login=Aldrig loggat in
users.send_register_notify=Meddela om registrering via e-post
users.edit=Redigera
users.auth_source=Autentiseringskälla
@@ -2917,25 +2898,8 @@ emails.filter_sort.name=Användarnamn
emails.filter_sort.name_reverse=Användarnamn (omvänt)
orgs.org_manage_panel=Hantera organisationer
-orgs.name=Namn
-orgs.teams=Team
-orgs.members=Medlemmar
-orgs.new_orga=Ny organisation
-
repos.repo_manage_panel=Hantera kodförråd
-repos.owner=Ägare
-repos.name=Namn
repos.private=Privat
-repos.issues=Ärenden
-repos.size=Storlek
-
-packages.owner=Ägare
-packages.name=Namn
-packages.type=Typ
-packages.repository=Kodförråd
-packages.size=Storlek
-
-
systemhooks=Systemwebbkrokar
auths.auth_manage_panel=Hantera autentiseringkällor
@@ -3013,35 +2977,14 @@ config.offline_mode=Lokalt läge
config.disable_router_log=Inaktivera routerloggning
config.run_user=Användare att köra som
config.run_mode=Exekveringsläge
-config.git_version=Git-version
config.repo_root_path=Rotsökväg för kodförråd
config.lfs_root_path=LFS rotsökväg
config.log_file_root_path=Sökväg för loggar
config.script_type=Skripttyp
config.reverse_auth_user=Autentiseringsanvändare för omvänd proxy
-config.ssh_config=SSH-konfiguration
-config.ssh_enabled=Aktiverad
-config.ssh_start_builtin_server=Använd inbyggd server
-config.ssh_port=Port
-config.ssh_listen_port=Lyssningsport
-config.ssh_root_path=Rotsökväg
-config.ssh_key_test_path=Testsökväg för nyckel
-config.ssh_keygen_path=Sökväg för nyckelgenerator ("ssh-keygen")
-config.ssh_minimum_key_size_check=Kontroll av minsta tillåtna nyckelstorlek
-config.ssh_minimum_key_sizes=Minsta tillåtna nyckelstorlek
-
config.lfs_enabled=Aktiverad
-config.db_config=Databaskonfiguration
-config.db_type=Typ
-config.db_host=Värd
-config.db_name=Namn
-config.db_user=Användarnamn
-config.db_schema=Schema
-config.db_ssl_mode=SSL
-config.db_path=Sökväg
-
config.service_config=Tjänstkonfiguration
config.register_email_confirm=Kräv e-postbekräftelse för att registrera
config.disable_register=Inaktivera självregistrering
@@ -3064,13 +3007,6 @@ config.queue_length=Kölängd
config.deliver_timeout=Tidsfrist för leverans
config.skip_tls_verify=Skippa TLS-verifiering
-config.mailer_enabled=Aktiverad
-config.mailer_name=Namn
-config.mailer_smtp_port=SMTP-port
-config.mailer_user=Användare
-config.mailer_use_sendmail=Använd Sendmail
-config.mailer_sendmail_path=Sökväg för sendmail
-config.mailer_sendmail_args=Extra argument till sendmail
config.send_test_mail=Skicka testmeddelande
config.oauth_config=OAuth-konfiguration
@@ -3095,18 +3031,6 @@ config.picture_service=Bildtjänst
config.disable_gravatar=Inaktivera Gravatar
config.enable_federated_avatar=Aktivera federerade avatarer
-config.git_config=Git-konfiguration
-config.git_disable_diff_highlight=Inaktivera syntaxmarkering i diffar
-config.git_max_diff_lines=Maximalt antal diff-rader per fil
-config.git_max_diff_line_characters=Maximalt antal diff-karaktärer per rad
-config.git_max_diff_files=Maximalt antal diff-filer att visa
-config.git_gc_args=Skräpsamlarargument
-config.git_migrate_timeout=Migreringstimeout
-config.git_mirror_timeout=Tidsfrist för spegeluppdatering
-config.git_clone_timeout=Tidsfrist för kloning
-config.git_pull_timeout=Tidsfrist för dragning
-config.git_gc_timeout=Tidsfrist för skräpsamling
-
config.log_config=Loggkonfiguration
config.disabled_logger=Inaktiverad
config.xorm_log_sql=Logga SQL
@@ -3137,19 +3061,12 @@ notices.type_2=Uppgift
notices.desc=Beskrivning
notices.op=Op.
notices.delete_success=Systemnotifikationer har blivit raderade.
-users.2fa = 2FA
-users.reserved = Reserverad
self_check.database_fix_mysql = För MySQL/MariaDB-användare så kan du använda kommandot ”forgejo doctor convert” för att åtgärda problemet med kollateringen, eller så kan du åtgärda det genom att manuellt använda SQL "ALTER ... COLLATE ...".
-users.bot = Bott
-users.remote = Fjärråtkomst
users.restricted.description = Tillåt endast interaktion med kodförråd och organisationer där den här användaren finns tillagd som medarbetare. Det förhindrar tillgång till allmänna kodförråd i den här instansen.
users.is_restricted = Begränsat konto
self_check.database_inconsistent_collation_columns = Databasen använder kollateringen %s, men de här kolumner använder felanpassade kollateringar. Det kan komma att orsaka oväntade problem.
hooks = webbkrokar
integrations = Integrationer
-packages.creator = Skapare
-packages.version = Version
-config.mailer_protocol = Protokoll
config.send_test_mail_submit = Skicka
monitor.stats = Statistik
monitor.last_execution_result = Resultat
@@ -3168,49 +3085,9 @@ identity_access = Identitet & åtkomst
assets = Kodtillgångar
emails = Användares e-post
config_summary = Sammanfattning
-dashboard.new_version_hint = Forgejo %s är nu tillgänglig, du kör %s. Se bloggen för mer detaljer.
-dashboard.task.started = Startade uppgift: %[1]s
-dashboard.task.process = Uppgift: %[1]s
-dashboard.task.cancelled = Uppgift: %[1]s avbruten: %[3]s
-dashboard.task.error = Fel i uppgift: %[1]s: %[3]s
-dashboard.task.finished = Uppgift: %[1]s startad av %[2]s har slutförts
-dashboard.task.unknown = Okänd uppgift: %[1]s
-dashboard.cron.started = Startade Cron: %[1]s
-dashboard.cron.process = Cron: %[1]s
-dashboard.cron.cancelled = Cron: %[1]s avbruten: %[3]s
-dashboard.cron.error = Fel i Cron: %s: %[3]s
-dashboard.cron.finished = Cron: %[1]s har slutförts
dashboard.delete_inactive_accounts = Radera alla oaktiverade konton
-dashboard.delete_inactive_accounts.started = Uppgift att radera alla oaktiverade konton startad.
dashboard.delete_repo_archives = Radera alla kodförrådsarkiv (ZIP, TAR.GZ, osv.)
-dashboard.delete_repo_archives.started = Uppgift att radera alla kodförrådsarkiv startad.
-dashboard.delete_missing_repos.started = Uppgift att radera alla kodförråd som saknar Git-filer startad.
-dashboard.sync_repo_branches = Synkronisera saknade grenar från Git-data till databas
-dashboard.sync_repo_tags = Synkronisera taggar från Git-data till databas
-dashboard.update_mirrors = Uppdatera speglar
-dashboard.repo_health_check = Hälsokontrollera alla kodförråd
-dashboard.check_repo_stats = Kontrollera all kodförrådsstatistik
-dashboard.archive_cleanup = Radera gamla kodförrådsarkiv
-dashboard.deleted_branches_cleanup = Städa raderade grenar
-dashboard.update_migration_poster_id = Uppdatera migrationsuppläggares ID:n
-dashboard.resync_all_sshkeys = Uppdatera filen ".ssh/authorized_keys" med Forgejo SSH-nycklar.
-dashboard.resync_all_sshprincipals = Uppdatera filen ".ssh/authorized_principals" med Forgejo SSH-certifikatnamn.
-dashboard.cleanup_hook_task_table = Städa hook_task-tabellen
-dashboard.cleanup_packages = Städa utgångna paket
-dashboard.cleanup_actions = Städa utgångna loggar och artefakter från actions
dashboard.delete_old_actions = Radera alla gamla aktiviteter från databasen
-dashboard.delete_old_actions.started = Radering av alla gamla aktiviteter från databasen startad.
-dashboard.update_checker = Uppdateringskontroll
-dashboard.delete_old_system_notices = Radera alla gamla systemmeddelanden från databasen
-dashboard.gc_lfs = Skräpsamla LFS-metaobjekt
-dashboard.stop_zombie_tasks = Stoppa zombie actions-uppgifter
-dashboard.stop_endless_tasks = Stoppa oändliga actions-uppgifter
-dashboard.cancel_abandoned_jobs = Avbryt övergivna actions-jobb
-dashboard.start_schedule_tasks = Starta schemalagda actions-uppgifter
-dashboard.sync_branch.started = Grensynkronisering startad
-dashboard.sync_tag.started = Taggsynkronisering startad
-dashboard.rebuild_issue_indexer = Återuppbygg ärendeindexerare
-users.restricted = Begränsad
users.new_success = Användarkontot "%s" har skapats.
users.activated.description = Slutförande av e-postverifiering. Ägaren av ett oaktiverat konto kommer inte kunna logga in förrän e-postverifieringen är slutförd.
users.block.description = Blockera den här användare från att interagera med den här tjänst genom deras konto och förbjud inloggning.
@@ -3234,12 +3111,8 @@ emails.deletion_success = E-postadressen har raderats.
emails.delete_primary_email_error = Du kan inte radera den primära e-postadressen.
repos.unadopted = Oadopterade kodförråd
repos.unadopted.no_more = Inga oadopterade kodförråd hittades.
-repos.lfs_size = LFS-storlek
-packages.total_size = Total storlek: %s
-packages.unreferenced_size = Orefererad storlek: %s
packages.cleanup = Städa utgången data
packages.cleanup.success = Städade utgången data framgångsrikt
-packages.published = Publicerad
defaulthooks = Standardwebbkrokar
defaulthooks.desc = Webbkrokar gör automatiskt HTTP POST-förfrågningar till en server när vissa Forgejo-händelser utlöses. Webbkrokar definierade här är standard och kopieras till alla nya kodförråd. Läs mer i webbkroksguiden.
defaulthooks.add_webhook = Lägg till standardwebbkrok
@@ -3290,7 +3163,6 @@ auths.invalid_openIdConnectAutoDiscoveryURL = Ogiltig Auto Discovery-URL (det h
config.app_slogan = Instansslogan
config.custom_file_root_path = Anpassad filrotsökväg
config.app_data_path = Sökväg för appdata
-config.ssh_domain = SSH-serverdomän
config.lfs_content_path = Sökväg för LFS-innehåll
config.lfs_http_auth_expiry = Utgångstid för LFS HTTP-autentisering
config.allow_only_internal_registration = Tillåt registrering endast genom Forgejo
@@ -3299,11 +3171,6 @@ config.reset_password_code_lives = Utgångstid för återställningskod
config.allow_dots_in_usernames = Tillåt användare att använda punkter i sina användarnamn. Påverkar inte befintliga konton.
config.default_visibility_organization = Standardsynlighet för nya organisationer
config.default_enable_dependencies = Aktivera ärendeberoenden som standard
-config.mailer_config = E-postkonfiguration
-config.mailer_enable_helo = Aktivera HELO
-config.mailer_smtp_addr = SMTP-värd
-config.mailer_sendmail_timeout = Sendmail-tidsgräns
-config.mailer_use_dummy = Dummy
config.test_email_placeholder = E-post (t.ex. test@example.com)
config.test_mail_failed = Det gick inte att skicka testmeddelande till "%s": %v
config.test_mail_sent = Ett testmeddelande har skickats till "%s".
diff --git a/options/locale/locale_ta.ini b/options/locale/locale_ta.ini
index 8801c32888..f70f305e53 100644
--- a/options/locale/locale_ta.ini
+++ b/options/locale/locale_ta.ini
@@ -371,10 +371,10 @@ hint_login = ஏற்கனவே கணக்கு உள்ளதா? இப்போதே பதிவு செய்யவும்.
sign_up_button = இப்போதே பதிவு செய்யுங்கள்.
sign_up_successful = கணக்கு வெற்றிகரமாக உருவாக்கப்பட்டது. வருக!
-confirmation_mail_sent_prompt = ஒரு புதிய உறுதிப்படுத்தல் மின்னஞ்சல் %sக்கு அனுப்பப்பட்டது. பதிவு செயல்முறையை முடிக்க, உங்கள் இன்பாக்சைச் சரிபார்த்து, அடுத்த %s க்குள் வழங்கப்பட்ட இணைப்பைப் பின்தொடரவும். மின்னஞ்சல் தவறாக இருந்தால், நீங்கள் உள்நுழைந்து மற்றொரு உறுதிப்படுத்தல் மின்னஞ்சலை வேறு முகவரிக்கு அனுப்புமாறு கோரலாம்.
+confirmation_mail_sent_prompt = ஒரு புதிய உறுதிப்படுத்தல் மின்னஞ்சல் %s க்கு அனுப்பப்பட்டது. பதிவுச் செயல்முறையை முடிக்க, உங்கள் இன்பாக்சைச் சரிபார்த்து, அடுத்த %s க்குள் வழங்கப்பட்ட இணைப்பைப் பின்தொடரவும். மின்னஞ்சல் தவறாக இருந்தால், நீங்கள் உள்நுழைந்து மற்றொரு உறுதிப்படுத்தல் மின்னஞ்சலை வேறு முகவரிக்கு அனுப்புமாறு கோரலாம்.
must_change_password = உங்கள் கடவுச்சொல்லை புதுப்பிக்கவும்
allow_password_change = கடவுச்சொல்லை மாற்ற பயனர் தேவை (பரிந்துரைக்கப்படுகிறது)
-reset_password_mail_sent_prompt = உறுதிப்படுத்தல் மின்னஞ்சல் %sக்கு அனுப்பப்பட்டது. கணக்கு மீட்டெடுப்பு செயல்முறையை முடிக்க, உங்கள் இன்பாக்சைச் சரிபார்த்து, அடுத்த %sக்குள் வழங்கப்பட்ட இணைப்பைப் பின்தொடரவும்.
+reset_password_mail_sent_prompt = உறுதிப்படுத்தல் மின்னஞ்சல் %s க்கு அனுப்பப்பட்டது. கணக்கு மீட்டெடுப்பு செயல்முறையை முடிக்க, உங்கள் இன்பாக்சைச் சரிபார்த்து, அடுத்த %s க்குள் வழங்கப்பட்ட இணைப்பைப் பின்தொடரவும்.
active_your_account = உங்கள் கணக்கை இயக்கவும்
account_activated = கணக்கு செயல்படுத்தப்பட்டது
prohibit_login = கணக்கு இடைநிறுத்தப்பட்டுள்ளது
@@ -441,9 +441,9 @@ link_not_working_do_paste = இணைப்பு வேலை செய்ய
hi_user_x = வணக்கம் %s,
activate_account = உங்கள் கணக்கை இயக்கவும்
activate_account.text_1 = வணக்கம் %[1]s, %[2]s இல் பதிவு செய்ததற்கு நன்றி!
-activate_account.text_2 = %sக்குள் உங்கள் கணக்கைச் செயல்படுத்த, பின்வரும் இணைப்பைக் சொடுக்கு செய்யவும்:
+activate_account.text_2 = %s க்குள் உங்கள் கணக்கைச் செயல்படுத்த, பின்வரும் இணைப்பைக் சொடுக்கு செய்யவும்:
activate_email = உங்கள் மின்னஞ்சல் முகவரியைச் சரிபார்க்கவும்
-activate_email.text = %sக்குள் உங்கள் மின்னஞ்சல் முகவரியைச் சரிபார்க்க பின்வரும் இணைப்பைக் சொடுக்கு செய்யவும்:
+activate_email.text = %s க்குள் உங்கள் மின்னஞ்சல் முகவரியைச் சரிபார்க்க பின்வரும் இணைப்பைக் சொடுக்கு செய்யவும்:
admin.new_user.subject = புதிய பயனர் %s இப்போது பதிவு செய்துள்ளார்
admin.new_user.user_info = பயனர் செய்தி
admin.new_user.text = நிர்வாகி குழுவிலிருந்து இந்தப் பயனரை நிர்வகிக்க இங்கே சொடுக்கு செய்யவும்.
@@ -452,7 +452,7 @@ register_notify.text_1 = இது %sக்கான உங்கள் பத
register_notify.text_2 = உங்கள் பயனர்பெயரைப் பயன்படுத்தி உங்கள் கணக்கில் உள்நுழைய முடியாது: %is
register_notify.text_3 = உங்களுக்காக வேறு யாராவது இந்தக் கணக்கை உருவாக்கினால், முதலில் நீங்கள் உங்கள் கடவுச்சொல்லை அமைக்க வேண்டும்.
reset_password = உங்கள் கணக்கை மீட்டெடுக்கவும்
-reset_password.text = இது நீங்கள் என்றால், %sக்குள் உங்கள் கணக்கை மீட்டெடுக்க பின்வரும் இணைப்பைக் சொடுக்கு செய்யவும்:
+reset_password.text = இது நீங்கள் என்றால், %s க்குள் உங்கள் கணக்கை மீட்டெடுக்க பின்வரும் இணைப்பைக் சொடுக்கு செய்யவும்:
password_change.subject = உங்கள் கடவுச்சொல் மாற்றப்பட்டுள்ளது
password_change.text_1 = உங்கள் கணக்கிற்கான கடவுச்சொல் இப்போது மாற்றப்பட்டது.
primary_mail_change.subject = உங்கள் முதன்மை அஞ்சல் மாற்றப்பட்டது
@@ -635,11 +635,11 @@ email_visibility.limited = உங்கள் மின்னஞ்சல் ம
show_on_map = இந்த இடத்தை வரைபடத்தில் காட்டு
settings = பயனர் அமைப்புகள்
disabled_public_activity = இந்தப் பயனர் செயல்பாட்டின் பொதுத் தெரிவுநிலையை முடக்கியுள்ளார்.
-public_activity.visibility_hint.self_public = உங்கள் செயல்பாடு, தனிப்பட்ட ச்பேச்களில் தொடர்புகளைத் தவிர, அனைவருக்கும் தெரியும். கட்டமைக்கவும்.
+public_activity.visibility_hint.self_public = உங்கள் செயல்பாடு, தனிப்பட்ட ச்பேச்களில் தொடர்புகளைத் தவிர, அனைவருக்கும் தெரியும். கட்டமை.
public_activity.visibility_hint.admin_public = இந்தச் செயல்பாடு அனைவருக்கும் தெரியும், ஆனால் ஒரு நிர்வாகியாக நீங்கள் தனிப்பட்ட இடங்களிலும் தொடர்புகளைப் பார்க்கலாம்.
-public_activity.visibility_hint.self_private = உங்கள் செயல்பாடு உங்களுக்கும் நிகழ்வு நிர்வாகிகளுக்கும் மட்டுமே தெரியும். கட்டமைக்கவும்.
+public_activity.visibility_hint.self_private = உங்கள் செயல்பாடு உங்களுக்கும் நிகழ்வு நிர்வாகிகளுக்கும் மட்டுமே தெரியும். கட்டமை.
public_activity.visibility_hint.admin_private = நீங்கள் நிர்வாகியாக இருப்பதால் இந்தச் செயல்பாடு உங்களுக்குத் தெரியும், ஆனால் இது தனிப்பட்டதாக இருக்க வேண்டும் என்று பயனர் விரும்புகிறார்.
-public_activity.visibility_hint.self_private_profile = உங்கள் சுயவிவரம் தனிப்பட்டதாக இருப்பதால், உங்கள் செயல்பாடு உங்களுக்கும் நிகழ்வு நிர்வாகிகளுக்கும் மட்டுமே தெரியும். கட்டமைக்கவும்.
+public_activity.visibility_hint.self_private_profile = உங்கள் சுயவிவரம் தனிப்பட்டதாக இருப்பதால், உங்கள் செயல்பாடு உங்களுக்கும் நிகழ்வு நிர்வாகிகளுக்கும் மட்டுமே தெரியும். கட்டமை.
form.name_reserved = பயனர் பெயர் "%s" ஒதுக்கப்பட்டுள்ளது.
form.name_pattern_not_allowed = பயனர்பெயரில் "%s" முறை அனுமதிக்கப்படவில்லை.
form.name_chars_not_allowed = "%s" என்ற பயனர் பெயர் தவறான எழுத்துகளைக் கொண்டுள்ளது.
@@ -859,7 +859,7 @@ select_permissions = அனுமதிகளைத் தேர்ந்தெ
permission_no_access = அணுகல் இல்லை
permission_read = படிக்கவும்
permission_write = படிக்கவும் எழுதவும்
-access_token_desc = தேர்ந்தெடுக்கப்பட்ட கிள்ளாக்கு அனுமதிகள் தொடர்புடைய API வழிகளுக்கு மட்டுமே அங்கீகாரத்தை வரம்பிடுகின்றன. மேலும் தகவலுக்கு ஆவணத்தைப் படிக்கவும்.
+access_token_desc = தேர்ந்தெடுக்கப்பட்ட கிள்ளாக்கு அனுமதிகள் தொடர்புடைய பநிஇ வழிகளுக்கு மட்டுமே அங்கீகாரத்தை வரம்பிடுகின்றன. மேலும் தகவலுக்கு ஆவணத்தைப் படிக்கவும்.
at_least_one_permission = கிள்ளாக்கை உருவாக்க குறைந்தபட்சம் ஒரு அனுமதியைத் தேர்ந்தெடுக்க வேண்டும்
permissions_list = அனுமதிகள்:
manage_oauth2_applications = OAuth2 பயன்பாடுகளை நிர்வகிக்கவும்
@@ -924,7 +924,7 @@ orgs_none = நீங்கள் எந்த நிறுவனத்தில
repos_none = உங்களிடம் எந்த களஞ்சியங்களும் இல்லை.
blocked_users_none = தடுக்கப்பட்ட பயனர்கள் யாரும் இல்லை.
delete_account = உங்கள் கணக்கை நீக்கவும்
-delete_prompt = இந்த செயல்பாடு உங்கள் பயனர் கணக்கை நிரந்தரமாக நீக்கிவிடும். அதை தவிர்க்க முடியாது.
+delete_prompt = இந்தச் செயல்பாடு உங்கள் பயனர் கணக்கை நிரந்தரமாக நீக்கிவிடும். அதை தவிர்க்க முடியாது.
delete_with_all_comments = உங்கள் கணக்கு %s ஐ விட சிறியது. பேய் கருத்துகளைத் தவிர்க்க, அனைத்து சிக்கல்/PR கருத்துகளும் அதனுடன் நீக்கப்படும்.
confirm_delete_account = நீக்குவதை உறுதிப்படுத்தவும்
delete_account_title = பயனர் கணக்கை நீக்கவும்
@@ -971,7 +971,7 @@ admin.enabled_flags = களஞ்சியத்திற்காக கொட
admin.update_flags = கொடிகளைப் புதுப்பிக்கவும்
admin.failed_to_replace_flags = களஞ்சியக் கொடிகளை மாற்றுவதில் தோல்வி
admin.flags_replaced = களஞ்சியக் கொடிகள் மாற்றப்பட்டன
-new_repo_helper = ஒரு களஞ்சியத்தில் மறுபார்வை வரலாறு உட்பட அனைத்து திட்ட கோப்புகளும் உள்ளன. ஏற்கனவே வேறொரு இடத்தில் புரவலன் செய்கிறீர்களா? இடம்பெயர்வு களஞ்சியத்தை.
+new_repo_helper = ஒரு களஞ்சியத்தில் மறுபார்வை வரலாறு உட்பட அனைத்து திட்டக் கோப்புகளும் உள்ளன. ஏற்கனவே வேறொரு இடத்தில் புரவலன் செய்கிறீர்களா? இடம்பெயர்வு களஞ்சியத்தை.
new_from_template = ஒரு டெம்ப்ளேட்டைப் பயன்படுத்தவும்
new_from_template_description = இந்த நிகழ்வில் ஏற்கனவே உள்ள களஞ்சிய டெம்ப்ளேட்டைத் தேர்ந்தெடுத்து அதன் அமைப்புகளைப் பயன்படுத்தலாம்.
new_advanced = மேம்பட்ட அமைப்புகள்
@@ -1013,7 +1013,7 @@ issue_labels = சிட்டைகள்
issue_labels_helper = சிட்டை தொகுப்பைத் தேர்ந்தெடுக்கவும்
license = உரிமம்
license_helper = உரிமக் கோப்பைத் தேர்ந்தெடுக்கவும்
-license_helper_desc = உங்கள் குறியீட்டைக் கொண்டு மற்றவர்கள் என்ன செய்ய முடியும் மற்றும் செய்யக்கூடாது என்பதை உரிமம் நிர்வகிக்கிறது. உங்கள் திட்டத்திற்கு எது சரியானது என்று உறுதியாக தெரியவில்லையா? உரிமத்தைத் தேர்ந்தெடு என்பதைப் பார்க்கவும்.
+license_helper_desc = உங்கள் குறியீட்டைக் கொண்டு மற்றவர்கள் என்ன செய்ய முடியும் மற்றும் செய்யக் கூடாது என்பதை உரிமம் நிர்வகிக்கிறது. உங்கள் திட்டத்திற்கு எது சரியானது என்று உறுதியாகத் தெரியவில்லையா? உரிமத்தைத் தேர்ந்தெடு என்பதைப் பார்க்கவும்.
object_format = பொருள் வடிவம்
object_format_helper = களஞ்சியத்தின் பொருள் வடிவம். பின்னர் மாற்ற முடியாது. SHA1 மிகவும் இணக்கமானது.
readme = README
@@ -1064,7 +1064,7 @@ delete_preexisting = ஏற்கனவே உள்ள கோப்புகள
delete_preexisting_content = %s இல் கோப்புகளை நீக்கவும்
delete_preexisting_success = %s இல் ஏற்றுக்கொள்ளப்படாத கோப்புகள் நீக்கப்பட்டன
blame_prior = இந்த மாற்றத்திற்கு முன் பழியைப் பார்க்கவும்
-blame.ignore_revs = .git-blame-ignore-revs இல் திருத்தங்களைப் புறக்கணிக்கிறது. புறக்கணிக்க இங்கே சொடுக்கு செய்து சாதாரண பழி பார்வையைப் பார்க்கவும்.
+blame.ignore_revs = .git-blame-ignore-revs இல் திருத்தங்களைப் புறக்கணிக்கிறது. புறக்கணிக்க இங்கே சொடுக்கு செய்து சாதாரண பழி பார்வையைப் பார்.
blame.ignore_revs.failed = .git-blame-ignore-revs இல் திருத்தங்களை புறக்கணிக்க முடியவில்லை.
author_search_tooltip = அதிகபட்சம் 30 பயனர்களைக் காட்டுகிறது
summary_card_alt = %s களஞ்சியத்தின் சுருக்க அட்டை
@@ -1542,7 +1542,7 @@ issues.label_exclusive = பிரத்தியேகமானது
issues.label_archive = காப்பக சிட்டை
issues.label_archived_filter = காப்பகப்படுத்தப்பட்ட லேபிள்களைக் காட்டு
issues.label_archive_tooltip = காப்பகப்படுத்தப்பட்ட லேபிள்கள் சிட்டை மூலம் தேடும் போது பரிந்துரைகளில் இருந்து இயல்பாக விலக்கப்படும்.
-issues.label_exclusive_desc = மற்ற scope/ லேபிள்களுடன் இருவழி பிரத்தியேகமாக இருக்க லேபிளுக்கு scope/item என்று பெயரிடவும்.
+issues.label_exclusive_desc = மற்ற scope/ லேபிள்களுடன் இருவழி பிரத்தியேகமாக இருக்க சிட்டைக்கு scope/item என்று பெயரிடவும்.
issues.label_exclusive_warning = சிக்கல் அல்லது கோரிக்கையை இழுக்கும் லேபிள்களைத் திருத்தும்போது முரண்படும் நோக்கமுள்ள லேபிள்கள் அகற்றப்படும்.
issues.label_count = %d லேபிள்கள்
issues.label_open_issues = %d திறந்த சிக்கல்கள்/கோரிக்கைகளை இழுக்கவும்
@@ -2178,7 +2178,7 @@ settings.remove_team_success = களஞ்சியத்திற்கான
settings.add_webhook = வெப்ஊக்கைச் சேர்க்கவும்
settings.add_webhook.invalid_channel_name = Webhook சேனலின் பெயர் காலியாக இருக்கக்கூடாது மேலும் # எழுத்துக்குறி மட்டும் இருக்கக்கூடாது.
settings.add_webhook.invalid_path = பாதையில் "" என்ற பகுதி இருக்கக்கூடாது அல்லது ".." அல்லது வெற்று சரம். இது ஒரு சாய்வுடன் தொடங்கவோ முடிக்கவோ முடியாது.
-settings.hooks_desc = சில Forgejo நிகழ்வுகள் தூண்டப்படும் போது Webhooks தானாகவே HTTP POST கோரிக்கைகளை சர்வருக்கு செய்யும். webhooks வழிகாட்டியில் மேலும் படிக்கவும்.
+settings.hooks_desc = சில Forgejo நிகழ்வுகள் தூண்டப்படும்போது Webhooks தானாகவே HTTP POST கோரிக்கைகளைச் சர்வருக்கு செய்யும். webhooks வழிகாட்டியில் மேலும் படிக்கவும்.
settings.webhook_deletion = வெப்ஊக்கை அகற்று
settings.webhook_deletion_desc = வெப்ஊக்கை அகற்றுவது அதன் அமைப்புகளையும் டெலிவரி வரலாற்றையும் நீக்குகிறது. தொடரவா?
settings.webhook_deletion_success = வெப்ஊக் அகற்றப்பட்டது.
@@ -2307,7 +2307,7 @@ settings.sourcehut_builds.manifest_path = வெளிப்படையான
settings.sourcehut_builds.visibility = வேலை தெரிவுநிலை
settings.sourcehut_builds.secrets = இரகசியங்கள்
settings.sourcehut_builds.secrets_helper = உருவாக்க ரகசியங்களுக்கான வேலை அணுகலை வழங்கவும் (ரகசியங்கள்: ரோ மானியம் தேவை)
-settings.sourcehut_builds.access_token_helper = JOBS:RW மானியம் உள்ள அணுகல் கிள்ளாக்கு. ரகசிய அணுகலுடன் builds.sr.ht டோக்கனை அல்லது builds.sr.ht கிள்ளாக்கை உருவாக்கவும்..
+settings.sourcehut_builds.access_token_helper = JOBS:RW மானியமுள்ள அணுகல் கிள்ளாக்கு. ரகசிய அணுகலுடன் builds.sr.ht டோக்கனை அல்லது builds.sr.ht கிள்ளாக்கை உருவாக்கவும்..
settings.deploy_keys = விசைகளை வரிசைப்படுத்து
settings.add_deploy_key = வரிசைப்படுத்து விசையைச் சேர்க்கவும்
settings.deploy_key_desc = வரிசைப்படுத்து விசைகள் களஞ்சியத்தில் படிக்க மட்டுமே அல்லது படிக்க-எழுத அணுகலைக் கொண்டிருக்கலாம்.
@@ -2729,7 +2729,7 @@ teams.invite_team_member.list = நிலுவையில் உள்ள அ
teams.delete_team_title = குழுவை நீக்கு
teams.delete_team_desc = ஒரு குழுவை நீக்குவது அதன் உறுப்பினர்களிடமிருந்து களஞ்சிய அணுகலை ரத்து செய்கிறது. தொடரவா?
teams.delete_team_success = அணி நீக்கப்பட்டது.
-teams.admin_permission_desc = இந்தக் குழு நிர்வாகி அணுகலை வழங்குகிறது: உறுப்பினர்கள் குழுக் களஞ்சியங்களில் இருந்து படிக்கலாம், தள்ளலாம் மற்றும் கூட்டுப்பணியாளர்களைச் சேர்க்கலாம்.
+teams.admin_permission_desc = இந்தக் குழு நிர்வாகி அணுகலை வழங்குகிறது: உறுப்பினர்கள் குழுக் களஞ்சியங்களிலிருந்து படிக்கலாம், தள்ளலாம் மற்றும் கூட்டுப்பணியாளர்களைச் சேர்க்கலாம்.
teams.remove_all_repos_desc = இது அணியிலிருந்து அனைத்து களஞ்சியங்களையும் அகற்றும்.
teams.add_all_repos_desc = இது அனைத்து அமைப்பின் களஞ்சியங்களையும் குழுவில் சேர்க்கும்.
teams.add_nonexistent_repo = நீங்கள் சேர்க்க முயற்சிக்கும் களஞ்சியம் இல்லை, முதலில் அதை உருவாக்கவும்.
@@ -2765,77 +2765,14 @@ first_page = முதலில்
last_page = கடைசியாக
total = மொத்தம்: %d
settings = நிர்வாக அமைப்புகள்
-dashboard.new_version_hint = Forgejo %s இப்போது கிடைக்கிறது, நீங்கள் %sஐ இயக்குகிறீர்கள். மேலும் விவரங்களுக்கு வலைப்பதிவை பார்க்கவும்.
-dashboard.statistic = சுருக்கம்
-dashboard.operations = பராமரிப்பு நடவடிக்கைகள்
-dashboard.system_status = அமைப்பின் நிலை
-dashboard.operation_name = ஆபரேசன் பெயர்
-dashboard.operation_switch = ஆளி, நிலைமாறி
-dashboard.operation_run = ஓடு
dashboard.clean_unbind_oauth = வரம்பற்ற OAuth இணைப்புகளை தூய்மை செய்யவும்
dashboard.clean_unbind_oauth_success = அனைத்து வரம்பற்ற OAuth இணைப்புகளும் நீக்கப்பட்டன.
-dashboard.task.started = தொடங்கப்பட்ட பணி: %[1]s
-dashboard.task.process = பணி: %[1]s
-dashboard.task.cancelled = பணி: %[1]s ரத்து செய்யப்பட்டது: %[3]s
-dashboard.task.error = பணியில் பிழை: %[1]s: %[3]s
-dashboard.task.finished = பணி: %[2]s ஆல் தொடங்கப்பட்ட %[1]s முடிந்தது
-dashboard.task.unknown = அறியப்படாத பணி: %[1]s
-dashboard.cron.started = தொடங்கப்பட்ட கிரான்: %[1]s
-dashboard.cron.process = கிரான்: %[1]s
-dashboard.cron.cancelled = கிரான்: %[1]s ரத்து செய்யப்பட்டது: %[3]s
-dashboard.cron.error = Cron இல் பிழை: %s: %[3]s
-dashboard.cron.finished = கிரான்: %[1]s முடிந்தது
dashboard.delete_inactive_accounts = செயல்படுத்தப்படாத அனைத்து கணக்குகளையும் நீக்கவும்
-dashboard.delete_inactive_accounts.started = தொடங்கப்பட்ட அனைத்து செயல்படுத்தப்படாத கணக்குகளையும் நீக்கும் பணி.
dashboard.delete_repo_archives = அனைத்து களஞ்சியங்களின் காப்பகங்களையும் நீக்கவும் (ZIP, TAR.GZ போன்றவை..)
-dashboard.delete_repo_archives.started = அனைத்து களஞ்சிய காப்பகங்களை நீக்கும் பணி தொடங்கப்பட்டது.
dashboard.delete_missing_repos = Git கோப்புகள் இல்லாத அனைத்து களஞ்சியங்களையும் நீக்கவும்
-dashboard.delete_missing_repos.started = Git கோப்புகள் பணி தொடங்கப்பட்டதில் விடுபட்ட அனைத்து களஞ்சியங்களையும் நீக்கவும்.
-dashboard.delete_generated_repository_avatars = உருவாக்கப்பட்ட களஞ்சிய அவதாரங்களை நீக்கவும்
-dashboard.sync_repo_branches = தவறவிட்ட கிளைகளை Git தரவிலிருந்து தரவுத்தளத்திற்கு ஒத்திசைக்கவும்
-dashboard.sync_repo_tags = குறிச்சொற்களை Git தரவிலிருந்து தரவுத்தளத்திற்கு ஒத்திசைக்கவும்
-dashboard.update_mirrors = கண்ணாடிகளைப் புதுப்பிக்கவும்
-dashboard.repo_health_check = அனைத்து களஞ்சியங்களையும் சுகாதாரம் சரிபார்க்கவும்
-dashboard.check_repo_stats = அனைத்து களஞ்சிய புள்ளிவிவரங்களையும் சரிபார்க்கவும்
-dashboard.archive_cleanup = பழைய களஞ்சிய காப்பகங்களை நீக்கவும்
-dashboard.deleted_branches_cleanup = நீக்கப்பட்ட கிளைகளை தூய்மை செய்யவும்
-dashboard.update_migration_poster_id = இடம்பெயர்வு போச்டர் ஐடிகளைப் புதுப்பிக்கவும்
-dashboard.git_gc_repos = குப்பைகள் அனைத்து களஞ்சியங்களையும் சேகரிக்கின்றன
-dashboard.resync_all_sshkeys = Forgejo பாஓடு விசைகளுடன் ".ssh/authorized_keys" கோப்பைப் புதுப்பிக்கவும்.
-dashboard.resync_all_sshprincipals = Forgejo பாஓடு முதன்மைகளுடன் ".ssh/authorized_principals" கோப்பைப் புதுப்பிக்கவும்.
-dashboard.resync_all_hooks = அனைத்து களஞ்சியங்களின் அறிவிலி ஊக்குகளை மீண்டும் ஒத்திசை (முன் பெறுதல், புதுப்பித்தல், பெறப்பட்ட பின் பெறுதல், ...)
-dashboard.reinit_missing_repos = பதிவுகள் இருக்கும் அனைத்து விடுபட்ட Git களஞ்சியங்களையும் மீண்டும் துவக்கவும்
-dashboard.sync_external_users = வெளிப்புற பயனர் தரவை ஒத்திசைக்கவும்
-dashboard.cleanup_hook_task_table = ஊக்_டாச்க் டேபிளை தூய்மை செய்யவும்
-dashboard.cleanup_packages = காலாவதியான தொகுப்புகளை தூய்மை செய்யவும்
-dashboard.cleanup_actions = செயல்களில் இருந்து காலாவதியான பதிவுகள் மற்றும் கலைப்பொருட்களை தூய்மை செய்யவும்
dashboard.delete_old_actions = தரவுத்தளத்திலிருந்து அனைத்து பழைய செயல்பாடுகளையும் நீக்கவும்
-dashboard.delete_old_actions.started = தொடங்கப்பட்ட தரவுத்தளத்திலிருந்து அனைத்து பழைய செயல்பாடுகளையும் நீக்கவும்.
-dashboard.update_checker = புதுப்பிப்பு சரிபார்ப்பு
-dashboard.delete_old_system_notices = தரவுத்தளத்திலிருந்து அனைத்து பழைய கணினி அறிவிப்புகளையும் நீக்கவும்
-dashboard.gc_lfs = குப்பை LFS மேவு பொருட்களை சேகரிக்கிறது
-dashboard.stop_zombie_tasks = சாம்பி செயல் பணிகளை நிறுத்துங்கள்
-dashboard.stop_endless_tasks = முடிவற்ற செயல் பணிகளை நிறுத்துங்கள்
-dashboard.cancel_abandoned_jobs = கைவிடப்பட்ட செயல்கள் வேலைகளை நீக்கறல்
-dashboard.start_schedule_tasks = அட்டவணை செயல் பணிகளைத் தொடங்கவும்
-dashboard.sync_branch.started = கிளை ஒத்திசைவு தொடங்கியது
-dashboard.sync_tag.started = குறிச்சொல் ஒத்திசைவு தொடங்கியது
-dashboard.rebuild_issue_indexer = வெளியீட்டு அட்டவணையை மீண்டும் உருவாக்கவும்
users.user_manage_panel = பயனர் கணக்குகளை நிர்வகிக்கவும்
users.new_account = பயனர் கணக்கை உருவாக்கவும்
-users.name = பயனர் பெயர்
-users.full_name = முழுப் பெயர்
-users.activated = செயல்படுத்தப்பட்டது
-users.admin = நிர்வாகி
-users.restricted = கட்டுப்படுத்தப்பட்டது
-users.reserved = ஒதுக்கப்பட்டது
-users.bot = பாட்
-users.remote = ரிமோட்
-users.2fa = 2FA
-users.repos = பதிவுகள்
-users.created = உருவாக்கப்பட்டது
-users.last_login = கடைசி உள்நுழைவு
-users.never_login = உள்நுழையவில்லை
users.send_register_notify = பதிவு பற்றி மின்னஞ்சல் மூலம் தெரிவிக்கவும்
users.new_success = பயனர் கணக்கு "%s" உருவாக்கப்பட்டது.
users.edit = தொகு
@@ -2889,39 +2826,20 @@ emails.delete_desc = இந்த மின்னஞ்சல் முகவர
emails.deletion_success = மின்னஞ்சல் முகவரி நீக்கப்பட்டது.
emails.delete_primary_email_error = முதன்மை மின்னஞ்சலை நீக்க முடியாது.
orgs.org_manage_panel = நிறுவனங்களை நிர்வகிக்கவும்
-orgs.name = பெயர்
-orgs.teams = அணிகள்
-orgs.members = உறுப்பினர்கள்
-orgs.new_orga = புதிய அமைப்பு
repos.repo_manage_panel = களஞ்சியங்களை நிர்வகிக்கவும்
repos.unadopted = ஏற்றுக்கொள்ளப்படாத களஞ்சியங்கள்
repos.unadopted.no_more = ஏற்றுக்கொள்ளப்படாத களஞ்சியங்கள் எதுவும் இல்லை.
-repos.owner = உரிமையாளர்
-repos.name = பெயர்
-repos.issues = சிக்கல்கள்
-repos.size = அளவு
-repos.lfs_size = LFS அளவு
packages.package_manage_panel = தொகுப்புகளை நிர்வகிக்கவும்
-packages.total_size = மொத்த அளவு: %s
-packages.unreferenced_size = குறிப்பிடப்படாத அளவு: %s
packages.cleanup = காலாவதியான தரவை தூய்மை செய்யவும்
packages.cleanup.success = காலாவதியான தரவு வெற்றிகரமாக தூய்மை செய்யப்பட்டது
-packages.owner = உரிமையாளர்
-packages.creator = படைப்பாளி
-packages.name = பெயர்
-packages.version = பதிப்பு
-packages.type = வகை
-packages.repository = களஞ்சியம்
-packages.size = அளவு
-packages.published = வெளியிடப்பட்டது
defaulthooks = இயல்புநிலை வெப்ஊக்குகள்
-defaulthooks.desc = சில Forgejo நிகழ்வுகள் தூண்டப்படும் போது Webhooks தானாகவே HTTP POST கோரிக்கைகளை சர்வருக்கு செய்யும். இங்கே வரையறுக்கப்பட்ட Webhookகள் இயல்புநிலை மற்றும் அனைத்து புதிய களஞ்சியங்களிலும் நகலெடுக்கப்படும். webhooks வழிகாட்டியில் மேலும் படிக்கவும்.
-defaulthooks.add_webhook = இயல்புநிலை வெப்ஊக்கைச் சேர்க்கவும்
-defaulthooks.update_webhook = இயல்புநிலை வெப்ஊக்கைப் புதுப்பிக்கவும்
+defaulthooks.desc = சில Forgejo நிகழ்வுகள் தூண்டப்படும்போது Webhooks தானாகவே HTTP POST கோரிக்கைகளைச் சர்வருக்கு செய்யும். இங்கே வரையறுக்கப்பட்ட Webhookகள் இயல்புநிலை மற்றும் அனைத்து புதிய களஞ்சியங்களிலும் நகலெடுக்கப்படும். webhooks வழிகாட்டியில் மேலும் படிக்கவும்.
+defaulthooks.add_webhook = இயல்புநிலை வெப்ஊக்கைச் சேர்
+defaulthooks.update_webhook = இயல்புநிலை வெப்ஊக்கைப் புதுப்பி
systemhooks = கணினி வெப்ஊக்குகள்
-systemhooks.desc = சில Forgejo நிகழ்வுகள் தூண்டப்படும் போது Webhooks தானாகவே HTTP POST கோரிக்கைகளை சர்வருக்கு செய்யும். இங்கே வரையறுக்கப்பட்டுள்ள Webhookகள் கணினியில் உள்ள அனைத்து களஞ்சியங்களிலும் செயல்படும், எனவே இது ஏதேனும் செயல்திறன் தாக்கங்களை ஏற்படுத்தலாம். webhooks வழிகாட்டியில் மேலும் படிக்கவும்.
-systemhooks.add_webhook = கணினி வெப்ஊக்கைச் சேர்க்கவும்
-systemhooks.update_webhook = சிச்டம் வெப்ஊக்கைப் புதுப்பிக்கவும்
+systemhooks.desc = சில Forgejo நிகழ்வுகள் தூண்டப்படும்போது Webhooks தானாகவே HTTP POST கோரிக்கைகளைச் சர்வருக்கு செய்யும். இங்கே வரையறுக்கப்பட்டுள்ள Webhookகள் கணினியில் உள்ள அனைத்து களஞ்சியங்களிலும் செயல்படும், எனவே இது ஏதேனும் செயல்திறன் தாக்கங்களை ஏற்படுத்தலாம். webhooks வழிகாட்டியில் மேலும் படிக்கவும்.
+systemhooks.add_webhook = கணினி வெப்ஊக்கைச் சேர்
+systemhooks.update_webhook = சிச்டம் வெப்ஊக்கைப் புதுப்பி
auths.auth_manage_panel = அங்கீகார ஆதாரங்களை நிர்வகிக்கவும்
auths.new = அங்கீகார மூலத்தைச் சேர்க்கவும்
auths.name = பெயர்
@@ -3040,35 +2958,15 @@ config.offline_mode = உள்ளக பயன்முறை
config.disable_router_log = திசைவி பதிவை முடக்கு
config.run_user = என இயக்க பயனர்
config.run_mode = இயக்க முறை
-config.git_version = Git பதிப்பு
config.app_data_path = பயன்பாட்டு தரவு பாதை
config.repo_root_path = களஞ்சிய ரூட் பாதை
config.log_file_root_path = பதிவு பாதை
config.script_type = ச்கிரிப்ட் வகை
config.reverse_auth_user = ரிவர்ச் பதிலாள் அங்கீகார பயனர்
-config.ssh_config = பாஓடு கட்டமைப்பு
-config.ssh_enabled = இயக்கப்பட்டது
-config.ssh_start_builtin_server = உள்ளமைக்கப்பட்ட சேவையகத்தைப் பயன்படுத்தவும்
-config.ssh_domain = பாஓடு சர்வர் டொமைன்
-config.ssh_port = துறைமுகம்
-config.ssh_listen_port = லிசன் துறைமுகம்
-config.ssh_root_path = ரூட் பாதை
-config.ssh_key_test_path = முக்கிய சோதனை பாதை
-config.ssh_keygen_path = கீசென் ("ssh-keygen") பாதை
-config.ssh_minimum_key_size_check = குறைந்தபட்ச விசை அளவு சரிபார்ப்பு
-config.ssh_minimum_key_sizes = குறைந்தபட்ச முக்கிய அளவுகள்
config.lfs_config = LFS கட்டமைப்பு
config.lfs_enabled = இயக்கப்பட்டது
config.lfs_content_path = LFS உள்ளடக்க பாதை
config.lfs_http_auth_expiry = LFS HTTP அங்கீகார காலாவதி நேரம்
-config.db_config = தரவுத்தள கட்டமைப்பு
-config.db_type = வகை
-config.db_host = விருந்தோம்பி
-config.db_name = பெயர்
-config.db_user = பயனர் பெயர்
-config.db_schema = திட்டம்
-config.db_ssl_mode = SSL
-config.db_path = பாதை
config.service_config = பணி கட்டமைப்பு
config.register_email_confirm = பதிவு செய்ய மின்னஞ்சல் உறுதிப்படுத்தல் தேவை
config.disable_register = தன்வய பதிவை முடக்கு
@@ -3095,19 +2993,6 @@ config.webhook_config = Webhook கட்டமைப்பு
config.queue_length = வரிசை நீளம்
config.deliver_timeout = காலாவதியை வழங்கவும்
config.skip_tls_verify = TLS சரிபார்ப்பைத் தவிர்க்கவும்
-config.mailer_config = அஞ்சல் அமைப்பு
-config.mailer_enabled = இயக்கப்பட்டது
-config.mailer_enable_helo = HELOவை இயக்கு
-config.mailer_name = பெயர்
-config.mailer_protocol = நெறிமுறை
-config.mailer_smtp_addr = SMTP புரவலன்
-config.mailer_smtp_port = SMTP துறைமுகம்
-config.mailer_user = பயனர்
-config.mailer_use_sendmail = அனுப்பு அஞ்சல் பயன்படுத்தவும்
-config.mailer_sendmail_path = அனுப்பு அஞ்சல் பாதை
-config.mailer_sendmail_args = Sendmailக்கு கூடுதல் வாதங்கள்
-config.mailer_sendmail_timeout = அனுப்பு அஞ்சல் நேரம் முடிந்தது
-config.mailer_use_dummy = போலி
config.test_email_placeholder = மின்னஞ்சல் (எ.கா. test@example.com)
config.send_test_mail = சோதனை மின்னஞ்சலை அனுப்பவும்
config.send_test_mail_submit = அனுப்பு
@@ -3133,17 +3018,6 @@ config.picture_config = படம் மற்றும் அவதார்
config.disable_gravatar = கிராவதார் ஐ முடக்கு
config.enable_federated_avatar = ஒருங்கிணைந்த அவதாரங்களை இயக்கு
config.open_with_editor_app_help = நகலி மெனுவிற்கான "உடன் திற" எடிட்டர்கள். காலியாக இருந்தால், இயல்புநிலை பயன்படுத்தப்படும். இயல்புநிலையைப் பார்க்க விரிவாக்கவும்.
-config.git_config = Git கட்டமைப்பு
-config.git_disable_diff_highlight = டிஃப் தொடரியல் சிறப்பம்சத்தை முடக்கு
-config.git_max_diff_lines = ஒரு கோப்பிற்கு அதிகபட்ச வேறுபாடு கோடுகள்
-config.git_max_diff_line_characters = ஒரு வரிக்கு அதிகபட்ச வேறுபாடு எழுத்துக்கள்
-config.git_max_diff_files = அதிகபட்ச வேறுபாடு கோப்புகள் காட்டப்பட்டுள்ளன
-config.git_gc_args = GC வாதங்கள்
-config.git_migrate_timeout = இடம்பெயர்வு நேரம் முடிந்தது
-config.git_mirror_timeout = மிரர் புதுப்பிப்பு நேரம் முடிந்தது
-config.git_clone_timeout = நகலி ஆபரேசன் காலாவதியானது
-config.git_pull_timeout = புல் ஆபரேசன் நேரம் முடிந்தது
-config.git_gc_timeout = GC ஆபரேசன் நேரம் முடிந்தது
config.log_config = பதிவு கட்டமைப்பு
config.logger_name_fmt = பதிவர்: %s
config.disabled_logger = முடக்கப்பட்டது
@@ -3180,7 +3054,7 @@ notices.type_2 = பணி
notices.desc = விவரம்
notices.op = ஒப்.
notices.delete_success = கணினி அறிவிப்புகள் நீக்கப்பட்டன.
-self_check.no_problem_found = இதுவரை எந்த பிரச்சனையும் கண்டறியப்படவில்லை.
+self_check.no_problem_found = இதுவரை எந்தப் பிரச்சனையும் கண்டறியப்படவில்லை.
self_check.database_collation_mismatch = தரவுத்தளமானது தொகுப்பைப் பயன்படுத்தும் என எதிர்பார்க்கலாம்: %s
self_check.database_collation_case_insensitive = தரவுத்தளமானது %s தொகுப்பைப் பயன்படுத்துகிறது, இது ஒரு உணர்வற்ற தொகுப்பாகும். Forgejo இதனுடன் வேலை செய்ய முடியும் என்றாலும், எதிர்பார்த்தபடி செயல்படாத சில அரிதான நிகழ்வுகள் இருக்கலாம்.
self_check.database_inconsistent_collation_columns = தரவுத்தளம் %s தொகுப்பைப் பயன்படுத்துகிறது, ஆனால் இந்த நெடுவரிசைகள் பொருந்தாத தொகுப்புகளைப் பயன்படுத்துகின்றன. இது சில எதிர்பாராத பிரச்சனைகளை ஏற்படுத்தலாம்.
@@ -3272,7 +3146,7 @@ management = இரகசியங்களை நிர்வகிக்கவ
[actions]
runs.no_workflows.help_write_access = Forgejo செயல்களை எப்படி தொடங்குவது என்று தெரியவில்லையா? உங்கள் முதல் பணிப்பாய்வுகளை எழுத, பயனர் ஆவணத்தில் விரைவான தொடக்கத்தைப் பார்க்கவும், பின்னர் உங்கள் வேலையைச் செய்ய ஒரு Forgejo ரன்னர் அமைக்கவும்.
-runs.no_workflows.help_no_write_access = Forgejo செயல்கள் பற்றி அறிய, ஆவணங்களை பார்க்கவும்.
+runs.no_workflows.help_no_write_access = Forgejo செயல்கள்பற்றி அறிய, ஆவணங்களை பார்க்கவும்.
runs.no_runs = பணிப்பாய்வு இன்னும் இயங்கவில்லை.
runs.empty_commit_message = (வெற்று உறுதி செய்தி)
runs.expire_log_message = மரத்தடிகள் மிகவும் பழமையானதாக இருந்ததால், சுத்தப்படுத்தப்பட்டுள்ளது.
diff --git a/options/locale/locale_th.ini b/options/locale/locale_th.ini
index ef25055540..9ad568ce62 100644
--- a/options/locale/locale_th.ini
+++ b/options/locale/locale_th.ini
@@ -2765,77 +2765,14 @@ first_page = แรก
last_page = สุดท้าย
total = ทั้งหมด: %d
settings = การตั้งค่าผู้ดูแลระบบ
-dashboard.new_version_hint = Forgejo %s พร้อมใช้งานแล้ว คุณกำลังใช้ %s ตรวจสอบ บล็อก สำหรับรายละเอียดเพิ่มเติม
-dashboard.statistic = สรุป
-dashboard.operations = การดำเนินการบำรุงรักษา
-dashboard.system_status = สถานะระบบ
-dashboard.operation_name = ชื่อการดำเนินการ
-dashboard.operation_switch = สวิตช์
-dashboard.operation_run = เรียกใช้
dashboard.clean_unbind_oauth = ล้างการเชื่อมต่อ OAuth ที่ไม่ได้ผูก
dashboard.clean_unbind_oauth_success = ลบการเชื่อมต่อ OAuth ที่ไม่ได้ผูกทั้งหมดแล้ว
-dashboard.task.started = เริ่มงาน: %[1]s
-dashboard.task.process = งาน: %[1]s
-dashboard.task.cancelled = งาน: %[1]s ถูกยกเลิก: %[3]s
-dashboard.task.error = ข้อผิดพลาดในงาน: %[1]s: %[3]s
-dashboard.task.finished = งาน: %[1]s ที่เริ่มโดย %[2]s เสร็จสิ้นแล้ว
-dashboard.task.unknown = งานที่ไม่รู้จัก: %[1]s
-dashboard.cron.started = เริ่ม Cron: %[1]s
-dashboard.cron.process = Cron: %[1]s
-dashboard.cron.cancelled = Cron: %[1]s ถูกยกเลิก: %[3]s
-dashboard.cron.error = ข้อผิดพลาดใน Cron: %s: %[3]s
-dashboard.cron.finished = Cron: %[1]s เสร็จสิ้นแล้ว
dashboard.delete_inactive_accounts = ลบบัญชีที่ไม่ได้เปิดใช้งานทั้งหมด
-dashboard.delete_inactive_accounts.started = เริ่มงานลบบัญชีที่ไม่ได้เปิดใช้งานทั้งหมดแล้ว
dashboard.delete_repo_archives = ลบไฟล์เก็บถาวรของที่เก็บทั้งหมด (ZIP, TAR.GZ, ฯลฯ)
-dashboard.delete_repo_archives.started = เริ่มงานลบไฟล์เก็บถาวรของที่เก็บทั้งหมดแล้ว
dashboard.delete_missing_repos = ลบที่เก็บทั้งหมดที่ไม่มีไฟล์ Git
-dashboard.delete_missing_repos.started = เริ่มงานลบที่เก็บทั้งหมดที่ไม่มีไฟล์ Git แล้ว
-dashboard.delete_generated_repository_avatars = ลบอวาตาร์ที่เก็บที่สร้างขึ้น
-dashboard.sync_repo_branches = ซิงค์สาขาที่พลาดจากข้อมูล Git ไปยังฐานข้อมูล
-dashboard.sync_repo_tags = ซิงค์แท็กจากข้อมูล Git ไปยังฐานข้อมูล
-dashboard.update_mirrors = อัปเดตมิเรอร์
-dashboard.repo_health_check = ตรวจสอบสุขภาพที่เก็บทั้งหมด
-dashboard.check_repo_stats = ตรวจสอบสถิติที่เก็บทั้งหมด
-dashboard.archive_cleanup = ลบไฟล์เก็บถาวรของที่เก็บเก่า
-dashboard.deleted_branches_cleanup = ล้างสาขาที่ถูกลบ
-dashboard.update_migration_poster_id = อัปเดต ID ผู้โพสต์การย้าย
-dashboard.git_gc_repos = เก็บขยะที่เก็บทั้งหมด
-dashboard.resync_all_sshkeys = อัปเดตไฟล์ ".ssh/authorized_keys" ด้วยคีย์ SSH ของ Forgejo
-dashboard.resync_all_sshprincipals = อัปเดตไฟล์ ".ssh/authorized_principals" ด้วย Principal SSH ของ Forgejo
-dashboard.resync_all_hooks = ซิงโครไนซ์ฮุก pre-receive, update และ post-receive ของที่เก็บทั้งหมดอีกครั้ง
-dashboard.reinit_missing_repos = เริ่มต้นที่เก็บ Git ที่หายไปทั้งหมดที่มีระเบียนอยู่ใหม่
-dashboard.sync_external_users = ซิงโครไนซ์ข้อมูลผู้ใช้ภายนอก
-dashboard.cleanup_hook_task_table = ล้างตาราง hook_task
-dashboard.cleanup_packages = ล้างแพ็คเกจที่หมดอายุ
-dashboard.cleanup_actions = ล้างบันทึกและอาร์ติแฟกต์ที่หมดอายุจากการดำเนินการ
dashboard.delete_old_actions = ลบกิจกรรมเก่าทั้งหมดออกจากฐานข้อมูล
-dashboard.delete_old_actions.started = เริ่มลบกิจกรรมเก่าทั้งหมดออกจากฐานข้อมูลแล้ว
-dashboard.update_checker = ตัวตรวจสอบการอัปเดต
-dashboard.delete_old_system_notices = ลบประกาศของระบบเก่าทั้งหมดออกจากฐานข้อมูล
-dashboard.gc_lfs = เก็บขยะอ็อบเจกต์เมตา LFS
-dashboard.stop_zombie_tasks = หยุดงานการดำเนินการซอมบี้
-dashboard.stop_endless_tasks = หยุดงานการดำเนินการที่ไม่สิ้นสุด
-dashboard.cancel_abandoned_jobs = ยกเลิกงานการดำเนินการที่ถูกทอดทิ้ง
-dashboard.start_schedule_tasks = เริ่มงานการดำเนินการตามกำหนดเวลา
-dashboard.sync_branch.started = เริ่มการซิงค์สาขาแล้ว
-dashboard.sync_tag.started = เริ่มการซิงค์แท็กแล้ว
-dashboard.rebuild_issue_indexer = สร้างดัชนีปัญหาใหม่
users.user_manage_panel = จัดการบัญชีผู้ใช้
users.new_account = สร้างบัญชีผู้ใช้
-users.name = ชื่อผู้ใช้
-users.full_name = ชื่อเต็ม
-users.activated = เปิดใช้งานแล้ว
-users.admin = ผู้ดูแลระบบ
-users.restricted = จำกัด
-users.reserved = สงวนไว้
-users.bot = บอท
-users.remote = ระยะไกล
-users.2fa = 2FA
-users.repos = ที่เก็บ
-users.created = สร้างแล้ว
-users.last_login = ลงชื่อเข้าใช้ล่าสุด
-users.never_login = ไม่เคยลงชื่อเข้าใช้
users.send_register_notify = แจ้งเตือนเกี่ยวกับการลงทะเบียนทางอีเมล
users.new_success = สร้างบัญชีผู้ใช้ "%s" แล้ว
users.edit = แก้ไข
@@ -2889,31 +2826,12 @@ emails.delete_desc = คุณแน่ใจหรือไม่ว่าต
emails.deletion_success = ที่อยู่อีเมลถูกลบแล้ว
emails.delete_primary_email_error = คุณไม่สามารถลบอีเมลหลักได้
orgs.org_manage_panel = จัดการองค์กร
-orgs.name = ชื่อ
-orgs.teams = ทีม
-orgs.members = สมาชิก
-orgs.new_orga = องค์กรใหม่
repos.repo_manage_panel = จัดการที่เก็บ
repos.unadopted = ที่เก็บที่ยังไม่ได้นำมาใช้
repos.unadopted.no_more = ไม่พบที่เก็บที่ยังไม่ได้นำมาใช้
-repos.owner = เจ้าของ
-repos.name = ชื่อ
-repos.issues = ปัญหา
-repos.size = ขนาด
-repos.lfs_size = ขนาด LFS
packages.package_manage_panel = จัดการแพ็คเกจ
-packages.total_size = ขนาดทั้งหมด: %s
-packages.unreferenced_size = ขนาดที่ไม่ได้อ้างอิง: %s
packages.cleanup = ล้างข้อมูลที่หมดอายุ
packages.cleanup.success = ล้างข้อมูลที่หมดอายุสำเร็จแล้ว
-packages.owner = เจ้าของ
-packages.creator = ผู้สร้าง
-packages.name = ชื่อ
-packages.version = เวอร์ชัน
-packages.type = ประเภท
-packages.repository = ที่เก็บ
-packages.size = ขนาด
-packages.published = เผยแพร่แล้ว
defaulthooks = เว็บฮุกเริ่มต้น
defaulthooks.desc = เว็บฮุกจะส่งคำขอ HTTP POST ไปยังเซิร์ฟเวอร์โดยอัตโนมัติเมื่อมีเหตุการณ์ Forgejo บางอย่างเกิดขึ้น เว็บฮุกที่กำหนดที่นี่เป็นค่าเริ่มต้นและจะถูกคัดลอกไปยังที่เก็บใหม่ทั้งหมด อ่านเพิ่มเติมใน คู่มือเว็บฮุก
defaulthooks.add_webhook = เพิ่มเว็บฮุกเริ่มต้น
@@ -3040,35 +2958,15 @@ config.offline_mode = โหมดโลคัล
config.disable_router_log = ปิดใช้งานบันทึกเราเตอร์
config.run_user = ผู้ใช้ที่จะเรียกใช้เป็น
config.run_mode = โหมดการทำงาน
-config.git_version = เวอร์ชัน Git
config.app_data_path = พาธข้อมูลแอป
config.repo_root_path = พาธรากของที่เก็บ
config.log_file_root_path = พาธบันทึก
config.script_type = ประเภทสคริปต์
config.reverse_auth_user = ผู้ใช้การยืนยันตัวตนพร็อกซีย้อนกลับ
-config.ssh_config = การกำหนดค่า SSH
-config.ssh_enabled = เปิดใช้งาน
-config.ssh_start_builtin_server = ใช้เซิร์ฟเวอร์ในตัว
-config.ssh_domain = โดเมนเซิร์ฟเวอร์ SSH
-config.ssh_port = พอร์ต
-config.ssh_listen_port = พอร์ตฟัง
-config.ssh_root_path = พาธราก
-config.ssh_key_test_path = พาธทดสอบคีย์
-config.ssh_keygen_path = พาธ Keygen ("ssh-keygen")
-config.ssh_minimum_key_size_check = การตรวจสอบขนาดคีย์ขั้นต่ำ
-config.ssh_minimum_key_sizes = ขนาดคีย์ขั้นต่ำ
config.lfs_config = การกำหนดค่า LFS
config.lfs_enabled = เปิดใช้งาน
config.lfs_content_path = พาธเนื้อหา LFS
config.lfs_http_auth_expiry = เวลาหมดอายุการยืนยันตัวตน HTTP ของ LFS
-config.db_config = การกำหนดค่าฐานข้อมูล
-config.db_type = ประเภท
-config.db_host = โฮสต์
-config.db_name = ชื่อ
-config.db_user = ชื่อผู้ใช้
-config.db_schema = สคีมา
-config.db_ssl_mode = SSL
-config.db_path = พาธ
config.service_config = การกำหนดค่าบริการ
config.register_email_confirm = ต้องมีการยืนยันทางอีเมลเพื่อลงทะเบียน
config.disable_register = ปิดใช้งานการลงทะเบียนด้วยตนเอง
@@ -3095,19 +2993,6 @@ config.webhook_config = การกำหนดค่าเว็บฮุก
config.queue_length = ความยาวคิว
config.deliver_timeout = หมดเวลาการจัดส่ง
config.skip_tls_verify = ข้ามการตรวจสอบ TLS
-config.mailer_config = การกำหนดค่า Mailer
-config.mailer_enabled = เปิดใช้งาน
-config.mailer_enable_helo = เปิดใช้งาน HELO
-config.mailer_name = ชื่อ
-config.mailer_protocol = โปรโตคอล
-config.mailer_smtp_addr = โฮสต์ SMTP
-config.mailer_smtp_port = พอร์ต SMTP
-config.mailer_user = ผู้ใช้
-config.mailer_use_sendmail = ใช้ Sendmail
-config.mailer_sendmail_path = พาธ Sendmail
-config.mailer_sendmail_args = อาร์กิวเมนต์เพิ่มเติมสำหรับ Sendmail
-config.mailer_sendmail_timeout = หมดเวลา Sendmail
-config.mailer_use_dummy = Dummy
config.test_email_placeholder = อีเมล (เช่น test@example.com)
config.send_test_mail = ส่งอีเมลทดสอบ
config.send_test_mail_submit = ส่ง
@@ -3133,17 +3018,6 @@ config.picture_config = การกำหนดค่ารูปภาพแ
config.disable_gravatar = ปิดใช้งาน Gravatar
config.enable_federated_avatar = เปิดใช้งานอวาตาร์แบบรวมศูนย์
config.open_with_editor_app_help = ตัวแก้ไข "เปิดด้วย" สำหรับเมนูโคลน หากเว้นว่างไว้ จะใช้ค่าเริ่มต้น ขยายเพื่อดูค่าเริ่มต้น
-config.git_config = การกำหนดค่า Git
-config.git_disable_diff_highlight = ปิดใช้งานการเน้นไวยากรณ์ diff
-config.git_max_diff_lines = จำนวนบรรทัด diff สูงสุดต่อไฟล์
-config.git_max_diff_line_characters = จำนวนอักขระ diff สูงสุดต่อบรรทัด
-config.git_max_diff_files = จำนวนไฟล์ diff สูงสุดที่แสดง
-config.git_gc_args = อาร์กิวเมนต์ GC
-config.git_migrate_timeout = หมดเวลาการย้าย
-config.git_mirror_timeout = หมดเวลาการอัปเดตมิเรอร์
-config.git_clone_timeout = หมดเวลาการดำเนินการโคลน
-config.git_pull_timeout = หมดเวลาการดำเนินการดึง
-config.git_gc_timeout = หมดเวลาการดำเนินการ GC
config.log_config = การกำหนดค่าบันทึก
config.logger_name_fmt = Logger: %s
config.disabled_logger = ปิดใช้งาน
diff --git a/options/locale/locale_tok.ini b/options/locale/locale_tok.ini
index bb485b94fb..0ed8a3a5b9 100644
--- a/options/locale/locale_tok.ini
+++ b/options/locale/locale_tok.ini
@@ -6,7 +6,7 @@ home = open
dashboard = ijo sin
explore = o alasa
help = o pana e sona
-logo = sitelen pi ilo Posejo li lon poka sewi. jan li ken ala lukin e sitelen la, ona li lukin e toki "sitelen".
+logo = sitelen pi ilo Forgejo
link_account = o wan e nimi
sign_up = o pali e nimi
sign_in = o pana e nimi
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index 766a17df43..7132b079a1 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -18,7 +18,7 @@ template=Şablon
language=Dil
notifications=Bildirimler
active_stopwatch=Etkin zaman takipçisi
-tracked_time_summary=Konu listesi süzgeçlerine dayanan takip edilen zamanın özeti
+tracked_time_summary=Sorun listesindeki filtrelere göre takip edilen sürenin özeti
create_new=Oluştur…
user_profile_and_more=Profil ve ayarlar…
signed_in_as=Giriş yapan:
@@ -123,7 +123,7 @@ confirm_delete_selected=Tüm seçili öğeleri gerçekten silmek istiyor musunuz
name=İsim
value=Değer
copy_generic = Panoya kopyala
-filter = Süzgeç
+filter = Filtrele
filter.not_archived = Arşivlenmemiş
filter.clear = Süzgeçleri temizle
filter.is_archived = Arşivlenmiş
@@ -198,7 +198,7 @@ string.desc=Z - A
[error]
occurred=Bir hata oluştu
-report_message=Bunun bir Forgejo hatası olduğunu düşünüyorsanız, lütfen Codeberg sayfasında sorunu arayın veya gerekiyorsa yeni bir sorun oluşturun.
+report_message=Eğer bunun bir Forgejo hatası olduğunu düşünüyorsanız, lütfen Codeberg'de ilgili sorunları arayın, gerekirse yeni bir sorun bildirimi oluşturun (açın).
not_found=Hedef bulunamadı.
network_error=Ağ hatası
server_internal = İç sunucu hatası
@@ -455,7 +455,7 @@ activate_email.text=E posta adresinizi doğrulamak için lütfen %s için
register_notify=%s'ya Hoş Geldiniz
register_notify.text_1=bu %s için kayıt onay e postanızdır!
-register_notify.text_2=Artık %s kullanıcı adı ile oturum açabilirsiniz.
+register_notify.text_2=Kullanıcı adınızla hesabınıza giriş yapabilirsiniz: %s
register_notify.text_3=Eğer bu hesap sizin için oluşturulduysa, lütfen önce şifrenizi ayarlayın.
reset_password=Hesabınızı kurtarın
@@ -516,7 +516,7 @@ password_change.text_1 = Hesabınızın parolası değişti.
totp_enrolled.subject = TOTP, 2 aşamalı giriş yöntemi olarak aktifleştirildi
totp_enrolled.text_1.no_webauthn = TOTP'yi hesabınız için aktifleştirdiniz. Bundan dolayı gelecekte hesabınıza giriş yaparken 2 aşamalı giriş yöntemi olarak TOTP kullanmanız gerekecek.
totp_enrolled.text_1.has_webauthn = TOTP'yi hesabınız için aktifleştirdiniz. Bu sayede gelecekte hesabınıza giriş yaparken 2 aşamalı giriş yöntemi olarak güvenlik anahtarlarınızın yanında TOTP'yi de kullanabilirsiniz.
-primary_mail_change.text_1 = Hesabınızın ana e-posta adresi, %[1]s olarak değiştirildi. Bundan dolayı bu e-posta adresi hesabınızla alakalı e-posta bildirimlerini almayacak.
+primary_mail_change.text_1 = Hesabınızın birincil e-posta adresi az önce %[1]s olarak değiştirildi. Bu, bu e-posta adresine artık hesabınızla ilgili e-posta bildirimleri gönderilmeyeceği anlamına gelir.
totp_disabled.no_2fa = Artık herhangi bir iki aşamalı giriş yönteminiz ayarlanmış bulunmamakta, yani hesabınıza giriş yaparken iki aşamalı giriş yapmanıza gerek kalmamıştır.
removed_security_key.no_2fa = Artık herhangi bir iki aşamalı giriş yönteminiz ayarlanmış bulunmamakta, yani hesabınıza giriş yaparken iki aşamalı giriş yapmanıza gerek kalmamıştır.
@@ -651,7 +651,7 @@ settings=Kullanıcı ayarları
form.name_reserved=`"%s" kullanıcı adı rezerve edilmiş.`
form.name_pattern_not_allowed=Kullanıcı adında "%s" deseni kullanılamaz.
-form.name_chars_not_allowed=`"%s" kullanıcı adı geçersiz karakterler içeriyor.`
+form.name_chars_not_allowed="%s" kullanıcı adı geçersiz karakterler içeriyor.
following.title.few = Takip edilenler
public_activity.visibility_hint.admin_private = Bu aktivite yönetici olduğunuz için açıktır ama kullanıcı gizli kalmasını tercih etmiştir.
block_user = Kullanıcıyı engelle
@@ -666,7 +666,7 @@ followers.title.one = Takipçi
block = Engelle
public_activity.visibility_hint.self_private = Aktiviteniz sadece size ve oluşum yöneticilerine açıktır. Değiştir.
followers_one = %d takipçi
-block_user.detail_2 = Bu kullanıcı sahip olduğunuz depolar, açtığınız sorunlar ve yaptığınız yorumlar ile etkileşime geçemeyecek.
+block_user.detail_2 = Bu kullanıcı, sahip olduğunuz depolarla veya oluşturduğunuz sorunlar ile ve yorumlar ile etkileşimde bulunamayacaktır.
block_user.detail_1 = Birbirinizden takipten çıkacak ve birbirinizi takip edemeyeceksiniz.
block_user.detail = Bu kullanıcıyı engellediğinizde:
block_user.detail_3 = Birbirinizi depo işbirlikçileri olarak ekleyemeyeceksiniz.
@@ -692,7 +692,7 @@ webauthn=Güvenlik Anahtarları
public_profile=Herkese açık profil
biography_placeholder=Diğerlerine kendiniz hakkında birşeyler söyleyin! (Markdown destekleniyor)
location_placeholder=Yaklaşık konumunuzu başkalarıyla paylaşın
-profile_desc=Profilinizin başkalarına nasıl gösterildiğini yönetin. Ana e-posta adresiniz bildirimler, parola kurtarma ve web tabanlı Git işlemleri için kullanılacaktır.
+profile_desc=Hakkında
password_username_disabled=Yerel olmayan kullanıcılara kullanıcı adlarını değiştirme izni verilmemiştir. Daha fazla bilgi edinmek için lütfen site yöneticisi ile iletişime geçiniz.
full_name=Ad Soyad
website=Web Sitesi
@@ -774,7 +774,7 @@ add_new_email=Yeni E-posta Adresi Ekle
add_new_openid=Yeni OpenID URI'si Ekle
add_email=E-posta Adresi Ekle
add_openid=Açık Kimlik URI 'si ekle
-add_email_confirmation_sent=`"%s" adresine bir doğrulama e-postası gönderildi. E-postanızı doğrulamak için %s içinde gelen kutunuzu kontrol ediniz.`
+add_email_confirmation_sent="%s" adresine bir doğrulama e-postası gönderildi. E-postanızı doğrulamak için %s içinde gelen kutunuzu kontrol ediniz.
add_email_success=Yeni e-posta adresi eklendi.
email_preference_set_success=E-posta tercihi başarıyla ayarlandı.
add_openid_success=Yeni OpenID adresi eklendi.
@@ -979,7 +979,7 @@ keep_activity_private.description = Şu anki halka açık aktiviten
keep_pronouns_private.description = Bu giriş yapmamış ziyaretçilerden zamirleri gizleyecektir.
storage_overview = Depolamaya genel bakış
quota = Kota
-change_username_redirect_prompt.with_cooldown.one = Eski kullanıcı adı %[1]d günlük korunma döneminin ardından herkes tarafından kullanılabilir hale gelecek. Korunma dönemi süresince eski kullanıcı adını tekrar alabilirsin.
+change_username_redirect_prompt.with_cooldown.one = Eski kullanıcı adı, %[1]d günlük bir bekleme süresinin ardından herkes tarafından kullanılabilir hale gelecektir. Bekleme süresi boyunca eski kullanıcı adını geri alabilirsiniz.
change_username_redirect_prompt.with_cooldown.few = Eski kullanıcı adı %[1]d günlük korunma döneminin ardından herkes tarafından kullanılabilir hale gelecek. Korunma dönemi süresince eski kullanıcı adını tekrar alabilirsin.
language.localization_project = Forgejo'yu kendi lisanında çevirmemize yardımcı ol! Daha fazla bilgi edin.
additional_repo_units_hint = Ek depo birimlerini etkinleştirmeyi öner
@@ -1015,14 +1015,14 @@ quota.sizes.assets.packages.all = Paketler
quota.sizes.wiki = Viki
[repo]
-new_repo_helper=Bir depo, sürüm geçmişi dahil tüm proje dosyalarını içerir. Zaten başka bir yerde mi barındırıyorsunuz? Depoyu taşıyın.
+new_repo_helper=Bir depo, revizyon geçmişi dahil olmak üzere tüm proje dosyalarını içerir. Başka bir yerde zaten bir depo barındırıyor musunuz? Depoyu taşıyın.
owner=Sahibi
owner_helper=Bazı organizasyonlar, en çok depo sayısı sınırı nedeniyle açılır menüde görünmeyebilir.
repo_name=Depo İsmi
repo_name_helper=İyi bir depo ismi kısa, akılda kalıcı ve özgün anahtar kelimelerden oluşur.
repo_size=Depo Boyutu
template=Şablon
-template_select=Bir şablon seçin.
+template_select=Bir şablon seçin
template_helper=Depoyu şablon yap
template_description=Şablon depoları, kullanıcıların aynı dizin yapısı, dosyaları ve isteğe bağlı ayarlarla yeni depoları oluşturmasına izin verir.
visibility=Görünürlük
@@ -1048,17 +1048,17 @@ generate_from=Şuradan Oluştur
repo_desc=Açıklama
repo_desc_helper=Kısa açıklama girin (isteğe bağlı)
repo_lang=Dil
-repo_gitignore_helper=.gitignore şablonlarını seç.
+repo_gitignore_helper=.gitignore şablonlarınızı seçin
repo_gitignore_helper_desc=Sık kullanılan diller için bir şablon listesinden hangi dosyaların izlenmeyeceğini seçin. Her dilin oluşturma araçları tarafından oluşturulan tipik yapılar, varsayılan olarak .gitignore dosyasına dahil edilmiştir.
-issue_labels=Konu Etiketleri
-issue_labels_helper=Bir konu etiket seti seçin.
+issue_labels=Etiketler
+issue_labels_helper=Bir etiket seti seçin
license=Lisans
-license_helper=Bir lisans dosyası seçin.
-license_helper_desc=Bir lisans, başkalarının kodunuzla neler yapıp yapamayacağını yönetir. Projeniz için hangisinin doğru olduğundan emin değil misiniz? Lisans seçme konusuna bakın
+license_helper=Bir lisans dosyası seçin
+license_helper_desc=Bir lisans, başkalarının kodunuzla neleri yapabileceğini ve neleri yapamayacağını belirler. Projeniz için hangisinin uygun olduğundan emin değil misiniz? Bir lisans seç 'e bakın.
readme=README
-readme_helper=Bir README dosyası şablonu seçin.
+readme_helper=Bir README dosyası şablonu seçin
readme_helper_desc=Projeniz için eksiksiz bir açıklama yazabileceğiniz yer burasıdır.
-auto_init=Depoyu başlat (.gitignore, Lisans ve README dosyalarını ekler)
+auto_init=Depoyu başlat
create_repo=Depo Oluştur
default_branch=Varsayılan Dal
default_branch_label=varsayılan
@@ -1103,7 +1103,7 @@ author_search_tooltip=En fazla 30 kullanıcı görüntüler
tree_path_not_found.commit=%[1]s yolu, %[2]s işlemesinde mevcut değil
tree_path_not_found.branch=%[1]s yolu, %[2]s dalında mevcut değil
-tree_path_not_found.tag=%[1]s yolu, %[2]s etiketinde mevcut değil
+tree_path_not_found.tag=%[1]s yolu, %[2]s anahtar kelimesinde (tag'inde) mevcut değil
transfer.accept=Aktarımı kabul Et
transfer.accept_desc=`"%s" tarafına aktar`
@@ -1129,8 +1129,8 @@ template.issue_labels=Sorun etiketleri
template.one_item=En az bir şablon öğesi seçmelisiniz
template.invalid=Bir şablon deposu seçmelisiniz
-archive.title=Bu depo arşivlendi. Dosyaları görüntüleyip klonlayabilirsiniz ancak katkılar gönderemez, yeni sorun ve birleştirme isteği oluşturamaz veya yorum yapamazsınız yani durumunu değiştiremezsiniz.
-archive.title_date=Bu depo %s tarihinde arşivlendi. Dosyaları görüntüleyip klonlayabilirsiniz ancak katkılar gönderemez, yeni sorun ve birleştirme isteği oluşturamaz veya yorum yapamazsınız yani durumunu değiştiremezsiniz.
+archive.title=Bu depo arşivlenmiştir. Dosyaları görüntüleyebilir ve depoyu klonlayabilirsiniz, ancak yeni sorunlar, çekme istekleri veya yorumlar oluşturmak ya da itme (push) işlemi gibi durumlarda herhangi bir değişiklik yapamazsınız.
+archive.title_date=Bu depo %s tarihinde arşivlenmiştir. Dosyaları görüntüleyebilir ve depoyu klonlayabilirsiniz, ancak itme (push) işlemi yapmak, yeni sorunlar, çekme istekleri veya yorumlar oluşturmak gibi herhangi bir değişiklik yapamazsınız.
form.reach_limit_of_creation_1=Zaten %d depo limitinize ulaştınız.
form.reach_limit_of_creation_n=Zaten %d depo limitinize ulaştınız.
form.name_reserved=Depo adı "%s" rezerve edilmiş.
@@ -1158,7 +1158,7 @@ migrate.migrate_items_options=Ek öğeleri taşımak için Erişim Kodu gereklid
migrated_from=%[2]s konumundan göç edildi
migrated_from_fake=%[1]s Konumundan Göç Edildi
migrate.migrate=%s Konumundan Göç Et
-migrate.migrating=%s konumundan taşınıyor ...
+migrate.migrating=%s adresinden taşınıyor …
migrate.migrating_failed=%s konumundan taşıma başarısız oldu.
migrate.migrating_failed.error=Göç yapılamadı: %s
migrate.migrating_failed_no_addr=Göç başarısız oldu.
@@ -1230,8 +1230,8 @@ escape_control_characters=Kaçış Karakterli
unescape_control_characters=Kaçış Karaktersiz
file_copy_permalink=Kalıcı Bağlantıyı Kopyala
view_git_blame=Git Suç Görüntüle
-video_not_supported_in_browser=Tarayıcınız HTML5 'video' etiketini desteklemiyor.
-audio_not_supported_in_browser=Tarayıcınız HTML5 'audio' etiketini desteklemiyor.
+video_not_supported_in_browser=Tarayıcınız HTML5 "video" anahtar kelimesini (tag'ini) desteklemiyor.
+audio_not_supported_in_browser=Tarayıcınız HTML5 "audio" anahtar kelimesini (tag'ini) desteklemiyor.
stored_lfs=Git LFS ile depolandı
symbolic_link=Sembolik Bağlantı
executable_file=Çalıştırılabilir Dosya
@@ -1421,7 +1421,7 @@ issues.choose.blank_about=Varsayılan şablondan bir konu oluşturun.
issues.choose.ignore_invalid_templates=Geçersiz şablonlar göz ardı edildi
issues.choose.invalid_templates=%v geçersiz şablon bulundu
issues.choose.invalid_config=Konu yapılandırması hatalar içeriyor:
-issues.no_ref=Bölüm/Etiket Belirtilmedi
+issues.no_ref=Dal/Anahtar kelime (tag) belirtilmedi
issues.create=Konu Oluştur
issues.new_label=Yeni Etiket
issues.new_label_placeholder=Etiket adı
@@ -1533,7 +1533,7 @@ issues.reopened_at=%s sorununu yeniden açtı
issues.commit_ref_at=`%s işlemesinde bu konuyu işaret etti`
issues.ref_issue_from=`bu konuya referansta bulundu %[3]s %[1]s`
issues.ref_pull_from=`bu değişiklik isteğine referansta bulundu %[3]s %[1]s`
-issues.ref_closing_from=`bir değişiklik isteğine referansta bulundu %[3]s bu konu kapatılacak %[1]s`
+issues.ref_closing_from=`Bu sorunu, onu kapatacak olan %[3]s çekme isteğinden referans almıştır, %[1]s`
issues.ref_reopening_from=`bir değişiklik isteğine referansta bulundu %[3]s bu konu yeniden açılacak %[1]s`
issues.ref_from=`%[1]s'den`
issues.author=Yazar
@@ -1603,8 +1603,8 @@ issues.lock.notice_3=- Her zaman bu konunun kilidini açabilirsiniz.
issues.unlock.notice_1=- Herkes bu konuda bir kez daha yorum yapabilir.
issues.unlock.notice_2=- İlerde her zaman bu konuyu kilitleyebilirsiniz.
issues.lock.reason=Kilitleme nedeni
-issues.lock.title=Konuşmayı kilitle.
-issues.unlock.title=Konuşmanın kilidini aç.
+issues.lock.title=Yazışmayı kilitle
+issues.unlock.title=Yazışmanın kilidini aç
issues.comment_on_locked=Kilitli bir konuya yorum yapamazsınız.
issues.delete=Sil
issues.delete.title=Bu konu silinsin mi?
@@ -2074,7 +2074,7 @@ settings.admin_settings=Yönetici Ayarları
settings.admin_enable_health_check=Depo Sağlık Kontrollerini Etkinleştir (git fsck)
settings.admin_code_indexer=Kod Dizinleyici
settings.admin_stats_indexer=Kod İstatistiği Dizinleyici
-settings.admin_indexer_commit_sha=Son Dizinlenen SHA
+settings.admin_indexer_commit_sha=En son dizinlenen(indekslenen) değişiklik(commit)
settings.admin_indexer_unindexed=Dizinlenmemiş
settings.reindex_button=Yeniden Dizinleme Kuyruğuna Ekle
settings.reindex_requested=Yeniden Dizinleme İstendi
@@ -2296,26 +2296,26 @@ settings.protect_enable_merge_desc=Yazma erişimi olan herhangi bir kimse, deği
settings.protect_whitelist_committers=Beyaz Liste Kısıtlı Gönderme
settings.protect_whitelist_committers_desc=Sadece beyaz listeye alınmış kullanıcıların veya takımların bu dala göndermesine izin verilir (ancak zorla gönderim yapmayın).
settings.protect_whitelist_deploy_keys=Beyaz liste göndermek için yazma erişimi olan anahtarları dağıtır.
-settings.protect_whitelist_users=İtme için beyaz listedeki kullanıcılar:
-settings.protect_whitelist_teams=İtme için beyaz listedeki takımlar:
+settings.protect_whitelist_users=İtme işlemi için beyaz listeye alınmış kullanıcılar
+settings.protect_whitelist_teams=İtme işlemi için beyaz listeye alınmış takımlar
settings.protect_merge_whitelist_committers=Birleştirme Beyaz Listesini Etkinleştir
settings.protect_merge_whitelist_committers_desc=Yalnızca beyaz listedeki kullanıcıların veya takımların bu daldaki değişiklik isteklerini birleştirmesine izin verin.
-settings.protect_merge_whitelist_users=Birleştirme için beyaz listedeki kullanıcılar:
-settings.protect_merge_whitelist_teams=Birleştirme için beyaz listedeki takımlar:
+settings.protect_merge_whitelist_users=Birleştirme işlemi için beyaz listeye alınmış kullanıcılar
+settings.protect_merge_whitelist_teams=Birleştirme işlemi için beyaz listeye alınmış takımlar
settings.protect_check_status_contexts=Durum Denetimini Etkinleştir
-settings.protect_status_check_patterns=Durum denetleme desenleri:
+settings.protect_status_check_patterns=Durum kontrol şemaları
settings.protect_status_check_patterns_desc=Bu kurala uyan dala diğer dallar birleştirilmeden önce başarılı olması gereken durum denetlemelerini belirten desenleri girin. Her bir satır bir desen tanımlıyor. Desenler boş olamaz.
settings.protect_check_status_contexts_desc=Birleştirmeden önce durum denetimlerinin geçmesini zorunlu kılın. Dalların bu kurala uyan bir dalda birleştirilebilmesi için hangi durum denetimlerinin geçmesi gerektiğini seçin. Etkinleştirildiğinde, işlemeler önce başka bir dala gönderilmeli, ardından durum denetimleri geçtikten sonra bu kuralla eşleşen bir dala birleştirilmeli veya doğrudan gönderilmelidir. Hiçbir bağlam seçilmezse, bağlamdan bağımsız olarak son işleme başarılı olmalıdır.
settings.protect_check_status_contexts_list=Bu depo için geçen haftadaki durum denetimleri
settings.protect_status_check_matched=Eşleşen
settings.protect_invalid_status_check_pattern=Hatalı durum denetleme deseni: "%s".
settings.protect_no_valid_status_check_patterns=Geçerli durum denetleme deseni yok.
-settings.protect_required_approvals=Gerekli onaylar:
+settings.protect_required_approvals=Gerekli onaylar
settings.protect_required_approvals_desc=Değişiklik isteğini yalnızca yeterince olumlu yorumla birleştirmeye izin ver.
settings.protect_approvals_whitelist_enabled=Onayları beyaz listeye giren kullanıcılar veya takımlar için kısıtla
settings.protect_approvals_whitelist_enabled_desc=Yalnızca beyaz listedeki kullanıcıların veya takımların incelemeleri gerekli onaylar için dikkate alınır. Onaylı beyaz liste olmadan, yazma erişimi olan herkesin incelemeleri gerekli onaylar için dikkate alınır.
-settings.protect_approvals_whitelist_users=Beyaz listedeki incelemeciler:
-settings.protect_approvals_whitelist_teams=Gözden geçirme için beyaz listedeki takımlar:
+settings.protect_approvals_whitelist_users=Beyaz listeye alınmış değerlendiriciler
+settings.protect_approvals_whitelist_teams=Değerlendirme için beyaz listeye alınan ekipler
settings.dismiss_stale_approvals=Eski onayları reddet
settings.dismiss_stale_approvals_desc=Değişiklik isteğinin içeriğini değiştiren yeni işlemeler dala itildiğinde, eski onaylar reddedilir.
settings.require_signed_commits=İmzalı İşleme Gerekli
@@ -2323,9 +2323,9 @@ settings.require_signed_commits_desc=Reddetme, onlar imzasızsa veya doğrulanam
settings.protect_branch_name_pattern=Korunmuş Dal Adı Deseni
settings.protect_branch_name_pattern_desc=Korunmuş dal isim desenleri. Desen sözdizimi için belgelere bakabilirsiniz. Örnekler: main, release/**
settings.protect_patterns=Desenler
-settings.protect_protected_file_patterns=Korumalı dosya kalıpları (noktalı virgülle ayrılmış ';'):
+settings.protect_protected_file_patterns=Korumalı dosya düzenleri (noktalı virgül ";" ile ayrılmış)
settings.protect_protected_file_patterns_desc=Kullanıcının bu dalda dosya ekleme, düzenleme veya silme hakları olsa bile doğrudan değiştirilmesine izin verilmeyen korumalı dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen sözdizimi için %[2]s belgelerine bakın. Örnekler: .drone.yml, /docs/**/*.txt.
-settings.protect_unprotected_file_patterns=Korunmasız dosya desenleri (noktalı virgülle ayrılmış ';'):
+settings.protect_unprotected_file_patterns=Korunmasız dosya düzenleri (noktalı virgül ";" ile ayrılmış)
settings.protect_unprotected_file_patterns_desc=Kullanıcının yazma erişimi, itme kısıtlamasını atlama hakkı olduğunda doğrudan değiştirmesine izin verilen korunmasız dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen söz dizimi için %[2]s belgelerine bakın. Örnekler: .drone.yml, /docs/**/*.txt.
settings.update_protect_branch_success=Dal koruma kuralı "%s" güncellendi.
settings.remove_protected_branch_success=Dal koruma kuralı "%s" kaldırıldı.
@@ -2340,7 +2340,7 @@ settings.block_outdated_branch=Değişiklik isteği güncel değilse birleştirm
settings.block_outdated_branch_desc=Baş dal taban dalın arkasındayken birleştirme mümkün olmayacaktır.
settings.default_branch_desc=Değişiklik istekleri ve kod işlemeleri için varsayılan bir depo dalı seçin:
settings.merge_style_desc=Birleştirme biçemleri
-settings.default_merge_style_desc=Değişiklik istekleri için varsayılan birleştirme tarzı:
+settings.default_merge_style_desc=Varsayılan birleştirme tarzı
settings.choose_branch=Bir dal seç…
settings.no_protected_branch=Korumalı dal yok.
settings.edit_protected_branch=Düzenle
@@ -2348,15 +2348,15 @@ settings.protected_branch_required_rule_name=Gerekli kural adı
settings.protected_branch_duplicate_rule_name=Çakışan kural adı
settings.protected_branch_required_approvals_min=Gerekli onaylar negatif olamaz.
settings.tags=Etiketler
-settings.tags.protection=Etiket Koruması
-settings.tags.protection.pattern=Etiket Deseni
+settings.tags.protection=Anahtar kelime (tag) koruması
+settings.tags.protection.pattern=Anahtar kelime (tag) şablonu
settings.tags.protection.allowed=İzin Verilen
settings.tags.protection.allowed.users=İzin verilen kullanıcılar
settings.tags.protection.allowed.teams=İzin verilen takımlar
-settings.tags.protection.allowed.noone=Hiç kimse
-settings.tags.protection.create=Etiketi Koru
+settings.tags.protection.allowed.noone=Hiç kimseye
+settings.tags.protection.create=Kural ekle
settings.tags.protection.none=Korumalı etiket yok.
-settings.tags.protection.pattern.description=Birden çok etiketi eşleştirmek için tek bir ad, glob deseni veya normal ifade kullanabilirsiniz. Daha fazlası için korumalı etiketler rehberini okuyun.
+settings.tags.protection.pattern.description=Birden çok anahtar kelimeyi (tag'leri) eşleştirmek için tek bir ad, glob şablonu veya normal ifade kullanabilirsiniz. Daha fazlası için korunan anahtar kelimeler (tag'ler) rehberini okuyun.
settings.bot_token=Bot Jetonu
settings.chat_id=Sohbet Kimliği
settings.thread_id=İş Parçacığı ID
@@ -2370,7 +2370,7 @@ settings.archive.success=Depo başarıyla arşivlendi.
settings.archive.error=Depoyu arşivlemeye çalışırken bir hata oluştu. Daha fazla ayrıntı için günlüğe bakın.
settings.archive.error_ismirror=Yansılanmış bir depoyu arşivleyemezsiniz.
settings.archive.branchsettings_unavailable=Depo arşivlenirse dal ayarları kullanılamaz.
-settings.archive.tagsettings_unavailable=Depo arşivlenmişse etiket ayarları kullanılamaz.
+settings.archive.tagsettings_unavailable=Arşivlenmiş depolarda anahtar kelime (tag) ayarları kullanılamaz.
settings.unarchive.button=Depoyu Arşivden Çıkar
settings.unarchive.header=Bu Depoyu Arşivden Çıkar
settings.unarchive.text=Depoyu arşivden çıkarmak, yeni sorunların ve değişiklik isteklerinin yanı sıra işleme ve itme yeteneğini de geri kazandıracaktır.
@@ -2391,12 +2391,12 @@ settings.lfs_invalid_locking_path=Geçersiz yol: %s
settings.lfs_invalid_lock_directory=Dizin kilitlenemiyor: %s
settings.lfs_lock_already_exists=Kilit zaten var: %s
settings.lfs_lock=Kilitle
-settings.lfs_lock_path=Kilitlenecek dosya yolu...
+settings.lfs_lock_path=Kilitlenecek dosya yolu…
settings.lfs_locks_no_locks=Kilit yok
settings.lfs_lock_file_no_exist=Kilitli dosya varsayılan dalda mevcut değil
settings.lfs_force_unlock=Kilidi Açmaya Zorla
settings.lfs_pointers.found=Bulunan %d blob işaretçi(leri) - %d ilişkili, %d ilişkilendirilmemiş (%d mağazadan eksik)
-settings.lfs_pointers.sha=Blob SHA
+settings.lfs_pointers.sha=Blob hash'i
settings.lfs_pointers.oid=OID
settings.lfs_pointers.inRepo=Depoda
settings.lfs_pointers.exists=Mağazada var
@@ -2494,7 +2494,7 @@ release.publish=Sürümü Yayınla
release.save_draft=Taslağı Kaydet
release.edit_release=Sürümü Güncelle
release.delete_release=Sürümü Sil
-release.delete_tag=Etiketi Sil
+release.delete_tag=Anahtar kelimeyi (tag'i) sil
release.deletion=Sürümü Sil
release.deletion_desc=Bir sürümü silmek onu sadece Forgejo'dan kaldırır. Git etiketini, deponuzun içeriğini veya geçmişini etkilemez. Devam edilsin mi?
release.deletion_success=Sürüm silindi.
@@ -2506,7 +2506,7 @@ release.tag_name_protected=Etiket ismi korumalıdır.
release.tag_already_exist=Bu etiket adı zaten var.
release.downloads=İndirmeler
release.add_tag_msg=Sürümün başlığını ve içeriğini etiket mesajı olarak kullanın.
-release.add_tag=Yalnızca Etiket Oluştur
+release.add_tag=Anahtar kelime (tag) oluştur
release.releases_for=%s sürümleri
release.tags_for=%s etiketleri
@@ -2538,23 +2538,23 @@ branch.included=Dahil
branch.create_new_branch=Şu daldan dal oluştur:
branch.confirm_create_branch=Dal oluştur
branch.warning_rename_default_branch=Varsayılan dalın adını değiştiriyorsunuz.
-branch.rename_branch_to=`"%s" adını şuna değiştir:`
+branch.rename_branch_to="%s" dalının adı değiştiriliyor.
branch.create_branch_operation=Dal oluştur
branch.new_branch=Yeni dal oluştur
branch.new_branch_from=`"%s" dalından yeni dal oluştur`
branch.renamed=%s dalının adı %s olarak değiştirildi.
-tag.create_tag=%s etiketi oluştur
+tag.create_tag=%s anahtar kelimesi (tag'i) oluştur
tag.create_tag_operation=Etiket oluştur
tag.confirm_create_tag=Etiket oluştur
tag.create_tag_from=`"%s" kullanarak yeni etiket oluştur`
tag.create_success=`"%s" etiketi oluşturuldu.`
-topic.manage_topics=Konuları Yönet
+topic.manage_topics=Konu başlıklarını (topic'leri) Yönet
topic.done=Bitti
topic.count_prompt=25'ten fazla konu seçemezsiniz
-topic.format_prompt=Konular bir harf veya rakamla başlamalı, kısa çizgi ('-') ve nokta ('.') içerebilir ve en fazla 35 karakter uzunluğunda olabilir. Harfler küçük harf olmalıdır.
+topic.format_prompt=Konu başlıkları (topic'ler) bir harf veya rakamla başlamalı, kısa çizgi karakterleri ("-") ve nokta karakterleri (".") içerebilir ve en fazla 35 karakter uzunluğunda olabilir. Harfler küçük harf olmalıdır.
find_file.go_to_file=Dosyaya git
find_file.no_matching=Eşleşen dosya bulunamadı
@@ -2595,7 +2595,7 @@ editor.push_out_of_date = İtme eskimiş.
commits.search_branch = Bu Dal
issues.edit.already_changed = Konuya yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın
pulls.edit.already_changed = Değişiklik isteğine yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın
-pulls.nothing_to_compare_have_tag = Seçili dal/etiket aynı.
+pulls.nothing_to_compare_have_tag = Seçili dallar/anahtar kelimeler aynıdır.
pulls.fast_forward_only_merge_pull_request = Sadece ileri sarma
comments.edit.already_changed = Yoruma yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın
milestones.filter_sort.name = Ad
@@ -2664,9 +2664,10 @@ issues.author.tooltip.pr = Bu kullanıcı, bu birleştirme isteğinin sahibi.
issues.archived_label_description = (Arşivlenmiş) %s
issues.review.add_review_requests = %[2]s, %[1]s tarafından incelenmesi talep etti
issues.review.remove_review_requests = %[2]s, %[1]s tarafından incelenme talebini kaldırdı
+activity.published_tag_label = Anahtar kelime (tag)
[graphs]
-component_loading = %s yükleniyor...
+component_loading = %s yükleniyor…
component_loading_failed = %s yüklenemedi
component_loading_info = Bu biraz sürebilir…
component_failed_to_load = Beklenmedik bir hata oluştu.
@@ -2809,76 +2810,14 @@ last_page=Son
total=Toplam: %d
settings=Yönetici Ayarları
-dashboard.new_version_hint=Forgejo %s şimdi hazır, %s çalıştırıyorsunuz. Ayrıntılar için blog'a bakabilirsiniz.
-dashboard.statistic=Özet
-dashboard.operations=Bakım İşlemleri
-dashboard.system_status=Sistem Durumu
-dashboard.operation_name=İşlem Adı
-dashboard.operation_switch=Geç
-dashboard.operation_run=Çalıştır
dashboard.clean_unbind_oauth=Bağsız OAuth bağlantılarını temizle
dashboard.clean_unbind_oauth_success=Tüm bağsız OAuth bağlantıları silindi.
-dashboard.task.started=Görev Başlatıldı: %[1]s
-dashboard.task.process=Görev: %[1]s
-dashboard.task.cancelled=Görev: %[1]s iptal edildi: %[3]s
-dashboard.task.error=Görevde Hata: %[1]s: %[3]s
-dashboard.task.finished=Görev: %[1]s %[2]s tarafından başlatıldı ve bitti
-dashboard.task.unknown=Bilinmeyen görev: %[1]s
-dashboard.cron.started=Cron Başlatıldı: %[1]s
-dashboard.cron.process=Cron: %[1]s
-dashboard.cron.cancelled=Cron: %[1]s iptal edildi: %[3]s
-dashboard.cron.error=Cron Hatası: %s: %[3]s
-dashboard.cron.finished=Cron: %[1]s bitti
dashboard.delete_inactive_accounts=Etkinleştirilmemiş tüm hesapları sil
-dashboard.delete_inactive_accounts.started=Etkinleştirilmemiş tüm hesapları silme görevi başladı.
dashboard.delete_repo_archives=Tüm depoların arşivlerini (ZIP, TAR.GZ, vb.) sil
-dashboard.delete_repo_archives.started=Tüm depo arşivlerini silme görevi başladı.
dashboard.delete_missing_repos=Git dosyaları eksik olan tüm depoları sil
-dashboard.delete_missing_repos.started=Git dosyaları eksik olan tüm depoları silme görevi başladı.
-dashboard.delete_generated_repository_avatars=Oluşturulan depo resimlerini sil
-dashboard.sync_repo_branches=Eşzamanlama git verisinden veritabanlarına dalları kaçırdı
-dashboard.update_mirrors=Yansıları Güncelle
-dashboard.repo_health_check=Tüm depoların sağlığını denetle
-dashboard.check_repo_stats=Tüm depo istatistiklerini denetle
-dashboard.archive_cleanup=Eski depo arşivlerini sil
-dashboard.deleted_branches_cleanup=Silinen dalları temizle
-dashboard.update_migration_poster_id=Taşıma poster kimliklerini güncelle
-dashboard.git_gc_repos=Depolardaki çöpleri topla
-dashboard.resync_all_sshkeys='.ssh/authority_keys' dosyasını Forgejo SSH anahtarlarıyla güncelle.
-dashboard.resync_all_sshprincipals='.ssh/authorized_principals' dosyasını Forgejo SSH sorumlularıyla güncelleyin.
-dashboard.resync_all_hooks=Tüm depoların alma öncesi, güncelleme ve alma sonrası kancalarını yeniden senkronize edin.
-dashboard.reinit_missing_repos=Kayıtları bulunanlar için tüm eksik Git depolarını yeniden başlat
-dashboard.sync_external_users=Harici kullanıcı verisini senkronize et
-dashboard.cleanup_hook_task_table=Hook_task tablosunu temizleme
-dashboard.cleanup_packages=Süresi dolmuş paketleri temizleme
-dashboard.cleanup_actions=Eylemlerin süresi geçmiş günlük ve yapılarını temizle
dashboard.delete_old_actions=Veritabanından tüm eski eylemleri sil
-dashboard.delete_old_actions.started=Veritabanından başlatılan tüm eski eylemleri silin.
-dashboard.update_checker=Denetleyiciyi güncelle
-dashboard.delete_old_system_notices=Veritabanından tüm eski sistem bildirimlerini sil
-dashboard.gc_lfs=LFS üst nesnelerin atıklarını temizle
-dashboard.stop_zombie_tasks=Zombi görevleri durdur
-dashboard.stop_endless_tasks=Daimi görevleri durdur
-dashboard.cancel_abandoned_jobs=Terkedilmiş görevleri iptal et
-dashboard.start_schedule_tasks=Zamanlanmış görevleri başlat
-dashboard.sync_branch.started=Dal Eşzamanlaması başladı
-dashboard.rebuild_issue_indexer=Konu indeksini yeniden oluştur
-
users.user_manage_panel=Kullanıcı Hesap Yönetimi
users.new_account=Yeni Kullanıcı Hesabı
-users.name=Kullanıcı Adı
-users.full_name=Tam İsim
-users.activated=Aktifleştirilmiş
-users.admin=Yönetici
-users.restricted=Kısıtlanmış
-users.reserved=Rezerve
-users.bot=Bot
-users.remote=Uzak
-users.2fa=2FD
-users.repos=Depolar
-users.created=Oluşturuldu
-users.last_login=Son Oturum Açma
-users.never_login=Hiç Oturum Açılmadı
users.send_register_notify=Kullanıcı Kayıt Bildirimi Gönder
users.new_success=`"%s" kullanıcı hesabı oluşturuldu.`
users.edit=Düzenle
@@ -2924,35 +2863,13 @@ emails.change_email_header=E-posta Özelliklerini Güncelle
emails.change_email_text=Bu e-posta adresini güncellemek istediğinizden emin misiniz?
orgs.org_manage_panel=Organizasyon Yönetimi
-orgs.name=İsim
-orgs.teams=Takımlar
-orgs.members=Üyeler
-orgs.new_orga=Yeni Organizasyon
-
repos.repo_manage_panel=Depo Yönetimi
repos.unadopted=Kabul Edilmemiş Depolar
-repos.unadopted.no_more=Kabul edilmemiş başka depo bulunamadı
-repos.owner=Sahibi
-repos.name=İsim
+repos.unadopted.no_more=Benimsenmemiş depolar bulunamadı.
repos.private=Özel
-repos.issues=Konular
-repos.size=Boyut
-repos.lfs_size=LFS Boyutu
-
packages.package_manage_panel=Paket Yönetimi
-packages.total_size=Toplam Boyut: %s
-packages.unreferenced_size=Referanssız Boyut: %s
packages.cleanup=Süresi dolmuş veriyi temizle
packages.cleanup.success=Süresi dolmuş veri başarıyla temizlendi
-packages.owner=Sahibi
-packages.creator=Oluşturan
-packages.name=İsim
-packages.version=Sürüm
-packages.type=Tür
-packages.repository=Depo
-packages.size=Boyut
-packages.published=Yayınlandı
-
defaulthooks=Varsayılan web kancaları
defaulthooks.desc=Web Kancaları, belirli Forgejo olayları tetiklendiğinde otomatik olarak HTTP POST isteklerini sunucuya yapar. Burada tanımlanan Web kancaları varsayılandır ve tüm yeni depolara kopyalanır. web kancaları kılavuzunda daha fazla bilgi edinin.
defaulthooks.add_webhook=Varsayılan Web İstemcisi Ekle
@@ -3081,7 +2998,6 @@ config.offline_mode=Yerel Kip
config.disable_router_log=Yönlendirici Log'larını Devre Dışı Bırak
config.run_user=Şu Kullanıcı Olarak Çalıştır
config.run_mode=Çalıştırma Modu
-config.git_version=Git Sürümü
config.app_data_path=Uygulama Veri Yolu
config.repo_root_path=Depo Kök Yolu
config.lfs_root_path=LFS Kök Dizini
@@ -3089,32 +3005,11 @@ config.log_file_root_path=Günlük Dosyası Yolu
config.script_type=Betik Türü
config.reverse_auth_user=Tersine Yetkilendirme Kullanıcısı
-config.ssh_config=SSH Yapılandırması
-config.ssh_enabled=Aktif
-config.ssh_start_builtin_server=Yerleşik Sunucuyu Kullan
-config.ssh_domain=SSH Sunucusu Alan Adı
-config.ssh_port=Bağlantı Noktası
-config.ssh_listen_port=Port'u Dinle
-config.ssh_root_path=Kök Yol
-config.ssh_key_test_path=Anahtar Test Yolu
-config.ssh_keygen_path=Keygen ('ssh-keygen') Yolu
-config.ssh_minimum_key_size_check=Minimum Anahtar Uzunluğu Kontrolü
-config.ssh_minimum_key_sizes=Minimum Anahtar Uzunlukları
-
config.lfs_config=LFS Yapılandırması
config.lfs_enabled=Etkin
config.lfs_content_path=LFS İçerik Yolu
config.lfs_http_auth_expiry=LFS HTTP Yetkilendirme Süresi
-config.db_config=Veritabanı Yapılandırması
-config.db_type=Türü
-config.db_host=Sunucu
-config.db_name=İsim
-config.db_user=Kullanıcı adı
-config.db_schema=Şema
-config.db_ssl_mode=SSL
-config.db_path=Yol
-
config.service_config=Servis Yapılandırması
config.register_email_confirm=Kayıt Olmak İçin E-posta Onayı Gereksin
config.disable_register=Kullanıcı Kaydını Devre Dışı Bırak
@@ -3142,24 +3037,11 @@ config.queue_length=Kuyruk Uzunluğu
config.deliver_timeout=Dağıtım Zaman Aşımı
config.skip_tls_verify=TLS Doğrulamasını Geç
-config.mailer_config=Mailer Yapılandırması
-config.mailer_enabled=Aktif
-config.mailer_enable_helo=HELO'yu etkinleştir
-config.mailer_name=İsim
-config.mailer_protocol=Protokol
-config.mailer_smtp_addr=SMTP Adresi
-config.mailer_smtp_port=SMTP Portu
-config.mailer_user=Kullanıcı
-config.mailer_use_sendmail=Sendmail Kullan
-config.mailer_sendmail_path=Sendmail Yolu
-config.mailer_sendmail_args=Sendmail İçin İlave Değişkenler
-config.mailer_sendmail_timeout=Sendmail Zaman Aşımı
-config.mailer_use_dummy=Sahte
config.test_email_placeholder=E-posta (ör. test@example.com)
config.send_test_mail=Test E-postası Gönder
config.send_test_mail_submit=Gönder
config.test_mail_failed=`"%s" adresine deneme e-postası gönderilemedi: %v`
-config.test_mail_sent=`"%s" adresine bir deneme e-postası gönderildi.`
+config.test_mail_sent="%s" adresine bir deneme e-postası gönderildi.
config.oauth_config=OAuth Yapılandırması
config.oauth_enabled=Aktif
@@ -3184,18 +3066,6 @@ config.picture_service=Resim Servisi
config.disable_gravatar=Gravatar Hizmet Dışı
config.enable_federated_avatar=Birleştirilmiş Avatarları Etkinleştir
-config.git_config=Git Yapılandırması
-config.git_disable_diff_highlight=Değişiklik Sözdizimi Vurgusunu Devre Dışı Bırak
-config.git_max_diff_lines=Maksimum Değişiklik Satırı (tek bir dosya için)
-config.git_max_diff_line_characters=Maksimum Değişiklik Karakteri (tek bir satır için)
-config.git_max_diff_files=Maksimum Değişiklik Dosyaları (gösterilecek)
-config.git_gc_args=GC Argümanları
-config.git_migrate_timeout=Göç işlemi zaman aşımı
-config.git_mirror_timeout=Yansı Güncelleme Zaman Aşımı
-config.git_clone_timeout=Klonlama İşlemi Zaman Aşımı
-config.git_pull_timeout=Çekme İşlemi Zaman Aşımı
-config.git_gc_timeout=GC İşlemi Zaman Aşımı
-
config.log_config=Log Yapılandırması
config.logger_name_fmt=Günlükçü: %s
config.disabled_logger=Devre Dışı
@@ -3245,7 +3115,6 @@ notices.delete_success=Sistem bildirimleri silindi.
self_check = Öz Denetim
config_summary = Özet
config_settings = Ayarlar
-dashboard.sync_repo_tags = Etiketleri git verisinden veritabanına eşitle
emails.delete = E-postayı Sil
emails.delete_desc = Bu e-posta adresini silmek istediğinizden emin misiniz?
emails.deletion_success = E-posta adresi silindi.
@@ -3276,7 +3145,7 @@ auto_merge_pull_request=`%[3]s#%[2]s değişiklik isteği ot
transfer_repo=depo %s %s'a aktarıldı
push_tag=%[3]s etiketini %[4]s dalına gönderdi
delete_tag=%[2]s etiketi %[3]s deposundan silindi
-delete_branch=%[3]s deposundan %[2]s dalı silindi
+delete_branch=%[3]s 'ndan %[2]s dalı silindi
compare_branch=Karşılaştır
compare_commits=%d işlemeyi karşılaştır
compare_commits_general=İşlemeleri karşılaştır
@@ -3285,7 +3154,7 @@ mirror_sync_create=%[3]s yeni referansını, %[3]s adresindeki %[2]s referansını eşitledi ve sildi
approve_pull_request=`%[3]s#%[2]s değişiklik isteğini onayladı`
reject_pull_request=`%[3]s#%[2]s için değişiklikler önerdi`
-publish_release=`%[3]s deposu için "%[4]s" sürümü yayınlandı`
+publish_release=` %[4]s 'de, saat %[3]s'de yayınlandı`
review_dismissed=`%[3]s#%[2]s için %[4]s yorumunu reddetti`
review_dismissed_reason=Sebep:
create_branch=%[4]s deposunda %[3]s dalını oluşturdu
@@ -3406,4 +3275,7 @@ regexp_tooltip = Arama terimini düzenli ifade olarak yorumla
union = Anahtar sözcük
-[munits.data]
\ No newline at end of file
+[munits.data]
+
+[repo.permissions]
+code.write = Write: Depoya itele (push et), dallar ve anahtar kelimeler (tag'ler) oluştur.
\ No newline at end of file
diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini
index 7f713b9d87..b0c1210e02 100644
--- a/options/locale/locale_uk-UA.ini
+++ b/options/locale/locale_uk-UA.ini
@@ -542,7 +542,7 @@ CommitSummary=Підсумок коміту
CommitMessage=Повідомлення коміту
CommitChoice=Вибір коміту
TreeName=Шлях до файлу
-Content=Зміст
+Content=Bміст
require_error=` не може бути порожнім.`
alpha_dash_error=` повинен містити тільки літерно-цифрові символи, дефіс («-») та підкреслення («_»).`
@@ -1617,11 +1617,11 @@ pulls.unrelated_histories=Не вдалося об’єднати: head та bas
pulls.merge_out_of_date=Не вдалося об’єднати: base було оновлено, поки відбувалося об’єднання. Підказка: спробуйте знову.
pulls.push_rejected_summary=Повне повідомлення про відхилення
pulls.open_unmerged_pull_exists=`Ви не можете знову відкрити, оскільки вже існує запит на злиття (#%d) з такою ж інформацією про злиття і в очікуванні.`
-pulls.status_checking=Деякі перевірки ще не завершено
+pulls.status_checking=Деякі перевірки очікують виконання
pulls.status_checks_success=Усі перевірки завершено успішно
-pulls.status_checks_warning=Декілька перевірок завершилися з попередженнями
-pulls.status_checks_failure=Декілька перевірок не були успішними
-pulls.status_checks_error=Декілька перевірок завершилися з помилками
+pulls.status_checks_warning=Деякі перевірки повідомили про попередження
+pulls.status_checks_failure=Деякі перевірки завершилися невдало
+pulls.status_checks_error=Деякі перевірки повідомили про помилки
pulls.status_checks_requested=Обов’язково
pulls.status_checks_details=Подробиці
pulls.update_branch=Оновити гілку шляхом злиття
@@ -2213,7 +2213,7 @@ commit.cherry-pick-header = Висмикнути: %s
commit.cherry-pick-content = Оберіть гілку, на яку висмикнути:
pulls.expand_files = Розгорнути всі файли
pulls.collapse_files = Згорнути всі файли
-settings.packages_desc = Увімкнути реєстр пакунків репозиторію
+settings.packages_desc = Увімкнути прив’язку пакунків
issues.role.contributor_helper = У цьому репозиторії є коміти цього користувача.
contributors.contribution_type.deletions = Видалення
contributors.contribution_type.filter_label = Вид внеску:
@@ -2880,58 +2880,14 @@ first_page=Перша
last_page=Остання
total=Разом: %d
-dashboard.statistic=Підсумок
-dashboard.operations=Технічне обслуговування
-dashboard.system_status=Стан системи
-dashboard.operation_name=Назва операції
-dashboard.operation_switch=Перемкнути
-dashboard.operation_run=Запустити
dashboard.clean_unbind_oauth=Очистити список незавершених авторизацій OAuth
dashboard.clean_unbind_oauth_success=Усі незавершені зв’язки OAuth видалено.
-dashboard.task.started=Запущено завдання: %[1]s
-dashboard.task.process=Завдання: %[1]s
-dashboard.task.error=Помилка у завданні: %[1]s:%[3]s
-dashboard.task.finished=Завершилося завдання, яке запустив %[2]s: %[1]s
-dashboard.task.unknown=Невідоме завдання: %[1]s
-dashboard.cron.started=Запущено Cron: %[1]s
-dashboard.cron.process=Cron: %[1]s
-dashboard.cron.error=Помилка в Cron: %s: %[3]s
-dashboard.cron.finished=Cron: %[1]s завершено
dashboard.delete_inactive_accounts=Видалити всі неактивовані облікові записи
-dashboard.delete_inactive_accounts.started=Запущено завдання видалення всі неактивованих облікових записів.
dashboard.delete_repo_archives=Видалити всі архіви репозиторіїв (ZIP, TAR.GZ тощо)
-dashboard.delete_repo_archives.started=Запущено завдання видалення всіх архівів репозиторіїв.
dashboard.delete_missing_repos=Видалити всі записи про репозиторії з відсутніми файлами Git
-dashboard.delete_missing_repos.started=Запущено завдання видалення всіх репозиторіїв, в яких відсутні файли Git.
-dashboard.delete_generated_repository_avatars=Видалити репозиторій з згенерованими аватарами
-dashboard.update_mirrors=Оновити дзеркала
-dashboard.repo_health_check=Перевірка стану всіх репозиторіїв
-dashboard.check_repo_stats=Перевірити статистику всіх репозиторіїв
-dashboard.archive_cleanup=Видалити старі архіви репозиторіїв
-dashboard.deleted_branches_cleanup=Прибрати видалені гілки
-dashboard.update_migration_poster_id=Оновити перенесені ID авторів
-dashboard.git_gc_repos=Виконати очистку сміття для всіх репозиторіїв
-dashboard.resync_all_sshkeys=Оновити файл «.ssh/authorized_keys» з SSH-ключами Forgejo.
-dashboard.resync_all_sshprincipals=Оновити файл «.ssh/authorized_principals» з SSH-принципалами Forgejo.
-dashboard.resync_all_hooks=Пересинхронізувати Git-хуки в усіх репозиторіях (pre-receive, update, post-receive, proc-receive тощо)
-dashboard.reinit_missing_repos=Переініціалізувати всі Git-репозиторії, для яких існують записи
-dashboard.sync_external_users=Синхронізувати дані зовнішніх користувачів
-dashboard.cleanup_hook_task_table=Очистити таблицю hook_task
dashboard.delete_old_actions=Видалити всі старі активності з бази даних
-dashboard.delete_old_actions.started=Розпочато видалення всіх старих активностей з бази даних.
-
users.user_manage_panel=Керування обліковими записами
users.new_account=Створити обліковий запис
-users.name=Ім’я користувача
-users.full_name=Повне ім’я
-users.activated=Активовано
-users.admin=Адміністратор
-users.restricted=Обмежено
-users.2fa=2FA
-users.repos=Репозиторії
-users.created=Створено
-users.last_login=Останній вхід
-users.never_login=Ніколи не входив
users.send_register_notify=Повідомити про реєстрацію на електронну пошту
users.edit=Редагувати
users.auth_source=Джерело автентифікації
@@ -2941,7 +2897,7 @@ users.password_helper=Залиште пароль порожнім, щоб не
users.update_profile_success=Обліковий запис користувача оновлено.
users.edit_account=Редагувати обліковий запис
users.max_repo_creation=Максимальна кількість репозиторіїв
-users.max_repo_creation_desc=(Введіть -1, щоб використовувати глобальний ліміт за замовчуванням.)
+users.max_repo_creation_desc=(Уведіть -1, щоб використовувати глобальний ліміт за замовчуванням.)
users.is_activated=Активований обліковий запис
users.prohibit_login=Призупинений обліковий запис
users.is_admin=Обліковий запис адміністратора
@@ -2969,26 +2925,10 @@ emails.duplicate_active=Ця електронна адреса вже актив
emails.change_email_header=Оновити властивості електронної пошти
orgs.org_manage_panel=Керування організаціями
-orgs.name=Назва
-orgs.teams=Команди
-orgs.members=Учасники
-orgs.new_orga=Нова організація
-
repos.repo_manage_panel=Керування репозиторіями
repos.unadopted=Неприйняті репозиторії
repos.unadopted.no_more=Не знайдено неприйнятих репозиторіїв.
-repos.owner=Власник
-repos.name=Назва
repos.private=Приватний
-repos.issues=Задачі
-repos.size=Розмір
-
-packages.owner=Власник
-packages.name=Назва
-packages.type=Тип
-packages.repository=Репозиторій
-packages.size=Розмір
-
defaulthooks=Вебхуки за замовчуванням
defaulthooks.add_webhook=Додати вебхук за замовчуванням
defaulthooks.update_webhook=Оновити вебхук за замовчуванням
@@ -3094,39 +3034,17 @@ config.offline_mode=Локальний режим
config.disable_router_log=Вимкнути журнал роутера
config.run_user=Користувач, від якого запустити
config.run_mode=Режим виконання
-config.git_version=Версія Git
config.repo_root_path=Шлях до кореня репозиторію
config.lfs_root_path=Кореневий шлях LFS
config.log_file_root_path=Шлях до файлу журналу
config.script_type=Тип скрипту
config.reverse_auth_user=Користувач для авторизації на зворотному проксі
-config.ssh_config=Конфігурація SSH
-config.ssh_enabled=Увімкнено
-config.ssh_start_builtin_server=Використовувати вбудований сервер
-config.ssh_domain=Домен сервера SSH
-config.ssh_port=Порт
-config.ssh_listen_port=Порт, що прослуховується
-config.ssh_root_path=Шлях до кореня
-config.ssh_key_test_path=Шлях до тестового ключа
-config.ssh_keygen_path=Шлях до генератора ключів («ssh-keygen»)
-config.ssh_minimum_key_size_check=Перевірка мінімального розміру ключа
-config.ssh_minimum_key_sizes=Мінімальні розміри ключів
-
config.lfs_config=Конфігурація LFS
config.lfs_enabled=Увімкнено
config.lfs_content_path=Шлях до вмісту LFS
config.lfs_http_auth_expiry=Термін дії LFS HTTP-автентифікації
-config.db_config=Конфігурація бази даних
-config.db_type=Тип
-config.db_host=Хост
-config.db_name=Ім’я
-config.db_user=Ім’я користувача
-config.db_schema=Схема
-config.db_ssl_mode=SSL
-config.db_path=Шлях
-
config.service_config=Конфігурація сервісу
config.register_email_confirm=Вимагати підтвердити електронну пошту для реєстрації
config.disable_register=Вимкнути самостійну реєстрацію
@@ -3154,14 +3072,6 @@ config.queue_length=Довжина черги
config.deliver_timeout=Тайм-аут доставки
config.skip_tls_verify=Пропустити перевірку TLS
-config.mailer_enabled=Увімкнено
-config.mailer_name=Ім’я
-config.mailer_smtp_port=Порт SMTP
-config.mailer_user=Користувач
-config.mailer_use_sendmail=Використовувати Sendmail
-config.mailer_sendmail_path=Шлях до Sendmail
-config.mailer_sendmail_args=Додаткові аргументи для Sendmail
-config.mailer_sendmail_timeout=Тайм-аут Sendmail
config.test_email_placeholder=Адреса електронної пошти (наприклад, test@example.com)
config.send_test_mail=Надіслати тестового листа
@@ -3188,18 +3098,6 @@ config.picture_service=Сервіс зображень
config.disable_gravatar=Вимкнути Gravatar
config.enable_federated_avatar=Увімкнути федеровані аватари
-config.git_config=Конфігурація Git
-config.git_disable_diff_highlight=Вимкнути підсвітку синтаксису diff
-config.git_max_diff_lines=Максимум рядків на файл при порівнянні
-config.git_max_diff_line_characters=Максимум символів на рядок при порівнянні
-config.git_max_diff_files=Максимум файлів для показу при порівнянні
-config.git_gc_args=Аргументи збирача сміття
-config.git_migrate_timeout=Тайм-аут перенесення
-config.git_mirror_timeout=Тайм-аут оновлення дзеркала
-config.git_clone_timeout=Тайм-аут операції клонування
-config.git_pull_timeout=Тайм-аут операції отримання змін
-config.git_gc_timeout=Тайм-аут операції збирача сміття
-
config.log_config=Конфігурація журналу
config.disabled_logger=Вимкнено
config.access_log_mode=Режим журналювання доступу
@@ -3237,28 +3135,19 @@ notices.op=Оп.
notices.delete_success=Сповіщення системи видалено.
self_check = Самоперевірка
integrations = Інтеграції
-packages.total_size = Загальний розмір: %s
-packages.unreferenced_size = Розмір без посилань: %s
-packages.creator = Творець
-packages.version = Версія
packages.package_manage_panel = Керування пакунками
-packages.published = Опубліковано
notices.operations = Дії
packages.cleanup = Очистити недійсні дані
packages.cleanup.success = Недійсні дані успішно очищено
users.still_own_packages = Цей користувач досі володіє одним чи більше пакунками, спочатку видаліть ці пакунки.
users.purge_help = Примусово видалити користувача і будь-які репозиторії, організації та пакунки, якими він володіє. Всі коментарі та задачі, створені цим користувачем, також будуть видалені.
-dashboard.cleanup_packages = Очистити непридатні пакунки
monitor.last_execution_result = Результат
-repos.lfs_size = Розмір LFS
config.allow_dots_in_usernames = Дозволити використання крапки в іменах користувачів. Не впливає на облікові записи, що вже існують.
-config.mailer_enable_helo = Увімкнути HELO
users.organization_creation.description = Дозволити створення нових організацій.
users.cannot_delete_self = Ви не можете видалити себе
monitor.processes_count = %d процесів
monitor.stacktrace = Траса стека
config.send_test_mail_submit = Надіслати
-users.bot = Бот
monitor.stats = Статистика
users.new_success = Обліковий запис «%s» створено.
config_settings = Налаштування
@@ -3268,11 +3157,7 @@ config.app_slogan = Гасло екземпляра
auths.tip.gitea = Зареєструйте нову програму OAuth. Інструкцію можна знайти на %s
auths.tip.gitlab_new = Зареєструйте нову програму на %s
monitor.duration = Тривалість (с)
-users.reserved = Зарезервовано
systemhooks.desc = Вебхуки автоматично сповіщають HTTP-сервер POST-запитами, коли в Forgejo відбуваються певні події. Вказані тут вебхуки спрацьовуватимуть для всіх репозиторіїв системи, тож врахуйте всі ймовірні наслідки для швидкодії. Докладніше — в посібнику з вебхуків.
-dashboard.cleanup_actions = Очистити прострочені журнали й артефакти від Дій
-dashboard.gc_lfs = Виконати очистку сміття метаоб’єктів LFS
-dashboard.new_version_hint = Вийшла %s версія Forgejo, ви використовуєте %s. Докладніше читайте у блозі.
self_check.database_collation_case_insensitive = База даних використовує зіставлення %s, яке є нечутливим до регістру. Forgejo може працювати з ним, однак можливі рідкісні випадки, коли щось працюватиме не так, як очікувалося.
self_check.database_inconsistent_collation_columns = База даних використовує зіставлення %s, але ці стовпчики використовують невідповідні зіставлення. Це може спричинити деякі несподівані проблеми.
self_check.database_fix_mysql = Користувачі MySQL та MariaDB можуть скористатися командою «forgejo doctor convert», щоб виправити проблеми зіставлення, або виправити проблему вручну за допомогою «ALTER ... COLLATE ...» SQL.
@@ -3285,25 +3170,16 @@ config.test_mail_sent = Тестового листа надіслано «%s».
emails.deletion_success = Адресу електронної пошти видалено.
emails.delete_primary_email_error = Ви не можете видалити основну адресу електронної пошти.
emails.change_email_text = Ви впевнені, що хочете оновити цю адресу електронної пошти?
-dashboard.sync_branch.started = Розпочато синхронізацію гілок
-dashboard.sync_tag.started = Розпочато синхронізацію тегів
auths.tips.gmail_settings = Налаштування Gmail:
-dashboard.task.cancelled = Завдання: %[1]s скасовано: %[3]s
-config.mailer_protocol = Протокол
-dashboard.cron.cancelled = Cron: %[1]s скасовано: %[3]s
defaulthooks.desc = Вебхуки автоматично сповіщають HTTP-сервер POST-запитами, коли в Forgejo відбуваються певні події. Вказані тут вебхуки є типовими і будуть скопійовані до всіх нових репозиторіїв. Докладніше — в посібнику з вебхуків.
assets = Ресурси коду
auths.invalid_openIdConnectAutoDiscoveryURL = Неправильна URL-адреса автоматичного виявлення (повинна бути дійсна URL-адреса, що починається з http:// або https://)
settings = Налаштування адміністратора
-dashboard.start_schedule_tasks = Запустити заплановані завдання Дій
config.logger_name_fmt = Журнал: %s
config.set_setting_failed = Не вдалося встановити параметр %s
config.access_log_template = Шаблон журналу доступу
-dashboard.cancel_abandoned_jobs = Скасувати покинуті завдання Дій
monitor.download_diagnosis_report = Завантажити діагностичний звіт
auths.oauth2_map_group_to_team_removal = Видаляти користувачів із синхронізованих команд, якщо користувачі не належать до відповідної групи.
-config.mailer_smtp_addr = Адреса SMTP
-dashboard.update_checker = Перевірка оновлень
auths.map_group_to_team_removal = Видаляти користувачів із синхронізованих команд, якщо користувачі не належать до відповідної групи LDAP
auths.enable_ldap_groups = Увімкнути групи LDAP
auths.unable_to_initialize_openid = Не вдалося ініціалізувати постачальника OpenID Connect: %s
@@ -3312,10 +3188,8 @@ config.cache_test_slow = Перевірку кешу завершено успі
config.cache_test_succeeded = Перевірку кешу завершено успішно, відповідь отримано через %s.
config.cache_test = Перевірити кеш
config.cache_test_failed = Не вдалося перевірити кеш: %v.
-dashboard.rebuild_issue_indexer = Перебудувати індексатор задач
users.details = Дані користувача
auths.login_source_exist = Джерело автентифікації «%s» вже існує.
-dashboard.delete_old_system_notices = Видалити всі старі сповіщення системи з бази даних
users.purge = Повністю видалити користувач_ку
auths.tips.oauth2.general.tip = При реєстрації нової програми OAuth2 URL-адреса зворотного виклику/переспрямування повинна бути:
auths.attribute_avatar = Атрибут аватара
@@ -3333,13 +3207,6 @@ identity_access = Ідентифікація і доступ
users.activated.description = Завершення перевірки електронної пошти. Власник неактивованого облікового запису не зможе ввійти, допоки не підтвердить свою адресу електронної пошти.
users.block.description = Заборонити цьому користувачу користуватися цим сервісом через їх обліковий запис та заборонити вхід до їхнього облікового запису.
users.admin.description = Надати цьому користувачу доступ до всіх адміністративних функцій через інтерфейс та API.
-config.mailer_config = Налаштування пошти
-config.mailer_use_dummy = Болванка
-dashboard.sync_repo_branches = Синхронізувати відсутні гілки з даних Git в базу даних
-dashboard.sync_repo_tags = Синхронізувати теги з даних Git із базою даних
-dashboard.stop_zombie_tasks = Зупинити зомбі-завдання Дій
-dashboard.stop_endless_tasks = Зупинити нескінченні завдання Дій
-users.remote = Віддалено
users.restricted.description = Дозволити взаємодію лише з репозиторіями та організаціями, куди цього користувача додано як співавтора. Це запобігає доступу до публічних репозиторіїв на цьому екземплярі.
auths.verify_group_membership = Перевірити членство у групі в LDAP (залиште фільтр порожнім, щоб пропустити)
auths.oauth2_scopes = Додаткові області
@@ -3350,7 +3217,7 @@ config.open_with_editor_app_help = Редактори «Відкрити в» д
[action]
create_repo=створює репозиторій %s
rename_repo=перейменовує репозиторій з %[1]s на %[3]s
-commit_repo=надслає зміни (push) до %[3]s в %[4]s
+commit_repo=надсилає зміни (push) до %[3]s в %[4]s
create_issue=`відкриває задачу %[3]s#%[2]s`
close_issue=`закриває задачу %[3]s#%[2]s`
reopen_issue=`повторно відкриває задачу %[3]s#%[2]s`
@@ -3504,7 +3371,7 @@ runner_kind = Шукати ранери…
test = Це тестовий текст. Він не відображається в інтерфейсі користувача Forgejo, а використовується з метою тестування
[repo.permissions]
-packages.read = Читання: дивитись та завантажити пакунки, призначені до репозиторію.
+packages.read = Читання: дивитись і завантажувати пакунки, призначені до репозиторію.
packages.write = Запис: публікувати та видаляти пакунки, призначені до репозиторію.
releases.write = Запис: публікувати, змінювати і видаляти випуски та їхні ресурси.
pulls.read = Читання: дивитись і створювати запити на злиття.
diff --git a/options/locale/locale_vi.ini b/options/locale/locale_vi.ini
index f8f5eba9d5..d92957d907 100644
--- a/options/locale/locale_vi.ini
+++ b/options/locale/locale_vi.ini
@@ -1443,9 +1443,6 @@ code.write = Ghi: Gửi lên kho mã, tạo các nhánh và các nhãn.
[admin]
config.open_with_editor_app_help = Các trình soạn thảo "Mở bằng" cho menu nhân bản. Nếu để trống, cái mặc định sẽ được dùng. Mở rộng để xem cái mặc định.
-config.git_clone_timeout = Thời gian tối đa Thao tác Nhân bản
-dashboard.sync_repo_tags = Đồng bộ hoá các nhãn từ dữ liệu Git đến cơ sở dữ liệu
-dashboard.sync_tag.started = Đã bắt đầu đồng bộ hoá nhãn
[action]
merge_pull_request = ` đã hợp nhất yêu cầu kéo %[3]s#%[2]s`
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index 2a6686b2ec..d251a036d5 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -41,7 +41,7 @@ repository=仓库
organization=组织
mirror=镜像
new_mirror=创建镜像
-new_fork=创建派生仓库
+new_fork=创建分叉仓库
new_project=创建项目
new_project_column=创建列
admin_panel=网站管理
@@ -54,7 +54,7 @@ all=所有
sources=原创
mirrors=镜像
collaborative=协作
-forks=派生
+forks=分叉
activities=最近活动
pull_requests=合并请求
@@ -127,8 +127,8 @@ filter = 筛选
filter.clear = 清除条件
filter.is_archived = 已存档
filter.not_archived = 未存档
-filter.is_fork = 是派生
-filter.not_fork = 不是派生
+filter.is_fork = 是分叉
+filter.not_fork = 不是分叉
filter.is_mirror = 是镜像
filter.not_mirror = 不是镜像
filter.is_template = 是模板
@@ -361,7 +361,7 @@ organizations=组织
go_to=转到
code=代码
code_last_indexed_at=最后索引于%s
-relevant_repositories_tooltip=派生的、缺少主题、图标和描述的仓库已被隐藏。
+relevant_repositories_tooltip=分叉的、缺少主题、图标和描述的仓库已被隐藏。
relevant_repositories=只显示相关的仓库,显示未过滤结果。
[auth]
@@ -787,7 +787,7 @@ ssh_desc=这些SSH公钥已经关联到你的账号。相应的私钥拥有完
principal_desc=这些已关联到你的账号的SSH证书主体将有你的所有仓库的完全访问权。
gpg_desc=这些GPG公钥已经关联到你的账号,并用于验证您的提交。请妥善保管你的私钥,因为这些私钥可以以你的身份签名提交。
ssh_helper=需要帮助?请查看如何生成SSH密钥或常见SSH问题寻找答案。
-gpg_helper=需要帮助吗?建议看一看GitHub 关于GPG的指南。
+gpg_helper=需要帮助吗?建议看一看关于GPG的指南。
key_content_ssh_placeholder=以“ssh-ed25519”、“ssh-rsa”、“ecdsa-sha2-nistp256”、“ecdsa-sha2-nistp384”、“ecdsa-sha2-nistp521”、“sk-ecdsa-sha2-nistp256@openssh.com”或“sk-ssh-ed25519@openssh.com”开头
key_content_gpg_placeholder=以“-----BEGIN PGP PUBLIC KEY BLOCK-----”开头
add_new_principal=添加规则
@@ -1026,16 +1026,16 @@ visibility=可见性
visibility_description=只有组织所有人或拥有权利的组织成员才能看到。
visibility_helper=将仓库设为私有
visibility_helper_forced=站点管理员强制要求新仓库为私有。
-visibility_fork_helper=(修改该值将会影响到所有派生仓库)
+visibility_fork_helper=(修改该值将会影响到所有分叉仓库)
clone_helper=不知道如何克隆?查看帮助。
-fork_repo=派生仓库
-fork_from=派生自
-already_forked=你已经派生过%s
-fork_to_different_account=派生到其他账号
-fork_visibility_helper=无法更改派生仓库的可见性。
-fork_branch=要复制到派生的分支
+fork_repo=分叉仓库
+fork_from=分叉自
+already_forked=你已经分叉过%s
+fork_to_different_account=分叉到其他账号
+fork_visibility_helper=无法更改分叉仓库的可见性。
+fork_branch=要复制到分叉的分支
all_branches=所有分支
-fork_no_valid_owners=这个代码仓库无法被派生,因为没有有效的所有者。
+fork_no_valid_owners=这个代码仓库无法被分叉,因为没有有效的所有者。
use_template=使用此模板
download_zip=下载ZIP
download_tar=下载TAR.GZ
@@ -1083,7 +1083,7 @@ mirror_password_help=更改用户名以删除已储存的密码。
watchers=关注者
stargazers=称赞者
stars_remove_warning=这将清除此仓库的所有点赞数。
-forks=派生仓库
+forks=分叉
reactions_more=再加载 %d
unit_disabled=站点管理员已禁用此仓库单元。
language_other=其它
@@ -1163,17 +1163,17 @@ migrate.migrating_failed=从%s迁移失败。
migrate.migrating_failed.error=迁移失败:%s
migrate.migrating_failed_no_addr=迁移失败。
mirror_from=镜像自地址
-forked_from=派生自
+forked_from=分叉自
generated_from=生成自
-fork_from_self=无法派生您拥有的仓库。
-fork_guest_user=请先登录再派生此仓库。
+fork_from_self=无法分叉您拥有的仓库。
+fork_guest_user=请先登录再分叉此仓库。
watch_guest_user=请登录后再关注此仓库。
star_guest_user=请登录后再点赞此仓库。
unwatch=取消关注
watch=关注
unstar=取消点赞
star=点赞
-fork=派生
+fork=分叉
download_archive=下载此仓库
more_operations=更多操作
@@ -1210,7 +1210,7 @@ release=版本发布
releases=版本发布
tag=Git标签
released_this=发布
-file.title=%s位于%s
+file.title=%s(%s)
file_raw=原始文件
file_history=历史
file_view_source=源码模式
@@ -1262,7 +1262,7 @@ editor.cannot_edit_non_text_files=网页不能编辑二进制文件。
editor.edit_this_file=编辑文件
editor.this_file_locked=文件已锁定
editor.must_be_on_a_branch=您必须在某个分支上才能对此文件进行修改操作。
-editor.fork_before_edit=您必须先派生这个仓库才能对此文件进行修改操作。
+editor.fork_before_edit=您必须先分叉这个仓库才能对此文件进行修改操作。
editor.delete_this_file=删除文件
editor.must_have_write_access=您必须具有写权限才能对此文件进行修改操作。
editor.file_delete_success=文件%s已被删除。
@@ -1398,23 +1398,23 @@ issues.filter_reviewers=筛选评审员
issues.new=创建议题
issues.new.title_empty=标题不能为空
issues.new.labels=标签
-issues.new.no_label=暂无标签
+issues.new.no_label=无
issues.new.clear_labels=清除选中的标签
issues.new.projects=项目
issues.new.clear_projects=清除选中的项目
-issues.new.no_projects=暂无项目
+issues.new.no_projects=无
issues.new.open_projects=开放中的项目
issues.new.closed_projects=已关闭的项目
issues.new.no_items=无可选项
issues.new.milestone=里程碑
-issues.new.no_milestone=暂无里程碑
+issues.new.no_milestone=无
issues.new.clear_milestone=清除选中的里程碑
issues.new.open_milestone=开放中的里程碑
issues.new.closed_milestone=已关闭的里程碑
issues.new.assignees=指派成员
issues.new.clear_assignees=取消指派成员
-issues.new.no_assignees=未指派成员
-issues.new.no_reviewers=暂无评审员
+issues.new.no_assignees=无
+issues.new.no_reviewers=无
issues.choose.get_started=开始
issues.choose.open_external_link=开启
issues.choose.blank=默认模板
@@ -1490,8 +1490,8 @@ issues.filter_sort.nearduedate=到期日从近到远
issues.filter_sort.farduedate=到期日从远到近
issues.filter_sort.moststars=点赞由多到少
issues.filter_sort.feweststars=点赞由少到多
-issues.filter_sort.mostforks=派生由多到少
-issues.filter_sort.fewestforks=派生由少到多
+issues.filter_sort.mostforks=分叉由多到少
+issues.filter_sort.fewestforks=分叉由少到多
issues.action_open=开放
issues.action_close=关闭
issues.action_label=标签
@@ -1534,7 +1534,7 @@ issues.reopened_at=重新打开了此议题 %s
issues.commit_ref_at=从提交中引用了此议题 %s
issues.ref_issue_from=引用了此议题%[3]s %[1]s
issues.ref_pull_from=引用了此合并请求%[3]s %[1]s
-issues.ref_closing_from=a href="%[2]s">从合并请求%[3]s引用了此议题,该合并请求会关闭此议题 %[1]s
+issues.ref_closing_from=从合并请求%[3]s引用了此议题,该合并请求会关闭此议题 %[1]s
issues.ref_reopening_from=从合并请求%[3]s引用了此议题,该合并请求会重新打开此议题 %[1]s
issues.ref_from=来自%[1]s
issues.author=作者
@@ -1761,7 +1761,7 @@ pulls.cannot_merge_work_in_progress=此合并请求被标记为正在进行的
pulls.still_in_progress=仍在进行中?
pulls.add_prefix=添加%s前缀
pulls.remove_prefix=删除%s前缀
-pulls.data_broken=此合并请求因为派生仓库信息缺失而中断。
+pulls.data_broken=此合并请求因为分叉仓库信息缺失而中断。
pulls.files_conflicted=有更改与目标分支冲突。
pulls.is_checking=正在进行合并冲突检测,请稍后再试。
pulls.is_ancestor=此分支已经包含在目标分支中,没有更改可以合并。
@@ -2074,7 +2074,7 @@ settings.pulls.allow_rebase_update=允许通过变基更新拉取请求分支
settings.pulls.default_delete_branch_after_merge=默认合并后删除合并请求分支
settings.pulls.default_allow_edits_from_maintainers=默认开启允许维护者编辑
settings.releases_desc=启用版本发布
-settings.packages_desc=启用仓库软件包注册中心
+settings.packages_desc=允许链接软件包
settings.projects_desc=启用仓库项目
settings.actions_desc=使用Forgejo Actions启用集成CI/CD管道
settings.admin_settings=管理员设置
@@ -2095,9 +2095,9 @@ settings.convert_confirm=转换仓库
settings.convert_succeed=此镜像仓库已经转换为普通仓库。
settings.convert_fork=转换为普通仓库
settings.convert_fork_desc=您可以将该镜像仓库转换为普通仓库,但此操作不可逆。
-settings.convert_fork_notices_1=该操作会将派生仓库转换为普通仓库,但该操作不可逆。
+settings.convert_fork_notices_1=该操作会将分叉仓库转换为普通仓库,但该操作不可逆。
settings.convert_fork_confirm=转换仓库
-settings.convert_fork_succeed=此派生仓库已经转换为普通仓库。
+settings.convert_fork_succeed=此分叉仓库已经转换为普通仓库。
settings.transfer.title=转让仓库所有权
settings.transfer.rejected=代码库转移被拒绝。
settings.transfer.success=代码库转移成功。
@@ -2135,7 +2135,7 @@ settings.delete=删除本仓库
settings.delete_desc=删除仓库是永久的,无法撤消。
settings.delete_notices_1=-此操作不可被回滚。
settings.delete_notices_2=-此操作将永久删除仓库%s,包括Git数据、议题、评论、百科和协作者的操作权限。
-settings.delete_notices_fork_1=-在此仓库删除后,它的派生仓库将变成独立仓库。
+settings.delete_notices_fork_1=-在此仓库删除后,它的分叉仓库将变成独立仓库。
settings.deletion_success=仓库已被删除。
settings.update_settings_success=仓库设置已更新。
settings.update_settings_no_unit=该代码库应该至少允许某种形式的交互。
@@ -2200,8 +2200,8 @@ settings.event_create=创建
settings.event_create_desc=创建分支或标签。
settings.event_delete=删除
settings.event_delete_desc=分支或标签已删除。
-settings.event_fork=派生
-settings.event_fork_desc=仓库被派生。
+settings.event_fork=分叉
+settings.event_fork_desc=仓库被分叉。
settings.event_wiki=百科
settings.event_wiki_desc=创建、重命名、编辑或删除了百科页面。
settings.event_release=版本发布
@@ -2374,7 +2374,7 @@ settings.matrix.room_id=房间ID
settings.matrix.message_type=消息类型
settings.archive.button=存档仓库
settings.archive.header=存档此仓库
-settings.archive.text=存档后,仓库将变为完全只读并从首页隐藏。没有人能够推送新的提交(你也不能!)、打开议题及合并请求。建议记录存档的原因,以便引导未来计划从派生本仓库的开发者。
+settings.archive.text=存档后,仓库将变为完全只读并从首页隐藏。没有人能够推送新的提交(你也不能!)、打开议题及合并请求。建议记录存档的原因,以便引导未来计划从分叉本仓库的开发者。
settings.archive.success=仓库已成功存档。
settings.archive.error=仓库在存档时出现异常。请通过日志获取详细信息。
settings.archive.error_ismirror=不能存档镜像仓库。
@@ -2608,7 +2608,7 @@ pulls.made_using_agit = AGit
activity.navbar.pulse = 动态
activity.navbar.code_frequency = 代码频率
activity.navbar.recent_commits = 近期提交
-pulls.agit_explanation = 该合并请求是用AGit工作流创建的。使用AGit,贡献者无需派生或创建分支就可以直接通过 “git push” 提出更改代码。
+pulls.agit_explanation = 该合并请求是用AGit工作流创建的。使用AGit,贡献者无需分叉或创建分支就可以直接通过 “git push” 提出更改代码。
commits.search_branch = 此分支
open_with_editor = 使用%s打开
settings.rename_branch_failed_protected = 无法重命名受保护的分支%s。
@@ -2883,78 +2883,14 @@ last_page=末页
total=总计:%d
settings=管理设置
-dashboard.new_version_hint=Forgejo %s现已可用,您正在运行%s。查看博客了解详情。
-dashboard.statistic=摘要
-dashboard.operations=维护操作
-dashboard.system_status=系统状态
-dashboard.operation_name=操作名称
-dashboard.operation_switch=开关
-dashboard.operation_run=执行
dashboard.clean_unbind_oauth=清理未绑定的OAuth连接
dashboard.clean_unbind_oauth_success=所有未绑定的OAuth连接已被删除。
-dashboard.task.started=已开始任务:%[1]s
-dashboard.task.process=任务:%[1]s
-dashboard.task.cancelled=任务:%[1]s已取消:%[3]s
-dashboard.task.error=任务中的错误:%[1]s:%[3]s
-dashboard.task.finished=任务:%[2]s启动的%[1]s已完成
-dashboard.task.unknown=未知任务:%[1]s
-dashboard.cron.started=已开始计划任务:%[1]s
-dashboard.cron.process=计划任务:%[1]s
-dashboard.cron.cancelled=定时任务:%[1]s已取消:%[3]s
-dashboard.cron.error=任务中的错误:%s:%[3]s
-dashboard.cron.finished=任务:%[1]s已经完成
dashboard.delete_inactive_accounts=删除所有未激活的帐户
-dashboard.delete_inactive_accounts.started=删除所有未激活的账户任务已启动。
dashboard.delete_repo_archives=删除所有仓库的存档(ZIP、TAR.GZ等)
-dashboard.delete_repo_archives.started=删除所有仓库存档任务已启动。
dashboard.delete_missing_repos=删除所有丢失Git文件的仓库
-dashboard.delete_missing_repos.started=删除所有丢失Git文件的仓库任务已启动。
-dashboard.delete_generated_repository_avatars=删除生成的仓库头像
-dashboard.sync_repo_branches=将缺少的分支从Git数据同步到数据库
-dashboard.sync_repo_tags = 同步Git数据中的标签至数据库
-dashboard.update_mirrors=更新镜像仓库
-dashboard.repo_health_check=对所有仓库健康检查
-dashboard.check_repo_stats=检查所有仓库统计
-dashboard.archive_cleanup=删除旧的仓库存档
-dashboard.deleted_branches_cleanup=清理已删除的分支
-dashboard.update_migration_poster_id=更新迁移的发布者ID
-dashboard.git_gc_repos=对仓库进行垃圾回收
-dashboard.resync_all_sshkeys=使用Forgejo的SSH密钥更新“.ssh/authorized_keys”文件。
-dashboard.resync_all_sshprincipals=使用Forgejo的SSH规则更新“.ssh/authorized_principals”文件。
-dashboard.resync_all_hooks=重新同步所有仓库的Git钩子(pre-receive、update、post-receive、proc-receive等)
-dashboard.reinit_missing_repos=重新初始化所有丢失的Git仓库存在的记录
-dashboard.sync_external_users=同步外部用户数据
-dashboard.cleanup_hook_task_table=清理hook_task表
-dashboard.cleanup_packages=清理过期的软件包
-dashboard.cleanup_actions=清理过期的Actions日志和制品
dashboard.delete_old_actions=从数据库中删除所有旧操作记录
-dashboard.delete_old_actions.started=已开始从数据库中删除所有旧操作记录。
-dashboard.update_checker=更新检查器
-dashboard.delete_old_system_notices=从数据库中删除所有旧系统通知
-dashboard.gc_lfs=垃圾回收LFS元数据
-dashboard.stop_zombie_tasks=停止僵尸操作任务
-dashboard.stop_endless_tasks=停止无休止的操作任务
-dashboard.cancel_abandoned_jobs=取消放弃的操作任务
-dashboard.start_schedule_tasks=开始安排操作任务
-dashboard.sync_branch.started=分支同步已开始
-dashboard.sync_tag.started = 标签同步已开始
-dashboard.rebuild_issue_indexer=重建议题索引
-
users.user_manage_panel=管理用户帐户
users.new_account=创建新帐户
-users.name=用户名
-users.full_name=全名
-users.activated=已激活
-users.admin=管理员
-users.restricted=受限
-users.reserved=保留
-users.bot=机器人
-users.remote=远程
-users.2fa=两步验证
-users.repos=仓库数
-users.created=创建时间
-users.last_login=上次登录
-users.never_login=从未登录
users.send_register_notify=通过邮件发送注册通知
users.new_success=用户账户'%s'已被创建。
users.edit=修改
@@ -3000,35 +2936,13 @@ emails.change_email_header=更新电子邮件属性
emails.change_email_text=您确定要更新该电子邮件地址吗?
orgs.org_manage_panel=组织管理
-orgs.name=名称
-orgs.teams=团队
-orgs.members=成员
-orgs.new_orga=创建新的组织
-
repos.repo_manage_panel=仓库管理
repos.unadopted=未收录仓库
repos.unadopted.no_more=找不到更多未被收录的仓库。
-repos.owner=所有者
-repos.name=名称
repos.private=私有
-repos.issues=议题数
-repos.size=大小
-repos.lfs_size=LFS大小
-
packages.package_manage_panel=软件包管理
-packages.total_size=总大小:%s
-packages.unreferenced_size=未引用大小:%s
packages.cleanup=清理过期数据
packages.cleanup.success=清理过期数据成功
-packages.owner=所有者
-packages.creator=创建者
-packages.name=名称
-packages.version=版本
-packages.type=类型
-packages.repository=仓库
-packages.size=大小
-packages.published=已发布
-
defaulthooks=默认Web钩子
defaulthooks.desc=当某些Forgejo事件触发时,Web钩子自动向服务器发出HTTP POST请求。这里定义的Web钩子是默认配置,将被复制到所有新的仓库中。详情请访问Web钩子指南。
defaulthooks.add_webhook=添加默认Web钩子
@@ -3157,7 +3071,6 @@ config.offline_mode=离线模式
config.disable_router_log=关闭路由日志
config.run_user=以用户名运行
config.run_mode=运行模式
-config.git_version=Git版本
config.app_data_path=应用数据路径
config.repo_root_path=仓库根目录
config.lfs_root_path=LFS根目录
@@ -3165,32 +3078,11 @@ config.log_file_root_path=日志路径
config.script_type=脚本类型
config.reverse_auth_user=反向代理认证用户
-config.ssh_config=SSH配置
-config.ssh_enabled=启用
-config.ssh_start_builtin_server=使用内置SSH服务器
-config.ssh_domain=SSH服务器域名
-config.ssh_port=端口
-config.ssh_listen_port=监听端口
-config.ssh_root_path=根目录
-config.ssh_key_test_path=密钥测试路径
-config.ssh_keygen_path=密钥生成器(“ssh-keygen”)路径
-config.ssh_minimum_key_size_check=密钥最小长度检查
-config.ssh_minimum_key_sizes=密钥最小长度限制
-
config.lfs_config=LFS配置
config.lfs_enabled=启用
config.lfs_content_path=LFS内容存放目录
config.lfs_http_auth_expiry=LFS HTTP身份验证过期时间
-config.db_config=数据库配置
-config.db_type=类型
-config.db_host=主机
-config.db_name=数据库名称
-config.db_user=用户名
-config.db_schema=架构模式
-config.db_ssl_mode=SSL
-config.db_path=数据库路径
-
config.service_config=服务配置
config.register_email_confirm=需要电子邮件确认注册
config.disable_register=禁止用户注册
@@ -3219,19 +3111,6 @@ config.queue_length=队列长度
config.deliver_timeout=推送超时
config.skip_tls_verify=跳过TLS验证
-config.mailer_config=邮件配置
-config.mailer_enabled=启用服务
-config.mailer_enable_helo=启用HELO
-config.mailer_name=任务名称
-config.mailer_protocol=协议
-config.mailer_smtp_addr=SMTP地址
-config.mailer_smtp_port=SMTP端口
-config.mailer_user=发送者帐号
-config.mailer_use_sendmail=使用Sendmail
-config.mailer_sendmail_path=Sendmail路径
-config.mailer_sendmail_args=Sendmail的额外参数
-config.mailer_sendmail_timeout=Sendmail超时
-config.mailer_use_dummy=Dummy
config.test_email_placeholder=电子邮址(例如:test@example.com)
config.send_test_mail=发送测试邮件
config.send_test_mail_submit=发送
@@ -3261,18 +3140,6 @@ config.picture_service=图片服务
config.disable_gravatar=禁用Gravatar头像
config.enable_federated_avatar=启用联邦头像
-config.git_config=Git配置
-config.git_disable_diff_highlight=禁用差异对比语法高亮
-config.git_max_diff_lines=差异对比显示的最大行数(单个文件)
-config.git_max_diff_line_characters=差异对比显示的最大字符数(单行)
-config.git_max_diff_files=差异对比显示的最大文件数
-config.git_gc_args=GC参数
-config.git_migrate_timeout=迁移操作超时
-config.git_mirror_timeout=镜像更新操作超时
-config.git_clone_timeout=克隆操作超时
-config.git_pull_timeout=拉取操作超时
-config.git_gc_timeout=GC操作超时
-
config.log_config=日志配置
config.logger_name_fmt=日志:%s
config.disabled_logger=禁用
@@ -3443,7 +3310,7 @@ workflow.enable=启用工作流
workflow.enable_success=工作流"%s"已成功启用。
workflow.disabled=工作流已禁用。
-need_approval_desc=该工作流由派生仓库的合并请求所触发,需要批准方可运行。
+need_approval_desc=该工作流由分叉仓库的合并请求所触发,需要批准方可运行。
variables.id_not_exist=ID为 %d 的变量不存在。
workflow.dispatch.trigger_found = 此工作流有*,所有分支的事件都會被回報。語法參見 %[2]s。範例:master, {master,release*}。
+settings.branch_filter_desc=推送、建立分支、刪除分支事件的白名單,請使用 glob 比對式樣。如果留白或輸入*,所有分支的事件都會被回報。語法請參見 %[2]s 文件。範例:master、 {master,release*}。
settings.authorization_header=Authorization 標頭
settings.authorization_header_desc=存在時將將包含此 Authorization 標頭在請求中。例: %s。
settings.active=啟用
@@ -2605,7 +2605,7 @@ new_advanced = 進階設定
new_advanced_expand = 點擊以展開
editor.commit_email = 提交電子信箱
archive.pull.noreview = 此儲存庫已封存。你不能審閱合併請求。
-settings.matrix.access_token_helper = 建議為此設定一個專用的 Matrix 帳號。存取符記可以從 Element 網路使用者端(於私人/隱身分頁)> 使用者選單(左上角)> 所有設定 > 幫助和關於 > 進階 > 存取符記(位於 Homeserver 網址正下方)檢索。關閉私人/隱身分頁(登出將使存取符記失效)。
+settings.matrix.access_token_helper = 建議為此設定一個專用的 Matrix 帳號。存取權杖可以從 Element 網路使用者端(於私人/隱身分頁)> 使用者選單(左上角)> 所有設定 > 幫助和關於 > 進階 > 存取權杖(位於 Homeserver 網址正下方)檢索。關閉私人/隱身分頁(登出將使存取權杖失效)。
release.title = 發行標題
settings.protect_patterns = 式樣
mirror_use_ssh.helper = 當你選擇此選項時,Forgejo 將透過 Git SSH 鏡像儲存庫並為你建立金鑰對。你必須確保已產生的公鑰已有授權才能推送至目標儲存庫。選擇此選項時,你不能使用基於密碼的授權。
@@ -2645,7 +2645,7 @@ pulls.edit.already_changed = 無法儲存對合併請求的變更。看起來內
settings.add_collaborator_blocked_our = 無法新增協作者,因為儲存庫擁有者已封鎖他們。
issues.edit.already_changed = 無法儲存對問題的變更。看起來內容已被另一個使用者變更。請重新整理頁面並嘗試再次編輯以避免覆蓋其變更
settings.federation_following_repos = 關注儲存庫的網址。以半形分號「;」分隔,沒有空格。
-settings.federation_not_enabled = 你的站點上未啟用聯邦。
+settings.federation_not_enabled = 你的實例上未啟用聯邦。
settings.federation_apapiurl = 此儲存庫的聯邦網址。將其複製並貼上至另一個儲存庫的聯邦設定中作為關注儲存庫的網址。
settings.enter_repo_name = 準確輸入擁有者和儲存庫名稱,如下所示:
settings.wiki_rename_branch_main = 規範化百科分支名稱
@@ -2675,7 +2675,7 @@ pulls.recently_pushed_new_branches = 你已於 %[2]s 推送分支 登入以建立新的合併請求。
issues.num_reviews_one = %d 則審閱
issues.num_reviews_few = %d 則審閱
-new_from_template_description = 你可以選擇此站點上現有的儲存庫範本並套用其設定。
+new_from_template_description = 你可以選擇此實例上現有的儲存庫範本並套用其設定。
auto_init_description = 使用 README 開始 Git 歷史記錄並可選擇新增 License 和 .gitignore 檔案。
issues.reaction.add = 新增反應
issues.reaction.alt_few = %[1]s 對 %[2]s 做出了反應。
@@ -2693,7 +2693,7 @@ settings.protect_invalid_status_check_pattern = 狀態檢查模式無效: 「%s
settings.ignore_stale_approvals_desc = 不計算在較舊提交上進行的核可(過時的審核)作為合併請求的核可數量。如果過時的審核已經被捨棄,則無關緊要。
settings.tags.protection.pattern.description = 您可以使用單一名稱或 glob 模式或正則表達式來匹配多個標籤。詳情請參閱 受保護標籤指南。
settings.thread_id = 線程 ID
-settings.archive.text = 封存儲存庫將使其完全變為唯讀。它將從儀表板中隱藏。沒有人(甚至包括您!)將能夠進行新的提交,或打開任何問題或合併請求。
+settings.archive.text = 封存儲存庫將使其完全變為唯讀。它將從儀表板中隱藏。沒有人(甚至包括您!)將能夠進行新的提交,或打開任何問題或合併請求。建議記錄封存原因,以協助未來計畫 Fork 此儲存庫的開發者理解相關背景。
diff.comment.add_line_comment = 新增行評論
pulls.editable = 可以編輯
settings.units.units = 功能
@@ -2725,7 +2725,7 @@ settings.event_action_success_desc = Action 執行成功。
settings.sourcehut_builds.manifest_path = 建置清單路徑
settings.sourcehut_builds.visibility = 作業可見性
settings.event_action_failure_desc = Action 執行以失敗結束。
-settings.protect_branch_name_pattern_desc = 受保護分支名稱的模式。請參閱文件說明以了解模式語法。範例:main、release/**
+settings.protect_branch_name_pattern_desc = 受保護分支名稱的模式。請參閱文件以了解模式語法。範例:main、release/**
settings.sourcehut_builds.access_token_helper = 具有 JOBS:RW 權限的存取權杖。請在 meta.sr.ht 上產生一個 builds.sr.ht 權杖,或一個 具有機密存取權限的 builds.sr.ht 權杖。
settings.matrix.room_id_helper = 可從 Element 網頁版客戶端取得 Room ID:進入房間設定 > 進階 > Internal room ID。範例:%s。
settings.web_hook_name_sourcehut_builds = SourceHut Builds
@@ -2877,66 +2877,14 @@ first_page=首頁
last_page=末頁
total=總計:%d
-dashboard.new_version_hint=現已推出 Forgejo %s,您正在執行 %s。詳情請參閱部落格的說明。
-dashboard.statistic=摘要
-dashboard.operations=維護作業
-dashboard.system_status=系統狀態
-dashboard.operation_name=作業名稱
-dashboard.operation_switch=開關
-dashboard.operation_run=執行
dashboard.clean_unbind_oauth=清理未綁定的 OAuth 連結
dashboard.clean_unbind_oauth_success=所有未綁定的 OAuth 連結已刪除。
-dashboard.task.started=已開始的任務: %[1]s
-dashboard.task.process=任務: %[1]s
-dashboard.task.error=任務中的錯誤: %[1]s: %[3]s
-dashboard.task.finished=任務: 已完成由 %[2]s 啟動的 %[1]s
-dashboard.task.unknown=未知的任務: %[1]s
-dashboard.cron.started=已開始的 Cron: %[1]s
-dashboard.cron.process=Cron: %[1]s
-dashboard.cron.error=Cron 中的錯誤: %s: %[3]s
-dashboard.cron.finished=Cron: %[1]s 已完成
dashboard.delete_inactive_accounts=刪除所有未啟用帳號
-dashboard.delete_inactive_accounts.started=刪除所有未啟用帳號的任務已啟動。
dashboard.delete_repo_archives=刪除所有儲存庫存檔 (ZIP、TAR.GZ 等)
-dashboard.delete_repo_archives.started=刪除所有儲存庫存檔的任務已啟動。
dashboard.delete_missing_repos=刪除所有遺失 Git 檔案的儲存庫
-dashboard.delete_missing_repos.started=刪除所有遺失 Git 檔案的儲存庫的任務已啟動。
-dashboard.delete_generated_repository_avatars=刪除自動產生的儲存庫大頭貼
-dashboard.update_mirrors=更新鏡像
-dashboard.repo_health_check=對所有儲存庫進行健康檢查
-dashboard.check_repo_stats=檢查所有儲存庫的統計資料
-dashboard.archive_cleanup=刪除舊的儲存庫存檔
-dashboard.deleted_branches_cleanup=清理已刪除的分支
-dashboard.update_migration_poster_id=更新遷移發布者 ID
-dashboard.git_gc_repos=對所有儲存庫進行垃圾回收
-dashboard.resync_all_sshkeys=使用 Forgejo 的 SSH 金鑰更新「.ssh/authorized_keys」檔案。
-dashboard.resync_all_sshprincipals=使用 Forgejo 的 SSH 規則更新「.ssh/authorized_principals」檔案。
-dashboard.resync_all_hooks=重新同步所有儲存庫的 Git hooks(pre-receive、update、post-receive、proc-receive 等)
-dashboard.reinit_missing_repos=重新初始化所有記錄存在但遺失的 Git 儲存庫
-dashboard.sync_external_users=同步外部使用者資料
-dashboard.cleanup_hook_task_table=清理 hook_task 資料表
-dashboard.cleanup_packages=清理過期的軟體包
dashboard.delete_old_actions=從資料庫刪除所有舊操作紀錄
-dashboard.delete_old_actions.started=從資料庫刪除所有舊操作紀錄的任務已啟動。
-dashboard.update_checker=更新檢查器
-dashboard.delete_old_system_notices=從資料庫刪除所有舊系統提示
-dashboard.gc_lfs=對 LFS meta objects 進行垃圾回收
-dashboard.stop_zombie_tasks=停止殭屍 Actions 任務
-dashboard.stop_endless_tasks=停止永不停止的 Actions 任務
-dashboard.cancel_abandoned_jobs=取消已放棄的 Actions 作業
-
users.user_manage_panel=使用者帳號管理
users.new_account=建立使用者帳號
-users.name=帳號
-users.full_name=全名
-users.activated=已啟用
-users.admin=管理員
-users.restricted=受限
-users.2fa=兩步驟驗證
-users.repos=儲存庫數
-users.created=建立時間
-users.last_login=上次登入
-users.never_login=從未登入
users.send_register_notify=透過電子郵件傳送註冊通知
users.new_success=已建立新帳號「%s」。
users.edit=編輯
@@ -2979,32 +2927,11 @@ emails.duplicate_active=此信箱已被其他使用者使用。
emails.change_email_header=更新電子信箱屬性
orgs.org_manage_panel=組織管理
-orgs.name=名稱
-orgs.teams=團隊數
-orgs.members=成員數
-orgs.new_orga=新增組織
-
repos.repo_manage_panel=儲存庫管理
repos.unadopted=未接管的儲存庫
repos.unadopted.no_more=找不到未接管的儲存庫。
-repos.owner=所有者
-repos.name=名稱
repos.private=私有
-repos.issues=問題數
-repos.size=大小
-
packages.package_manage_panel=軟體包管理
-packages.total_size=總大小:%s
-packages.unreferenced_size=未參考大小:%s
-packages.owner=所有者
-packages.creator=建立者
-packages.name=名稱
-packages.version=版本
-packages.type=類型
-packages.repository=儲存庫
-packages.size=大小
-packages.published=已發布
-
defaulthooks=預設 Webhook
defaulthooks.add_webhook=新增預設 Webhook
defaulthooks.update_webhook=更新預設 Webhook
@@ -3093,7 +3020,7 @@ auths.tips=幫助提示
auths.tips.oauth2.general=OAuth2 認證
auths.tip.oauth2_provider=OAuth2 提供者
auths.tip.bitbucket=註冊新的 OAuth 使用者端並加入權限「Account - Read」。網址:%s
-auths.tip.nextcloud=在您的站點上,於選單「設定 -> 安全性 -> OAuth 2.0 客戶端」註冊新的 OAuth 客戶端
+auths.tip.nextcloud=在您的實例上,於選單「設定 -> 安全性 -> OAuth 2.0 客戶端」註冊新的 OAuth 客戶端
auths.tip.dropbox=建立新的 App。網址:%s
auths.tip.facebook=註冊新的應用程式並新增產品「Facebook 登入」。網址:%s
auths.tip.github=註冊新的 OAuth 應用程式。網址:%s
@@ -3129,39 +3056,17 @@ config.offline_mode=本地模式
config.disable_router_log=停用路由日誌
config.run_user=以使用者執行
config.run_mode=執行模式
-config.git_version=Git 版本
config.repo_root_path=儲存庫根路徑
config.lfs_root_path=LFS 根路徑
config.log_file_root_path=日誌路徑
config.script_type=腳本類型
config.reverse_auth_user=反向代理認證使用者
-config.ssh_config=SSH 設定
-config.ssh_enabled=已啟用
-config.ssh_start_builtin_server=使用內建伺服器
-config.ssh_domain=SSH 伺服器域名
-config.ssh_port=連接埠
-config.ssh_listen_port=監聽埠
-config.ssh_root_path=根路徑
-config.ssh_key_test_path=金鑰測試路徑
-config.ssh_keygen_path=金鑰產生(ssh-keygen)路徑
-config.ssh_minimum_key_size_check=金鑰最小大小檢查
-config.ssh_minimum_key_sizes=金鑰最小大小
-
config.lfs_config=LFS 設定
config.lfs_enabled=已啟用
config.lfs_content_path=LFS 內容路徑
config.lfs_http_auth_expiry=LFS HTTP 驗證有效時間
-config.db_config=資料庫組態
-config.db_type=資料庫類型
-config.db_host=主機地址
-config.db_name=名稱
-config.db_user=使用者名稱
-config.db_schema=結構描述
-config.db_ssl_mode=SSL
-config.db_path=資料庫路徑
-
config.service_config=服務設定
config.register_email_confirm=要求註冊時確認電子郵件
config.disable_register=停用自助註冊
@@ -3189,19 +3094,6 @@ config.queue_length=佇列長度
config.deliver_timeout=傳送逾時
config.skip_tls_verify=略過 TLS 驗證
-config.mailer_config=郵件程式設定
-config.mailer_enabled=啟用服務
-config.mailer_enable_helo=啟用 HELO
-config.mailer_name=發送者名稱
-config.mailer_protocol=協定
-config.mailer_smtp_addr=SMTP 位址
-config.mailer_smtp_port=SMTP 連接埠
-config.mailer_user=發送者帳號
-config.mailer_use_sendmail=使用 Sendmail
-config.mailer_sendmail_path=Sendmail 路徑
-config.mailer_sendmail_args=Sendmail 參數
-config.mailer_sendmail_timeout=Sendmail 逾時
-config.mailer_use_dummy=Dummy
config.test_email_placeholder=電子信箱 (例:test@example.com)
config.send_test_mail=寄送測試郵件
config.test_mail_failed=傳送測試郵件至「%s」時失敗: %v
@@ -3230,18 +3122,6 @@ config.picture_service=圖片服務
config.disable_gravatar=停用 Gravatar
config.enable_federated_avatar=啟用聯邦式大頭貼
-config.git_config=Git 設定
-config.git_disable_diff_highlight=停用比較語法高亮
-config.git_max_diff_lines=差異比較時顯示的最多行數
-config.git_max_diff_line_characters=差異比較時顯示的最多字元數
-config.git_max_diff_files=差異比較時顯示的最多檔案數
-config.git_gc_args=GC 參數
-config.git_migrate_timeout=遷移逾時
-config.git_mirror_timeout=鏡像更新逾時
-config.git_clone_timeout=拓製逾時
-config.git_pull_timeout=Pull 作業逾時
-config.git_gc_timeout=GC 作業逾時
-
config.log_config=日誌設定
config.disabled_logger=已停用
config.access_log_mode=存取日誌模式
@@ -3284,20 +3164,12 @@ notices.delete_success=已刪除系統提示。
settings = 管理員設定
emails.change_email_text = 您確定要更新這個電子信箱地址嗎?
monitor.download_diagnosis_report = 下載診斷報告
-dashboard.task.cancelled = 作業:%[1]s 已被取消:%[3]s
-dashboard.cron.cancelled = 定時作業:%[1]s 已被取消:%[3]s
-dashboard.cleanup_actions = 清理過期的 Action 日誌和物件
-users.bot = 機器人
-users.remote = 遠端
config.access_log_template = 存取日誌範本
monitor.stats = 統計資料
self_check.no_problem_found = 未發現任何問題。
config.send_test_mail_submit = 寄送
users.details = 使用者詳細資訊
assets = 程式碼資產
-dashboard.sync_branch.started = 分支同步已開始
-dashboard.rebuild_issue_indexer = 重建問題索引
-repos.lfs_size = LFS 大小
packages.cleanup = 清除過期的資料
packages.cleanup.success = 已成功清除過期資料
monitor.processes_count = %d 個程序
@@ -3306,18 +3178,15 @@ config.cache_test = 測試快取
config_settings = 設定
config_summary = 概要
emails.delete = 刪除電子信箱地址
-dashboard.sync_tag.started = 標籤同步已開始
-users.reserved = 已保留
auths.tips.gmail_settings = Gmail 設定:
config.app_data_path = 應用程式資料路徑
integrations = 整合
emails.delete_primary_email_error = 你無法刪除主要電子郵件。
emails.deletion_success = 該電子郵件地址已被刪除。
emails.delete_desc = 你確定你要刪除此電子郵件地址嗎?
-dashboard.start_schedule_tasks = 開始計劃 Actions 任務
auths.default_domain_name = 用於電子郵件地址的預設域名
users.organization_creation.description = 允許建立新組織。
-config.app_slogan = 站點口號
+config.app_slogan = 實例口號
self_check = 自助檢查
config.logger_name_fmt = 日誌:%s
self_check.database_fix_mysql = 對於 MySQL/MariaDB 的使用者,你可以使用命令「forgejo doctor convert」來修復排序規則問題,或者你也可以手動透過「ALTER ... COLLATE ...」SQL 修復問題。
@@ -3330,16 +3199,14 @@ config.cache_test_succeeded = 快取測試成功,在 %s 內收到回應。
config.cache_test_failed = 無法探測快取:%v。
self_check.database_collation_case_insensitive = 資料庫正在使用排序規則 %s,這是一種不敏感的排序規則。雖然 Forgejo 可以與其配合使用,但是在一些罕見情況下可能會出現無法如預期運作的情況。
config.open_with_editor_app_help = 拓製選單中的「開啟方式」編輯器。如果留空則將使用預設值。展開以查看預設值。
-dashboard.sync_repo_tags = 將標籤從 Git 資料同步至資料庫
self_check.database_collation_mismatch = 期望資料庫使用的排序規則:%s
config.allow_dots_in_usernames = 允許使用者在使用者名稱中使用點。不會影響現有帳號。
-dashboard.sync_repo_branches = 將缺少的分支從 Git 資料同步至資料庫
defaulthooks.desc = 當某些 Forgejo 事件觸發時,Webhook 會自動向伺服器發出 HTTP POST 請求。此處定義的 Webhook 是預設的,將複製至所有新的儲存庫中。更多資訊請參考Webhook 指南。
users.local_import.description = 允許從伺服器的本機檔案系統匯入儲存庫。這可能是個安全問題。
config.cache_test_slow = 快取測試成功,但是回應很慢:%s。
users.activated.description = 完成電子郵件驗證。未啟動帳號的擁有者將無法登入,直至電子郵件驗證完成。
auths.tips.oauth2.general.tip = 當註冊新的 OAuth2 驗證時,回呼/重新導向網址應該是:
-users.restricted.description = 僅允許與將此使用者新增為合作者的儲存庫和組織進行互動。這會阻止存取此站點上的公共儲存庫。
+users.restricted.description = 僅允許與將此使用者新增為合作者的儲存庫和組織進行互動。這會阻止存取此實例上的公共儲存庫。
users.admin.description = 授予此使用者透過網頁介面和 API 提供的所有管理功能的完全存取權。
auths.tip.gitea = 註冊一個新的 OAuth2 應用程式。指南可在 %s 找到
diff --git a/options/locale_next/locale_ar.json b/options/locale_next/locale_ar.json
index a2358fd17b..2d1400037c 100644
--- a/options/locale_next/locale_ar.json
+++ b/options/locale_next/locale_ar.json
@@ -1,4 +1,41 @@
{
+ "admin.users.never_login": "لم يلج قَط",
+ "admin.users.last_login": "آخر ولوج",
+ "admin.users.created": "أُنشئ",
+ "admin.users.repos": "المستودعات",
+ "admin.users.reserved": "محجوز",
+ "admin.users.restricted": "مقيَّد",
+ "admin.users.admin": "المدير",
+ "admin.users.activated": "مُفعّل",
+ "admin.users.full_name": "الاسم الكامل",
+ "admin.users.name": "اسم المستخدم",
+ "admin.packages.size": "الحجم",
+ "admin.packages.repository": "المستودع",
+ "admin.packages.type": "النوع",
+ "admin.packages.version": "النُسخة",
+ "admin.packages.name": "الاسم",
+ "admin.packages.creator": "المُنشئ",
+ "admin.packages.owner": "المالك",
+ "admin.packages.total_size": "إجمالي الحجم: %s",
+ "admin.repos.size": "الحجم",
+ "admin.repos.issues": "المسائل",
+ "admin.repos.name": "الاسم",
+ "admin.repos.owner": "المالك",
+ "admin.orgs.new_orga": "منظمة جديدة",
+ "admin.orgs.members": "الأعضاء",
+ "admin.orgs.teams": "الفِرق",
+ "admin.orgs.name": "الاسم",
+ "admin.dashboard.rebuild_issue_indexer": "أعد بناء مُفهرِس المسائل",
+ "admin.dashboard.delete_old_system_notices": "احذف كل إشعارات النظام القديمة من قاعدة البيانات",
+ "admin.dashboard.update_checker": "فاحص التحديث",
+ "admin.dashboard.resync_all_sshkeys": "حدّث ملف '.ssh/authorized_keys' بمفاتيح SSH لفورجيو.",
+ "admin.dashboard.sync_repo_tags": "زامن الوسوم من بيانات جِت إلى قاعدة البيانات",
+ "admin.dashboard.delete_generated_repository_avatars": "احذف الصورة الرمزية المولّدة للمستودع",
+ "admin.dashboard.sync_tag.started": "بدأ تزامن الوسوم",
+ "admin.dashboard.operation_name": "اسم العملية",
+ "admin.dashboard.system_status": "حالة النظام",
+ "admin.dashboard.operations": "عمليات الصيانة",
+ "admin.dashboard.statistic": "الملخص",
"admin.monitor.queue.settings.changed": "تم تحديث الإعدادات",
"admin.monitor.queue.settings.submit": "حدّث الإعدادات",
"admin.monitor.queue.type": "النوع",
diff --git a/options/locale_next/locale_az.json b/options/locale_next/locale_az.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/options/locale_next/locale_az.json
@@ -0,0 +1 @@
+{}
diff --git a/options/locale_next/locale_bg.json b/options/locale_next/locale_bg.json
index 9b833c070d..e678948e58 100644
--- a/options/locale_next/locale_bg.json
+++ b/options/locale_next/locale_bg.json
@@ -1,4 +1,36 @@
{
+ "admin.config.db.path": "Път",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.user": "Потребителско име",
+ "admin.config.db.name": "Име",
+ "admin.config.db.type": "Тип",
+ "admin.config.mailer.user": "Потребител",
+ "admin.config.mailer.protocol": "Протокол",
+ "admin.config.mailer.name": "Име",
+ "admin.config.git.version": "Git версия",
+ "admin.config.git.header": "Git конфигурация",
+ "admin.config.ssh.header": "SSH конфигурация",
+ "admin.users.bot": "Бот",
+ "admin.users.admin": "Админ",
+ "admin.users.full_name": "Пълно име",
+ "admin.users.name": "Потребителско име",
+ "admin.packages.size": "Размер",
+ "admin.packages.repository": "Хранилище",
+ "admin.packages.type": "Тип",
+ "admin.packages.version": "Версия",
+ "admin.packages.name": "Име",
+ "admin.packages.creator": "Създател",
+ "admin.packages.owner": "Притежател",
+ "admin.packages.total_size": "Общ размер: %s",
+ "admin.repos.size": "Размер",
+ "admin.repos.issues": "Задачи",
+ "admin.repos.name": "Име",
+ "admin.repos.owner": "Притежател",
+ "admin.orgs.new_orga": "Нова организация",
+ "admin.orgs.members": "Участници",
+ "admin.orgs.teams": "Екипи",
+ "admin.orgs.name": "Име",
+ "admin.dashboard.new_version_hint": "Forgejo %s вече е наличен, вие изпълнявате %s. Проверете блога за повече подробности.",
"admin.monitor.queue.type": "Тип",
"admin.monitor.queue": "Опашка: %s",
"admin.monitor.queues": "Опашки",
diff --git a/options/locale_next/locale_ca.json b/options/locale_next/locale_ca.json
index 95db3f2943..28ab51ede2 100644
--- a/options/locale_next/locale_ca.json
+++ b/options/locale_next/locale_ca.json
@@ -1,4 +1,117 @@
{
+ "admin.config.db.path": "Camí",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Esquema",
+ "admin.config.db.user": "Nom d'usuari",
+ "admin.config.db.name": "Nom",
+ "admin.config.db.host": "Amfitrió",
+ "admin.config.db.type": "Tipus",
+ "admin.config.db.header": "Configuració de la base de dades",
+ "admin.config.mailer.user": "Usuari",
+ "admin.config.mailer.smtp.port": "Port SMTP",
+ "admin.config.mailer.smtp.addr": "Amfitrió SMTP",
+ "admin.config.mailer.enable_helo": "Habilita HELO",
+ "admin.config.mailer.protocol": "Protocol",
+ "admin.config.mailer.sendmail.timeout": "Temps d'espera per Sendmail",
+ "admin.config.mailer.sendmail.args": "Arguments extra per Sendmail",
+ "admin.config.mailer.sendmail.path": "Camí de Sendmail",
+ "admin.config.mailer.sendmail.use": "Usa Sendmail",
+ "admin.config.mailer.name": "Nom",
+ "admin.config.mailer.enabled": "Habilitat",
+ "admin.config.mailer.header": "Configuració del remitent",
+ "admin.config.git.version": "Versió de Git",
+ "admin.config.ssh.minimum_key_sizes": "Mides mínimes de clau",
+ "admin.config.ssh.minimum_key_size_check": "Comprovació mínima de la mida de clau",
+ "admin.config.ssh.keygen_path": "Camí keygen (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Camí al test de clau",
+ "admin.config.ssh.root_path": "Camí arrel",
+ "admin.config.ssh.listen_port": "Port d'escolta",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "Domini del servidor SSH",
+ "admin.config.ssh.use_builtin_server": "Usa el servidor integrat",
+ "admin.config.ssh.enabled": "Habilitat",
+ "admin.config.ssh.header": "Configuració SSH",
+ "admin.users.never_login": "Mai ha iniciat sessió",
+ "admin.users.last_login": "Darrer inici de sessió",
+ "admin.users.created": "Creats",
+ "admin.users.repos": "Repos",
+ "admin.users.2fa": "A2F",
+ "admin.users.remote": "Remot",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Reservat",
+ "admin.users.restricted": "Restringit",
+ "admin.users.admin": "Administrador",
+ "admin.users.activated": "Activat",
+ "admin.users.full_name": "Nom complet",
+ "admin.users.name": "Nom d'usuari",
+ "admin.packages.published": "Publicat",
+ "admin.packages.size": "Mida",
+ "admin.packages.repository": "Repositori",
+ "admin.packages.type": "Tipus",
+ "admin.packages.version": "Versió",
+ "admin.packages.name": "Nom",
+ "admin.packages.creator": "Creador",
+ "admin.packages.owner": "Propietari",
+ "admin.packages.unreferenced_size": "Mida sense referenciar: %s",
+ "admin.packages.total_size": "Mida total: %s",
+ "admin.repos.lfs_size": "Mida LFS",
+ "admin.repos.size": "Mida",
+ "admin.repos.issues": "Problemes",
+ "admin.repos.name": "Nom",
+ "admin.repos.owner": "Propietari",
+ "admin.orgs.new_orga": "Nova organització",
+ "admin.orgs.members": "Membres",
+ "admin.orgs.teams": "Equips",
+ "admin.orgs.name": "Nom",
+ "admin.dashboard.rebuild_issue_indexer": "Reconstruir l'indexador d'incidències",
+ "admin.dashboard.cancel_abandoned_jobs": "Cancel·lar feines d'accions abandonades",
+ "admin.dashboard.stop_endless_tasks": "Aturar tasques d'accions infinites",
+ "admin.dashboard.stop_zombie_tasks": "Aturar tasques d'accions zombi",
+ "admin.dashboard.gc_lfs": "Recull la brossa d'objectes meta LFS",
+ "admin.dashboard.delete_old_system_notices": "Eliminar totes les notificacions de sistema antigues de la base de dades",
+ "admin.dashboard.update_checker": "Comprovador d'actualització",
+ "admin.dashboard.cleanup_actions": "Netejar registres i artefactes d'accions caducats",
+ "admin.dashboard.cleanup_packages": "Netejar paquets caducats",
+ "admin.dashboard.cleanup_hook_task_table": "Netejar la taula hook_task",
+ "admin.dashboard.sync_external_users": "Sincronitzar dades d'usuari externes",
+ "admin.dashboard.reinit_missing_repos": "Reinicialitza tots els repositoris Git que falten i que tenen registres",
+ "admin.dashboard.resync_all_hooks": "Resincronitzar els ganxos Git de tots els repositoris (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Actualitzar el fitxer \".ssh/authorized_principals\" amb els principals SSH de Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Actualitzar el fitxer \".ssh/authorized_keys\" amb les claus SSH de Forgejo.",
+ "admin.dashboard.git_gc_repos": "Recull la brossa de tots els repositoris",
+ "admin.dashboard.update_migration_poster_id": "Actualitza les ID de l'autor de migració",
+ "admin.dashboard.deleted_branches_cleanup": "Netejar branques eliminades",
+ "admin.dashboard.archive_cleanup": "Suprimir els arxius de repositori antics",
+ "admin.dashboard.check_repo_stats": "Comprovar totes les estadístiques del repositori",
+ "admin.dashboard.repo_health_check": "Comprovar la salut de tots els repositoris",
+ "admin.dashboard.update_mirrors": "Actualitzar les rèpliques",
+ "admin.dashboard.sync_repo_tags": "Sincronitzar les etiquetes de les dades de Git a la base de dades",
+ "admin.dashboard.sync_repo_branches": "La sincronització ha ignorat branques de les dades Git a la base de dades",
+ "admin.dashboard.delete_generated_repository_avatars": "Suprimir els avatars de repositori generats",
+ "admin.dashboard.sync_tag.started": "S'ha iniciat la sincronització d'etiquetes",
+ "admin.dashboard.sync_branch.started": "S'ha iniciat la sincronització de branca",
+ "admin.dashboard.delete_old_actions.started": "Eliminar totes les activitats antigues des que s'ha iniciat la base de dades.",
+ "admin.dashboard.delete_missing_repos.started": "S'ha iniciat la tasca per suprimir tots els repositoris que no tinguin els fitxers de Git.",
+ "admin.dashboard.delete_repo_archives.started": "S'ha iniciat la tasca per suprimir tots els arxius dels repositoris.",
+ "admin.dashboard.delete_inactive_accounts.started": "S'ha iniciat la tasca per suprimir tots els comptes no activats.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s ha finalitzat",
+ "admin.dashboard.cron.error": "Error amb Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s cancel·lat: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron iniciat: %[1]s",
+ "admin.dashboard.task.unknown": "Tasca desconeguda: %[1]s",
+ "admin.dashboard.task.finished": "Tasca: %[1] iniciada per %[2s] ha finalitzat",
+ "admin.dashboard.task.error": "Error en la tasca: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Tasca: %[1]s cancel·lada: %[3]s",
+ "admin.dashboard.task.process": "Tasca: %[1]s",
+ "admin.dashboard.task.started": "Tasca iniciada: %[1]s",
+ "admin.dashboard.operation_run": "Executar",
+ "admin.dashboard.operation_switch": "Intercanvia",
+ "admin.dashboard.operation_name": "Nom d'operació",
+ "admin.dashboard.system_status": "Estat del sistema",
+ "admin.dashboard.operations": "Operacions de manteniment",
+ "admin.dashboard.statistic": "Resum",
+ "admin.dashboard.new_version_hint": "Forgejo %s és ara disponible, esteu executant %s. Comprova el blog per més detalls.",
"admin.monitor.queue.type": "Tipus",
"admin.monitor.queue.name": "Nom",
"admin.users.list_status_filter.not_2fa_enabled": "A2F desactivada",
@@ -656,5 +769,90 @@
"actions.runners.edit_runner.regenerate_token_label": "Regenera testimoni",
"actions.runners.edit_runner.regenerate_token_help": "El testimoni actual s'invalidarà immediatament. Rebreu un nou testimoni en la pàgina següent.",
"actions.runners.edit_runner.save_button": "Desa",
- "actions.runners.edit_runner.cancel_button": "Cancel·la"
+ "actions.runners.edit_runner.cancel_button": "Cancel·la",
+ "admin.config.federation.digest_algorithm": "Algoritme del resum de signatura",
+ "admin.system_status.profiling_bucket_hash_table_obtained": "S'ha obtingut el perfil de contenidor de la taula hash",
+ "admin.system_status.other_system_allocation_obtained": "S'ha obtingut un altre sistema d'assignació",
+ "admin.system_status.gc_times": "Vegades del GC",
+ "admin.monitor.queues": "Cues",
+ "admin.monitor.queue": "Cua: %s",
+ "admin.monitor.queue.exemplar": "Tipus Exemplar",
+ "admin.monitor.queue.numberworkers": "Nombre de treballadors",
+ "admin.monitor.queue.activeworkers": "Treballadors actius",
+ "admin.monitor.queue.maxnumberworkers": "Nombre màxim de treballadors",
+ "admin.monitor.queue.numberinqueue": "Número en cua",
+ "admin.monitor.queue.review_add": "Revisa / afegeix treballadors",
+ "admin.monitor.queue.settings.title": "Configuració d'agrupament",
+ "admin.monitor.queue.settings.description": "Els agrupaments creixen dinàmicament en resposta al blocat de la cua de treballadors.",
+ "admin.monitor.queue.settings.maxnumberworkers": "Nombre màxim de treballadors",
+ "admin.monitor.queue.settings.maxnumberworkers.placeholder": "Actualment %[1]d",
+ "admin.monitor.queue.settings.maxnumberworkers.error": "El nombre màxim de treballadors ha de ser un nombre",
+ "admin.monitor.queue.settings.submit": "Actualitza la configuració",
+ "admin.monitor.queue.settings.changed": "Configuració actualitzada",
+ "admin.monitor.queue.settings.remove_all_items": "Elimina'ls tots",
+ "admin.monitor.queue.settings.remove_all_items.success": "S'ha eliminat tots els ítems de la cua.",
+ "settings.authorized_integrations": "Integracions Autoritzades",
+ "settings.manage_authorized_integrations": "Integracions autoritzades",
+ "settings.authorized_integration.desc": "Les integracions autoritzades permeten a Forgejo rebre JWTs signades, validar-ne les demandes amb regles, i permetre'n accés a les API de Forgejo.",
+ "settings.authorized_integration.ui.generic": "JWT Genèric",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Accions Forgejo (Local)",
+ "settings.authorized_integration.none": "Encara no s'han configurat integracions autoritzades.",
+ "settings.authorized_integration.field.name": "Nom",
+ "settings.authorized_integration.field.description": "Descripció",
+ "settings.authorized_integration.field.description.placeholder": "Usada per publicar paquets quan ...",
+ "settings.authorized_integration.field.audience": "Audiència (demanda aud)",
+ "settings.authorized_integration.field.issuer": "Emissor (demanda iss)",
+ "settings.authorized_integration.field.claim_rules": "JSON de Regles de Demanda",
+ "settings.authorized_integration.claims.generic": "Regles JWT Genèriques",
+ "settings.authorized_integration.perms.title": "Capacitats Permeses",
+ "settings.authorized_integration.copy_audience": "Copia l'audiència al porta-retalls",
+ "notification.pin": "Fixa la notificació",
+ "packages.assets": "Recursos",
+ "packages.alpine.registry.info": "Escolliu $branch i $repository de la llista següent.",
+ "packages.arch.version.makedepends": "Crea dependències",
+ "packages.arch.version.checkdepends": "Comprova dependències",
+ "packages.container.digest": "Resumeix",
+ "packages.debian.registry.info": "Escolliu $distribution i $component de la llista següent.",
+ "packages.nuget.dependency.framework": "Framework Objectiu",
+ "actions.status.diagnostics.waiting": {
+ "one": "Esperant un executor amb l'etiqueta: %s",
+ "many": "Esperant un executor amb les etiquetes: %s",
+ "other": "Esperant un executor amb les etiquetes: %s"
+ },
+ "actions.runners.runner_setup.title": "Configura l'executor %s",
+ "actions.runners.show_registration_token": "Mostra el testimoni de registre",
+ "actions.runners.update_runner.success": "S'ha editat l'executor correctament",
+ "actions.runners.update_runner.failed": "No s'ha pogut editar l'executor",
+ "actions.runners.delete_runner.header": "Confirmeu l'eliminació d'aquest executor",
+ "actions.runners.delete_runner.notice": "Si hi ha cap tasca activa en aquest executor, s'aturarà i es marcarà com a fallada. Això pot trencar el flux de construcció.",
+ "actions.runners.delete_runner.success": "S'ha eliminat l'executor correctament",
+ "actions.runners.delete_runner.failed": "No s'ha pogut eliminar l'executor",
+ "actions.runners.runner_details.page_title": "Executor %s",
+ "actions.runners.runner_details.labels_note": "Les etiquetes de l'executor es defineixen en el fitxer de configuració de Forgejo Runner o es passen com a opcions de línia de comandes. Aquestes s'actualitzen cada cop que Forgejo Runner estableix una connexió amb Forgejo.",
+ "actions.runners.runner_setup.page_title": "Configura l'executor %s",
+ "actions.runners.runner_setup.list_of_runners_link": "Llista d'executors",
+ "actions.runners.runner_setup.last_chance_copying_token": "Copieu el testimoni ara, ja que no el podreu tornar a veure més tard!",
+ "actions.runners.runner_setup.button_copy_uuid_aria": "Copia l'UUID de l'executor",
+ "actions.runners.runner_setup.button_copy_token_aria": "Copia el testimoni de l'executor",
+ "actions.runners.runner_setup.heading_using_configuration": "Usant el fitxer de configuració de l'executor",
+ "actions.runners.runner_setup.configuration_snippet_aria": "Fragment per afegir en la configuració de l'executor",
+ "actions.runners.runner_setup.program_options_snippet_aria": "Com invocar forgejo-runner",
+ "actions.runners.runner_setup.instruction_replace_connection_name": "Reemplaça el nom de la connexió (forgejo, per exemple) amb el valor que vulgueu.",
+ "actions.runners.runner_setup.heading_using_options": "Usant opcions de programa",
+ "actions.runners.runner_setup.instruction_advanced_configurations": "Per a configurar Forgejo Runner en contenidors o amb configuracions avançades, vegeu la documentació.",
+ "actions.runners.none": "No hi ha executors disponibles",
+ "actions.runners.reset_registration_token.token": "Testimoni de Registre (Obsolet)",
+ "actions.runners.reset_registration_token.button": "Reinicia el testimoni de registre",
+ "actions.runners.reset_registration_token.success": "S'ha reiniciat el testimoni de registre correctament",
+ "actions.runs.all_workflows": "Tots els fluxos de treball",
+ "actions.runs.status": "Estatus",
+ "actions.runs.actors_no_select": "Tots els actors",
+ "actions.runs.status_no_select": "Tots els estatus",
+ "actions.runs.no_results": "No hi ha resultats coincidents.",
+ "actions.runs.no_workflows": "Encara no hi ha fluxos de treball.",
+ "editor.search": "Cerca",
+ "editor.replace": "Reemplaça",
+ "editor.replace_all": "Reemplaça tots",
+ "actions.runs.workflow": "Flux de treball",
+ "actions.runs.invalid_workflow_helper": "El fitxer de configuració del flux de treball no és vàlid. Si us plau, comproveu el fitxer de configuració: %s"
}
diff --git a/options/locale_next/locale_cs-CZ.json b/options/locale_next/locale_cs-CZ.json
index c62f8c5cc8..b562a8749f 100644
--- a/options/locale_next/locale_cs-CZ.json
+++ b/options/locale_next/locale_cs-CZ.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Cesta",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schéma",
+ "admin.config.db.user": "Uživatelské jméno",
+ "admin.config.db.name": "Název",
+ "admin.config.db.host": "Server",
+ "admin.config.db.type": "Typ",
+ "admin.config.db.header": "Nastavení databáze",
+ "admin.config.mailer.user": "Uživatel",
+ "admin.config.mailer.smtp.port": "Port SMTP",
+ "admin.config.mailer.smtp.addr": "Hostitel SMTP",
+ "admin.config.mailer.enable_helo": "Povolit HELO",
+ "admin.config.mailer.protocol": "Protokol",
+ "admin.config.mailer.use_dummy": "Fiktivní",
+ "admin.config.mailer.sendmail.timeout": "Časový limit Sendmail",
+ "admin.config.mailer.sendmail.args": "Dodatečné argumenty pro Sendmail",
+ "admin.config.mailer.sendmail.path": "Cesta k Sendmail",
+ "admin.config.mailer.sendmail.use": "Použít Sendmail",
+ "admin.config.mailer.name": "Název",
+ "admin.config.mailer.enabled": "Zapnutý",
+ "admin.config.mailer.header": "Nastavení odesílání e-mailů",
+ "admin.config.git.gc_timeout": "Časový limit operace GC",
+ "admin.config.git.pull_timeout": "Časový limit operace Pull",
+ "admin.config.git.clone_timeout": "Časový limit operace klonování",
+ "admin.config.git.mirror_timeout": "Časový limit aktualizace zrcadla",
+ "admin.config.git.migrate_timeout": "Časový limit migrace",
+ "admin.config.git.gc_args": "Argumenty GC",
+ "admin.config.git.diff.max_files": "Maximální počet zobrazených rozdílných souborů",
+ "admin.config.git.diff.max_line_characters": "Maximální počet zobrazených rozdílných znaků",
+ "admin.config.git.diff.max_lines": "Maximální počet rozdílových řádků na soubor",
+ "admin.config.git.disable_diff_highlight": "Zakázat zvýraznění syntaxe v zobrazení rozdílů",
+ "admin.config.git.version": "Verze Gitu",
+ "admin.config.git.header": "Konfigurace Gitu",
+ "admin.config.ssh.minimum_key_sizes": "Minimální velikosti klíčů",
+ "admin.config.ssh.minimum_key_size_check": "Kontrola minimální velikosti klíčů",
+ "admin.config.ssh.keygen_path": "Cesta ke generátoru klíčů („ssh-keygen“)",
+ "admin.config.ssh.key_test_path": "Cesta testu klíčů",
+ "admin.config.ssh.root_path": "Kořenová cesta",
+ "admin.config.ssh.listen_port": "Port pro naslouchání",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "Doména SSH serveru",
+ "admin.config.ssh.use_builtin_server": "Použít vestavěný server",
+ "admin.config.ssh.enabled": "Zapnutý",
+ "admin.config.ssh.header": "Nastavení SSH",
+ "admin.users.never_login": "Nikdy nepřihlášen",
+ "admin.users.last_login": "Poslední přihlášení",
+ "admin.users.created": "Vytvořen",
+ "admin.users.repos": "Repozitáře",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Vzdálený",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Rezervováno",
+ "admin.users.restricted": "Omezený",
+ "admin.users.admin": "Správce",
+ "admin.users.activated": "Aktivován",
+ "admin.users.full_name": "Celé jméno",
+ "admin.users.name": "Uživatelské jméno",
+ "admin.packages.published": "Publikováno",
+ "admin.packages.size": "Velikost",
+ "admin.packages.repository": "Repozitář",
+ "admin.packages.type": "Typ",
+ "admin.packages.version": "Verze",
+ "admin.packages.name": "Název",
+ "admin.packages.creator": "Tvůrce",
+ "admin.packages.owner": "Vlastník",
+ "admin.packages.unreferenced_size": "Neodkazovaná velikost: %s",
+ "admin.packages.total_size": "Celková velikost: %s",
+ "admin.repos.lfs_size": "Velikost LFS",
+ "admin.repos.size": "Velikost",
+ "admin.repos.issues": "Problémy",
+ "admin.repos.name": "Název",
+ "admin.repos.owner": "Vlastník",
+ "admin.orgs.new_orga": "Nová organizace",
+ "admin.orgs.members": "Členové",
+ "admin.orgs.teams": "Týmy",
+ "admin.orgs.name": "Název",
+ "admin.dashboard.rebuild_issue_indexer": "Přestavit indexer vydání",
+ "admin.dashboard.start_schedule_tasks": "Spustit akce naplánovaných úloh",
+ "admin.dashboard.cancel_abandoned_jobs": "Zrušit akce opuštěných úloh",
+ "admin.dashboard.stop_endless_tasks": "Zastavit akce nekonečných úloh",
+ "admin.dashboard.stop_zombie_tasks": "Zastavit akce zombie úloh",
+ "admin.dashboard.gc_lfs": "Sbírat garbage z LFS meta objektů",
+ "admin.dashboard.delete_old_system_notices": "Odstranit všechna stará systémová upozornění z databáze",
+ "admin.dashboard.update_checker": "Kontrola aktualizací",
+ "admin.dashboard.cleanup_actions": "Vymazat prošlé protokoly a artefakty z akcí",
+ "admin.dashboard.cleanup_packages": "Vyčistit prošlé balíčky",
+ "admin.dashboard.cleanup_hook_task_table": "Vyčistit tabulku hook_task",
+ "admin.dashboard.sync_external_users": "Synchronizovat externí uživatelská data",
+ "admin.dashboard.reinit_missing_repos": "Znovu inicializovat všechny chybějící repozitáře, pro které existují záznamy",
+ "admin.dashboard.resync_all_hooks": "Znovu synchronizovat Git hooky všech repozitářů („před přijetím“, „aktualizace“, „po přijetí“, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Aktualizovat soubor „.ssh/authorized_principals“ pomocí Forgejo SSH Principal certifikátů.",
+ "admin.dashboard.resync_all_sshkeys": "Aktualizovat soubor „.ssh/authorized_keys“ pomocí klíčů SSH služby Forgejo.",
+ "admin.dashboard.git_gc_repos": "Provést úklid všech repozitářů",
+ "admin.dashboard.update_migration_poster_id": "Aktualizovat ID autora migrace",
+ "admin.dashboard.deleted_branches_cleanup": "Vyčistit odstraněné větve",
+ "admin.dashboard.archive_cleanup": "Smazat staré archivy repozitářů",
+ "admin.dashboard.check_repo_stats": "Zkontrolovat všechny statistiky repositáře",
+ "admin.dashboard.repo_health_check": "Kontrola stavu všech repozitářů",
+ "admin.dashboard.update_mirrors": "Upravit zrcadla",
+ "admin.dashboard.sync_repo_tags": "Synchronizovat značky z dat Gitu do databáze",
+ "admin.dashboard.sync_repo_branches": "Synchronizovat vynechané větve z dat Gitu do databáze",
+ "admin.dashboard.delete_generated_repository_avatars": "Odstranit vygenerované avatary repozitářů",
+ "admin.dashboard.sync_tag.started": "Synchronizace značek spuštěna",
+ "admin.dashboard.sync_branch.started": "Synchronizace větví spuštěna",
+ "admin.dashboard.delete_old_actions.started": "Spuštěno odstraňování všech starých aktivit z databáze.",
+ "admin.dashboard.delete_missing_repos.started": "Spuštěna úloha mazání všech repozitářů, které nemají Git soubory.",
+ "admin.dashboard.delete_repo_archives.started": "Spuštěna úloha smazání všech archivovaných repozitářů.",
+ "admin.dashboard.delete_inactive_accounts.started": "Spuštěna úloha mazání všech neaktivovaných účtů.",
+ "admin.dashboard.cron.finished": "Naplánovaná úloha: %[1]s skončila",
+ "admin.dashboard.cron.error": "Chyba v naplánované úloze: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Naplánovaná úloha: %[1]s zrušena: %[3]s",
+ "admin.dashboard.cron.process": "Naplánovaná úloha: %[1]s",
+ "admin.dashboard.cron.started": "Začala naplánovaná úloha: %[1]s",
+ "admin.dashboard.task.unknown": "Neznámá úloha: %[1]s",
+ "admin.dashboard.task.finished": "Úloha: %[1]s začala %[2]s skončila",
+ "admin.dashboard.task.error": "Chyba v úloze: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Úloha: %[1]s zrušean: %[3]s",
+ "admin.dashboard.task.process": "Úloha: %[1]s",
+ "admin.dashboard.task.started": "Zahájena úloha: %[1]s",
+ "admin.dashboard.operation_run": "Spustit",
+ "admin.dashboard.operation_switch": "Přepnout",
+ "admin.dashboard.operation_name": "Název operace",
+ "admin.dashboard.system_status": "Stav systému",
+ "admin.dashboard.operations": "Operace údržby",
+ "admin.dashboard.statistic": "Souhrn",
+ "admin.dashboard.new_version_hint": "Forgejo %s je nyní k dispozici, aktuálně používáte verzi %s. Pro více informací viz blog.",
"admin.monitor.queue.settings.remove_all_items.success": "Všechny položky ve frontě byly odstraněny.",
"admin.monitor.queue.settings.remove_all_items": "Odstranit vše",
"admin.monitor.queue.settings.changed": "Nastavení upravena",
@@ -8,7 +134,7 @@
"admin.monitor.queue.settings.maxnumberworkers": "Maximální počet workerů",
"admin.monitor.queue.settings.description": "Pooly dynamicky rostou podle blokování fronty jejich workerů.",
"admin.monitor.queue.settings.title": "Nastavení poolu",
- "admin.monitor.queue.review_add": "Posoudit / přidat workery",
+ "admin.monitor.queue.review_add": "Zkontrolovat / přidat workery",
"admin.monitor.queue.numberinqueue": "Číslo ve frontě",
"admin.monitor.queue.maxnumberworkers": "Maximální počet workerů",
"admin.monitor.queue.activeworkers": "Aktivní workery",
@@ -28,7 +154,7 @@
"admin.users.list_status_filter.is_admin": "Administrátor",
"admin.users.list_status_filter.not_active": "Neaktivní",
"admin.users.list_status_filter.is_active": "Aktivní",
- "admin.users.list_status_filter.reset": "Obnovit",
+ "admin.users.list_status_filter.reset": "Resetovat",
"admin.users.list_status_filter.menu_text": "Filtr",
"admin.system_status.gc_times": "Časy GC",
"admin.system_status.last_gc_pause": "Poslední pauza GC",
@@ -62,9 +188,9 @@
"markup.filepreview.lines": "Řádky %[1]d až %[2]d v souboru %[3]s",
"markup.filepreview.line": "Řádek %[1]d v souboru %[2]s",
"actions.variables.update.success": "Proměnná byla upravena.",
- "actions.variables.update.failed": "Úprava proměnné se nezdařila.",
+ "actions.variables.update.failed": "Nepodařilo se upravit proměnnou.",
"actions.variables.creation.success": "Proměnná „%s“ byla přidána.",
- "actions.variables.creation.failed": "Přidání proměnné se nezdařilo.",
+ "actions.variables.creation.failed": "Nepodařilo se přidat proměnnou.",
"actions.variables.deletion.success": "Proměnná byla odstraněna.",
"actions.variables.deletion.failed": "Nepodařilo se odstranit proměnnou.",
"actions.variables.not_found": "Nepodařilo se najít proměnnou.",
@@ -771,5 +897,45 @@
"repo.files.caption": "Soubory repozitáře (poslední revize jako první)",
"repo.files.filename": "Název souboru",
"repo.files.last_commit_message": "Zpráva poslední revize",
- "repo.files.last_commit_date": "Datum poslední revize"
+ "repo.files.last_commit_date": "Datum poslední revize",
+ "actions.runs.delete.error_could_not_load_run": "Nepodařilo se načíst běh pro odstranění.",
+ "actions.runs.delete.error_could_not_delete_run": "Nepodařilo se odstranit běh.",
+ "actions.runs.delete.button": "Odstranit běh",
+ "actions.runs.delete.error": "Nepodařilo se odstranit běh workflow.",
+ "actions.runs.delete.confirm_action": "Opravdu chcete odstranit tento běh workflow?",
+ "settings.authorized_integrations": "Autorizované integrace",
+ "settings.manage_authorized_integrations": "Autorizované integrace",
+ "settings.authorized_integration.desc": "Autorizované integrace umožňují službě Forgejo získávat podepsaná JWT, ověřovat jejich tvrzení na základě nastavených pravidel a udělovat jim přístup k rozhraním API.",
+ "settings.authorized_integration.ui.generic": "Obecné JWT",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Forgejo Actions (lokální)",
+ "settings.authorized_integration.none": "V tuto chvíli nejsou nastaveny žádné autorizované integrace.",
+ "settings.authorized_integration.field.name": "Název",
+ "settings.authorized_integration.field.description": "Popis",
+ "settings.authorized_integration.field.description.placeholder": "Používáno ke zveřejnění balíčků při …",
+ "settings.authorized_integration.field.audience": "Audience (nárok aud)",
+ "settings.authorized_integration.field.issuer": "Vydavatel (nárok iss)",
+ "settings.authorized_integration.field.claim_rules": "JSON pravidel nároků",
+ "settings.authorized_integration.claims.generic": "Obecná pravidla JWT",
+ "settings.authorized_integration.perms.title": "Povolené funkce",
+ "settings.authorized_integration.copy_audience": "Kopírovat audienci do schránky",
+ "repo.pulls.status_checks_skipped": "Přeskočeno",
+ "repo.packages.visibility_warning": "Tento repozitář je soukromý, ale odkazované balíčky jsou veřejné (majitel %s je veřejný).",
+ "settings.authorized_integration.edit": "Upravit",
+ "settings.authorized_integration.edit_page_title": "Autorizovaná integrace %s",
+ "settings.authorized_integration.create_page_title": "Vytvořit autorizovanou integraci",
+ "settings.authorized_integration.save": "Uložit autorizovanou integraci",
+ "settings.authorized_integration.create": "Vytvořit autorizovanou integraci",
+ "settings.authorized_integration.create_success": "Vytvořena autorizovaná integrace: %s",
+ "settings.authorized_integration.name.required": "Je vyžadován název autorizované integrace.",
+ "settings.authorized_integration.issuer.invalid": "Nepodařilo se ověřit vydavatele: %s",
+ "settings.authorized_integration.claim_rules.invalid": "Nepodařilo se ověřit pravidla nárokování: %s",
+ "settings.authorized_integration.specified_repos_none": "Autorizované integrace s určenými repozitáři musí mít alespoň jeden repozitář.",
+ "settings.authorized_integration.specified_repos_and_public_only": "Autorizované integrace s určenými repozitáři nelze kombinovat s rozsahem pouze pro veřejnost.",
+ "settings.authorized_integration.specified_repos_and_invalid_scope": "Autorizované integrace s určenými repozitáři lze použít pouze s rozsahy read:issue, write:issue, read:repository a write:repository.",
+ "settings.authorized_integration.add": "Přidat autorizovanou integraci",
+ "settings.authorized_integration.delete.header": "Odstranit autorizovanou integraci",
+ "settings.authorized_integration.delete.body": "Odstranění autorizované integrace odvolá přístup integrující aplikace k vašemu účtu. Tato akce je trvalá a nevratná. Vytvoření nové autorizované integrace nebude mít stejný nárok Audience (aud). Pokračovat?",
+ "settings.authorized_integration.deleted": "Autorizovaná integrace byla úspěšně odstraněna.",
+ "admin.auths.oauth2_dyn_group_maps": "Dynamicky přidat uživatele do týmů v závislosti na dynamickém mapování skupin. (Volitelné)",
+ "admin.auths.oauth2_dyn_group_maps_removal": "Dynamicky odebrat uživatele ze všech týmů, do kterých uživatel není přidán, v závislosti na mapování skupin."
}
diff --git a/options/locale_next/locale_da.json b/options/locale_next/locale_da.json
index d863f0529d..35dbf78806 100644
--- a/options/locale_next/locale_da.json
+++ b/options/locale_next/locale_da.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Sti",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Skematisk",
+ "admin.config.db.user": "Brugernavn",
+ "admin.config.db.name": "Navn",
+ "admin.config.db.host": "Vært",
+ "admin.config.db.type": "Type",
+ "admin.config.db.header": "Database konfiguration",
+ "admin.config.mailer.user": "Bruger",
+ "admin.config.mailer.smtp.port": "SMTP-port",
+ "admin.config.mailer.smtp.addr": "SMTP vært",
+ "admin.config.mailer.enable_helo": "Aktiver HELO",
+ "admin.config.mailer.protocol": "Protokol",
+ "admin.config.mailer.use_dummy": "Attrapp",
+ "admin.config.mailer.sendmail.timeout": "Sendmail timeout",
+ "admin.config.mailer.sendmail.args": "Ekstra argumenter til Sendmail",
+ "admin.config.mailer.sendmail.path": "Sendmail sti",
+ "admin.config.mailer.sendmail.use": "Brug Sendmail",
+ "admin.config.mailer.name": "Navn",
+ "admin.config.mailer.enabled": "Aktiveret",
+ "admin.config.mailer.header": "Mailer konfiguration",
+ "admin.config.git.gc_timeout": "GC Operation timeout",
+ "admin.config.git.pull_timeout": "Pull Operation timeout",
+ "admin.config.git.clone_timeout": "Klone Operation timeout",
+ "admin.config.git.mirror_timeout": "Spejlopdateringstimeout",
+ "admin.config.git.migrate_timeout": "Migration timeout",
+ "admin.config.git.gc_args": "GC argumenter",
+ "admin.config.git.diff.max_files": "Max diff filer vist",
+ "admin.config.git.diff.max_line_characters": "Maks. diff-tegn pr. linje",
+ "admin.config.git.diff.max_lines": "Max diff-linjer pr. fil",
+ "admin.config.git.disable_diff_highlight": "Deaktiver diff-syntaksfremhævning",
+ "admin.config.git.version": "Git version",
+ "admin.config.git.header": "Git konfiguration",
+ "admin.config.ssh.minimum_key_sizes": "Minimum nøglestørrelser",
+ "admin.config.ssh.minimum_key_size_check": "Minimum nøglestørrelse kontrol",
+ "admin.config.ssh.keygen_path": "Keygen (\"ssh-keygen\") sti",
+ "admin.config.ssh.key_test_path": "Nøgleteststi",
+ "admin.config.ssh.root_path": "Rodsti",
+ "admin.config.ssh.listen_port": "Lyt port",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "SSH server domæne",
+ "admin.config.ssh.use_builtin_server": "Brug indbygget server",
+ "admin.config.ssh.enabled": "Aktiveret",
+ "admin.config.ssh.header": "SSH konfiguration",
+ "admin.users.never_login": "Aldrig logget ind",
+ "admin.users.last_login": "Sidst logget ind",
+ "admin.users.created": "Oprettet",
+ "admin.users.repos": "Depoter",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Remote",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Reserveret",
+ "admin.users.restricted": "Begrænset",
+ "admin.users.admin": "Admin",
+ "admin.users.activated": "Aktiveret",
+ "admin.users.full_name": "Fulde navn",
+ "admin.users.name": "Brugernavn",
+ "admin.packages.published": "Offentliggjort",
+ "admin.packages.size": "Størrelse",
+ "admin.packages.repository": "Depot",
+ "admin.packages.type": "Type",
+ "admin.packages.version": "Version",
+ "admin.packages.name": "Navn",
+ "admin.packages.creator": "Skaber",
+ "admin.packages.owner": "Ejer",
+ "admin.packages.unreferenced_size": "Ikke-referencestørrelse: %s",
+ "admin.packages.total_size": "Samlet størrelse: %s",
+ "admin.repos.lfs_size": "LFS størrelse",
+ "admin.repos.size": "Størrelse",
+ "admin.repos.issues": "Problemer",
+ "admin.repos.name": "Navn",
+ "admin.repos.owner": "Ejer",
+ "admin.orgs.new_orga": "Ny organisation",
+ "admin.orgs.members": "Medlemmer",
+ "admin.orgs.teams": "Teams",
+ "admin.orgs.name": "Navn",
+ "admin.dashboard.rebuild_issue_indexer": "Genopbyg problemindekser",
+ "admin.dashboard.start_schedule_tasks": "Start planlæg handlingsopgaver",
+ "admin.dashboard.cancel_abandoned_jobs": "Annuller forladte handlingsjob",
+ "admin.dashboard.stop_endless_tasks": "Stop endeløse handlingsopgaver",
+ "admin.dashboard.stop_zombie_tasks": "Stop zombiehandlingsopgaver",
+ "admin.dashboard.gc_lfs": "Affaldssamler LFS-metaobjekter",
+ "admin.dashboard.delete_old_system_notices": "Slet alle gamle systemmeddelelser fra databasen",
+ "admin.dashboard.update_checker": "Opdateringskontrol",
+ "admin.dashboard.cleanup_actions": "Oprydning af udløbne logfiler og artefakter fra handlinger",
+ "admin.dashboard.cleanup_packages": "Ryd udløbne pakker",
+ "admin.dashboard.cleanup_hook_task_table": "Oprydning hook_task tabel",
+ "admin.dashboard.sync_external_users": "Synkroniser eksterne brugerdata",
+ "admin.dashboard.reinit_missing_repos": "Geninitialiser alle manglende Git-depoter, som der findes poster for",
+ "admin.dashboard.resync_all_hooks": "Gensynkroniser Git hooks for alle depoter (pre-receive, update, post-receive, proc-receive,...)",
+ "admin.dashboard.resync_all_sshprincipals": "Opdater \".ssh/authorized_principals\" filen med Forgejo SSH principals.",
+ "admin.dashboard.resync_all_sshkeys": "Opdater filen \".ssh/authorized_keys\" med Forgejo SSH-nøgler.",
+ "admin.dashboard.git_gc_repos": "Samle alt affald fra alle depoter",
+ "admin.dashboard.update_migration_poster_id": "Opdater migrationsplakat-id'er",
+ "admin.dashboard.deleted_branches_cleanup": "Ryd op i slettede grene",
+ "admin.dashboard.archive_cleanup": "Slet gamle depotarkiver",
+ "admin.dashboard.check_repo_stats": "Tjek alle depotstatistikker",
+ "admin.dashboard.repo_health_check": "Sundhedstjek alle depoter",
+ "admin.dashboard.update_mirrors": "Opdater spejle",
+ "admin.dashboard.sync_repo_tags": "Synkroniser tags fra Git-data til database",
+ "admin.dashboard.sync_repo_branches": "Synkroniser mistede grene fra Git-data til databasen",
+ "admin.dashboard.delete_generated_repository_avatars": "Slet genererede depot avatarer",
+ "admin.dashboard.sync_tag.started": "Tag-synkronisering er startet",
+ "admin.dashboard.sync_branch.started": "Gren synkronisering startede",
+ "admin.dashboard.delete_old_actions.started": "Slet alle gamle aktiviteter fra den påbegyndte database.",
+ "admin.dashboard.delete_missing_repos.started": "Slet alle depoter, der mangler deres Git-filopgave startet.",
+ "admin.dashboard.delete_repo_archives.started": "Slet alle repository arkiver opgave startet.",
+ "admin.dashboard.delete_inactive_accounts.started": "Slet alle uaktiverede konti opgave startet.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s er færdig",
+ "admin.dashboard.cron.error": "Fejl i Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s annulleret: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Startede Cron: %[1]s",
+ "admin.dashboard.task.unknown": "Ukendt opgave: %[1]s",
+ "admin.dashboard.task.finished": "Opgave: %[1]s startet af %[2]s er afsluttet",
+ "admin.dashboard.task.error": "Fejl i Opgave: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Opgave: %[1]s annulleret: %[3]s",
+ "admin.dashboard.task.process": "Opgave: %[1]s",
+ "admin.dashboard.task.started": "Startet opgave: %[1]s",
+ "admin.dashboard.operation_run": "Kør",
+ "admin.dashboard.operation_switch": "Skift",
+ "admin.dashboard.operation_name": "Operations navn",
+ "admin.dashboard.system_status": "System status",
+ "admin.dashboard.operations": "Vedligeholdelses operationer",
+ "admin.dashboard.statistic": "Oversigt",
+ "admin.dashboard.new_version_hint": "Forgejo %s er nu tilgængelig, du kører %s. Tjek bloggen for flere detaljer.",
"admin.monitor.queue.settings.remove_all_items.success": "Alle varer i køen er blevet fjernet.",
"admin.monitor.queue.settings.remove_all_items": "Slet alle",
"admin.monitor.queue.settings.changed": "Indstillinger opdateret",
diff --git a/options/locale_next/locale_de-DE.json b/options/locale_next/locale_de-DE.json
index b2ab8e138e..b8ba57a95c 100644
--- a/options/locale_next/locale_de-DE.json
+++ b/options/locale_next/locale_de-DE.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Verzeichnis",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.user": "Benutzername",
+ "admin.config.db.name": "Name",
+ "admin.config.db.host": "Host",
+ "admin.config.db.type": "Typ",
+ "admin.config.db.header": "Datenbankkonfiguration",
+ "admin.config.mailer.user": "Benutzer",
+ "admin.config.mailer.smtp.port": "SMTP-Port",
+ "admin.config.mailer.smtp.addr": "SMTP-Host",
+ "admin.config.mailer.enable_helo": "HELO aktivieren",
+ "admin.config.mailer.protocol": "Protokoll",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Sendmail-Timeout",
+ "admin.config.mailer.sendmail.args": "Zusätzliche Argumente für Sendmail",
+ "admin.config.mailer.sendmail.path": "Sendmail-Pfad",
+ "admin.config.mailer.sendmail.use": "Sendmail benutzen",
+ "admin.config.mailer.name": "Name",
+ "admin.config.mailer.enabled": "Aktiviert",
+ "admin.config.mailer.header": "Mailer-Konfiguration",
+ "admin.config.git.gc_timeout": "Zeitlimit für GC",
+ "admin.config.git.pull_timeout": "Zeitlimit für Pull",
+ "admin.config.git.clone_timeout": "Zeitlimit für Klon",
+ "admin.config.git.mirror_timeout": "Zeitlimit für Spiegel-Aktualisierung",
+ "admin.config.git.migrate_timeout": "Zeitlimit für Migration",
+ "admin.config.git.gc_args": "GC-Argumente",
+ "admin.config.git.diff.max_files": "Max. Diff-Dateien (Angezeigte)",
+ "admin.config.git.diff.max_line_characters": "Max. Diff-Zeichen (in einer Zeile)",
+ "admin.config.git.diff.max_lines": "Max. Diff-Zeilen (in einer Datei)",
+ "admin.config.git.disable_diff_highlight": "Diff-Syntaxhervorhebung ausschalten",
+ "admin.config.git.version": "Git-Version",
+ "admin.config.git.header": "Git-Konfiguration",
+ "admin.config.ssh.minimum_key_sizes": "Mindestschlüssellängen",
+ "admin.config.ssh.minimum_key_size_check": "Prüfung der Mindestschlüssellänge",
+ "admin.config.ssh.keygen_path": "Keygen-Pfad („ssh-keygen“)",
+ "admin.config.ssh.key_test_path": "Schlüssel-Test-Pfad",
+ "admin.config.ssh.root_path": "Wurzelverzeichnis",
+ "admin.config.ssh.listen_port": "Listen-Port",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "SSH-Server-Domain",
+ "admin.config.ssh.use_builtin_server": "Eingebauten Server verwenden",
+ "admin.config.ssh.enabled": "Aktiviert",
+ "admin.config.ssh.header": "SSH-Konfiguration",
+ "admin.users.never_login": "Hat sich noch nie eingeloggt",
+ "admin.users.last_login": "Letzte Anmeldung",
+ "admin.users.created": "Registriert am",
+ "admin.users.repos": "Repos",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Remote",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Reserviert",
+ "admin.users.restricted": "Eingeschränkt",
+ "admin.users.admin": "Administrator",
+ "admin.users.activated": "Aktiviert",
+ "admin.users.full_name": "Vollständiger Name",
+ "admin.users.name": "Benutzername",
+ "admin.packages.published": "Veröffentlicht",
+ "admin.packages.size": "Größe",
+ "admin.packages.repository": "Repository",
+ "admin.packages.type": "Typ",
+ "admin.packages.version": "Version",
+ "admin.packages.name": "Name",
+ "admin.packages.creator": "Ersteller",
+ "admin.packages.owner": "Besitzer",
+ "admin.packages.unreferenced_size": "Nicht referenzierte Größe: %s",
+ "admin.packages.total_size": "Gesamtgröße: %s",
+ "admin.repos.lfs_size": "LFS-Größe",
+ "admin.repos.size": "Größe",
+ "admin.repos.issues": "Issues",
+ "admin.repos.name": "Name",
+ "admin.repos.owner": "Besitzer",
+ "admin.orgs.new_orga": "Neue Organisation",
+ "admin.orgs.members": "Mitglieder",
+ "admin.orgs.teams": "Teams",
+ "admin.orgs.name": "Name",
+ "admin.dashboard.rebuild_issue_indexer": "Issue-Indexer neu bauen",
+ "admin.dashboard.start_schedule_tasks": "Terminierte Actions-Aufgaben starten",
+ "admin.dashboard.cancel_abandoned_jobs": "Aufgegebene Actions-Jobs abbrechen",
+ "admin.dashboard.stop_endless_tasks": "Endlose Actions-Aufgaben stoppen",
+ "admin.dashboard.stop_zombie_tasks": "Zombie-Actions-Aufgaben stoppen",
+ "admin.dashboard.gc_lfs": "Garbage-Collection für LFS-Meta-Objekte ausführen",
+ "admin.dashboard.delete_old_system_notices": "Alle alten Systemmeldungen aus der Datenbank löschen",
+ "admin.dashboard.update_checker": "Update-Checker",
+ "admin.dashboard.cleanup_actions": "Abgelaufene Logs und Artefakte von Actions bereinigen",
+ "admin.dashboard.cleanup_packages": "Veraltete Pakete bereinigen",
+ "admin.dashboard.cleanup_hook_task_table": "Hook-Task-Tabelle bereinigen",
+ "admin.dashboard.sync_external_users": "Externe Benutzerdaten synchronisieren",
+ "admin.dashboard.reinit_missing_repos": "Alle Git-Repositorys neu einlesen, für die Einträge existieren",
+ "admin.dashboard.resync_all_hooks": "Hooks für alle Repositorys erneut synchronisieren (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Aktualisiere die Datei „.ssh/authorized_principals“ mit Forgejo-SSH-Principals.",
+ "admin.dashboard.resync_all_sshkeys": "Die Datei „.ssh/authorized_keys“ mit Forgejo-SSH-Schlüsseln aktualisieren.",
+ "admin.dashboard.git_gc_repos": "Garbage-Collection für alle Repositorys ausführen",
+ "admin.dashboard.update_migration_poster_id": "Migrations-Poster-IDs aktualisieren",
+ "admin.dashboard.deleted_branches_cleanup": "Gelöschte Branches bereinigen",
+ "admin.dashboard.archive_cleanup": "Alte Repository-Archive löschen",
+ "admin.dashboard.check_repo_stats": "Überprüfe alle Repository-Statistiken",
+ "admin.dashboard.repo_health_check": "Health-Prüfungen für alle Repositorys ausführen",
+ "admin.dashboard.update_mirrors": "Spiegel aktualisieren",
+ "admin.dashboard.sync_repo_tags": "Tags aus Git-Daten zu Datenbank synchronisieren",
+ "admin.dashboard.sync_repo_branches": "Fehlende Branches aus den Git-Daten in die Datenbank synchronisieren",
+ "admin.dashboard.delete_generated_repository_avatars": "Generierte Repository-Avatare löschen",
+ "admin.dashboard.sync_tag.started": "Tag-Synchronisierung gestartet",
+ "admin.dashboard.sync_branch.started": "Synchronisierung der Branches gestartet",
+ "admin.dashboard.delete_old_actions.started": "Löschen aller alten Aktivitäten aus der Datenbank gestartet.",
+ "admin.dashboard.delete_missing_repos.started": "Alle Repositorys löschen, die den Git-Dateien-Task nicht gestartet haben.",
+ "admin.dashboard.delete_repo_archives.started": "Löschen aller Repository-Archive gestartet.",
+ "admin.dashboard.delete_inactive_accounts.started": "Löschen aller nicht aktivierten Account-Aufgabe gestartet.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s ist beendet",
+ "admin.dashboard.cron.error": "Fehler in Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s abgebrochen: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron gestartet: %[1]s",
+ "admin.dashboard.task.unknown": "Unbekannte Aufgabe: %[1]s",
+ "admin.dashboard.task.finished": "Aufgabe: %[1]s, gestartet von %[2]s, wurde beendet",
+ "admin.dashboard.task.error": "Fehler in Aufgabe: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Aufgabe: %[1]s abgebrochen: %[3]s",
+ "admin.dashboard.task.process": "Aufgabe: %[1]s",
+ "admin.dashboard.task.started": "Aufgabe gestartet: %[1]s",
+ "admin.dashboard.operation_run": "Ausführen",
+ "admin.dashboard.operation_switch": "Wechseln",
+ "admin.dashboard.operation_name": "Name der Operation",
+ "admin.dashboard.system_status": "System-Status",
+ "admin.dashboard.operations": "Wartungsoperationen",
+ "admin.dashboard.statistic": "Übersicht",
+ "admin.dashboard.new_version_hint": "Forgejo %s ist jetzt verfügbar, deine derzeitige Version ist %s. Weitere Details findest du im Blog.",
"admin.monitor.queue.settings.remove_all_items.success": "Alle Elemente in der Warteschlange wurden entfernt.",
"admin.monitor.queue.settings.remove_all_items": "Alle entfernen",
"admin.monitor.queue.settings.changed": "Einstellungen aktualisiert",
@@ -751,5 +877,57 @@
"repo.files.caption": "Repository-Dateien (neuester Commit zuerst)",
"repo.files.filename": "Dateiname",
"repo.files.last_commit_message": "Letzte Commit-Nachricht",
- "repo.files.last_commit_date": "Letztes Commit-Datum"
+ "repo.files.last_commit_date": "Letztes Commit-Datum",
+ "settings.authorized_integrations": "Autorisierte Integrationen",
+ "settings.manage_authorized_integrations": "Autorisierte Integrationen",
+ "settings.authorized_integration.desc": "Autorisierte Integrationen erlauben es Forgejo, signierte JWTs zu empfangen, ihre Claims gegen die konfigurierten Regeln zu validieren und ihnen zu erlauben, auf Forgejos APIs zuzugreifen.",
+ "settings.authorized_integration.ui.generic": "Generisches JWT",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Forgejo Actions (Lokal)",
+ "settings.authorized_integration.none": "Es sind aktuell keine autorisierten Integrationen konfiguriert.",
+ "settings.authorized_integration.field.name": "Name",
+ "settings.authorized_integration.field.description": "Beschreibung",
+ "settings.authorized_integration.field.description.placeholder": "Verwendet zur Veröffentlichung von Paketen bei …",
+ "settings.authorized_integration.field.audience": "Publikum (aud-Behauptung)",
+ "settings.authorized_integration.field.issuer": "Issuer (iss-Claim)",
+ "settings.authorized_integration.field.claim_rules": "Claim-Regeln-JSON",
+ "settings.authorized_integration.claims.generic": "Generische JWT-Regeln",
+ "settings.authorized_integration.perms.title": "Erlaubte Fähigkeiten",
+ "settings.authorized_integration.copy_audience": "Publikum in Zwischenablage kopieren",
+ "actions.runs.delete.error_could_not_load_run": "Zu löschender Run konnte nicht geladen werden.",
+ "actions.runs.delete.error_could_not_delete_run": "Run konnte nicht gelöscht werden.",
+ "actions.runs.delete.button": "Run löschen",
+ "actions.runs.delete.error": "Der Workflow-Run konnte nicht gelöscht werden.",
+ "actions.runs.delete.confirm_action": "Möchtest du wirklich diesen Workflow-Run löschen?",
+ "settings.authorized_integration.forgejo_actions_local.event.label": "Ereignis:",
+ "repo.pulls.status_checks_skipped": "Übersprungen",
+ "settings.authorized_integration.create_page_title": "Autorisierte Integration erstellen",
+ "settings.authorized_integration.create": "Autorisierte Integration erstellen",
+ "settings.authorized_integration.create_success": "Autorisierte Integration erstellt: %s",
+ "settings.authorized_integration.add": "Autorisierte Integration hinzufügen",
+ "settings.authorized_integration.delete.header": "Autorisierte Integration löschen",
+ "settings.authorized_integration.deleted": "Die autorisierte Integration wurde erfolgreich gelöscht.",
+ "settings.authorized_integration.forgejo_actions_local.select_repo": "Auswählen",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.label": "Git-Referenz:",
+ "settings.authorized_integration.edit": "Bearbeiten",
+ "settings.authorized_integration.edit_page_title": "Autorisierte Integration %s",
+ "settings.authorized_integration.save": "Autorisierte Integration speichern",
+ "settings.authorized_integration.name.required": "Der Name der autorisierten Integration wird benötigt.",
+ "repo.packages.visibility_warning": "Dieses Repository ist privat, aber verknüpfte Pakete sind öffentlich (Besitzer %s ist öffentlich).",
+ "settings.authorized_integration.issuer.invalid": "Validierung des Issue-Einreichers fehlgeschlagen: %s",
+ "settings.authorized_integration.claim_rules.invalid": "Validierung der Claim-Regeln fehlgeschlagen: %s",
+ "settings.authorized_integration.specified_repos_none": "Autorisierte Integrationen mit festgelegten Repositorys müssen mindestens ein Repository haben.",
+ "settings.authorized_integration.specified_repos_and_public_only": "Autorisierte Integrationen mit festgelegten Repositorys können nicht mit dem Scope „Nur öffentlich“ kombiniert werden.",
+ "settings.authorized_integration.specified_repos_and_invalid_scope": "Autorisierte Integrationen mit festgelegten Repositorys können nur mit den Scopes „read:issue“, „write:issue“, „read:repository“ und „write:repository“ benutzt werden.",
+ "settings.authorized_integration.delete.body": "Wenn eine autorisierte Integration gelöscht wird, wird dies den Zugang auf Ihr Konto für die integrierende Anwendung widerrufen. Dies ist permament und kann nicht rückgängig gemacht werden. Das Erstellen einer neuen Integration wird nicht das selbe Publikum (aud-Claim) haben. Fortfahren?",
+ "settings.authorized_integration.forgejo_actions_local.select_repository": "Repository auswählen: (Forgejo Actions muss im Repository aktiviert sein)",
+ "settings.authorized_integration.forgejo_actions_local.description": "Forgejo Actions wird in der Lage sein, auf Forgejo zuzugreifen, einerseits mit Hilfe dieser Autorisierten Integration von einem einzelnen ausgewählten Repository aus, und andererseits, falls die Ausführung die unten definierten Bedingungen erfüllt.",
+ "settings.authorized_integration.forgejo_actions_local.repo.required": "Das „Forgejo Actions“-Quellrepository muss ausgewählt sein.",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.label": "Workflow-Datei (ohne Verzeichnis):",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.help": "Falls leer, wird jeder Workflow zugelassen. Siehe die %[2]s-Dokumentation für die Muster-Syntax.testing.yml, test-*.yml.",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.error": "Fehler beim Parsen der Workflow-Datei: %s",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.help": "Falls leer, wird jede Referenz zugelassen. Siehe die %[2]s-Dokumentation für die Muster-Syntax.refs/heads/main, refs/pull/*/head.",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.error": "Fehler beim Parsen von git-Referenz: %s",
+ "settings.authorized_integration.forgejo_actions_local.event.help": "Falls keine Ereignisse ausgewählt wurden, wird jedes Ereignis zugelassen.",
+ "admin.auths.oauth2_dyn_group_maps": "Benutzer dynamisch zu Teams basierend auf den dynamischen Gruppen-Zuteilungen hinzufügen. (Optional)",
+ "admin.auths.oauth2_dyn_group_maps_removal": "Dynamisch Benutzer von allen Teams entfernen, falls der Benutzer nicht basierend auf den Gruppen-Mappings hinzugefügt wird."
}
diff --git a/options/locale_next/locale_el-GR.json b/options/locale_next/locale_el-GR.json
index ee9e48e977..3345d15cc8 100644
--- a/options/locale_next/locale_el-GR.json
+++ b/options/locale_next/locale_el-GR.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Διαδρομή",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Σχήμα",
+ "admin.config.db.user": "Όνομα Χρήστη",
+ "admin.config.db.name": "Όνομα",
+ "admin.config.db.host": "Διακομιστής",
+ "admin.config.db.type": "Τύπος",
+ "admin.config.db.header": "Ρυθμίσεις βάσης δεδομένων",
+ "admin.config.mailer.user": "Χρήστης",
+ "admin.config.mailer.smtp.port": "Θύρα SMTP",
+ "admin.config.mailer.smtp.addr": "Διεύθυνση SMTP",
+ "admin.config.mailer.enable_helo": "Ενεργοποίηση HELO",
+ "admin.config.mailer.protocol": "Πρωτόκολλο",
+ "admin.config.mailer.use_dummy": "Ψεύτικο",
+ "admin.config.mailer.sendmail.timeout": "Χρονικό όριο Sendmail",
+ "admin.config.mailer.sendmail.args": "Επιπλέον παράμετροι για το Sendmail",
+ "admin.config.mailer.sendmail.path": "Τοποθεσία Sendmail",
+ "admin.config.mailer.sendmail.use": "Χρήση Sendmail",
+ "admin.config.mailer.name": "Όνομα",
+ "admin.config.mailer.enabled": "Ενεργοποιημένο",
+ "admin.config.mailer.header": "Ρυθμίσεις αλληλογραφίας",
+ "admin.config.git.gc_timeout": "Χρονικό όριο λειτουργίας GC",
+ "admin.config.git.pull_timeout": "Χρονικό όριο pull",
+ "admin.config.git.clone_timeout": "Χρονικό όριο κλωνοποίησης",
+ "admin.config.git.mirror_timeout": "Χρονικό όριο ενημέρωσης ειδώλου",
+ "admin.config.git.migrate_timeout": "Χρονικό όριο μεταφοράς",
+ "admin.config.git.gc_args": "Παράμετροι GC",
+ "admin.config.git.diff.max_files": "Μέγιστος αριθμός εμφανιζόμενων αρχείων ανά diff",
+ "admin.config.git.diff.max_line_characters": "Μέγιστος αριθμός χαρακτήρων diff ανά γραμμή",
+ "admin.config.git.diff.max_lines": "Μέγιστες γραμμές diff ανά αρχείο",
+ "admin.config.git.disable_diff_highlight": "Απενεργοποίηση επισήμανσης σύνταξης diff",
+ "admin.config.git.version": "Έκδοση Git",
+ "admin.config.git.header": "Ρυθμίσεις Git",
+ "admin.config.ssh.minimum_key_sizes": "Ελάχιστα μεγέθη κλειδιών",
+ "admin.config.ssh.minimum_key_size_check": "Έλεγχος ελάχιστου μεγέθους κλειδιού",
+ "admin.config.ssh.keygen_path": "Διαδρομή keygen («ssh-keygen»)",
+ "admin.config.ssh.key_test_path": "Διαδρομή δοκιμής κλειδιού",
+ "admin.config.ssh.root_path": "Τοποθεσία root",
+ "admin.config.ssh.listen_port": "Θύρα ακρόασης (Listen port)",
+ "admin.config.ssh.port": "Θύρα",
+ "admin.config.ssh.domain": "Domain διακομιστή SSH",
+ "admin.config.ssh.use_builtin_server": "Χρήση ενσωματωμένου διακομιστή",
+ "admin.config.ssh.enabled": "Ενεργοποιημένο",
+ "admin.config.ssh.header": "Ρυθμίσεις SSH",
+ "admin.users.never_login": "Καμία σύνδεση",
+ "admin.users.last_login": "Τελευταία σύνδεση",
+ "admin.users.created": "Δημιουργήθηκε",
+ "admin.users.repos": "Αποθετήρια",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Απομακρυσμένο",
+ "admin.users.bot": "Ρομπότ",
+ "admin.users.reserved": "Δεσμευμένο",
+ "admin.users.restricted": "Περιορισμένος",
+ "admin.users.admin": "Διαχειριστής",
+ "admin.users.activated": "Ενεργοποιήθηκε",
+ "admin.users.full_name": "Πλήρες όνομα",
+ "admin.users.name": "Όνομα Χρήστη",
+ "admin.packages.published": "Δημοσιευμένα",
+ "admin.packages.size": "Μέγεθος",
+ "admin.packages.repository": "Αποθετήριο",
+ "admin.packages.type": "Τύπος",
+ "admin.packages.version": "Έκδοση",
+ "admin.packages.name": "Όνομα",
+ "admin.packages.creator": "Δημιουργός",
+ "admin.packages.owner": "Ιδιοκτήτης",
+ "admin.packages.unreferenced_size": "Μέγεθος χωρίς αναφορά: %s",
+ "admin.packages.total_size": "Συνολικό μέγεθος: %s",
+ "admin.repos.lfs_size": "Μέγεθος LFS",
+ "admin.repos.size": "Μέγεθος",
+ "admin.repos.issues": "Ζητήματα",
+ "admin.repos.name": "Όνομα",
+ "admin.repos.owner": "Ιδιοκτήτης",
+ "admin.orgs.new_orga": "Νέος οργανισμός",
+ "admin.orgs.members": "Μέλη",
+ "admin.orgs.teams": "Ομάδες",
+ "admin.orgs.name": "Όνομα",
+ "admin.dashboard.rebuild_issue_indexer": "Αναδόμηση ευρετηρίου ζητημάτων",
+ "admin.dashboard.start_schedule_tasks": "Έναρξη προγραμματισμένων εργασιών",
+ "admin.dashboard.cancel_abandoned_jobs": "Ακύρωση εγκαταλελειμμένων εργασιών",
+ "admin.dashboard.stop_endless_tasks": "Διακοπή ατελείωτων εργασιών",
+ "admin.dashboard.stop_zombie_tasks": "Διακοπή των ζόμπι εργασιών δράσεων",
+ "admin.dashboard.gc_lfs": "Συλλογή απορριμάτων στα μετα-αντικείμενα LFS",
+ "admin.dashboard.delete_old_system_notices": "Διαγραφή όλων των παλιών ειδοποιήσεων συστήματος από τη βάση δεδομένων",
+ "admin.dashboard.update_checker": "Ελεγκτής ενημερώσεων",
+ "admin.dashboard.cleanup_actions": "Καθαρισμός ληγμένων καταγραφών και συνημμένων από τις δράσεις",
+ "admin.dashboard.cleanup_packages": "Εκκαθάριση ληγμένων πακέτων",
+ "admin.dashboard.cleanup_hook_task_table": "Εκκαθάριση πίνακα hook_task",
+ "admin.dashboard.sync_external_users": "Συγχρονισμός δεδομένων εξωτερικών χρηστών",
+ "admin.dashboard.reinit_missing_repos": "Επανεκκινήστε όλα τα αποθετήρια Git που λείπουν και για τα οποία υπάρχουν εγγραφές",
+ "admin.dashboard.resync_all_hooks": "Επανασυγχρονισμός των Git hook όλων των αποθετηρίων (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Ενημέρωση του αρχείου «.ssh/authorized_principals» με τις αρχές SSH του Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Ενημέρωση του αρχείου «.ssh/authorized_keys» με τα κλειδιά SSH του Forgejo.",
+ "admin.dashboard.git_gc_repos": "Garbage collect όλων των αποθετηρίων",
+ "admin.dashboard.update_migration_poster_id": "Ενημέρωση των ID συντακτών στη μεταγκατάσταση",
+ "admin.dashboard.deleted_branches_cleanup": "Εκκαθάριση διαγραμμένων κλάδων",
+ "admin.dashboard.archive_cleanup": "Διαγραφή παλαιών αρχείων λήψης αποθετηρίων",
+ "admin.dashboard.check_repo_stats": "Έλεγχος όλων των στατιστικών αποθετηρίων",
+ "admin.dashboard.repo_health_check": "Έλεγχος υγείας σε όλα τα αποθετήρια",
+ "admin.dashboard.update_mirrors": "Ενημέρωση ειδώλων",
+ "admin.dashboard.sync_repo_tags": "Συγχρονισμός tag, χρησιμοποιώντας τα δεδομένα git στην βάση δεδομένων",
+ "admin.dashboard.sync_repo_branches": "Συγχρονισμός κλάδων που λείπουν, χρησιμοποιώντας τα δεδομένα git στην βάση δεδομένων",
+ "admin.dashboard.delete_generated_repository_avatars": "Διαγραφή παραγμένων εικόνων αποθετηρίων",
+ "admin.dashboard.sync_tag.started": "Ξεκίνησε ο συγχρονισμός των ετικετών",
+ "admin.dashboard.sync_branch.started": "Ξεκίνησε ο συγχρονισμός των κλάδων",
+ "admin.dashboard.delete_old_actions.started": "Ξεκίνησε η διαγραφή όλων των παλιών δραστηριοτήτων από τη βάση δεδομένων.",
+ "admin.dashboard.delete_missing_repos.started": "Η διαγραφή όλων των αποθετηρίων που δεν έχουν αρχεία Git τους, ξεκίνησε.",
+ "admin.dashboard.delete_repo_archives.started": "Η διαγραφή όλων των αρχείων λήψης του αποθετηρίου ξεκίνησε.",
+ "admin.dashboard.delete_inactive_accounts.started": "Η διαγραφή όλων των μη ενεργοποιημένων λογαριασμών ξεκίνησε.",
+ "admin.dashboard.cron.finished": "Προγραμματισμένη Εργασία: %[1]s τελείωσε",
+ "admin.dashboard.cron.error": "Σφάλμα στη προγραμματισμένη εργασία: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Προγραμματισμένη εργασία: %[1]s ακυρώθηκε: %[3]s",
+ "admin.dashboard.cron.process": "Προγραμματισμένη Εργασία: %[1]s",
+ "admin.dashboard.cron.started": "Εκκίνηση Προγραμματισμένης Εργασίας: %[1]s",
+ "admin.dashboard.task.unknown": "Άγνωστη εργασία: %[1]s",
+ "admin.dashboard.task.finished": "Εργασία: %[1]s που εκκινήθηκε από %[2]s τελείωσε",
+ "admin.dashboard.task.error": "Σφάλμα στην Εργασία: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Εργασία: %[1]ακυρώθηκε: %[3]s",
+ "admin.dashboard.task.process": "Εργασία: %[1]s",
+ "admin.dashboard.task.started": "Εκκίνηση Εργασίας: %[1]s",
+ "admin.dashboard.operation_run": "Εκτέλεση",
+ "admin.dashboard.operation_switch": "Αλλαγή",
+ "admin.dashboard.operation_name": "Όνομα Λειτουργίας",
+ "admin.dashboard.system_status": "Κατάσταση συστήματος",
+ "admin.dashboard.operations": "Λειτουργίες συντήρησης",
+ "admin.dashboard.statistic": "Περίληψη",
+ "admin.dashboard.new_version_hint": "Το Forgejo %s είναι διαθέσιμο, χρησιμοποιείτε το %s. Ανατρέξτε στο blog για περισσότερες λεπτομέρειες.",
"admin.monitor.queue.settings.remove_all_items.success": "Όλα τα αντικείμενα στην ουρά αφαιρέθηκαν.",
"admin.monitor.queue.settings.remove_all_items": "Αφαίρεση όλων",
"admin.monitor.queue.settings.changed": "Οι ρυθμίσεις ενημερώθηκαν",
@@ -335,7 +461,7 @@
"migrate.items.labels": "Σήματα",
"migrate.items.issues": "Ζητήματα",
"migrate.items.pull_requests": "Pull requests",
- "migrate.items.merge_requests": "Merge requests",
+ "migrate.items.merge_requests": "Αιτήματα συγχώνευσης",
"migrate.items.releases": "Κυκλοφορίες",
"migrate.in_progress.git": "Τα δεδομένα Git μεταφέρονται",
"migrate.in_progress.topics": "Τα θέματα μεταφέρονται",
@@ -479,7 +605,7 @@
"actions.status.success": "Επιτυχία",
"actions.status.failure": "Αποτυχία",
"actions.status.cancelled": "Ακυρώθηκε",
- "actions.status.skipped": "Παρακάμφθηκε",
+ "actions.status.skipped": "Έγινε παράλειψη",
"actions.status.blocked": "Αποκλείστηκε",
"actions.runners": "Εκτελεστές",
"actions.runners.runner_manage_panel": "Διαχείριση εκτελεστών",
@@ -617,5 +743,45 @@
"actions.runners.runner_setup.button_copy_token_aria": "Αντιγραφή διακριτικού εκτελεστή",
"actions.runners.show_registration_token": "Εμφάνιση διακριτικού εγγραφής",
"actions.runners.token": "Διακριτικό",
- "settings.specific_repo_access": "Πρόσβαση Αποθετηρίου"
+ "settings.specific_repo_access": "Πρόσβαση αποθετηρίου",
+ "repo.files.filename": "Όνομα αρχείου",
+ "admin.federation.host.port": "Θύρα",
+ "admin.federation.host.software_name": "Λογισμικό",
+ "repo.pulls.status_checks_skipped": "Έγινε παράλειψη",
+ "admin.federation.host.created": "Δημιουργήθηκε",
+ "admin.federation.host.updated": "Ενημερώθηκε",
+ "admin.federation.host.latest_activity": "Τελευταία δραστηριότητα",
+ "admin.federation.users": "Χρήστες",
+ "settings.new_access_token": "Νέο διακριτικό πρόσβασης",
+ "settings.permissions_access_specific_repositories": "Συγκεκριμένα αποθετήρια",
+ "settings.access_token.selected_repositories": {
+ "one": "Επιλεγμένο αποθετήριο (%d)",
+ "other": "Επιλεγμένα αποθετήρια (%d)"
+ },
+ "settings.access_token.available_repositories": "Διαθέσιμα αποθετήρια",
+ "settings.access_token.no_repositories_selected": "Κανένα αποθετήριο επιλεγμένο.",
+ "settings.access_token.no_repositories_found": "Δεν βρέθηκαν αποθετήρια.",
+ "settings.access_token.remove": "Αφαίρεση %s",
+ "settings.authorized_integration.edit": "Επεξεργασία",
+ "settings.authorized_integration.field.name": "Όνομα",
+ "settings.authorized_integration.field.description": "Περιγραφή",
+ "settings.authorized_integration.field.description.placeholder": "Χρησιμοποιείται για να δημοσιεύει πακέτα όταν ...",
+ "settings.authorized_integration.forgejo_actions_local.event.label": "Συμβάν:",
+ "settings.authorized_integration.forgejo_actions_local.event.help": "Εάν δεν έχει επιλεγεί κανένα συμβάν, τότε θα επιτραπούν όλα τα συμβάντα.",
+ "user.activitypub_feed.feed": "Ροή Fediverse",
+ "user.activitypub_feed.no_activity": "Καμία δραστηριότητα fediverse",
+ "user.activitypub_feed.is_empty": "Η ροή σας στο fediverse είναι άδεια.",
+ "user.activitypub_feed.posted_on": "Δημοσιεύτηκε στο %[1]s",
+ "user.activitypub_feed.original_source": "Αρχική πηγή",
+ "actions.runners.ephemeral": "Εφήμερος",
+ "actions.runners.version": "Έκδοση",
+ "actions.runs.delete.button": "Διαγραφή εκτέλεσης",
+ "actions.runs.delete.error": "Δεν ήταν δυνατή η διαγραφή της εκτέλεσης της ροής εργασίας.",
+ "actions.runs.delete.confirm_action": "Σίγουρα θέλετε να διαγράψετε αυτήν την εκτέλεση της ροής εργασίας;",
+ "actions.runs.delete.error_could_not_load_run": "Δεν ήταν δυνατή η φόρτωση της εκτέλεσης προς διαγραφή.",
+ "actions.runs.delete.error_could_not_delete_run": "Δεν ήταν δυνατή η διαγραφή της εκτέλεσης.",
+ "members.add_member": "Προσθήκη μέλους",
+ "members.user": "Χρήστης",
+ "members.user_already_member": "Αυτός ο χρήστης είναι ήδη μέλος του οργανισμού.",
+ "members.no_team_selected": "Τα μέλη του οργανισμού πρέπει να ανήκουν σε τουλάχιστον μια ομάδα."
}
diff --git a/options/locale_next/locale_en-US.json b/options/locale_next/locale_en-US.json
index dcc084f679..12be581273 100644
--- a/options/locale_next/locale_en-US.json
+++ b/options/locale_next/locale_en-US.json
@@ -119,7 +119,15 @@
"migrate.in_progress.labels": "Migrating labels",
"migrate.in_progress.releases": "Migrating releases",
"migrate.in_progress.issues": "Migrating issues",
+ "migrate.in_progress.issues.progress": {
+ "one": "Migrated %[1]d issue",
+ "other": "Migrated %[1]d issues"
+ },
"migrate.in_progress.pulls": "Migrating pull requests",
+ "migrate.in_progress.pulls.progress": {
+ "one": "Migrated %[1]d pull request",
+ "other": "Migrated %[1]d pull requests"
+ },
"migrate.cancel.title": "Cancel migration",
"migrate.cancel.confirmation": "Do you want to cancel this migration?",
"repo.issue_indexer.title": "Issue Indexer",
@@ -129,6 +137,7 @@
"search.fuzzy_tooltip": "Include results is an approximate match to the search term",
"repo.settings.push_mirror.branch_filter.label": "Branch filter (optional)",
"repo.settings.push_mirror.branch_filter.description": "Branches to be mirrored. Leave blank to mirror all branches. See %[2]s documentation for syntax. Examples: main, release/*",
+ "repo.settings.units.more_units_disable_hint": "The \"Enable more\" hint can be disabled in User settings > Appearance.",
"incorrect_root_url": "This Forgejo instance is configured to be served on \"%s\". You are currently viewing Forgejo through a different URL, which may cause parts of the application to break. The canonical URL is controlled by Forgejo admins via the ROOT_URL setting in the app.ini.",
"themes.names.forgejo-auto": "Forgejo (follow system theme)",
"themes.names.forgejo-light": "Forgejo light",
@@ -178,6 +187,50 @@
"admin.config.federation.get_headers": "Signed GET headers",
"admin.config.federation.post_headers": "Signed POST headers",
"admin.config.moderation_config": "Moderation configuration",
+ "admin.config.ssh.header": "SSH configuration",
+ "admin.config.ssh.enabled": "Enabled",
+ "admin.config.ssh.use_builtin_server": "Use built-in server",
+ "admin.config.ssh.domain": "SSH server domain",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.listen_port": "Listen port",
+ "admin.config.ssh.root_path": "Root path",
+ "admin.config.ssh.key_test_path": "Key test path",
+ "admin.config.ssh.keygen_path": "Keygen (\"ssh-keygen\") path",
+ "admin.config.ssh.minimum_key_size_check": "Minimum key size check",
+ "admin.config.ssh.minimum_key_sizes": "Minimum key sizes",
+ "admin.config.git.header": "Git configuration",
+ "admin.config.git.version": "Git version",
+ "admin.config.git.disable_diff_highlight": "Disable diff syntax highlighting",
+ "admin.config.git.diff.max_lines": "Max diff lines per file",
+ "admin.config.git.diff.max_line_characters": "Max diff characters per line",
+ "admin.config.git.diff.max_files": "Max diff files shown",
+ "admin.config.git.gc_args": "GC arguments",
+ "admin.config.git.migrate_timeout": "Migration timeout",
+ "admin.config.git.mirror_timeout": "Mirror Update timeout",
+ "admin.config.git.clone_timeout": "Clone Operation timeout",
+ "admin.config.git.pull_timeout": "Pull Operation timeout",
+ "admin.config.git.gc_timeout": "GC Operation timeout",
+ "admin.config.mailer.header": "Mailer configuration",
+ "admin.config.mailer.enabled": "Enabled",
+ "admin.config.mailer.name": "Name",
+ "admin.config.mailer.sendmail.use": "Use Sendmail",
+ "admin.config.mailer.sendmail.path": "Sendmail path",
+ "admin.config.mailer.sendmail.args": "Extra Arguments to Sendmail",
+ "admin.config.mailer.sendmail.timeout": "Sendmail timeout",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.protocol": "Protocol",
+ "admin.config.mailer.enable_helo": "Enable HELO",
+ "admin.config.mailer.smtp.addr": "SMTP host",
+ "admin.config.mailer.smtp.port": "SMTP port",
+ "admin.config.mailer.user": "User",
+ "admin.config.db.header": "Database configuration",
+ "admin.config.db.type": "Type",
+ "admin.config.db.host": "Host",
+ "admin.config.db.name": "Name",
+ "admin.config.db.user": "Username",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.path": "Path",
"admin.moderation.moderation_reports": "Moderation reports",
"admin.moderation.reports": "Reports",
"admin.moderation.no_open_reports": "There are currently no open reports.",
@@ -224,6 +277,19 @@
"admin.users.list_status_filter.not_2fa_enabled": "2FA disabled",
"admin.users.is_bot": "Bot account",
"admin.users.bot.description": "Mark the account as a bot.",
+ "admin.users.name": "Username",
+ "admin.users.full_name": "Full name",
+ "admin.users.activated": "Activated",
+ "admin.users.admin": "Admin",
+ "admin.users.restricted": "Restricted",
+ "admin.users.reserved": "Reserved",
+ "admin.users.bot": "Bot",
+ "admin.users.remote": "Remote",
+ "admin.users.2fa": "2FA",
+ "admin.users.repos": "Repos",
+ "admin.users.created": "Created",
+ "admin.users.last_login": "Last sign-in",
+ "admin.users.never_login": "Never signed in",
"admin.monitor.queues": "Queues",
"admin.monitor.queue": "Queue: %s",
"admin.monitor.queue.name": "Name",
@@ -243,6 +309,25 @@
"admin.monitor.queue.settings.changed": "Settings updated",
"admin.monitor.queue.settings.remove_all_items": "Remove all",
"admin.monitor.queue.settings.remove_all_items.success": "All items in the queue have been removed.",
+ "admin.orgs.name": "Name",
+ "admin.orgs.teams": "Teams",
+ "admin.orgs.members": "Members",
+ "admin.orgs.new_orga": "New organization",
+ "admin.repos.owner": "Owner",
+ "admin.repos.name": "Name",
+ "admin.repos.issues": "Issues",
+ "admin.repos.size": "Size",
+ "admin.repos.lfs_size": "LFS size",
+ "admin.packages.total_size": "Total size: %s",
+ "admin.packages.unreferenced_size": "Unreferenced size: %s",
+ "admin.packages.owner": "Owner",
+ "admin.packages.creator": "Creator",
+ "admin.packages.name": "Name",
+ "admin.packages.version": "Version",
+ "admin.packages.type": "Type",
+ "admin.packages.repository": "Repository",
+ "admin.packages.size": "Size",
+ "admin.packages.published": "Published",
"moderation.report.mark_as_handled": "Mark as handled",
"moderation.report.mark_as_ignored": "Mark as ignored",
"moderation.action.account.delete": "Delete account",
@@ -297,6 +382,56 @@
"admin.dashboard.remove_resolved_reports": "Remove resolved reports",
"admin.dashboard.actions_action_user": "Revoke Forgejo Actions trust for inactive users",
"admin.dashboard.transfer_lingering_logs": "Transfer actions logs of finished actions jobs from the database to storage",
+ "admin.dashboard.new_version_hint": "Forgejo %s is now available, you are running %s. Check the blog for more details.",
+ "admin.dashboard.statistic": "Summary",
+ "admin.dashboard.operations": "Maintenance operations",
+ "admin.dashboard.system_status": "System status",
+ "admin.dashboard.operation_name": "Operation Name",
+ "admin.dashboard.operation_switch": "Switch",
+ "admin.dashboard.operation_run": "Run",
+ "admin.dashboard.task.started": "Started Task: %[1]s",
+ "admin.dashboard.task.process": "Task: %[1]s",
+ "admin.dashboard.task.cancelled": "Task: %[1]s canceled: %[3]s",
+ "admin.dashboard.task.error": "Error in Task: %[1]s: %[3]s",
+ "admin.dashboard.task.finished": "Task: %[1]s started by %[2]s has finished",
+ "admin.dashboard.task.unknown": "Unknown task: %[1]s",
+ "admin.dashboard.cron.started": "Started Cron: %[1]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s canceled: %[3]s",
+ "admin.dashboard.cron.error": "Error in Cron: %s: %[3]s",
+ "admin.dashboard.cron.finished": "Cron: %[1]s has finished",
+ "admin.dashboard.delete_inactive_accounts.started": "Delete all unactivated accounts task started.",
+ "admin.dashboard.delete_repo_archives.started": "Delete all repository archives task started.",
+ "admin.dashboard.delete_missing_repos.started": "Delete all repositories missing their Git files task started.",
+ "admin.dashboard.delete_old_actions.started": "Delete all old activities from database started.",
+ "admin.dashboard.sync_branch.started": "Branch sync started",
+ "admin.dashboard.sync_tag.started": "Tag sync started",
+ "admin.dashboard.delete_generated_repository_avatars": "Delete generated repository avatars",
+ "admin.dashboard.sync_repo_branches": "Sync missed branches from Git data to database",
+ "admin.dashboard.sync_repo_tags": "Sync tags from Git data to database",
+ "admin.dashboard.update_mirrors": "Update mirrors",
+ "admin.dashboard.repo_health_check": "Health check all repositories",
+ "admin.dashboard.check_repo_stats": "Check all repository statistics",
+ "admin.dashboard.archive_cleanup": "Delete old repository archives",
+ "admin.dashboard.deleted_branches_cleanup": "Clean-up deleted branches",
+ "admin.dashboard.update_migration_poster_id": "Update migration poster IDs",
+ "admin.dashboard.git_gc_repos": "Garbage collect all repositories",
+ "admin.dashboard.resync_all_sshkeys": "Update the \".ssh/authorized_keys\" file with Forgejo SSH keys.",
+ "admin.dashboard.resync_all_sshprincipals": "Update the \".ssh/authorized_principals\" file with Forgejo SSH principals.",
+ "admin.dashboard.resync_all_hooks": "Resynchronize Git hooks of all repositories (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.reinit_missing_repos": "Reinitialize all missing Git repositories for which records exist",
+ "admin.dashboard.sync_external_users": "Synchronize external user data",
+ "admin.dashboard.cleanup_hook_task_table": "Clean up hook_task table",
+ "admin.dashboard.cleanup_packages": "Clean up expired packages",
+ "admin.dashboard.cleanup_actions": "Clean up expired logs and artifacts from actions",
+ "admin.dashboard.update_checker": "Update checker",
+ "admin.dashboard.delete_old_system_notices": "Delete all old system notices from database",
+ "admin.dashboard.gc_lfs": "Garbage collect LFS meta objects",
+ "admin.dashboard.stop_zombie_tasks": "Stop zombie actions tasks",
+ "admin.dashboard.stop_endless_tasks": "Stop endless actions tasks",
+ "admin.dashboard.cancel_abandoned_jobs": "Cancel abandoned actions jobs",
+ "admin.dashboard.start_schedule_tasks": "Start schedule actions tasks",
+ "admin.dashboard.rebuild_issue_indexer": "Rebuild issue indexer",
"admin.config.security": "Security configuration",
"admin.config.global_2fa_requirement.title": "Global two-factor requirement",
"admin.config.global_2fa_requirement.none": "No",
diff --git a/options/locale_next/locale_es-ES.json b/options/locale_next/locale_es-ES.json
index a98e2e3d66..fc80586d59 100644
--- a/options/locale_next/locale_es-ES.json
+++ b/options/locale_next/locale_es-ES.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Ruta",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Esquema",
+ "admin.config.db.user": "Nombre de usuario",
+ "admin.config.db.name": "Nombre",
+ "admin.config.db.host": "Host",
+ "admin.config.db.type": "Tipo",
+ "admin.config.db.header": "Configuración de base de datos",
+ "admin.config.mailer.user": "Usuario",
+ "admin.config.mailer.smtp.port": "Puerto SMTP",
+ "admin.config.mailer.smtp.addr": "Hospedaje SMTP",
+ "admin.config.mailer.enable_helo": "Habilitar HELO",
+ "admin.config.mailer.protocol": "Protocolo",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Vencimiento de Sendmail",
+ "admin.config.mailer.sendmail.args": "Argumentos adicionales por Sendmail",
+ "admin.config.mailer.sendmail.path": "Ruta de Sendmail",
+ "admin.config.mailer.sendmail.use": "Usar Sendmail",
+ "admin.config.mailer.name": "Nombre",
+ "admin.config.mailer.enabled": "Activado",
+ "admin.config.mailer.header": "Configuración del cartero",
+ "admin.config.git.gc_timeout": "Vencimiento de operación de GC",
+ "admin.config.git.pull_timeout": "Vencimiento de operación de pull",
+ "admin.config.git.clone_timeout": "Vencimiento de operación de clonado",
+ "admin.config.git.mirror_timeout": "Vencimiento de actualización de réplica",
+ "admin.config.git.migrate_timeout": "Vencimiento de migración",
+ "admin.config.git.gc_args": "Argumentos de GC",
+ "admin.config.git.diff.max_files": "Diff de archivos máxima mostrada",
+ "admin.config.git.diff.max_line_characters": "Caracteres de diff máx por línea",
+ "admin.config.git.diff.max_lines": "Líneas de diff máximas por archivo",
+ "admin.config.git.disable_diff_highlight": "Inhabilitar resaltado de diff de sintaxis",
+ "admin.config.git.version": "Versión de Git",
+ "admin.config.git.header": "Configuración de Git",
+ "admin.config.ssh.minimum_key_sizes": "Tamaños de clave mínimos",
+ "admin.config.ssh.minimum_key_size_check": "Comprobante de tamaño de clave mínimo",
+ "admin.config.ssh.keygen_path": "Ruta del generador de claves (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Ruta de la clave de prueba",
+ "admin.config.ssh.root_path": "Ruta raíz",
+ "admin.config.ssh.listen_port": "Puerto de escucha",
+ "admin.config.ssh.port": "Puerto",
+ "admin.config.ssh.domain": "Dominio del servidor SSH",
+ "admin.config.ssh.use_builtin_server": "Utilizar servidor integrado",
+ "admin.config.ssh.enabled": "Habilitado",
+ "admin.config.ssh.header": "Configuración SSH",
+ "admin.users.never_login": "No ha ingresado",
+ "admin.users.last_login": "Último registro",
+ "admin.users.created": "Creado",
+ "admin.users.repos": "Repositorios",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Remoto",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Reservado",
+ "admin.users.restricted": "Restringido",
+ "admin.users.admin": "Administrador",
+ "admin.users.activated": "Activado",
+ "admin.users.full_name": "Nombre completo",
+ "admin.users.name": "Nombre de usuario",
+ "admin.packages.published": "Publicado",
+ "admin.packages.size": "Tamaño",
+ "admin.packages.repository": "Repositorio",
+ "admin.packages.type": "Tipo",
+ "admin.packages.version": "Versión",
+ "admin.packages.name": "Nombre",
+ "admin.packages.creator": "Creador",
+ "admin.packages.owner": "Propietario",
+ "admin.packages.unreferenced_size": "Tamaño sin referencia: %s",
+ "admin.packages.total_size": "Tamaño total: %s",
+ "admin.repos.lfs_size": "Tamaño LFS",
+ "admin.repos.size": "Tamaño",
+ "admin.repos.issues": "Incidencias",
+ "admin.repos.name": "Nombre",
+ "admin.repos.owner": "Propietario",
+ "admin.orgs.new_orga": "Nueva organización",
+ "admin.orgs.members": "Miembros",
+ "admin.orgs.teams": "Equipos",
+ "admin.orgs.name": "Nombre",
+ "admin.dashboard.rebuild_issue_indexer": "Reconstruir indexador de incidencias",
+ "admin.dashboard.start_schedule_tasks": "Iniciar tareas programadas",
+ "admin.dashboard.cancel_abandoned_jobs": "Cancelar trabajos abandonados",
+ "admin.dashboard.stop_endless_tasks": "Detiene tareas de acciones interminables",
+ "admin.dashboard.stop_zombie_tasks": "Detener tareas zombie",
+ "admin.dashboard.gc_lfs": "Recoger basura meta-objetos LFS",
+ "admin.dashboard.delete_old_system_notices": "Borrar todos los avisos antiguos del sistema de la base de datos",
+ "admin.dashboard.update_checker": "Buscador de actualizaciones",
+ "admin.dashboard.cleanup_actions": "Acciones de limpieza de registros expirados y artefactos",
+ "admin.dashboard.cleanup_packages": "Limpiar paquetes caducados",
+ "admin.dashboard.cleanup_hook_task_table": "Limpiar la tabla hook_task",
+ "admin.dashboard.sync_external_users": "Sincronizar datos de usuario externo",
+ "admin.dashboard.reinit_missing_repos": "Reiniciar todos los repositorios Git faltantes de los que existen registros",
+ "admin.dashboard.resync_all_hooks": "Resincronizar los hooks de todos los repositorios (pre-recepción, actualización, post-recepción, procesamiento de recepción, etc.)",
+ "admin.dashboard.resync_all_sshprincipals": "Actualiza el archivo '.ssh/authorized_principals' con los principales del certificado SSH de Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Actualiza el archivo '.ssh/authorized_keys' con claves SSH de Forgejo.",
+ "admin.dashboard.git_gc_repos": "Ejecutar la recolección de basura en los repositorios",
+ "admin.dashboard.update_migration_poster_id": "Actualizar ID de usuario en migraciones",
+ "admin.dashboard.deleted_branches_cleanup": "Limpiar ramas eliminadas",
+ "admin.dashboard.archive_cleanup": "Eliminar archivos antiguos de los repositorios",
+ "admin.dashboard.check_repo_stats": "Comprobar todas las estadísticas de todos los repositorios",
+ "admin.dashboard.repo_health_check": "Chequear de estado de salud de todos los repositorios",
+ "admin.dashboard.update_mirrors": "Actualizar réplicas",
+ "admin.dashboard.sync_repo_tags": "Sincronizar etiquetas de Git con la base de datos",
+ "admin.dashboard.sync_repo_branches": "Sincronizar ramas perdidas de los datos de git a la base de datos",
+ "admin.dashboard.delete_generated_repository_avatars": "Eliminar avatares generados del repositorio",
+ "admin.dashboard.sync_tag.started": "Sincronización de etiquetas iniciada",
+ "admin.dashboard.sync_branch.started": "Inició la sincronización de ramas",
+ "admin.dashboard.delete_old_actions.started": "Eliminar todas las actividades antiguas de la base de datos iniciadas.",
+ "admin.dashboard.delete_missing_repos.started": "Se ha iniciado la tarea: \"Eliminar todos los repositorios que faltan sus archivos Git\".",
+ "admin.dashboard.delete_repo_archives.started": "Se ha iniciado la tarea: \"Eliminar todos los archivos del repositorios\".",
+ "admin.dashboard.delete_inactive_accounts.started": "Se ha iniciado la tarea: \"Eliminar todas las cuentas inactivas\".",
+ "admin.dashboard.cron.finished": "Cron: %[1]s ha finalizado",
+ "admin.dashboard.cron.error": "Error en Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s cancelada: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron iniciado: %[1]s",
+ "admin.dashboard.task.unknown": "Tarea desconocida: %[1]s",
+ "admin.dashboard.task.finished": "Tarea: %[1]s iniciada por %[2]s ha finalizado",
+ "admin.dashboard.task.error": "Error en la tarea: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Tarea: %[1]s cancelada: %[3]s",
+ "admin.dashboard.task.process": "Tarea: %[1]s",
+ "admin.dashboard.task.started": "Tarea iniciada: %[1]s",
+ "admin.dashboard.operation_run": "Ejecutar",
+ "admin.dashboard.operation_switch": "Interruptor",
+ "admin.dashboard.operation_name": "Nombre de la operación",
+ "admin.dashboard.system_status": "Estado del sistema",
+ "admin.dashboard.operations": "Operaciones de mantenimiento",
+ "admin.dashboard.statistic": "Resumen",
+ "admin.dashboard.new_version_hint": "Forgejo %s ya está disponible, estás ejecutando %s. Revisa el blog para más detalles.",
"admin.monitor.queue.settings.remove_all_items.success": "Todos los elementos en la cola han sido eliminados.",
"admin.monitor.queue.settings.remove_all_items": "Eliminar todo",
"admin.monitor.queue.settings.changed": "Ajustes actualizados",
@@ -58,27 +184,27 @@
"admin.system_status.current_memory_usage": "Uso actual de memoria",
"admin.system_status.current_goroutine": "Gorutinas actuales",
"admin.system_status.server_uptime": "Tiempo de actividad del servidor",
- "markup.filepreview.truncated": "La vista previa se ha truncado",
+ "markup.filepreview.truncated": "Vista previa truncada",
"markup.filepreview.lines": "Líneas %[1]d a %[2]d en %[3]s",
"markup.filepreview.line": "Línea %[1]d en %[2]s",
"actions.variables.update.success": "La variable ha sido editada.",
"actions.variables.update.failed": "Error al editar la variable.",
- "actions.variables.creation.success": "La variable \"%s\" ha sido añadida.",
- "actions.variables.creation.failed": "No se pudo agregar la variable.",
+ "actions.variables.creation.success": "Se ha añadido la variable «%s».",
+ "actions.variables.creation.failed": "No se ha añadido la variable.",
"actions.variables.deletion.success": "La variable ha sido eliminada.",
"actions.variables.deletion.failed": "No se pudo eliminar la variable.",
"actions.variables.not_found": "No se ha encontrado la variable.",
"actions.variables.edit": "Editar variable",
- "actions.variables.description": "Las variables se pasarán a ciertas acciones y no se podrán leer de otro modo.",
+ "actions.variables.description": "Las variables se pasarán a determinadas acciones y no podrán leerse de otra forma.",
"actions.variables.deletion.description": "Eliminar una variable es permanente y no se puede deshacer. ¿Continuar?",
"actions.variables.deletion": "Eliminar variable",
"actions.variables.none": "Aún no hay variables.",
"actions.variables.creation": "Añadir variable",
"actions.variables.management": "Gestión de variables",
"actions.variables": "Variables",
- "webauthn.error.timeout": "Tiempo de espera máximo alcanzado antes de que su clave pudiese ser leída. Por favor, cargue la página y vuelva a intentarlo.",
- "webauthn.error.empty": "Debe establecer un nombre para esta clave.",
- "webauthn.error.duplicated": "La clave de seguridad no está permitida para esta solicitud. Por favor, asegúrese de que la clave no está ya registrada.",
+ "webauthn.error.timeout": "Agotado el tiempo de espera antes de que se pudiera leer tu clave. Por favor, vuelve a cargar esta página e inténtalo de nuevo.",
+ "webauthn.error.empty": "Debe especificar un nombre para esta clave.",
+ "webauthn.error.duplicated": "La clave de seguridad no es válida para esta solicitud. Por favor, asegúrate de que la clave no esté ya registrada.",
"webauthn.error.unable_to_process": "El servidor no pudo procesar su solicitud.",
"webauthn.error.insecure": "WebAuthn sólo soporta conexiones seguras. Para probar sobre HTTP, puede utilizar el origen \"localhost\" o \"127.0.0.1\"",
"webauthn.error.unknown": "Ha ocurrido un error desconocido. Por favor, inténtelo de nuevo.",
@@ -368,7 +494,7 @@
"themes.names.forgejo-dark": "Forgejo oscuro",
"themes.names.forgejo-light": "Forgejo claro",
"home.welcome.no_activity": "Sin actividad",
- "meta.last_line": "¡Gracias por traducir Forgejo! Esta línea no es vista por los usuarios pero sirve para otros propósitos en la gestión de la traducción. Puedes colocar un dato curioso en la traducción en lugar de traducirla.",
+ "meta.last_line": "¡Muchas gracias por la traducción, Forgejo!. Esta línea no es visible para los usuarios, pero se utiliza para otros fines relacionados con la gestión de la traducción. Puedes incluir un dato curioso en la traducción, en lugar de traducirla.",
"relativetime.now": "ahora",
"relativetime.mins": {
"one": "hace %d minuto",
@@ -646,5 +772,20 @@
"teams.remove_all_repos.modal.header": "Retira todos los repositorios",
"admin.auths.oauth2_quota_group_map_removal": "Retire los usuarios desde los grupos de cuota sincronizados si el usuario no pertenece al grupo correspondiente.",
"actions.runners.list_runners.delete_button": "Eliminar",
- "actions.runners.list_runners.delete_button_aria": "Eliminar"
+ "actions.runners.list_runners.delete_button_aria": "Eliminar",
+ "form.RunnerName": "Nombre",
+ "graphs.recent_commits.title": "Número de instantáneas (commit) en el último año",
+ "graphs.code_frequency.title": "Frecuencia de códigos a lo largo de la historia de {0}",
+ "repo.files.caption": "Archivos del repositorio (primero la última confirmación)",
+ "repo.files.filename": "Nombre del archivo",
+ "repo.files.last_commit_message": "Mensaje del último instantánea",
+ "repo.files.last_commit_date": "Fecha de la última instantánea",
+ "admin.federation.host.fqdn": "FQDN",
+ "admin.federation.host.schema": "Esquema",
+ "moderation.users.cannot_suspend_admins": "Los usuarios con privilegios de administrador no pueden ser bloqueados.",
+ "actions.status.diagnostics.waiting": {
+ "one": "A la espera de un proceso con la siguiente etiqueta: %s",
+ "many": "A la espera de un proceso con las siguientes etiquetas: %s",
+ "other": "A la espera de un proceso con las siguientes etiquetas: %s"
+ }
}
diff --git a/options/locale_next/locale_et.json b/options/locale_next/locale_et.json
index c3246e4185..3d0ef768db 100644
--- a/options/locale_next/locale_et.json
+++ b/options/locale_next/locale_et.json
@@ -104,5 +104,6 @@
"repo.pulls.poster_trust_once": "Luba üks kord",
"repo.pulls.poster_trust_always": "Luba alati",
"repo.pulls.poster_trust_revoke": "Tühista",
- "migrate.select.title": "Migreeri hoidla"
+ "migrate.select.title": "Migreeri hoidla",
+ "repo.files.filename": "Failinimi"
}
diff --git a/options/locale_next/locale_fa-IR.json b/options/locale_next/locale_fa-IR.json
index 91c2e5f3bd..f1f62ab7bb 100644
--- a/options/locale_next/locale_fa-IR.json
+++ b/options/locale_next/locale_fa-IR.json
@@ -1,4 +1,99 @@
{
+ "admin.config.db.path": "مسیر",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "شماتیک",
+ "admin.config.db.user": "نامکاربری",
+ "admin.config.db.name": "نام",
+ "admin.config.db.host": "میزبان",
+ "admin.config.db.type": "نوع",
+ "admin.config.db.header": "تنظیمات پایگاه داده",
+ "admin.config.mailer.user": "کاربر",
+ "admin.config.mailer.smtp.port": "گذرگاه(پورت) SMTP",
+ "admin.config.mailer.sendmail.timeout": "مهلت زمانی ارسال نامه",
+ "admin.config.mailer.sendmail.args": "برهان های اضافی برای ارسال مستقیم ایمیل",
+ "admin.config.mailer.sendmail.path": "مسیر ارسال ایمیل مستقیم",
+ "admin.config.mailer.sendmail.use": "استفاده از ارسال رایانامه (ایمیل) مستقیم",
+ "admin.config.mailer.name": "نام",
+ "admin.config.mailer.enabled": "فعال شده",
+ "admin.config.git.gc_timeout": "زمان آستانه ی عملیات GC",
+ "admin.config.git.pull_timeout": "زمان آستانه ی عملیات واکشی",
+ "admin.config.git.clone_timeout": "زمان آستانه ی عملیات Clone",
+ "admin.config.git.mirror_timeout": "زمان آستانه در به روز رسانی قرینه",
+ "admin.config.git.migrate_timeout": "آستانه ی زمان مهاجرت",
+ "admin.config.git.gc_args": "آرگومان های GC",
+ "admin.config.git.diff.max_files": "حداکثر فایل های Diff (برای نمایش)",
+ "admin.config.git.diff.max_line_characters": "حداکثر کاراکتر در Diff (برای یک خط)",
+ "admin.config.git.diff.max_lines": "حداکثر خط برای Diff (برای یک فایل)",
+ "admin.config.git.disable_diff_highlight": "غیرفعال کردن برجسته سازی در Diff",
+ "admin.config.git.version": "نسخهی Git",
+ "admin.config.git.header": "پیکربندی Git",
+ "admin.config.ssh.minimum_key_sizes": "حداقل اندازهی کلید ها",
+ "admin.config.ssh.minimum_key_size_check": "بررسی حداقل طول کلید",
+ "admin.config.ssh.keygen_path": "مسیر فایل ssh-keygen",
+ "admin.config.ssh.key_test_path": "مسیر کلید آزمایش",
+ "admin.config.ssh.root_path": "مسیر ریشه",
+ "admin.config.ssh.listen_port": "گوش دادن به پورت",
+ "admin.config.ssh.port": "درگاه (پورت)",
+ "admin.config.ssh.domain": "دامنه سرور SSH",
+ "admin.config.ssh.use_builtin_server": "استفاده از ساخته سرور",
+ "admin.config.ssh.enabled": "فعال شده",
+ "admin.config.ssh.header": "پیکربندی SSH",
+ "admin.users.never_login": "هرگز وارد نشده",
+ "admin.users.last_login": "آخرین ورود",
+ "admin.users.created": "ایجاد شده",
+ "admin.users.repos": "مخازن",
+ "admin.users.2fa": "2FA",
+ "admin.users.restricted": "محصور",
+ "admin.users.admin": "مدیر",
+ "admin.users.activated": "فعال شده",
+ "admin.users.full_name": "نام کامل",
+ "admin.users.name": "نامکاربری",
+ "admin.packages.size": "اندازه",
+ "admin.packages.repository": "مخزن",
+ "admin.packages.type": "نوع",
+ "admin.packages.name": "نام",
+ "admin.packages.owner": "مالک",
+ "admin.repos.size": "اندازه",
+ "admin.repos.issues": "مسائل",
+ "admin.repos.name": "نام",
+ "admin.repos.owner": "مالک",
+ "admin.orgs.new_orga": "سازمان جدید",
+ "admin.orgs.members": "اعضاء",
+ "admin.orgs.teams": "تیمها",
+ "admin.orgs.name": "نام",
+ "admin.dashboard.cleanup_hook_task_table": "جدول hook_task تمیز کردن",
+ "admin.dashboard.sync_external_users": "همگام سازی اطلاعات کاربر خارجی",
+ "admin.dashboard.reinit_missing_repos": "تمامی مخازنی که سوابقشان وجود دارند مجدداً گیت آنها مفقود شده است مجدداً مقدمات آنها فراهم شود",
+ "admin.dashboard.resync_all_hooks": "همگام سازی مجدد hook های pre-receive و update و post-receive برای تمامی مخازن.",
+ "admin.dashboard.resync_all_sshprincipals": "فایل '.ssh/authorized_principals' را با اصول Forgejo SSH به روز کنید.",
+ "admin.dashboard.resync_all_sshkeys": "فایل '.ssh/authorized_keys' را با کلیدهای Forgejo SSH به روز کنید.",
+ "admin.dashboard.git_gc_repos": "متراکم کردن تمامی زبالههای مخازن",
+ "admin.dashboard.update_migration_poster_id": "شناسه های پوستر مهاجرت را به روز کنید",
+ "admin.dashboard.deleted_branches_cleanup": "شاخه های حذف شده را پاک کنید",
+ "admin.dashboard.archive_cleanup": "آرشیوهای انبار قدیمی را حذف کنید",
+ "admin.dashboard.check_repo_stats": "تمام آمار انبارها چک شود",
+ "admin.dashboard.repo_health_check": "سلامت تمام انبار ها چک شود",
+ "admin.dashboard.update_mirrors": "میرور ها بروزرسانی شود",
+ "admin.dashboard.delete_generated_repository_avatars": "حذف آواتار هایی که برای مخزن تولید شده اند",
+ "admin.dashboard.delete_old_actions.started": "حذف تمام اقدامات قدیمی از پایگاه داده شروع شده است.",
+ "admin.dashboard.delete_missing_repos.started": "تسک تمام انبار هایی که فایل های گیتشان از دست رفته شروع شد.",
+ "admin.dashboard.delete_repo_archives.started": "تسک حذف تمام آرشیو های انبار شروع شد.",
+ "admin.dashboard.delete_inactive_accounts.started": "تسک حذف تمام حساب های کاربری غیرفعال شروع شد.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s پایان یافته است",
+ "admin.dashboard.cron.error": "خطا در Cron: %s: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron شروع شده: %[1]s",
+ "admin.dashboard.task.unknown": "تسک ناشناخته: %[1]s",
+ "admin.dashboard.task.finished": "تسک: %[1]s شروع شده توسط %[2]s پایان یافته است",
+ "admin.dashboard.task.error": "خطا در تسک: %[1]s: %[3]s",
+ "admin.dashboard.task.process": "تسک: %[1]s",
+ "admin.dashboard.task.started": "تسک شروع شده: %[1]s",
+ "admin.dashboard.operation_run": "اجرا",
+ "admin.dashboard.operation_switch": "تعویض",
+ "admin.dashboard.operation_name": "نام عملیات",
+ "admin.dashboard.system_status": "وضعیت سامانه",
+ "admin.dashboard.operations": "عملیاتهای نگهداری",
+ "admin.dashboard.statistic": "چکیده",
"admin.monitor.queue.settings.changed": "تنظیمات تازه شد",
"admin.monitor.queue.settings.submit": "بالا بردن ساماندهی",
"admin.monitor.queue.settings.maxnumberworkers.error": "حداکثر تعداد کارگران باید یک عدد باشد",
diff --git a/options/locale_next/locale_fi-FI.json b/options/locale_next/locale_fi-FI.json
index 11de17d613..7362596ec1 100644
--- a/options/locale_next/locale_fi-FI.json
+++ b/options/locale_next/locale_fi-FI.json
@@ -1,4 +1,108 @@
{
+ "admin.config.db.path": "Polku",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Skeema",
+ "admin.config.db.user": "Käyttäjänimi",
+ "admin.config.db.name": "Nimi",
+ "admin.config.db.host": "Isäntä",
+ "admin.config.db.type": "Tyyppi",
+ "admin.config.db.header": "Tietokannan asetukset",
+ "admin.config.mailer.user": "Käyttäjä",
+ "admin.config.mailer.smtp.port": "SMTP-portti",
+ "admin.config.mailer.smtp.addr": "SMTP-isäntä",
+ "admin.config.mailer.enable_helo": "Ota HELO käyttöön",
+ "admin.config.mailer.protocol": "Protokolla",
+ "admin.config.mailer.sendmail.timeout": "Sendmailin aikakatkaisu",
+ "admin.config.mailer.sendmail.args": "Lisäargumentit Sendmailille",
+ "admin.config.mailer.sendmail.path": "Sendmail-polku",
+ "admin.config.mailer.sendmail.use": "Käytä Sendmailia",
+ "admin.config.mailer.name": "Nimi",
+ "admin.config.mailer.enabled": "Käytössä",
+ "admin.config.mailer.header": "Postittimen asetukset",
+ "admin.config.git.gc_timeout": "Roskienkeruun aikakatkaisu",
+ "admin.config.git.pull_timeout": "Vetotoimenpiteen aikakatkaisu",
+ "admin.config.git.clone_timeout": "Kloonaustoimenpiteen aikakatkaisu",
+ "admin.config.git.mirror_timeout": "Peilin päivityksen aikakatkaisu",
+ "admin.config.git.migrate_timeout": "Migraation aikakatkaisu",
+ "admin.config.git.gc_args": "Roskienkeruu-argumentit",
+ "admin.config.git.diff.max_files": "Diff-tiedostoja enintään näytettäväksi",
+ "admin.config.git.diff.max_line_characters": "Diff-merkkejä enintään riviä kohden",
+ "admin.config.git.diff.max_lines": "Diff-rivejä enintään tiedostoa kohden",
+ "admin.config.git.disable_diff_highlight": "Poista diff-syntaksin korostus käytöstä",
+ "admin.config.git.version": "Git-versio",
+ "admin.config.git.header": "Git-asetukset",
+ "admin.config.ssh.minimum_key_sizes": "Avaimen vähimmäiskoot",
+ "admin.config.ssh.minimum_key_size_check": "Avaimen vähimmäiskoon tarkistus",
+ "admin.config.ssh.keygen_path": "Keygen-polku ('ssh-keygen')",
+ "admin.config.ssh.key_test_path": "Avaimen testipolku",
+ "admin.config.ssh.root_path": "Juuren polku",
+ "admin.config.ssh.listen_port": "Kuuntele porttia",
+ "admin.config.ssh.port": "Portti",
+ "admin.config.ssh.domain": "SSH-palvelimen verkkotunnus",
+ "admin.config.ssh.use_builtin_server": "Käytä sisäänrakennettua palvelinta",
+ "admin.config.ssh.enabled": "Käytössä",
+ "admin.config.ssh.header": "SSH-asetukset",
+ "admin.users.never_login": "Ei koskaan kirjautunut",
+ "admin.users.last_login": "Viimeksi kirjautunut",
+ "admin.users.created": "Luotu",
+ "admin.users.repos": "Tietovarastot",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Etä",
+ "admin.users.bot": "Botti",
+ "admin.users.reserved": "Varattu",
+ "admin.users.restricted": "Rajoitettu",
+ "admin.users.admin": "Ylläpito",
+ "admin.users.activated": "Aktivoitu",
+ "admin.users.full_name": "Koko nimi",
+ "admin.users.name": "Käyttäjänimi",
+ "admin.packages.published": "Julkaistu",
+ "admin.packages.size": "Koko",
+ "admin.packages.repository": "Tietovarasto",
+ "admin.packages.type": "Tyyppi",
+ "admin.packages.version": "Versio",
+ "admin.packages.name": "Nimi",
+ "admin.packages.creator": "Luoja",
+ "admin.packages.owner": "Omistaja",
+ "admin.packages.total_size": "Koko yhteensä: %s",
+ "admin.repos.lfs_size": "LFS:n koko",
+ "admin.repos.size": "Koko",
+ "admin.repos.issues": "Ongelmat",
+ "admin.repos.name": "Nimi",
+ "admin.repos.owner": "Omistaja",
+ "admin.orgs.new_orga": "Uusi organisaatio",
+ "admin.orgs.members": "Jäsenet",
+ "admin.orgs.teams": "Tiimit",
+ "admin.orgs.name": "Nimi",
+ "admin.dashboard.update_checker": "Päivitysten tarkistaja",
+ "admin.dashboard.cleanup_packages": "Siivoa vanhentuneet paketit",
+ "admin.dashboard.cleanup_hook_task_table": "Siivoa koukku -_tehtävätaulukko",
+ "admin.dashboard.sync_external_users": "Synkronoi ulkoinen käyttäjädata",
+ "admin.dashboard.resync_all_sshprincipals": "Päivitä \".ssh/authorized_principals\"-tiedosto Forgejon SSH-prinsipaaleilla.",
+ "admin.dashboard.resync_all_sshkeys": "Päivitä \".ssh/authorized_keys\"-tiedosto Forgejo:n SSH-avaimilla.",
+ "admin.dashboard.deleted_branches_cleanup": "Siivoa poistetut haarat",
+ "admin.dashboard.archive_cleanup": "Poista vanhat tietovarastojen arkistot",
+ "admin.dashboard.check_repo_stats": "Tarkista kaikkien tietovarastojen tilastot",
+ "admin.dashboard.repo_health_check": "Tee terveystarkastus kaikille tietovarastoille",
+ "admin.dashboard.update_mirrors": "Päivitä peilit",
+ "admin.dashboard.sync_tag.started": "Tagisynkronointi aloitettu",
+ "admin.dashboard.sync_branch.started": "Haarasynkronointi aloitettu",
+ "admin.dashboard.delete_repo_archives.started": "Poista kaikki tietovarastojen arkistot -tehtävä aloitettu.",
+ "admin.dashboard.delete_inactive_accounts.started": "Poista kaikki aktivoimattomat tilit -tehtävä aloitettu.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s on valmistunut",
+ "admin.dashboard.cron.error": "Virhe Cronissa: %s: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Käynnistetty Cron: %[1]s",
+ "admin.dashboard.task.unknown": "Tuntematon tehtävä: %[1]s",
+ "admin.dashboard.task.error": "Virhe tehtävässä: %[1]s: %[3]s",
+ "admin.dashboard.task.process": "Tehtävä: %[1]s",
+ "admin.dashboard.task.started": "Käynnistetty tehtävä: %[1]s",
+ "admin.dashboard.operation_run": "Suorita",
+ "admin.dashboard.operation_switch": "Vaihda",
+ "admin.dashboard.operation_name": "Toimenpiteen nimi",
+ "admin.dashboard.system_status": "Järjestelmän tila",
+ "admin.dashboard.operations": "Huoltotoimet",
+ "admin.dashboard.statistic": "Yhteenveto",
+ "admin.dashboard.new_version_hint": "Forgejo %s on nyt saatavilla. Käytössäsi on %s. Lue lisätietoja blogista.",
"admin.monitor.queue.settings.remove_all_items.success": "Kaikki jonossa olleet tietueet on poistettu.",
"admin.monitor.queue.settings.remove_all_items": "Poista kaikki",
"admin.monitor.queue.settings.changed": "Asetukset päivitetty",
@@ -111,7 +215,7 @@
"notification.mark_all_as_read": "Merkitse kaikki luetuiksi",
"notification.subscriptions": "Tilaukset",
"notification.watching": "Tarkkaillaan",
- "notification.no_subscriptions": "Ei tilauksia",
+ "notification.no_subscriptions": "Sinulla ei ole tilauksia.",
"dropzone.default_message": "Pudota tiedostot tähän tai napsauta tästä lähettääksesi tiedoston.",
"dropzone.invalid_input_type": "Tätä tyyppiä olevia tiedostoja ei voi lähettää.",
"dropzone.file_too_big": "Tiedoston koko ({{filesize}} Mt) ylittää enimmäisrajan ({{maxFilesize}} Mt).",
@@ -272,7 +376,7 @@
"incorrect_root_url": "Tämä Forgejo-instanssi on määritetty toimimaan osoitteessa \"%s\". Tarkastelet tällä hetkellä Forgejoa eri URL-osoitteen kautta, mikä saattaa aiheuttaa sovelluksen osien toimimattomuutta. Virallinen URL-osoite on Forgejo-ylläpitäjien hallinnoima ROOT_URL-asetus app.ini -tiedostossa.",
"themes.names.forgejo-auto": "Forgejo (käyttöjärjestelmän määrittelemä teema)",
"home.welcome.activity_hint": "Syötteelläsi ei ole vielä mitään. Toimenpiteesi ja toimintasi tietovarastoissa, joita seuraat ilmaantuvat tälle sivulle.",
- "home.explore_repos": "Tutustu tietovarastoihin",
+ "home.explore_repos": "Tutki tietovarastoja",
"home.explore_users": "Tutki käyttäjiä",
"home.explore_orgs": "Tutki organisaatioita",
"error.not_found.title": "Sivua ei löytynyt",
@@ -486,7 +590,7 @@
"repo.issues.filter_modified.hint": "Suodata viimeisimmän muokkauspäivän perusteella",
"search.syntax": "Hakusyntaksi",
"keys.verify.token.hint": "Poletti on voimassa vain 1 minuutin. Hanki uusi jos se vanheni.",
- "admin.moderation.moderation_reports": "Moderaatioraportit",
+ "admin.moderation.moderation_reports": "Lievennysraportit",
"migrate.pagure.private_issues.summary": "Yksityiset ongelmat (valinnainen)",
"teams.add_all_repos.modal.header": "Lisää kaikki tietovarastot",
"teams.remove_all_repos.modal.header": "Poista kaikki tietovarastot",
@@ -510,5 +614,117 @@
"mail.issue.action.close_by_commit": "%[1]s sulki %[2]s kommitissa %[3]s.",
"editor.search": "Hae",
"editor.replace": "Korvaa",
- "editor.replace_all": "Korvaa kaikki"
+ "editor.replace_all": "Korvaa kaikki",
+ "repo.files.filename": "Tiedostonimi",
+ "repo.files.last_commit_message": "Viimeisin sitoumusviesti",
+ "repo.files.last_commit_date": "Viimeisin sitoumuspäivämäärä",
+ "repo.issues.filter_assignee.hint": "Suodata määritetyn käyttäjän mukaan",
+ "repo.issues.filter_sort.hint_with_placeholder": "Lajittele mukaan: %s",
+ "issues.filters.labels.exclude": "Sulje pois nimiö",
+ "issues.filters.labels.unexclude": "Tyhjennä poissulkeminen",
+ "repo.pulls.auto_merge.no_permission": "Sinulla ei ole oikeutta peruuttaa tämän vetopyynnön automaattista yhdistämistä.",
+ "repo.pulls.poster_manage_approval": "Hallinnoi hyväksyntää",
+ "repo.pulls.poster_requires_approval": "Jotkin työnkulut odottavat arvostelemista.",
+ "repo.pulls.poster_requires_approval.tooltip": "Tämän vetopyynnön tekijää ei voida luottaa suorittamaan haaroitetusta tietovarastosta tai AGit:lla luodun vetopyynnön laukaisemia työnkulkuja. `pull_request`-tapahtuman laukaisemat työnkulut eivät käynnisty ennen kuin ne on hyväksytty.",
+ "repo.pulls.poster_is_trusted": "Tämän vetopyynnön tekijään luotetaan aina työnkulkujen suorittamista.",
+ "repo.pulls.poster_is_trusted.tooltip": "Tämän vetopyynnön tekijään luotetaan nimenomaisesti, jotta hän voi suorittaa `pull_request`-tapahtumien laukaisemia työnkulkuja.",
+ "repo.pulls.poster_trust_deny.tooltip": "Hyväksyntää odottavat työnkulut peruutetaan.",
+ "repo.pulls.poster_trust_once.tooltip": "`pull_request`-tapahtuman laukaisemat työnkulut suoritetaan tässä sitoumuksessa, mutta se on hyväksyttävä kaikille tuleville sitoumuksille, jotka lähetetään tähän vetopyyntöön.",
+ "repo.pulls.poster_trust_always.tooltip": "`pull_request`-tapahtuman laukaisemat työnkulut suoritetaan tässä sitoumuksessa, eikä tästä vetopyynnöstä tai saman käyttäjän kirjoittamista tulevista vetopyynnöistä tulevia suorituksia tarvitse hyväksyä.",
+ "repo.pulls.poster_trust_revoke": "Peruuta",
+ "repo.pulls.poster_trust_revoke.tooltip": "Tämän vetopyynnön tekijään ei enää luoteta `pull_request`-tapahtuman laukaisemien työnkulkujen suorittamiseen, vaan jokainen suoritus on hyväksyttävä manuaalisesti.",
+ "repo.view.gitmodules_too_large": "Tiedosto .gitmodules on liian suuri ja se ohitetaan (esimerkiksi API-kutsuissa)",
+ "migrate.select.title": "Siirrä tietovarasto",
+ "repo.issue_indexer.title": "Ongelmaindeksoija",
+ "search.fuzzy_tooltip": "Sisällytä tulokset on hakutermiä vastaava likimääräinen osuma",
+ "install.ssh_authorized_keys_inspection_error": "Olemassa olevan authorized_keys-tiedoston tarkastus epäonnistui: %v",
+ "install.ssh_authorized_keys_unexpected_key": "SSH:n käyttöönotto Forgejossa on ristiriidassa tiedoston kanssa, joka sijaitsee %s:ssa ja sisältää olemassa olevat SSH-avaimet. Ehdotuksia: käytä Forgejolle erillistä järjestelmäkäyttäjää tai poista SSH käytöstä.",
+ "admin.federation.federation": "Liittovaltio",
+ "admin.federation.hosts": "Isännät",
+ "admin.federation.hosts.title": "Liittovaltion isännät",
+ "admin.federation.hosts.manage_panel": "Hallitse liittovaltion isäntiä",
+ "admin.federation.hosts.details_panel": "Liittovaltion isännän yksityiskohdat",
+ "admin.federation.hosts.show_details": "Näytä isännän yksityiskohdat",
+ "admin.federation.host.id": "Tunnus",
+ "admin.federation.host.schema": "Kaava",
+ "admin.federation.host.port": "Portti",
+ "admin.federation.host.software_name": "Ohjelmisto",
+ "admin.federation.host.created": "Luotu",
+ "admin.federation.host.updated": "Päivitetty",
+ "admin.federation.host.latest_activity": "Viimeisin toiminta",
+ "admin.federation.users": "Käyttäjät",
+ "admin.federation.users.title": "Liittoutuneet käyttäjät",
+ "admin.federation.users.manage_panel": "Hallitse liittoutuneita käyttäjiä",
+ "admin.federation.users.show_local_user": "Näytä paikallisen käyttäjän yksityiskohdat",
+ "admin.federation.user.id": "Tunnus",
+ "admin.federation.user.user_id": "Paikallinen käyttäjätunnus",
+ "admin.federation.user.external_id": "Ulkoinen käyttäjätunnus",
+ "admin.federation.user.inbox_path": "Saapuneet-laatikon polku",
+ "admin.config.federation": "Liittovaltion kokoonpano",
+ "admin.config.federation.enabled": "Käytössä",
+ "admin.config.federation.share_user_statistics": "Jaa käyttäjätilastoja muiden isäntien kanssa",
+ "admin.config.federation.max_size": "Sallittu vastauksen enimmäiskoko",
+ "admin.config.federation.signature_enforced": "Vaadi HTTP-allekirjoitukset",
+ "admin.config.federation.signature_algorithms": "Allekirjoitusalgoritmit",
+ "admin.config.federation.digest_algorithm": "Allekirjoituksen tiivistealgoritmi",
+ "admin.config.federation.get_headers": "Allekirjoitetut GET-otsikot",
+ "admin.config.federation.post_headers": "Allekirjoitetut POST-otsikot",
+ "admin.config.moderation_config": "Lievennyksen kokoonpano",
+ "admin.system_status.memory_free_times": "Muistin vapautumiset",
+ "repo.files.caption": "Tietovaraston tiedostot (viimeisin kommitti ensin)",
+ "repo.pulls.status_checks_skipped": "Ohitettu",
+ "repo.packages.visibility_warning": "Tämä tietovarasto on yksityinen, mutta linkitetyt paketit ovat julkisia (omistaja %s on julkinen).",
+ "admin.federation.host.fqdn": "FQDN",
+ "settings.new_access_token": "Uusi pääsypoletti",
+ "settings.permissions_access_specific_repositories": "Määritetyt tietovarastot",
+ "settings.access_token.selected_repositories": {
+ "one": "Valittu tietovarasto (%d)",
+ "other": "Valitut tietovarastot (%d)"
+ },
+ "settings.access_token.available_repositories": "Saatavilla olevat tietovarastot",
+ "settings.access_token.no_repositories_selected": "Tietovarastoja ei ole valittu.",
+ "settings.access_token.no_repositories_found": "Tietovarastoja ei löytynyt.",
+ "settings.access_token.remove": "Poista %s",
+ "settings.access_token.resource_all_help": "Salli pääsy kaikkiin resursseihin.",
+ "settings.access_token.resource_public_only_help": "Rajoita pääsy julkisiin tietovarastoihin ja organisaatioihin.",
+ "settings.access_token.resource_specific_repo_help": "Rajoita pääsy määritettyihin tietovarastoihin. Pelkkä lukuoikeus sallitaan kaikkiin julkisiin tietovarastoihin. Vain käyttöoikeudet, jotka sallivat pääsyn tietovarastoihin ja ongelmiin, voidaan ottaa käyttöön.",
+ "settings.access_token.admin_disabled": "Ylläpito-oikeudet on poistettu käytöstä.",
+ "settings.authorized_integrations": "Valtuutetut integraatiot",
+ "settings.manage_authorized_integrations": "Valtuutetut integraatiot",
+ "settings.authorized_integration.desc": "Valtuutetut integraatiot sallivat Forgejon vastaanottaa allekirjoitettuja JWT:itä, validoida niiden väitteet määrittetyjä sääntöjä vasten, ja sallia niiden pääsy Forgejon rajapintoja vasten.",
+ "settings.authorized_integration.ui.generic": "Geneerinen JWT",
+ "settings.authorized_integration.none": "Valtuutettuja integraatioita ei ole määritetty.",
+ "settings.authorized_integration.edit": "Muokkaa",
+ "settings.authorized_integration.edit_page_title": "Valtuutettu integraatio %s",
+ "settings.authorized_integration.create_page_title": "Luo valtuutettu integraatio",
+ "settings.authorized_integration.save": "Tallenna valtuutettu integraatio",
+ "settings.authorized_integration.create": "Luo valtuutettu integraatio",
+ "settings.authorized_integration.create_success": "Luotu valtuutettu integraatio: %s",
+ "settings.authorized_integration.field.name": "Nimi",
+ "settings.authorized_integration.field.description": "Kuvaus",
+ "settings.authorized_integration.name.required": "Valtuutetun integraation nimi vaaditaan.",
+ "settings.authorized_integration.add": "Lisää valtuutettu integraatio",
+ "settings.authorized_integration.delete.header": "Poista valtuutettu integraatio",
+ "settings.authorized_integration.deleted": "Valtuutettu integraatio on poistettu.",
+ "user.activitypub_feed.feed": "Fediverse-syöte",
+ "user.activitypub_feed.no_activity": "Ei fediverse-toimintaa",
+ "user.activitypub_feed.is_empty": "Fediverse-syötteesi on tyhjä.",
+ "user.activitypub_feed.original_source": "Alkuperäinen lähde",
+ "packages.common.install": "Asenna tämä paketti suorittamalla seuraava komento:",
+ "packages.common.registry": "Määritä tämä rekisteri komentoriviltä:",
+ "packages.common.repository": "Tietovaraston tiedot",
+ "actions.runners.edit_runner.name_label": "Nimi",
+ "actions.runners.edit_runner.description_label": "Kuvaus",
+ "actions.runners.edit_runner.save_button": "Tallenna",
+ "actions.runners.edit_runner.cancel_button": "Peruuta",
+ "actions.secrets.edit_button": "Muokkaa salaisuutta \"%s\"",
+ "actions.secrets.mutation.header": "Muokkaa salaisuutta \"%s\"",
+ "actions.secrets.mutation.success_message": "Salaisuus \"%s\" on päivitetty.",
+ "actions.secrets.mutation.failure_message": "Salaisuutta \"%s\" ei voitu päivittää.",
+ "members.add_member": "Lisää jäsen",
+ "members.user": "Käyttäjä",
+ "members.user_already_member": "Tämä käyttäjä on jo organisaation jäsen.",
+ "members.no_team_selected": "Organisaation jäsenten tulee kuulua vähintään yhteen tiimiin.",
+ "pulls.manual_merge.copy.button": "Kopioi yhdistämiskommitin viesti",
+ "form.RunnerName": "Nimi"
}
diff --git a/options/locale_next/locale_fil.json b/options/locale_next/locale_fil.json
index 0b3a418f44..30c8d7be72 100644
--- a/options/locale_next/locale_fil.json
+++ b/options/locale_next/locale_fil.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Path",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.user": "Username",
+ "admin.config.db.name": "Pangalan",
+ "admin.config.db.host": "Host",
+ "admin.config.db.type": "Uri",
+ "admin.config.db.header": "Configuration ng database",
+ "admin.config.mailer.user": "Gumagamit",
+ "admin.config.mailer.smtp.port": "Port ng SMTP",
+ "admin.config.mailer.smtp.addr": "Host ng SMTP",
+ "admin.config.mailer.enable_helo": "I-enable ang HELO",
+ "admin.config.mailer.protocol": "Protocol",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Timeout ng Sendmail",
+ "admin.config.mailer.sendmail.args": "Extra na argument sa Sendmail",
+ "admin.config.mailer.sendmail.path": "Path ng sendmail",
+ "admin.config.mailer.sendmail.use": "Gumamit ng Sendmail",
+ "admin.config.mailer.name": "Pangalan",
+ "admin.config.mailer.enabled": "Naka-enable",
+ "admin.config.mailer.header": "Configuration ng mailer",
+ "admin.config.git.gc_timeout": "Timeout on operasyon ng GC",
+ "admin.config.git.pull_timeout": "Timeout ng operasyon ng paghila",
+ "admin.config.git.clone_timeout": "Timeout ng operasyon na pag-clone",
+ "admin.config.git.mirror_timeout": "Timeout ng pag-update ng mirror",
+ "admin.config.git.migrate_timeout": "Timeout ng paglipat",
+ "admin.config.git.gc_args": "Mga argument ng GC",
+ "admin.config.git.diff.max_files": "Pinakamataas na mga diff file na ipapakita",
+ "admin.config.git.diff.max_line_characters": "Pinakamataas na mga character ng diff bawat linya",
+ "admin.config.git.diff.max_lines": "Pinakamataas na mga linya ng diff bawat file",
+ "admin.config.git.disable_diff_highlight": "I-disable ang diff syntax highlighting",
+ "admin.config.git.version": "Bersyon ng Git",
+ "admin.config.git.header": "Configuration ng git",
+ "admin.config.ssh.minimum_key_sizes": "Mga pinakamababang laki ng key",
+ "admin.config.ssh.minimum_key_size_check": "Pinakamababang key size check",
+ "admin.config.ssh.keygen_path": "Path ng keygen (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Path ng key test",
+ "admin.config.ssh.root_path": "Root path",
+ "admin.config.ssh.listen_port": "Listen port",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "Server domain ng SSH",
+ "admin.config.ssh.use_builtin_server": "Gamitin ang built-in server",
+ "admin.config.ssh.enabled": "Naka-enable",
+ "admin.config.ssh.header": "Configuration ng SSH",
+ "admin.users.never_login": "Hindi nag-sign in kailanman",
+ "admin.users.last_login": "Huling nag sign-in",
+ "admin.users.created": "Ginawa",
+ "admin.users.repos": "Mga Repo",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Remote",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Nakareserba",
+ "admin.users.restricted": "Pinaghihigpitan",
+ "admin.users.admin": "Tagapangasiwa",
+ "admin.users.activated": "Naka-activate",
+ "admin.users.full_name": "Buong pangalan",
+ "admin.users.name": "Username",
+ "admin.packages.published": "Na-publish",
+ "admin.packages.size": "Laki",
+ "admin.packages.repository": "Repositoryo",
+ "admin.packages.type": "Uri",
+ "admin.packages.version": "Bersyon",
+ "admin.packages.name": "Pangalan",
+ "admin.packages.creator": "Gumawa",
+ "admin.packages.owner": "May-ari",
+ "admin.packages.unreferenced_size": "Hindi sinangguniang laki: %s",
+ "admin.packages.total_size": "Kabuuang laki: %s",
+ "admin.repos.lfs_size": "Laki ng LFS",
+ "admin.repos.size": "Laki",
+ "admin.repos.issues": "Mga isyu",
+ "admin.repos.name": "Pangalan",
+ "admin.repos.owner": "May-ari",
+ "admin.orgs.new_orga": "Bagong organisasyon",
+ "admin.orgs.members": "Mga miyembro",
+ "admin.orgs.teams": "Mga koponan",
+ "admin.orgs.name": "Pangalan",
+ "admin.dashboard.rebuild_issue_indexer": "Gawin muli ang indexef ng isyu",
+ "admin.dashboard.start_schedule_tasks": "Simulan ang mga naka-iskedyul na aksyon ng task",
+ "admin.dashboard.cancel_abandoned_jobs": "Kanselahin ang mga naiwang aksyon ng trabaho",
+ "admin.dashboard.stop_endless_tasks": "Itigil ang mga hindi natatapos na aksyon ng task",
+ "admin.dashboard.stop_zombie_tasks": "Itigil ang mga zombie action task",
+ "admin.dashboard.gc_lfs": "I-garbage collect ang mga LFS meta object",
+ "admin.dashboard.delete_old_system_notices": "Burahin ang lahat ng mga lumang paunawa ng sistema mula sa database",
+ "admin.dashboard.update_checker": "Tagasuri ng update",
+ "admin.dashboard.cleanup_actions": "Linisin ang mga nag-expire na log at artifact mula sa mga aksyon",
+ "admin.dashboard.cleanup_packages": "Linisin ang mga na-expire na package",
+ "admin.dashboard.cleanup_hook_task_table": "Linisin ang hook_task table",
+ "admin.dashboard.sync_external_users": "I-synchronize ang panlabas na user data",
+ "admin.dashboard.reinit_missing_repos": "Muling pagsasaayos ng lahat ng nawawalang mga repositori ng Git kung saan umiiral ang mga tala",
+ "admin.dashboard.resync_all_hooks": "I-resychronize ang mga Git hook ng lahat ng mga repositoryo (pre-receive, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "I-update ang \".ssh/authorized_principals\" file sa mga principal ng Forgejo SSH.",
+ "admin.dashboard.resync_all_sshkeys": "I-update ang \".ssh/authorized_keys\" file sa mga key ng Forgejo SSH.",
+ "admin.dashboard.git_gc_repos": "I-garbage collect ang lahat ng mga repositoryo",
+ "admin.dashboard.update_migration_poster_id": "I-update ang mga migration poster ID",
+ "admin.dashboard.deleted_branches_cleanup": "Linisin ang mga binurang branch",
+ "admin.dashboard.archive_cleanup": "Burahin ang mga lumang archive ng repositoryo",
+ "admin.dashboard.check_repo_stats": "Suriin ang lahat ng istatistika ng repositoryo",
+ "admin.dashboard.repo_health_check": "Suriin ang kalusugan ng lahat ng mga repositoryo",
+ "admin.dashboard.update_mirrors": "I-update ang mga mirror",
+ "admin.dashboard.sync_repo_tags": "I-sync ang mga tag mula sa Git data sa database",
+ "admin.dashboard.sync_repo_branches": "I-sync ang mga nawawalang branch mula sa Git data sa database",
+ "admin.dashboard.delete_generated_repository_avatars": "Burahin ang mga na-generate na avatar ng repositoryo",
+ "admin.dashboard.sync_tag.started": "Nasimulan ang pag-sync ng mga tag",
+ "admin.dashboard.sync_branch.started": "Nasimulan ang pag-sync ng mga branch",
+ "admin.dashboard.delete_old_actions.started": "Nasimula na ang burahin ang lahat ng mga lumang aktibidad mula sa database.",
+ "admin.dashboard.delete_missing_repos.started": "Nasimula na ang utos na burahin ang lahat ng mga repositoryo na nawawalan ng kanilang mga Git file.",
+ "admin.dashboard.delete_repo_archives.started": "Nasimulan na ang utos na burahin ang lahat ng mga archive ng repositoryo.",
+ "admin.dashboard.delete_inactive_accounts.started": "Sinumulan na ang utos na burahin ang lahat ng mga hindi na-activate na account.",
+ "admin.dashboard.cron.finished": "Cron: natapos na ang %[1]s",
+ "admin.dashboard.cron.error": "Error sa Cron: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s ay kinansela: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Sinumulan ang Cron: %[1]s",
+ "admin.dashboard.task.unknown": "Hindi kilalang utos: %[1]s",
+ "admin.dashboard.task.finished": "Utos: %[1]s na sinumulan ni %[2]s ay natapos na",
+ "admin.dashboard.task.error": "Error sa Utos: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Utos: %[1]s ay kinansela: %[3]s",
+ "admin.dashboard.task.process": "Utos: %[1]s",
+ "admin.dashboard.task.started": "Sinimulan ang Utos: %[1]s",
+ "admin.dashboard.operation_run": "Patakbuhin",
+ "admin.dashboard.operation_switch": "Palitan",
+ "admin.dashboard.operation_name": "Pangalan ng Operasyon",
+ "admin.dashboard.system_status": "Status ng sistema",
+ "admin.dashboard.operations": "Mga operasyon ng pagpapanatili",
+ "admin.dashboard.statistic": "Buod",
+ "admin.dashboard.new_version_hint": "Available na ang Forgejo %s, tumatakbo ka ng %s. Suriin ang blog para sa karagdagang detalye.",
"admin.monitor.queue.settings.remove_all_items.success": "Tinanggal na ang lahat ng mga item sa queue.",
"admin.monitor.queue.settings.remove_all_items": "Tanggalin lahat",
"admin.monitor.queue.settings.changed": "Na-update ang mga setting",
diff --git a/options/locale_next/locale_fr-FR.json b/options/locale_next/locale_fr-FR.json
index 68d76f83f3..b4a7208f6e 100644
--- a/options/locale_next/locale_fr-FR.json
+++ b/options/locale_next/locale_fr-FR.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Emplacement",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schéma",
+ "admin.config.db.user": "Nom d'utilisateur",
+ "admin.config.db.name": "Nom",
+ "admin.config.db.host": "Hôte",
+ "admin.config.db.type": "Type",
+ "admin.config.db.header": "Configuration de la base de données",
+ "admin.config.mailer.user": "Utilisateur",
+ "admin.config.mailer.smtp.port": "Port SMTP",
+ "admin.config.mailer.smtp.addr": "Adresse SMTP",
+ "admin.config.mailer.enable_helo": "Activer HELO",
+ "admin.config.mailer.protocol": "Protocole",
+ "admin.config.mailer.use_dummy": "Factice",
+ "admin.config.mailer.sendmail.timeout": "Délai d’attente de Sendmail",
+ "admin.config.mailer.sendmail.args": "Arguments supplémentaires pour Sendmail",
+ "admin.config.mailer.sendmail.path": "Chemin d’accès à Sendmail",
+ "admin.config.mailer.sendmail.use": "Utiliser Sendmail",
+ "admin.config.mailer.name": "Nom",
+ "admin.config.mailer.enabled": "Activé",
+ "admin.config.mailer.header": "Configuration du service SMTP",
+ "admin.config.git.gc_timeout": "Délai imparti pour l'opération \"GC\"",
+ "admin.config.git.pull_timeout": "Délai imparti pour l'opération \"Pull\"",
+ "admin.config.git.clone_timeout": "Délai imparti pour l'opération \"clone\"",
+ "admin.config.git.mirror_timeout": "Délai imparti pour mettre à jour le miroir",
+ "admin.config.git.migrate_timeout": "Délai imparti pour une migration",
+ "admin.config.git.gc_args": "Arguments de GC",
+ "admin.config.git.diff.max_files": "Nombre max de fichiers de diff (à afficher)",
+ "admin.config.git.diff.max_line_characters": "Nombre max de caractères de diff (pour une seule ligne)",
+ "admin.config.git.diff.max_lines": "Lignes de diff Max (pour un seul fichier)",
+ "admin.config.git.disable_diff_highlight": "Désactiver la surbrillance syntaxique de diff",
+ "admin.config.git.version": "Version de Git",
+ "admin.config.git.header": "Configuration de Git",
+ "admin.config.ssh.minimum_key_sizes": "Tailles de clé minimales",
+ "admin.config.ssh.minimum_key_size_check": "Vérification de la longueur de clé minimale",
+ "admin.config.ssh.keygen_path": "Chemin vers le générateur de clefs (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Chemin de test des clés",
+ "admin.config.ssh.root_path": "Emplacement racine",
+ "admin.config.ssh.listen_port": "Port d'écoute",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "Domaine du serveur SSH",
+ "admin.config.ssh.use_builtin_server": "Utiliser le serveur incorporé",
+ "admin.config.ssh.enabled": "Activé",
+ "admin.config.ssh.header": "Configuration SSH",
+ "admin.users.never_login": "Jamais connecté",
+ "admin.users.last_login": "Dernière connexion",
+ "admin.users.created": "Créés",
+ "admin.users.repos": "Dépôts",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Distant",
+ "admin.users.bot": "Robot",
+ "admin.users.reserved": "Réservé",
+ "admin.users.restricted": "Restreint",
+ "admin.users.admin": "Administrateur",
+ "admin.users.activated": "Activé",
+ "admin.users.full_name": "Nom complet",
+ "admin.users.name": "Nom d'utilisateur",
+ "admin.packages.published": "Publiés",
+ "admin.packages.size": "Taille",
+ "admin.packages.repository": "Dépôt",
+ "admin.packages.type": "Type",
+ "admin.packages.version": "Version",
+ "admin.packages.name": "Nom",
+ "admin.packages.creator": "Créateur",
+ "admin.packages.owner": "Propriétaire",
+ "admin.packages.unreferenced_size": "Taille non référencée : %s",
+ "admin.packages.total_size": "Taille totale : %s",
+ "admin.repos.lfs_size": "Taille LFS",
+ "admin.repos.size": "Taille",
+ "admin.repos.issues": "Tickets",
+ "admin.repos.name": "Nom",
+ "admin.repos.owner": "Propriétaire",
+ "admin.orgs.new_orga": "Nouvelle organisation",
+ "admin.orgs.members": "Membres",
+ "admin.orgs.teams": "Équipes",
+ "admin.orgs.name": "Nom",
+ "admin.dashboard.rebuild_issue_indexer": "Reconstruire l’indexeur des issues",
+ "admin.dashboard.start_schedule_tasks": "Démarrer les actions planifiées",
+ "admin.dashboard.cancel_abandoned_jobs": "Annuler les actions abandonnées",
+ "admin.dashboard.stop_endless_tasks": "Arrêter les actions sans fin",
+ "admin.dashboard.stop_zombie_tasks": "Arrêter les actions zombies",
+ "admin.dashboard.gc_lfs": "Épousseter les métaobjets LFS",
+ "admin.dashboard.delete_old_system_notices": "Supprimer toutes les anciennes observations de la base de données",
+ "admin.dashboard.update_checker": "Vérificateur de mise à jour",
+ "admin.dashboard.cleanup_actions": "Nettoyer les journaux et les artefacts des actions obsolètes",
+ "admin.dashboard.cleanup_packages": "Nettoyer des paquets expirés",
+ "admin.dashboard.cleanup_hook_task_table": "Nettoyer la table hook_task",
+ "admin.dashboard.sync_external_users": "Synchroniser les données de l’utilisateur externe",
+ "admin.dashboard.reinit_missing_repos": "Réinitialiser tous les dépôts Git manquants pour lesquels un enregistrement existe",
+ "admin.dashboard.resync_all_hooks": "Re-synchroniser les déclencheurs Git de tous les dépôts (pre-receive, update, post-receive, proc-receive, ...)",
+ "admin.dashboard.resync_all_sshprincipals": "Mettre à jour le fichier « .ssh/authorized_principals » avec les principaux de Forgejo SSH.",
+ "admin.dashboard.resync_all_sshkeys": "Mettre à jour le fichier « ssh/authorized_keys » avec les clés SSH Forgejo.",
+ "admin.dashboard.git_gc_repos": "Exécuter le ramasse-miette des dépôts",
+ "admin.dashboard.update_migration_poster_id": "Actualiser les ID des affiches de migration",
+ "admin.dashboard.deleted_branches_cleanup": "Nettoyer les branches supprimées",
+ "admin.dashboard.archive_cleanup": "Supprimer les archives des vieux dépôts",
+ "admin.dashboard.check_repo_stats": "Voir les statistiques de tous les dépôts",
+ "admin.dashboard.repo_health_check": "Vérifier l'état de santé de tous les dépôts",
+ "admin.dashboard.update_mirrors": "Actualiser les miroirs",
+ "admin.dashboard.sync_repo_tags": "Synchroniser les étiquettes depuis Git vers la base de donnée",
+ "admin.dashboard.sync_repo_branches": "Synchroniser les branches manquantes depuis Git vers la base de donnée",
+ "admin.dashboard.delete_generated_repository_avatars": "Supprimer les avatars de dépôt générés",
+ "admin.dashboard.sync_tag.started": "La synchronisation des étiquettes a commencé",
+ "admin.dashboard.sync_branch.started": "Début de la synchronisation des branches",
+ "admin.dashboard.delete_old_actions.started": "Suppression de toutes les anciennes activités de la base de données démarrée.",
+ "admin.dashboard.delete_missing_repos.started": "Tâche de suppression de tous les dépôts sans fichiers Git démarrée.",
+ "admin.dashboard.delete_repo_archives.started": "Tâche de suppression de toutes les archives de dépôts démarrée.",
+ "admin.dashboard.delete_inactive_accounts.started": "Tâche de suppression de tous les comptes inactifs démarrée.",
+ "admin.dashboard.cron.finished": "Tâche récurrente %[1]s terminée",
+ "admin.dashboard.cron.error": "Erreur dans la tâche récurrente %s : %[3]s",
+ "admin.dashboard.cron.cancelled": "Tâche récurrente %[1]s annulée : %[3]s",
+ "admin.dashboard.cron.process": "Tâche récurrente : %[1]s",
+ "admin.dashboard.cron.started": "Tâche planifiée démarrée : %[1]s",
+ "admin.dashboard.task.unknown": "Tâche inconnue : %[1]s",
+ "admin.dashboard.task.finished": "Tâche : %[1]s démarrée par %[2]s est terminée",
+ "admin.dashboard.task.error": "Erreur dans la tâche : %[1]s : %[3]s",
+ "admin.dashboard.task.cancelled": "Tâche %[1]s annulée : %[3]s",
+ "admin.dashboard.task.process": "Tâche : %[1]s",
+ "admin.dashboard.task.started": "Tâche démarrée : %[1]s",
+ "admin.dashboard.operation_run": "Exécuter",
+ "admin.dashboard.operation_switch": "Basculer",
+ "admin.dashboard.operation_name": "Nom de l'Opération",
+ "admin.dashboard.system_status": "État du système",
+ "admin.dashboard.operations": "Opérations de maintenance",
+ "admin.dashboard.statistic": "Résumé",
+ "admin.dashboard.new_version_hint": "Forgejo %s est maintenant disponible, vous utilisez %s. Consultez le blog pour plus de détails.",
"admin.monitor.queue.settings.remove_all_items.success": "Tous les éléments de la file d'attente ont été effacés.",
"admin.monitor.queue.settings.remove_all_items": "Tout effacer",
"admin.monitor.queue.settings.changed": "Paramètres mis à jour",
@@ -99,9 +225,9 @@
"other": ""
},
"counters.n_tags": {
- "one": "%s étiquettes",
- "many": "%s étiquettes",
- "other": ""
+ "one": "%s tag",
+ "many": "%s tags",
+ "other": "%s tags"
},
"counters.n_releases": {
"one": "%s publication",
@@ -186,7 +312,7 @@
"packages.arch.version.provides": "Fournit",
"packages.arch.version.groups": "Groupe",
"packages.arch.version.optdepends": "Dépendances optionnelles",
- "packages.arch.version.makedepends": "Faire des dépendances",
+ "packages.arch.version.makedepends": "Dépendances de compilation",
"packages.arch.version.checkdepends": "Vérifier les dépendances",
"packages.arch.version.conflicts": "Conflits",
"packages.arch.version.replaces": "Remplace",
@@ -292,14 +418,14 @@
"packages.owner.settings.chef.keypair": "Générer une paire de clés",
"packages.owner.settings.chef.keypair.description": "Les requêtes envoyées au registre Chef doivent être signées cryptographiquement à des fin d'authentification. Lorsqu'une paire de clés est générée, seule la clé publique est conservée dans Forgejo. La clé privée est fournie afin que vous puissiez l'utiliser avec knife. La génération d'une nouvelle clé remplace la précédente.",
"fork.n_forks": {
- "one": "%s bifurcation",
- "many": "%s bifurcations",
- "other": ""
+ "one": "%s fork",
+ "many": "%s forks",
+ "other": "%s forks"
},
"stars.n_stars": {
"one": "%s étoiles",
"many": "%s étoiles",
- "other": ""
+ "other": "%s étoiles"
},
"release.n_downloads": {
"one": "%s téléchargement",
@@ -319,7 +445,7 @@
"search.milestone_kind": "Recherche dans les jalons…",
"discussion.locked": "Cette discussion a été bloqué. Les commentaires sont limités aux contributeurs.",
"relativetime.now": "maintenant",
- "relativetime.future": "dans le future",
+ "relativetime.future": "dans le futur",
"relativetime.mins": {
"one": "il y a %d minute",
"many": "il y a %d minutes",
@@ -439,17 +565,17 @@
"migrate.items.wiki": "Wiki",
"migrate.items.milestones": "Jalons",
"migrate.items.labels": "Labels",
- "migrate.items.issues": "Tickets",
- "migrate.items.pull_requests": "Demandes d'ajout",
- "migrate.items.merge_requests": "Demandes de fusion",
+ "migrate.items.issues": "Issues",
+ "migrate.items.pull_requests": "Pull requests",
+ "migrate.items.merge_requests": "Merge requests",
"migrate.items.releases": "Publications",
"migrate.in_progress.git": "Migration des données Git",
"migrate.in_progress.topics": "Migration des sujets",
"migrate.in_progress.milestones": "Migration des jalons",
"migrate.in_progress.labels": "Migration des labels",
"migrate.in_progress.releases": "Migration des publications",
- "migrate.in_progress.issues": "Migration des tickets",
- "migrate.in_progress.pulls": "Migration des demandes d'ajout",
+ "migrate.in_progress.issues": "Migration des issues",
+ "migrate.in_progress.pulls": "Migration des pull requests",
"migrate.cancel.title": "Annuler la migration",
"migrate.cancel.confirmation": "Voulez-vous abandonner cette migration ?",
"admin.dashboard.remove_resolved_reports": "Supprimer les signalements résolus",
@@ -460,13 +586,13 @@
"admin.moderation.reports": "Signalements",
"admin.moderation.no_open_reports": "Il n'y a actuellement aucun signalement ouvert.",
"warning.repository.out_of_sync": "La représentation en base de données de ce dépôt est désynchronisée. Si cet avertissement s'affiche toujours après avoir poussé un commit sur ce dépôt, veuillez contacter l'administrateur.",
- "repo.pulls.already_merged": "Fusion échouée : Cette demande d'ajout a déjà été fusionnée.",
+ "repo.pulls.already_merged": "Merge échoué : Cette pull request a déjà été mergée.",
"migrate.form.error.url_credentials": "L'URL contient des identifiants, mettez-les dans les champs utilisateur et mot de passe respectivement",
"settings.twofa_reenroll": "Réenregistrer l'authentification à deux facteurs",
"settings.twofa_reenroll.description": "Réenregistrer votre authentification à deux facteurs",
"user.ghost.tooltip": "Cet utilisateur a été supprimé, ou ne peut pas être trouvé.",
"og.repo.summary_card.alt_description": "Fiche récapitulative du dépôt %[1]s, décrit comme : %[2]s",
- "repo.commit.load_tags_failed": "Impossible de charger les étiquettes à cause d'une erreur interne",
+ "repo.commit.load_tags_failed": "Impossible de charger les tags à cause d'une erreur interne",
"actions.runs.view_most_recent_run": "Voir l'exécution la plus récente",
"actions.runs.viewing_out_of_date_run": "Vous consultez une exécution obsolète de cette tâche qui a été lancée le %[1]s.",
"actions.runs.run_attempt_label": "Tentative d'exécution #%[1]s (%[2]s)",
@@ -531,10 +657,10 @@
"repo.pulls.maintainers_can_edit": "Les mainteneurs peuvent modifier cette pull request.",
"repo.pulls.maintainers_cannot_edit": "Les mainteneurs ne peuvent pas éditer cette pull request.",
"mail.issue.action.close_by_commit": "%[1]s a fermé %[2]s dans le commit %[3]s.",
- "migrate.pagure.private_issues.summary": "Tickets privés (Optionnel)",
- "migrate.pagure.private_issues.description": "Cette fonctionnalité est conçue pour créer un deuxième dépôt contenant uniquement des tickets privés de votre projet Pagure à des fins d'archive. Premièrement, effectuer une migration normale (sans jeton) pour importer tout le contenu public. Ensuite, si vous avez des tickets privés à préserver, créez un dépôt séparé en utilisant cette option de jeton pour archiver ces tickets privés.",
- "migrate.pagure.private_issues.warning": "Assurez-vous de définir la visibilité du dépôt ci-dessus à Privé si vous utilisez la clé API pour importer des tickets privés. Cela empêche d'exposer accidentellement du contenu privé dans un dépôt public.",
- "migrate.pagure.token.placeholder": "Seulement pour créer des archives de tickets privés",
+ "migrate.pagure.private_issues.summary": "Issues privées (Optionnel)",
+ "migrate.pagure.private_issues.description": "Cette fonctionnalité est conçue pour créer un deuxième dépôt contenant uniquement des issues privées de votre projet Pagure à des fins d'archive. Premièrement, effectuer une migration normale (sans jeton) pour importer tout le contenu public. Ensuite, si vous avez des issues privées à préserver, créez un dépôt séparé en utilisant cette option de jeton pour archiver ces issues privées.",
+ "migrate.pagure.private_issues.warning": "Assurez-vous de définir la visibilité du dépôt ci-dessus à Privé si vous utilisez la clé API pour importer des issues privées. Cela empêche d'exposer accidentellement du contenu privé dans un dépôt public.",
+ "migrate.pagure.token.placeholder": "Seulement pour créer des archives d'issues privées",
"actions.workflow.pre_execution_error": "Le workflow n'a pas été exécuté en raison d'une erreur qui a bloqué la tentative d'exécution.",
"watch.n_watchers": {
"one": "%s observateur",
@@ -561,7 +687,7 @@
"repo.issues.filter_assignee.hint": "Filtrer par utilisateur assigné",
"repo.issues.filter_reviewers.hint": "Filtrer par l'utilisateur qui a examiné",
"repo.issues.filter_mention.hint": "Filtrer par utilisateur mentionné",
- "repo.issues.filter_modified.hint": "Filtrer par la dernière date modifiée",
+ "repo.issues.filter_modified.hint": "Filtrer par dernière date de modification",
"search.syntax": "Syntaxe de recherche",
"admin.dashboard.transfer_lingering_logs": "Transférer les journaux des actions terminées de la base de données au stockage",
"actions.status.diagnostics.waiting": {
@@ -581,7 +707,7 @@
"moderation.action.account.delete": "Supprimer le compte",
"moderation.action.account.suspend": "Suspendre le compte",
"moderation.action.repo.delete": "Supprimer le dépôt",
- "moderation.action.issue.delete": "Supprimer le ticket",
+ "moderation.action.issue.delete": "Supprimer l'issue",
"moderation.action.comment.delete": "Supprimer le commentaire",
"moderation.unknown_action": "Action inconnue",
"moderation.users.cannot_suspend_self": "Vous ne pouvez pas vous suspendre vous même.",
@@ -590,13 +716,13 @@
"moderation.users.already_suspended": "Le compte est déjà suspendu.",
"moderation.users.suspend_success": "Le compte a été suspendu.",
"moderation.users.cannot_delete_admins": "Les utilisateurs avec les droits d'administration ne peuvent pas être supprimés.",
- "moderation.issue.deletion_success": "Le ticket a été supprimé.",
+ "moderation.issue.deletion_success": "L'issue a été supprimée.",
"moderation.comment.deletion_success": "Le commentaire a été supprimé.",
"actions.workflow.incomplete_matrix_missing_job": "Impossible d'évaluer `strategy.matrix` de la tâche %[1]s : la tâche %[2]s n'est pas dans la liste `needs` de la tâche %[1]s (%[3]s).",
- "actions.workflow.incomplete_matrix_missing_output": "Impossible d'évaluer `strategy.matrix` de la tâche %[1]s : la tâche %[2]s n'a pas de sortie %[3]s.",
+ "actions.workflow.incomplete_matrix_missing_output": "Impossible d'évaluer `strategy.matrix` de la tâche %[1]s : la sortie %[3]s manque dans la tâche %[2]s.",
"actions.workflow.incomplete_matrix_unknown_cause": "Impossible d'évaluer `strategy.matrix` de la tâche %[1]s : erreur inconnue.",
"actions.workflow.incomplete_runson_missing_job": "Impossible d'évaluer les `runs-on` de la tâche %[1]s : la tâche %[2]s n'est pas dans la liste des `needs` de la tâche %[1]s (%[3]s).",
- "actions.workflow.incomplete_runson_missing_output": "Impossible d'évaluer les `runs-on` de la tâche %[1]s : la tâche %[2]s n'a pas de sortie %[3]s.",
+ "actions.workflow.incomplete_runson_missing_output": "Impossible d'évaluer les `runs-on` de la tâche %[1]s : la sortie %[3]s manque dans la tâche %[2]s.",
"actions.workflow.incomplete_runson_missing_matrix_dimension": "Impossible d'évaluer les `runs-on` de la tâche %[1]s : la dimension matricielle %[2]s n'existe pas.",
"actions.workflow.incomplete_runson_unknown_cause": "Impossible d'évaluer `runs-on` de la tâche %[1]s : erreur inconnue.",
"admin.auths.oauth2_quota_group_map_removal": "Supprimer les utilisateurs des groupes de quotas synchronisés si l'utilisateur n'appartient pas au groupe correspondant.",
@@ -622,7 +748,7 @@
"actions.secrets.creation.value_description": "La valeur d'un secret peut être n'importe quel texte. Les caractères spéciaux sont conservés. Les CRLF (saut de ligne au format Microsoft) sont automatiquement convertis en LF. Encodez la valeur en Base64 si les sauts de ligne doivent être conservés.",
"actions.variables.mutation.name_description": "Le nom d'une variable ne peut contenir que des lettres, nombres, ou `_`. Il ne peut pas être nommé CI ou commencer par FORGEJO_, GITEA_, GITHUB_, ou un nombre. Forgejo le convertira automatiquement en majuscules.",
"actions.variables.mutation.value_description": "La valeur d'une variable peut être n'importe quel texte. Les caractères spéciaux sont conservés. Les CRLF (saut de ligne au format Microsoft) sont automatiquement convertis en LF. Encodez la valeur en Base64 si les sauts de ligne doivent être conservés.",
- "repo.issues.filter_sort.hint_with_placeholder": "Trier par: %s",
+ "repo.issues.filter_sort.hint_with_placeholder": "Trier par : %s",
"packages.common.install": "Pour installer le paquet, exécutez la commande suivante :",
"packages.common.registry": "Configurez ce registre à partir de la ligne de commande suivante :",
"packages.common.repository": "Informations sur le dépôt",
@@ -698,7 +824,7 @@
"settings.access_token.no_repositories_found": "Aucun dépôt trouvé.",
"settings.access_token.remove": "Supprimer %s",
"settings.access_token.resource_public_only_help": "Limiter l'accès aux dépôts et aux organisations publiques.",
- "settings.access_token.resource_specific_repo_help": "Limiter l'accès à une liste spécifique de dépôts. L'accès en lecture seule est autorisé sur tous les dépôts publiques. Seules les permissions permettant l'accès aux dépôts et aux tickets peuvent être activées.",
+ "settings.access_token.resource_specific_repo_help": "Limiter l'accès à une liste spécifique de dépôts. L'accès en lecture seule est autorisé sur tous les dépôts publiques. Seules les permissions permettant l'accès aux dépôts et aux issues peuvent être activées.",
"settings.access_token.admin_disabled": "Les autorisations administratives sont désactivées.",
"actions.runners.token": "Jeton",
"actions.runners.ephemeral.no": "non",
@@ -725,5 +851,19 @@
"repo.files.filename": "Fichier",
"repo.files.last_commit_message": "Dernier message de commit",
"repo.files.last_commit_date": "Date du dernier commit",
- "admin.federation.host.created": "Créé"
+ "admin.federation.host.created": "Créé",
+ "admin.federation.host.software_name": "Programme",
+ "admin.federation.users.title": "Utilisateurs fédérés",
+ "admin.federation.users.manage_panel": "Gérer les utilisateurs fédérés",
+ "admin.federation.users.show_local_user": "Montrer les détails de l'utilisateur local",
+ "admin.config.federation.signature_algorithms": "Algorithmes de signature",
+ "admin.config.federation.digest_algorithm": "Algorithme de hachage de signature",
+ "user.activitypub_feed.original_source": "Source originale",
+ "actions.runners.runner_setup.instruction_advanced_configurations": "Pour configurer l'exécuteur Forgejo dans des conteneurs ou pour des configurations avancées, consultez la documentation.",
+ "actions.workflow.rerun_impossible": "Le workflow ne peut pas être relancé.",
+ "actions.workflow.job_rerun_impossible": "La tâche ne peut pas être relancé.",
+ "members.add_member": "Ajouter un membre",
+ "members.user": "Utilisateur",
+ "members.user_already_member": "Cet utilisateur est déjà membre de l'organisation.",
+ "members.no_team_selected": "Les membres de l'organisation doivent appartenir à au moins une équipe."
}
diff --git a/options/locale_next/locale_fr_CA.json b/options/locale_next/locale_fr_CA.json
new file mode 100644
index 0000000000..89b729b634
--- /dev/null
+++ b/options/locale_next/locale_fr_CA.json
@@ -0,0 +1,869 @@
+{
+ "admin.config.db.path": "Emplacement",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schéma",
+ "admin.config.db.user": "Nom d'utilisateur",
+ "admin.config.db.name": "Nom",
+ "admin.config.db.host": "Hôte",
+ "admin.config.db.type": "Type",
+ "admin.config.db.header": "Configuration de la base de données",
+ "admin.config.mailer.user": "Utilisateur",
+ "admin.config.mailer.smtp.port": "Port SMTP",
+ "admin.config.mailer.smtp.addr": "Adresse SMTP",
+ "admin.config.mailer.enable_helo": "Activer HELO",
+ "admin.config.mailer.protocol": "Protocole",
+ "admin.config.mailer.use_dummy": "Factice",
+ "admin.config.mailer.sendmail.timeout": "Délai d’attente de Sendmail",
+ "admin.config.mailer.sendmail.args": "Arguments supplémentaires pour Sendmail",
+ "admin.config.mailer.sendmail.path": "Chemin d’accès à Sendmail",
+ "admin.config.mailer.sendmail.use": "Utiliser Sendmail",
+ "admin.config.mailer.name": "Nom",
+ "admin.config.mailer.enabled": "Activé",
+ "admin.config.mailer.header": "Configuration du service SMTP",
+ "admin.config.git.gc_timeout": "Délai imparti pour l'opération \"GC\"",
+ "admin.config.git.pull_timeout": "Délai imparti pour l'opération \"Pull\"",
+ "admin.config.git.clone_timeout": "Délai imparti pour l'opération \"clone\"",
+ "admin.config.git.mirror_timeout": "Délai imparti pour mettre à jour le miroir",
+ "admin.config.git.migrate_timeout": "Délai imparti pour une migration",
+ "admin.config.git.gc_args": "Arguments de GC",
+ "admin.config.git.diff.max_files": "Nombre max de fichiers de diff (à afficher)",
+ "admin.config.git.diff.max_line_characters": "Nombre max de caractères de diff (pour une seule ligne)",
+ "admin.config.git.diff.max_lines": "Lignes de diff Max (pour un seul fichier)",
+ "admin.config.git.disable_diff_highlight": "Désactiver la surbrillance syntaxique de diff",
+ "admin.config.git.version": "Version de Git",
+ "admin.config.git.header": "Configuration de Git",
+ "admin.config.ssh.minimum_key_sizes": "Tailles de clé minimales",
+ "admin.config.ssh.minimum_key_size_check": "Vérification de la longueur de clé minimale",
+ "admin.config.ssh.keygen_path": "Chemin vers le générateur de clefs (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Chemin de test des clés",
+ "admin.config.ssh.root_path": "Emplacement racine",
+ "admin.config.ssh.listen_port": "Port d'écoute",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "Domaine du serveur SSH",
+ "admin.config.ssh.use_builtin_server": "Utiliser le serveur incorporé",
+ "admin.config.ssh.enabled": "Activé",
+ "admin.config.ssh.header": "Configuration SSH",
+ "admin.users.never_login": "Jamais connecté",
+ "admin.users.last_login": "Dernière connexion",
+ "admin.users.created": "Créés",
+ "admin.users.repos": "Dépôts",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Distant",
+ "admin.users.bot": "Robot",
+ "admin.users.reserved": "Réservé",
+ "admin.users.restricted": "Restreint",
+ "admin.users.admin": "Administrateur",
+ "admin.users.activated": "Activé",
+ "admin.users.full_name": "Nom complet",
+ "admin.users.name": "Nom d'utilisateur",
+ "admin.packages.published": "Publiés",
+ "admin.packages.size": "Taille",
+ "admin.packages.repository": "Dépôt",
+ "admin.packages.type": "Type",
+ "admin.packages.version": "Version",
+ "admin.packages.name": "Nom",
+ "admin.packages.creator": "Créateur",
+ "admin.packages.owner": "Propriétaire",
+ "admin.packages.unreferenced_size": "Taille non référencée : %s",
+ "admin.packages.total_size": "Taille totale : %s",
+ "admin.repos.lfs_size": "Taille LFS",
+ "admin.repos.size": "Taille",
+ "admin.repos.issues": "Tickets",
+ "admin.repos.name": "Nom",
+ "admin.repos.owner": "Propriétaire",
+ "admin.orgs.new_orga": "Nouvelle organisation",
+ "admin.orgs.members": "Membres",
+ "admin.orgs.teams": "Équipes",
+ "admin.orgs.name": "Nom",
+ "admin.dashboard.rebuild_issue_indexer": "Reconstruire l’indexeur des tickets",
+ "admin.dashboard.start_schedule_tasks": "Démarrer les actions planifiées",
+ "admin.dashboard.cancel_abandoned_jobs": "Annuler les actions abandonnées",
+ "admin.dashboard.stop_endless_tasks": "Arrêter les actions sans fin",
+ "admin.dashboard.stop_zombie_tasks": "Arrêter les actions zombies",
+ "admin.dashboard.gc_lfs": "Épousseter les métaobjets LFS",
+ "admin.dashboard.delete_old_system_notices": "Supprimer toutes les anciennes observations de la base de données",
+ "admin.dashboard.update_checker": "Vérificateur de mise à jour",
+ "admin.dashboard.cleanup_actions": "Nettoyer les journaux et les artefacts des actions obsolètes",
+ "admin.dashboard.cleanup_packages": "Nettoyer des paquets expirés",
+ "admin.dashboard.cleanup_hook_task_table": "Nettoyer la table hook_task",
+ "admin.dashboard.sync_external_users": "Synchroniser les données de l’utilisateur externe",
+ "admin.dashboard.reinit_missing_repos": "Réinitialiser tous les dépôts Git manquants pour lesquels un enregistrement existe",
+ "admin.dashboard.resync_all_hooks": "Re-synchroniser les déclencheurs Git de tous les dépôts (pre-receive, update, post-receive, proc-receive, ...)",
+ "admin.dashboard.resync_all_sshprincipals": "Mettre à jour le fichier « .ssh/authorized_principals » avec les principaux de Forgejo SSH.",
+ "admin.dashboard.resync_all_sshkeys": "Mettre à jour le fichier « ssh/authorized_keys » avec les clés SSH Forgejo.",
+ "admin.dashboard.git_gc_repos": "Exécuter le ramasse-miette des dépôts",
+ "admin.dashboard.update_migration_poster_id": "Actualiser les ID des affiches de migration",
+ "admin.dashboard.deleted_branches_cleanup": "Nettoyer les branches supprimées",
+ "admin.dashboard.archive_cleanup": "Supprimer les archives des vieux dépôts",
+ "admin.dashboard.check_repo_stats": "Voir les statistiques de tous les dépôts",
+ "admin.dashboard.repo_health_check": "Vérifier l'état de santé de tous les dépôts",
+ "admin.dashboard.update_mirrors": "Actualiser les miroirs",
+ "admin.dashboard.sync_repo_tags": "Synchroniser les étiquettes depuis Git vers la base de donnée",
+ "admin.dashboard.sync_repo_branches": "Synchroniser les branches manquantes depuis Git vers la base de donnée",
+ "admin.dashboard.delete_generated_repository_avatars": "Supprimer les avatars de dépôt générés",
+ "admin.dashboard.sync_tag.started": "La synchronisation des étiquettes a commencé",
+ "admin.dashboard.sync_branch.started": "Début de la synchronisation des branches",
+ "admin.dashboard.delete_old_actions.started": "Suppression de toutes les anciennes activités de la base de données démarrée.",
+ "admin.dashboard.delete_missing_repos.started": "Tâche de suppression de tous les dépôts sans fichiers Git démarrée.",
+ "admin.dashboard.delete_repo_archives.started": "Tâche de suppression de toutes les archives de dépôts démarrée.",
+ "admin.dashboard.delete_inactive_accounts.started": "Tâche de suppression de tous les comptes inactifs démarrée.",
+ "admin.dashboard.cron.finished": "Tâche récurrente %[1]s terminée",
+ "admin.dashboard.cron.error": "Erreur dans la tâche récurrente %s : %[3]s",
+ "admin.dashboard.cron.cancelled": "Tâche récurrente %[1]s annulée : %[3]s",
+ "admin.dashboard.cron.process": "Tâche récurrente : %[1]s",
+ "admin.dashboard.cron.started": "Tâche planifiée démarrée : %[1]s",
+ "admin.dashboard.task.unknown": "Tâche inconnue : %[1]s",
+ "admin.dashboard.task.finished": "Tâche : %[1]s démarrée par %[2]s est terminée",
+ "admin.dashboard.task.error": "Erreur dans la tâche : %[1]s : %[3]s",
+ "admin.dashboard.task.cancelled": "Tâche %[1]s annulée : %[3]s",
+ "admin.dashboard.task.process": "Tâche : %[1]s",
+ "admin.dashboard.task.started": "Tâche démarrée : %[1]s",
+ "admin.dashboard.operation_run": "Exécuter",
+ "admin.dashboard.operation_switch": "Basculer",
+ "admin.dashboard.operation_name": "Nom de l'Opération",
+ "admin.dashboard.system_status": "État du système",
+ "admin.dashboard.operations": "Opérations de maintenance",
+ "admin.dashboard.statistic": "Résumé",
+ "admin.dashboard.new_version_hint": "Forgejo %s est maintenant disponible, vous utilisez %s. Consultez le blog pour plus de détails.",
+ "admin.monitor.queue.settings.remove_all_items.success": "Tous les éléments de la file d'attente ont été effacés.",
+ "admin.monitor.queue.settings.remove_all_items": "Tout effacer",
+ "admin.monitor.queue.settings.changed": "Paramètres mis à jour",
+ "admin.monitor.queue.settings.submit": "Appliquer les paramètres",
+ "admin.monitor.queue.settings.maxnumberworkers.error": "Le nombre de processus doit être un nombre",
+ "admin.monitor.queue.settings.maxnumberworkers.placeholder": "Actuellement %[1]d",
+ "admin.monitor.queue.settings.maxnumberworkers": "Nombre maximale de processus",
+ "admin.monitor.queue.settings.description": "Les bassins croissent proportionnellement au besoin de leurs exécuteurs.",
+ "admin.monitor.queue.settings.title": "Paramètres du réservoir",
+ "admin.monitor.queue.review_add": "Examiner / ajouter des processus",
+ "admin.monitor.queue.numberinqueue": "Position dans la queue",
+ "admin.monitor.queue.maxnumberworkers": "Nombre maximal de processus",
+ "admin.monitor.queue.activeworkers": "Processus actifs",
+ "admin.monitor.queue.numberworkers": "Nombre de processus",
+ "admin.monitor.queue.exemplar": "Type d'exemple",
+ "admin.monitor.queue.type": "Type",
+ "admin.monitor.queue.name": "Nom",
+ "admin.monitor.queue": "File d'attente : %s",
+ "admin.monitor.queues": "Files d'attente",
+ "admin.users.list_status_filter.not_2fa_enabled": "2FA désactivé",
+ "admin.users.list_status_filter.is_2fa_enabled": "2FA Activé",
+ "admin.users.list_status_filter.not_prohibit_login": "Autorisé à se connecter",
+ "admin.users.list_status_filter.is_prohibit_login": "Interdit de connexion",
+ "admin.users.list_status_filter.not_restricted": "Non restreint",
+ "admin.users.list_status_filter.is_restricted": "Restreint",
+ "admin.users.list_status_filter.not_admin": "Non administrateur",
+ "admin.users.list_status_filter.is_admin": "Administrateur",
+ "admin.users.list_status_filter.not_active": "Inactif",
+ "admin.users.list_status_filter.is_active": "Actif",
+ "admin.users.list_status_filter.reset": "Réinitialiser",
+ "admin.users.list_status_filter.menu_text": "Filtrer",
+ "admin.system_status.gc_times": "Nombres de GC",
+ "admin.system_status.last_gc_pause": "Dernière pause GC",
+ "admin.system_status.total_gc_pause": "Pause totale GC",
+ "admin.system_status.last_gc_time": "Temps depuis le dernier GC",
+ "admin.system_status.next_gc_recycle": "Prochain recyclage GC",
+ "admin.system_status.other_system_allocation_obtained": "Autres allocation système obtenue",
+ "admin.system_status.gc_metadata_obtained": "Métadonnées GC obtenues",
+ "admin.system_status.profiling_bucket_hash_table_obtained": "Profilage de seau de table de hashage obtenu",
+ "admin.system_status.mcache_structures_obtained": "Structures MCache obtenues",
+ "admin.system_status.mcache_structures_usage": "Utilisation des structures MCache",
+ "admin.system_status.mspan_structures_obtained": "Structures MSpan obtenues",
+ "admin.system_status.mspan_structures_usage": "Utilisation des structures MSpan",
+ "admin.system_status.stack_memory_obtained": "Mémoire pile obtenue",
+ "admin.system_status.bootstrap_stack_usage": "Utilisation pile bootstrap",
+ "admin.system_status.heap_objects": "Objets tas (Heap)",
+ "admin.system_status.heap_memory_released": "Mémoire tas (Heap) libérée",
+ "admin.system_status.heap_memory_in_use": "Utilisation mémoire tas (Heap)",
+ "admin.system_status.heap_memory_idle": "Mémoire tas (Heap) au repos",
+ "admin.system_status.heap_memory_obtained": "Mémoire tas (Heap) obtenue",
+ "admin.system_status.current_heap_usage": "Utilisation Tas (Heap)",
+ "admin.system_status.memory_free_times": "Nombre de libérations de mémoire",
+ "admin.system_status.memory_allocate_times": "Allocations de mémoire",
+ "admin.system_status.pointer_lookup_times": "Nombre de Consultations Pointeur",
+ "admin.system_status.memory_obtained": "Mémoire obtenue",
+ "admin.system_status.total_memory_allocated": "Mémoire totale allouée",
+ "admin.system_status.current_memory_usage": "Utilisation Mémoire actuelle",
+ "admin.system_status.current_goroutine": "Goroutines actuelles",
+ "admin.system_status.server_uptime": "Uptime du serveur",
+ "markup.filepreview.truncated": "L'aperçu a été tronqué",
+ "markup.filepreview.lines": "Lignes %[1]d jusqu'à %[2]d dans %[3]s",
+ "markup.filepreview.line": "Ligne %[1]d dans %[2]s",
+ "actions.variables.update.success": "La variable a bien été modifiée.",
+ "actions.variables.update.failed": "Impossible d’éditer la variable.",
+ "actions.variables.creation.success": "La variable « %s » a été ajoutée.",
+ "actions.variables.creation.failed": "Impossible d'ajouter la variable.",
+ "actions.variables.deletion.success": "La variable a bien été retirée.",
+ "actions.variables.deletion.failed": "Impossible de retirer la variable.",
+ "actions.variables.not_found": "La variable n'a pas été trouvée.",
+ "actions.variables.edit": "Modifier la variable",
+ "actions.variables.description": "Les variables sont passées aux actions et ne peuvent être lues autrement.",
+ "actions.variables.deletion.description": "La suppression d’une variable est permanente et ne peut être défaite. Continuer ?",
+ "actions.variables.deletion": "Retirer la variable",
+ "actions.variables.none": "Il n'y a pas encore de variables.",
+ "actions.variables.creation": "Ajouter une variable",
+ "actions.variables.management": "Gestion des variables",
+ "actions.variables": "Variables",
+ "webauthn.error.timeout": "Le délai d'attente imparti a été atteint avant que votre clé ne puisse être lue. Veuillez recharger la page pour réessayer.",
+ "webauthn.error.empty": "Vous devez définir un nom pour cette clé.",
+ "webauthn.error.duplicated": "La clé de sécurité n'est pas autorisée pour cette demande. Veuillez vous assurer que la clé n'est pas déjà enregistrée.",
+ "webauthn.error.unable_to_process": "Le serveur n'a pas pu traiter votre demande.",
+ "webauthn.error.insecure": "`WebAuthn ne prend en charge que les connexions sécurisées. Pour les tests via HTTP, vous pouvez utiliser l'origine \"localhost\" ou \"127.0.0.1\"`",
+ "webauthn.error.unknown": "Une erreur indéterminée s'est produite. Veuillez réessayer.",
+ "webauthn.unsupported_browser": "Votre navigateur ne prend actuellement pas en charge WebAuthn.",
+ "webauthn.error": "Impossible de lire votre clé de sécurité.",
+ "webauthn.use_twofa": "Utilisez l'authentification à deux facteurs avec votre téléphone",
+ "webauthn.press_button": "Veuillez appuyer sur le bouton de votre clé de sécurité…",
+ "webauthn.sign_in": "Appuyez sur le bouton de votre clé de sécurité. Si votre clé de sécurité n'a pas de bouton, réinsérez-la.",
+ "webauthn.insert_key": "Insérez votre clé de sécurité",
+ "counters.n_commits": {
+ "one": "%s commit",
+ "many": "%s commits",
+ "other": ""
+ },
+ "counters.n_branches": {
+ "one": "%s branch",
+ "many": "%s branches",
+ "other": ""
+ },
+ "counters.n_tags": {
+ "one": "%s étiquettes",
+ "many": "%s étiquettes",
+ "other": ""
+ },
+ "counters.n_releases": {
+ "one": "%s publication",
+ "many": "%s publications",
+ "other": ""
+ },
+ "gpg.default_key": "Signé avec la clé par défaut",
+ "gpg.error.extract_sign": "Impossible d'extraire la signature",
+ "gpg.error.generate_hash": "Impossible de générer la chaine de hachage de la révision",
+ "gpg.error.no_committer_account": "Aucun compte lié à l'adresse e-mail de l'auteur",
+ "gpg.error.no_gpg_keys_found": "Aucune clé n'a été trouvée pour cette signature dans la base de données",
+ "gpg.error.not_signed_commit": "Révision non signée",
+ "gpg.error.failed_retrieval_gpg_keys": "Impossible de récupérer la clé liée au compte de l'auteur",
+ "gpg.error.probable_bad_signature": "AVERTISSEMENT ! Bien qu'il y ait une clé avec cet ID dans la base de données, il ne vérifie pas ce commit ! Ce commit est SUSPECT.",
+ "gpg.error.probable_bad_default_signature": "AVERTISSEMENT ! Bien que la clé par défaut ait cet ID, elle ne vérifie pas ce commit ! Ce commit est SUSPECT.",
+ "notification.notifications": "Notifications",
+ "notification.unread": "Non lue(s)",
+ "notification.read": "Lue(s)",
+ "notification.no_unread": "Aucune notification non lue.",
+ "notification.no_read": "Aucune notification lue.",
+ "notification.pin": "Épingler la notification",
+ "notification.mark_as_read": "Marquer comme lu",
+ "notification.mark_as_unread": "Marquer comme non lue",
+ "notification.mark_all_as_read": "Tout marquer comme lu",
+ "notification.subscriptions": "Abonnements",
+ "notification.watching": "Suivi",
+ "notification.no_subscriptions": "Vous n'avez pas d'abonnements.",
+ "dropzone.default_message": "Déposez les fichiers ou cliquez ici pour téléverser.",
+ "dropzone.invalid_input_type": "Les fichiers de ce type ne peuvent pas être téléversés.",
+ "dropzone.file_too_big": "La taille du fichier ({{filesize}} Mo) dépasse la taille maximale ({{maxFilesize}} Mo).",
+ "dropzone.remove_file": "Supprimer le fichier",
+ "munits.data.b": "o",
+ "munits.data.kib": "Kio",
+ "munits.data.mib": "Mio",
+ "munits.data.gib": "Gio",
+ "munits.data.tib": "Tio",
+ "munits.data.pib": "Pio",
+ "munits.data.eib": "Eio",
+ "packages.title": "Paquets",
+ "packages.empty": "Il n'y a pas de paquets pour le moment.",
+ "packages.empty.documentation": "Pour plus d'informations sur le registre de paquets, voir la documentation.",
+ "packages.empty.repo": "Avez-vous téléchargé un paquet, mais il n'est pas affiché ici ? Allez dans les paramètres du paquet et liez le à ce dépôt.",
+ "packages.registry.documentation": "Pour plus d’informations sur le registre %s, voir la documentation.",
+ "packages.filter.type": "Type",
+ "packages.filter.type.all": "Tous",
+ "packages.filter.no_result": "Votre filtre n'affiche aucun résultat.",
+ "packages.filter.container.tagged": "Balisé",
+ "packages.filter.container.untagged": "Débalisé",
+ "packages.published_by": "%[1]s publié par %[3]s",
+ "packages.published_by_in": "%[1]s publié par %[3]s en %[5]s",
+ "packages.pub.install": "Pour installer le paquet en utilisant Dart, exécutez la commande suivante :",
+ "packages.installation": "Installation",
+ "packages.about": "À propos de ce paquet",
+ "packages.requirements": "Exigences",
+ "packages.dependencies": "Dépendances",
+ "packages.keywords": "Mots-clés",
+ "packages.details": "Détails",
+ "packages.details.author": "Auteur",
+ "packages.details.project_site": "Site du projet",
+ "packages.details.repository_site": "Site du dépôt",
+ "packages.details.documentation_site": "Site de la documentation",
+ "packages.details.license": "Licence",
+ "packages.assets": "Ressources",
+ "packages.versions": "Versions",
+ "packages.versions.view_all": "Voir tout",
+ "packages.dependency.id": "ID",
+ "packages.dependency.version": "Version",
+ "packages.search_in_external_registry": "Rechercher dans %s",
+ "packages.alpine.registry": "Configurez ce registre en ajoutant l’URL dans votre fichier /etc/apk/repositories :",
+ "packages.alpine.registry.key": "Téléchargez la clé RSA publique du registre dans le dossier /etc/apk/keys/ pour vérifier la signature de l'index :",
+ "packages.alpine.registry.info": "Choisissez $branch et $repository dans la liste ci-dessous.",
+ "packages.alpine.repository.branches": "Branches",
+ "packages.alpine.repository.repositories": "Dépôts",
+ "packages.alpine.repository.architectures": "Architectures",
+ "packages.arch.pacman.helper.gpg": "Ajouter un certificat de confiance pour pacman :",
+ "packages.arch.pacman.repo.multi": "%s a la même version dans différentes distributions.",
+ "packages.arch.pacman.repo.multi.item": "Configuration pour %s",
+ "packages.arch.pacman.conf": "Ajouter un serveur associées à la distribution et l'architecture dans /etc/pacman.conf :",
+ "packages.arch.pacman.sync": "Synchroniser le paquet avec pacman :",
+ "packages.arch.version.properties": "Propriétés de version",
+ "packages.arch.version.description": "Description",
+ "packages.arch.version.provides": "Fournit",
+ "packages.arch.version.groups": "Groupe",
+ "packages.arch.version.optdepends": "Dépendances optionnelles",
+ "packages.arch.version.makedepends": "Dépendances de compilation",
+ "packages.arch.version.checkdepends": "Vérifier les dépendances",
+ "packages.arch.version.conflicts": "Conflits",
+ "packages.arch.version.replaces": "Remplace",
+ "packages.arch.version.backup": "Sauvegarde",
+ "packages.cargo.registry": "Configurez ce registre dans le fichier de configuration Cargo (par exemple ~/.cargo/config.toml) :",
+ "packages.cargo.install": "Pour installer le paquet en utilisant Cargo, exécutez la commande suivante :",
+ "packages.chef.registry": "Configurer ce registre dans votre fichier ~/.chef/config.rb :",
+ "packages.composer.registry": "Configurez ce registre dans votre fichier ~/.composer/config.json :",
+ "packages.composer.install": "Pour installer le paquet en utilisant Composer, exécutez la commande suivante :",
+ "packages.composer.dependencies.development": "Dépendances de développement",
+ "packages.conan.install": "Pour installer le paquet en utilisant Conan, exécutez la commande suivante :",
+ "packages.conda.registry": "Configurez ce registre en tant que dépôt Conda dans le fichier .condarc :",
+ "packages.conda.install": "Pour installer le paquet en utilisant Conda, exécutez la commande suivante :",
+ "packages.container.images.title": "Images",
+ "packages.container.details.type": "Type d'image",
+ "packages.container.details.platform": "Plateforme",
+ "packages.container.pull": "Tirez l'image depuis un terminal :",
+ "packages.container.digest": "Empreinte",
+ "packages.container.multi_arch": "SE / Arch",
+ "packages.container.layers": "Calques d'image",
+ "packages.container.labels": "Labels",
+ "packages.container.labels.key": "Clé",
+ "packages.container.labels.value": "Valeur",
+ "packages.cran.registry": "Configurez ce registre dans le fichier Rprofile.site :",
+ "packages.debian.registry.info": "Choisissez $distribution et $component dans la liste ci-dessous.",
+ "packages.debian.repository.distributions": "Distributions",
+ "packages.debian.repository.components": "Composants",
+ "packages.debian.repository.architectures": "Architectures",
+ "packages.generic.download": "Télécharger le paquet depuis un terminal :",
+ "packages.go.install": "Installer le paquet à partir de la ligne de commande :",
+ "packages.maven.registry": "Configurez ce registre dans le fichier pom.xml de votre projet :",
+ "packages.maven.install": "Pour utiliser le paquet, inclure ce qui suit dans le bloc dependencies dans le fichier pom.xml :",
+ "packages.maven.install2": "Exécuter dans un terminal :",
+ "packages.maven.download": "Pour télécharger la dépendance, exécutez dans un terminal :",
+ "packages.nuget.install": "Pour installer le paquet en utilisant NuGet, exécutez la commande suivante :",
+ "packages.nuget.dependency.framework": "Cadriciel cible",
+ "packages.npm.registry": "Configurez ce registre dans le fichier .npmrc de votre projet :",
+ "packages.npm.install": "Pour installer le paquet en utilisant npm, exécutez la commande suivante :",
+ "packages.npm.install2": "ou ajoutez-le au fichier package.json :",
+ "packages.npm.dependencies.development": "Dépendances de développement",
+ "packages.npm.dependencies.bundle": "Bundles de dépendances",
+ "packages.npm.dependencies.peer": "Dépendances de pairs",
+ "packages.npm.dependencies.optional": "Dépendances optionnelles",
+ "packages.npm.details.tag": "Balise",
+ "packages.pypi.requires": "Nécessite Python",
+ "packages.pypi.install": "Pour installer le paquet en utilisant pip, exécutez la commande suivante :",
+ "packages.rpm.distros.redhat": "sur les distributions basées sur RedHat",
+ "packages.rpm.distros.suse": "sur les distributions basées sur SUSE",
+ "packages.rpm.repository.architectures": "Architectures",
+ "packages.rpm.repository.multiple_groups": "Ce paquet est disponible dans plusieurs groupes.",
+ "packages.alt.install": "Installer le paquet",
+ "packages.alt.setup": "Ajouter un dépôt à la liste des dépôts connecté (choisissez l'architecture nécessaire à la place de \"_arch\") :",
+ "packages.alt.repository.architectures": "Architectures",
+ "packages.alt.repository.multiple_groups": "Ce paquet est disponible dans plusieurs groupes.",
+ "packages.rubygems.install": "Pour installer le paquet en utilisant gem, exécutez la commande suivante :",
+ "packages.rubygems.install2": "ou ajoutez-le au Gemfile :",
+ "packages.rubygems.dependencies.runtime": "Dépendances d'exécution",
+ "packages.rubygems.dependencies.development": "Dépendances de développement",
+ "packages.rubygems.required.ruby": "Nécessite Ruby en version",
+ "packages.rubygems.required.rubygems": "Nécessite RubyGem en version",
+ "packages.swift.install": "Ajoutez le paquet dans votre fichier Package.swift :",
+ "packages.swift.install2": "et exécutez la commande suivante :",
+ "packages.vagrant.install": "Pour ajouter une machine Vagrant, exécutez la commande suivante :",
+ "packages.settings.link": "Lier ce paquet à un dépôt",
+ "packages.settings.link.description": "Si vous liez un paquet à dépôt, le paquet sera inclus dans sa liste des paquets.",
+ "packages.settings.link.select": "Sélectionner un dépôt",
+ "packages.settings.link.button": "Actualiser le lien du dépôt",
+ "packages.settings.link.success": "Le lien du dépôt a été mis à jour avec succès.",
+ "packages.settings.link.error": "Impossible de mettre à jour le lien du dépôt.",
+ "packages.settings.delete": "Supprimer le paquet",
+ "packages.settings.delete.description": "Supprimer un paquet est permanent et irréversible.",
+ "packages.settings.delete.notice": "Vous êtes sur le point de supprimer %s (%s). Cette opération est irréversible, êtes-vous sûr ?",
+ "packages.settings.delete.success": "Le paquet a été supprimé.",
+ "packages.settings.delete.error": "Impossible de supprimer le paquet.",
+ "packages.owner.settings.cargo.title": "Index du registre cargo",
+ "packages.owner.settings.cargo.initialize": "Initialiser l'index",
+ "packages.owner.settings.cargo.initialize.description": "Un dépôt Git d’index spécial est nécessaire pour utiliser le registre Cargo. Utiliser cette option va (re)créer le dépôt et le configurer automatiquement.",
+ "packages.owner.settings.cargo.initialize.error": "Impossible d'initialiser l'index de Cargo : %v",
+ "packages.owner.settings.cargo.initialize.success": "L'index Cargo a été créé avec succès.",
+ "packages.owner.settings.cargo.rebuild": "Reconstruire l'index",
+ "packages.owner.settings.cargo.rebuild.description": "La reconstruction peut être utile si l'index n'est pas synchronisé avec les paquets Cargo stockés.",
+ "packages.owner.settings.cargo.rebuild.error": "Impossible de reconstruire l'index Cargo : %v",
+ "packages.owner.settings.cargo.rebuild.success": "L'index Cargo a été reconstruit avec succès.",
+ "packages.owner.settings.cargo.rebuild.no_index": "Incapable de reconstruire, index non initialisé.",
+ "packages.owner.settings.cleanuprules.title": "Règles de nettoyage",
+ "packages.owner.settings.cleanuprules.add": "Ajouter une règle de nettoyage",
+ "packages.owner.settings.cleanuprules.edit": "Modifier la règle de nettoyage",
+ "packages.owner.settings.cleanuprules.none": "Aucune règle de nettoyage disponible. Veuillez consulter la documentation.",
+ "packages.owner.settings.cleanuprules.preview": "Aperçu des règles de nettoyage",
+ "packages.owner.settings.cleanuprules.preview.overview": "%d paquets sont programmés pour être supprimés.",
+ "packages.owner.settings.cleanuprules.preview.none": "La règle de nettoyage ne correspond à aucun paquet.",
+ "packages.owner.settings.cleanuprules.pattern_full_match": "Appliquer le motif au nom complet du paquet",
+ "packages.owner.settings.cleanuprules.keep.title": "Les versions qui correspondent à ces règles sont conservées, même si elles correspondent à une règle de suppression ci-dessous.",
+ "packages.owner.settings.cleanuprules.keep.count": "Garder le plus récent",
+ "packages.owner.settings.cleanuprules.keep.pattern": "Garder les versions correspondantes",
+ "packages.owner.settings.cleanuprules.keep.pattern.container": "La version latest est toujours conservée pour les paquets Container.",
+ "packages.owner.settings.cleanuprules.remove.title": "Les versions qui correspondent à ces règles sont supprimées, sauf si une règle ci-dessus dit de les garder.",
+ "packages.owner.settings.cleanuprules.remove.days": "Supprimer les versions antérieures à",
+ "packages.owner.settings.cleanuprules.remove.pattern": "Supprimer les versions correspondantes",
+ "packages.owner.settings.cleanuprules.success.update": "La règle de nettoyage a été mise à jour.",
+ "packages.owner.settings.cleanuprules.success.delete": "La règle de nettoyage a été supprimée.",
+ "packages.owner.settings.chef.title": "Dépôt Chef",
+ "packages.owner.settings.chef.keypair": "Générer une paire de clés",
+ "packages.owner.settings.chef.keypair.description": "Les requêtes envoyées au registre Chef doivent être signées cryptographiquement à des fin d'authentification. Lorsqu'une paire de clés est générée, seule la clé publique est conservée dans Forgejo. La clé privée est fournie afin que vous puissiez l'utiliser avec knife. La génération d'une nouvelle clé remplace la précédente.",
+ "fork.n_forks": {
+ "one": "%s bifurcation",
+ "many": "%s bifurcations",
+ "other": ""
+ },
+ "stars.n_stars": {
+ "one": "%s étoiles",
+ "many": "%s étoiles",
+ "other": "%s étoiles"
+ },
+ "release.n_downloads": {
+ "one": "%s téléchargement",
+ "many": "%s téléchargements",
+ "other": ""
+ },
+ "repo.pulls.merged_title_desc": {
+ "one": "a fusionné %[1]d commit depuis %[2]s vers %[3]s %[4]s",
+ "many": "fusionné %[1]d de commits depuis %[2]s vers %[3]s %[4]s",
+ "other": "fusionné %[1]d commits depuis %[2]s vers %[3]s %[4]s"
+ },
+ "repo.pulls.title_desc": {
+ "one": "veut fusionner %[1]d commit depuis %[2]s vers %[3]s",
+ "many": "veut fusionner %[1]d commits depuis %[2]s vers %[3]s",
+ "other": ""
+ },
+ "search.milestone_kind": "Recherche dans les jalons…",
+ "discussion.locked": "Cette discussion a été bloqué. Les commentaires sont limités aux contributeurs.",
+ "relativetime.now": "maintenant",
+ "relativetime.future": "dans le futur",
+ "relativetime.mins": {
+ "one": "il y a %d minute",
+ "many": "il y a %d minutes",
+ "other": "il y a %d minutes"
+ },
+ "relativetime.hours": {
+ "one": "il y a %d heure",
+ "many": "il y a %d heures",
+ "other": "il y a %d heures"
+ },
+ "relativetime.days": {
+ "one": "il y a %d jour",
+ "many": "il y a %d jours",
+ "other": "il y a %d jours"
+ },
+ "relativetime.months": {
+ "one": "il y a %d mois",
+ "many": "il y a %d mois",
+ "other": "il y a %d mois"
+ },
+ "relativetime.years": {
+ "one": "il y a %d an",
+ "many": "il y a %d ans",
+ "other": "il y a %d ans"
+ },
+ "relativetime.1day": "hier",
+ "relativetime.1week": "la semaine dernière",
+ "relativetime.1year": "l'année dernière",
+ "themes.names.forgejo-light": "Forgejo clair",
+ "themes.names.forgejo-dark": "Forgejo sombre",
+ "themes.names.forgejo-auto": "Forgejo (suivre le thème du système)",
+ "alert.asset_load_failed": "Échec du chargement des fichiers d'asset de {path}. Faites en sorte que les fichiers d'asset puissent être accessibles.",
+ "install.invalid_lfs_path": "Impossible de créer le root LFS au chemin spécifié : %[1]s",
+ "alert.range_error": " doit être un nombre entre %[1]s et %[2]s.",
+ "home.welcome.no_activity": "Aucune activité",
+ "home.welcome.activity_hint": "Il n'y a rien dans votre fil d'actualité. Les actions et activités sur les dépôts que vous suivez s'afficheront ici.",
+ "home.explore_repos": "Explorer les dépôts",
+ "home.explore_users": "Explorer les utilisateurs",
+ "home.explore_orgs": "Explorer les organisations",
+ "relativetime.weeks": {
+ "one": "il y a %d semaine",
+ "many": "il y a %d semaines",
+ "other": "il y a %d semaines"
+ },
+ "error.not_found.title": "Page non trouvée",
+ "relativetime.1month": "le mois dernier",
+ "incorrect_root_url": "Cette instance Forgejo est configuré pour être servi sur \"%s\". Vous êtes actuellement en train de regarder Forgejo avec une URL différente, ce qui pourrait casser certaines parties de cette application. L'URL canonique est controllée par les administrateurs Forgejo grâce au paramètre ROOT_URL dans le app.ini.",
+ "meta.last_line": "Merci de traduire Forgejo ! Cette ligne n'est pas vue par les utilisateurs mais sert à d'autres fins dans la gestion de la traduction. Vous pouvez mettre une fun fact dans la traduction au lieu de la traduire. Miaou.",
+ "mail.actions.successful_run_after_failure": "Workflow %[1]s récupéré dans le dépôt %[2]s",
+ "mail.actions.successful_run_after_failure_subject": "Workflow %[1]s récupéré dans le dépôt %[2]s",
+ "mail.actions.not_successful_run_subject": "Workflow %[1]s a raté dans le dépôt %[2]s",
+ "mail.actions.not_successful_run": "Workflow %[1]s raté dans le dépôt %[2]s",
+ "mail.actions.run_info_cur_status": "Statut de cette exécution : %[1]s (vient de se mettre à jour de %[2]s)",
+ "mail.actions.run_info_previous_status": "Précédent statut de l'éxecution : %[1]s",
+ "moderation.reported_thank_you": "Merci pour votre signalement. L'administration a été mise au courant.",
+ "admin.config.moderation_config": "Configuration de la modération",
+ "moderation.report_content": "Signaler le contenu",
+ "moderation.report_abuse": "Signaler un abus",
+ "moderation.report_abuse_form.header": "Signaler un abus à l'administrateur",
+ "moderation.report_abuse_form.details": "Ce formulaire devrait être utilisé pour signaler des utilisateurs qui spam des comptes, des dépôts, des questions, des commentaires ou qui se comportent de façon inappropriée.",
+ "moderation.report_abuse_form.invalid": "Arguments invalides",
+ "moderation.report_abuse_form.already_reported": "Vous avez déjà signalisé ce contenu",
+ "moderation.abuse_category": "Catégorie",
+ "moderation.abuse_category.placeholder": "Sélectionnez une catégorie",
+ "moderation.abuse_category.spam": "Spam",
+ "moderation.abuse_category.malware": "logiciel malveillant",
+ "moderation.abuse_category.illegal_content": "Contenu illégal",
+ "moderation.abuse_category.other_violations": "Autres infractions des règles de la plateforme",
+ "moderation.report_remarks": "Remarques",
+ "moderation.report_remarks.placeholder": "Veuillez fournir quelques détails en rapport avec l'abus que vous signalez.",
+ "moderation.submit_report": "Soumettre le signalement",
+ "moderation.reporting_failed": "Impossible de soumettre le nouveau signalement : %v",
+ "followers.incoming.list.self.none": "Personne ne suit votre profil.",
+ "followers.incoming.list.none": "Personne ne suit cet utilisateur.",
+ "followers.outgoing.list.self.none": "Vous ne suivez personne.",
+ "followers.outgoing.list.none": "%s ne suit personne.",
+ "repo.issue_indexer.title": "Indexeur de problèmes",
+ "stars.list.none": "Personne n'a mis en favori ce dépôt.",
+ "watch.list.none": "Personne ne suit ce dépôt.",
+ "repo.form.cannot_create": "Tous les espaces où vous pouvez créer des dépôts a atteint la limite de dépôts.",
+ "admin.dashboard.cleanup_offline_runners": "Nettoyer les exécuteurs hors ligne",
+ "mail.actions.run_info_trigger": "Activé parce que : %[1]s par : %[2]s",
+ "settings.visibility.description": "La visibilité du profil affecte la capacité des autres à accéder à vos dépôts non-privés. Voir plus.",
+ "editor.textarea.shift_tab_hint": "Pas d'indentation sur cette ligne. Appuyez sur Maj + Tab une nouvelle fois ou sur Échap pour quitter l'éditeur.",
+ "avatar.constraints_hint": "L'avatar personnalisé ne doit pas dépasser une taille de %[1]s ou être plus grand que %[2]dx%[3]d pixels",
+ "editor.textarea.tab_hint": "Ligne déjà indentée. Appuyez sur Tab une nouvelle fois ou sur Échap pour quitter l'éditeur.",
+ "discussion.sidebar.reference": "Référence",
+ "repo.settings.push_mirror.branch_filter.label": "Filtre de branche (optionnel)",
+ "repo.diff.commit.next-short": "Suiv.",
+ "repo.diff.commit.previous-short": "Préc.",
+ "profile.actions.tooltip": "Plus d'actions",
+ "profile.edit.link": "Éditer le profil",
+ "keys.ssh.link": "Clé SSH",
+ "keys.gpg.link": "Clés GPG",
+ "compare.branches.title": "Comparer les branches",
+ "repo.settings.push_mirror.branch_filter.description": "Branches a répliquer. Laisser vide pour répliquer toutes les branches. Voir la documentation %[2]s pour la syntaxe. Exemples : main, release/*",
+ "mail.actions.run_info_sha": "Commit: %[1]s",
+ "admin.moderation.deleted_content_ref": "Le signalement avec le type %[1]v et l'identifiant %[2]d n'existe plus",
+ "error.must_enable_2fa": "Cette instance Forgejo exige que les utilisateurs activent l'authentification à deux facteurs avant qu'ils puissent accéder a leurs comptes. Activez-la sur : %s",
+ "admin.config.global_2fa_requirement.admin": "Administrateurs",
+ "admin.config.global_2fa_requirement.all": "Tous les utilisateurs",
+ "admin.config.global_2fa_requirement.none": "Non",
+ "admin.config.global_2fa_requirement.title": "Exigence globale de l'authentification à deux facteurs",
+ "admin.config.security": "Configuration de sécurité",
+ "settings.must_enable_2fa": "Cette instance Forgejo exige que les utilisateurs activent l'authentification à deux facteurs avant qu'ils puissent accéder a leurs comptes.",
+ "settings.twofa_unroll_unavailable": "L'authentification à deux facteurs est nécessaire pour votre compte et ne peut pas être désactivée.",
+ "migrate.github.description": "Migrer les données depuis github.com ou GitHub Enterprise Server.",
+ "migrate.git.description": "Migrer uniquement un dépôt depuis n’importe quel service Git.",
+ "migrate.gitea.description": "Migrer les données depuis gitea.com ou d’autres instances de Gitea.",
+ "migrate.gitlab.description": "Migrer les données depuis gitlab.com ou d’autres instances de GitLab.",
+ "migrate.gogs.description": "Migrer les données depuis notabug.org ou d’autres instances de Gogs.",
+ "migrate.onedev.description": "Migrer les données depuis code.onedev.io ou d’autre instance de OneDev.",
+ "migrate.gitbucket.description": "Migrer les données depuis des instances GitBucket.",
+ "migrate.codebase.description": "Migrer les données depuis codebasehq.com.",
+ "migrate.forgejo.description": "Migrer les données depuis codeberg.org ou une autre instance Forgejo.",
+ "migrate.items.label": "Éléments à migrer",
+ "migrate.items.wiki": "Wiki",
+ "migrate.items.milestones": "Jalons",
+ "migrate.items.labels": "Labels",
+ "migrate.items.issues": "Tickets",
+ "migrate.items.pull_requests": "Demandes d'ajout",
+ "migrate.items.merge_requests": "Demandes de fusion",
+ "migrate.items.releases": "Publications",
+ "migrate.in_progress.git": "Migration des données Git",
+ "migrate.in_progress.topics": "Migration des sujets",
+ "migrate.in_progress.milestones": "Migration des jalons",
+ "migrate.in_progress.labels": "Migration des labels",
+ "migrate.in_progress.releases": "Migration des publications",
+ "migrate.in_progress.issues": "Migration des tickets",
+ "migrate.in_progress.pulls": "Migration des demandes d'ajout",
+ "migrate.cancel.title": "Annuler la migration",
+ "migrate.cancel.confirmation": "Voulez-vous abandonner cette migration ?",
+ "admin.dashboard.remove_resolved_reports": "Supprimer les signalements résolus",
+ "admin.auths.allow_username_change": "Autoriser le changement de nom d'utilisateur",
+ "admin.auths.allow_username_change.description": "Autoriser les utilisateurs à changer leur nom d'utilisateur dans les paramètres du profil",
+ "feed.atom.link": "Flux Atom",
+ "admin.moderation.moderation_reports": "Signalements de modération",
+ "admin.moderation.reports": "Signalements",
+ "admin.moderation.no_open_reports": "Il n'y a actuellement aucun signalement ouvert.",
+ "warning.repository.out_of_sync": "La représentation en base de données de ce dépôt est désynchronisée. Si cet avertissement s'affiche toujours après avoir poussé un commit sur ce dépôt, veuillez contacter l'administrateur.",
+ "repo.pulls.already_merged": "Fusion échouée : Cette demande d'ajout a déjà été fusionnée.",
+ "migrate.form.error.url_credentials": "L'URL contient des identifiants, mettez-les dans les champs utilisateur et mot de passe respectivement",
+ "settings.twofa_reenroll": "Réenregistrer l'authentification à deux facteurs",
+ "settings.twofa_reenroll.description": "Réenregistrer votre authentification à deux facteurs",
+ "user.ghost.tooltip": "Cet utilisateur a été supprimé, ou ne peut pas être trouvé.",
+ "og.repo.summary_card.alt_description": "Fiche récapitulative du dépôt %[1]s, décrit comme : %[2]s",
+ "repo.commit.load_tags_failed": "Impossible de charger les étiquettes à cause d'une erreur interne",
+ "actions.runs.view_most_recent_run": "Voir l'exécution la plus récente",
+ "actions.runs.viewing_out_of_date_run": "Vous consultez une exécution obsolète de cette tâche qui a été lancée le %[1]s.",
+ "actions.runs.run_attempt_label": "Tentative d'exécution #%[1]s (%[2]s)",
+ "actions.runs.all_workflows": "Tous les workflows",
+ "actions.runs.workflow": "Workflow",
+ "actions.runs.invalid_workflow_helper": "La configuration du flux de travail est invalide. Veuillez vérifier votre fichier %s",
+ "actions.runs.no_matching_online_runner.helper": "Aucun exécuteur en ligne correspondant au libellé %s",
+ "actions.runs.no_job_without_needs": "Le workflow doit contenir au moins une tâche sans dépendances.",
+ "actions.runs.no_job": "Le workflow doit au moins contenir une tâche",
+ "actions.runs.actor": "Acteur",
+ "actions.runs.status": "Statut",
+ "actions.runs.actors_no_select": "Tous les acteurs",
+ "actions.runs.status_no_select": "Touts les statuts",
+ "actions.runs.no_results": "Aucun résultat correspondant.",
+ "actions.runs.no_workflows": "Il n'y a pas encore de workflows.",
+ "actions.actions": "Actions",
+ "actions.runners": "Exécuteurs",
+ "actions.runners.runner_manage_panel": "Gestion des exécuteurs",
+ "actions.runners.new": "Créer un nouvel exécuteur",
+ "actions.runners.new_notice": "Comment démarrer un exécuteur",
+ "actions.runners.status": "Statut",
+ "actions.runners.status.unspecified": "Inconnu",
+ "actions.runners.status.idle": "Inactif",
+ "actions.runners.status.active": "Actif",
+ "actions.runners.status.offline": "Hors-ligne",
+ "actions.runners.name": "Nom",
+ "actions.runners.owner_type": "Type",
+ "actions.runners.description": "Description",
+ "actions.runners.labels": "Labels",
+ "actions.runners.last_online": "Dernière fois en ligne",
+ "actions.runners.runner_title": "Exécuteur %s",
+ "actions.runners.task_list.no_tasks": "Il n'y a pas de tâches ici.",
+ "actions.runners.task_list.run": "Exécuter",
+ "actions.runners.task_list.status": "Statut",
+ "actions.runners.task_list.repository": "Dépôt",
+ "actions.runners.task_list.commit": "Révision",
+ "actions.runners.task_list.done_at": "Fait à",
+ "actions.runners.update_runner.success": "Exécuteur édité avec succès",
+ "actions.runners.update_runner.failed": "Impossible d'éditer l'exécuteur",
+ "actions.runners.delete_runner.success": "Exécuteur supprimé avec succès",
+ "actions.runners.delete_runner.failed": "Impossible de supprimer l'Exécuteur",
+ "actions.runners.delete_runner.header": "Confirmer la suppression de cet exécuteur",
+ "actions.runners.delete_runner.notice": "Si une tâche est en cours sur cet exécuteur, elle sera terminée et marquée comme échouée. Cela risque d’interrompre le flux de travail.",
+ "actions.runners.none": "Aucun exécuteur disponible",
+ "actions.runners.reset_registration_token.button": "Réinitialiser le jeton d'enregistrement",
+ "actions.runners.reset_registration_token.success": "Le jeton d’inscription de l’exécuteur a été réinitialisé avec succès",
+ "migrate.pagure.description": "Migrer les données depuis pagure.io ou d'autres instances Pagure.",
+ "migrate.pagure.incorrect_url": "L'URL du dépôt source fournie est incorrecte",
+ "migrate.pagure.project_url": "URL du projet Pagure",
+ "migrate.pagure.project_example": "L'URL du projet Pagure, ex. https://pagure.io/pagure",
+ "migrate.pagure.token_label": "Jeton API Pagure",
+ "pulse.n_active_issues": {
+ "one": "%s ticket actif",
+ "many": "%s tickets actifs",
+ "other": ""
+ },
+ "pulse.n_active_prs": {
+ "one": "%s demande d'ajout active",
+ "many": "%s demandes d'ajout actives",
+ "other": ""
+ },
+ "repo.pulls.maintainers_can_edit": "Les mainteneurs peuvent modifier cette pull request.",
+ "repo.pulls.maintainers_cannot_edit": "Les mainteneurs ne peuvent pas éditer cette pull request.",
+ "mail.issue.action.close_by_commit": "%[1]s a fermé %[2]s dans le commit %[3]s.",
+ "migrate.pagure.private_issues.summary": "Tickets privés (Optionnel)",
+ "migrate.pagure.private_issues.description": "Cette fonctionnalité est conçue pour créer un deuxième dépôt contenant uniquement des tickets privés de votre projet Pagure à des fins d'archive. Premièrement, effectuer une migration normale (sans jeton) pour importer tout le contenu public. Ensuite, si vous avez des tickets privés à préserver, créez un dépôt séparé en utilisant cette option de jeton pour archiver ces tickets privés.",
+ "migrate.pagure.private_issues.warning": "Assurez-vous de définir la visibilité du dépôt ci-dessus à Privé si vous utilisez la clé API pour importer des tickets privés. Cela empêche d'exposer accidentellement du contenu privé dans un dépôt public.",
+ "migrate.pagure.token.placeholder": "Seulement pour créer des archives de tickets privés",
+ "actions.workflow.pre_execution_error": "Le workflow n'a pas été exécuté en raison d'une erreur qui a bloqué la tentative d'exécution.",
+ "watch.n_watchers": {
+ "one": "%s observateur",
+ "many": "%s observateurs",
+ "other": "%s observateurs"
+ },
+ "actions.workflow.event_detection_error": "Impossible d'analyser les évènements supportés dans le workflow : %v",
+ "teams.add_all_repos.modal.header": "Ajouter tous les dépôts",
+ "teams.remove_all_repos.modal.header": "Supprimer tous dépôts",
+ "repo.pulls.poster_manage_approval": "Gérer les approbations",
+ "repo.pulls.poster_is_trusted": "L'auteur de la pull request est toujours approuvé à lancer le flux de travail.",
+ "repo.pulls.poster_is_trusted.tooltip": "L'auteur de la pull request est explicitement autorisé à lancer le flux de travail déclenché par les événements `pull_request`.",
+ "repo.pulls.poster_trust_deny": "Refuser",
+ "repo.pulls.poster_trust_deny.tooltip": "Les flux de travail en attente d'approbation seront annulés.",
+ "repo.pulls.poster_trust_once": "Approuver une fois",
+ "repo.pulls.poster_trust_once.tooltip": "Les flux de travail déclenchés par un événement `pull_request` s'exécuteront sur ce commit mais devront être approuvés pour tous les futurs commits poussés vers cette pull request.",
+ "repo.pulls.poster_trust_always": "Toujours approuver",
+ "repo.pulls.poster_trust_always.tooltip": "Les flux de travail déclenchés par un événement `pull_request` s'exécuteront sur ce commit et il n'y aura pas besoin d'approuver les exécutions à partir de cette pull request ou de futures pull request créées par le même utilisateur.",
+ "repo.pulls.poster_trust_revoke": "Révoquer",
+ "repo.pulls.poster_trust_revoke.tooltip": "L'auteur de cette pull request ne sera plus autorisé pour exécuter les flux de travail déclenchés par un événement `pull_request`, chaque exécution devra être approuvée manuellement.",
+ "actions.workflow.job_parsing_error": "Impossible d'analyser le processus dans le flux de travail : %v",
+ "keys.verify.token.hint": "Le jeton est uniquement valide pour 1 minute. Obtenez en un nouveau s'il a expiré.",
+ "repo.issues.filter_poster.hint": "Filtrer par auteur",
+ "repo.issues.filter_assignee.hint": "Filtrer par utilisateur assigné",
+ "repo.issues.filter_reviewers.hint": "Filtrer par l'utilisateur qui a examiné",
+ "repo.issues.filter_mention.hint": "Filtrer par utilisateur mentionné",
+ "repo.issues.filter_modified.hint": "Filtrer par dernière date de modification",
+ "search.syntax": "Syntaxe de recherche",
+ "admin.dashboard.transfer_lingering_logs": "Transférer les journaux des actions terminées de la base de données au stockage",
+ "actions.status.diagnostics.waiting": {
+ "one": "Attente d'un exécuteur avec l'étiquette suivante : %s",
+ "many": "Attente d'un exécuteur avec les étiquettes suivantes : %s",
+ "other": ""
+ },
+ "actions.status.unknown": "Inconnu",
+ "actions.status.waiting": "En attente",
+ "actions.status.running": "En cours d'exécution",
+ "actions.status.success": "Succès",
+ "actions.status.failure": "Échec",
+ "actions.status.cancelled": "Annulé",
+ "actions.status.skipped": "Ignoré",
+ "actions.status.blocked": "Bloqué",
+ "moderation.report.mark_as_ignored": "Marquer comme ignoré",
+ "moderation.action.account.delete": "Supprimer le compte",
+ "moderation.action.account.suspend": "Suspendre le compte",
+ "moderation.action.repo.delete": "Supprimer le dépôt",
+ "moderation.action.issue.delete": "Supprimer le ticket",
+ "moderation.action.comment.delete": "Supprimer le commentaire",
+ "moderation.unknown_action": "Action inconnue",
+ "moderation.users.cannot_suspend_self": "Vous ne pouvez pas vous suspendre vous même.",
+ "moderation.users.cannot_suspend_admins": "Les utilisateurs avec les droits administrateur ne peuvent pas être suspendus.",
+ "moderation.users.cannot_suspend_org": "Les organisations ne peuvent pas être suspendues.",
+ "moderation.users.already_suspended": "Le compte est déjà suspendu.",
+ "moderation.users.suspend_success": "Le compte a été suspendu.",
+ "moderation.users.cannot_delete_admins": "Les utilisateurs avec les droits d'administration ne peuvent pas être supprimés.",
+ "moderation.issue.deletion_success": "Le ticket a été supprimé.",
+ "moderation.comment.deletion_success": "Le commentaire a été supprimé.",
+ "actions.workflow.incomplete_matrix_missing_job": "Impossible d'évaluer `strategy.matrix` de la tâche %[1]s : la tâche %[2]s n'est pas dans la liste `needs` de la tâche %[1]s (%[3]s).",
+ "actions.workflow.incomplete_matrix_missing_output": "Impossible d'évaluer `strategy.matrix` de la tâche %[1]s : la sortie %[3]s manque dans la tâche %[2]s.",
+ "actions.workflow.incomplete_matrix_unknown_cause": "Impossible d'évaluer `strategy.matrix` de la tâche %[1]s : erreur inconnue.",
+ "actions.workflow.incomplete_runson_missing_job": "Impossible d'évaluer les `runs-on` de la tâche %[1]s : la tâche %[2]s n'est pas dans la liste des `needs` de la tâche %[1]s (%[3]s).",
+ "actions.workflow.incomplete_runson_missing_output": "Impossible d'évaluer les `runs-on` de la tâche %[1]s : la sortie %[3]s manque dans la tâche %[2]s.",
+ "actions.workflow.incomplete_runson_missing_matrix_dimension": "Impossible d'évaluer les `runs-on` de la tâche %[1]s : la dimension matricielle %[2]s n'existe pas.",
+ "actions.workflow.incomplete_runson_unknown_cause": "Impossible d'évaluer `runs-on` de la tâche %[1]s : erreur inconnue.",
+ "admin.auths.oauth2_quota_group_map_removal": "Supprimer les utilisateurs des groupes de quotas synchronisés si l'utilisateur n'appartient pas au groupe correspondant.",
+ "issues.updated": "actualisé %s",
+ "search.fuzzy_tooltip": "Inclure les résultats avec une correspondance approximative avec le terme recherché",
+ "moderation.report.mark_as_handled": "Marquer comme traité",
+ "actions.workflow.incomplete_with_missing_job": "Impossible d'évaluer `with` avec la tâche %[1]s : la tâche %[2]s n'est pas dans la liste `needs` de la tâche %[1]s (%[3]s).",
+ "pulls.manual_merge.copy.button": "Copier le message de commit de fusion",
+ "editor.search": "Rechercher",
+ "editor.find_previous": "Recherche précédente",
+ "editor.find_next": "Recherche suivante",
+ "editor.replace": "Remplacer",
+ "editor.toggle_case": "Activer/désactiver la sensibilité à la casse",
+ "editor.toggle_regex": "Activer/désactiver l'utilisation d'expressions régulières",
+ "repo.view.gitmodules_too_large": "Le fichier .gitmodules est trop volumineux et sera ignoré (lors des appels API par exemple)",
+ "search.fuzzy": "Approximative",
+ "pulls.manual_merge.commit.title": "Titre de la fusion de commit",
+ "pulls.manual_merge.commit.body": "Contenue de la fusion de commit",
+ "install.ssh_authorized_keys_inspection_error": "Échec de l'inspection du fichier authorized_keys existant : %v",
+ "install.ssh_authorized_keys_unexpected_key": "L'activation de SSH pour Forgejo entre en conflit avec le fichier situé à %s qui contient des clés SSH existantes. Suggestions : utilisez un utilisateur système dédié à Forgejo, ou désactivez SSH.",
+ "admin.dashboard.actions_action_user": "Révoquer les Actions Forgejo autorisé pour les utilisateurs inactifs",
+ "actions.secrets.creation.name_description": "Le nom d'un secret ne peut contenir que des lettres, nombres, ou `_`. Il ne peut pas commencer par FORGEJO_, GITEA_, GITHUB_, ou un nombre. Forgejo le convertira automatiquement en majuscules.",
+ "actions.secrets.creation.value_description": "La valeur d'un secret peut être n'importe quel texte. Les caractères spéciaux sont conservés. Les CRLF (saut de ligne au format Microsoft) sont automatiquement convertis en LF. Encodez la valeur en Base64 si les sauts de ligne doivent être conservés.",
+ "actions.variables.mutation.name_description": "Le nom d'une variable ne peut contenir que des lettres, nombres, ou `_`. Il ne peut pas être nommé CI ou commencer par FORGEJO_, GITEA_, GITHUB_, ou un nombre. Forgejo le convertira automatiquement en majuscules.",
+ "actions.variables.mutation.value_description": "La valeur d'une variable peut être n'importe quel texte. Les caractères spéciaux sont conservés. Les CRLF (saut de ligne au format Microsoft) sont automatiquement convertis en LF. Encodez la valeur en Base64 si les sauts de ligne doivent être conservés.",
+ "repo.issues.filter_sort.hint_with_placeholder": "Trier par : %s",
+ "packages.common.install": "Pour installer le paquet, exécutez la commande suivante :",
+ "packages.common.registry": "Configurez ce registre à partir de la ligne de commande suivante :",
+ "packages.common.repository": "Informations sur le dépôt",
+ "repo.pulls.poster_requires_approval": "Certains workflows sont en attente de révision.",
+ "editor.replace_all": "Tout remplacer",
+ "access_token.error.specified_repos_none": "Les jetons d'accès avec des dépôts spécifiés doivent avoir au moins un dépôt.",
+ "editor.toggle_whole_word": "Activer/désactiver la correspondance des mots entiers",
+ "issues.filters.labels.exclude": "Exclure l'étiquette",
+ "issues.filters.labels.unexclude": "Enlever les exclusions",
+ "repo.pulls.auto_merge.no_permission": "Vous n'avez pas la permission d'annuler la fusion automatique de cette pull request.",
+ "settings.specific_repo_access": "Accès au dépôt",
+ "actions.runners.list_runners.edit_column": "Modifier",
+ "actions.runners.list_runners.delete_column": "Supprimer",
+ "actions.runners.create_runner.properties_fieldset": "Propriétés",
+ "actions.runners.create_runner.create_button": "Créer",
+ "actions.runners.edit_runner.properties_fieldset": "Propriétés",
+ "actions.runners.edit_runner.properties_options": "Options",
+ "actions.runners.edit_runner.description_label": "Description",
+ "actions.runners.edit_runner.regenerate_token_label": "Regénérer le jeton",
+ "actions.runners.show_registration_token": "Afficher le jeton d'enregistrement",
+ "settings.new_access_token": "Nouveau jeton d'accès",
+ "actions.runners.uuid": "UUID",
+ "actions.runners.ephemeral": "Éphémère",
+ "actions.runners.list_runners.delete_button": "Supprimer",
+ "actions.runners.list_runners.delete_button_aria": "Supprimer %s",
+ "actions.runners.list_runners.edit_button": "Modifier",
+ "actions.runners.list_runners.edit_button_aria": "Modifier %s",
+ "actions.runners.ephemeral.yes": "oui",
+ "repo.pulls.poster_requires_approval.tooltip": "L'auteur de cette pull request n'est pas autorisé à exécuter des workflows déclenchés par une pull request créée depuis un dépôt forké ou avec AGit. Les workflows déclenchés par un événement `pull_request` ne s'exécuteront pas tant qu'ils n'auront pas été approuvés.",
+ "actions.runners.task_list_repo": "Tâches récentes de ce dépôt sur cet exécuteur",
+ "actions.runners.task_list_org": "Tâches récentes de cet exécuteur dans cette organisation",
+ "actions.runners.task_list_admin": "Tâches récentes de cet exécuteur",
+ "actions.runners.task_list_user": "Tâches récentes de cet utilisateur sur cet exécuteur",
+ "actions.runners.edit_runner_button": "Éditer l'exécuteur",
+ "actions.runners.create_runner.page_title": "Créer un nouvel exécuteur",
+ "actions.runners.create_runner.title": "Créer un nouvel exécuteur",
+ "actions.runners.create_runner.name_label": "Nom",
+ "actions.runners.create_runner.description_label": "Description",
+ "actions.runners.create_runner.cancel_button": "Annuler",
+ "actions.runners.edit_runner.page_title": "Éditer l'exécuteur %s",
+ "actions.runners.edit_runner.title": "Éditer l'exécuteur %s",
+ "actions.runners.edit_runner.name_label": "Nom",
+ "actions.runners.edit_runner.regenerate_token_help": "Le jeton existant sera immédiatement invalidé. Vous recevrez un nouveau jeton sur la page suivante.",
+ "actions.runners.edit_runner.save_button": "Enregistrer",
+ "actions.runners.edit_runner.cancel_button": "Annuler",
+ "actions.runners.runner_setup.title": "Configuration de l'exécuteur %s",
+ "actions.runners.runner_details.page_title": "Exécuteur %s",
+ "actions.runners.runner_setup.page_title": "Configuration de l'exécuteur %s",
+ "actions.runners.runner_setup.list_of_runners_link": "Liste des exécuteurs",
+ "actions.runners.runner_setup.last_chance_copying_token": "Copiez le jeton maintenant, vous ne pourrez pas le revoir !",
+ "actions.runners.runner_setup.button_copy_uuid_aria": "Copier l'UUID de l'exécuteur",
+ "actions.runners.runner_setup.button_copy_token_aria": "Copier le jeton de l'exécuteur",
+ "actions.runners.runner_setup.program_options_snippet_aria": "Comment invoquer forgejo-runner",
+ "actions.runners.runner_setup.instruction_replace_connection_name": "Remplacer le nom de connexion (forgejo dans l'exemple) par une valeur de votre choix.",
+ "actions.runners.reset_registration_token.token": "Jeton d'enregistrement (Déprécié)",
+ "actions.runs.all_runs_link": "toutes les exécutions",
+ "actions.secrets.edit_button": "Éditer le secret \"%s\"",
+ "actions.secrets.mutation.header": "Éditer le secret \"%s\"",
+ "actions.secrets.mutation.success_message": "Le secret \"%s\" a été mis à jour.",
+ "actions.secrets.mutation.failure_message": "Le secret \"%s\" n'a pas pu être mis à jour.",
+ "actions.secrets.mutation.name_description": "Le nom d'un secret ne peut contenir que des lettres, des chiffres et des `_`. Il ne peut pas démarrer avec FORGEJO_ , GITEA_ , GITHUB_ , ou un nombre. Forgejo le convertira automatiquement en majuscules.",
+ "form.RunnerName": "Nom",
+ "graphs.recent_commits.title": "Nombre de commits au cours de l'année écoulée",
+ "graphs.code_frequency.title": "Fréquence de code sur l'historique de {0}",
+ "settings.permissions_access_specific_repositories": "Dépôts spécifiques",
+ "settings.access_token.selected_repositories": {
+ "one": "Dépôt sélectionné (%d)",
+ "many": "Dépôts sélectionnés (%d)",
+ "other": "Dépôts sélectionnés (%d)"
+ },
+ "settings.access_token.available_repositories": "Dépôts disponibles",
+ "settings.access_token.no_repositories_selected": "Aucun dépôt sélectionné.",
+ "settings.access_token.no_repositories_found": "Aucun dépôt trouvé.",
+ "settings.access_token.remove": "Supprimer %s",
+ "settings.access_token.resource_public_only_help": "Limiter l'accès aux dépôts et aux organisations publiques.",
+ "settings.access_token.resource_specific_repo_help": "Limiter l'accès à une liste spécifique de dépôts. L'accès en lecture seule est autorisé sur tous les dépôts publiques. Seules les permissions permettant l'accès aux dépôts et aux tickets peuvent être activées.",
+ "settings.access_token.admin_disabled": "Les autorisations administratives sont désactivées.",
+ "actions.runners.token": "Jeton",
+ "actions.runners.ephemeral.no": "non",
+ "actions.runs.scheduled_description": "Exécution planifiée du commit %[2]s",
+ "actions.runs.workflow_dispatch_description": "Exécution du commit %[2]s déclenché par %[4]s",
+ "actions.runs.on_push_description": "Commit %[2]s poussé par %[4]s",
+ "migrate.select.title": "Migrer le dépôt",
+ "admin.federation.federation": "Fédération",
+ "admin.federation.hosts": "Hôtes",
+ "admin.federation.hosts.show_details": "Afficher les détails de l'hôte",
+ "admin.federation.host.id": "ID",
+ "admin.federation.host.schema": "Schéma",
+ "admin.federation.host.port": "Port",
+ "admin.federation.host.latest_activity": "Dernières activités",
+ "admin.federation.users": "Utilisateurs",
+ "admin.federation.user.id": "ID",
+ "admin.federation.user.user_id": "ID utilisateur local",
+ "admin.federation.user.external_id": "ID utilisateur externe",
+ "admin.config.federation": "Configuration de la fédération",
+ "admin.config.federation.enabled": "Activé",
+ "settings.access_token.resource_all_help": "Autoriser l'accès à toutes les ressources.",
+ "user.activitypub_feed.posted_on": "Posté sur %[1]s",
+ "actions.runners.version": "Version",
+ "repo.files.filename": "Fichier",
+ "repo.files.last_commit_message": "Dernier message de commit",
+ "repo.files.last_commit_date": "Date du dernier commit",
+ "admin.federation.host.created": "Créé",
+ "admin.federation.host.software_name": "Programme",
+ "admin.federation.users.title": "Utilisateurs fédérés",
+ "admin.federation.users.manage_panel": "Gérer les utilisateurs fédérés",
+ "admin.federation.users.show_local_user": "Montrer les détails de l'utilisateur local",
+ "admin.config.federation.signature_algorithms": "Algorithmes de signature",
+ "admin.config.federation.digest_algorithm": "Algorithme de hachage de signature",
+ "user.activitypub_feed.original_source": "Source originale",
+ "actions.runners.runner_setup.instruction_advanced_configurations": "Pour configurer l'exécuteur Forgejo dans des conteneurs ou pour des configurations avancées, consultez la documentation.",
+ "actions.workflow.rerun_impossible": "Le workflow ne peut pas être relancé.",
+ "actions.workflow.job_rerun_impossible": "La tâche ne peut pas être relancé.",
+ "members.add_member": "Ajouter un membre",
+ "members.user": "Utilisateur",
+ "members.user_already_member": "Cet utilisateur est déjà membre de l'organisation.",
+ "members.no_team_selected": "Les membres de l'organisation doivent appartenir à au moins une équipe."
+}
diff --git a/options/locale_next/locale_ga.json b/options/locale_next/locale_ga.json
index 0ef3186852..333c4b281b 100644
--- a/options/locale_next/locale_ga.json
+++ b/options/locale_next/locale_ga.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Cosán",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Scéim",
+ "admin.config.db.user": "Ainm úsáideora",
+ "admin.config.db.name": "Ainm",
+ "admin.config.db.host": "Óstach",
+ "admin.config.db.type": "Cineál",
+ "admin.config.db.header": "Cumraíocht Bunachar Sonraí",
+ "admin.config.mailer.user": "Úsáideoir",
+ "admin.config.mailer.smtp.port": "Calafort SMTP",
+ "admin.config.mailer.smtp.addr": "Óstach SMTP",
+ "admin.config.mailer.enable_helo": "Cumasaigh HELO",
+ "admin.config.mailer.protocol": "Prótacal",
+ "admin.config.mailer.use_dummy": "Caochadán",
+ "admin.config.mailer.sendmail.timeout": "Teorainn Ama Sendmail",
+ "admin.config.mailer.sendmail.args": "Argóintí Breise chuig Sendmail",
+ "admin.config.mailer.sendmail.path": "Cosán Sendmail",
+ "admin.config.mailer.sendmail.use": "Úsáid Sendmail",
+ "admin.config.mailer.name": "Ainm",
+ "admin.config.mailer.enabled": "Cumasaithe",
+ "admin.config.mailer.header": "Cumraíocht Seoltóra",
+ "admin.config.git.gc_timeout": "Teorainn Ama Oibriúcháin GC",
+ "admin.config.git.pull_timeout": "Tarraing Am Oibríochta",
+ "admin.config.git.clone_timeout": "Teorainn Ama Oibríochta Clón",
+ "admin.config.git.mirror_timeout": "Teorainn Ama Nuashonraithe Scátháin",
+ "admin.config.git.migrate_timeout": "Teorainn Ama Imirce",
+ "admin.config.git.gc_args": "Argóintí GC",
+ "admin.config.git.diff.max_files": "Uasmhéid comhaid difríochta a thaispeántar",
+ "admin.config.git.diff.max_line_characters": "Uasmhéid carachtair dhifriúla in aghaidh an líne",
+ "admin.config.git.diff.max_lines": "Uasmhéid línte difríochta in aghaidh an chomhaid",
+ "admin.config.git.disable_diff_highlight": "Díchumasaigh aibhsiú comhréir difríochta",
+ "admin.config.git.version": "Leagan Git",
+ "admin.config.git.header": "Cumraíocht Git",
+ "admin.config.ssh.minimum_key_sizes": "Méideanna Íosta Eochrach",
+ "admin.config.ssh.minimum_key_size_check": "Seiceáil Íosta Méid Eochair",
+ "admin.config.ssh.keygen_path": "Cosán Keygen (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Cosán Tástáil Eochair",
+ "admin.config.ssh.root_path": "Cosán Fréimhe",
+ "admin.config.ssh.listen_port": "Éist Calafort",
+ "admin.config.ssh.port": "Calafort",
+ "admin.config.ssh.domain": "Fearainn Freastalaí SSH",
+ "admin.config.ssh.use_builtin_server": "Úsáid Freastalaí Ionsuite",
+ "admin.config.ssh.enabled": "Cumasaithe",
+ "admin.config.ssh.header": "Cumraíocht SSH",
+ "admin.users.never_login": "Níor shínigh tú isteach riamh",
+ "admin.users.last_login": "Sínigh Isteach Deiridh",
+ "admin.users.created": "Cruthaithe",
+ "admin.users.repos": "Stórais",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Iargúlta",
+ "admin.users.bot": "Bota",
+ "admin.users.reserved": "In áirithe",
+ "admin.users.restricted": "Srianta",
+ "admin.users.admin": "Riarachán",
+ "admin.users.activated": "Gníomhachtaithe",
+ "admin.users.full_name": "Ainm Iomlán",
+ "admin.users.name": "Ainm úsáideora",
+ "admin.packages.published": "Foilsithe",
+ "admin.packages.size": "Méid",
+ "admin.packages.repository": "Stóráil",
+ "admin.packages.type": "Cineál",
+ "admin.packages.version": "Leagan",
+ "admin.packages.name": "Ainm",
+ "admin.packages.creator": "Cruthaitheoir",
+ "admin.packages.owner": "Úinéir",
+ "admin.packages.unreferenced_size": "Méid gan tagairt: %s",
+ "admin.packages.total_size": "Méid Iomlán: %s",
+ "admin.repos.lfs_size": "Méid LFS",
+ "admin.repos.size": "Méid",
+ "admin.repos.issues": "Saincheisteanna",
+ "admin.repos.name": "Ainm",
+ "admin.repos.owner": "Úinéir",
+ "admin.orgs.new_orga": "Eagraíocht Nua",
+ "admin.orgs.members": "Comhaltaí",
+ "admin.orgs.teams": "Foirne",
+ "admin.orgs.name": "Ainm",
+ "admin.dashboard.rebuild_issue_indexer": "Atógáil innéacsóir eisiúna",
+ "admin.dashboard.start_schedule_tasks": "Tosaigh tascanna gníomhartha sceidealaithe",
+ "admin.dashboard.cancel_abandoned_jobs": "Cealaigh poist gníomhartha tréigthe",
+ "admin.dashboard.stop_endless_tasks": "Stop tascanna gníomhartha gan teorainn",
+ "admin.dashboard.stop_zombie_tasks": "Stop tascanna gníomhartha zombie",
+ "admin.dashboard.gc_lfs": "Bailigh truflais meta rudaí LFS",
+ "admin.dashboard.delete_old_system_notices": "Scrios gach seanfhógra córais ón mbunachar sonraí",
+ "admin.dashboard.update_checker": "Seiceoir nuashonraithe",
+ "admin.dashboard.cleanup_actions": "Glan suas logaí agus déantáin atá imithe in éag ó ghníomhartha",
+ "admin.dashboard.cleanup_packages": "Glan suas pacáistí atá imithe in éag",
+ "admin.dashboard.cleanup_hook_task_table": "Glan suas an tábla hook_task",
+ "admin.dashboard.sync_external_users": "Sioncrónaigh sonraí úsáideoirí seachtracha",
+ "admin.dashboard.reinit_missing_repos": "Aththosaigh gach stórais Git atá in easnamh a bhfuil taifid ann dóibh",
+ "admin.dashboard.resync_all_hooks": "Athshioncrónaigh crúcaí Git na stórtha uile (réamhghlacadh, nuashonrú, iarghlacadh, próiseasghlacadh, ...)",
+ "admin.dashboard.resync_all_sshprincipals": "Nuashonraigh an comhad \".ssh/authorized_principals\" le príomhoidí SSH Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Nuashonraigh an comhad \".ssh/authorized_keys\" le heochracha SSH Forgejo.",
+ "admin.dashboard.git_gc_repos": "Bailíonn truflais gach stórais",
+ "admin.dashboard.update_migration_poster_id": "Nuashonraigh ID póstaer imir",
+ "admin.dashboard.deleted_branches_cleanup": "Brainsí scriosta a ghlanadh",
+ "admin.dashboard.archive_cleanup": "Scrios sean-chartlanna stórais",
+ "admin.dashboard.check_repo_stats": "Seiceáil gach staitisticí stórais",
+ "admin.dashboard.repo_health_check": "Seiceáil sláinte gach stóras",
+ "admin.dashboard.update_mirrors": "Scátháin a nuashonrú",
+ "admin.dashboard.sync_repo_tags": "Clibeanna sioncraigh ó shonraí git go bunachar sonraí",
+ "admin.dashboard.sync_repo_branches": "Sioncrónaigh brainsí caillte ó shonraí Git go bunachar sonraí",
+ "admin.dashboard.delete_generated_repository_avatars": "Scrios abhatáranna stórtha ginte",
+ "admin.dashboard.sync_tag.started": "Tosaíodh sioncrónú clibeanna",
+ "admin.dashboard.sync_branch.started": "Tosaíodh sioncrónú brainse",
+ "admin.dashboard.delete_old_actions.started": "Scrios na sean-ghníomhaíocht go léir ón mbunachar sonraí tosaithe.",
+ "admin.dashboard.delete_missing_repos.started": "Scrios gach stóras atá in easnamh ar a dtasc comhaid Git a thosaigh.",
+ "admin.dashboard.delete_repo_archives.started": "Scrios gach tasc cartlann stórais a thosaigh.",
+ "admin.dashboard.delete_inactive_accounts.started": "Tasc scriostha gach cuntas neamhghníomhachtaithe tosaithe.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s críochnaithe",
+ "admin.dashboard.cron.error": "Earráid i gCron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s cealaithe: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron tosaithe: %[1]s",
+ "admin.dashboard.task.unknown": "Tasc anaithnid: %[1]s",
+ "admin.dashboard.task.finished": "Tasc: Tá %[1]s tosaithe ag %[2]s críochnaithe",
+ "admin.dashboard.task.error": "Earráid sa Tasc: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Tasc: %[1]s cealaithe: %[3]s",
+ "admin.dashboard.task.process": "Tasc: %[1]s",
+ "admin.dashboard.task.started": "Tasc Tosaigh: %[1]s",
+ "admin.dashboard.operation_run": "Rith",
+ "admin.dashboard.operation_switch": "Athraigh",
+ "admin.dashboard.operation_name": "Ainm Oibríochta",
+ "admin.dashboard.system_status": "Stádas an Chórais",
+ "admin.dashboard.operations": "Oibríochtaí cothabhála",
+ "admin.dashboard.statistic": "Achoimre",
+ "admin.dashboard.new_version_hint": "Tá Forgejo %s ar fáil anois, tá %s á rith agat. Seiceáil an blag le haghaidh tuilleadh sonraí.",
"admin.monitor.queue.settings.remove_all_items.success": "Baineadh na míreanna go léir sa scuaine.",
"admin.monitor.queue.settings.remove_all_items": "Bain gach",
"admin.monitor.queue.settings.changed": "Socruithe Nuashonraithe",
@@ -787,7 +913,7 @@
"actions.runners.runner_setup.program_options_snippet_aria": "Conas forgejo-runner a ghairm",
"actions.runners.runner_setup.instruction_replace_connection_name": "Cuir luach de do thaitin leat in ionad ainm an naisc (forgejo sa sampla).",
"actions.runners.runner_setup.heading_using_options": "Ag baint úsáide as roghanna cláir",
- "actions.runners.runner_setup.instruction_advanced_configurations": "Chun Forgejo Runner a chumrú agus é ag rith i gcoimeádáin nó i gcumraíochtaí ardleibhéil, féach ar an doiciméadú.",
+ "actions.runners.runner_setup.instruction_advanced_configurations": "Chun Forgejo Runner a chumrú ag rith i gcoimeádáin nó i gcumraíochtaí ardleibhéil, féach ar an dhoiciméadú.",
"actions.runners.reset_registration_token.token": "Comhartha Clárúcháin (Imithe as Feidhm)",
"actions.runs.scheduled_description": "Rith sceidealaithe de thiomnú %[2]s",
"actions.runs.workflow_dispatch_description": "Rith an tiomnúcháin %[2]s spreagtha ag %[4]s",
@@ -807,5 +933,9 @@
"members.no_team_selected": "Ní mór do bhaill na heagraíochta a bheith ina mbaill de fhoireann amháin ar a laghad.",
"form.RunnerName": "Ainm",
"graphs.recent_commits.title": "Líon na ngealltanas le bliain anuas",
- "graphs.code_frequency.title": "Minicíocht chód thar stair {0}"
+ "graphs.code_frequency.title": "Minicíocht chód thar stair {0}",
+ "repo.files.caption": "Comhaid stórais (an tiomnú is déanaí ar dtús)",
+ "repo.files.filename": "Ainm comhaid",
+ "repo.files.last_commit_message": "Teachtaireacht tiomantais is déanaí",
+ "repo.files.last_commit_date": "Dáta tiomantais is déanaí"
}
diff --git a/options/locale_next/locale_gl.json b/options/locale_next/locale_gl.json
index 7878b0a7f1..9b25668932 100644
--- a/options/locale_next/locale_gl.json
+++ b/options/locale_next/locale_gl.json
@@ -44,5 +44,32 @@
"one": "hai %d ano",
"other": "hai %d anos"
},
- "meta.last_line": " "
+ "meta.last_line": " ",
+ "home.welcome.no_activity": "Sen actividade",
+ "home.welcome.activity_hint": "Aínda non hai nada no teu feed. Tanto as túas accións como a actividade dos repositorios seguidos aparecerán aqui.",
+ "home.explore_repos": "Explorar repositorios",
+ "home.explore_users": "Explorar usuarios",
+ "home.explore_orgs": "Explorar organizacións",
+ "fork.n_forks": {
+ "one": "%s fork",
+ "other": "%s forks"
+ },
+ "stars.list.none": "Ninguén lle dou unha estrela a este repo.",
+ "stars.n_stars": {
+ "one": "%s estrela",
+ "other": "%s estrelas"
+ },
+ "watch.list.none": "Ninguén está seguindo este repo.",
+ "watch.n_watchers": {
+ "one": "%s seguidor",
+ "other": "%s seguidores"
+ },
+ "followers.incoming.list.self.none": "Ninguén está seguindo o teu perfil.",
+ "followers.incoming.list.none": "Ninguén está seguindo este usuario.",
+ "repo.files.caption": "Arquivos do repositorio (os últimos commits primeiro)",
+ "repo.files.filename": "Nome do arquivo",
+ "repo.files.last_commit_message": "Mensaxe do último commit",
+ "repo.files.last_commit_date": "Data do último commit",
+ "repo.issues.filter_poster.hint": "Filtrar por autor",
+ "repo.issues.filter_assignee.hint": "Filtrar por usuario asignado"
}
diff --git a/options/locale_next/locale_hi.json b/options/locale_next/locale_hi.json
index 86919e5eb4..ca12326529 100644
--- a/options/locale_next/locale_hi.json
+++ b/options/locale_next/locale_hi.json
@@ -93,5 +93,85 @@
"moderation.report_remarks.placeholder": "कुछ डिटेल्स बताओ जिस बारे में रिपोर्ट कर रहे हो",
"moderation.submit_report": "रिपोर्ट सबमिट करो",
"moderation.reporting_failed": "नयी रिपोर्ट सबमिट नहीं हो सकती",
- "moderation.reported_thank_you": "रिपोर्ट के लिए शुक्रिया। एडमिन को बताया गया है"
+ "moderation.reported_thank_you": "रिपोर्ट के लिए शुक्रिया। एडमिन को बताया गया है",
+ "watch.n_watchers": {
+ "one": "%s निगरानीकर्ता",
+ "other": "%s निगरानीकर्ता"
+ },
+ "repo.issues.filter_assignee.hint": "सौंपे गए उपयोगकर्ता द्वारा फ़िल्टर करें",
+ "repo.issues.filter_poster.hint": "लेखक के अनुसार फ़िल्टर करें",
+ "repo.files.last_commit_date": "नवीनतम कमिट की तारीख",
+ "repo.files.last_commit_message": "नवीनतम कमिट संदेश",
+ "repo.files.filename": "फ़ाइलनाम",
+ "repo.files.caption": "रिपॉजिटरी फ़ाइलें (नवीनतम कमिट पहले)",
+ "relativetime.hours": {
+ "one": "%d घंटा पहले",
+ "other": "%d घंटे पहले"
+ },
+ "repo.pulls.merged_title_desc": {
+ "one": "%[2]s से %[3]s में %[1]d कमिट मर्ज किया %[4]s",
+ "other": "%[2]s से %[3]s में %[1]d कमिट मर्ज किए %[4]s"
+ },
+ "repo.pulls.title_desc": {
+ "one": "%[2]s से %[3]s में %[1]d कमिट मर्ज करना चाहता है",
+ "other": "%[2]s से %[3]s में %[1]d कमिट मर्ज करना चाहते हैं"
+ },
+ "mail.actions.successful_run_after_failure_subject": "रिपॉज़िटरी %[2]s में वर्कफ़्लो %[1]s पुनर्प्राप्त किया गया",
+ "mail.actions.not_successful_run_subject": "रिपॉज़िटरी %[2]s में वर्कफ़्लो %[1]s विफल हो गया",
+ "mail.actions.successful_run_after_failure": "रिपॉज़िटरी %[2]s में वर्कफ़्लो %[1]s पुनर्प्राप्त हो गया",
+ "mail.actions.not_successful_run": "रिपॉज़िटरी %[2]s में वर्कफ़्लो %[1]s विफल हो गया",
+ "mail.actions.run_info_cur_status": "इस रन की स्थिति: %[1]s (अभी-अभी %[2]s से अपडेट की गई)",
+ "mail.actions.run_info_previous_status": "पिछले रन की स्थिति: %[1]s",
+ "mail.actions.run_info_trigger": "ट्रिगर होने का कारण: %[1]s द्वारा: %[2]s",
+ "discussion.locked": "यह चर्चा लॉक कर दी गई है। टिप्पणी करना केवल योगदानकर्ताओं तक सीमित है।",
+ "editor.textarea.tab_hint": "पंक्ति पहले से ही इंडेंट की गई है। संपादक से बाहर निकलने के लिए फिर से Tab दबाएँ या Escape दबाएँ।",
+ "editor.textarea.shift_tab_hint": "इस पंक्ति पर कोई इंडेंटेशन नहीं है। संपादक से बाहर निकलने के लिए फिर से Shift + Tab दबाएँ या Escape दबाएँ।",
+ "admin.dashboard.cleanup_offline_runners": "ऑफ़लाइन रनर्स की सफाई करें",
+ "settings.visibility.description": "प्रोफ़ाइल दृश्यता दूसरों की आपके गैर-निजी रिपॉज़िटरी तक पहुँचने की क्षमता को प्रभावित करती है और जानें",
+ "repo.diff.commit.next-short": "अगला",
+ "repo.diff.commit.previous-short": "पिछला",
+ "og.repo.summary_card.alt_description": "रिपॉज़िटरी %[1]s का सारांश कार्ड, जिसका विवरण है: %[2]s",
+ "mail.actions.run_info_sha": "कमिट: %[1]s",
+ "discussion.sidebar.reference": "संदर्भ",
+ "admin.moderation.moderation_reports": "मॉडरेशन रिपोर्ट्स",
+ "admin.moderation.reports": "रिपोर्ट्स",
+ "admin.moderation.no_open_reports": "वर्तमान में कोई खुली रिपोर्ट नहीं है।",
+ "admin.moderation.deleted_content_ref": "प्रकार %[1]v और आईडी %[2]d वाली रिपोर्ट की गई सामग्री अब मौजूद नहीं है",
+ "admin.dashboard.remove_resolved_reports": "सुलझाई गई रिपोर्ट्स हटाएँ",
+ "compare.branches.title": "ब्रांचों की तुलना करें",
+ "repo.commit.load_tags_failed": "आंतरिक त्रुटि के कारण टैग लोड नहीं किए जा सके",
+ "admin.auths.allow_username_change": "उपयोगकर्ता नाम बदलने की अनुमति दें",
+ "admin.auths.allow_username_change.description": "उपयोगकर्ताओं को प्रोफ़ाइल सेटिंग्स में अपना उपयोगकर्ता नाम बदलने की अनुमति दें",
+ "warning.repository.out_of_sync": "इस रिपॉज़िटरी का डेटाबेस प्रतिनिधित्व सिंक्रोनाइज़ेशन से बाहर है। यदि इस रिपॉज़िटरी में कमिट पुश करने के बाद भी यह चेतावनी दिखाई देती है, तो व्यवस्थापक से संपर्क करें।",
+ "repo.pulls.already_merged": "मर्ज विफल हुआ: यह पुल अनुरोध पहले ही मर्ज किया जा चुका है।",
+ "migrate.pagure.description": "pagure.io या अन्य Pagure इंस्टेंस से डेटा माइग्रेट करें।",
+ "migrate.pagure.incorrect_url": "गलत स्रोत रिपॉज़िटरी URL प्रदान किया गया है",
+ "repo.issues.filter_modified.hint": "अंतिम संशोधन तिथि के अनुसार फ़िल्टर करें",
+ "repo.issues.filter_sort.hint_with_placeholder": "इसके अनुसार क्रमबद्ध करें: %s",
+ "issues.updated": "%s अपडेट किया गया",
+ "issues.filters.labels.exclude": "लेबल को बाहर रखें",
+ "issues.filters.labels.unexclude": "बहिष्करण साफ़ करें",
+ "repo.pulls.auto_merge.no_permission": "आपके पास इस पुल अनुरोध के ऑटो मर्ज को रद्द करने की अनुमति नहीं है।",
+ "repo.pulls.poster_manage_approval": "अनुमोदन प्रबंधित करें",
+ "repo.pulls.poster_requires_approval": "कुछ वर्कफ़्लो समीक्षा की प्रतीक्षा कर रहे हैं।",
+ "repo.pulls.poster_requires_approval.tooltip": "इस पुल अनुरोध के लेखक पर फोर्क की गई रिपॉज़िटरी या AGit से बनाए गए पुल अनुरोध द्वारा ट्रिगर किए गए वर्कफ़्लो चलाने के लिए भरोसा नहीं किया जाता है। `pull_request` इवेंट द्वारा ट्रिगर किए गए वर्कफ़्लो अनुमोदित होने तक नहीं चलेंगे।",
+ "repo.pulls.poster_is_trusted": "इस पुल अनुरोध के लेखक को वर्कफ़्लो चलाने के लिए हमेशा विश्वसनीय माना जाता है।",
+ "repo.pulls.poster_is_trusted.tooltip": "इस पुल अनुरोध के लेखक को `pull_request` इवेंट द्वारा ट्रिगर किए गए वर्कफ़्लो चलाने के लिए स्पष्ट रूप से विश्वसनीय माना जाता है।",
+ "repo.pulls.poster_trust_deny": "अस्वीकार करें",
+ "repo.pulls.maintainers_can_edit": "मेंटेनर इस पुल अनुरोध को संपादित कर सकते हैं।",
+ "repo.issues.filter_mention.hint": "उल्लेखित उपयोगकर्ता के अनुसार फ़िल्टर करें",
+ "repo.issues.filter_reviewers.hint": "समीक्षा करने वाले उपयोगकर्ता के अनुसार फ़िल्टर करें",
+ "repo.pulls.poster_trust_always": "हमेशा अनुमोदित करें",
+ "repo.pulls.poster_trust_always.tooltip": "`pull_request` इवेंट द्वारा ट्रिगर किए गए वर्कफ़्लो इस कमिट पर चलेंगे और इस पुल अनुरोध या इसी उपयोगकर्ता द्वारा बनाए गए भविष्य के पुल अनुरोधों से आने वाले रन को अनुमोदित करने की आवश्यकता नहीं होगी।",
+ "repo.pulls.maintainers_cannot_edit": "मेंटेनर इस पुल अनुरोध को संपादित नहीं कर सकते।",
+ "repo.pulls.poster_trust_deny.tooltip": "अनुमोदन की प्रतीक्षा कर रहे वर्कफ़्लो रद्द कर दिए जाएंगे।",
+ "repo.pulls.poster_trust_once.tooltip": "`pull_request` इवेंट द्वारा ट्रिगर किए गए वर्कफ़्लो इस कमिट पर चलेंगे, लेकिन इस पुल अनुरोध में भविष्य में पुश किए गए सभी कमिट्स के लिए उन्हें अनुमोदित करना आवश्यक होगा।",
+ "repo.pulls.poster_trust_revoke.tooltip": "इस पुल अनुरोध के लेखक को अब `pull_request` इवेंट द्वारा ट्रिगर किए गए वर्कफ़्लो चलाने के लिए विश्वसनीय नहीं माना जाएगा, प्रत्येक रन को मैन्युअल रूप से अनुमोदित करना होगा।",
+ "repo.view.gitmodules_too_large": "`.gitmodules` फ़ाइल बहुत बड़ी है और इसे अनदेखा किया जाएगा (उदाहरण के लिए API कॉल्स में)",
+ "repo.pulls.poster_trust_once": "एक बार अनुमोदित करें",
+ "repo.pulls.poster_trust_revoke": "निरस्त करें",
+ "search.fuzzy_tooltip": "उन परिणामों को शामिल करें जो खोज शब्द से लगभग मेल खाते हैं",
+ "settings.access_token.admin_disabled": "प्रशासनिक अनुमतियाँ अक्षम हैं।",
+ "settings.must_enable_2fa": "यह Forgejo इंस्टेंस उपयोगकर्ताओं से अपेक्षा करता है कि वे अपने खातों तक पहुँचने से पहले दो-कारक प्रमाणीकरण सक्षम करें।",
+ "admin.dashboard.actions_action_user": "निष्क्रिय उपयोगकर्ताओं के लिए Forgejo Actions विश्वास निरस्त करें"
}
diff --git a/options/locale_next/locale_hu-HU.json b/options/locale_next/locale_hu-HU.json
index 4f28acaa45..adb23a0c3c 100644
--- a/options/locale_next/locale_hu-HU.json
+++ b/options/locale_next/locale_hu-HU.json
@@ -1,4 +1,72 @@
{
+ "admin.config.db.path": "Elérési út",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Séma",
+ "admin.config.db.user": "Felhasználónév",
+ "admin.config.db.name": "Név",
+ "admin.config.db.host": "Kiszolgáló",
+ "admin.config.db.type": "Típus",
+ "admin.config.db.header": "Adatbázis Konfiguráció",
+ "admin.config.mailer.user": "Felhasználó",
+ "admin.config.mailer.smtp.port": "SMTP port",
+ "admin.config.mailer.sendmail.args": "Extra Sendmail argumentumok",
+ "admin.config.mailer.sendmail.path": "Sendmail Elérési Útja",
+ "admin.config.mailer.sendmail.use": "Sendmail Használata",
+ "admin.config.mailer.name": "Név",
+ "admin.config.mailer.enabled": "Engedélyezett",
+ "admin.config.git.gc_timeout": "Szemétgyűjtési (GC) Időtúllépés",
+ "admin.config.git.pull_timeout": "Frissítési Időtúllépés",
+ "admin.config.git.clone_timeout": "Klónozási időtúllépés",
+ "admin.config.git.mirror_timeout": "Tükör Frissítési Időtúllépés",
+ "admin.config.git.migrate_timeout": "Migrációs Időtúllépés",
+ "admin.config.git.gc_args": "Szemétgyűjtő (GC) Argumentumok",
+ "admin.config.git.diff.max_files": "Maximális fájlok száma különbségi nézetben",
+ "admin.config.git.diff.max_line_characters": "Maximális karakterek száma különbségi nézetben (egy fájl esetén)",
+ "admin.config.git.diff.max_lines": "Maximális sorok száma különbségi nézetben (egy fájl esetén)",
+ "admin.config.git.disable_diff_highlight": "Különbségi nézetben a szintakszis kiemelés kikapcsolása",
+ "admin.config.git.version": "Git Verzió",
+ "admin.config.git.header": "Git Beállítás",
+ "admin.config.ssh.minimum_key_sizes": "Minimális kulcsok méretek",
+ "admin.config.ssh.minimum_key_size_check": "Kulcsok minimum méretének ellenőrzése",
+ "admin.config.ssh.keygen_path": "Kulcsgeneráló ('ssh-keygen') elérési útja",
+ "admin.config.ssh.key_test_path": "Kulcs ellenőrzés útvonala",
+ "admin.config.ssh.root_path": "Gyökérkönyvtár",
+ "admin.config.ssh.listen_port": "Figyelő port",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.use_builtin_server": "Beépített szerver használata",
+ "admin.config.ssh.enabled": "Engedélyezett",
+ "admin.config.ssh.header": "SSH Konfiguráció",
+ "admin.users.never_login": "Sosem jelentkezett be",
+ "admin.users.last_login": "Utolsó bejelentkezés",
+ "admin.users.created": "Létrehozva",
+ "admin.users.repos": "Tárolók",
+ "admin.users.restricted": "Korlátozott",
+ "admin.users.admin": "Rendszergazda",
+ "admin.users.activated": "Aktivált",
+ "admin.users.full_name": "Teljes név",
+ "admin.users.name": "Felhasználónév",
+ "admin.packages.size": "Méret",
+ "admin.packages.repository": "Tároló",
+ "admin.packages.type": "Típus",
+ "admin.packages.name": "Név",
+ "admin.packages.owner": "Tulajdonos",
+ "admin.repos.size": "Méret",
+ "admin.repos.issues": "Hibajegyek",
+ "admin.repos.name": "Név",
+ "admin.repos.owner": "Tulajdonos",
+ "admin.orgs.new_orga": "Új szervezet",
+ "admin.orgs.members": "Tagok",
+ "admin.orgs.teams": "Csoportok",
+ "admin.orgs.name": "Név",
+ "admin.dashboard.sync_external_users": "Külső felhasználói adatok szinkronizálása",
+ "admin.dashboard.reinit_missing_repos": "Az összes Git tároló újra-inicializálása amihez léteznek bejegyzések",
+ "admin.dashboard.delete_generated_repository_avatars": "Generált tároló avatarok törlése",
+ "admin.dashboard.operation_run": "Futtatás",
+ "admin.dashboard.operation_switch": "Váltás",
+ "admin.dashboard.operation_name": "Művelet Neve",
+ "admin.dashboard.system_status": "Rendszer Állapota",
+ "admin.dashboard.operations": "Karbantartási műveletek",
+ "admin.dashboard.statistic": "Összefoglaló",
"admin.monitor.queue.settings.submit": "Beállítások frissítése",
"admin.monitor.queue.type": "Típus",
"admin.monitor.queue.name": "Név",
diff --git a/options/locale_next/locale_id-ID.json b/options/locale_next/locale_id-ID.json
index d0e58fcbb4..6822b7a758 100644
--- a/options/locale_next/locale_id-ID.json
+++ b/options/locale_next/locale_id-ID.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Jalur",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.user": "Nama pengguna",
+ "admin.config.db.name": "Nama",
+ "admin.config.db.host": "Host",
+ "admin.config.db.type": "Tipe",
+ "admin.config.db.header": "Konfigurasi basis data",
+ "admin.config.mailer.user": "Pengguna",
+ "admin.config.mailer.smtp.port": "Port SMTP",
+ "admin.config.mailer.smtp.addr": "Host SMTP",
+ "admin.config.mailer.enable_helo": "Aktifkan HELO",
+ "admin.config.mailer.protocol": "Protokol",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Batas waktu Sendmail",
+ "admin.config.mailer.sendmail.args": "Argumen tambahan untuk Sendmail",
+ "admin.config.mailer.sendmail.path": "Jalur Sendmail",
+ "admin.config.mailer.sendmail.use": "Menggunakan Sendmail",
+ "admin.config.mailer.name": "Nama",
+ "admin.config.mailer.enabled": "Diaktifkan",
+ "admin.config.mailer.header": "Konfigurasi mailer",
+ "admin.config.git.gc_timeout": "Batas waktu operasi GC",
+ "admin.config.git.pull_timeout": "Batas waktu operasi tarik",
+ "admin.config.git.clone_timeout": "Batas waktu operasi klon",
+ "admin.config.git.mirror_timeout": "Batas waktu pembaruan cermin",
+ "admin.config.git.migrate_timeout": "Batas waktu migrasi",
+ "admin.config.git.gc_args": "Argumen GC",
+ "admin.config.git.diff.max_files": "Maks file diff yang ditampilkan",
+ "admin.config.git.diff.max_line_characters": "Maks karakter diff per baris",
+ "admin.config.git.diff.max_lines": "Maks baris diff per file",
+ "admin.config.git.disable_diff_highlight": "Nonaktifkan penyorotan sintaks diff",
+ "admin.config.git.version": "Versi Git",
+ "admin.config.git.header": "Konfigurasi Git",
+ "admin.config.ssh.minimum_key_sizes": "Ukuran kunci minimum",
+ "admin.config.ssh.minimum_key_size_check": "Pemeriksaan ukuran kunci minimum",
+ "admin.config.ssh.keygen_path": "Jalur Keygen (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Jalur uji kunci",
+ "admin.config.ssh.root_path": "Jalur root",
+ "admin.config.ssh.listen_port": "Port dengar",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "Domain server SSH",
+ "admin.config.ssh.use_builtin_server": "Gunakan server bawaan",
+ "admin.config.ssh.enabled": "Aktif",
+ "admin.config.ssh.header": "Konfigurasi SSH",
+ "admin.users.never_login": "Belum pernah masuk",
+ "admin.users.last_login": "Masuk terakhir",
+ "admin.users.created": "Dibuat",
+ "admin.users.repos": "Repo",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Jarak jauh",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Dicadangkan",
+ "admin.users.restricted": "Dibatasi",
+ "admin.users.admin": "Pengelola",
+ "admin.users.activated": "Diaktifkan",
+ "admin.users.full_name": "Nama lengkap",
+ "admin.users.name": "Nama pengguna",
+ "admin.packages.published": "Diterbitkan",
+ "admin.packages.size": "Ukuran",
+ "admin.packages.repository": "Repositori",
+ "admin.packages.type": "Jenis",
+ "admin.packages.version": "Versi",
+ "admin.packages.name": "Nama",
+ "admin.packages.creator": "Pembuat",
+ "admin.packages.owner": "Pemilik",
+ "admin.packages.unreferenced_size": "Ukuran yang tidak direferensikan: %s",
+ "admin.packages.total_size": "Total ukuran: %s",
+ "admin.repos.lfs_size": "Ukuran LFS",
+ "admin.repos.size": "Ukuran",
+ "admin.repos.issues": "Masalah",
+ "admin.repos.name": "Nama",
+ "admin.repos.owner": "Pemilik",
+ "admin.orgs.new_orga": "Organisasi baru",
+ "admin.orgs.members": "Anggota",
+ "admin.orgs.teams": "Tim",
+ "admin.orgs.name": "Nama",
+ "admin.dashboard.rebuild_issue_indexer": "Bangun ulang pengindeks isu",
+ "admin.dashboard.start_schedule_tasks": "Mulai tugas aksi terjadwal",
+ "admin.dashboard.cancel_abandoned_jobs": "Batalkan pekerjaan aksi yang terbengkalai",
+ "admin.dashboard.stop_endless_tasks": "Hentikan tugas aksi yang tidak berakhir",
+ "admin.dashboard.stop_zombie_tasks": "Hentikan tugas aksi yang terhenti",
+ "admin.dashboard.gc_lfs": "Lakukan pengumpulan sampah pada objek meta LFS",
+ "admin.dashboard.delete_old_system_notices": "Hapus semua pemberitahuan sistem lama dari basis data",
+ "admin.dashboard.update_checker": "Pemeriksa pembaruan",
+ "admin.dashboard.cleanup_actions": "Bersihkan log dan artefak yang kedaluwarsa dari aksi",
+ "admin.dashboard.cleanup_packages": "Bersihkan paket yang kedaluwarsa",
+ "admin.dashboard.cleanup_hook_task_table": "Bersihkan tabel hook_task",
+ "admin.dashboard.sync_external_users": "Sinkronkan data pengguna eksternal",
+ "admin.dashboard.reinit_missing_repos": "Menginstal kembali semua repositori Git yang hilang dimana ada catatan",
+ "admin.dashboard.resync_all_hooks": "Sinkronkan ulang hook Git dari semua repositori (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Perbarui file \".ssh/authorized_principals\" dengan prinsipal SSH Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Perbarui file \".ssh/authorized_keys\" dengan kunci SSH Forgejo.",
+ "admin.dashboard.git_gc_repos": "Lakukan pengumpulan sampah pada semua repositori",
+ "admin.dashboard.update_migration_poster_id": "Perbarui ID pembuat migrasi",
+ "admin.dashboard.deleted_branches_cleanup": "Bersihkan cabang yang dihapus",
+ "admin.dashboard.archive_cleanup": "Hapus arsip repositori lama",
+ "admin.dashboard.check_repo_stats": "Periksa semua statistik repositori",
+ "admin.dashboard.repo_health_check": "Periksa kesehatan semua repositori",
+ "admin.dashboard.update_mirrors": "Perbarui cermin",
+ "admin.dashboard.sync_repo_tags": "Sinkronkan tag dari data Git ke basis data",
+ "admin.dashboard.sync_repo_branches": "Sinkronkan cabang yang terlewat dari data Git ke basis data",
+ "admin.dashboard.delete_generated_repository_avatars": "Hapus avatar repositori yang dihasilkan secara otomatis",
+ "admin.dashboard.sync_tag.started": "Sinkronisasi tag dimulai",
+ "admin.dashboard.sync_branch.started": "Sinkronisasi cabang dimulai",
+ "admin.dashboard.delete_old_actions.started": "Hapus semua aktivitas lama dari basis data dimulai.",
+ "admin.dashboard.delete_missing_repos.started": "Tugas hapus semua repositori yang file Git-nya hilang dimulai.",
+ "admin.dashboard.delete_repo_archives.started": "Tugas hapus semua arsip repositori dimulai.",
+ "admin.dashboard.delete_inactive_accounts.started": "Tugas hapus semua akun yang belum diaktifkan dimulai.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s telah selesai",
+ "admin.dashboard.cron.error": "Kesalahan dalam Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s dibatalkan: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron Dimulai: %[1]s",
+ "admin.dashboard.task.unknown": "Tugas tidak dikenal: %[1]s",
+ "admin.dashboard.task.finished": "Tugas: %[1]s yang dimulai oleh %[2]s telah selesai",
+ "admin.dashboard.task.error": "Kesalahan dalam Tugas: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Tugas: %[1]s dibatalkan: %[3]s",
+ "admin.dashboard.task.process": "Tugas: %[1]s",
+ "admin.dashboard.task.started": "Tugas Dimulai: %[1]s",
+ "admin.dashboard.operation_run": "Lari",
+ "admin.dashboard.operation_switch": "Beralih",
+ "admin.dashboard.operation_name": "Nama operasi",
+ "admin.dashboard.system_status": "Status sistem",
+ "admin.dashboard.operations": "Operasi pemeliharaan",
+ "admin.dashboard.statistic": "Ringkasan",
+ "admin.dashboard.new_version_hint": "Forgejo %s kini tersedia, Anda menjalankan %s. Periksa blog untuk detail selengkapnya.",
"admin.monitor.queue.settings.remove_all_items.success": "Semua item dalam antrian telah dihapus.",
"admin.monitor.queue.settings.remove_all_items": "Hapus semua",
"admin.monitor.queue.settings.changed": "Pengaturan diperbarui",
diff --git a/options/locale_next/locale_is-IS.json b/options/locale_next/locale_is-IS.json
index fceede90e6..cf31471ff2 100644
--- a/options/locale_next/locale_is-IS.json
+++ b/options/locale_next/locale_is-IS.json
@@ -1,4 +1,42 @@
{
+ "admin.config.db.path": "Slóð",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Uppdráttur",
+ "admin.config.db.user": "Notandanafn",
+ "admin.config.db.name": "Heiti",
+ "admin.config.db.host": "Hýsill",
+ "admin.config.db.type": "Tegund",
+ "admin.config.mailer.user": "Notandi",
+ "admin.config.mailer.smtp.port": "SMTP Gátt",
+ "admin.config.mailer.name": "Heiti",
+ "admin.config.git.version": "Útgáfa Git",
+ "admin.config.ssh.root_path": "Grunnsslóð",
+ "admin.config.ssh.listen_port": "Hlustunargátt",
+ "admin.config.ssh.port": "Gátt",
+ "admin.users.created": "Búið til",
+ "admin.users.repos": "Söfn",
+ "admin.users.2fa": "Tvíþætt auðkenning",
+ "admin.users.admin": "Stjórnandi",
+ "admin.users.full_name": "Fullt Nafn",
+ "admin.users.name": "Notandanafn",
+ "admin.packages.size": "Stærð",
+ "admin.packages.repository": "Hugbúnaðarsafn",
+ "admin.packages.type": "Tegund",
+ "admin.packages.version": "Útgáfa",
+ "admin.packages.name": "Heiti",
+ "admin.packages.owner": "Eigandi",
+ "admin.packages.total_size": "Heildarstærð: %s",
+ "admin.repos.size": "Stærð",
+ "admin.repos.issues": "Vandamál",
+ "admin.repos.name": "Heiti",
+ "admin.repos.owner": "Eigandi",
+ "admin.orgs.members": "Meðlimar",
+ "admin.orgs.teams": "Lið",
+ "admin.orgs.name": "Heiti",
+ "admin.dashboard.update_mirrors": "Uppfæra Speglanir",
+ "admin.dashboard.operation_run": "Keyra",
+ "admin.dashboard.operation_switch": "Skipta",
+ "admin.dashboard.statistic": "Yfirlit",
"admin.monitor.queue.settings.changed": "Stillingar Uppfærðar",
"admin.monitor.queue.settings.submit": "Uppfæra Stillingar",
"admin.monitor.queue.type": "Tegund",
diff --git a/options/locale_next/locale_it-IT.json b/options/locale_next/locale_it-IT.json
index 0efdd472c6..9889529f9b 100644
--- a/options/locale_next/locale_it-IT.json
+++ b/options/locale_next/locale_it-IT.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Percorso",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.user": "Nome utente",
+ "admin.config.db.name": "Nome",
+ "admin.config.db.host": "Host",
+ "admin.config.db.type": "Tipo",
+ "admin.config.db.header": "Configurazione base di dati",
+ "admin.config.mailer.user": "Utente",
+ "admin.config.mailer.smtp.port": "Porta SMTP",
+ "admin.config.mailer.smtp.addr": "Indirizzo SMTP",
+ "admin.config.mailer.enable_helo": "Abilita HELO",
+ "admin.config.mailer.protocol": "Protocollo",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Timeout Sendmail",
+ "admin.config.mailer.sendmail.args": "Argomenti aggiuntivi per Sendmail",
+ "admin.config.mailer.sendmail.path": "Percorso Sendmail",
+ "admin.config.mailer.sendmail.use": "Utilizza Sendmail",
+ "admin.config.mailer.name": "Nome",
+ "admin.config.mailer.enabled": "Attivo",
+ "admin.config.mailer.header": "Configurazione Mailer",
+ "admin.config.git.gc_timeout": "Timeout operazione GC",
+ "admin.config.git.pull_timeout": "Tempo limite operazione di prelievo",
+ "admin.config.git.clone_timeout": "Tempo limite operazione di clone",
+ "admin.config.git.mirror_timeout": "Timeout per l'aggiornamento dello specchio",
+ "admin.config.git.migrate_timeout": "Timeout per la migrazione",
+ "admin.config.git.gc_args": "Parametri GC",
+ "admin.config.git.diff.max_files": "Numero massimo di file differenze mostrati",
+ "admin.config.git.diff.max_line_characters": "Numero massimo di caratteri delle differenze (per singola riga)",
+ "admin.config.git.diff.max_lines": "Numero massimo di righe delle differenze (per singolo file)",
+ "admin.config.git.disable_diff_highlight": "Disattiva sintassi evidenziate per le differenze",
+ "admin.config.git.version": "Versione Git",
+ "admin.config.git.header": "Configurazione Git",
+ "admin.config.ssh.minimum_key_sizes": "Dimensioni minime della chiave",
+ "admin.config.ssh.minimum_key_size_check": "Verifica delle dimensioni minime della chiave",
+ "admin.config.ssh.keygen_path": "Percorso keygen (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Percorso chiave di test",
+ "admin.config.ssh.root_path": "Percorso radice",
+ "admin.config.ssh.listen_port": "Porta in ascolto",
+ "admin.config.ssh.port": "Porta",
+ "admin.config.ssh.domain": "Dominio server SSH",
+ "admin.config.ssh.use_builtin_server": "Usa il server incorporato",
+ "admin.config.ssh.enabled": "Attivo",
+ "admin.config.ssh.header": "Configurazione SSH",
+ "admin.users.never_login": "Mai effettuato l'accesso",
+ "admin.users.last_login": "Ultimo accesso",
+ "admin.users.created": "Creato",
+ "admin.users.repos": "Repo",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Remoto",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Riservato",
+ "admin.users.restricted": "Limitato",
+ "admin.users.admin": "Amministratore",
+ "admin.users.activated": "Attivato",
+ "admin.users.full_name": "Nome completo",
+ "admin.users.name": "Nome utente",
+ "admin.packages.published": "Pubblicata",
+ "admin.packages.size": "Dimensione",
+ "admin.packages.repository": "Repository",
+ "admin.packages.type": "Tipo",
+ "admin.packages.version": "Versione",
+ "admin.packages.name": "Nome",
+ "admin.packages.creator": "Creatore",
+ "admin.packages.owner": "Proprietario",
+ "admin.packages.unreferenced_size": "Dimensione senza riferimenti: %s",
+ "admin.packages.total_size": "Dimensione totale: %s",
+ "admin.repos.lfs_size": "Dimensione LFS",
+ "admin.repos.size": "Dimensione",
+ "admin.repos.issues": "Segnalazioni",
+ "admin.repos.name": "Nome",
+ "admin.repos.owner": "Proprietario",
+ "admin.orgs.new_orga": "Nuova organizzazione",
+ "admin.orgs.members": "Membri",
+ "admin.orgs.teams": "Team",
+ "admin.orgs.name": "Nome",
+ "admin.dashboard.rebuild_issue_indexer": "Ricostruzione dell'indicizzatore delle segnalazioni",
+ "admin.dashboard.start_schedule_tasks": "Inizia pianificazione attività",
+ "admin.dashboard.cancel_abandoned_jobs": "Cancella incarichi abbandonati",
+ "admin.dashboard.stop_endless_tasks": "Termina attività senza fine",
+ "admin.dashboard.stop_zombie_tasks": "Termina attività zombie",
+ "admin.dashboard.gc_lfs": "Oggetti meta LFS riciclati",
+ "admin.dashboard.delete_old_system_notices": "Elimina tutte le vecchie notifiche di sistema dal database",
+ "admin.dashboard.update_checker": "Controllore dell'aggiornamento",
+ "admin.dashboard.cleanup_actions": "Pulisci log scaduti e artefatti dalle azioni",
+ "admin.dashboard.cleanup_packages": "Pulizia pacchetti scaduti",
+ "admin.dashboard.cleanup_hook_task_table": "Pulisci tabella hook_task",
+ "admin.dashboard.sync_external_users": "Sincronizza dati utente esterno",
+ "admin.dashboard.reinit_missing_repos": "Reinizializza tutti i repository Git mancanti per i quali esistono cambiamenti registrati esistenti",
+ "admin.dashboard.resync_all_hooks": "Sincronizza nuovamente gli hook di pre-ricezione, di aggiornamento e di post-ricezione di tutti i progetti",
+ "admin.dashboard.resync_all_sshprincipals": "Aggiorna il file \".ssh/authorized_keys\" con le chiavi principali SSH Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Aggiornare il file \".ssh/authorized_keys\" con le chiavi SSH di Forgejo.",
+ "admin.dashboard.git_gc_repos": "Esegui la garbage collection su tutti i repository",
+ "admin.dashboard.update_migration_poster_id": "Aggiorna gli ID del poster di migrazione",
+ "admin.dashboard.deleted_branches_cleanup": "Pulisci i rami eliminati",
+ "admin.dashboard.archive_cleanup": "Elimina vecchi archivi del repository",
+ "admin.dashboard.check_repo_stats": "Controlla tutte le statistiche del repository",
+ "admin.dashboard.repo_health_check": "Controlla integrità di tutti i repository",
+ "admin.dashboard.update_mirrors": "Aggiorna specchi",
+ "admin.dashboard.sync_repo_tags": "Sincronizza tag dai dati Git alla base di dati",
+ "admin.dashboard.sync_repo_branches": "Sincronizza rami omessi dai dati Git nella base di dati",
+ "admin.dashboard.delete_generated_repository_avatars": "Elimina gli avatar generati nelle repository",
+ "admin.dashboard.sync_tag.started": "Sincronizzazione dei tag iniziata",
+ "admin.dashboard.sync_branch.started": "Sincronizzazione dei rami iniziata",
+ "admin.dashboard.delete_old_actions.started": "Elimina tutte le vecchie azioni dal database iniziate.",
+ "admin.dashboard.delete_missing_repos.started": "Elimina tutti i repository mancanti dei loro file Git.",
+ "admin.dashboard.delete_repo_archives.started": "Attività di eliminazione degli archivi del repository iniziata.",
+ "admin.dashboard.delete_inactive_accounts.started": "Attività di eliminazione degli account non attivati iniziata.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s ha finito",
+ "admin.dashboard.cron.error": "Errore in Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s cancellato: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron Avviato: %[1]s",
+ "admin.dashboard.task.unknown": "Attività sconosciuta: %[1]s",
+ "admin.dashboard.task.finished": "Compito: %[1]s iniziato da %[2]s ha finito",
+ "admin.dashboard.task.error": "Errore in Attività: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Attività: %[1]s cancellata: %[3]s",
+ "admin.dashboard.task.process": "Compito: %[1]s",
+ "admin.dashboard.task.started": "Compito iniziato: %[1]s",
+ "admin.dashboard.operation_run": "Esegui",
+ "admin.dashboard.operation_switch": "Cambia",
+ "admin.dashboard.operation_name": "Nome Operazione",
+ "admin.dashboard.system_status": "Stato del sistema",
+ "admin.dashboard.operations": "Operazioni di manutenzione",
+ "admin.dashboard.statistic": "Riepilogo",
+ "admin.dashboard.new_version_hint": "Forgejo %s è ora disponibile; stai eseguendo %s. Controlla il blog per ulteriori dettagli.",
"admin.monitor.queue.settings.remove_all_items.success": "Tutti gli elementi in coda sono stati rimossi.",
"admin.monitor.queue.settings.remove_all_items": "Rimuovi tutto",
"admin.monitor.queue.settings.changed": "Impostazioni aggiornate",
@@ -577,5 +703,16 @@
"repo.issues.filter_poster.hint": "Filtra per autore",
"repo.issues.filter_assignee.hint": "Filtra per utente assegnatə",
"repo.pulls.auto_merge.no_permission": "Non hai i permessi di annullare l'immissione automatica di questa richiesta di modifica.",
- "repo.pulls.poster_manage_approval": "Gestisci approvazione"
+ "repo.pulls.poster_manage_approval": "Gestisci approvazione",
+ "repo.files.filename": "Nome del file",
+ "repo.files.last_commit_message": "Ultimo messaggio di commit",
+ "repo.files.last_commit_date": "Ultima data di commit",
+ "repo.pulls.poster_is_trusted.tooltip": "L'autore di questa richiesta di modifica è esplicitamente autorizzato ad eseguire flussi di lavoro innescati da eventi `pull_request`.",
+ "repo.pulls.poster_trust_deny": "Nega",
+ "repo.pulls.poster_trust_deny.tooltip": "I flussi di lavoro in attesa di approvazione saranno annullati.",
+ "repo.pulls.poster_trust_once": "Approva una volta",
+ "repo.pulls.poster_trust_always": "Approva sempre",
+ "migrate.select.title": "Migra repositorio",
+ "keys.verify.token.hint": "Il token è valido solamente per 1 minuto Ottieni un nuovo token se è scaduto",
+ "admin.federation.federation": "Federazione"
}
diff --git a/options/locale_next/locale_ja-JP.json b/options/locale_next/locale_ja-JP.json
index f462ff4e74..d82f6cdfc9 100644
--- a/options/locale_next/locale_ja-JP.json
+++ b/options/locale_next/locale_ja-JP.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "パス",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "スキーマ",
+ "admin.config.db.user": "ユーザー名",
+ "admin.config.db.name": "データベース名",
+ "admin.config.db.host": "ホスト",
+ "admin.config.db.type": "タイプ",
+ "admin.config.db.header": "データベース設定",
+ "admin.config.mailer.user": "ユーザー",
+ "admin.config.mailer.smtp.port": "SMTPポート",
+ "admin.config.mailer.smtp.addr": "SMTPホスト",
+ "admin.config.mailer.enable_helo": "HELO有効",
+ "admin.config.mailer.protocol": "プロトコル",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Sendmail のタイムアウト",
+ "admin.config.mailer.sendmail.args": "Sendmailの追加引数",
+ "admin.config.mailer.sendmail.path": "Sendmailのパス",
+ "admin.config.mailer.sendmail.use": "Sendmailを使う",
+ "admin.config.mailer.name": "名称",
+ "admin.config.mailer.enabled": "有効",
+ "admin.config.mailer.header": "メーラー設定",
+ "admin.config.git.gc_timeout": "GC操作のタイムアウト",
+ "admin.config.git.pull_timeout": "プル操作のタイムアウト",
+ "admin.config.git.clone_timeout": "クローン操作のタイムアウト",
+ "admin.config.git.mirror_timeout": "ミラー更新タイムアウト",
+ "admin.config.git.migrate_timeout": "移行タイムアウト",
+ "admin.config.git.gc_args": "GC引数",
+ "admin.config.git.diff.max_files": "差分を表示する最大ファイル数",
+ "admin.config.git.diff.max_line_characters": "1行あたりの最大差分文字数",
+ "admin.config.git.diff.max_lines": "ファイルあたりの最大差分行数",
+ "admin.config.git.disable_diff_highlight": "Diffのシンタックスハイライトが無効",
+ "admin.config.git.version": "Gitバージョン",
+ "admin.config.git.header": "Git設定",
+ "admin.config.ssh.minimum_key_sizes": "最小キー長",
+ "admin.config.ssh.minimum_key_size_check": "最小キー長のチェック",
+ "admin.config.ssh.keygen_path": "キージェネレータ(\"ssh-keygen\")パス",
+ "admin.config.ssh.key_test_path": "キーテストパス",
+ "admin.config.ssh.root_path": "ルートパス",
+ "admin.config.ssh.listen_port": "待受ポート",
+ "admin.config.ssh.port": "ポート",
+ "admin.config.ssh.domain": "SSHサーバーのドメイン",
+ "admin.config.ssh.use_builtin_server": "ビルトインサーバーを使用",
+ "admin.config.ssh.enabled": "有効",
+ "admin.config.ssh.header": "SSH設定",
+ "admin.users.never_login": "未サインイン",
+ "admin.users.last_login": "前回のサインイン",
+ "admin.users.created": "作成日",
+ "admin.users.repos": "リポジトリ",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "リモート",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "予約済み",
+ "admin.users.restricted": "制限あり",
+ "admin.users.admin": "管理者",
+ "admin.users.activated": "アクティベート済み",
+ "admin.users.full_name": "フルネーム",
+ "admin.users.name": "ユーザー名",
+ "admin.packages.published": "配布",
+ "admin.packages.size": "サイズ",
+ "admin.packages.repository": "リポジトリ",
+ "admin.packages.type": "タイプ",
+ "admin.packages.version": "バージョン",
+ "admin.packages.name": "名前",
+ "admin.packages.creator": "作成者",
+ "admin.packages.owner": "オーナー",
+ "admin.packages.unreferenced_size": "非参照サイズ: %s",
+ "admin.packages.total_size": "合計サイズ: %s",
+ "admin.repos.lfs_size": "LFSサイズ",
+ "admin.repos.size": "サイズ",
+ "admin.repos.issues": "イシュー",
+ "admin.repos.name": "名称",
+ "admin.repos.owner": "オーナー",
+ "admin.orgs.new_orga": "新しい組織",
+ "admin.orgs.members": "メンバー",
+ "admin.orgs.teams": "チーム",
+ "admin.orgs.name": "名称",
+ "admin.dashboard.rebuild_issue_indexer": "イシューインデクサーの再構築",
+ "admin.dashboard.start_schedule_tasks": "スケジュールタスクを開始",
+ "admin.dashboard.cancel_abandoned_jobs": "放置されたままのジョブをキャンセル",
+ "admin.dashboard.stop_endless_tasks": "終わらないタスクを停止",
+ "admin.dashboard.stop_zombie_tasks": "ゾンビタスクを停止",
+ "admin.dashboard.gc_lfs": "LFSメタオブジェクトのガベージコレクション",
+ "admin.dashboard.delete_old_system_notices": "データベースから古いシステム通知をすべて削除",
+ "admin.dashboard.update_checker": "更新チェック",
+ "admin.dashboard.cleanup_actions": "Actionsから期限切れのログとアーティファクトのクリーンアップする",
+ "admin.dashboard.cleanup_packages": "期限切れパッケージのクリーンアップ",
+ "admin.dashboard.cleanup_hook_task_table": "hook_taskテーブルのクリーンアップ",
+ "admin.dashboard.sync_external_users": "外部ユーザーデータの同期",
+ "admin.dashboard.reinit_missing_repos": "レコードが存在するが見当たらないすべてのGitリポジトリを再初期化する",
+ "admin.dashboard.resync_all_hooks": "すべてのリポジトリの Git フックを再同期します (pre-receive、update、post-receive、proc-receive、…)",
+ "admin.dashboard.resync_all_sshprincipals": "Forgejo SSH プリンシパルを使用して\".ssh/authorized_principals\"ファイルを更新します。",
+ "admin.dashboard.resync_all_sshkeys": "Forgejo SSH キーを使用して\".ssh/authorized_keys\"ファイルを更新します。",
+ "admin.dashboard.git_gc_repos": "すべてのリポジトリでガベージコレクションを実行",
+ "admin.dashboard.update_migration_poster_id": "移行する投稿者IDの更新",
+ "admin.dashboard.deleted_branches_cleanup": "削除ブランチのクリーンアップ",
+ "admin.dashboard.archive_cleanup": "古いリポジトリアーカイブの削除",
+ "admin.dashboard.check_repo_stats": "全リポジトリの統計情報を更新",
+ "admin.dashboard.repo_health_check": "全リポジトリのヘルスチェック",
+ "admin.dashboard.update_mirrors": "ミラーの更新",
+ "admin.dashboard.sync_repo_tags": "Gitデータからデータベースにタグを同期する",
+ "admin.dashboard.sync_repo_branches": "Gitデータからデータベースへ不足しているブランチを同期",
+ "admin.dashboard.delete_generated_repository_avatars": "自動生成したリポジトリアバターを削除",
+ "admin.dashboard.sync_tag.started": "タグの同期が開始されました",
+ "admin.dashboard.sync_branch.started": "ブランチの同期を開始しました",
+ "admin.dashboard.delete_old_actions.started": "データベースからの古い操作履歴の削除を開始しました。",
+ "admin.dashboard.delete_missing_repos.started": "Gitファイルが存在しないリポジトリをすべて削除するタスクを開始しました。",
+ "admin.dashboard.delete_repo_archives.started": "リポジトリアーカイブをすべて削除するタスクを開始しました。",
+ "admin.dashboard.delete_inactive_accounts.started": "アクティベートされていないアカウントをすべて削除するタスクを開始しました。",
+ "admin.dashboard.cron.finished": "Cron: %[1]s が完了",
+ "admin.dashboard.cron.error": "Cronでエラー: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s をキャンセル: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cronを開始しました: %[1]s",
+ "admin.dashboard.task.unknown": "不明なタスクです: %[1]s",
+ "admin.dashboard.task.finished": "タスク: %[2]s が開始したタスク %[1]s が完了",
+ "admin.dashboard.task.error": "タスクでエラー: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "タスク: %[1]s をキャンセル: %[3]s",
+ "admin.dashboard.task.process": "タスク: %[1]s",
+ "admin.dashboard.task.started": "タスクを開始しました: %[1]s",
+ "admin.dashboard.operation_run": "実行",
+ "admin.dashboard.operation_switch": "切り替え",
+ "admin.dashboard.operation_name": "操作の名称",
+ "admin.dashboard.system_status": "システム状況",
+ "admin.dashboard.operations": "メンテナンス操作",
+ "admin.dashboard.statistic": "サマリー",
+ "admin.dashboard.new_version_hint": "Forgejo %s が入手可能になりました。 現在実行しているのは %s です。 詳細は ブログ を確認してください。",
"admin.monitor.queue.settings.remove_all_items.success": "キュー内のすべての項目を削除しました。",
"admin.monitor.queue.settings.remove_all_items": "すべて削除",
"admin.monitor.queue.settings.changed": "設定を更新しました",
diff --git a/options/locale_next/locale_ka.json b/options/locale_next/locale_ka.json
index bfd0bbf460..1ea4f2954f 100644
--- a/options/locale_next/locale_ka.json
+++ b/options/locale_next/locale_ka.json
@@ -1,4 +1,46 @@
{
+ "admin.config.db.path": "ბილიკი",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "სქემა",
+ "admin.config.db.user": "მომხმარებლის სახელი",
+ "admin.config.db.name": "სახელი",
+ "admin.config.db.host": "ჰოსტი",
+ "admin.config.db.type": "ტიპი",
+ "admin.config.mailer.user": "მომხმარებელი",
+ "admin.config.mailer.protocol": "პროტოკოლი",
+ "admin.config.mailer.use_dummy": "სულელი",
+ "admin.config.mailer.name": "სახელი",
+ "admin.config.mailer.enabled": "ჩართულია",
+ "admin.config.ssh.port": "პორტი",
+ "admin.config.ssh.enabled": "ჩართულია",
+ "admin.users.created": "შეიქმნა",
+ "admin.users.repos": "რეპოები",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "დაშორებული",
+ "admin.users.bot": "ბოტი",
+ "admin.users.reserved": "დაცული",
+ "admin.users.restricted": "შეზღუდული",
+ "admin.users.admin": "ადმინი",
+ "admin.users.activated": "გააქტიურებულია",
+ "admin.users.name": "მომხმარებლის სახელი",
+ "admin.packages.published": "გამოქვეყნებულია",
+ "admin.packages.size": "ზომა",
+ "admin.packages.repository": "რეპოზიტორია",
+ "admin.packages.type": "ტიპი",
+ "admin.packages.version": "ვერსია",
+ "admin.packages.name": "სახელი",
+ "admin.packages.creator": "შემქმნელი",
+ "admin.packages.owner": "მფლობელი",
+ "admin.repos.size": "ზომა",
+ "admin.repos.issues": "პრობლემები",
+ "admin.repos.name": "სახელი",
+ "admin.repos.owner": "მფლობელი",
+ "admin.orgs.members": "წევრები",
+ "admin.orgs.teams": "გუნდები",
+ "admin.orgs.name": "სახელი",
+ "admin.dashboard.operation_run": "გაშვება",
+ "admin.dashboard.operation_switch": "გადართვა",
+ "admin.dashboard.statistic": "შეჯამება",
"admin.monitor.queue.type": "ტიპი",
"admin.monitor.queue.name": "სახელი",
"admin.monitor.queues": "რიგები",
diff --git a/options/locale_next/locale_kab.json b/options/locale_next/locale_kab.json
index 5d874fb42d..0b81732b50 100644
--- a/options/locale_next/locale_kab.json
+++ b/options/locale_next/locale_kab.json
@@ -1,4 +1,40 @@
{
+ "admin.config.db.path": "Abrid",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Azenziɣ",
+ "admin.config.db.user": "Isem n useqdac",
+ "admin.config.db.name": "Isem",
+ "admin.config.db.host": "Asenneftaɣ",
+ "admin.config.db.type": "Anaw",
+ "admin.config.mailer.user": "Aseqdac",
+ "admin.config.mailer.smtp.port": "Tawwurt n SMTP",
+ "admin.config.mailer.protocol": "Aneggaf",
+ "admin.config.mailer.sendmail.use": "Seqdec Sendmail",
+ "admin.config.mailer.name": "Isem",
+ "admin.config.mailer.enabled": "D urmid",
+ "admin.config.git.header": "Tawila n Git",
+ "admin.config.ssh.port": "Tawwurt",
+ "admin.config.ssh.header": "Tawila n SSH",
+ "admin.users.last_login": "Tuqqna taneggarut",
+ "admin.users.2fa": "2FA",
+ "admin.users.admin": "Anedbal",
+ "admin.users.full_name": "Isem ummid",
+ "admin.users.name": "Isem n useqdac",
+ "admin.packages.size": "Tiddi",
+ "admin.packages.repository": "Akufi",
+ "admin.packages.type": "Tawsit",
+ "admin.packages.version": "Lqem",
+ "admin.packages.name": "Isem",
+ "admin.packages.creator": "Asaraw",
+ "admin.packages.owner": "Bab-is",
+ "admin.repos.lfs_size": "Tiddi LFS",
+ "admin.repos.size": "Tiddi",
+ "admin.repos.name": "Isem",
+ "admin.repos.owner": "Bab-is",
+ "admin.orgs.members": "Imttekkiyen",
+ "admin.orgs.teams": "Igrawen",
+ "admin.orgs.name": "Isem",
+ "admin.dashboard.statistic": "Agzul",
"admin.monitor.queue.settings.remove_all_items": "Kkes-iten akk",
"admin.monitor.queue.name": "Isem",
"admin.users.list_status_filter.is_admin": "Anedbal",
diff --git a/options/locale_next/locale_ko-KR.json b/options/locale_next/locale_ko-KR.json
index b6f638bf0f..021c4d0a33 100644
--- a/options/locale_next/locale_ko-KR.json
+++ b/options/locale_next/locale_ko-KR.json
@@ -1,4 +1,68 @@
{
+ "admin.config.db.path": "경로",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.user": "사용자명",
+ "admin.config.db.name": "이름",
+ "admin.config.db.host": "호스트",
+ "admin.config.db.type": "유형",
+ "admin.config.db.header": "데이터베이스 설정",
+ "admin.config.mailer.user": "사용자",
+ "admin.config.mailer.smtp.port": "SMTP 포트",
+ "admin.config.mailer.sendmail.args": "Sendmail 추가 인수",
+ "admin.config.mailer.sendmail.path": "Sendmail 경로",
+ "admin.config.mailer.sendmail.use": "Sendmail 사용",
+ "admin.config.mailer.name": "이름",
+ "admin.config.mailer.enabled": "활성화됨",
+ "admin.config.git.gc_timeout": "가비지 콜렉션 작업 시간 제한",
+ "admin.config.git.pull_timeout": "끌어오기 작업 시간 제한",
+ "admin.config.git.clone_timeout": "복제 작업 시간 제한",
+ "admin.config.git.mirror_timeout": "미러 업데이트 시간 제한",
+ "admin.config.git.migrate_timeout": "마이그레이션 제한 시간",
+ "admin.config.git.gc_args": "가비지 콜렉션 인수",
+ "admin.config.git.diff.max_files": "변경사항 최대 파일 개 수 (표시 되는)",
+ "admin.config.git.diff.max_line_characters": "변경사항 최대 표시 문자 수 (단일 행에 대해)",
+ "admin.config.git.diff.max_lines": "변경사항 최대 표시 줄 수 (단일 파일에 대해)",
+ "admin.config.git.disable_diff_highlight": "변경 사항 구문 강조 비활성화",
+ "admin.config.git.version": "Git 버전",
+ "admin.config.git.header": "깃 설정",
+ "admin.config.ssh.minimum_key_sizes": "최소 키 사이즈",
+ "admin.config.ssh.minimum_key_size_check": "최소 키 사이즈 검사",
+ "admin.config.ssh.keygen_path": "키 생성 ('ssh-keygen') 경로",
+ "admin.config.ssh.key_test_path": "주 테스트 경로",
+ "admin.config.ssh.root_path": "최상위 경로",
+ "admin.config.ssh.listen_port": "수신 대기 포트",
+ "admin.config.ssh.port": "포트",
+ "admin.config.ssh.use_builtin_server": "내장 서버 사용",
+ "admin.config.ssh.enabled": "활성화됨",
+ "admin.config.ssh.header": "SSH 설정",
+ "admin.users.never_login": "로그인 한 적이 없음",
+ "admin.users.last_login": "마지막 로그인",
+ "admin.users.created": "작성일",
+ "admin.users.repos": "저장소",
+ "admin.users.admin": "관리자",
+ "admin.users.activated": "활성화됨",
+ "admin.users.full_name": "성명",
+ "admin.users.name": "사용자명",
+ "admin.packages.size": "크기",
+ "admin.packages.repository": "저장소",
+ "admin.packages.type": "유형",
+ "admin.packages.name": "이름",
+ "admin.packages.owner": "소유자",
+ "admin.repos.size": "크기",
+ "admin.repos.issues": "이슈",
+ "admin.repos.name": "이름",
+ "admin.repos.owner": "소유자",
+ "admin.orgs.new_orga": "새 조직",
+ "admin.orgs.members": "멤버",
+ "admin.orgs.teams": "팀",
+ "admin.orgs.name": "이름",
+ "admin.dashboard.sync_external_users": "외부 사용자 데이터 동기화",
+ "admin.dashboard.git_gc_repos": "모든 저장소 가비지 콜렉트",
+ "admin.dashboard.operation_run": "실행",
+ "admin.dashboard.operation_switch": "스위치",
+ "admin.dashboard.operation_name": "작업 명",
+ "admin.dashboard.system_status": "시스템 상태",
+ "admin.dashboard.statistic": "요약",
"admin.monitor.queue.settings.submit": "설정 업데이트",
"admin.monitor.queue.type": "유형",
"admin.monitor.queue.name": "이름",
diff --git a/options/locale_next/locale_lt.json b/options/locale_next/locale_lt.json
index a60c96a4ae..8dabafb7c7 100644
--- a/options/locale_next/locale_lt.json
+++ b/options/locale_next/locale_lt.json
@@ -13,5 +13,140 @@
"webauthn.sign_in": "Paspauskite saugumo rakto mygtuką. Jei saugumo raktas neturi mygtuko, įkiškite jį iš naujo.",
"webauthn.insert_key": "Įkiškite savo saugumo raktą",
"search.milestone_kind": "Ieškoti gairių...",
- "meta.last_line": " "
+ "meta.last_line": " ",
+ "home.welcome.no_activity": "Jokios veiklos",
+ "home.welcome.activity_hint": "Jūsų naujienų sraute kol nėra jokio turinio. Čia bus rodomi jūsų veiksmai ir veikla repozitorijuose, kuriuos stebite.",
+ "home.explore_repos": "Tyrinėti saugyklas",
+ "home.explore_users": "Tyrinėti vartotojus",
+ "home.explore_orgs": "Tyrinėti organizacijas",
+ "fork.n_forks": {
+ "one": "%s forkas",
+ "few": "%s forkai",
+ "other": "%s forkų"
+ },
+ "stars.list.none": "Niekas nepažymėjo šios saugyklos žvaigždute.",
+ "watch.list.none": "Niekas nesekia šios saugyklos.",
+ "followers.incoming.list.self.none": "Niekas nesekia tavo profilio.",
+ "followers.incoming.list.none": "Niekas nesekia šio vartotojo.",
+ "followers.outgoing.list.self.none": "Nesekai nieko.",
+ "followers.outgoing.list.none": "%s nieko neseka.",
+ "relativetime.now": "dabar",
+ "relativetime.future": "ateityje",
+ "relativetime.mins": {
+ "one": "prieš %d minutę",
+ "few": "prieš %d minutes",
+ "other": "prieš %d minučių"
+ },
+ "relativetime.hours": {
+ "one": "prieš %d valandą",
+ "few": "prieš %d valandas",
+ "other": "prieš %d valandų"
+ },
+ "stars.n_stars": {
+ "one": "%s žvaigždė",
+ "few": "%s žvaigždės",
+ "other": "%s žvaigždžių"
+ },
+ "watch.n_watchers": {
+ "one": "%s stebėtojas",
+ "few": "%s stebėtojai",
+ "other": "%s stebėtojų"
+ },
+ "themes.names.forgejo-auto": "Forgejo (sekti sistemos temą)",
+ "error.not_found.title": "Puslapis nerastas",
+ "alert.asset_load_failed": "Nepavyko įkelti išteklių failų iš {path}. Įsitikinkite, kad išteklių failai yra pasiekiami.",
+ "install.invalid_lfs_path": "Nepavyko sukurti LFS šakninio katalogo nurodytame kelyje: %[1]s",
+ "mail.actions.successful_run_after_failure_subject": "Darbo eiga %[1]s atkurta saugykloje %[2]s",
+ "mail.actions.not_successful_run_subject": "Darbo eiga %[1]s nepavyko saugykloje %[2]s",
+ "mail.actions.successful_run_after_failure": "Darbo eiga %[1]s atkurta saugykloje %[2]s",
+ "mail.actions.not_successful_run": "Darbo eiga %[1]s nepavyko saugykloje %[2]s",
+ "mail.actions.run_info_cur_status": "Šio vykdymo būsena: %[1]s (ką tik atnaujinta iš %[2]s)",
+ "mail.actions.run_info_previous_status": "Ankstesnio vykdymo būsena: %[1]s",
+ "mail.actions.run_info_trigger": "Paleista dėl: %[1]s, autorius: %[2]s",
+ "discussion.locked": "Ši diskusija buvo užrakinta. Komentuoti gali tik prisidėję naudotojai.",
+ "relativetime.days": {
+ "one": "prieš %d dieną",
+ "few": "prieš %d dienas",
+ "other": "prieš %d dienų"
+ },
+ "relativetime.weeks": {
+ "one": "prieš %d savaitę",
+ "few": "prieš %d savaites",
+ "other": "prieš %d savaičių"
+ },
+ "relativetime.months": {
+ "one": "prieš %d mėnesį",
+ "few": "prieš %d mėnesius",
+ "other": "prieš %d mėnesių"
+ },
+ "relativetime.years": {
+ "one": "prieš %d metus",
+ "few": "prieš %d metus",
+ "other": "prieš %d metų"
+ },
+ "relativetime.1day": "vakar",
+ "relativetime.1week": "praėjusią savaitę",
+ "relativetime.1month": "praėjusį mėnesį",
+ "relativetime.1year": "praėjusiais metais",
+ "repo.files.caption": "Saugyklos failai (naujausias įsipareigojimas pirmiausia)",
+ "repo.files.filename": "Failo pavadinimas",
+ "repo.files.last_commit_message": "Naujausia įsipareigojimo žinutė",
+ "repo.files.last_commit_date": "Naujausio įsipareigojimo data",
+ "repo.issues.filter_poster.hint": "Filtruoti pagal autorių",
+ "repo.issues.filter_assignee.hint": "Filtruoti pagal priskirtą naudotoją",
+ "repo.issues.filter_reviewers.hint": "Filtruoti pagal peržiūrėjusį naudotoją",
+ "repo.issues.filter_mention.hint": "Filtruoti pagal paminėtą naudotoją",
+ "repo.issues.filter_modified.hint": "Filtruoti pagal paskutinio pakeitimo datą",
+ "repo.issues.filter_sort.hint_with_placeholder": "Rikiuoti pagal: %s",
+ "issues.updated": "atnaujinta %s",
+ "issues.filters.labels.exclude": "Neįtraukti žymos",
+ "issues.filters.labels.unexclude": "Išvalyti išskyrimą",
+ "repo.pulls.auto_merge.no_permission": "Neturite teisės atšaukti šios traukimo užklausos automatinio sujungimo.",
+ "repo.pulls.poster_manage_approval": "Tvarkyti patvirtinimą",
+ "repo.pulls.poster_requires_approval": "Kai kurios darbo eigos laukia peržiūros.",
+ "repo.pulls.poster_requires_approval.tooltip": "Šios traukimo užklausos autorius nėra laikomas patikimu vykdyti darbo eigas, kurios paleidžiamos traukimo užklausomis iš išsišakojusios saugyklos arba naudojant AGit. Darbo eigos, paleidžiamos pull_request įvykiu, nebus vykdomos, kol nebus patvirtintos.",
+ "repo.pulls.poster_is_trusted": "Šios traukimo užklausos autorius visada laikomas patikimu vykdyti darbo eigas.",
+ "repo.pulls.poster_is_trusted.tooltip": "Šios traukimo užklausos autorius yra aiškiai laikomas patikimu vykdyti darbo eigas, paleidžiamas `pull_request` įvykiais.",
+ "repo.pulls.poster_trust_deny": "Atmesti",
+ "repo.pulls.poster_trust_deny.tooltip": "Darbo eigos, laukiančios patvirtinimo, bus atšauktos.",
+ "repo.pulls.poster_trust_once": "Patvirtinti vieną kartą",
+ "repo.pulls.poster_trust_once.tooltip": "Darbo eigos, paleistos `pull_request` įvykiu, bus vykdomos šiam įsipareigojimui, tačiau visiems būsimiems į šią traukimo užklausą įkeltiems įsipareigojimams reikės patvirtinimo.",
+ "repo.pulls.poster_trust_always": "Visada patvirtinti",
+ "repo.pulls.poster_trust_always.tooltip": "Darbo eigos, paleistos `pull_request` įvykiu, bus vykdomos šiam įsipareigojimui, ir nereikės tvirtinti vykdymų iš šios ar būsimų to paties naudotojo sukurtų traukimo užklausų.",
+ "repo.pulls.poster_trust_revoke": "Atšaukti",
+ "repo.pulls.poster_trust_revoke.tooltip": "Šios traukimo užklausos autorius nebebus laikomas patikimu vykdyti darbo eigas, paleidžiamas `pull_request` įvykiu — kiekvieną vykdymą reikės patvirtinti rankiniu būdu.",
+ "repo.pulls.already_merged": "Sujungti nepavyko: ši traukimo užklausa jau buvo sujungta.",
+ "repo.pulls.merged_title_desc": {
+ "one": "sujungtas %[1]d įsipareigojimas iš %[2]s į%[3]s %[4]s",
+ "few": "sujungti %[1]d įsipareigojimai iš %[2]s į%[3]s %[4]s",
+ "other": "sujungta %[1]d įsipareigojimų iš %[2]s į%[3]s %[4]s"
+ },
+ "incorrect_root_url": "Ši „Forgejo“ instancija sukonfigūruota veikti adresu „%s“. Šiuo metu žiūrite „Forgejo“ per kitą URL adresą, todėl kai kurios programos dalys gali veikti netinkamai. Kanoninį URL adresą „Forgejo“ administratoriai nustato naudodami `ROOT_URL` parametrą `app.ini` faile.",
+ "themes.names.forgejo-light": "Forgejo šviesi tema",
+ "themes.names.forgejo-dark": "Forgejo tamsi tema",
+ "admin.config.moderation_config": "Moderavimo konfigūracija",
+ "moderation.report_abuse": "Pranešti apie piktnaudžiavimą",
+ "moderation.report_content": "Pranešti apie turinį",
+ "moderation.report_abuse_form.header": "Pranešti administratoriui apie piktnaudžiavimą",
+ "moderation.report_abuse_form.details": "Ši forma skirta pranešti apie naudotojus, kurie kuria brukalo profilius, saugyklas, problemas, komentarus arba elgiasi netinkamai.",
+ "moderation.report_abuse_form.invalid": "Neteisingi argumentai",
+ "moderation.report_abuse_form.already_reported": "Jūs jau pranešėte apie šį turinį",
+ "moderation.abuse_category": "Kategorija",
+ "moderation.abuse_category.placeholder": "Pasirinkite kategoriją",
+ "moderation.abuse_category.spam": "Brukalas",
+ "moderation.abuse_category.malware": "Kenkėjiška programinė įranga",
+ "moderation.abuse_category.illegal_content": "Neteisėtas turinys",
+ "moderation.abuse_category.other_violations": "Kiti platformos taisyklių pažeidimai",
+ "moderation.report_remarks": "Pastabos",
+ "moderation.report_remarks.placeholder": "Prašome pateikti daugiau informacijos apie piktnaudžiavimą, apie kurį pranešate.",
+ "moderation.submit_report": "Pateikti pranešimą",
+ "moderation.reporting_failed": "Nepavyko pateikti naujo pranešimo apie piktnaudžiavimą: %v",
+ "moderation.reported_thank_you": "Dėkojame už jūsų pranešimą. Administracija buvo apie jį informuota.",
+ "repo.form.cannot_create": "Visos erdvės, kuriose galite kurti saugyklas, pasiekė saugyklų limitą.",
+ "repo.issue_indexer.title": "Problemų indeksuotojas",
+ "editor.textarea.tab_hint": "Eilutė jau įtraukta. Paspauskite Tab dar kartą arba Escape, kad išeitumėte iš redaktoriaus.",
+ "editor.textarea.shift_tab_hint": "Ši eilutė neturi įtraukos. Paspauskite Shift + Tab dar kartą arba Escape, kad išeitumėte iš redaktoriaus.",
+ "admin.dashboard.cleanup_offline_runners": "Išvalyti neprisijungusius vykdytojus",
+ "settings.visibility.description": "Profilio matomumas turi įtakos kitų galimybei pasiekti jūsų ne privačias saugyklas. Sužinokite daugiau.",
+ "avatar.constraints_hint": "Pasirinktinis avataras negali viršyti %[1]s dydžio arba būti didesnis nei %[2]dx%[3]d pikselių"
}
diff --git a/options/locale_next/locale_lv-LV.json b/options/locale_next/locale_lv-LV.json
index 066ecfaea4..dd8dfe5774 100644
--- a/options/locale_next/locale_lv-LV.json
+++ b/options/locale_next/locale_lv-LV.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Ceļš",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Shēma",
+ "admin.config.db.user": "Lietotājvārds",
+ "admin.config.db.name": "Nosaukums",
+ "admin.config.db.host": "Resursdators",
+ "admin.config.db.type": "Veids",
+ "admin.config.db.header": "Datubāzes konfigurācija",
+ "admin.config.mailer.user": "Lietotājs",
+ "admin.config.mailer.smtp.port": "SMTP ports",
+ "admin.config.mailer.smtp.addr": "SMTP saimniekdators",
+ "admin.config.mailer.enable_helo": "Iespējot HELO",
+ "admin.config.mailer.protocol": "Protokols",
+ "admin.config.mailer.use_dummy": "Tukšs",
+ "admin.config.mailer.sendmail.timeout": "Sendmail noildze",
+ "admin.config.mailer.sendmail.args": "Papildu Sendmail argumenti",
+ "admin.config.mailer.sendmail.path": "Sendmail ceļš",
+ "admin.config.mailer.sendmail.use": "Izmantot Sendmail",
+ "admin.config.mailer.name": "Nosaukums",
+ "admin.config.mailer.enabled": "Iespējota",
+ "admin.config.mailer.header": "Pasta sūtītāja konfigurācija",
+ "admin.config.git.gc_timeout": "GC darbības noildze",
+ "admin.config.git.pull_timeout": "Atgādāšanas darbības noildze",
+ "admin.config.git.clone_timeout": "Klonēšanas darbības noildze",
+ "admin.config.git.mirror_timeout": "Spoguļglabātavas atjaunināšanas noildze",
+ "admin.config.git.migrate_timeout": "Pārcelšanas noildze",
+ "admin.config.git.gc_args": "GC argumenti",
+ "admin.config.git.diff.max_files": "Lielākais parādāmo salīdzināmo datņu skaits",
+ "admin.config.git.diff.max_line_characters": "Lielākais rindas salīdzināmo rakstzīmju skaits",
+ "admin.config.git.diff.max_lines": "Lielākais salīdzināmo rindu skaits datnē",
+ "admin.config.git.disable_diff_highlight": "Atspējot salīdzināšanas sintakses iekrāsošanu",
+ "admin.config.git.version": "Git versija",
+ "admin.config.git.header": "Git konfigurācija",
+ "admin.config.ssh.minimum_key_sizes": "Mazākie pieļaujamie atslēgu lielumi",
+ "admin.config.ssh.minimum_key_size_check": "Mazākā pieļaujamā atslēgas lieluma pārbaude",
+ "admin.config.ssh.keygen_path": "Keygen (\"ssh-keygen\") atrašanās vieta",
+ "admin.config.ssh.key_test_path": "Atslēgu pārbaudes ceļš",
+ "admin.config.ssh.root_path": "Atrašanās vieta",
+ "admin.config.ssh.listen_port": "Klausīšanās ports",
+ "admin.config.ssh.port": "Ports",
+ "admin.config.ssh.domain": "SSH servera domēna vārds",
+ "admin.config.ssh.use_builtin_server": "Izmantot iebūvēto serveri",
+ "admin.config.ssh.enabled": "Iespējots",
+ "admin.config.ssh.header": "SSH konfigurācija",
+ "admin.users.never_login": "Pieteikšanās nekad nav notikusi",
+ "admin.users.last_login": "Pēdējā pieteikšanās",
+ "admin.users.created": "Izveidots",
+ "admin.users.repos": "Glabātavas",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Attāls",
+ "admin.users.bot": "Robotprogrammatūra",
+ "admin.users.reserved": "Aizņemts",
+ "admin.users.restricted": "Ierobežots",
+ "admin.users.admin": "Pārvaldītājs",
+ "admin.users.activated": "Aktivēts",
+ "admin.users.full_name": "Pilns vārds",
+ "admin.users.name": "Lietotājvārds",
+ "admin.packages.published": "Laista klajā",
+ "admin.packages.size": "Izmērs",
+ "admin.packages.repository": "Glabātava",
+ "admin.packages.type": "Veids",
+ "admin.packages.version": "Versija",
+ "admin.packages.name": "Nosaukums",
+ "admin.packages.creator": "Izveidotājs",
+ "admin.packages.owner": "Īpašnieks",
+ "admin.packages.unreferenced_size": "Lielums bez atsauces: %s",
+ "admin.packages.total_size": "Kopējais lielums: %s",
+ "admin.repos.lfs_size": "LFS lielums",
+ "admin.repos.size": "Izmērs",
+ "admin.repos.issues": "Pieteikumi",
+ "admin.repos.name": "Nosaukums",
+ "admin.repos.owner": "Īpašnieks",
+ "admin.orgs.new_orga": "Jauna apvienība",
+ "admin.orgs.members": "Dalībnieki",
+ "admin.orgs.teams": "Komandas",
+ "admin.orgs.name": "Nosaukums",
+ "admin.dashboard.rebuild_issue_indexer": "Pārbūvēt pieteikumu indeksētāju",
+ "admin.dashboard.start_schedule_tasks": "Uzsākt paredzētos darbību uzdevumus",
+ "admin.dashboard.cancel_abandoned_jobs": "Atcelt pamestus darbību darbus",
+ "admin.dashboard.stop_endless_tasks": "Apturēt bezgalīgus darbību uzdevumus",
+ "admin.dashboard.stop_zombie_tasks": "Apturēt darbību zombijuzdevumus",
+ "admin.dashboard.gc_lfs": "Veikt atkritumu uzkopšanas darbus LFS meta objektiem",
+ "admin.dashboard.delete_old_system_notices": "Dzēst vecos sistēmas paziņojumus no datubāzes",
+ "admin.dashboard.update_checker": "Atjauninājumu pārbaudītājs",
+ "admin.dashboard.cleanup_actions": "Notīrīt darbību izbeigušos žurnālus un artefaktus",
+ "admin.dashboard.cleanup_packages": "Notīrīt novecojušās pakotnes",
+ "admin.dashboard.cleanup_hook_task_table": "Iztīrīt tabulu hook_task",
+ "admin.dashboard.sync_external_users": "Sinhronizēt ārējo lietotāju datus",
+ "admin.dashboard.reinit_missing_repos": "Atkārtoti sāknēt visas trūkstošās Git glabātavas, par kurām ir ieraksti",
+ "admin.dashboard.resync_all_hooks": "Atkārtoti sinhronizēt visu glabātavau Git aizķeres (`pre-receive`, `update`, `post-receive`, `proc-receive`, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Atjaunināt datni \".ssh/authorized_principals\" ar Forgejo SSH identitātēm.",
+ "admin.dashboard.resync_all_sshkeys": "Atjaunināt datni \".ssh/authorized_keys\" ar Forgejo SSH atslēgām.",
+ "admin.dashboard.git_gc_repos": "Veikt drazu savākšanu visās glabātavās",
+ "admin.dashboard.update_migration_poster_id": "Atjaunināt pārcelšanas ierosinātāja identifikatorus",
+ "admin.dashboard.deleted_branches_cleanup": "Notīrīt izdzēstos zarus",
+ "admin.dashboard.archive_cleanup": "Izdzēst vecos glabātavu arhīvus",
+ "admin.dashboard.check_repo_stats": "Pārbaudīt visu glabātavas apkopojumu",
+ "admin.dashboard.repo_health_check": "Pārbaudīt visu glabātavu darbspēju",
+ "admin.dashboard.update_mirrors": "Atjaunināt spoguļglabātavas",
+ "admin.dashboard.sync_repo_tags": "Datubāzē sinhronizēt birkas no Git datiem",
+ "admin.dashboard.sync_repo_branches": "Sinhronizēšana datubāzēs izlaida zarus no Git datiem",
+ "admin.dashboard.delete_generated_repository_avatars": "Izdzēst izveidotos glabātavu attēlus",
+ "admin.dashboard.sync_tag.started": "Uzsākta birku sinhronizēšana",
+ "admin.dashboard.sync_branch.started": "Uzsākta zaru sinhronizēšana",
+ "admin.dashboard.delete_old_actions.started": "Uzsākta visu novecojušo darbību izdzēšana no datubāzes.",
+ "admin.dashboard.delete_missing_repos.started": "Uzsākts uzdevums visu glabātavu, kurām trūkst Git datņu, izdzēšanai.",
+ "admin.dashboard.delete_repo_archives.started": "Visu glabātavas arhīvu izdzēšanas uzdevums ir uzsākts.",
+ "admin.dashboard.delete_inactive_accounts.started": "Ir uzsākts visu neaktivēto kontu izdzēšanas uzdevums.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s pabeigts",
+ "admin.dashboard.cron.error": "Cron kļūda: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s atcelts: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Uzsākts Cron: %[1]s",
+ "admin.dashboard.task.unknown": "Nezināms uzdevums: %[1]s",
+ "admin.dashboard.task.finished": "Uzdevums: %[1]s, ko iniciēja %[2]s ir izpildīts",
+ "admin.dashboard.task.error": "Kļūda uzdevuma izpildē: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Uzdevums: %[1]s atcelts: %[3]s",
+ "admin.dashboard.task.process": "Uzdevums: %[1]s",
+ "admin.dashboard.task.started": "Uzsākts uzdevums: %[1]s",
+ "admin.dashboard.operation_run": "Palaist",
+ "admin.dashboard.operation_switch": "Pārslēgt",
+ "admin.dashboard.operation_name": "Darbības nosaukums",
+ "admin.dashboard.system_status": "Sistēmas stāvoklis",
+ "admin.dashboard.operations": "Uzturēšanas darbības",
+ "admin.dashboard.statistic": "Kopsavilkums",
+ "admin.dashboard.new_version_hint": "Ir pieejama Forgejo %s, pašlaik darbojas %s. Vairāk informācijas ir atrodama emuārā.",
"admin.monitor.queue.settings.remove_all_items.success": "Visi rindsaraksta vienumi tika noņemti.",
"admin.monitor.queue.settings.remove_all_items": "Noņemt visus",
"admin.monitor.queue.settings.changed": "Iestatījumi atjaunināti",
diff --git a/options/locale_next/locale_ml-IN.json b/options/locale_next/locale_ml-IN.json
index c960db3be9..76f174ecd1 100644
--- a/options/locale_next/locale_ml-IN.json
+++ b/options/locale_next/locale_ml-IN.json
@@ -1,4 +1,5 @@
{
+ "admin.repos.issues": "ഇഷ്യൂകള്",
"migrate.items.label": "മൈഗ്രേഷൻ ഇനങ്ങൾ",
"migrate.items.wiki": "വിക്കി",
"migrate.items.milestones": "നാഴികക്കല്ലുകള്",
diff --git a/options/locale_next/locale_nb_NO.json b/options/locale_next/locale_nb_NO.json
index 1cc4caa13c..e00f3678a1 100644
--- a/options/locale_next/locale_nb_NO.json
+++ b/options/locale_next/locale_nb_NO.json
@@ -129,7 +129,7 @@
"repo.issues.filter_mention.hint": "Filtrer etter nevnt bruker",
"repo.issues.filter_modified.hint": "Filtrer etter sist endret dato",
"repo.pulls.poster_manage_approval": "Endre godkjenning",
- "repo.pulls.poster_requires_approval": "Noen workflow venter på å blir anmeldt.",
+ "repo.pulls.poster_requires_approval": "Noen arbeidsflyter venter på å bli vurdert.",
"repo.pulls.poster_requires_approval.tooltip": "Skaperen av denne pull requesten er ikke verifisert til å kjøre workflow som blei kjørt av en pull request skapt i fra en forket repositorie eller med AGit. Workflowene som blei kjørt av `pull_request` event vil ikke kjøre inntil de blir godkjent.",
"repo.pulls.poster_is_trusted": "Skaperen av denne pull requesten er alltid troverdige til å kjøre workflow-er.",
"repo.pulls.poster_is_trusted.tooltip": "Skaperen av denne pull requesten har blitt eksplisitt troverdig til å kjøre workflow-er kjørt av `pull_request` event-er.",
diff --git a/options/locale_next/locale_nds.json b/options/locale_next/locale_nds.json
index 15d3326530..2c86e9ff4c 100644
--- a/options/locale_next/locale_nds.json
+++ b/options/locale_next/locale_nds.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Padd",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.user": "Brukernaam",
+ "admin.config.db.name": "Naam",
+ "admin.config.db.host": "Host",
+ "admin.config.db.type": "Aard",
+ "admin.config.db.header": "Datenbank-Inrichten",
+ "admin.config.mailer.user": "Bruker",
+ "admin.config.mailer.smtp.port": "SMTP-Poort",
+ "admin.config.mailer.smtp.addr": "SMTP-Host",
+ "admin.config.mailer.enable_helo": "HELO anknipsen",
+ "admin.config.mailer.protocol": "Protokoll",
+ "admin.config.mailer.use_dummy": "Muster",
+ "admin.config.mailer.sendmail.timeout": "Sendmail-Tied-Överweggahn",
+ "admin.config.mailer.sendmail.args": "Wiedere Argumenten för Sendmail",
+ "admin.config.mailer.sendmail.path": "Sendmail-Padd",
+ "admin.config.mailer.sendmail.use": "Sendmail bruken",
+ "admin.config.mailer.name": "Naam",
+ "admin.config.mailer.enabled": "Anknipst",
+ "admin.config.mailer.header": "E-Mailer-Inrichten",
+ "admin.config.git.gc_timeout": "GC-Tied-Överweggahn",
+ "admin.config.git.pull_timeout": "Haal-Tied-Överweggahn",
+ "admin.config.git.clone_timeout": "Klonen-Tied-Överweggahn",
+ "admin.config.git.mirror_timeout": "Spegel-Vernejens-Tied-Överweggahn",
+ "admin.config.git.migrate_timeout": "Umtreck-Tied-Överweggahn",
+ "admin.config.git.gc_args": "GC-Argumenten",
+ "admin.config.git.diff.max_files": "Hoogste Tahl vun Unnerscheeds-Dateien wiest",
+ "admin.config.git.diff.max_line_characters": "Hoogste Unnerscheeds-Bookstavens pro Rieg",
+ "admin.config.git.diff.max_lines": "Hoogste Unnerscheeds-Riegen pro Datei",
+ "admin.config.git.disable_diff_highlight": "Syntax-Vörheven im Unnerscheed utknipsen",
+ "admin.config.git.version": "Git-Versioon",
+ "admin.config.git.header": "Git-Inrichten",
+ "admin.config.ssh.minimum_key_sizes": "Minnste Slötelgröten",
+ "admin.config.ssh.minimum_key_size_check": "Minnste Slötelgrött prüfen",
+ "admin.config.ssh.keygen_path": "Slötelmakens-Padd (»ssh-keygen«)",
+ "admin.config.ssh.key_test_path": "Slöteltestpadd",
+ "admin.config.ssh.root_path": "Ruutpadd",
+ "admin.config.ssh.listen_port": "Tohören-Poort",
+ "admin.config.ssh.port": "Poort",
+ "admin.config.ssh.domain": "SSH-Server-Domään",
+ "admin.config.ssh.use_builtin_server": "Inbaut Server bruken",
+ "admin.config.ssh.enabled": "Anknipst",
+ "admin.config.ssh.header": "SSH-Inrichten",
+ "admin.users.never_login": "Nie anmellt",
+ "admin.users.last_login": "Tolest anmellt",
+ "admin.users.created": "Maakt",
+ "admin.users.repos": "Repos",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Frömd",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Vörbehollen",
+ "admin.users.restricted": "Begrenzt",
+ "admin.users.admin": "Chef",
+ "admin.users.activated": "Aktiveert",
+ "admin.users.full_name": "Kumpleter Naam",
+ "admin.users.name": "Brukernaam",
+ "admin.packages.published": "Publizeert",
+ "admin.packages.size": "Grött",
+ "admin.packages.repository": "Repositorium",
+ "admin.packages.type": "Aard",
+ "admin.packages.version": "Versioon",
+ "admin.packages.name": "Naam",
+ "admin.packages.creator": "Maker",
+ "admin.packages.owner": "Eegner",
+ "admin.packages.unreferenced_size": "Unbenöömt Grött: %s",
+ "admin.packages.total_size": "Grött all tosamen: %s",
+ "admin.repos.lfs_size": "LFS-Grött",
+ "admin.repos.size": "Grött",
+ "admin.repos.issues": "Gefallens",
+ "admin.repos.name": "Naam",
+ "admin.repos.owner": "Eegner",
+ "admin.orgs.new_orga": "Neje Vereenigung",
+ "admin.orgs.members": "Liddmaten",
+ "admin.orgs.teams": "Klottjen",
+ "admin.orgs.name": "Naam",
+ "admin.dashboard.rebuild_issue_indexer": "Gefall-Indizerer neei bauen",
+ "admin.dashboard.start_schedule_tasks": "Aktioonen-Upgaven mit Tiedplaan begünnen",
+ "admin.dashboard.cancel_abandoned_jobs": "Verlaten Aktioonen-Upgaven ofbreken",
+ "admin.dashboard.stop_endless_tasks": "Aktioonen-Upgaven sünner Enn anhollen",
+ "admin.dashboard.stop_zombie_tasks": "Spöök-Aktioonen-Upgaven anhollen",
+ "admin.dashboard.gc_lfs": "In LFS-Meta-Objekten de Müll avhalen",
+ "admin.dashboard.delete_old_system_notices": "All ollen Systeemnarichten ut de Datenbank lösken",
+ "admin.dashboard.update_checker": "Vernejens-Sööker",
+ "admin.dashboard.cleanup_actions": "Avlopen Utgaven un Objekten vun Aktioonen uprümen",
+ "admin.dashboard.cleanup_packages": "Avlopen Paketen uprümen",
+ "admin.dashboard.cleanup_hook_task_table": "hook_task-Tabell uprümen",
+ "admin.dashboard.sync_external_users": "Frömde Brukerdaten vernejen",
+ "admin.dashboard.reinit_missing_repos": "All fehlend Git-Repositoriums neei inrichten, för wat dat Uptekens gifft",
+ "admin.dashboard.resync_all_hooks": "De Git-Hakens in all Repositoriums weer vernejen (»pre-receive«, »update«, »post-receive«, »proc-receive«, …)",
+ "admin.dashboard.resync_all_sshprincipals": "De ».ssh/authorized_principals«-Datei mit de SSH-Höövdmannen vun Forgejo vernejen.",
+ "admin.dashboard.resync_all_sshkeys": "De ».ssh/authorized_keys«-Datei mit de SSH-Slötels vun Forgejo vernejen.",
+ "admin.dashboard.git_gc_repos": "Up all Repositoriums de Müll avhalen",
+ "admin.dashboard.update_migration_poster_id": "Umtreck-Autor-IDs vernejen",
+ "admin.dashboard.deleted_branches_cleanup": "Lösket Twiegen uprümen",
+ "admin.dashboard.archive_cleanup": "Olle Repositoriums-Archiven lösken",
+ "admin.dashboard.check_repo_stats": "De Statistiken vun all Repositoriums överprüfen",
+ "admin.dashboard.repo_health_check": "Gesundheids-Överprüfen för all Repositoriums",
+ "admin.dashboard.update_mirrors": "Spegels vernejen",
+ "admin.dashboard.sync_repo_tags": "Markens vun Git-Daten to de Datenbank spegeln",
+ "admin.dashboard.sync_repo_branches": "Fehlend Twiegen vun Git-Daten to de Datenbank spegeln",
+ "admin.dashboard.delete_generated_repository_avatars": "Maakte Repositoriums-Kontobillers lösken",
+ "admin.dashboard.sync_tag.started": "Mark-Vernejen begunnen",
+ "admin.dashboard.sync_branch.started": "Twieg-Vernejen begunnen",
+ "admin.dashboard.delete_old_actions.started": "Hett begunnen, all olles Doon ut de Datenbank to lösken.",
+ "admin.dashboard.delete_missing_repos.started": "Upgaav, um all Repositoriums sünner Git-Dateien to lösken, begunnen.",
+ "admin.dashboard.delete_repo_archives.started": "Upgaav, um all Repositoriums-Archiven to lösken, begunnen.",
+ "admin.dashboard.delete_inactive_accounts.started": "Upgaav, um all nich aktiveerten Konten to lösken, begunnen.",
+ "admin.dashboard.cron.finished": "Tiedplaan: %[1]s is daan worden",
+ "admin.dashboard.cron.error": "Fehler im Tiedplaan: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Tiedplaan: %[1]s ofbroken: %[3]s",
+ "admin.dashboard.cron.process": "Tiedplaan: %[1]s",
+ "admin.dashboard.cron.started": "Hett Tiedplaan begunnen: %[1]s",
+ "admin.dashboard.task.unknown": "Unbekannte Upgaav: %[1]s",
+ "admin.dashboard.task.finished": "Upgaav: %[1]s vun %[2]s begunnen is daan worden",
+ "admin.dashboard.task.error": "Fehler in Upgaav: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Upgaav: %[1]s ofbroken: %[3]s",
+ "admin.dashboard.task.process": "Upgaav: %[1]s",
+ "admin.dashboard.task.started": "Hett Upgaav begunnen: %[1]s",
+ "admin.dashboard.operation_run": "Utföhren",
+ "admin.dashboard.operation_switch": "Wesseln",
+ "admin.dashboard.operation_name": "Aktioons-Naam",
+ "admin.dashboard.system_status": "Systeem-Tostand",
+ "admin.dashboard.operations": "Plegens-Aktioonen",
+ "admin.dashboard.statistic": "Tosamenfaten",
+ "admin.dashboard.new_version_hint": "Forgejo %s is nu verföögbaar, du hest %s. Kiek de Blog för mehr Informatioonen an.",
"admin.monitor.queue.settings.remove_all_items.success": "All Dingen in de Slang sünd wegdaan worden.",
"admin.monitor.queue.settings.remove_all_items": "All wegdoon",
"admin.monitor.queue.settings.changed": "Instellens verneeit",
@@ -751,5 +877,43 @@
"repo.files.caption": "Repositoriums-Dateien (lestes Kommitteren toeerst)",
"repo.files.filename": "Dateinaam",
"repo.files.last_commit_message": "Leste Kommitterens-Naricht",
- "repo.files.last_commit_date": "Lestes Kommitterens-Datum"
+ "repo.files.last_commit_date": "Lestes Kommitterens-Datum",
+ "actions.runs.delete.error_could_not_load_run": "Kunn de Utföhren tum Lösken nich laden.",
+ "actions.runs.delete.error_could_not_delete_run": "Kunn de Utföhren nich lösken.",
+ "actions.runs.delete.button": "Utföhren lösken",
+ "actions.runs.delete.error": "Kunn de Warkwies-Utföhren nich lösken.",
+ "actions.runs.delete.confirm_action": "Willst du deese Warkwies-Utföhren würrelk lösken?",
+ "settings.authorized_integrations": "Tolaten Integratioonen",
+ "settings.manage_authorized_integrations": "Tolaten Integratioonen",
+ "settings.authorized_integration.desc": "Tolaten Integratioonen verlöven Forgejo, unnerschreven JWTs to kriegen, hör Angaven tegen inricht Regeln to överprüfen, un hör to verlöven, up de APIs vun Forgejo totogriepen.",
+ "settings.authorized_integration.ui.generic": "Allgemeenes JWT",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Forgejo-Aktioonen (stedenwies)",
+ "settings.authorized_integration.none": "Upstünds keene tolaten Integratioonen inricht.",
+ "settings.authorized_integration.field.name": "Naam",
+ "settings.authorized_integration.field.description": "Beschrieven",
+ "settings.authorized_integration.field.description.placeholder": "Tum Publizeren vun Paketen bruukt wenn …",
+ "settings.authorized_integration.field.audience": "Tohörer (Angaav aud)",
+ "settings.authorized_integration.field.issuer": "Utgever (Angaav iss)",
+ "settings.authorized_integration.field.claim_rules": "Angaav-Regeln as JSON",
+ "settings.authorized_integration.claims.generic": "Regeln för allgemeene JWT",
+ "settings.authorized_integration.perms.title": "Verlöövt Künnen",
+ "settings.authorized_integration.copy_audience": "Tohörer to de Tüskenavlaag koperen",
+ "repo.pulls.status_checks_skipped": "Översprungen",
+ "repo.packages.visibility_warning": "Deeses Repositorium is privaat, aver verknüppt Paketen sünd publik (Eegner %s is publik).",
+ "settings.authorized_integration.edit": "Bewarken",
+ "settings.authorized_integration.edit_page_title": "Tolaten Integratioon %s",
+ "settings.authorized_integration.create_page_title": "Tolaten Integratioon maken",
+ "settings.authorized_integration.save": "Tolaten Integratioon sekern",
+ "settings.authorized_integration.create": "Tolaten Integratioon maken",
+ "settings.authorized_integration.create_success": "Tolaten Integratioon maakt: %s",
+ "settings.authorized_integration.name.required": "Een Naam för de tolaten Integratioon is nödig.",
+ "settings.authorized_integration.issuer.invalid": "Utgever-Nakieken fehlslagen: %s",
+ "settings.authorized_integration.claim_rules.invalid": "Angaav-Regeln-Nakieken fehlslagen: %s",
+ "settings.authorized_integration.specified_repos_none": "Tolaten Integratioonen mit angeven Repositoriums mutten tominnst een Repositorium hebben.",
+ "settings.authorized_integration.specified_repos_and_public_only": "Tolaten Integratioonen mit angeven Repositoriums könen nich tosamen mit de blots-publik-Rebeet bruukt worden.",
+ "settings.authorized_integration.specified_repos_and_invalid_scope": "Tolaten Integratioonen mit angeven Repositoriums könen blots mit de Rebeeten »read:issue«, »write:issue«, »read:repository« un »write:repository« bruukt worden.",
+ "settings.authorized_integration.add": "Tolaten Integratioon hentofögen",
+ "settings.authorized_integration.delete.header": "Tolaten Integratioon lösken",
+ "settings.authorized_integration.deleted": "De tolaten Integratioon is lösket worden.",
+ "settings.authorized_integration.delete.body": "Wenn du eene tolaten Integratioon löskest, hett de verbunnen Anwennen keenen Togriep up dien Konto mehr. Dat is för all Tieden un kann nich torüggnohmen worden. Wenn du eene neje tolaten Integratioon maakst, word se nich de sülve Tohörer-Angaav (aud) hebben. Wiedermaken?"
}
diff --git a/options/locale_next/locale_nl-NL.json b/options/locale_next/locale_nl-NL.json
index dc49ebdccb..0cf5741731 100644
--- a/options/locale_next/locale_nl-NL.json
+++ b/options/locale_next/locale_nl-NL.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Pad",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.user": "Gebruikersnaam",
+ "admin.config.db.name": "Naam",
+ "admin.config.db.host": "Host",
+ "admin.config.db.type": "Type",
+ "admin.config.db.header": "Databaseconfiguratie",
+ "admin.config.mailer.user": "Gebruiker",
+ "admin.config.mailer.smtp.port": "SMTP poort",
+ "admin.config.mailer.smtp.addr": "SMTP-adres",
+ "admin.config.mailer.enable_helo": "HELO inschakelen",
+ "admin.config.mailer.protocol": "Protocol",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Sendmail time-out",
+ "admin.config.mailer.sendmail.args": "Extra argumenten voor Sendmail",
+ "admin.config.mailer.sendmail.path": "Sendmail pad",
+ "admin.config.mailer.sendmail.use": "Gebruik Sendmail",
+ "admin.config.mailer.name": "Naam",
+ "admin.config.mailer.enabled": "Ingeschakeld",
+ "admin.config.mailer.header": "Mailer configuratie",
+ "admin.config.git.gc_timeout": "GC operatie timeout",
+ "admin.config.git.pull_timeout": "Pull operatie timeout",
+ "admin.config.git.clone_timeout": "Kloon operatie timeout",
+ "admin.config.git.mirror_timeout": "Time-out mirror update",
+ "admin.config.git.migrate_timeout": "Migratie time-out",
+ "admin.config.git.gc_args": "GC-argumenten",
+ "admin.config.git.diff.max_files": "Max. getoonde diff-bestanden",
+ "admin.config.git.diff.max_line_characters": "Max diff tekens per regel",
+ "admin.config.git.diff.max_lines": "Max diff regels per bestand",
+ "admin.config.git.disable_diff_highlight": "Diff syntax highlighting uitschakelen",
+ "admin.config.git.version": "Git versie",
+ "admin.config.git.header": "Git configuratie",
+ "admin.config.ssh.minimum_key_sizes": "Minimale key-lengtes",
+ "admin.config.ssh.minimum_key_size_check": "Controleer minimale key-lengte",
+ "admin.config.ssh.keygen_path": "Pad van keygen (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Pad voor key-tests",
+ "admin.config.ssh.root_path": "Root-pad",
+ "admin.config.ssh.listen_port": "Luisterpoort",
+ "admin.config.ssh.port": "Poort",
+ "admin.config.ssh.domain": "SSH-server domein",
+ "admin.config.ssh.use_builtin_server": "Gebruik de ingebouwde server",
+ "admin.config.ssh.enabled": "Ingeschakeld",
+ "admin.config.ssh.header": "SSH-configuratie",
+ "admin.users.never_login": "Nooit ingelogd",
+ "admin.users.last_login": "Laatste keer ingelogd",
+ "admin.users.created": "Aangemaakt",
+ "admin.users.repos": "Repos",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Externe",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Gereserveerd",
+ "admin.users.restricted": "Beperkt",
+ "admin.users.admin": "Beheerder",
+ "admin.users.activated": "Geactiveerd",
+ "admin.users.full_name": "Volledige naam",
+ "admin.users.name": "Gebruikersnaam",
+ "admin.packages.published": "Gepubliceerd",
+ "admin.packages.size": "Grootte",
+ "admin.packages.repository": "Opslagplaats",
+ "admin.packages.type": "Type",
+ "admin.packages.version": "Versie",
+ "admin.packages.name": "Naam",
+ "admin.packages.creator": "Maker",
+ "admin.packages.owner": "Eigenaar",
+ "admin.packages.unreferenced_size": "Grootte waarnaar niet wordt verwezen: %s",
+ "admin.packages.total_size": "Totale grootte: %s",
+ "admin.repos.lfs_size": "LFS grootte",
+ "admin.repos.size": "Grootte",
+ "admin.repos.issues": "Issues",
+ "admin.repos.name": "Naam",
+ "admin.repos.owner": "Eigenaar",
+ "admin.orgs.new_orga": "Nieuwe organisatie",
+ "admin.orgs.members": "Leden",
+ "admin.orgs.teams": "Teams",
+ "admin.orgs.name": "Naam",
+ "admin.dashboard.rebuild_issue_indexer": "Herbouw issue indexer",
+ "admin.dashboard.start_schedule_tasks": "Start geplande taken",
+ "admin.dashboard.cancel_abandoned_jobs": "Verlaten jobs annuleren",
+ "admin.dashboard.stop_endless_tasks": "Eindeloze taken stoppen",
+ "admin.dashboard.stop_zombie_tasks": "Zombietaken stoppen",
+ "admin.dashboard.gc_lfs": "LFS meta-objecten afval opruimen",
+ "admin.dashboard.delete_old_system_notices": "Verwijder alle oude systeemmededelingen uit de database",
+ "admin.dashboard.update_checker": "Update checker",
+ "admin.dashboard.cleanup_actions": "Verlopen logs en artefacten van actions opschonen",
+ "admin.dashboard.cleanup_packages": "Verlopen pakketten opschonen",
+ "admin.dashboard.cleanup_hook_task_table": "Tabel hook_task opschonen",
+ "admin.dashboard.sync_external_users": "Externe gebruikersgegevens synchroniseren",
+ "admin.dashboard.reinit_missing_repos": "Herinitialiseer alle ontbrekende Git repositories waarvoor records bestaan",
+ "admin.dashboard.resync_all_hooks": "Git hooks van alle repositories opnieuw synchroniseren (pre-receive, update en, post-receive hooks van alle repositories, proc-receive, ...)",
+ "admin.dashboard.resync_all_sshprincipals": "Update het \".ssh/authorized_principals\" bestand met Forgejo SSH verantwoordelijken.",
+ "admin.dashboard.resync_all_sshkeys": "Werk de \".ssh/authorized_keys\" bestand bij met Forgejo SSH sleutels.",
+ "admin.dashboard.git_gc_repos": "Voer garbage collectie uit voor alle repositories",
+ "admin.dashboard.update_migration_poster_id": "Werk migratie-poster IDs bij",
+ "admin.dashboard.deleted_branches_cleanup": "Verwijderde branches opschonen",
+ "admin.dashboard.archive_cleanup": "Verwijder oude repositories archieven",
+ "admin.dashboard.check_repo_stats": "Bekijk alle repository statistieken",
+ "admin.dashboard.repo_health_check": "Controleer alle repositories",
+ "admin.dashboard.update_mirrors": "Mirrors bijwerken",
+ "admin.dashboard.sync_repo_tags": "Tags synchroniseren van git data naar database",
+ "admin.dashboard.sync_repo_branches": "Synchroniseren gemiste branches van git data naar database",
+ "admin.dashboard.delete_generated_repository_avatars": "Verwijder gegenereerde repository avatars",
+ "admin.dashboard.sync_tag.started": "Tag synchronisatie is gestart",
+ "admin.dashboard.sync_branch.started": "Branch synchronisatie is gestart",
+ "admin.dashboard.delete_old_actions.started": "Het verwijderen van alle oude activiteiten uit de database is gestart.",
+ "admin.dashboard.delete_missing_repos.started": "Verwijder alle repositories die hun Git bestanden missen taak gestart.",
+ "admin.dashboard.delete_repo_archives.started": "Verwijder alle repositoryarchieven taak gestart.",
+ "admin.dashboard.delete_inactive_accounts.started": "Verwijder alle niet geactiveerde accounts taak gestart.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s is klaar",
+ "admin.dashboard.cron.error": "Fout in cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s geannuleerd: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Gestarte cron: %[1]s",
+ "admin.dashboard.task.unknown": "Onbekende taak: %[1]s",
+ "admin.dashboard.task.finished": "Taak: %[1]s gestart door %[2]s is voltooid",
+ "admin.dashboard.task.error": "Fout in taak: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Taak: %[1]s geannuleerd: %[3]s",
+ "admin.dashboard.task.process": "Taak: %[1]s",
+ "admin.dashboard.task.started": "Taak gestart: %[1]s",
+ "admin.dashboard.operation_run": "Uitvoeren",
+ "admin.dashboard.operation_switch": "Omschakelen",
+ "admin.dashboard.operation_name": "Bewerking naam",
+ "admin.dashboard.system_status": "Systeemstatus",
+ "admin.dashboard.operations": "Onderhoudswerkzaamheden",
+ "admin.dashboard.statistic": "Overzicht",
+ "admin.dashboard.new_version_hint": "Forgejo %s is nu beschikbaar, u gebruikt versie %s. Zie de blog voor meer details.",
"admin.monitor.queue.settings.remove_all_items.success": "Alle items in de wachtrij zijn verwijderd.",
"admin.monitor.queue.settings.remove_all_items": "Alles verwijderen",
"admin.monitor.queue.settings.changed": "Instellingen bijgewerkt",
@@ -747,5 +873,9 @@
"actions.runners.uuid": "UUID",
"actions.runners.list_runners.edit_column": "Aanpassen",
"actions.runners.version": "Versie",
- "actions.runners.list_runners.delete_button": "Verwijderen"
+ "actions.runners.list_runners.delete_button": "Verwijderen",
+ "repo.files.caption": "Bestanden in de repository (nieuwste commit bovenaan)",
+ "repo.files.filename": "Bestandsnaam",
+ "repo.files.last_commit_message": "Laatste commitbericht",
+ "repo.files.last_commit_date": "Datum van de laatste commit"
}
diff --git a/options/locale_next/locale_pl-PL.json b/options/locale_next/locale_pl-PL.json
index 41e84196d8..965b937a9c 100644
--- a/options/locale_next/locale_pl-PL.json
+++ b/options/locale_next/locale_pl-PL.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Ścieżka",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schemat",
+ "admin.config.db.user": "Nazwa użytkownika",
+ "admin.config.db.name": "Nazwa",
+ "admin.config.db.host": "Serwer",
+ "admin.config.db.type": "Typ",
+ "admin.config.db.header": "Konfiguracja bazy danych",
+ "admin.config.mailer.user": "Użytkownik",
+ "admin.config.mailer.smtp.port": "Port SMTP",
+ "admin.config.mailer.smtp.addr": "Host SMTP",
+ "admin.config.mailer.enable_helo": "Włącz HELO",
+ "admin.config.mailer.protocol": "Protokół",
+ "admin.config.mailer.use_dummy": "Testowa",
+ "admin.config.mailer.sendmail.timeout": "Limit czasu Sendmail",
+ "admin.config.mailer.sendmail.args": "Dodatkowe argumenty Sendmail",
+ "admin.config.mailer.sendmail.path": "Ścieżka Sendmail",
+ "admin.config.mailer.sendmail.use": "Używaj Sendmail",
+ "admin.config.mailer.name": "Nazwa",
+ "admin.config.mailer.enabled": "Włączona",
+ "admin.config.mailer.header": "Konfiguracja Mailer",
+ "admin.config.git.gc_timeout": "Limit czasu operacji GC",
+ "admin.config.git.pull_timeout": "Limit czasu dla operacji pull",
+ "admin.config.git.clone_timeout": "Limit czasu operacji klonowania",
+ "admin.config.git.mirror_timeout": "Limit czasu aktualizacji kopii lustrzanej",
+ "admin.config.git.migrate_timeout": "Limit czasu migracji",
+ "admin.config.git.gc_args": "Argumenty GC",
+ "admin.config.git.diff.max_files": "Maksymalna liczba plików diff",
+ "admin.config.git.diff.max_line_characters": "Maksymalna liczba znaków diff na linię",
+ "admin.config.git.diff.max_lines": "Maksymalna liczba linii diff na plik",
+ "admin.config.git.disable_diff_highlight": "Wyłącz wyróżnianie składni diff",
+ "admin.config.git.version": "Wersja Git",
+ "admin.config.git.header": "Konfiguracja Git",
+ "admin.config.ssh.minimum_key_sizes": "Minimalne rozmiary kluczy",
+ "admin.config.ssh.minimum_key_size_check": "Sprawdzanie minimalnej długości klucza",
+ "admin.config.ssh.keygen_path": "Ścieżka do generatora ('ssh-keygen')",
+ "admin.config.ssh.key_test_path": "Ścieżka do klucza testowego",
+ "admin.config.ssh.root_path": "Ścieżka do katalogu głównego",
+ "admin.config.ssh.listen_port": "Port nasłuchiwania",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "Domena serwera SSH",
+ "admin.config.ssh.use_builtin_server": "Wykorzystaj wbudowany serwer",
+ "admin.config.ssh.enabled": "Włączone",
+ "admin.config.ssh.header": "Konfiguracja SSH",
+ "admin.users.never_login": "Nigdy nie zalogował(a) się",
+ "admin.users.last_login": "Ostatnie logowanie",
+ "admin.users.created": "Utworzony",
+ "admin.users.repos": "Repozytoria",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Zdalnie",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Zarezerwowane",
+ "admin.users.restricted": "Ograniczone",
+ "admin.users.admin": "Administrator",
+ "admin.users.activated": "Aktywny",
+ "admin.users.full_name": "Imię i nazwisko",
+ "admin.users.name": "Nazwa użytkownika",
+ "admin.packages.published": "Opublikowane",
+ "admin.packages.size": "Rozmiar",
+ "admin.packages.repository": "Repozytorium",
+ "admin.packages.type": "Typ",
+ "admin.packages.version": "Wersja",
+ "admin.packages.name": "Nazwa",
+ "admin.packages.creator": "Twórca",
+ "admin.packages.owner": "Właściciel",
+ "admin.packages.unreferenced_size": "Nieodniesiona wielkość: %s",
+ "admin.packages.total_size": "Wielkość całkowita: %s",
+ "admin.repos.lfs_size": "Wielkość LFS",
+ "admin.repos.size": "Rozmiar",
+ "admin.repos.issues": "Zgłoszenia",
+ "admin.repos.name": "Nazwa",
+ "admin.repos.owner": "Właściciel",
+ "admin.orgs.new_orga": "Nowa organizacja",
+ "admin.orgs.members": "Członkowie",
+ "admin.orgs.teams": "Zespoły",
+ "admin.orgs.name": "Nazwa",
+ "admin.dashboard.rebuild_issue_indexer": "Przebuduj indekser zgłoszeń",
+ "admin.dashboard.start_schedule_tasks": "Uruchomienie zaplanowanych zadań akcji",
+ "admin.dashboard.cancel_abandoned_jobs": "Anuluj porzucone prace akcji",
+ "admin.dashboard.stop_endless_tasks": "Zatrzymaj niekończące się zadania akcji",
+ "admin.dashboard.stop_zombie_tasks": "Zatrzymaj zadania zombi akcji",
+ "admin.dashboard.gc_lfs": "Wywołaj GC na metaobiektach LFS",
+ "admin.dashboard.delete_old_system_notices": "Usuń wszystkie stare powiadomienia systemowe z bazy danych",
+ "admin.dashboard.update_checker": "Sprawdzanie aktualizacji",
+ "admin.dashboard.cleanup_actions": "Wyczyść przedawnione logi i artefakty z akcji",
+ "admin.dashboard.cleanup_packages": "Wyczyść przedawnione pakiety",
+ "admin.dashboard.cleanup_hook_task_table": "Wyczyść tabelę hook_task",
+ "admin.dashboard.sync_external_users": "Synchronizuj zewnętrzne dane użytkownika",
+ "admin.dashboard.reinit_missing_repos": "Ponownie zainicjalizuj wszystkie brakujące repozytoria Git, dla których istnieją rekordy",
+ "admin.dashboard.resync_all_hooks": "Ponownie synchronizuj hooki Git we wszystkich repozytoriach (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Zaktualizuj plik \".ssh/authorized_principals\" z podmiotami SSH Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Zaktualizuj plik '.ssh/authorized_keys' z kluczami SSH Forgejo.",
+ "admin.dashboard.git_gc_repos": "Wykonaj zbieranie śmieci ze wszystkich repozytoriów",
+ "admin.dashboard.update_migration_poster_id": "Aktualizuj ID autora migracji",
+ "admin.dashboard.deleted_branches_cleanup": "Wyczyść usunięte galęzie",
+ "admin.dashboard.archive_cleanup": "Usuń stare archiwa repozytoriów",
+ "admin.dashboard.check_repo_stats": "Sprawdź statystyki wszystkich repozytoriów",
+ "admin.dashboard.repo_health_check": "Sprawdź stan wszystkich repozytoriów",
+ "admin.dashboard.update_mirrors": "Aktualizuj kopie lustrzane",
+ "admin.dashboard.sync_repo_tags": "Synchronizuj tagi z danych Git do bazy danych",
+ "admin.dashboard.sync_repo_branches": "Synchronizuj pominięte gałęzie z danych Git do bazy danych",
+ "admin.dashboard.delete_generated_repository_avatars": "Usuń wygenerowane awatary repozytoriów",
+ "admin.dashboard.sync_tag.started": "Synchronizacja tagu rozpoczęta",
+ "admin.dashboard.sync_branch.started": "Synchronizacja gałęzi rozpoczęta",
+ "admin.dashboard.delete_old_actions.started": "Usuwanie wszystkich starych akcji z bazy danych rozpoczęte.",
+ "admin.dashboard.delete_missing_repos.started": "Zadanie usuwania repozytoriów, które nie mają plików Gita, zostało rozpoczęte.",
+ "admin.dashboard.delete_repo_archives.started": "Zadanie usuwania archiwów repozytoriów zostało rozpoczęte.",
+ "admin.dashboard.delete_inactive_accounts.started": "Zadanie usuwania nieaktywowanych kont zostało rozpoczęte.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s zakończony",
+ "admin.dashboard.cron.error": "Błąd w Cronie: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s anulowany: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Uruchomiono Crona: %[1]s",
+ "admin.dashboard.task.unknown": "Nieznane zadanie: %[1]s",
+ "admin.dashboard.task.finished": "Zadanie: %[1]s rozpoczęte przez %[2]s zostało ukończone",
+ "admin.dashboard.task.error": "Błąd w zadaniu: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Zadanie: %[1]s anulowane: %[3]s",
+ "admin.dashboard.task.process": "Zadanie: %[1]s",
+ "admin.dashboard.task.started": "Rozpoczęto zadanie: %[1]s",
+ "admin.dashboard.operation_run": "Uruchom",
+ "admin.dashboard.operation_switch": "Przełącz",
+ "admin.dashboard.operation_name": "Nazwa operacji",
+ "admin.dashboard.system_status": "Status strony",
+ "admin.dashboard.operations": "Operacje konserwacji",
+ "admin.dashboard.statistic": "Podsumowanie",
+ "admin.dashboard.new_version_hint": "Forgejo %s jest już dostępne, w tej chwili korzystasz z %s. Sprawdź szczegóły na blogu.",
"admin.monitor.queue.settings.remove_all_items.success": "Wszystkie elementy w kolejce zostały usunięte.",
"admin.monitor.queue.settings.remove_all_items": "Usuń wszystkie",
"admin.monitor.queue.settings.changed": "Zaktualizowano ustawienia",
@@ -90,19 +216,23 @@
"webauthn.insert_key": "Podłącz swój klucz bezpieczeństwa",
"counters.n_commits": {
"one": "%s commit",
- "many": "%s commity"
+ "few": "%s commity",
+ "many": ""
},
"counters.n_branches": {
"one": "%s gałąź",
- "many": "%s gałęzie"
+ "few": "%s gałęzie",
+ "many": ""
},
"counters.n_tags": {
"one": "%s tag",
- "many": "%s tagi"
+ "few": "%s tagi",
+ "many": ""
},
"counters.n_releases": {
"one": "%s wydanie",
- "many": "%s wydań"
+ "few": "%s wydań",
+ "many": ""
},
"gpg.default_key": "Podpisano domyślnym kluczem",
"gpg.error.extract_sign": "Nie udało się wyłuskać podpisu",
@@ -593,5 +723,7 @@
"one": "Wybrane (%d) repozytorium",
"few": "Wybrane (%d) repozytoria",
"many": "Wybrane (%d) repozytoriów"
- }
+ },
+ "repo.files.filename": "Nazwa pliku",
+ "migrate.select.title": "Migruj repozytorium"
}
diff --git a/options/locale_next/locale_pt-BR.json b/options/locale_next/locale_pt-BR.json
index ea5832a8e4..80501bf947 100644
--- a/options/locale_next/locale_pt-BR.json
+++ b/options/locale_next/locale_pt-BR.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Caminho",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Esquema",
+ "admin.config.db.user": "Nome de usuário",
+ "admin.config.db.name": "Nome",
+ "admin.config.db.host": "Servidor",
+ "admin.config.db.type": "Tipo",
+ "admin.config.db.header": "Configuração do banco de dados",
+ "admin.config.mailer.user": "Usuário",
+ "admin.config.mailer.smtp.port": "Porta SMTP",
+ "admin.config.mailer.smtp.addr": "Host SMTP",
+ "admin.config.mailer.enable_helo": "Ativar HELO",
+ "admin.config.mailer.protocol": "Protocolo",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Tempo limite do Sendmail",
+ "admin.config.mailer.sendmail.args": "Argumentos extras para o Sendmail",
+ "admin.config.mailer.sendmail.path": "Localização do Sendmail",
+ "admin.config.mailer.sendmail.use": "Usar o Sendmail",
+ "admin.config.mailer.name": "Nome",
+ "admin.config.mailer.enabled": "Habilitado",
+ "admin.config.mailer.header": "Configuração de envio de e-mails",
+ "admin.config.git.gc_timeout": "Tempo limite para operação de GC",
+ "admin.config.git.pull_timeout": "Tempo limite para operações de pull",
+ "admin.config.git.clone_timeout": "Tempo limite para operações de clonagem",
+ "admin.config.git.mirror_timeout": "Tempo limite para atualização de espelhos",
+ "admin.config.git.migrate_timeout": "Tempo limite de migração",
+ "admin.config.git.gc_args": "Argumentos do GC",
+ "admin.config.git.diff.max_files": "Máximo de arquivos de diff exibidos",
+ "admin.config.git.diff.max_line_characters": "Máximo de caracteres por linha em diffs",
+ "admin.config.git.diff.max_lines": "Máximo de linhas por arquivo em diffs",
+ "admin.config.git.disable_diff_highlight": "Desabilitar realce de sintaxe em diffs",
+ "admin.config.git.version": "Versão do Git",
+ "admin.config.git.header": "Configuração do Git",
+ "admin.config.ssh.minimum_key_sizes": "Tamanhos mínimos da chave",
+ "admin.config.ssh.minimum_key_size_check": "Verificar tamanho mínimo da chave",
+ "admin.config.ssh.keygen_path": "Localização do gerador de chaves (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Localização de teste para chave",
+ "admin.config.ssh.root_path": "Caminho raiz",
+ "admin.config.ssh.listen_port": "Porta de escuta",
+ "admin.config.ssh.port": "Porta",
+ "admin.config.ssh.domain": "Domínio do servidor SSH",
+ "admin.config.ssh.use_builtin_server": "Usar o servidor embutido",
+ "admin.config.ssh.enabled": "Habilitado",
+ "admin.config.ssh.header": "Configuração de SSH",
+ "admin.users.never_login": "Nunca entrou",
+ "admin.users.last_login": "Último acesso",
+ "admin.users.created": "Criado",
+ "admin.users.repos": "Repositórios",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Remoto",
+ "admin.users.bot": "Robô",
+ "admin.users.reserved": "Reservado",
+ "admin.users.restricted": "Restrito",
+ "admin.users.admin": "Administrador",
+ "admin.users.activated": "Ativado",
+ "admin.users.full_name": "Nome completo",
+ "admin.users.name": "Nome de usuário",
+ "admin.packages.published": "Publicado",
+ "admin.packages.size": "Tamanho",
+ "admin.packages.repository": "Repositório",
+ "admin.packages.type": "Tipo",
+ "admin.packages.version": "Versão",
+ "admin.packages.name": "Nome",
+ "admin.packages.creator": "Criador",
+ "admin.packages.owner": "Proprietário",
+ "admin.packages.unreferenced_size": "Tamanho não referenciado: %s",
+ "admin.packages.total_size": "Tamanho total: %s",
+ "admin.repos.lfs_size": "Tamanho do LFS",
+ "admin.repos.size": "Tamanho",
+ "admin.repos.issues": "Issues",
+ "admin.repos.name": "Nome",
+ "admin.repos.owner": "Proprietário(a)",
+ "admin.orgs.new_orga": "Nova organização",
+ "admin.orgs.members": "Membros",
+ "admin.orgs.teams": "Equipes",
+ "admin.orgs.name": "Nome",
+ "admin.dashboard.rebuild_issue_indexer": "Reconstruir indexador de problemas",
+ "admin.dashboard.start_schedule_tasks": "Iniciar tarefas de Actions programadas",
+ "admin.dashboard.cancel_abandoned_jobs": "Cancelar trabalhos abandonados de Actions",
+ "admin.dashboard.stop_endless_tasks": "Parar tarefas de Actions intermináveis",
+ "admin.dashboard.stop_zombie_tasks": "Parar tarefas de Actions zumbis",
+ "admin.dashboard.gc_lfs": "Coletar lixos dos meta-objetos LFS",
+ "admin.dashboard.delete_old_system_notices": "Excluir todos os avisos de sistema antigos do banco de dados",
+ "admin.dashboard.update_checker": "Verificador de atualização",
+ "admin.dashboard.cleanup_actions": "Limpar logs expirados e artefatos de Actions",
+ "admin.dashboard.cleanup_packages": "Limpar pacotes expirados",
+ "admin.dashboard.cleanup_hook_task_table": "Limpar tabela hook_task",
+ "admin.dashboard.sync_external_users": "Sincronizar dados de usuário externo",
+ "admin.dashboard.reinit_missing_repos": "Reinicializar todos os repositórios Git perdidos cujos registros existem",
+ "admin.dashboard.resync_all_hooks": "Ressincronizar hooks Git de todos os repositórios (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Atualizar o arquivo \".ssh/authorized_principals\" com os principals SSH do Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Atualizar o arquivo \".ssh/authorized_keys\" com as chaves SSH do Forgejo.",
+ "admin.dashboard.git_gc_repos": "Coleta de lixo em todos os repositórios",
+ "admin.dashboard.update_migration_poster_id": "Sincronizar os IDs do remetente da migração",
+ "admin.dashboard.deleted_branches_cleanup": "Realizar limpeza de branches apagados",
+ "admin.dashboard.archive_cleanup": "Apagar arquivos antigos de repositório",
+ "admin.dashboard.check_repo_stats": "Verificar estatísticas de todos os repositórios",
+ "admin.dashboard.repo_health_check": "Verificar estado de saúde de todos os repositórios",
+ "admin.dashboard.update_mirrors": "Atualizar espelhos",
+ "admin.dashboard.sync_repo_tags": "Sincronizar etiquetas do Git para o banco de dados",
+ "admin.dashboard.sync_repo_branches": "Sincronizar ramos perdidos do Git para o banco de dados",
+ "admin.dashboard.delete_generated_repository_avatars": "Excluir avatares gerados do repositório",
+ "admin.dashboard.sync_tag.started": "Sincronização de tags iniciada",
+ "admin.dashboard.sync_branch.started": "Sincronização de ramos iniciada",
+ "admin.dashboard.delete_old_actions.started": "A exclusão de todas as atividades antigas do banco de dados foi iniciada.",
+ "admin.dashboard.delete_missing_repos.started": "Foi iniciada a tarefa de excluir todos os repositórios que não têm arquivos Git.",
+ "admin.dashboard.delete_repo_archives.started": "A tarefa de remover todos os arquivos foi iniciada.",
+ "admin.dashboard.delete_inactive_accounts.started": "A tarefa de apagar todas as contas não ativadas foi iniciada.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s terminou",
+ "admin.dashboard.cron.error": "Erro no Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s cancelado: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron Iniciado: %[1]s",
+ "admin.dashboard.task.unknown": "Tarefa desconhecida: %[1]s",
+ "admin.dashboard.task.finished": "Tarefa: %[1]s iniciada por %[2]s foi finalizada",
+ "admin.dashboard.task.error": "Erro na Tarefa: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Tarefa: %[1]s cancelada: %[3]s",
+ "admin.dashboard.task.process": "Tarefa: %[1]s",
+ "admin.dashboard.task.started": "Tarefa Iniciada: %[1]s",
+ "admin.dashboard.operation_run": "Executar",
+ "admin.dashboard.operation_switch": "Trocar",
+ "admin.dashboard.operation_name": "Nome da operação",
+ "admin.dashboard.system_status": "Status do sistema",
+ "admin.dashboard.operations": "Operações de manutenção",
+ "admin.dashboard.statistic": "Resumo",
+ "admin.dashboard.new_version_hint": "Uma nova versão está disponível: %s. Versão atual: %s. Visite o blog para mais informações.",
"admin.monitor.queue.settings.remove_all_items.success": "Todos os itens da fila foram removidos.",
"admin.monitor.queue.settings.remove_all_items": "Remover tudo",
"admin.monitor.queue.settings.changed": "Configurações atualizadas",
diff --git a/options/locale_next/locale_pt-PT.json b/options/locale_next/locale_pt-PT.json
index 9be71cfa06..e149a587ba 100644
--- a/options/locale_next/locale_pt-PT.json
+++ b/options/locale_next/locale_pt-PT.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Localização",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Esquema",
+ "admin.config.db.user": "Nome de utilizador",
+ "admin.config.db.name": "Nome",
+ "admin.config.db.host": "Servidor",
+ "admin.config.db.type": "Tipo",
+ "admin.config.db.header": "Configuração da base de dados",
+ "admin.config.mailer.user": "Utilizador",
+ "admin.config.mailer.smtp.port": "Porto do SMTP",
+ "admin.config.mailer.smtp.addr": "Anfitrião SMTP",
+ "admin.config.mailer.enable_helo": "Habilitar HELO",
+ "admin.config.mailer.protocol": "Protocolo",
+ "admin.config.mailer.use_dummy": "Fictício",
+ "admin.config.mailer.sendmail.timeout": "Tempo limite do Sendmail",
+ "admin.config.mailer.sendmail.args": "Argumentos extras para o sendmail",
+ "admin.config.mailer.sendmail.path": "Localização do sendmail",
+ "admin.config.mailer.sendmail.use": "Usar o sendmail",
+ "admin.config.mailer.name": "Nome",
+ "admin.config.mailer.enabled": "Habilitado",
+ "admin.config.mailer.header": "Configuração de envio de email",
+ "admin.config.git.gc_timeout": "Prazo da operação de recolha de lixo",
+ "admin.config.git.pull_timeout": "Prazo da operação de puxar",
+ "admin.config.git.clone_timeout": "Prazo da operação de clonagem",
+ "admin.config.git.mirror_timeout": "Prazo para a sincronização da réplica",
+ "admin.config.git.migrate_timeout": "Prazo da migração",
+ "admin.config.git.gc_args": "Argumentos da recolha de lixo",
+ "admin.config.git.diff.max_files": "Número máximo de ficheiros diff a serem apresentados",
+ "admin.config.git.diff.max_line_characters": "Número máximos de caracteres diff por linha",
+ "admin.config.git.diff.max_lines": "Número máximo de linhas diff por ficheiro",
+ "admin.config.git.disable_diff_highlight": "Desabilitar o realce de sintaxe no diff",
+ "admin.config.git.version": "Versão do Git",
+ "admin.config.git.header": "Configuração do Git",
+ "admin.config.ssh.minimum_key_sizes": "Tamanhos mínimos da chave",
+ "admin.config.ssh.minimum_key_size_check": "Verificação de tamanho mínimo da chave",
+ "admin.config.ssh.keygen_path": "Localização do gerador de chaves (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Localização do teste das chaves",
+ "admin.config.ssh.root_path": "Localização base",
+ "admin.config.ssh.listen_port": "Porto de escuta",
+ "admin.config.ssh.port": "Porto",
+ "admin.config.ssh.domain": "Domínio do servidor SSH",
+ "admin.config.ssh.use_builtin_server": "Usar servidor integrado",
+ "admin.config.ssh.enabled": "Habilitado",
+ "admin.config.ssh.header": "Configuração SSH",
+ "admin.users.never_login": "Nunca acedeu",
+ "admin.users.last_login": "Último acesso",
+ "admin.users.created": "Criada",
+ "admin.users.repos": "Repos.",
+ "admin.users.2fa": "Autenticação em dois passos",
+ "admin.users.remote": "Remoto",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Reservado",
+ "admin.users.restricted": "Restrita",
+ "admin.users.admin": "Admin.",
+ "admin.users.activated": "Em uso",
+ "admin.users.full_name": "Nome completo",
+ "admin.users.name": "Nome de utilizador",
+ "admin.packages.published": "Publicado",
+ "admin.packages.size": "Tamanho",
+ "admin.packages.repository": "Repositório",
+ "admin.packages.type": "Tipo",
+ "admin.packages.version": "Versão",
+ "admin.packages.name": "Nome",
+ "admin.packages.creator": "Criador",
+ "admin.packages.owner": "Proprietário",
+ "admin.packages.unreferenced_size": "Tamanho não referenciado: %s",
+ "admin.packages.total_size": "Tamanho total: %s",
+ "admin.repos.lfs_size": "Tamanho do LFS",
+ "admin.repos.size": "Tamanho",
+ "admin.repos.issues": "Questões",
+ "admin.repos.name": "Nome",
+ "admin.repos.owner": "Proprietário(a)",
+ "admin.orgs.new_orga": "Nova organização",
+ "admin.orgs.members": "Membros",
+ "admin.orgs.teams": "Equipas",
+ "admin.orgs.name": "Nome",
+ "admin.dashboard.rebuild_issue_indexer": "Reconstruir indexador de questões",
+ "admin.dashboard.start_schedule_tasks": "Iniciar tarefas de operações de agendamento",
+ "admin.dashboard.cancel_abandoned_jobs": "Cancelar trabalhos de operações abandonados",
+ "admin.dashboard.stop_endless_tasks": "Parar tarefas de operações intermináveis",
+ "admin.dashboard.stop_zombie_tasks": "Parar tarefas de operações zombies",
+ "admin.dashboard.gc_lfs": "Recolher lixo dos meta-elementos LFS",
+ "admin.dashboard.delete_old_system_notices": "Eliminar todas as notificações do sistema antigas da base de dados",
+ "admin.dashboard.update_checker": "Verificador de novas versões",
+ "admin.dashboard.cleanup_actions": "Limpar registos e artefactos expirados das operações",
+ "admin.dashboard.cleanup_packages": "Limpar pacotes expirados",
+ "admin.dashboard.cleanup_hook_task_table": "Limpar tabela hook_task",
+ "admin.dashboard.sync_external_users": "Sincronizar dados externos do utilizador",
+ "admin.dashboard.reinit_missing_repos": "Reinicializar todos os repositórios Git em falta para os quais existam registos",
+ "admin.dashboard.resync_all_hooks": "Voltar a sincronizar automatismos Git de todos os repositórios (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Modificar o ficheiro \".ssh/authorized_principals\" com os protagonistas SSH do Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Sincronizar o ficheiro \".ssh/authorized_keys\" com as chaves SSH do Forgejo.",
+ "admin.dashboard.git_gc_repos": "Fazer a recolha do lixo em todos os repositórios",
+ "admin.dashboard.update_migration_poster_id": "Sincronizar os IDs do remetente da migração",
+ "admin.dashboard.deleted_branches_cleanup": "Limpar ramos eliminados",
+ "admin.dashboard.archive_cleanup": "Eliminar arquivos de repositórios antigos",
+ "admin.dashboard.check_repo_stats": "Verificar as estatísticas de todos os repositórios",
+ "admin.dashboard.repo_health_check": "Verificar a saúde de todos os repositórios",
+ "admin.dashboard.update_mirrors": "Sincronizar réplicas",
+ "admin.dashboard.sync_repo_tags": "Sincronizar etiquetas dos dados do Git para a base de dados",
+ "admin.dashboard.sync_repo_branches": "Sincronizar ramos perdidos de dados do Git para a base de dados",
+ "admin.dashboard.delete_generated_repository_avatars": "Eliminar avatares gerados do repositório",
+ "admin.dashboard.sync_tag.started": "Sincronização de etiquetas iniciada",
+ "admin.dashboard.sync_branch.started": "Sincronização de ramos iniciada",
+ "admin.dashboard.delete_old_actions.started": "Foi iniciado o processo de eliminação de todos os trabalhos antigos da base de dados.",
+ "admin.dashboard.delete_missing_repos.started": "Foi iniciada a tarefa de eliminação de todos os repositórios que não têm ficheiros git.",
+ "admin.dashboard.delete_repo_archives.started": "Foi iniciada a tarefa de eliminação de todos os repositórios arquivados.",
+ "admin.dashboard.delete_inactive_accounts.started": "Foi iniciada a eliminação de todas as contas que não foram habilitadas.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s concluído",
+ "admin.dashboard.cron.error": "Erro no cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s cancelado: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron iniciado: %[1]s",
+ "admin.dashboard.task.unknown": "Tarefa desconhecida: %[1]s",
+ "admin.dashboard.task.finished": "Tarefa: %[1]s iniciada por %[2]s foi concluída",
+ "admin.dashboard.task.error": "Erro na tarefa: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Tarefa: %[1]s cancelada: %[3]s",
+ "admin.dashboard.task.process": "Tarefa: %[1]s",
+ "admin.dashboard.task.started": "Tarefa iniciada: %[1]s",
+ "admin.dashboard.operation_run": "Executar",
+ "admin.dashboard.operation_switch": "Comutar",
+ "admin.dashboard.operation_name": "Nome da operação",
+ "admin.dashboard.system_status": "Estado do sistema",
+ "admin.dashboard.operations": "Operações de manutenção",
+ "admin.dashboard.statistic": "Resumo",
+ "admin.dashboard.new_version_hint": "O Forgejo %s está disponível, você está a correr a versão %s. Verifique o blog para mais detalhes.",
"admin.monitor.queue.settings.remove_all_items.success": "Todos os itens da fila foram removidos.",
"admin.monitor.queue.settings.remove_all_items": "Remover tudo",
"admin.monitor.queue.settings.changed": "Configurações modificadas",
@@ -767,5 +893,9 @@
"actions.runners.version": "Versão",
"actions.workflow.unknown_job_in_needs": "O trabalho com o ID %[1]s faz referência a trabalhos desconhecidos em `needs`: %[2]s.",
"actions.workflow.rerun_impossible": "A sequência de trabalho não pode ser executada novamente.",
- "actions.workflow.job_rerun_impossible": "O trabalho não pode ser executado novamente."
+ "actions.workflow.job_rerun_impossible": "O trabalho não pode ser executado novamente.",
+ "repo.files.caption": "Ficheiros do repositório (o cometimento mais recente em primeiro lugar)",
+ "repo.files.filename": "Nome do ficheiro",
+ "repo.files.last_commit_message": "Mensagem do último cometimento",
+ "repo.files.last_commit_date": "Data do último cometimento"
}
diff --git a/options/locale_next/locale_ru-RU.json b/options/locale_next/locale_ru-RU.json
index cb55dc14ac..55948dcae3 100644
--- a/options/locale_next/locale_ru-RU.json
+++ b/options/locale_next/locale_ru-RU.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Путь",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Схема",
+ "admin.config.db.user": "Пользователь",
+ "admin.config.db.name": "Имя",
+ "admin.config.db.host": "Сервер",
+ "admin.config.db.type": "Тип",
+ "admin.config.db.header": "Конфигурация базы данных",
+ "admin.config.mailer.user": "Пользователь",
+ "admin.config.mailer.smtp.port": "Порт SMTP",
+ "admin.config.mailer.smtp.addr": "Адрес SMTP",
+ "admin.config.mailer.enable_helo": "Включить HELO",
+ "admin.config.mailer.protocol": "Протокол",
+ "admin.config.mailer.use_dummy": "Заглушка",
+ "admin.config.mailer.sendmail.timeout": "Истечение ожидания Sendmail",
+ "admin.config.mailer.sendmail.args": "Дополнительные аргументы для Sendmail",
+ "admin.config.mailer.sendmail.path": "Путь Sendmail",
+ "admin.config.mailer.sendmail.use": "Использовать Sendmail",
+ "admin.config.mailer.name": "Имя",
+ "admin.config.mailer.enabled": "Почта включена",
+ "admin.config.mailer.header": "Конфигурация почтового сервера",
+ "admin.config.git.gc_timeout": "Ограничение времени на сборку мусора",
+ "admin.config.git.pull_timeout": "Ограничение времени на получение изменений",
+ "admin.config.git.clone_timeout": "Ограничение времени операций клонирования",
+ "admin.config.git.mirror_timeout": "Ограничение времени на синхронизацию зеркала",
+ "admin.config.git.migrate_timeout": "Ограничение времени переносов",
+ "admin.config.git.gc_args": "Аргументы сборщика мусора",
+ "admin.config.git.diff.max_files": "Макс. отображаемое количество файлов при сравнении",
+ "admin.config.git.diff.max_line_characters": "Макс. количество символов в строке при сравнении",
+ "admin.config.git.diff.max_lines": "Макс. количество строк в файле при сравнении",
+ "admin.config.git.disable_diff_highlight": "Отключить подсветку синтаксиса при сравнении",
+ "admin.config.git.version": "Версия git",
+ "admin.config.git.header": "Конфигурация Git",
+ "admin.config.ssh.minimum_key_sizes": "Минимальные размеры ключей",
+ "admin.config.ssh.minimum_key_size_check": "Проверка минимального размер ключа",
+ "admin.config.ssh.keygen_path": "Путь до генератора ключей («ssh-keygen»)",
+ "admin.config.ssh.key_test_path": "Путь к тестовому ключу",
+ "admin.config.ssh.root_path": "Корневой путь",
+ "admin.config.ssh.listen_port": "Прослушиваемый порт",
+ "admin.config.ssh.port": "Порт",
+ "admin.config.ssh.domain": "Домен SSH сервера",
+ "admin.config.ssh.use_builtin_server": "Использовать встроенный сервер",
+ "admin.config.ssh.enabled": "SSH включён",
+ "admin.config.ssh.header": "Конфигурация SSH",
+ "admin.users.never_login": "Никогда не входил",
+ "admin.users.last_login": "Последний вход",
+ "admin.users.created": "Регистрация",
+ "admin.users.repos": "Репозитории",
+ "admin.users.2fa": "2ФА",
+ "admin.users.remote": "Дистанц",
+ "admin.users.bot": "Бот",
+ "admin.users.reserved": "Резерв",
+ "admin.users.restricted": "Ограничен",
+ "admin.users.admin": "Администратор",
+ "admin.users.activated": "Активирован",
+ "admin.users.full_name": "Полное имя",
+ "admin.users.name": "Имя пользователя",
+ "admin.packages.published": "Опубликовано",
+ "admin.packages.size": "Размер",
+ "admin.packages.repository": "Репозиторий",
+ "admin.packages.type": "Тип",
+ "admin.packages.version": "Версия",
+ "admin.packages.name": "Наименование",
+ "admin.packages.creator": "Автор",
+ "admin.packages.owner": "Владелец",
+ "admin.packages.unreferenced_size": "Неуказанный размер: %s",
+ "admin.packages.total_size": "Общий размер: %s",
+ "admin.repos.lfs_size": "Размер LFS",
+ "admin.repos.size": "Размер",
+ "admin.repos.issues": "Задачи",
+ "admin.repos.name": "Название",
+ "admin.repos.owner": "Владелец",
+ "admin.orgs.new_orga": "Создать организацию",
+ "admin.orgs.members": "Участники",
+ "admin.orgs.teams": "Команды",
+ "admin.orgs.name": "Название",
+ "admin.dashboard.rebuild_issue_indexer": "Пересобрать индексатор задач",
+ "admin.dashboard.start_schedule_tasks": "Запустить запланированные задания Действий",
+ "admin.dashboard.cancel_abandoned_jobs": "Отменить брошенные задания Действий",
+ "admin.dashboard.stop_endless_tasks": "Остановить непрекращающиеся задания Действий",
+ "admin.dashboard.stop_zombie_tasks": "Остановить зомби-задания Действий",
+ "admin.dashboard.gc_lfs": "Выполнить сборку мусора метаобъектов LFS",
+ "admin.dashboard.delete_old_system_notices": "Удалить все старые системные уведомления из базы данных",
+ "admin.dashboard.update_checker": "Проверка обновлений",
+ "admin.dashboard.cleanup_actions": "Удалить устаревшие журналы и артефакты Действий",
+ "admin.dashboard.cleanup_packages": "Удалить устаревшие пакеты",
+ "admin.dashboard.cleanup_hook_task_table": "Очистить таблицу hook_task",
+ "admin.dashboard.sync_external_users": "Синхронизировать данные сторонних пользователей",
+ "admin.dashboard.reinit_missing_repos": "Переинициализировать все отсутствующие Git репозитории, для которых существуют записи",
+ "admin.dashboard.resync_all_hooks": "Синхронизировать Git-хуки во всех репозиториях (pre-receive, update, post-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "Обновить учётные данные SSH Forgejo в файле «.ssh/authorized_principals».",
+ "admin.dashboard.resync_all_sshkeys": "Обновить SSH-ключи Forgejo в файле «.ssh/authorized_keys».",
+ "admin.dashboard.git_gc_repos": "Выполнить сборку мусора для всех репозиториев",
+ "admin.dashboard.update_migration_poster_id": "Обновить ИД плакатов миграции",
+ "admin.dashboard.deleted_branches_cleanup": "Очистка удалённых ветвей",
+ "admin.dashboard.archive_cleanup": "Удалить старые архивы репозитория",
+ "admin.dashboard.check_repo_stats": "Проверить всю статистику репозитория",
+ "admin.dashboard.repo_health_check": "Проверка состояния всех репозиториев",
+ "admin.dashboard.update_mirrors": "Обновить зеркала",
+ "admin.dashboard.sync_repo_tags": "Синхронизировать теги Git-репозиториев в базу данных",
+ "admin.dashboard.sync_repo_branches": "Синхронизировать ветви из Git в базу данных",
+ "admin.dashboard.delete_generated_repository_avatars": "Удалить сгенерированные картинки репозиториев",
+ "admin.dashboard.sync_tag.started": "Начата синхронизация тегов",
+ "admin.dashboard.sync_branch.started": "Начата синхронизация ветвей",
+ "admin.dashboard.delete_old_actions.started": "Запущено удаление всех старых активностей из БД.",
+ "admin.dashboard.delete_missing_repos.started": "Начато удаление всех репозиториев без Git-файлов.",
+ "admin.dashboard.delete_repo_archives.started": "Удаление всех архивов репозитория началось.",
+ "admin.dashboard.delete_inactive_accounts.started": "Удаление всех неактивированных учётных записей началось.",
+ "admin.dashboard.cron.finished": "Планировщик: %[1]s завершено",
+ "admin.dashboard.cron.error": "Ошибка в запланированном задании: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Планировщик: %[1]s отменено: %[3]s",
+ "admin.dashboard.cron.process": "Планировщик: %[1]s",
+ "admin.dashboard.cron.started": "Планировщик запущен: %[1]s",
+ "admin.dashboard.task.unknown": "Неизвестное задание: %[1]s",
+ "admin.dashboard.task.finished": "Задание %[1]s, начатое %[2]s, завершено",
+ "admin.dashboard.task.error": "Ошибка в задании: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Задание %[1]s отменено: %[3]s",
+ "admin.dashboard.task.process": "Задание: %[1]s",
+ "admin.dashboard.task.started": "Началось задание: %[1]s",
+ "admin.dashboard.operation_run": "Запуск",
+ "admin.dashboard.operation_switch": "Переключить",
+ "admin.dashboard.operation_name": "Имя операции",
+ "admin.dashboard.system_status": "Состояние системы",
+ "admin.dashboard.operations": "Обслуживание",
+ "admin.dashboard.statistic": "Статистика",
+ "admin.dashboard.new_version_hint": "Доступна новая версия Forgejo %s, вы используете %s. Более подробную информацию читайте в блоге.",
"admin.monitor.queue.settings.remove_all_items.success": "Все элементы в очереди были удалены.",
"admin.monitor.queue.settings.remove_all_items": "Удалить все",
"admin.monitor.queue.settings.changed": "Настройки обновлены",
@@ -22,7 +148,7 @@
"admin.users.list_status_filter.is_2fa_enabled": "2ФА включена",
"admin.users.list_status_filter.not_prohibit_login": "Вход разрешён",
"admin.users.list_status_filter.is_prohibit_login": "Вход запрещён",
- "admin.users.list_status_filter.not_restricted": "Не ограниченные",
+ "admin.users.list_status_filter.not_restricted": "Неограниченные",
"admin.users.list_status_filter.is_restricted": "Ограниченные",
"admin.users.list_status_filter.not_admin": "Не администраторы",
"admin.users.list_status_filter.is_admin": "Администраторы",
@@ -32,18 +158,18 @@
"admin.users.list_status_filter.menu_text": "Фильтр",
"admin.system_status.gc_times": "Сборок мусора",
"admin.system_status.last_gc_pause": "Последняя пауза сборщика",
- "admin.system_status.total_gc_pause": "Итоговая задержка сборщика",
+ "admin.system_status.total_gc_pause": "Общая задержка сборщика",
"admin.system_status.last_gc_time": "Прошло с последнего сбора мусора",
"admin.system_status.next_gc_recycle": "Следующее высвобождение сборщиком мусора",
"admin.system_status.other_system_allocation_obtained": "Прочие системные выделения памяти",
- "admin.system_status.gc_metadata_obtained": "Метаданных сборщика мусора создавалось",
+ "admin.system_status.gc_metadata_obtained": "Метаданных сборщика мусора получено",
"admin.system_status.profiling_bucket_hash_table_obtained": "Хеш-таблиц получено при профайлинге",
"admin.system_status.mcache_structures_obtained": "Получено структур MCache",
"admin.system_status.mcache_structures_usage": "Использование структур MCache",
"admin.system_status.mspan_structures_obtained": "Структур MSpan выделялось",
"admin.system_status.mspan_structures_usage": "Использование структур MSpan",
"admin.system_status.stack_memory_obtained": "Стековой памяти выделялось",
- "admin.system_status.bootstrap_stack_usage": "Использование стека загрузчика",
+ "admin.system_status.bootstrap_stack_usage": "Использование стековой памяти",
"admin.system_status.heap_objects": "Объектов динамической памяти",
"admin.system_status.heap_memory_released": "Освобождено динамической памяти",
"admin.system_status.heap_memory_in_use": "Используемая динамическая память",
@@ -80,10 +206,10 @@
"webauthn.error.empty": "Необходимо задать имя для этого ключа.",
"webauthn.error.duplicated": "Этот токен авторизации не разрешен для выполнения этого запроса. Убедитесь, что токен не был зарегистрирован ранее.",
"webauthn.error.unable_to_process": "Сервер не смог обработать ваш запрос.",
- "webauthn.error.insecure": "WebAuthn поддерживает только безопасные соединения. Для тестирования по HTTP можно использовать \"localhost\" или \"127.0.0.1\"",
- "webauthn.error.unknown": "Произошла неизвестная ошибка. Повторите попытку.",
- "webauthn.unsupported_browser": "Ваш браузер в настоящее время не поддерживает WebAuthn.",
- "webauthn.error": "Не удалось прочитать токен авторизации.",
+ "webauthn.error.insecure": "WebAuthn допускает только безопасные соединения. При тестировании по HTTP используйте «localhost» или «127.0.0.1»",
+ "webauthn.error.unknown": "Произошла неизвестная ошибка. Попробуйте ещё раз.",
+ "webauthn.unsupported_browser": "Ваш браузер не поддерживает WebAuthn.",
+ "webauthn.error": "Не удалось считать токен авторизации.",
"webauthn.use_twofa": "Используйте двухфакторный код с вашего телефона",
"webauthn.press_button": "Подтвердите действие на токене авторизации…",
"webauthn.sign_in": "Подтвердите действие на токене авторизации. Если на вашем токене нет кнопки, вставьте его заново.",
@@ -392,7 +518,7 @@
"moderation.abuse_category.other_violations": "Прочие нарушения правил",
"moderation.report_remarks": "Подробности",
"moderation.report_abuse": "Пожаловаться",
- "moderation.report_remarks.placeholder": "Пожалуйста, предоставьте немного подробностей о содержимом, на которое вы жалуетесь.",
+ "moderation.report_remarks.placeholder": "Пожалуйста, объясните, почему вы жалуетесь на это содержимое.",
"moderation.reporting_failed": "Не удалось отправить жалобу: %v",
"moderation.report_content": "Пожаловаться",
"moderation.report_abuse_form.already_reported": "Вы уже пожаловались на это содержимое",
@@ -756,5 +882,27 @@
"actions.runners.runner_setup.page_title": "Настройка исполнителя %s",
"actions.secrets.edit_button": "Изменить секрет «%s»",
"actions.secrets.mutation.success_message": "Секрет «%s» был изменён.",
- "actions.secrets.mutation.name_description": "Название секрета может содержать только буквы, цифры и нижние подчёркивания. Оно не может начинаться на FORGEJO_, GITEA_, GITHUB_, или на цифру. Оно будет сохранено в верхнем регистре."
+ "actions.secrets.mutation.name_description": "Название секрета может содержать только буквы, цифры и нижние подчёркивания. Оно не может начинаться на FORGEJO_, GITEA_, GITHUB_, или на цифру. Оно будет сохранено в верхнем регистре.",
+ "actions.runners.edit_runner.regenerate_token_help": "Существующий токен будет сразу же отозван. Новый токен будет предоставлен на следующей странице.",
+ "actions.runners.runner_details.labels_note": "Метки задаются на самом исполнителе в файле конфигурации или как аргументы запуска. Метки обновляются каждый раз, когда исполнитель устанавливает соединение с Forgejo.",
+ "actions.runs.scheduled_description": "Запланированный запуск для коммита %[2]s",
+ "settings.authorized_integration.desc": "Авторизованные интеграции позволяют Forgejo получать подписанные JWT, проверять их заявления на соответствие настроенным правилам и разрешать по ним доступ к API Forgejo.",
+ "settings.authorized_integration.none": "Нет настроенных авторизованных интеграций.",
+ "settings.authorized_integration.edit": "Изменить",
+ "settings.authorized_integration.edit_page_title": "Авторизованная интеграция %s",
+ "settings.authorized_integration.create_page_title": "Создать авторизованную интеграцию",
+ "settings.authorized_integration.save": "Сохранить авторизованную интеграцию",
+ "settings.authorized_integration.create_success": "Авторизованная интеграция создана: %s",
+ "settings.authorized_integration.add": "Добавить авторизованную интеграцию",
+ "settings.authorized_integration.field.name": "Название",
+ "settings.authorized_integration.field.description": "Описание",
+ "settings.authorized_integration.field.issuer": "Заявитель (заявление iss)",
+ "settings.authorized_integration.field.audience": "Аудитория (заявление aud)",
+ "settings.authorized_integration.issuer.invalid": "Проверка заявителя повалилась: %s",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.label": "Файл раб. потока (без пути каталога):",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.help": "Если не указан, будут разрешены все раб. потоки. Ознакомьтесь с синтаксисом в документации %[2]s.testing.yml, test-*.yml.",
+ "settings.authorized_integration.forgejo_actions_local.event.label": "Событие:",
+ "settings.authorized_integration.forgejo_actions_local.event.help": "Если события не выбраны, будут разрешены любые.",
+ "settings.authorized_integration.forgejo_actions_local.select_repo": "Выбрать",
+ "settings.authorized_integration.copy_audience": "Копировать аудиторию в буфер обмена"
}
diff --git a/options/locale_next/locale_si-LK.json b/options/locale_next/locale_si-LK.json
index 2e6decc0e9..c14c2b6dd7 100644
--- a/options/locale_next/locale_si-LK.json
+++ b/options/locale_next/locale_si-LK.json
@@ -1,4 +1,97 @@
{
+ "admin.config.db.path": "මාර්ගය",
+ "admin.config.db.schema": "යෝජනා ක්රමය",
+ "admin.config.db.user": "පරිශීලක නාමය",
+ "admin.config.db.name": "නම",
+ "admin.config.db.host": "සත්කාරක",
+ "admin.config.db.type": "වර්ගය",
+ "admin.config.db.header": "දත්ත සමුදායෙහි වින්යාසය",
+ "admin.config.mailer.user": "පරිශීලක",
+ "admin.config.mailer.smtp.port": "ප්රශ්නය විසඳිලා වරාය",
+ "admin.config.mailer.sendmail.timeout": "සෙන්ඩ්මේල් වේලාව",
+ "admin.config.mailer.sendmail.args": "Sendmail වෙත අමතර තර්ක",
+ "admin.config.mailer.sendmail.path": "සෙන්ඩ්මේල් මාර්ගය",
+ "admin.config.mailer.sendmail.use": "සෙන්ඩ්මේල් භාවිතා කරන්න",
+ "admin.config.mailer.name": "නම",
+ "admin.config.mailer.enabled": "සබල කර ඇත",
+ "admin.config.git.gc_timeout": "GC මෙහෙයුම කාලය",
+ "admin.config.git.pull_timeout": "මෙහෙයුම කාල ඉමුද අදින්න",
+ "admin.config.git.clone_timeout": "පරිගණක ක්රිඩාවට සමාන මෙහෙයුම් කාලය",
+ "admin.config.git.mirror_timeout": "මිරර් යාවත්කාලීන වේලාව",
+ "admin.config.git.migrate_timeout": "සංක්රමණ කාලය",
+ "admin.config.git.gc_args": "GC තර්ක",
+ "admin.config.git.diff.max_files": "මැක්ස් ඩිෆ් ගොනු (පෙන්වීමට)",
+ "admin.config.git.diff.max_line_characters": "මැක්ස් ඩිෆ් චරිත (තනි රේඛාවක් සඳහා)",
+ "admin.config.git.diff.max_lines": "මැක්ස් ඩිෆ් ලයින්ස් (තනි ගොනුවක් සඳහා)",
+ "admin.config.git.disable_diff_highlight": "ඩිෆ් සයින්ටැක්ස් ඉස්මතු කරන්න අක්රීය කරන්න",
+ "admin.config.git.version": "ගිට් අනුවාදය",
+ "admin.config.git.header": "ගිට් වින්යාසය",
+ "admin.config.ssh.minimum_key_sizes": "අවම යතුරෙහි ප්රමාණ",
+ "admin.config.ssh.minimum_key_size_check": "අවම කී ප්රමාණය පරීක්ෂා",
+ "admin.config.ssh.keygen_path": "Keygen ('ssh-keygen') මාර්ගය",
+ "admin.config.ssh.key_test_path": "ප්රධාන ටෙස්ට් මාර්ගය",
+ "admin.config.ssh.root_path": "මූල මාර්ගය",
+ "admin.config.ssh.listen_port": "සවන් වරාය",
+ "admin.config.ssh.port": "වරාය",
+ "admin.config.ssh.domain": "SSH සේවාදායකය වසම්",
+ "admin.config.ssh.use_builtin_server": "Built-දී සේවාදායකය භාවිතා",
+ "admin.config.ssh.enabled": "සබල කර ඇත",
+ "admin.config.ssh.header": "SSH වින්යාසය",
+ "admin.users.never_login": "කවදාවත් සිග්නෙඩ්-දී",
+ "admin.users.last_login": "අවසන් සංඥා දී",
+ "admin.users.created": "සෑදීම",
+ "admin.users.repos": "කෝෂ්ඨය",
+ "admin.users.restricted": "සීමා",
+ "admin.users.admin": "පරිපාලක",
+ "admin.users.activated": "සක්රිය",
+ "admin.users.full_name": "සම්පූර්ණ නම",
+ "admin.users.name": "පරිශීලක නාමය",
+ "admin.packages.size": "ප්රමාණය",
+ "admin.packages.repository": "කෝෂ්ඨය",
+ "admin.packages.type": "වර්ගය",
+ "admin.packages.name": "නම",
+ "admin.packages.owner": "හිමිකරු",
+ "admin.repos.size": "ප්රමාණය",
+ "admin.repos.issues": "ගැටළු",
+ "admin.repos.name": "නම",
+ "admin.repos.owner": "හිමිකරු",
+ "admin.orgs.new_orga": "නව සංවිධානය",
+ "admin.orgs.members": "සාමාජිකයින්",
+ "admin.orgs.teams": "කණ්ඩායම්",
+ "admin.orgs.name": "නම",
+ "admin.dashboard.cleanup_hook_task_table": "පිරිසිදු hook_task වගුව",
+ "admin.dashboard.sync_external_users": "බාහිර පරිශීලක දත්ත සමමුහූර්තනය",
+ "admin.dashboard.reinit_missing_repos": "අතුරුදහන් වූ සියලුම ගිට් නිධි නැවත ආරම්භ කිරීම",
+ "admin.dashboard.resync_all_hooks": "පෙර ලැබීමට, යාවත්කාලීන කිරීමට සහ සියලු ගබඩාවන් නැවත ලබා ගැනීමට කොකු නැවත සකස් කරන්න.",
+ "admin.dashboard.resync_all_sshprincipals": "Forgejo SSH විදුහල්පතිවරුන් සමඟ '.ssh/authorized_විදුහල්පති' ගොනුව යාවත්කාලීන කරන්න.",
+ "admin.dashboard.resync_all_sshkeys": "Forgejo SSH යතුරු සමඟ '.ssh/authorized_keys' ගොනුව යාවත්කාලීන කරන්න.",
+ "admin.dashboard.git_gc_repos": "කසළ සියලු ගබඩාවල් එකතු කරයි",
+ "admin.dashboard.update_migration_poster_id": "සංක්රමණ පෝස්ටර් යාවත්කාලීන කිරීම",
+ "admin.dashboard.deleted_branches_cleanup": "මකාදැමූ ශාඛා පිරිසිදු කිරීම",
+ "admin.dashboard.archive_cleanup": "පැරණි නිධි ලේඛනාගාරය මකන්න",
+ "admin.dashboard.check_repo_stats": "සියළුම කෝෂ්ඨවල සංඛ්යාලේඛන පරීක්ෂා කරන්න",
+ "admin.dashboard.repo_health_check": "සෞඛ්ය සියලු ගබඩාවලදී පරීක්ෂා",
+ "admin.dashboard.update_mirrors": "දර්පණ යාවත්කාලීන කරන්න",
+ "admin.dashboard.delete_generated_repository_avatars": "ජනනය කරන ලද නිධි අවතාරය මකන්න",
+ "admin.dashboard.delete_old_actions.started": "දත්ත සමුදාය ආරම්භ සිට සියලු පැරණි ක්රියා මකන්න.",
+ "admin.dashboard.delete_missing_repos.started": "සියළුම ගබඩාවන් මකා දමන්න Git ගොනු කාර්යය ආරම්භ විය.",
+ "admin.dashboard.delete_repo_archives.started": "සියලුම ගබඩාවල් ලේඛනාගාර කාර්යය ආරම්භ කිරීම මකන්න.",
+ "admin.dashboard.delete_inactive_accounts.started": "සියලුම අක්රීය ගිණුම් කාර්යය ආරම්භ කර මකා දමන්න.",
+ "admin.dashboard.cron.finished": "ක්රෝන්:%[1]s අවසන් වී ඇත",
+ "admin.dashboard.cron.error": "ක්රෝන් හි දෝෂය: %s:%[3]s",
+ "admin.dashboard.cron.process": "ක්රෝන්:%[1]s",
+ "admin.dashboard.cron.started": "ආරම්භ Con:%[1]s",
+ "admin.dashboard.task.unknown": "නොදන්නා කාර්යය:%[1]s",
+ "admin.dashboard.task.finished": "කාර්යය:%[1]s[2]s විසින් ආරම්භ කර ඇත",
+ "admin.dashboard.task.error": "කාර්යයයේ දෝෂය:%[1]s:%[3]s",
+ "admin.dashboard.task.process": "කාර්යය:%[1]s",
+ "admin.dashboard.task.started": "ආරම්භ කාර්යය:%[1]s",
+ "admin.dashboard.operation_run": "ධාවනය",
+ "admin.dashboard.operation_switch": "මාරුවන්න",
+ "admin.dashboard.operation_name": "මෙහෙයුමේ නම",
+ "admin.dashboard.system_status": "පද්ධතියේ තත්වය",
+ "admin.dashboard.operations": "නඩත්තු මෙහෙයුම්",
+ "admin.dashboard.statistic": "සාරාංශය",
"admin.monitor.queue.settings.changed": "සැකසුම් යාවත්කාල කෙරිණි",
"admin.monitor.queue.settings.submit": "සැකසුම් යාවත්කාල කරන්න",
"admin.monitor.queue.settings.maxnumberworkers.error": "මැක්ස් කම්කරුවන්ගේ සංඛ්යාව අංකයක් විය යුතුය",
diff --git a/options/locale_next/locale_sk-SK.json b/options/locale_next/locale_sk-SK.json
index f7c2c1c5a4..95e3f8aa2f 100644
--- a/options/locale_next/locale_sk-SK.json
+++ b/options/locale_next/locale_sk-SK.json
@@ -1,4 +1,11 @@
{
+ "admin.config.mailer.enable_helo": "Povolené HELO",
+ "admin.config.mailer.enabled": "Povolené",
+ "admin.config.ssh.enabled": "Povolené",
+ "admin.packages.repository": "Repozitár",
+ "admin.packages.owner": "Vlastník",
+ "admin.repos.owner": "Vlastník",
+ "admin.dashboard.delete_generated_repository_avatars": "Odstrániť vygenerované avatary repozitárov",
"webauthn.error.timeout": "Vypršal čas na čítanie vašeho kľúča. Znova načítajte túto stránku a skúste to opäť.",
"webauthn.error.empty": "Musíte nastaviť meno pre tento kľúč.",
"webauthn.error.duplicated": "Bezpečnostný kľúč nie je pre túto požiadavku povolený. Uistite sa, že kľúč ešte nie je zaregistrovaný.",
diff --git a/options/locale_next/locale_sl.json b/options/locale_next/locale_sl.json
index 61c89d24fa..527f157622 100644
--- a/options/locale_next/locale_sl.json
+++ b/options/locale_next/locale_sl.json
@@ -1,4 +1,15 @@
{
+ "admin.config.git.gc_timeout": "GC Časovni rok delovanja",
+ "admin.config.git.pull_timeout": "Potegnite Časovni rok delovanja",
+ "admin.config.git.clone_timeout": "Časovni limit operacije kloniranja",
+ "admin.config.git.mirror_timeout": "Časovna omejitev posodobitve zrcala",
+ "admin.config.git.migrate_timeout": "Časovna omejitev migracije",
+ "admin.config.git.gc_args": "Argumenti GC",
+ "admin.config.git.diff.max_files": "Prikazane največje razlike v datotekah",
+ "admin.config.git.diff.max_line_characters": "Največ različnih znakov na vrstico",
+ "admin.config.git.diff.max_lines": "Največ razlikovalnih vrstic na datoteko",
+ "admin.config.git.disable_diff_highlight": "Onemogočite razlikovanje sintakse",
+ "admin.config.git.header": "Konfiguracija Git",
"webauthn.error.timeout": "Preden je bilo mogoče prebrati vaš ključ, je bil dosežen časovni rok. Ponovno naložite to stran in poskusite znova.",
"webauthn.error.empty": "Za ta ključ morate nastaviti ime.",
"webauthn.error.duplicated": "Varnostni ključ za to zahtevo ni dovoljen. Prepričajte se, da ključ še ni registriran.",
diff --git a/options/locale_next/locale_sr-SP.json b/options/locale_next/locale_sr-SP.json
index b4f0454546..28019edfc8 100644
--- a/options/locale_next/locale_sr-SP.json
+++ b/options/locale_next/locale_sr-SP.json
@@ -1,4 +1,45 @@
{
+ "admin.config.db.path": "Пут",
+ "admin.config.db.name": "Име",
+ "admin.config.db.host": "Хост",
+ "admin.config.db.type": "Тип",
+ "admin.config.db.header": "Конфигурација базе података",
+ "admin.config.mailer.user": "Корисник",
+ "admin.config.mailer.name": "Име",
+ "admin.config.mailer.enabled": "Омогућено",
+ "admin.config.git.gc_timeout": "Време до отказивања cакупљање смећа",
+ "admin.config.git.pull_timeout": "Време до отказивања pull операцији",
+ "admin.config.git.clone_timeout": "Време до отказивања клонирањем",
+ "admin.config.git.mirror_timeout": "Време до отазање синхронизацији огледала",
+ "admin.config.git.migrate_timeout": "Време до отказања миграције",
+ "admin.config.git.gc_args": "Аргументи cкупљања смећа (GC)",
+ "admin.config.git.diff.max_files": "Максималан број измењених датотека (приказаних)",
+ "admin.config.git.diff.max_line_characters": "Максималан број карактера с разликама по реду",
+ "admin.config.git.diff.max_lines": "Максималан број редова с разликама по фајлу",
+ "admin.config.git.disable_diff_highlight": "Онемогући бојење синтаксе када гледате разлике",
+ "admin.config.git.header": "Git конфигурација",
+ "admin.config.ssh.minimum_key_sizes": "Минимална величина кључа",
+ "admin.config.ssh.minimum_key_size_check": "Провера минималне величине кључа",
+ "admin.config.ssh.keygen_path": "Пут до генератора кључева ('ssh-keygen')",
+ "admin.config.ssh.key_test_path": "Пут до кључа",
+ "admin.config.ssh.root_path": "Основни пут",
+ "admin.config.ssh.listen_port": "Порт за слушање",
+ "admin.config.ssh.port": "Порт",
+ "admin.config.ssh.enabled": "Активирано",
+ "admin.config.ssh.header": "ССХ конфигурација",
+ "admin.users.created": "Креирано",
+ "admin.users.repos": "репоси",
+ "admin.users.admin": "Администратор",
+ "admin.users.activated": "Активиран",
+ "admin.repos.issues": "Задаци",
+ "admin.repos.name": "Име",
+ "admin.repos.owner": "Власник",
+ "admin.orgs.members": "Чланови",
+ "admin.orgs.teams": "Тимови",
+ "admin.orgs.name": "Име",
+ "admin.dashboard.operation_run": "Покрени",
+ "admin.dashboard.operation_switch": "Пребаци",
+ "admin.dashboard.operation_name": "Име операције",
"admin.system_status.gc_times": "Времена cакупљању смећа",
"admin.system_status.last_gc_pause": "Задња пауза у cакупљању смећа",
"admin.system_status.total_gc_pause": "Укупно време cакупљању смећа",
diff --git a/options/locale_next/locale_sv-SE.json b/options/locale_next/locale_sv-SE.json
index 953bb8fe44..c62e87c485 100644
--- a/options/locale_next/locale_sv-SE.json
+++ b/options/locale_next/locale_sv-SE.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Sökväg",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Schema",
+ "admin.config.db.user": "Användarnamn",
+ "admin.config.db.name": "Namn",
+ "admin.config.db.host": "Värd",
+ "admin.config.db.type": "Typ",
+ "admin.config.db.header": "Databaskonfiguration",
+ "admin.config.mailer.user": "Användare",
+ "admin.config.mailer.smtp.port": "SMTP-port",
+ "admin.config.mailer.smtp.addr": "SMTP-värd",
+ "admin.config.mailer.enable_helo": "Aktivera HELO",
+ "admin.config.mailer.protocol": "Protokoll",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Sendmail-tidsgräns",
+ "admin.config.mailer.sendmail.args": "Extra argument till sendmail",
+ "admin.config.mailer.sendmail.path": "Sökväg för sendmail",
+ "admin.config.mailer.sendmail.use": "Använd Sendmail",
+ "admin.config.mailer.name": "Namn",
+ "admin.config.mailer.enabled": "Aktiverad",
+ "admin.config.mailer.header": "E-postkonfiguration",
+ "admin.config.git.gc_timeout": "Tidsfrist för skräpsamling",
+ "admin.config.git.pull_timeout": "Tidsfrist för dragning",
+ "admin.config.git.clone_timeout": "Tidsfrist för kloning",
+ "admin.config.git.mirror_timeout": "Tidsfrist för spegeluppdatering",
+ "admin.config.git.migrate_timeout": "Migreringstimeout",
+ "admin.config.git.gc_args": "Skräpsamlarargument",
+ "admin.config.git.diff.max_files": "Maximalt antal diff-filer att visa",
+ "admin.config.git.diff.max_line_characters": "Maximalt antal diff-karaktärer per rad",
+ "admin.config.git.diff.max_lines": "Maximalt antal diff-rader per fil",
+ "admin.config.git.disable_diff_highlight": "Inaktivera syntaxmarkering i diffar",
+ "admin.config.git.version": "Git-version",
+ "admin.config.git.header": "Git-konfiguration",
+ "admin.config.ssh.minimum_key_sizes": "Minsta tillåtna nyckelstorlek",
+ "admin.config.ssh.minimum_key_size_check": "Kontroll av minsta tillåtna nyckelstorlek",
+ "admin.config.ssh.keygen_path": "Sökväg för nyckelgenerator (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "Testsökväg för nyckel",
+ "admin.config.ssh.root_path": "Rotsökväg",
+ "admin.config.ssh.listen_port": "Lyssningsport",
+ "admin.config.ssh.port": "Port",
+ "admin.config.ssh.domain": "SSH-serverdomän",
+ "admin.config.ssh.use_builtin_server": "Använd inbyggd server",
+ "admin.config.ssh.enabled": "Aktiverad",
+ "admin.config.ssh.header": "SSH-konfiguration",
+ "admin.users.never_login": "Aldrig loggat in",
+ "admin.users.last_login": "Senaste inloggning",
+ "admin.users.created": "Skapad",
+ "admin.users.repos": "Kodförråd",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Fjärråtkomst",
+ "admin.users.bot": "Bott",
+ "admin.users.reserved": "Reserverad",
+ "admin.users.restricted": "Begränsad",
+ "admin.users.admin": "Administratör",
+ "admin.users.activated": "Aktiverad",
+ "admin.users.full_name": "Fullständigt namn",
+ "admin.users.name": "Användarnamn",
+ "admin.packages.published": "Publicerad",
+ "admin.packages.size": "Storlek",
+ "admin.packages.repository": "Kodförråd",
+ "admin.packages.type": "Typ",
+ "admin.packages.version": "Version",
+ "admin.packages.name": "Namn",
+ "admin.packages.creator": "Skapare",
+ "admin.packages.owner": "Ägare",
+ "admin.packages.unreferenced_size": "Orefererad storlek: %s",
+ "admin.packages.total_size": "Total storlek: %s",
+ "admin.repos.lfs_size": "LFS-storlek",
+ "admin.repos.size": "Storlek",
+ "admin.repos.issues": "Ärenden",
+ "admin.repos.name": "Namn",
+ "admin.repos.owner": "Ägare",
+ "admin.orgs.new_orga": "Ny organisation",
+ "admin.orgs.members": "Medlemmar",
+ "admin.orgs.teams": "Team",
+ "admin.orgs.name": "Namn",
+ "admin.dashboard.rebuild_issue_indexer": "Återuppbygg ärendeindexerare",
+ "admin.dashboard.start_schedule_tasks": "Starta schemalagda actions-uppgifter",
+ "admin.dashboard.cancel_abandoned_jobs": "Avbryt övergivna actions-jobb",
+ "admin.dashboard.stop_endless_tasks": "Stoppa oändliga actions-uppgifter",
+ "admin.dashboard.stop_zombie_tasks": "Stoppa zombie actions-uppgifter",
+ "admin.dashboard.gc_lfs": "Skräpsamla LFS-metaobjekt",
+ "admin.dashboard.delete_old_system_notices": "Radera alla gamla systemmeddelanden från databasen",
+ "admin.dashboard.update_checker": "Uppdateringskontroll",
+ "admin.dashboard.cleanup_actions": "Städa utgångna loggar och artefakter från actions",
+ "admin.dashboard.cleanup_packages": "Städa utgångna paket",
+ "admin.dashboard.cleanup_hook_task_table": "Städa hook_task-tabellen",
+ "admin.dashboard.sync_external_users": "Synkronisera extern användardata",
+ "admin.dashboard.reinit_missing_repos": "Återinitialisera alla saknade kodförråd för vilka det finns poster",
+ "admin.dashboard.resync_all_hooks": "Återsynkronisera pre-receive-, update- och post-receive-krokar för alla kodförråd",
+ "admin.dashboard.resync_all_sshprincipals": "Uppdatera filen \".ssh/authorized_principals\" med Forgejo SSH-certifikatnamn.",
+ "admin.dashboard.resync_all_sshkeys": "Uppdatera filen \".ssh/authorized_keys\" med Forgejo SSH-nycklar.",
+ "admin.dashboard.git_gc_repos": "Rensa skräpfiler i samtliga kodförråd",
+ "admin.dashboard.update_migration_poster_id": "Uppdatera migrationsuppläggares ID:n",
+ "admin.dashboard.deleted_branches_cleanup": "Städa raderade grenar",
+ "admin.dashboard.archive_cleanup": "Radera gamla kodförrådsarkiv",
+ "admin.dashboard.check_repo_stats": "Kontrollera all kodförrådsstatistik",
+ "admin.dashboard.repo_health_check": "Hälsokontrollera alla kodförråd",
+ "admin.dashboard.update_mirrors": "Uppdatera speglar",
+ "admin.dashboard.sync_repo_tags": "Synkronisera taggar från Git-data till databas",
+ "admin.dashboard.sync_repo_branches": "Synkronisera saknade grenar från Git-data till databas",
+ "admin.dashboard.delete_generated_repository_avatars": "Ta bort genererade profilbilder för kodförrådet",
+ "admin.dashboard.sync_tag.started": "Taggsynkronisering startad",
+ "admin.dashboard.sync_branch.started": "Grensynkronisering startad",
+ "admin.dashboard.delete_old_actions.started": "Radering av alla gamla aktiviteter från databasen startad.",
+ "admin.dashboard.delete_missing_repos.started": "Uppgift att radera alla kodförråd som saknar Git-filer startad.",
+ "admin.dashboard.delete_repo_archives.started": "Uppgift att radera alla kodförrådsarkiv startad.",
+ "admin.dashboard.delete_inactive_accounts.started": "Uppgift att radera alla oaktiverade konton startad.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s har slutförts",
+ "admin.dashboard.cron.error": "Fel i Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s avbruten: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Startade Cron: %[1]s",
+ "admin.dashboard.task.unknown": "Okänd uppgift: %[1]s",
+ "admin.dashboard.task.finished": "Uppgift: %[1]s startad av %[2]s har slutförts",
+ "admin.dashboard.task.error": "Fel i uppgift: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Uppgift: %[1]s avbruten: %[3]s",
+ "admin.dashboard.task.process": "Uppgift: %[1]s",
+ "admin.dashboard.task.started": "Startade uppgift: %[1]s",
+ "admin.dashboard.operation_run": "Kör",
+ "admin.dashboard.operation_switch": "Byt till",
+ "admin.dashboard.operation_name": "Operationsnamn",
+ "admin.dashboard.system_status": "Systemstatus",
+ "admin.dashboard.operations": "Operationer för underhåll",
+ "admin.dashboard.statistic": "Översikt",
+ "admin.dashboard.new_version_hint": "Forgejo %s är nu tillgänglig, du kör %s. Se bloggen för mer detaljer.",
"admin.monitor.queue.settings.remove_all_items.success": "Alla objekt i kön har tagits bort.",
"admin.monitor.queue.settings.remove_all_items": "Ta bort alla",
"admin.monitor.queue.settings.changed": "Inställningar uppdaterade",
@@ -747,5 +873,24 @@
"user.activitypub_feed.original_source": "Ursprunglig källa",
"actions.workflow.unknown_job_in_needs": "Jobb med ID %[1]s refererar till okända jobb i `needs`: %[2]s.",
"actions.workflow.rerun_impossible": "Arbetsflödet kan inte köras om.",
- "actions.workflow.job_rerun_impossible": "Jobbet kan inte köras om."
+ "actions.workflow.job_rerun_impossible": "Jobbet kan inte köras om.",
+ "repo.files.caption": "Kodförråd filer (senaste incheckning först)",
+ "repo.files.filename": "Filnamn",
+ "repo.files.last_commit_message": "Senaste incheckningsmeddelande",
+ "repo.files.last_commit_date": "Senaste incheckningsdatum",
+ "actions.runs.delete.error_could_not_load_run": "Kunde inte ladda körning för att radera.",
+ "actions.runs.delete.error_could_not_delete_run": "Kunde inte radera körning.",
+ "actions.runs.delete.button": "Radera körning",
+ "actions.runs.delete.error": "Kunde inte radera arbetsflöde körning.",
+ "actions.runs.delete.confirm_action": "Vill du verkligen ta bort den här arbetsflödeskörningen?",
+ "settings.authorized_integrations": "Auktoriserade integrationer",
+ "settings.manage_authorized_integrations": "Auktoriserade integrationer",
+ "settings.authorized_integration.desc": "Auktoriserade integrationer tillåter Forgejo att ta emot signerade JWT:er, validera deras anspråk mot konfigurerade regler och tillåta dem att komma åt Forgejos API:er.",
+ "settings.authorized_integration.ui.generic": "Generisk JWT",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Forgejo Actions (Lokalt)",
+ "settings.authorized_integration.none": "Inga auktoriserade integrationer är för närvarande konfigurerade.",
+ "settings.authorized_integration.field.name": "Namn",
+ "settings.authorized_integration.field.description": "Beskrivning",
+ "settings.authorized_integration.field.description.placeholder": "Används för att publicera paket när ...",
+ "settings.authorized_integration.claims.generic": "Generiska JWT-regler"
}
diff --git a/options/locale_next/locale_ta.json b/options/locale_next/locale_ta.json
index 44dd41629c..8d8aef87b2 100644
--- a/options/locale_next/locale_ta.json
+++ b/options/locale_next/locale_ta.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "பாதை",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "திட்டம்",
+ "admin.config.db.user": "பயனர் பெயர்",
+ "admin.config.db.name": "பெயர்",
+ "admin.config.db.host": "விருந்தோம்பி",
+ "admin.config.db.type": "வகை",
+ "admin.config.db.header": "தரவுத்தள கட்டமைப்பு",
+ "admin.config.mailer.user": "பயனர்",
+ "admin.config.mailer.smtp.port": "SMTP துறைமுகம்",
+ "admin.config.mailer.smtp.addr": "SMTP புரவலன்",
+ "admin.config.mailer.enable_helo": "HELOவை இயக்கு",
+ "admin.config.mailer.protocol": "நெறிமுறை",
+ "admin.config.mailer.use_dummy": "போலி",
+ "admin.config.mailer.sendmail.timeout": "அனுப்பு அஞ்சல் நேரம் முடிந்தது",
+ "admin.config.mailer.sendmail.args": "Sendmailக்கு கூடுதல் வாதங்கள்",
+ "admin.config.mailer.sendmail.path": "அனுப்பு அஞ்சல் பாதை",
+ "admin.config.mailer.sendmail.use": "அனுப்பு அஞ்சல் பயன்படுத்தவும்",
+ "admin.config.mailer.name": "பெயர்",
+ "admin.config.mailer.enabled": "இயக்கப்பட்டது",
+ "admin.config.mailer.header": "அஞ்சல் அமைப்பு",
+ "admin.config.git.gc_timeout": "GC ஆபரேசன் நேரம் முடிந்தது",
+ "admin.config.git.pull_timeout": "புல் ஆபரேசன் நேரம் முடிந்தது",
+ "admin.config.git.clone_timeout": "நகலி ஆபரேசன் காலாவதியானது",
+ "admin.config.git.mirror_timeout": "மிரர் புதுப்பிப்பு நேரம் முடிந்தது",
+ "admin.config.git.migrate_timeout": "இடம்பெயர்வு நேரம் முடிந்தது",
+ "admin.config.git.gc_args": "GC வாதங்கள்",
+ "admin.config.git.diff.max_files": "அதிகபட்ச வேறுபாடு கோப்புகள் காட்டப்பட்டுள்ளன",
+ "admin.config.git.diff.max_line_characters": "ஒரு வரிக்கு அதிகபட்ச வேறுபாடு எழுத்துக்கள்",
+ "admin.config.git.diff.max_lines": "ஒரு கோப்பிற்கு அதிகபட்ச வேறுபாடு கோடுகள்",
+ "admin.config.git.disable_diff_highlight": "டிஃப் தொடரியல் சிறப்பம்சத்தை முடக்கு",
+ "admin.config.git.version": "Git பதிப்பு",
+ "admin.config.git.header": "Git கட்டமைப்பு",
+ "admin.config.ssh.minimum_key_sizes": "குறைந்தபட்ச முக்கிய அளவுகள்",
+ "admin.config.ssh.minimum_key_size_check": "குறைந்தபட்ச விசை அளவு சரிபார்ப்பு",
+ "admin.config.ssh.keygen_path": "கீசென் (\"ssh-keygen\") பாதை",
+ "admin.config.ssh.key_test_path": "முக்கிய சோதனை பாதை",
+ "admin.config.ssh.root_path": "ரூட் பாதை",
+ "admin.config.ssh.listen_port": "லிசன் துறைமுகம்",
+ "admin.config.ssh.port": "துறைமுகம்",
+ "admin.config.ssh.domain": "பாஓடு சர்வர் டொமைன்",
+ "admin.config.ssh.use_builtin_server": "உள்ளமைக்கப்பட்ட சேவையகத்தைப் பயன்படுத்தவும்",
+ "admin.config.ssh.enabled": "இயக்கப்பட்டது",
+ "admin.config.ssh.header": "பாஓடு கட்டமைப்பு",
+ "admin.users.never_login": "உள்நுழையவில்லை",
+ "admin.users.last_login": "கடைசி உள்நுழைவு",
+ "admin.users.created": "உருவாக்கப்பட்டது",
+ "admin.users.repos": "பதிவுகள்",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "ரிமோட்",
+ "admin.users.bot": "பாட்",
+ "admin.users.reserved": "ஒதுக்கப்பட்டது",
+ "admin.users.restricted": "கட்டுப்படுத்தப்பட்டது",
+ "admin.users.admin": "நிர்வாகி",
+ "admin.users.activated": "செயல்படுத்தப்பட்டது",
+ "admin.users.full_name": "முழுப் பெயர்",
+ "admin.users.name": "பயனர் பெயர்",
+ "admin.packages.published": "வெளியிடப்பட்டது",
+ "admin.packages.size": "அளவு",
+ "admin.packages.repository": "களஞ்சியம்",
+ "admin.packages.type": "வகை",
+ "admin.packages.version": "பதிப்பு",
+ "admin.packages.name": "பெயர்",
+ "admin.packages.creator": "படைப்பாளி",
+ "admin.packages.owner": "உரிமையாளர்",
+ "admin.packages.unreferenced_size": "குறிப்பிடப்படாத அளவு: %s",
+ "admin.packages.total_size": "மொத்த அளவு: %s",
+ "admin.repos.lfs_size": "LFS அளவு",
+ "admin.repos.size": "அளவு",
+ "admin.repos.issues": "சிக்கல்கள்",
+ "admin.repos.name": "பெயர்",
+ "admin.repos.owner": "உரிமையாளர்",
+ "admin.orgs.new_orga": "புதிய அமைப்பு",
+ "admin.orgs.members": "உறுப்பினர்கள்",
+ "admin.orgs.teams": "அணிகள்",
+ "admin.orgs.name": "பெயர்",
+ "admin.dashboard.rebuild_issue_indexer": "வெளியீட்டு அட்டவணையை மீண்டும் உருவாக்கவும்",
+ "admin.dashboard.start_schedule_tasks": "அட்டவணை செயல் பணிகளைத் தொடங்கவும்",
+ "admin.dashboard.cancel_abandoned_jobs": "கைவிடப்பட்ட செயல்கள் வேலைகளை நீக்கறல்",
+ "admin.dashboard.stop_endless_tasks": "முடிவற்ற செயல் பணிகளை நிறுத்துங்கள்",
+ "admin.dashboard.stop_zombie_tasks": "சாம்பி செயல் பணிகளை நிறுத்துங்கள்",
+ "admin.dashboard.gc_lfs": "குப்பை LFS மேவு பொருட்களை சேகரிக்கிறது",
+ "admin.dashboard.delete_old_system_notices": "தரவுத்தளத்திலிருந்து அனைத்து பழைய கணினி அறிவிப்புகளையும் நீக்கவும்",
+ "admin.dashboard.update_checker": "புதுப்பிப்பு சரிபார்ப்பு",
+ "admin.dashboard.cleanup_actions": "செயல்களில் இருந்து காலாவதியான பதிவுகள் மற்றும் கலைப்பொருட்களை தூய்மை செய்யவும்",
+ "admin.dashboard.cleanup_packages": "காலாவதியான தொகுப்புகளை தூய்மை செய்யவும்",
+ "admin.dashboard.cleanup_hook_task_table": "ஊக்_டாச்க் டேபிளை தூய்மை செய்யவும்",
+ "admin.dashboard.sync_external_users": "வெளிப்புற பயனர் தரவை ஒத்திசைக்கவும்",
+ "admin.dashboard.reinit_missing_repos": "பதிவுகள் இருக்கும் அனைத்து விடுபட்ட Git களஞ்சியங்களையும் மீண்டும் துவக்கவும்",
+ "admin.dashboard.resync_all_hooks": "அனைத்து களஞ்சியங்களின் அறிவிலி ஊக்குகளை மீண்டும் ஒத்திசை (முன் பெறுதல், புதுப்பித்தல், பெறப்பட்ட பின் பெறுதல், ...)",
+ "admin.dashboard.resync_all_sshprincipals": "Forgejo பாஓடு முதன்மைகளுடன் \".ssh/authorized_principals\" கோப்பைப் புதுப்பிக்கவும்.",
+ "admin.dashboard.resync_all_sshkeys": "Forgejo பாஓடு விசைகளுடன் \".ssh/authorized_keys\" கோப்பைப் புதுப்பிக்கவும்.",
+ "admin.dashboard.git_gc_repos": "குப்பைகள் அனைத்து களஞ்சியங்களையும் சேகரிக்கின்றன",
+ "admin.dashboard.update_migration_poster_id": "இடம்பெயர்வு போச்டர் ஐடிகளைப் புதுப்பிக்கவும்",
+ "admin.dashboard.deleted_branches_cleanup": "நீக்கப்பட்ட கிளைகளை தூய்மை செய்யவும்",
+ "admin.dashboard.archive_cleanup": "பழைய களஞ்சிய காப்பகங்களை நீக்கவும்",
+ "admin.dashboard.check_repo_stats": "அனைத்து களஞ்சிய புள்ளிவிவரங்களையும் சரிபார்க்கவும்",
+ "admin.dashboard.repo_health_check": "அனைத்து களஞ்சியங்களையும் சுகாதாரம் சரிபார்க்கவும்",
+ "admin.dashboard.update_mirrors": "கண்ணாடிகளைப் புதுப்பிக்கவும்",
+ "admin.dashboard.sync_repo_tags": "குறிச்சொற்களை Git தரவிலிருந்து தரவுத்தளத்திற்கு ஒத்திசைக்கவும்",
+ "admin.dashboard.sync_repo_branches": "தவறவிட்ட கிளைகளை Git தரவிலிருந்து தரவுத்தளத்திற்கு ஒத்திசைக்கவும்",
+ "admin.dashboard.delete_generated_repository_avatars": "உருவாக்கப்பட்ட களஞ்சிய அவதாரங்களை நீக்கவும்",
+ "admin.dashboard.sync_tag.started": "குறிச்சொல் ஒத்திசைவு தொடங்கியது",
+ "admin.dashboard.sync_branch.started": "கிளை ஒத்திசைவு தொடங்கியது",
+ "admin.dashboard.delete_old_actions.started": "தொடங்கப்பட்ட தரவுத்தளத்திலிருந்து அனைத்து பழைய செயல்பாடுகளையும் நீக்கவும்.",
+ "admin.dashboard.delete_missing_repos.started": "Git கோப்புகள் பணி தொடங்கப்பட்டதில் விடுபட்ட அனைத்து களஞ்சியங்களையும் நீக்கவும்.",
+ "admin.dashboard.delete_repo_archives.started": "அனைத்து களஞ்சிய காப்பகங்களை நீக்கும் பணி தொடங்கப்பட்டது.",
+ "admin.dashboard.delete_inactive_accounts.started": "தொடங்கப்பட்ட அனைத்து செயல்படுத்தப்படாத கணக்குகளையும் நீக்கும் பணி.",
+ "admin.dashboard.cron.finished": "கிரான்: %[1]s முடிந்தது",
+ "admin.dashboard.cron.error": "Cron இல் பிழை: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "கிரான்: %[1]s ரத்து செய்யப்பட்டது: %[3]s",
+ "admin.dashboard.cron.process": "கிரான்: %[1]s",
+ "admin.dashboard.cron.started": "தொடங்கப்பட்ட கிரான்: %[1]s",
+ "admin.dashboard.task.unknown": "அறியப்படாத பணி: %[1]s",
+ "admin.dashboard.task.finished": "பணி: %[2]s ஆல் தொடங்கப்பட்ட %[1]s முடிந்தது",
+ "admin.dashboard.task.error": "பணியில் பிழை: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "பணி: %[1]s ரத்து செய்யப்பட்டது: %[3]s",
+ "admin.dashboard.task.process": "பணி: %[1]s",
+ "admin.dashboard.task.started": "தொடங்கப்பட்ட பணி: %[1]s",
+ "admin.dashboard.operation_run": "ஓடு",
+ "admin.dashboard.operation_switch": "ஆளி, நிலைமாறி",
+ "admin.dashboard.operation_name": "ஆபரேசன் பெயர்",
+ "admin.dashboard.system_status": "அமைப்பின் நிலை",
+ "admin.dashboard.operations": "பராமரிப்பு நடவடிக்கைகள்",
+ "admin.dashboard.statistic": "சுருக்கம்",
+ "admin.dashboard.new_version_hint": "Forgejo %s இப்போது கிடைக்கிறது, நீங்கள் %sஐ இயக்குகிறீர்கள். மேலும் விவரங்களுக்கு வலைப்பதிவை பார்க்கவும்.",
"admin.monitor.queue.settings.remove_all_items.success": "வரிசையில் இருந்த அனைத்து பொருட்களும் அகற்றப்பட்டன.",
"admin.monitor.queue.settings.remove_all_items": "அனைத்தையும் அகற்று",
"admin.monitor.queue.settings.changed": "அமைப்புகள் புதுப்பிக்கப்பட்டன",
@@ -318,7 +444,7 @@
},
"relativetime.hours": {
"one": "%d மணிநேரத்திற்கு முன்பு",
- "other": "%d மணிநேரங்களுக்கு முன்பு"
+ "other": "%d மணிநேரத்திற்கு முன்பு"
},
"relativetime.days": {
"one": "%d நாளுக்கு முன்பு",
@@ -621,5 +747,155 @@
"actions.secrets.creation.name_description": "ஒரு மறைபொருளின் பெயரில் எழுத்துக்கள், எண்கள் மற்றும் அடிக்கோடுகள் மட்டுமே இருக்க முடியும். இது FORGEJO_, GITEA_, GITHUB_ அல்லது எண்ணுடன் தொடங்க முடியாது. Forgejo அதைத் தானாகப் பெரிய எழுத்துக்கு மாற்றும்.",
"actions.secrets.creation.value_description": "ஒரு மறைபொருளின் மதிப்பு எந்த உரையாகவும் இருக்கலாம். சிறப்பு எழுத்துக்கள் தக்கவைக்கப்படுகின்றன. CRLF (Windows-style line breaks) தானாகவே LF ஆக மாற்றப்படும். வரி முறிவுகள் தக்கவைக்கப்பட வேண்டுமானால், மதிப்பை Base64 உடன் குறியிடவும்.",
"actions.variables.mutation.name_description": "ஒரு மாறியின் பெயரில் எழுத்துக்கள், எண்கள் மற்றும் அடிக்கோடிட்டுகள் மட்டுமே இருக்க முடியும். இதற்கு CI என்று பெயரிட முடியாது அல்லது FORGEJO_, GITEA_, GITHUB_ அல்லது எண்ணில் தொடங்க முடியாது. Forgejo அதைத் தானாகப் பெரிய எழுத்துக்கு மாற்றும்.",
- "actions.variables.mutation.value_description": "ஒரு மாறியின் மதிப்பு எந்த உரையாகவும் இருக்கலாம். சிறப்பு எழுத்துக்கள் தக்கவைக்கப்படுகின்றன. CRLF (Windows-style line breaks) தானாகவே LF ஆக மாற்றப்படும். வரி முறிவுகள் தக்கவைக்கப்பட வேண்டுமானால், மதிப்பை Base64 உடன் குறியிடவும்."
+ "actions.variables.mutation.value_description": "ஒரு மாறியின் மதிப்பு எந்த உரையாகவும் இருக்கலாம். சிறப்பு எழுத்துக்கள் தக்கவைக்கப்படுகின்றன. CRLF (Windows-style line breaks) தானாகவே LF ஆக மாற்றப்படும். வரி முறிவுகள் தக்கவைக்கப்பட வேண்டுமானால், மதிப்பை Base64 உடன் குறியிடவும்.",
+ "repo.pulls.auto_merge.no_permission": "இந்த இழுத்தல் கோரிக்கையின் தானாக ஒன்றிணைவதை ரத்துசெய்ய உங்களுக்கு இசைவு இல்லை.",
+ "migrate.select.title": "களஞ்சியத்தை நகர்த்தவும்",
+ "admin.federation.federation": "கூட்டமைப்பு",
+ "admin.federation.hosts": "புரவலர்கள்",
+ "admin.federation.hosts.title": "கூட்டமைப்பு புரவலர்கள்",
+ "admin.federation.hosts.manage_panel": "கூட்டமைப்பு ஓச்ட்களை நிர்வகிக்கவும்",
+ "admin.federation.hosts.details_panel": "கூட்டமைப்பு புரவலன் விவரங்கள்",
+ "admin.federation.hosts.show_details": "புரவலன் விவரங்களைக் காட்டு",
+ "admin.federation.host.id": "ஐடி",
+ "admin.federation.host.fqdn": "FQDN",
+ "admin.federation.host.schema": "திட்டம்",
+ "admin.federation.host.port": "துறைமுகம்",
+ "admin.federation.host.software_name": "மென்பொருள்",
+ "admin.federation.host.created": "உருவாக்கப்பட்டது",
+ "admin.federation.host.updated": "புதுப்பிக்கப்பட்டது",
+ "admin.federation.host.latest_activity": "அண்மைக் கால செயல்பாடு",
+ "admin.federation.users": "பயனர்கள்",
+ "admin.federation.users.title": "கூட்டமைப்பு பயனர்கள்",
+ "admin.federation.users.manage_panel": "கூட்டமைப்பு பயனர்களை நிர்வகிக்கவும்",
+ "admin.federation.users.show_local_user": "உள்ளக பயனர் விவரங்களைக் காட்டு",
+ "admin.federation.user.id": "அடையாளம்",
+ "admin.federation.user.user_id": "உள்ளக பயனர் அடையாளம்",
+ "admin.federation.user.external_id": "வெளிப்புற பயனர் அடையாளம்",
+ "admin.federation.user.inbox_path": "இன்பாக்ச் பாதை",
+ "admin.config.federation": "கூட்டமைப்பு கட்டமைப்பு",
+ "admin.config.federation.enabled": "இயக்கப்பட்டது",
+ "admin.config.federation.share_user_statistics": "பிற ஓச்ட்களுடன் பயனர் புள்ளிவிவரங்களைப் பகிரவும்",
+ "admin.config.federation.max_size": "அதிகபட்சமாக அனுமதிக்கப்பட்ட மறுமொழி அளவு",
+ "admin.config.federation.signature_enforced": "HTTP கையொப்பங்கள் தேவை",
+ "admin.config.federation.signature_algorithms": "கையொப்ப வழிமுறைகள்",
+ "admin.config.federation.digest_algorithm": "சிக்னேச்சர் டைசச்ட் அல்காரிதம்",
+ "admin.config.federation.get_headers": "GET தலைப்புகளில் கையொப்பமிடப்பட்டது",
+ "admin.config.federation.post_headers": "கையொப்பமிடப்பட்ட POST தலைப்புகள்",
+ "settings.specific_repo_access": "களஞ்சிய அணுகல்",
+ "settings.new_access_token": "புதிய அணுகல் கிள்ளாக்கு",
+ "settings.permissions_access_specific_repositories": "குறிப்பிட்ட களஞ்சியங்கள்",
+ "settings.access_token.selected_repositories": {
+ "one": "தேர்ந்தெடுக்கப்பட்ட களஞ்சியம் (%d)",
+ "other": "தேர்ந்தெடுக்கப்பட்ட களஞ்சியங்கள் (%d)"
+ },
+ "settings.access_token.available_repositories": "கிடைக்கும் களஞ்சியங்கள்",
+ "settings.access_token.no_repositories_selected": "களஞ்சியங்கள் எதுவும் தேர்ந்தெடுக்கப்படவில்லை.",
+ "settings.access_token.no_repositories_found": "களஞ்சியங்கள் எதுவும் இல்லை.",
+ "settings.access_token.remove": "%sஐ அகற்று",
+ "settings.access_token.resource_all_help": "அனைத்து ஆதாரங்களுக்கும் அணுகலை அனுமதிக்கவும்.",
+ "settings.access_token.resource_public_only_help": "பொதுவில் உள்ள களஞ்சியங்கள் மற்றும் நிறுவனங்களுக்கான அணுகலை வரம்பிடவும்.",
+ "settings.access_token.resource_specific_repo_help": "களஞ்சியங்களின் குறிப்பிட்ட பட்டியலுக்கான அணுகலை வரம்பிடவும். அனைத்து பொது களஞ்சியங்களுக்கும் படிக்க மட்டுமே அணுகல் அனுமதிக்கப்படுகிறது. களஞ்சியங்கள் மற்றும் சிக்கல்களுக்கான அணுகலை அனுமதிக்கும் அனுமதிகள் மட்டுமே இயக்கப்படும்.",
+ "settings.access_token.admin_disabled": "நிர்வாக அனுமதிகள் முடக்கப்பட்டுள்ளன.",
+ "user.activitypub_feed.feed": "Fediverse ஊட்டம்",
+ "user.activitypub_feed.no_activity": "ஃபெடிவர் செயல்பாடு இல்லை",
+ "user.activitypub_feed.is_empty": "உங்கள் ஃபீடிவர்ச் ஃபீட் காலியாக உள்ளது.",
+ "user.activitypub_feed.hint": "இந்த ஊட்டம் நீங்கள் பின்தொடரும் fediverse கணக்குகளின் செயல்பாடுகளையும், உங்களைக் குறிப்பிட்டுள்ள கூட்டமைப்பு இடுகைகளையும் காட்டுகிறது.",
+ "user.activitypub_feed.posted_on": "%[1]s இல் இடுகையிடப்பட்டது",
+ "user.activitypub_feed.original_source": "அசல் சான்று",
+ "access_token.error.specified_repos_none": "குறிப்பிட்ட களஞ்சியங்களைக் கொண்ட அணுகல் டோக்கன்கள் குறைந்தபட்சம் ஒரு களஞ்சியத்தையாவது கொண்டிருக்க வேண்டும்.",
+ "access_token.error.specified_repos_and_public_only": "குறிப்பிட்ட களஞ்சியங்களைக் கொண்ட அணுகல் டோக்கன்களை பொது-மட்டுமே நோக்கத்துடன் இணைக்க முடியாது.",
+ "access_token.error.specified_repos_and_invalid_scope": "குறிப்பிட்ட களஞ்சியங்களைக் கொண்ட அணுகல் டோக்கன்கள் வாசிப்பு: வெளியீடு, எழுதுதல்: வெளியீடு, வாசிப்பு: களஞ்சியம் மற்றும் எழுதுதல்: களஞ்சிய நோக்கங்களுடன் மட்டுமே பயன்படுத்தப்படும்.",
+ "actions.runners.uuid": "UUID",
+ "actions.runners.token": "கிள்ளாக்கு",
+ "actions.runners.ephemeral": "எபிமரல்",
+ "actions.runners.version": "பதிப்பு",
+ "actions.runners.list_runners.edit_column": "தொகு",
+ "actions.runners.list_runners.delete_column": "நீக்கு",
+ "actions.runners.list_runners.delete_button": "நீக்கு",
+ "actions.runners.list_runners.delete_button_aria": "%s ஐ நீக்கு",
+ "actions.runners.list_runners.edit_button": "தொகு",
+ "actions.runners.list_runners.edit_button_aria": "%s ஐ திருத்து",
+ "actions.runners.ephemeral.yes": "ஆம்",
+ "actions.runners.ephemeral.no": "இல்லை",
+ "actions.runners.task_list_repo": "இந்த ரன்னரில் இந்த களஞ்சியத்தின் அண்மைக் கால பணிகள்",
+ "actions.runners.task_list_org": "இந்த நிறுவனத்தில் இந்த ரன்னர் மீதான அண்மைக் கால பணிகள்",
+ "actions.runners.task_list_admin": "இந்த ரன்னரின் அண்மைக் கால பணிகள்",
+ "actions.runners.task_list_user": "இந்த ரன்னரில் இந்தப் பயனரின் அண்மைக் கால பணிகள்",
+ "actions.runners.edit_runner_button": "திருத்து ரன்னர்",
+ "actions.runners.create_runner.page_title": "புதிய ரன்னர் உருவாக்கவும்",
+ "actions.runners.create_runner.title": "புதிய ரன்னர் உருவாக்கவும்",
+ "actions.runners.create_runner.properties_fieldset": "பண்புகள்",
+ "actions.runners.create_runner.name_label": "பெயர்",
+ "actions.runners.create_runner.description_label": "விவரம்",
+ "actions.runners.create_runner.create_button": "உருவாக்கு",
+ "actions.runners.create_runner.cancel_button": "ரத்துசெய்",
+ "actions.runners.edit_runner.page_title": "ரன்னர் %s ஐ திருத்து",
+ "actions.runners.edit_runner.title": "ரன்னர் %s ஐ திருத்து",
+ "actions.runners.edit_runner.properties_fieldset": "பண்புகள்",
+ "actions.runners.edit_runner.properties_options": "விருப்பங்கள்",
+ "actions.runners.edit_runner.name_label": "பெயர்",
+ "actions.runners.edit_runner.description_label": "விவரம்",
+ "actions.runners.edit_runner.regenerate_token_label": "கிள்ளாக்கை மீண்டும் உருவாக்கவும்",
+ "actions.runners.edit_runner.regenerate_token_help": "தற்போதுள்ள கிள்ளாக்கு உடனடியாக செல்லாது. அடுத்த பக்கத்தில் புதிய கிள்ளாக்கைப் பெறுவீர்கள்.",
+ "actions.runners.edit_runner.save_button": "சேமி",
+ "actions.runners.edit_runner.cancel_button": "ரத்துசெய்",
+ "actions.runners.runner_setup.title": "ரன்னர் %s ஐ அமைக்கவும்",
+ "actions.runners.show_registration_token": "பதிவு டோக்கனைக் காட்டு",
+ "actions.runners.runner_details.page_title": "ரன்னர் %s",
+ "actions.runners.runner_details.labels_note": "ரன்னர் லேபிள்கள் Forgejo Runner இன் உள்ளமைவு கோப்பில் வரையறுக்கப்பட்டுள்ளன அல்லது கட்டளை வரி விருப்பமாக அனுப்பப்படும். Forgejo ரன்னர் Forgejo உடன் இணைப்பை நிறுவும் ஒவ்வொரு முறையும் அவை புதுப்பிக்கப்படும்.",
+ "actions.runners.runner_setup.page_title": "ரன்னர் %s ஐ அமைக்கவும்",
+ "actions.runners.runner_setup.list_of_runners_link": "ஓட்டப்பந்தய வீரர்களின் பட்டியல்",
+ "actions.runners.runner_setup.last_chance_copying_token": "கிள்ளாக்கை மீண்டும் பார்க்க முடியாது என்பதால், அதை நகலெடுக்கவும்!",
+ "actions.runners.runner_setup.button_copy_uuid_aria": "ரன்னர் UUID ஐ நகலெடுக்கவும்",
+ "actions.runners.runner_setup.button_copy_token_aria": "ரன்னர் கிள்ளாக்கை நகலெடுக்கவும்",
+ "actions.runners.runner_setup.heading_using_configuration": "ரன்னர் உள்ளமைவு கோப்பைப் பயன்படுத்துதல்",
+ "actions.runners.runner_setup.configuration_snippet_aria": "ரன்னர் உள்ளமைவில் செருக துணுக்கு",
+ "actions.runners.runner_setup.program_options_snippet_aria": "ஃபோர்சோ-ரன்னரை எவ்வாறு அழைப்பது",
+ "actions.runners.runner_setup.instruction_replace_connection_name": "இணைப்புப் பெயரை (forgejo எடுத்துக்காட்டில்) உங்கள் விருப்பத்தின் மதிப்புடன் மாற்றவும்.",
+ "actions.runners.runner_setup.heading_using_options": "நிரல் விருப்பங்களைப் பயன்படுத்துதல்",
+ "actions.runners.runner_setup.instruction_advanced_configurations": "கொள்கலன்கள் அல்லது மேம்பட்ட உள்ளமைவுகளில் இயங்கும் Forgejo Runner ஐ உள்ளமைக்க, ஆவணத்தைப் பார்க்கவும்.",
+ "actions.runners.reset_registration_token.token": "பதிவு கிள்ளாக்கு (நிறுத்தப்பட்டது)",
+ "actions.runs.scheduled_description": "கமிட் %[2]s திட்டமிடப்பட்ட ரன்",
+ "actions.runs.workflow_dispatch_description": "%[2]s ரன், %[4]s தூண்டப்பட்டது",
+ "actions.runs.on_push_description": "உறுதி %[2]s %[4]s மூலம் தள்ளப்பட்டது",
+ "actions.workflow.unknown_job_in_needs": "%[1] அடையாளம் கொண்ட வேலை, `தேவைகள்`: %[2]s இல் தெரியாத வேலைகள்.",
+ "actions.workflow.rerun_impossible": "பணிப்பாய்வுகளை மீண்டும் இயக்க முடியாது.",
+ "actions.workflow.job_rerun_impossible": "வேலையை மீண்டும் இயக்க முடியாது.",
+ "actions.secrets.edit_button": "\"%s\" ரகசியத்தைத் திருத்து",
+ "actions.secrets.mutation.header": "\"%s\" ரகசியத்தைத் திருத்து",
+ "actions.secrets.mutation.success_message": "\"%s\" மறைபொருள் புதுப்பிக்கப்பட்டது.",
+ "actions.secrets.mutation.failure_message": "\"%s\" ரகசியத்தை புதுப்பிக்க முடியவில்லை.",
+ "actions.secrets.mutation.name_description": "ஒரு ரகசியத்தின் பெயரில் எழுத்துக்கள், எண்கள் மற்றும் அடிக்கோடுகள் மட்டுமே இருக்க முடியும். இது FORGEJO_, GITEA_, GITHUB_ அல்லது எண்ணுடன் தொடங்க முடியாது. Forgejo அதை தானாக பெரிய எழுத்துக்கு மாற்றும்.",
+ "actions.secrets.mutation.value_description": "ஏற்கனவே உள்ள மதிப்பு காட்டப்படாது. நீங்கள் அதை மாற்ற விரும்பவில்லை என்றால், புலத்தை காலியாக விடவும். சிறப்பு எழுத்துக்கள் தக்கவைக்கப்படுகின்றன. சிஆர்எல்எஃப் (Windows-style வரி breaks) தானாகவே எல்எஃப் ஆக மாற்றப்படும். வரி முறிவுகள் தக்கவைக்கப்பட வேண்டுமானால், மதிப்பை Base64 உடன் குறியிடவும்.",
+ "members.add_member": "உறுப்பினரைச் சேர்க்கவும்",
+ "members.user": "பயனர்",
+ "members.user_already_member": "இந்தப் பயனர் ஏற்கனவே நிறுவனத்தில் உறுப்பினராக உள்ளார்.",
+ "members.no_team_selected": "அமைப்பின் உறுப்பினர்கள் குறைந்தபட்சம் ஒரு குழுவைச் சேர்ந்தவர்களாக இருக்க வேண்டும்.",
+ "form.RunnerName": "பெயர்",
+ "graphs.recent_commits.title": "கடந்த ஆண்டில் செய்த கமிட்களின் எண்ணிக்கை",
+ "graphs.code_frequency.title": "{0} வரலாற்றில் குறியீடு அதிர்வெண்",
+ "repo.files.caption": "களஞ்சிய கோப்புகள் (சமீபத்திய பொறுப்பு முதலில்)",
+ "repo.files.filename": "கோப்புப்பெயர்",
+ "repo.files.last_commit_message": "அண்மைக் கால உறுதி செய்தி",
+ "repo.files.last_commit_date": "அண்மைக் கால ஒப்பந்த தேதி",
+ "settings.authorized_integrations": "அங்கீகரிக்கப்பட்ட ஒருங்கிணைப்புகள்",
+ "settings.manage_authorized_integrations": "அங்கீகரிக்கப்பட்ட ஒருங்கிணைப்புகள்",
+ "settings.authorized_integration.desc": "அங்கீகரிக்கப்பட்ட ஒருங்கிணைப்புகள் Forgejo கையொப்பமிடப்பட்ட JWTகளைப் பெற அனுமதிக்கின்றன, உள்ளமைக்கப்பட்ட விதிகளுக்கு எதிராக அவர்களின் உரிமைகோரல்களை சரிபார்க்கின்றன, மேலும் Forgejo இன் APIகளை அணுக அவர்களை அனுமதிக்கின்றன.",
+ "settings.authorized_integration.ui.generic": "பொதுவான JWT",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Forgejo செயல்கள் (உள்ளூர்)",
+ "settings.authorized_integration.none": "அங்கீகரிக்கப்பட்ட ஒருங்கிணைப்புகள் எதுவும் தற்போது கட்டமைக்கப்படவில்லை.",
+ "settings.authorized_integration.field.name": "பெயர்",
+ "settings.authorized_integration.field.description": "விவரம்",
+ "settings.authorized_integration.field.description.placeholder": "தொகுப்புகளை வெளியிடப் பயன்படும் போது...",
+ "settings.authorized_integration.field.audience": "பார்வையாளர்கள் (aud உரிமைகோரல்)",
+ "settings.authorized_integration.field.issuer": "வழங்குபவர் (iss உரிமைகோரல்)",
+ "settings.authorized_integration.field.claim_rules": "உரிமைகோரல் விதிகள் சாதொபொகு",
+ "settings.authorized_integration.claims.generic": "பொதுவான JWT விதிகள்",
+ "settings.authorized_integration.perms.title": "அனுமதிக்கப்பட்ட திறன்கள்",
+ "settings.authorized_integration.copy_audience": "பார்வையாளர்களை இடைநிலைப்பலகைக்கு நகலெடுக்கவும்",
+ "actions.runs.delete.error_could_not_load_run": "நீக்குவதற்கு இயக்கத்தை ஏற்ற முடியவில்லை.",
+ "actions.runs.delete.error_could_not_delete_run": "ஓட்டத்தை நீக்க முடியவில்லை.",
+ "actions.runs.delete.button": "ஓட்டத்தை நீக்கு",
+ "actions.runs.delete.error": "பணிப்பாய்வு ஓட்டத்தை நீக்க முடியவில்லை.",
+ "actions.runs.delete.confirm_action": "இந்த பணிப்பாய்வு ஓட்டத்தை உண்மையில் நீக்க விரும்புகிறீர்களா?"
}
diff --git a/options/locale_next/locale_th.json b/options/locale_next/locale_th.json
index 71d798c512..e9a07dbdfe 100644
--- a/options/locale_next/locale_th.json
+++ b/options/locale_next/locale_th.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "พาธ",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "สคีมา",
+ "admin.config.db.user": "ชื่อผู้ใช้",
+ "admin.config.db.name": "ชื่อ",
+ "admin.config.db.host": "โฮสต์",
+ "admin.config.db.type": "ประเภท",
+ "admin.config.db.header": "การกำหนดค่าฐานข้อมูล",
+ "admin.config.mailer.user": "ผู้ใช้",
+ "admin.config.mailer.smtp.port": "พอร์ต SMTP",
+ "admin.config.mailer.smtp.addr": "โฮสต์ SMTP",
+ "admin.config.mailer.enable_helo": "เปิดใช้งาน HELO",
+ "admin.config.mailer.protocol": "โปรโตคอล",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "หมดเวลา Sendmail",
+ "admin.config.mailer.sendmail.args": "อาร์กิวเมนต์เพิ่มเติมสำหรับ Sendmail",
+ "admin.config.mailer.sendmail.path": "พาธ Sendmail",
+ "admin.config.mailer.sendmail.use": "ใช้ Sendmail",
+ "admin.config.mailer.name": "ชื่อ",
+ "admin.config.mailer.enabled": "เปิดใช้งาน",
+ "admin.config.mailer.header": "การกำหนดค่า Mailer",
+ "admin.config.git.gc_timeout": "หมดเวลาการดำเนินการ GC",
+ "admin.config.git.pull_timeout": "หมดเวลาการดำเนินการดึง",
+ "admin.config.git.clone_timeout": "หมดเวลาการดำเนินการโคลน",
+ "admin.config.git.mirror_timeout": "หมดเวลาการอัปเดตมิเรอร์",
+ "admin.config.git.migrate_timeout": "หมดเวลาการย้าย",
+ "admin.config.git.gc_args": "อาร์กิวเมนต์ GC",
+ "admin.config.git.diff.max_files": "จำนวนไฟล์ diff สูงสุดที่แสดง",
+ "admin.config.git.diff.max_line_characters": "จำนวนอักขระ diff สูงสุดต่อบรรทัด",
+ "admin.config.git.diff.max_lines": "จำนวนบรรทัด diff สูงสุดต่อไฟล์",
+ "admin.config.git.disable_diff_highlight": "ปิดใช้งานการเน้นไวยากรณ์ diff",
+ "admin.config.git.version": "เวอร์ชัน Git",
+ "admin.config.git.header": "การกำหนดค่า Git",
+ "admin.config.ssh.minimum_key_sizes": "ขนาดคีย์ขั้นต่ำ",
+ "admin.config.ssh.minimum_key_size_check": "การตรวจสอบขนาดคีย์ขั้นต่ำ",
+ "admin.config.ssh.keygen_path": "พาธ Keygen (\"ssh-keygen\")",
+ "admin.config.ssh.key_test_path": "พาธทดสอบคีย์",
+ "admin.config.ssh.root_path": "พาธราก",
+ "admin.config.ssh.listen_port": "พอร์ตฟัง",
+ "admin.config.ssh.port": "พอร์ต",
+ "admin.config.ssh.domain": "โดเมนเซิร์ฟเวอร์ SSH",
+ "admin.config.ssh.use_builtin_server": "ใช้เซิร์ฟเวอร์ในตัว",
+ "admin.config.ssh.enabled": "เปิดใช้งาน",
+ "admin.config.ssh.header": "การกำหนดค่า SSH",
+ "admin.users.never_login": "ไม่เคยลงชื่อเข้าใช้",
+ "admin.users.last_login": "ลงชื่อเข้าใช้ล่าสุด",
+ "admin.users.created": "สร้างแล้ว",
+ "admin.users.repos": "ที่เก็บ",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "ระยะไกล",
+ "admin.users.bot": "บอท",
+ "admin.users.reserved": "สงวนไว้",
+ "admin.users.restricted": "จำกัด",
+ "admin.users.admin": "ผู้ดูแลระบบ",
+ "admin.users.activated": "เปิดใช้งานแล้ว",
+ "admin.users.full_name": "ชื่อเต็ม",
+ "admin.users.name": "ชื่อผู้ใช้",
+ "admin.packages.published": "เผยแพร่แล้ว",
+ "admin.packages.size": "ขนาด",
+ "admin.packages.repository": "ที่เก็บ",
+ "admin.packages.type": "ประเภท",
+ "admin.packages.version": "เวอร์ชัน",
+ "admin.packages.name": "ชื่อ",
+ "admin.packages.creator": "ผู้สร้าง",
+ "admin.packages.owner": "เจ้าของ",
+ "admin.packages.unreferenced_size": "ขนาดที่ไม่ได้อ้างอิง: %s",
+ "admin.packages.total_size": "ขนาดทั้งหมด: %s",
+ "admin.repos.lfs_size": "ขนาด LFS",
+ "admin.repos.size": "ขนาด",
+ "admin.repos.issues": "ปัญหา",
+ "admin.repos.name": "ชื่อ",
+ "admin.repos.owner": "เจ้าของ",
+ "admin.orgs.new_orga": "องค์กรใหม่",
+ "admin.orgs.members": "สมาชิก",
+ "admin.orgs.teams": "ทีม",
+ "admin.orgs.name": "ชื่อ",
+ "admin.dashboard.rebuild_issue_indexer": "สร้างดัชนีปัญหาใหม่",
+ "admin.dashboard.start_schedule_tasks": "เริ่มงานการดำเนินการตามกำหนดเวลา",
+ "admin.dashboard.cancel_abandoned_jobs": "ยกเลิกงานการดำเนินการที่ถูกทอดทิ้ง",
+ "admin.dashboard.stop_endless_tasks": "หยุดงานการดำเนินการที่ไม่สิ้นสุด",
+ "admin.dashboard.stop_zombie_tasks": "หยุดงานการดำเนินการซอมบี้",
+ "admin.dashboard.gc_lfs": "เก็บขยะอ็อบเจกต์เมตา LFS",
+ "admin.dashboard.delete_old_system_notices": "ลบประกาศของระบบเก่าทั้งหมดออกจากฐานข้อมูล",
+ "admin.dashboard.update_checker": "ตัวตรวจสอบการอัปเดต",
+ "admin.dashboard.cleanup_actions": "ล้างบันทึกและอาร์ติแฟกต์ที่หมดอายุจากการดำเนินการ",
+ "admin.dashboard.cleanup_packages": "ล้างแพ็คเกจที่หมดอายุ",
+ "admin.dashboard.cleanup_hook_task_table": "ล้างตาราง hook_task",
+ "admin.dashboard.sync_external_users": "ซิงโครไนซ์ข้อมูลผู้ใช้ภายนอก",
+ "admin.dashboard.reinit_missing_repos": "เริ่มต้นที่เก็บ Git ที่หายไปทั้งหมดที่มีระเบียนอยู่ใหม่",
+ "admin.dashboard.resync_all_hooks": "ซิงโครไนซ์ฮุก pre-receive, update และ post-receive ของที่เก็บทั้งหมดอีกครั้ง",
+ "admin.dashboard.resync_all_sshprincipals": "อัปเดตไฟล์ \".ssh/authorized_principals\" ด้วย Principal SSH ของ Forgejo",
+ "admin.dashboard.resync_all_sshkeys": "อัปเดตไฟล์ \".ssh/authorized_keys\" ด้วยคีย์ SSH ของ Forgejo",
+ "admin.dashboard.git_gc_repos": "เก็บขยะที่เก็บทั้งหมด",
+ "admin.dashboard.update_migration_poster_id": "อัปเดต ID ผู้โพสต์การย้าย",
+ "admin.dashboard.deleted_branches_cleanup": "ล้างสาขาที่ถูกลบ",
+ "admin.dashboard.archive_cleanup": "ลบไฟล์เก็บถาวรของที่เก็บเก่า",
+ "admin.dashboard.check_repo_stats": "ตรวจสอบสถิติที่เก็บทั้งหมด",
+ "admin.dashboard.repo_health_check": "ตรวจสอบสุขภาพที่เก็บทั้งหมด",
+ "admin.dashboard.update_mirrors": "อัปเดตมิเรอร์",
+ "admin.dashboard.sync_repo_tags": "ซิงค์แท็กจากข้อมูล Git ไปยังฐานข้อมูล",
+ "admin.dashboard.sync_repo_branches": "ซิงค์สาขาที่พลาดจากข้อมูล Git ไปยังฐานข้อมูล",
+ "admin.dashboard.delete_generated_repository_avatars": "ลบอวาตาร์ที่เก็บที่สร้างขึ้น",
+ "admin.dashboard.sync_tag.started": "เริ่มการซิงค์แท็กแล้ว",
+ "admin.dashboard.sync_branch.started": "เริ่มการซิงค์สาขาแล้ว",
+ "admin.dashboard.delete_old_actions.started": "เริ่มลบกิจกรรมเก่าทั้งหมดออกจากฐานข้อมูลแล้ว",
+ "admin.dashboard.delete_missing_repos.started": "เริ่มงานลบที่เก็บทั้งหมดที่ไม่มีไฟล์ Git แล้ว",
+ "admin.dashboard.delete_repo_archives.started": "เริ่มงานลบไฟล์เก็บถาวรของที่เก็บทั้งหมดแล้ว",
+ "admin.dashboard.delete_inactive_accounts.started": "เริ่มงานลบบัญชีที่ไม่ได้เปิดใช้งานทั้งหมดแล้ว",
+ "admin.dashboard.cron.finished": "Cron: %[1]s เสร็จสิ้นแล้ว",
+ "admin.dashboard.cron.error": "ข้อผิดพลาดใน Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s ถูกยกเลิก: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "เริ่ม Cron: %[1]s",
+ "admin.dashboard.task.unknown": "งานที่ไม่รู้จัก: %[1]s",
+ "admin.dashboard.task.finished": "งาน: %[1]s ที่เริ่มโดย %[2]s เสร็จสิ้นแล้ว",
+ "admin.dashboard.task.error": "ข้อผิดพลาดในงาน: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "งาน: %[1]s ถูกยกเลิก: %[3]s",
+ "admin.dashboard.task.process": "งาน: %[1]s",
+ "admin.dashboard.task.started": "เริ่มงาน: %[1]s",
+ "admin.dashboard.operation_run": "เรียกใช้",
+ "admin.dashboard.operation_switch": "สวิตช์",
+ "admin.dashboard.operation_name": "ชื่อการดำเนินการ",
+ "admin.dashboard.system_status": "สถานะระบบ",
+ "admin.dashboard.operations": "การดำเนินการบำรุงรักษา",
+ "admin.dashboard.statistic": "สรุป",
+ "admin.dashboard.new_version_hint": "Forgejo %s พร้อมใช้งานแล้ว คุณกำลังใช้ %s ตรวจสอบ บล็อก สำหรับรายละเอียดเพิ่มเติม",
"admin.monitor.queue.settings.remove_all_items.success": "ลบรายการทั้งหมดในคิวแล้ว",
"admin.monitor.queue.settings.remove_all_items": "ลบทั้งหมด",
"admin.monitor.queue.settings.changed": "อัปเดตการตั้งค่าแล้ว",
diff --git a/options/locale_next/locale_tok.json b/options/locale_next/locale_tok.json
index 344a8c4f55..c6dfda82de 100644
--- a/options/locale_next/locale_tok.json
+++ b/options/locale_next/locale_tok.json
@@ -4,5 +4,13 @@
"home.welcome.activity_hint": "sina pali la sona pali li lon ni.",
"home.explore_repos": "o alasa e poki",
"home.explore_users": "o alasa e jan",
- "home.explore_orgs": "o alasa e kulupu"
+ "home.explore_orgs": "o alasa e kulupu",
+ "watch.n_watchers": "jan %s li lukin e poki ni",
+ "relativetime.1day": "tenpo suno poka weka",
+ "themes.names.forgejo-light": "nasin kule Forgejo walo",
+ "themes.names.forgejo-dark": "nasin kule Forgejo pimeja",
+ "error.not_found.title": "lipu pi lon ala",
+ "keys.ssh.link": "nimi len SSH",
+ "keys.gpg.link": "nimi len GPG",
+ "moderation.issue.deletion_success": "toki ni li weka"
}
diff --git a/options/locale_next/locale_tr-TR.json b/options/locale_next/locale_tr-TR.json
index 5528274be5..853ea7868f 100644
--- a/options/locale_next/locale_tr-TR.json
+++ b/options/locale_next/locale_tr-TR.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Yol",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Şema",
+ "admin.config.db.user": "Kullanıcı adı",
+ "admin.config.db.name": "İsim",
+ "admin.config.db.host": "Sunucu",
+ "admin.config.db.type": "Türü",
+ "admin.config.db.header": "Veritabanı Yapılandırması",
+ "admin.config.mailer.user": "Kullanıcı",
+ "admin.config.mailer.smtp.port": "SMTP Portu",
+ "admin.config.mailer.smtp.addr": "SMTP Adresi",
+ "admin.config.mailer.enable_helo": "HELO'yu etkinleştir",
+ "admin.config.mailer.protocol": "Protokol",
+ "admin.config.mailer.use_dummy": "Sahte",
+ "admin.config.mailer.sendmail.timeout": "Sendmail Zaman Aşımı",
+ "admin.config.mailer.sendmail.args": "Sendmail İçin İlave Değişkenler",
+ "admin.config.mailer.sendmail.path": "Sendmail Yolu",
+ "admin.config.mailer.sendmail.use": "Sendmail Kullan",
+ "admin.config.mailer.name": "İsim",
+ "admin.config.mailer.enabled": "Aktif",
+ "admin.config.mailer.header": "Mailer Yapılandırması",
+ "admin.config.git.gc_timeout": "GC İşlemi Zaman Aşımı",
+ "admin.config.git.pull_timeout": "Çekme İşlemi Zaman Aşımı",
+ "admin.config.git.clone_timeout": "Klonlama İşlemi Zaman Aşımı",
+ "admin.config.git.mirror_timeout": "Yansı Güncelleme Zaman Aşımı",
+ "admin.config.git.migrate_timeout": "Göç işlemi zaman aşımı",
+ "admin.config.git.gc_args": "GC Argümanları",
+ "admin.config.git.diff.max_files": "Maksimum Değişiklik Dosyaları (gösterilecek)",
+ "admin.config.git.diff.max_line_characters": "Maksimum Değişiklik Karakteri (tek bir satır için)",
+ "admin.config.git.diff.max_lines": "Maksimum Değişiklik Satırı (tek bir dosya için)",
+ "admin.config.git.disable_diff_highlight": "Değişiklik Sözdizimi Vurgusunu Devre Dışı Bırak",
+ "admin.config.git.version": "Git Sürümü",
+ "admin.config.git.header": "Git Yapılandırması",
+ "admin.config.ssh.minimum_key_sizes": "Minimum Anahtar Uzunlukları",
+ "admin.config.ssh.minimum_key_size_check": "Minimum Anahtar Uzunluğu Kontrolü",
+ "admin.config.ssh.keygen_path": "Keygen ('ssh-keygen') Yolu",
+ "admin.config.ssh.key_test_path": "Anahtar Test Yolu",
+ "admin.config.ssh.root_path": "Kök Yol",
+ "admin.config.ssh.listen_port": "Port'u Dinle",
+ "admin.config.ssh.port": "Bağlantı Noktası",
+ "admin.config.ssh.domain": "SSH Sunucusu Alan Adı",
+ "admin.config.ssh.use_builtin_server": "Yerleşik Sunucuyu Kullan",
+ "admin.config.ssh.enabled": "Aktif",
+ "admin.config.ssh.header": "SSH Yapılandırması",
+ "admin.users.never_login": "Hiç Oturum Açılmadı",
+ "admin.users.last_login": "Son Oturum Açma",
+ "admin.users.created": "Oluşturuldu",
+ "admin.users.repos": "Depolar",
+ "admin.users.2fa": "2FD",
+ "admin.users.remote": "Uzak",
+ "admin.users.bot": "Bot",
+ "admin.users.reserved": "Rezerve",
+ "admin.users.restricted": "Kısıtlanmış",
+ "admin.users.admin": "Yönetici",
+ "admin.users.activated": "Aktifleştirilmiş",
+ "admin.users.full_name": "Tam İsim",
+ "admin.users.name": "Kullanıcı Adı",
+ "admin.packages.published": "Yayınlandı",
+ "admin.packages.size": "Boyut",
+ "admin.packages.repository": "Depo",
+ "admin.packages.type": "Tür",
+ "admin.packages.version": "Sürüm",
+ "admin.packages.name": "İsim",
+ "admin.packages.creator": "Oluşturan",
+ "admin.packages.owner": "Sahibi",
+ "admin.packages.unreferenced_size": "Referanssız Boyut: %s",
+ "admin.packages.total_size": "Toplam Boyut: %s",
+ "admin.repos.lfs_size": "LFS Boyutu",
+ "admin.repos.size": "Boyut",
+ "admin.repos.issues": "Konular",
+ "admin.repos.name": "İsim",
+ "admin.repos.owner": "Sahibi",
+ "admin.orgs.new_orga": "Yeni Organizasyon",
+ "admin.orgs.members": "Üyeler",
+ "admin.orgs.teams": "Takımlar",
+ "admin.orgs.name": "İsim",
+ "admin.dashboard.rebuild_issue_indexer": "Konu indeksini yeniden oluştur",
+ "admin.dashboard.start_schedule_tasks": "Zamanlanmış görevleri başlat",
+ "admin.dashboard.cancel_abandoned_jobs": "Terkedilmiş görevleri iptal et",
+ "admin.dashboard.stop_endless_tasks": "Daimi görevleri durdur",
+ "admin.dashboard.stop_zombie_tasks": "Zombi görevleri durdur",
+ "admin.dashboard.gc_lfs": "LFS üst nesnelerin atıklarını temizle",
+ "admin.dashboard.delete_old_system_notices": "Veritabanından tüm eski sistem bildirimlerini sil",
+ "admin.dashboard.update_checker": "Denetleyiciyi güncelle",
+ "admin.dashboard.cleanup_actions": "Eylemlerin süresi geçmiş günlük ve yapılarını temizle",
+ "admin.dashboard.cleanup_packages": "Süresi dolmuş paketleri temizleme",
+ "admin.dashboard.cleanup_hook_task_table": "Hook_task tablosunu temizleme",
+ "admin.dashboard.sync_external_users": "Harici kullanıcı verisini senkronize et",
+ "admin.dashboard.reinit_missing_repos": "Kayıtları bulunanlar için tüm eksik Git depolarını yeniden başlat",
+ "admin.dashboard.resync_all_hooks": "Tüm depoların Git kancalarını yeniden eşitle/senkronize et (pre-receive, update, post-receive, proc-receive, …)",
+ "admin.dashboard.resync_all_sshprincipals": "'.ssh/authorized_principals' dosyasını Forgejo SSH sorumlularıyla güncelleyin.",
+ "admin.dashboard.resync_all_sshkeys": "'.ssh/authority_keys' dosyasını Forgejo SSH anahtarlarıyla güncelle.",
+ "admin.dashboard.git_gc_repos": "Depolardaki çöpleri topla",
+ "admin.dashboard.update_migration_poster_id": "Taşıma poster kimliklerini güncelle",
+ "admin.dashboard.deleted_branches_cleanup": "Silinen dalları temizle",
+ "admin.dashboard.archive_cleanup": "Eski depo arşivlerini sil",
+ "admin.dashboard.check_repo_stats": "Tüm depo istatistiklerini denetle",
+ "admin.dashboard.repo_health_check": "Tüm depoların sağlığını denetle",
+ "admin.dashboard.update_mirrors": "Yansıları Güncelle",
+ "admin.dashboard.sync_repo_tags": "Git verisinden veritabanına, anahtar kelimeleri (tag'leri) eşitle (senkronize et)",
+ "admin.dashboard.sync_repo_branches": "Eşzamanlama git verisinden veritabanlarına dalları kaçırdı",
+ "admin.dashboard.delete_generated_repository_avatars": "Oluşturulan depo resimlerini sil",
+ "admin.dashboard.sync_tag.started": "Anahtar kelime (tag) eşitleme işlemi (senkronizasyonu) başlatıldı",
+ "admin.dashboard.sync_branch.started": "Dal Eşzamanlaması başladı",
+ "admin.dashboard.delete_old_actions.started": "Veritabanından başlatılan tüm eski eylemleri silin.",
+ "admin.dashboard.delete_missing_repos.started": "Git dosyaları eksik olan tüm depoları silme görevi başladı.",
+ "admin.dashboard.delete_repo_archives.started": "Tüm depo arşivlerini silme görevi başladı.",
+ "admin.dashboard.delete_inactive_accounts.started": "Etkinleştirilmemiş tüm hesapları silme görevi başladı.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s bitti",
+ "admin.dashboard.cron.error": "Cron Hatası: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s iptal edildi: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Cron Başlatıldı: %[1]s",
+ "admin.dashboard.task.unknown": "Bilinmeyen görev: %[1]s",
+ "admin.dashboard.task.finished": "Görev: %[1]s %[2]s tarafından başlatıldı ve bitti",
+ "admin.dashboard.task.error": "Görevde Hata: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "Görev: %[1]s iptal edildi: %[3]s",
+ "admin.dashboard.task.process": "Görev: %[1]s",
+ "admin.dashboard.task.started": "Görev Başlatıldı: %[1]s",
+ "admin.dashboard.operation_run": "Çalıştır",
+ "admin.dashboard.operation_switch": "Geç",
+ "admin.dashboard.operation_name": "İşlem Adı",
+ "admin.dashboard.system_status": "Sistem Durumu",
+ "admin.dashboard.operations": "Bakım İşlemleri",
+ "admin.dashboard.statistic": "Özet",
+ "admin.dashboard.new_version_hint": "Forgejo %s şimdi hazır, %s çalıştırıyorsunuz. Ayrıntılar için blog'a bakabilirsiniz.",
"admin.monitor.queue.settings.remove_all_items.success": "Kuyruktaki tüm öğeler kaldırıldı.",
"admin.monitor.queue.settings.remove_all_items": "Tümünü kaldır",
"admin.monitor.queue.settings.changed": "Ayarlar güncellendi",
@@ -60,7 +186,7 @@
"admin.system_status.server_uptime": "Sunucunun Ayakta Kalma Süresi",
"actions.variables.update.success": "Değişken düzenlendi.",
"actions.variables.update.failed": "Değişken düzenlenemedi.",
- "actions.variables.creation.success": "`\"%s\" değişkeni eklendi.`",
+ "actions.variables.creation.success": "\"%s\" değişkeni eklendi.",
"actions.variables.creation.failed": "Değişken eklenemedi.",
"actions.variables.deletion.success": "Değişken kaldırıldı.",
"actions.variables.deletion.failed": "Değişken kaldırılamadı.",
@@ -76,7 +202,7 @@
"webauthn.error.empty": "Bu anahtar için bir isim belirlemelisiniz.",
"webauthn.error.duplicated": "Güvenlik anahtarının bu istek için izni yok. Anahtarın halihazırda kayıtlı olmadığından emin olun.",
"webauthn.error.unable_to_process": "Sunucu isteğinizi işleyemedi.",
- "webauthn.error.insecure": "WebAuthn sadece güvenli bağlantıyı destekler. HTTP üzerinden test etmek için \"localhost\" veya \"127.0.0.1\" adreslerini kullanabilirsiniz.",
+ "webauthn.error.insecure": "WebAuthn(Web Kimliği) yalnızca güvenli bağlantıları destekler. HTTP üzerinden test yapmak için \"localhost\" veya \"127.0.0.1\" kaynak adresini kullanabilirsiniz",
"webauthn.error.unknown": "Bilinmeyen bir hata oluştu. Lütfen tekrar deneyin.",
"webauthn.unsupported_browser": "Tarayıcınız henüz WebAuthn desteklemiyor.",
"webauthn.error": "Güvenlik anahtarınız okunamıyor.",
@@ -125,12 +251,12 @@
"dropzone.invalid_input_type": "Bu tür dosyalar yüklenemez.",
"dropzone.file_too_big": "Dosya boyutunuz ({{filesize}} MB), ({{maxFilesize}} MB) olan maksimum boyutu aşıyor.",
"dropzone.remove_file": "Dosyayı Kaldır",
- "munits.data.b": "B",
- "munits.data.kib": "Kilobayt",
- "munits.data.mib": "Megabayt",
- "munits.data.gib": "Gigabayt",
+ "munits.data.b": "Bayt",
+ "munits.data.kib": "KiloByte",
+ "munits.data.mib": "MegaByte",
+ "munits.data.gib": "GigaByte",
"munits.data.tib": "TiB(TeraByte)",
- "munits.data.pib": "Petabayt",
+ "munits.data.pib": "PetaByte",
"munits.data.eib": "EiB",
"packages.title": "Paketler",
"packages.empty": "Henüz hiçbir paket yok.",
@@ -266,8 +392,8 @@
"other": "%s çatallar"
},
"stars.n_stars": {
- "one": "%s yıldız",
- "other": "%s yıldızlar"
+ "one": "%s yıldızlama",
+ "other": "%s yıldızlamalar"
},
"repo.pulls.merged_title_desc": {
"one": "%[2]s 'nden gelen %[1]d değişikliği(commit'i), %[3]s 'ine %[4]s olarak birleştirildi",
@@ -342,27 +468,27 @@
"repo.issue_indexer.title": "Sorun Endeksleyici",
"relativetime.mins": {
"one": "%d dakika önce",
- "other": "%d dakikalar önce"
+ "other": "%d dakika_önce"
},
"relativetime.hours": {
"one": "%d saat önce",
- "other": "%d saatler önce"
+ "other": "%d saat_önce"
},
"relativetime.days": {
"one": "%d gün önce",
- "other": "%d günler önce"
+ "other": "%d gün_önce"
},
"relativetime.weeks": {
"one": "%d hafta önce",
- "other": "%d haftalar önce"
+ "other": "%d hafta_önce"
},
"relativetime.months": {
"one": "%d ay önce",
- "other": "%d aylar önce"
+ "other": "%d ay_önce"
},
"relativetime.years": {
"one": "%d yıl önce",
- "other": "%d yıllar önce"
+ "other": "%d yıl_önce"
},
"repo.settings.push_mirror.branch_filter.label": "Dal süzgeci (isteğe bağlı)",
"repo.settings.push_mirror.branch_filter.description": "Yansıtılıcak dallar. Tüm dalları yansıtmak için boş bırakın. Sözdizimi için $[2]s dokümantasyonuna başvurun. Örneğin: main, release/*",
@@ -510,24 +636,24 @@
"meta.last_line": "Steve Jobs ile Nejat İşler'in kardeş olduğunu biliyor muydunuz.",
"repo.issues.filter_poster.hint": "Yazara göre filtrele",
"repo.issues.filter_assignee.hint": "Atanan kullanıcıya göre filtrele",
- "repo.issues.filter_reviewers.hint": "Yorum yapan kullanıcıya göre filtrele",
+ "repo.issues.filter_reviewers.hint": "Değerlendiren kullanıcıya göre filtrele",
"repo.issues.filter_mention.hint": "Bahsedilen kullanıcıya göre filtrele",
- "repo.issues.filter_modified.hint": "Son değiştirilme tarihine göre filtrele",
+ "repo.issues.filter_modified.hint": "Son düzenleyip değiştirilme tarihine göre filtrele",
"repo.issues.filter_sort.hint_with_placeholder": "Sıralama: %s",
"issues.filters.labels.exclude": "Etiketi hariç tut",
"issues.filters.labels.unexclude": "Kesin olarak hariç tut",
- "repo.pulls.auto_merge.no_permission": "Bu çekme isteğinin otomatik birleştirilmesini iptal etme izniniz yok.",
+ "repo.pulls.auto_merge.no_permission": "Bu çekme isteği'nin otomatik birleştirilmesini iptal etme izniniz yok.",
"repo.pulls.poster_manage_approval": "Onay Yönetimi",
"repo.pulls.poster_requires_approval": "Bazı iş akışları incelenmeyi bekliyor.",
"repo.pulls.poster_requires_approval.tooltip": "Bu çekme isteğinin yazarı, çatallanmış bir depodan oluşturulan veya AGit ile oluşturulan bir çekme isteği tarafından tetiklenen iş akışlarını çalıştırma konusunda güvenilir bulunmamaktadır. `pull_request` olayıyla tetiklenen iş akışları, onaylanana kadar çalıştırılmayacaktır.",
- "repo.pulls.poster_is_trusted": "Bu çekme isteği'nin yazarı her zaman güvenilir kabul edilir, workflowsiş akışlarını çalıştırma konusunda.",
+ "repo.pulls.poster_is_trusted": "Bu çekme isteğinin ( pull request ) yazarı a her zaman iş akışlarını/ workflows yürütme konusunda güvenilir bir yazardır.",
"repo.pulls.poster_is_trusted.tooltip": "Bu çekme isteğinin yazarı, `pull_request` olayları tarafından tetiklenen iş akışlarını çalıştırma konusunda açıkça güvenilir kabul edilmektedir.",
- "repo.pulls.poster_trust_deny": "Reddet (Kabul etme)",
+ "repo.pulls.poster_trust_deny": "Reddet",
"repo.pulls.poster_trust_deny.tooltip": "Onay bekleyen iş akışları iptal edilecektir.",
"repo.pulls.poster_trust_once": "Tek seferlik onayla",
- "repo.pulls.poster_trust_once.tooltip": "Bir `pull_request` olayıyla tetiklenen iş akışları bu commit üzerinde çalışacak, ancak bu pull request'e gönderilecek tüm gelecekteki commit'ler için onaylanması gerekecektir.",
+ "repo.pulls.poster_trust_once.tooltip": "Bir `pull_request` olayıyla tetiklenen iş akışları bu commit üzerinde çalışacak, ancak bu çekme isteği'ne gönderilecek tüm gelecekteki değişiklik(commit)'ler için onaylanması gerekecektir.",
"repo.pulls.poster_trust_always": "Her zaman onayla",
- "repo.pulls.poster_trust_always.tooltip": "Bir `pull_request` olayıyla tetiklenen iş akışları bu commit üzerinde çalışacak ve bu pull request'ten veya aynı kullanıcı tarafından oluşturulan gelecekteki pull request'lerden gelen çalıştırmaları onaylamaya gerek kalmayacaktır.",
+ "repo.pulls.poster_trust_always.tooltip": "Bir `pull_request` olayıyla tetiklenen iş akışları bu değişiklik (commit) üzerinde çalışacaktır ve ayrıca bu çekme isteği'nden ya da aynı kullanıcı tarafından oluşturulan gelecekteki çekme isteklerinden gelen çalıştırma işlemlerini onaylamaya gerek kalmayacaktır.",
"repo.pulls.poster_trust_revoke": "Geri al",
"repo.pulls.poster_trust_revoke.tooltip": "Bu çekme isteğinin yazarı, artık `pull_request` olayıyla tetiklenen iş akışlarını çalıştırma konusunda güvenilir kabul edilmeyecek; her çalıştırma işlemi manuel olarak onaylanmalıdır.",
"repo.view.gitmodules_too_large": ".gitmodules dosyası çok büyük ve (örneğin API çağrılarında) göz ardı edilecektir",
@@ -658,11 +784,11 @@
"actions.runners.task_list_user": "Bu kullanıcının bu çalıştırıcıdaki son görevleri",
"actions.runners.edit_runner_button": "Koşucuyu(runner) düzenle",
"actions.runners.create_runner.page_title": "Yeni koşucu(runner) oluştur",
- "issues.updated": "güncellenenler %s",
+ "issues.updated": "%s güncel",
"actions.runners.create_runner.title": "Yeni çalıştırıcı oluştur",
"actions.runners.create_runner.properties_fieldset": "Özellikler",
"actions.runners.create_runner.name_label": "Adı",
- "actions.runners.create_runner.description_label": "Açıklamasının",
+ "actions.runners.create_runner.description_label": "Açıklaması",
"actions.runners.create_runner.create_button": "Yarat",
"actions.runners.create_runner.cancel_button": "İptal et",
"actions.runners.edit_runner.page_title": "%s çalıştırıcısını düzenle",
@@ -743,5 +869,13 @@
"editor.toggle_whole_word": "Tam kelime eşleştirme özelliğini aç/kapat",
"form.RunnerName": "Adı",
"graphs.recent_commits.title": "Geçtiğimiz yılki değişiklik(commit) sayısı",
- "graphs.code_frequency.title": "{0} yıllık tarih boyunca kod sıklığı"
+ "graphs.code_frequency.title": "{0} yıllık tarih boyunca kod sıklığı",
+ "repo.files.last_commit_date": "En son değişiklik(commit) tarihi",
+ "repo.files.caption": "Depo dosyaları (en son değişiklik(commit) ilk sırada)",
+ "repo.files.filename": "Dosya adı",
+ "repo.files.last_commit_message": "En son değişiklik(commit) mesajı",
+ "actions.variables.not_found": "Değişken bulunamadı.",
+ "markup.filepreview.line": "%[2]s 'de %[1]d Satır",
+ "markup.filepreview.lines": "%[3]s içindeki %[1]d ile %[2]d arasındaki Satırlar",
+ "markup.filepreview.truncated": "Önizleme kısaltılmıştır"
}
diff --git a/options/locale_next/locale_uk-UA.json b/options/locale_next/locale_uk-UA.json
index 9913d47281..e61a78ed2e 100644
--- a/options/locale_next/locale_uk-UA.json
+++ b/options/locale_next/locale_uk-UA.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "Шлях",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "Схема",
+ "admin.config.db.user": "Ім’я користувача",
+ "admin.config.db.name": "Ім’я",
+ "admin.config.db.host": "Хост",
+ "admin.config.db.type": "Тип",
+ "admin.config.db.header": "Конфігурація бази даних",
+ "admin.config.mailer.user": "Користувач",
+ "admin.config.mailer.smtp.port": "Порт SMTP",
+ "admin.config.mailer.smtp.addr": "Адреса SMTP",
+ "admin.config.mailer.enable_helo": "Увімкнути HELO",
+ "admin.config.mailer.protocol": "Протокол",
+ "admin.config.mailer.use_dummy": "Болванка",
+ "admin.config.mailer.sendmail.timeout": "Тайм-аут Sendmail",
+ "admin.config.mailer.sendmail.args": "Додаткові аргументи для Sendmail",
+ "admin.config.mailer.sendmail.path": "Шлях до Sendmail",
+ "admin.config.mailer.sendmail.use": "Використовувати Sendmail",
+ "admin.config.mailer.name": "Ім’я",
+ "admin.config.mailer.enabled": "Увімкнено",
+ "admin.config.mailer.header": "Налаштування пошти",
+ "admin.config.git.gc_timeout": "Тайм-аут операції збирача сміття",
+ "admin.config.git.pull_timeout": "Тайм-аут операції отримання змін",
+ "admin.config.git.clone_timeout": "Тайм-аут операції клонування",
+ "admin.config.git.mirror_timeout": "Тайм-аут оновлення дзеркала",
+ "admin.config.git.migrate_timeout": "Тайм-аут перенесення",
+ "admin.config.git.gc_args": "Аргументи збирача сміття",
+ "admin.config.git.diff.max_files": "Максимум файлів для показу при порівнянні",
+ "admin.config.git.diff.max_line_characters": "Максимум символів на рядок при порівнянні",
+ "admin.config.git.diff.max_lines": "Максимум рядків на файл при порівнянні",
+ "admin.config.git.disable_diff_highlight": "Вимкнути підсвітку синтаксису diff",
+ "admin.config.git.version": "Версія Git",
+ "admin.config.git.header": "Конфігурація Git",
+ "admin.config.ssh.minimum_key_sizes": "Мінімальні розміри ключів",
+ "admin.config.ssh.minimum_key_size_check": "Перевірка мінімального розміру ключа",
+ "admin.config.ssh.keygen_path": "Шлях до генератора ключів («ssh-keygen»)",
+ "admin.config.ssh.key_test_path": "Шлях до тестового ключа",
+ "admin.config.ssh.root_path": "Шлях до кореня",
+ "admin.config.ssh.listen_port": "Порт, що прослуховується",
+ "admin.config.ssh.port": "Порт",
+ "admin.config.ssh.domain": "Домен сервера SSH",
+ "admin.config.ssh.use_builtin_server": "Використовувати вбудований сервер",
+ "admin.config.ssh.enabled": "Увімкнено",
+ "admin.config.ssh.header": "Конфігурація SSH",
+ "admin.users.never_login": "Ніколи не входив",
+ "admin.users.last_login": "Останній вхід",
+ "admin.users.created": "Створено",
+ "admin.users.repos": "Репозиторії",
+ "admin.users.2fa": "2FA",
+ "admin.users.remote": "Віддалено",
+ "admin.users.bot": "Бот",
+ "admin.users.reserved": "Зарезервовано",
+ "admin.users.restricted": "Обмежено",
+ "admin.users.admin": "Адміністратор",
+ "admin.users.activated": "Активовано",
+ "admin.users.full_name": "Повне ім’я",
+ "admin.users.name": "Ім’я користувача",
+ "admin.packages.published": "Опубліковано",
+ "admin.packages.size": "Розмір",
+ "admin.packages.repository": "Репозиторій",
+ "admin.packages.type": "Тип",
+ "admin.packages.version": "Версія",
+ "admin.packages.name": "Назва",
+ "admin.packages.creator": "Творець",
+ "admin.packages.owner": "Власник",
+ "admin.packages.unreferenced_size": "Розмір без посилань: %s",
+ "admin.packages.total_size": "Загальний розмір: %s",
+ "admin.repos.lfs_size": "Розмір LFS",
+ "admin.repos.size": "Розмір",
+ "admin.repos.issues": "Задачі",
+ "admin.repos.name": "Назва",
+ "admin.repos.owner": "Власник",
+ "admin.orgs.new_orga": "Нова організація",
+ "admin.orgs.members": "Учасники",
+ "admin.orgs.teams": "Команди",
+ "admin.orgs.name": "Назва",
+ "admin.dashboard.rebuild_issue_indexer": "Перебудувати індексатор задач",
+ "admin.dashboard.start_schedule_tasks": "Запустити заплановані завдання Дій",
+ "admin.dashboard.cancel_abandoned_jobs": "Скасувати покинуті завдання Дій",
+ "admin.dashboard.stop_endless_tasks": "Зупинити нескінченні завдання Дій",
+ "admin.dashboard.stop_zombie_tasks": "Зупинити зомбі-завдання Дій",
+ "admin.dashboard.gc_lfs": "Виконати очистку сміття метаоб’єктів LFS",
+ "admin.dashboard.delete_old_system_notices": "Видалити всі старі сповіщення системи з бази даних",
+ "admin.dashboard.update_checker": "Перевірка оновлень",
+ "admin.dashboard.cleanup_actions": "Очистити прострочені журнали й артефакти від Дій",
+ "admin.dashboard.cleanup_packages": "Очистити непридатні пакунки",
+ "admin.dashboard.cleanup_hook_task_table": "Очистити таблицю hook_task",
+ "admin.dashboard.sync_external_users": "Синхронізувати дані зовнішніх користувачів",
+ "admin.dashboard.reinit_missing_repos": "Переініціалізувати всі Git-репозиторії, для яких існують записи",
+ "admin.dashboard.resync_all_hooks": "Пересинхронізувати Git-хуки в усіх репозиторіях (pre-receive, update, post-receive, proc-receive тощо)",
+ "admin.dashboard.resync_all_sshprincipals": "Оновити файл «.ssh/authorized_principals» з SSH-принципалами Forgejo.",
+ "admin.dashboard.resync_all_sshkeys": "Оновити файл «.ssh/authorized_keys» з SSH-ключами Forgejo.",
+ "admin.dashboard.git_gc_repos": "Виконати очистку сміття для всіх репозиторіїв",
+ "admin.dashboard.update_migration_poster_id": "Оновити перенесені ID авторів",
+ "admin.dashboard.deleted_branches_cleanup": "Прибрати видалені гілки",
+ "admin.dashboard.archive_cleanup": "Видалити старі архіви репозиторіїв",
+ "admin.dashboard.check_repo_stats": "Перевірити статистику всіх репозиторіїв",
+ "admin.dashboard.repo_health_check": "Перевірка стану всіх репозиторіїв",
+ "admin.dashboard.update_mirrors": "Оновити дзеркала",
+ "admin.dashboard.sync_repo_tags": "Синхронізувати теги з даних Git із базою даних",
+ "admin.dashboard.sync_repo_branches": "Синхронізувати відсутні гілки з даних Git в базу даних",
+ "admin.dashboard.delete_generated_repository_avatars": "Видалити репозиторій з згенерованими аватарами",
+ "admin.dashboard.sync_tag.started": "Розпочато синхронізацію тегів",
+ "admin.dashboard.sync_branch.started": "Розпочато синхронізацію гілок",
+ "admin.dashboard.delete_old_actions.started": "Розпочато видалення всіх старих активностей з бази даних.",
+ "admin.dashboard.delete_missing_repos.started": "Запущено завдання видалення всіх репозиторіїв, в яких відсутні файли Git.",
+ "admin.dashboard.delete_repo_archives.started": "Запущено завдання видалення всіх архівів репозиторіїв.",
+ "admin.dashboard.delete_inactive_accounts.started": "Запущено завдання видалення всі неактивованих облікових записів.",
+ "admin.dashboard.cron.finished": "Cron: %[1]s завершено",
+ "admin.dashboard.cron.error": "Помилка в Cron: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "Cron: %[1]s скасовано: %[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "Запущено Cron: %[1]s",
+ "admin.dashboard.task.unknown": "Невідоме завдання: %[1]s",
+ "admin.dashboard.task.finished": "Завершилося завдання, яке запустив %[2]s: %[1]s",
+ "admin.dashboard.task.error": "Помилка у завданні: %[1]s:%[3]s",
+ "admin.dashboard.task.cancelled": "Завдання: %[1]s скасовано: %[3]s",
+ "admin.dashboard.task.process": "Завдання: %[1]s",
+ "admin.dashboard.task.started": "Запущено завдання: %[1]s",
+ "admin.dashboard.operation_run": "Запустити",
+ "admin.dashboard.operation_switch": "Перемкнути",
+ "admin.dashboard.operation_name": "Назва операції",
+ "admin.dashboard.system_status": "Стан системи",
+ "admin.dashboard.operations": "Технічне обслуговування",
+ "admin.dashboard.statistic": "Підсумок",
+ "admin.dashboard.new_version_hint": "Вийшла %s версія Forgejo, ви використовуєте %s. Докладніше читайте у блозі.",
"admin.monitor.queue.settings.remove_all_items.success": "Усі елементи в черзі видалено.",
"admin.monitor.queue.settings.remove_all_items": "Видалити всі",
"admin.monitor.queue.settings.changed": "Налаштування оновлено",
@@ -42,8 +168,8 @@
"admin.system_status.mcache_structures_usage": "Використання структур MCache",
"admin.system_status.mspan_structures_obtained": "Отримано структур MSpan",
"admin.system_status.mspan_structures_usage": "Використання структур MSpan",
- "admin.system_status.stack_memory_obtained": "Отримано пам’яті стеком",
- "admin.system_status.bootstrap_stack_usage": "Використання стеку bootstrap",
+ "admin.system_status.stack_memory_obtained": "Отримано стекової пам’яті",
+ "admin.system_status.bootstrap_stack_usage": "Використання стекової пам’яті",
"admin.system_status.heap_objects": "Об’єктів динамічної пам’яті",
"admin.system_status.heap_memory_released": "Звільнено динамічної пам’яті",
"admin.system_status.heap_memory_in_use": "Динамічної пам’яті використовується",
@@ -84,7 +210,7 @@
"webauthn.error.unknown": "Сталася невідома помилка. Будь ласка, повторіть спробу.",
"webauthn.unsupported_browser": "Ваш браузер наразі не підтримує WebAuthn.",
"webauthn.error": "Не вдалося розпізнати ключ безпеки.",
- "webauthn.use_twofa": "Введіть код підтвердження з телефону",
+ "webauthn.use_twofa": "Уведіть код підтвердження з телефона",
"webauthn.press_button": "Натисніть кнопку на ключі безпеки…",
"webauthn.sign_in": "Натисніть кнопку на ключі безпеки. Якщо ключ безпеки не має кнопки, від’єднайте його і під’єднайте ще раз.",
"webauthn.insert_key": "Під’єднайте ключ безпеки",
@@ -771,5 +897,57 @@
"repo.files.filename": "Назва файлу",
"repo.files.last_commit_message": "Повідомлення останнього коміту",
"repo.files.last_commit_date": "Дата останнього коміту",
- "repo.files.caption": "Файли репозиторію (спочатку останній коміт)"
+ "repo.files.caption": "Файли репозиторію (спочатку останній коміт)",
+ "settings.authorized_integration.field.name": "Назва",
+ "settings.authorized_integration.field.description": "Опис",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Дії Forgejo (локальні)",
+ "settings.authorized_integration.edit": "Редагувати",
+ "repo.pulls.status_checks_skipped": "Пропущено",
+ "repo.packages.visibility_warning": "Це приватний репозиторій, але пов’язані з ним пакунки є загальнодоступними (власник %s є публічним).",
+ "settings.authorized_integrations": "Авторизовані інтеграції",
+ "settings.manage_authorized_integrations": "Авторизовані інтеграції",
+ "settings.authorized_integration.edit_page_title": "Авторизована інтеграція %s",
+ "settings.authorized_integration.create_page_title": "Створити авторизовану інтеграцію",
+ "settings.authorized_integration.save": "Зберегти авторизовану інтеграцію",
+ "settings.authorized_integration.create": "Створити авторизовану інтеграцію",
+ "settings.authorized_integration.create_success": "Створено авторизовану інтеграцію: %s",
+ "settings.authorized_integration.name.required": "Необхідно вказати назву авторизованої інтеграції.",
+ "settings.authorized_integration.add": "Додати авторизовану інтеграцію",
+ "settings.authorized_integration.delete.header": "Видалити авторизовану інтеграцію",
+ "settings.authorized_integration.specified_repos_none": "Авторизовані інтеграції з указаними репозиторіями повинні мати принаймні один репозиторій.",
+ "settings.authorized_integration.specified_repos_and_public_only": "Авторизовані інтеграції з указаними репозиторіями не можна використовувати з налаштуванням «Тільки публічні».",
+ "settings.authorized_integration.specified_repos_and_invalid_scope": "Авторизовані інтеграції з указаними репозиторіями можна використовувати лише з дозволами read:issue, write:issue, read:repository та write:repository.",
+ "settings.authorized_integration.deleted": "Авторизовану інтеграцію успішно видалено.",
+ "settings.authorized_integration.delete.body": "Видалення авторизованої інтеграції скасує доступ застосунку інтеграції до вашого облікового запису. Ця дія є остаточною і її неможливо скасувати. Створена заново авторизована інтеграція матиме інше твердження про аудиторію (aud). Продовжити?",
+ "settings.authorized_integration.field.audience": "Аудиторія (твердження aud)",
+ "settings.authorized_integration.field.issuer": "Емітент (твердження iss)",
+ "settings.authorized_integration.ui.generic": "Загальний JWT",
+ "settings.authorized_integration.claims.generic": "Правила загального JWT",
+ "settings.authorized_integration.none": "Не налаштовано жодної авторизованої інтеграції.",
+ "settings.authorized_integration.field.description.placeholder": "Використовується для публікації пакунків, якщо...",
+ "settings.authorized_integration.desc": "Авторизовані інтеграції дозволяють Forgejo отримувати підписані JWT, перевіряти їхні твердження на відповідність налаштованим правилам та надавати їм доступ до API Forgejo.",
+ "settings.authorized_integration.perms.title": "Дозволені можливості",
+ "settings.authorized_integration.copy_audience": "Копіювати аудиторію в буфер обміну",
+ "settings.authorized_integration.issuer.invalid": "Не вдалося перевірити емітента: %s",
+ "settings.authorized_integration.claim_rules.invalid": "Не вдалося перевірити правила заявки: %s",
+ "settings.authorized_integration.field.claim_rules": "JSON правил заявки",
+ "actions.runs.delete.error_could_not_load_run": "Не вдалося завантажити запуск для видалення.",
+ "actions.runs.delete.error_could_not_delete_run": "Не вдалося видалити запуск.",
+ "actions.runs.delete.button": "Видалити запуск",
+ "actions.runs.delete.error": "Не вдалося видалити запуск робочого потоку.",
+ "actions.runs.delete.confirm_action": "Ви дійсно хочете видалити цей запуск робочого потоку?",
+ "admin.auths.oauth2_dyn_group_maps_removal": "Динамічно видаляти користувачів з усіх команд, до яких вони не додані, на основі зіставлення груп.",
+ "admin.auths.oauth2_dyn_group_maps": "Динамічно додавати користувачів до команд на основі динамічного зіставлення груп. (Необов’язково)",
+ "settings.authorized_integration.forgejo_actions_local.event.label": "Подія:",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.label": "Посилання Git:",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.error": "Помилка під час розбору файлу робочого потоку: %s",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.error": "Помилка під час розбору посилання Git: %s",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.label": "Файл робочого потоку (без каталогу):",
+ "settings.authorized_integration.forgejo_actions_local.select_repo": "Вибрати",
+ "settings.authorized_integration.forgejo_actions_local.select_repository": "Виберіть репозиторій: (у ньому мають бути ввімкнені Дії Forgejo)",
+ "settings.authorized_integration.forgejo_actions_local.repo.required": "Необхідно вибрати репозиторій-джерело Дій Forgejo.",
+ "settings.authorized_integration.forgejo_actions_local.event.help": "Якщо події не вибрано, буде дозволено будь-яку подію.",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.help": "Якщо залишити порожнім, буде дозволено будь-яке посилання. Синтаксис шаблонів дивіться у документації %[2]s.refs/heads/main, refs/pull/*/head.",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.help": "Якщо залишити порожнім, буде дозволено будь-який робочий потік. Синтаксис шаблонів дивіться у документації %[2]s.testing.yml, test-*.yml.",
+ "settings.authorized_integration.forgejo_actions_local.description": "Дії Forgejo зможуть отримувати доступ до Forgejo через цю авторизовану інтеграцію з одного вибраного репозиторію, якщо виконання відповідає умовам, визначеним нижче."
}
diff --git a/options/locale_next/locale_vi.json b/options/locale_next/locale_vi.json
index 28b84ca6ec..3197d254c4 100644
--- a/options/locale_next/locale_vi.json
+++ b/options/locale_next/locale_vi.json
@@ -1,4 +1,7 @@
{
+ "admin.config.git.clone_timeout": "Thời gian tối đa Thao tác Nhân bản",
+ "admin.dashboard.sync_repo_tags": "Đồng bộ hoá các nhãn từ dữ liệu Git đến cơ sở dữ liệu",
+ "admin.dashboard.sync_tag.started": "Đã bắt đầu đồng bộ hoá nhãn",
"webauthn.error.timeout": "Hết thời gian đọc khóa mất rồi. Hãy tải lại trang và thử lại.",
"webauthn.error.empty": "Bạn phải đặt tên cho khóa này.",
"webauthn.error.duplicated": "Khóa bảo mật không được phép cho yêu cầu này. Vui lòng đảm bảo rằng khóa chưa được đăng ký trước đó.",
diff --git a/options/locale_next/locale_zh-CN.json b/options/locale_next/locale_zh-CN.json
index bd7fbcf3d2..118d40ce86 100644
--- a/options/locale_next/locale_zh-CN.json
+++ b/options/locale_next/locale_zh-CN.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "数据库路径",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "架构模式",
+ "admin.config.db.user": "用户名",
+ "admin.config.db.name": "数据库名称",
+ "admin.config.db.host": "主机",
+ "admin.config.db.type": "类型",
+ "admin.config.db.header": "数据库配置",
+ "admin.config.mailer.user": "发送者帐号",
+ "admin.config.mailer.smtp.port": "SMTP端口",
+ "admin.config.mailer.smtp.addr": "SMTP地址",
+ "admin.config.mailer.enable_helo": "启用HELO",
+ "admin.config.mailer.protocol": "协议",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Sendmail超时",
+ "admin.config.mailer.sendmail.args": "Sendmail的额外参数",
+ "admin.config.mailer.sendmail.path": "Sendmail路径",
+ "admin.config.mailer.sendmail.use": "使用Sendmail",
+ "admin.config.mailer.name": "任务名称",
+ "admin.config.mailer.enabled": "启用服务",
+ "admin.config.mailer.header": "邮件配置",
+ "admin.config.git.gc_timeout": "GC操作超时",
+ "admin.config.git.pull_timeout": "拉取操作超时",
+ "admin.config.git.clone_timeout": "克隆操作超时",
+ "admin.config.git.mirror_timeout": "镜像更新操作超时",
+ "admin.config.git.migrate_timeout": "迁移操作超时",
+ "admin.config.git.gc_args": "GC参数",
+ "admin.config.git.diff.max_files": "差异对比显示的最大文件数",
+ "admin.config.git.diff.max_line_characters": "差异对比显示的最大字符数(单行)",
+ "admin.config.git.diff.max_lines": "差异对比显示的最大行数(单个文件)",
+ "admin.config.git.disable_diff_highlight": "禁用差异对比语法高亮",
+ "admin.config.git.version": "Git版本",
+ "admin.config.git.header": "Git配置",
+ "admin.config.ssh.minimum_key_sizes": "密钥最小长度限制",
+ "admin.config.ssh.minimum_key_size_check": "密钥最小长度检查",
+ "admin.config.ssh.keygen_path": "密钥生成器(“ssh-keygen”)路径",
+ "admin.config.ssh.key_test_path": "密钥测试路径",
+ "admin.config.ssh.root_path": "根目录",
+ "admin.config.ssh.listen_port": "监听端口",
+ "admin.config.ssh.port": "端口",
+ "admin.config.ssh.domain": "SSH服务器域名",
+ "admin.config.ssh.use_builtin_server": "使用内置SSH服务器",
+ "admin.config.ssh.enabled": "启用",
+ "admin.config.ssh.header": "SSH配置",
+ "admin.users.never_login": "从未登录",
+ "admin.users.last_login": "上次登录",
+ "admin.users.created": "创建时间",
+ "admin.users.repos": "仓库数",
+ "admin.users.2fa": "两步验证",
+ "admin.users.remote": "远程",
+ "admin.users.bot": "机器人",
+ "admin.users.reserved": "保留",
+ "admin.users.restricted": "受限",
+ "admin.users.admin": "管理员",
+ "admin.users.activated": "已激活",
+ "admin.users.full_name": "全名",
+ "admin.users.name": "用户名",
+ "admin.packages.published": "已发布",
+ "admin.packages.size": "大小",
+ "admin.packages.repository": "仓库",
+ "admin.packages.type": "类型",
+ "admin.packages.version": "版本",
+ "admin.packages.name": "名称",
+ "admin.packages.creator": "创建者",
+ "admin.packages.owner": "所有者",
+ "admin.packages.unreferenced_size": "未引用大小:%s",
+ "admin.packages.total_size": "总大小:%s",
+ "admin.repos.lfs_size": "LFS大小",
+ "admin.repos.size": "大小",
+ "admin.repos.issues": "议题数",
+ "admin.repos.name": "名称",
+ "admin.repos.owner": "所有者",
+ "admin.orgs.new_orga": "创建新的组织",
+ "admin.orgs.members": "成员",
+ "admin.orgs.teams": "团队",
+ "admin.orgs.name": "名称",
+ "admin.dashboard.rebuild_issue_indexer": "重建议题索引",
+ "admin.dashboard.start_schedule_tasks": "开始安排操作任务",
+ "admin.dashboard.cancel_abandoned_jobs": "取消放弃的操作任务",
+ "admin.dashboard.stop_endless_tasks": "停止无休止的操作任务",
+ "admin.dashboard.stop_zombie_tasks": "停止僵尸操作任务",
+ "admin.dashboard.gc_lfs": "垃圾回收LFS元数据",
+ "admin.dashboard.delete_old_system_notices": "从数据库中删除所有旧系统通知",
+ "admin.dashboard.update_checker": "更新检查器",
+ "admin.dashboard.cleanup_actions": "清理过期的Actions日志和制品",
+ "admin.dashboard.cleanup_packages": "清理过期的软件包",
+ "admin.dashboard.cleanup_hook_task_table": "清理hook_task表",
+ "admin.dashboard.sync_external_users": "同步外部用户数据",
+ "admin.dashboard.reinit_missing_repos": "重新初始化所有丢失的Git仓库存在的记录",
+ "admin.dashboard.resync_all_hooks": "重新同步所有仓库的Git钩子(pre-receive、update、post-receive、proc-receive等)",
+ "admin.dashboard.resync_all_sshprincipals": "使用Forgejo的SSH规则更新“.ssh/authorized_principals”文件。",
+ "admin.dashboard.resync_all_sshkeys": "使用Forgejo的SSH密钥更新“.ssh/authorized_keys”文件。",
+ "admin.dashboard.git_gc_repos": "对仓库进行垃圾回收",
+ "admin.dashboard.update_migration_poster_id": "更新迁移的发布者ID",
+ "admin.dashboard.deleted_branches_cleanup": "清理已删除的分支",
+ "admin.dashboard.archive_cleanup": "删除旧的仓库存档",
+ "admin.dashboard.check_repo_stats": "检查所有仓库统计",
+ "admin.dashboard.repo_health_check": "对所有仓库健康检查",
+ "admin.dashboard.update_mirrors": "更新镜像仓库",
+ "admin.dashboard.sync_repo_tags": "同步Git数据中的标签至数据库",
+ "admin.dashboard.sync_repo_branches": "将缺少的分支从Git数据同步到数据库",
+ "admin.dashboard.delete_generated_repository_avatars": "删除生成的仓库头像",
+ "admin.dashboard.sync_tag.started": "标签同步已开始",
+ "admin.dashboard.sync_branch.started": "分支同步已开始",
+ "admin.dashboard.delete_old_actions.started": "已开始从数据库中删除所有旧操作记录。",
+ "admin.dashboard.delete_missing_repos.started": "删除所有丢失Git文件的仓库任务已启动。",
+ "admin.dashboard.delete_repo_archives.started": "删除所有仓库存档任务已启动。",
+ "admin.dashboard.delete_inactive_accounts.started": "删除所有未激活的账户任务已启动。",
+ "admin.dashboard.cron.finished": "任务:%[1]s已经完成",
+ "admin.dashboard.cron.error": "任务中的错误:%s:%[3]s",
+ "admin.dashboard.cron.cancelled": "定时任务:%[1]s已取消:%[3]s",
+ "admin.dashboard.cron.process": "计划任务:%[1]s",
+ "admin.dashboard.cron.started": "已开始计划任务:%[1]s",
+ "admin.dashboard.task.unknown": "未知任务:%[1]s",
+ "admin.dashboard.task.finished": "任务:%[2]s启动的%[1]s已完成",
+ "admin.dashboard.task.error": "任务中的错误:%[1]s:%[3]s",
+ "admin.dashboard.task.cancelled": "任务:%[1]s已取消:%[3]s",
+ "admin.dashboard.task.process": "任务:%[1]s",
+ "admin.dashboard.task.started": "已开始任务:%[1]s",
+ "admin.dashboard.operation_run": "执行",
+ "admin.dashboard.operation_switch": "开关",
+ "admin.dashboard.operation_name": "操作名称",
+ "admin.dashboard.system_status": "系统状态",
+ "admin.dashboard.operations": "维护操作",
+ "admin.dashboard.statistic": "摘要",
+ "admin.dashboard.new_version_hint": "Forgejo %s现已可用,您正在运行%s。查看博客了解详情。",
"admin.monitor.queue.settings.remove_all_items.success": "队列中的所有项目已被移除。",
"admin.monitor.queue.settings.remove_all_items": "移除全部",
"admin.monitor.queue.settings.changed": "设置已更新",
@@ -34,57 +160,57 @@
"admin.system_status.last_gc_pause": "上次GC暂停时间",
"admin.system_status.total_gc_pause": "GC暂停时间总量",
"admin.system_status.last_gc_time": "距离上次GC时间",
- "admin.system_status.next_gc_recycle": "下次GC内存回收量",
- "admin.system_status.other_system_allocation_obtained": "其它被分配的系统内存",
- "admin.system_status.gc_metadata_obtained": "被分配的GC元数据内存",
- "admin.system_status.profiling_bucket_hash_table_obtained": "被分配的剖析哈希表内存",
- "admin.system_status.mcache_structures_obtained": "被分配的MCache结构内存",
- "admin.system_status.mcache_structures_usage": "MCache结构内存使用量",
- "admin.system_status.mspan_structures_obtained": "被分配的MSpan结构内存",
- "admin.system_status.mspan_structures_usage": "MSpan结构内存使用量",
- "admin.system_status.stack_memory_obtained": "被分配的Stack内存",
- "admin.system_status.bootstrap_stack_usage": "启动Stack使用量",
- "admin.system_status.heap_objects": "Heap对象数量",
- "admin.system_status.heap_memory_released": "被释放的Heap内存",
- "admin.system_status.heap_memory_in_use": "正在使用的Heap内存",
- "admin.system_status.heap_memory_idle": "Heap内存空闲量",
- "admin.system_status.heap_memory_obtained": "Heap内存占用量",
- "admin.system_status.current_heap_usage": "当前Heap内存使用量",
+ "admin.system_status.next_gc_recycle": "下次GC回收",
+ "admin.system_status.other_system_allocation_obtained": "其它已分配的系统内存",
+ "admin.system_status.gc_metadata_obtained": "已分配的GC元数据内存",
+ "admin.system_status.profiling_bucket_hash_table_obtained": "已分配的剖析哈希表内存",
+ "admin.system_status.mcache_structures_obtained": "已分配的MCache结构内存",
+ "admin.system_status.mcache_structures_usage": "MCache结构使用量",
+ "admin.system_status.mspan_structures_obtained": "已分配的MSpan结构内存",
+ "admin.system_status.mspan_structures_usage": "MSpan结构使用量",
+ "admin.system_status.stack_memory_obtained": "已分配的栈内存总量",
+ "admin.system_status.bootstrap_stack_usage": "启动栈使用量",
+ "admin.system_status.heap_objects": "堆对象数量",
+ "admin.system_status.heap_memory_released": "已释放的堆内存",
+ "admin.system_status.heap_memory_in_use": "正在使用的堆内存",
+ "admin.system_status.heap_memory_idle": "堆内存空闲量",
+ "admin.system_status.heap_memory_obtained": "堆内存占用量",
+ "admin.system_status.current_heap_usage": "当前堆内存使用量",
"admin.system_status.memory_free_times": "内存释放次数",
"admin.system_status.memory_allocate_times": "内存分配次数",
"admin.system_status.pointer_lookup_times": "指针查找次数",
"admin.system_status.memory_obtained": "内存占用量",
- "admin.system_status.total_memory_allocated": "所有被分配的内存",
+ "admin.system_status.total_memory_allocated": "已分配的内存总量",
"admin.system_status.current_memory_usage": "当前内存使用量",
- "admin.system_status.current_goroutine": "当前Goroutines数量",
+ "admin.system_status.current_goroutine": "当前goroutines数量",
"admin.system_status.server_uptime": "服务运行时间",
- "markup.filepreview.truncated": "预览已被截断",
- "markup.filepreview.lines": "%[3]s中的第%[1]d到%[2]d行",
+ "markup.filepreview.truncated": "预览已截断",
+ "markup.filepreview.lines": "%[3]s中的第%[1]d至%[2]d行",
"markup.filepreview.line": "%[2]s中的第%[1]d行",
- "actions.variables.update.success": "该变量已被编辑。",
+ "actions.variables.update.success": "已编辑变量。",
"actions.variables.update.failed": "编辑变量失败。",
- "actions.variables.creation.success": "变量 “%s” 添加成功。",
+ "actions.variables.creation.success": "成功添加变量“%s”。",
"actions.variables.creation.failed": "添加变量失败。",
- "actions.variables.deletion.success": "变量已被删除。",
+ "actions.variables.deletion.success": "已删除变量。",
"actions.variables.deletion.failed": "删除变量失败。",
"actions.variables.not_found": "找不到变量。",
"actions.variables.edit": "编辑变量",
- "actions.variables.description": "变量将被传给特定的Action,其它情况将不能被读取。",
- "actions.variables.deletion.description": "删除变量是永久性的,无法撤消。继续吗?",
+ "actions.variables.description": "变量将被传给特定的action,且其它情况下不能被读取。",
+ "actions.variables.deletion.description": "删除变量是永久且无法撤消的。继续吗?",
"actions.variables.deletion": "删除变量",
- "actions.variables.none": "目前还没有变量。",
+ "actions.variables.none": "暂无变量。",
"actions.variables.creation": "添加变量",
"actions.variables.management": "管理变量",
"actions.variables": "变量",
- "webauthn.error.timeout": "未能在允许的时限内读取密钥。请重新加载此页面并重试。",
- "webauthn.error.empty": "您必须为此密钥设置一个名称。",
- "webauthn.error.duplicated": "此安全密钥未被许可用于这个请求。请确保该密钥尚未注册。",
+ "webauthn.error.timeout": "未能在允许的时限内读取密钥,请重新加载此页面并重试。",
+ "webauthn.error.empty": "必须为密钥设置名称。",
+ "webauthn.error.duplicated": "此安全密钥无法用于这一请求,请确保该密钥尚未被注册。",
"webauthn.error.unable_to_process": "服务器无法处理您的请求。",
- "webauthn.error.insecure": "WebAuthn仅支持安全连接。如果要在HTTP协议上进行测试,请使用\"localhost\"或\"127.0.0.1\"作为访问来源",
+ "webauthn.error.insecure": "WebAuthn仅支持安全连接。若要在HTTP协议上测试,请以“localhost”或“127.0.0.1”作为访问来源",
"webauthn.error.unknown": "发生未知错误。请重试。",
- "webauthn.unsupported_browser": "你的浏览器目前不支持WebAuthn。",
+ "webauthn.unsupported_browser": "您的浏览器目前不支持WebAuthn。",
"webauthn.error": "无法读取安全密钥。",
- "webauthn.use_twofa": "使用来自手机中的两步验证码",
+ "webauthn.use_twofa": "使用手机上的两步验证码",
"webauthn.press_button": "请按下安全密钥上的按钮……",
"webauthn.sign_in": "按下安全密钥上的按钮。如果安全密钥没有按钮,请重新插入它。",
"webauthn.insert_key": "插入安全密钥",
@@ -275,7 +401,7 @@
"packages.owner.settings.chef.title": "Chef注册中心",
"packages.owner.settings.chef.keypair": "生成密钥对",
"packages.owner.settings.chef.keypair.description": "发送至Chef注册中心的请求必须被加密签名以验证身份。在生成密钥对时,Forgejo仅保存公钥,您将得到供knife使用的私钥。生成新的密钥对将丢弃旧的密钥对。",
- "fork.n_forks": "%s个派生",
+ "fork.n_forks": "%s个分叉",
"stars.n_stars": "%s次点赞",
"release.n_downloads": "%s次下载",
"repo.pulls.merged_title_desc": "于%[4]s将%[1]d次代码提交从%[2]s合并至%[3]s",
@@ -475,7 +601,7 @@
"teams.remove_all_repos.modal.header": "移除所有仓库",
"repo.pulls.poster_manage_approval": "管理批准",
"repo.pulls.poster_requires_approval": "有工作流正等待审阅。",
- "repo.pulls.poster_requires_approval.tooltip": "此合并请求的作者未被信任以运行由派生仓库或AGit创建的PR触发的工作流。由`pull_request`事件触发的工作流在被批准前不会运行。",
+ "repo.pulls.poster_requires_approval.tooltip": "此合并请求的作者未被信任以运行由分叉仓库或AGit创建的PR触发的工作流。由`pull_request`事件触发的工作流在被批准前不会运行。",
"repo.pulls.poster_is_trusted": "此合并请求的作者总是受到信任以运行工作流。",
"repo.pulls.poster_is_trusted.tooltip": "此合并请求的作者被明确信任以运行由`pull_request`事件触发的工作流。",
"repo.pulls.poster_trust_deny": "拒绝",
@@ -691,5 +817,57 @@
"repo.files.caption": "仓库文件(优先显示最新提交)",
"repo.files.filename": "文件名",
"repo.files.last_commit_message": "最新提交消息",
- "repo.files.last_commit_date": "最新提交日期"
+ "repo.files.last_commit_date": "最新提交日期",
+ "repo.pulls.status_checks_skipped": "跳过",
+ "repo.packages.visibility_warning": "此仓库是私有的,但有公开可见的软件包(所有者“%s”是公开的)。",
+ "settings.authorized_integrations": "授权集成",
+ "settings.manage_authorized_integrations": "授权集成",
+ "settings.authorized_integration.desc": "授权集成使Forgejo能够接收已签名的JWT、用已配置的规则验证声明、允许这些JWT访问Forgejo的API。",
+ "settings.authorized_integration.none": "暂无授权集成。",
+ "settings.authorized_integration.ui.forgejo_actions_local": "Forgejo Actions(本地)",
+ "settings.authorized_integration.edit": "编辑",
+ "settings.authorized_integration.edit_page_title": "授权集成 %s",
+ "settings.authorized_integration.create_page_title": "创建授权集成",
+ "settings.authorized_integration.save": "保存授权集成",
+ "settings.authorized_integration.create": "创建授权集成",
+ "settings.authorized_integration.create_success": "已创建授权集成:%s",
+ "settings.authorized_integration.field.name": "名称",
+ "settings.authorized_integration.field.description": "描述",
+ "settings.authorized_integration.field.description.placeholder": "用于在……时发布软件包",
+ "settings.authorized_integration.field.audience": "受众(aud声明)",
+ "settings.authorized_integration.field.issuer": "发行者(iss声明)",
+ "settings.authorized_integration.field.claim_rules": "声明规则JSON",
+ "settings.authorized_integration.perms.title": "允许的能力",
+ "settings.authorized_integration.copy_audience": "复制受众到剪贴板",
+ "settings.authorized_integration.name.required": "授权集成名称必填。",
+ "settings.authorized_integration.issuer.invalid": "发行者验证失败:%s",
+ "settings.authorized_integration.claim_rules.invalid": "声明规则验证失败:%s",
+ "settings.authorized_integration.specified_repos_none": "限定仓库的授权集成必须指定至少一个仓库。",
+ "settings.authorized_integration.specified_repos_and_public_only": "限定仓库的授权集成不能与仅公开可见范围一同使用。",
+ "settings.authorized_integration.specified_repos_and_invalid_scope": "限定仓库的授权集成只能与read:issue、write:issue、read:repository、write:repository一同使用。",
+ "settings.authorized_integration.add": "添加授权集成",
+ "settings.authorized_integration.delete.header": "删除授权集成",
+ "settings.authorized_integration.delete.body": "删除授权集成会撤销其对您的账户的访问权限。这是永久且不可逆的,即便创建一个新的授权集成,它也不会有相同的受众(aud)声明。继续吗?",
+ "settings.authorized_integration.deleted": "已成功删除授权集成。",
+ "settings.authorized_integration.ui.generic": "通用JWT",
+ "settings.authorized_integration.claims.generic": "通用JWT规则",
+ "actions.runs.delete.error_could_not_load_run": "无法加载运行以便执行删除。",
+ "actions.runs.delete.error_could_not_delete_run": "无法删除运行。",
+ "actions.runs.delete.button": "删除运行",
+ "actions.runs.delete.error": "无法删除工作流运行。",
+ "actions.runs.delete.confirm_action": "真的要删除此工作流运行吗?",
+ "admin.auths.oauth2_dyn_group_maps": "根据组映射动态地将用户添加到团队。(可选)",
+ "admin.auths.oauth2_dyn_group_maps_removal": "动态地将用户从组映射没有包含的团队中移除。",
+ "settings.authorized_integration.forgejo_actions_local.select_repo": "选择",
+ "settings.authorized_integration.forgejo_actions_local.select_repository": "已选中的仓库:(这些仓库必须已启用Forgejo Actions)",
+ "settings.authorized_integration.forgejo_actions_local.description": "如果满足下面定义的条件,Forgejo Actions将能够通过此授权集成,从任意选中的仓库访问Forgejo。",
+ "settings.authorized_integration.forgejo_actions_local.repo.required": "必须选中Forgejo Actions源仓库。",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.label": "工作流文件(不含目录):",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.help": "留空将允许所有工作流。关于模式匹配语法,参见%[2]s文档。例如:testing.yml、test-*.yml。",
+ "settings.authorized_integration.forgejo_actions_local.workflow_file.error": "无法解析工作流文件:%s",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.label": "Git引用:",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.help": "留空将允许所有引用。关于模式匹配语法,参见%[2]s文档。例如:refs/heads/main、refs/pull/*/head。",
+ "settings.authorized_integration.forgejo_actions_local.git_ref.error": "无法解析git引用:%s",
+ "settings.authorized_integration.forgejo_actions_local.event.label": "事件:",
+ "settings.authorized_integration.forgejo_actions_local.event.help": "若没有选中任何事件,则将允许所有事件。"
}
diff --git a/options/locale_next/locale_zh-HK.json b/options/locale_next/locale_zh-HK.json
index 5f1dc8f7e1..4c0e4aaa79 100644
--- a/options/locale_next/locale_zh-HK.json
+++ b/options/locale_next/locale_zh-HK.json
@@ -1,4 +1,56 @@
{
+ "admin.config.db.path": "資料庫路徑",
+ "admin.config.db.name": "資料庫名稱",
+ "admin.config.db.host": "主機地址",
+ "admin.config.db.type": "資料庫類型",
+ "admin.config.db.header": "資料庫設定",
+ "admin.config.mailer.user": "發送者帳號",
+ "admin.config.mailer.smtp.port": "SMTP 主機端口",
+ "admin.config.mailer.name": "發送者名稱",
+ "admin.config.mailer.enabled": "啟用服務",
+ "admin.config.git.gc_timeout": "GC 操作超時",
+ "admin.config.git.pull_timeout": "操作超時",
+ "admin.config.git.clone_timeout": "複製操作超時",
+ "admin.config.git.mirror_timeout": "鏡像更新超時",
+ "admin.config.git.migrate_timeout": "移動超時",
+ "admin.config.git.gc_args": "GC 參數",
+ "admin.config.git.diff.max_files": "Max Diff 檔 (顯示)",
+ "admin.config.git.diff.max_line_characters": "最大比較的字元 (單行)",
+ "admin.config.git.diff.max_lines": "Max Diff 線 (對於單個檔)",
+ "admin.config.git.disable_diff_highlight": "禁用比較語法高亮",
+ "admin.config.git.version": "Git 版本",
+ "admin.config.git.header": "Git 設定",
+ "admin.config.ssh.minimum_key_sizes": "金鑰最小大小",
+ "admin.config.ssh.minimum_key_size_check": "金鑰最小大小檢查",
+ "admin.config.ssh.keygen_path": "金鑰產生 (' ssh-keygen ') 路徑",
+ "admin.config.ssh.key_test_path": "金鑰測試路徑",
+ "admin.config.ssh.root_path": "根路徑",
+ "admin.config.ssh.listen_port": "監聽埠",
+ "admin.config.ssh.port": "埠",
+ "admin.config.ssh.enabled": "已啟用",
+ "admin.config.ssh.header": "SSH 設定",
+ "admin.users.created": "建立時間",
+ "admin.users.repos": "儲存庫數",
+ "admin.users.admin": "管理員",
+ "admin.users.activated": "已啟用",
+ "admin.users.full_name": "組織全名",
+ "admin.packages.size": "大小",
+ "admin.packages.repository": "儲存庫",
+ "admin.packages.type": "認證類型",
+ "admin.packages.name": "組織名稱",
+ "admin.packages.owner": "管理員",
+ "admin.repos.size": "大小",
+ "admin.repos.issues": "問題數",
+ "admin.repos.name": "儲存庫名稱",
+ "admin.repos.owner": "所有者",
+ "admin.orgs.members": "成員數",
+ "admin.orgs.teams": "團隊數",
+ "admin.orgs.name": "組織名稱",
+ "admin.dashboard.sync_external_users": "同步外部使用者資料",
+ "admin.dashboard.reinit_missing_repos": "重新初始化所有遺失具已存在記錄的Git 儲存庫",
+ "admin.dashboard.operation_run": "執行",
+ "admin.dashboard.operation_switch": "開關",
+ "admin.dashboard.operation_name": "操作名稱",
"admin.monitor.queue.settings.submit": "更新設定",
"admin.monitor.queue.type": "認證類型",
"admin.monitor.queue.name": "組織名稱",
diff --git a/options/locale_next/locale_zh-TW.json b/options/locale_next/locale_zh-TW.json
index c2d5063457..a937e7ba46 100644
--- a/options/locale_next/locale_zh-TW.json
+++ b/options/locale_next/locale_zh-TW.json
@@ -1,4 +1,130 @@
{
+ "admin.config.db.path": "資料庫路徑",
+ "admin.config.db.ssl_mode": "SSL",
+ "admin.config.db.schema": "結構描述",
+ "admin.config.db.user": "使用者名稱",
+ "admin.config.db.name": "名稱",
+ "admin.config.db.host": "主機地址",
+ "admin.config.db.type": "資料庫類型",
+ "admin.config.db.header": "資料庫組態",
+ "admin.config.mailer.user": "發送者帳號",
+ "admin.config.mailer.smtp.port": "SMTP 連接埠",
+ "admin.config.mailer.smtp.addr": "SMTP 位址",
+ "admin.config.mailer.enable_helo": "啟用 HELO",
+ "admin.config.mailer.protocol": "協定",
+ "admin.config.mailer.use_dummy": "Dummy",
+ "admin.config.mailer.sendmail.timeout": "Sendmail 逾時",
+ "admin.config.mailer.sendmail.args": "Sendmail 參數",
+ "admin.config.mailer.sendmail.path": "Sendmail 路徑",
+ "admin.config.mailer.sendmail.use": "使用 Sendmail",
+ "admin.config.mailer.name": "發送者名稱",
+ "admin.config.mailer.enabled": "啟用服務",
+ "admin.config.mailer.header": "郵件程式設定",
+ "admin.config.git.gc_timeout": "GC 作業逾時",
+ "admin.config.git.pull_timeout": "Pull 作業逾時",
+ "admin.config.git.clone_timeout": "拓製逾時",
+ "admin.config.git.mirror_timeout": "鏡像更新逾時",
+ "admin.config.git.migrate_timeout": "遷移逾時",
+ "admin.config.git.gc_args": "GC 參數",
+ "admin.config.git.diff.max_files": "差異比較時顯示的最多檔案數",
+ "admin.config.git.diff.max_line_characters": "差異比較時顯示的最多字元數",
+ "admin.config.git.diff.max_lines": "差異比較時顯示的最多行數",
+ "admin.config.git.disable_diff_highlight": "停用比較語法高亮",
+ "admin.config.git.version": "Git 版本",
+ "admin.config.git.header": "Git 設定",
+ "admin.config.ssh.minimum_key_sizes": "金鑰最小大小",
+ "admin.config.ssh.minimum_key_size_check": "金鑰最小大小檢查",
+ "admin.config.ssh.keygen_path": "金鑰產生(ssh-keygen)路徑",
+ "admin.config.ssh.key_test_path": "金鑰測試路徑",
+ "admin.config.ssh.root_path": "根路徑",
+ "admin.config.ssh.listen_port": "監聽埠",
+ "admin.config.ssh.port": "連接埠",
+ "admin.config.ssh.domain": "SSH 伺服器域名",
+ "admin.config.ssh.use_builtin_server": "使用內建伺服器",
+ "admin.config.ssh.enabled": "已啟用",
+ "admin.config.ssh.header": "SSH 設定",
+ "admin.users.never_login": "從未登入",
+ "admin.users.last_login": "上次登入",
+ "admin.users.created": "建立時間",
+ "admin.users.repos": "儲存庫數",
+ "admin.users.2fa": "兩步驟驗證",
+ "admin.users.remote": "遠端",
+ "admin.users.bot": "機器人",
+ "admin.users.reserved": "已保留",
+ "admin.users.restricted": "受限",
+ "admin.users.admin": "管理員",
+ "admin.users.activated": "已啟用",
+ "admin.users.full_name": "全名",
+ "admin.users.name": "帳號",
+ "admin.packages.published": "已發布",
+ "admin.packages.size": "大小",
+ "admin.packages.repository": "儲存庫",
+ "admin.packages.type": "類型",
+ "admin.packages.version": "版本",
+ "admin.packages.name": "名稱",
+ "admin.packages.creator": "建立者",
+ "admin.packages.owner": "所有者",
+ "admin.packages.unreferenced_size": "未參考大小:%s",
+ "admin.packages.total_size": "總大小:%s",
+ "admin.repos.lfs_size": "LFS 大小",
+ "admin.repos.size": "大小",
+ "admin.repos.issues": "問題數",
+ "admin.repos.name": "名稱",
+ "admin.repos.owner": "所有者",
+ "admin.orgs.new_orga": "新增組織",
+ "admin.orgs.members": "成員數",
+ "admin.orgs.teams": "團隊數",
+ "admin.orgs.name": "名稱",
+ "admin.dashboard.rebuild_issue_indexer": "重建問題索引",
+ "admin.dashboard.start_schedule_tasks": "開始計劃 Actions 任務",
+ "admin.dashboard.cancel_abandoned_jobs": "取消已放棄的 Actions 作業",
+ "admin.dashboard.stop_endless_tasks": "停止永不停止的 Actions 任務",
+ "admin.dashboard.stop_zombie_tasks": "停止殭屍 Actions 任務",
+ "admin.dashboard.gc_lfs": "對 LFS meta objects 進行垃圾回收",
+ "admin.dashboard.delete_old_system_notices": "從資料庫刪除所有舊系統提示",
+ "admin.dashboard.update_checker": "更新檢查器",
+ "admin.dashboard.cleanup_actions": "清理過期的 Action 日誌和物件",
+ "admin.dashboard.cleanup_packages": "清理過期的軟體包",
+ "admin.dashboard.cleanup_hook_task_table": "清理 hook_task 資料表",
+ "admin.dashboard.sync_external_users": "同步外部使用者資料",
+ "admin.dashboard.reinit_missing_repos": "重新初始化所有記錄存在但遺失的 Git 儲存庫",
+ "admin.dashboard.resync_all_hooks": "重新同步所有儲存庫的 Git hooks(pre-receive、update、post-receive、proc-receive 等)",
+ "admin.dashboard.resync_all_sshprincipals": "使用 Forgejo 的 SSH 規則更新「.ssh/authorized_principals」檔案。",
+ "admin.dashboard.resync_all_sshkeys": "使用 Forgejo 的 SSH 金鑰更新「.ssh/authorized_keys」檔案。",
+ "admin.dashboard.git_gc_repos": "對所有儲存庫進行垃圾回收",
+ "admin.dashboard.update_migration_poster_id": "更新遷移發布者 ID",
+ "admin.dashboard.deleted_branches_cleanup": "清理已刪除的分支",
+ "admin.dashboard.archive_cleanup": "刪除舊的儲存庫存檔",
+ "admin.dashboard.check_repo_stats": "檢查所有儲存庫的統計資料",
+ "admin.dashboard.repo_health_check": "對所有儲存庫進行健康檢查",
+ "admin.dashboard.update_mirrors": "更新鏡像",
+ "admin.dashboard.sync_repo_tags": "將標籤從 Git 資料同步至資料庫",
+ "admin.dashboard.sync_repo_branches": "將缺少的分支從 Git 資料同步至資料庫",
+ "admin.dashboard.delete_generated_repository_avatars": "刪除自動產生的儲存庫大頭貼",
+ "admin.dashboard.sync_tag.started": "標籤同步已開始",
+ "admin.dashboard.sync_branch.started": "分支同步已開始",
+ "admin.dashboard.delete_old_actions.started": "從資料庫刪除所有舊操作紀錄的任務已啟動。",
+ "admin.dashboard.delete_missing_repos.started": "刪除所有遺失 Git 檔案的儲存庫的任務已啟動。",
+ "admin.dashboard.delete_repo_archives.started": "刪除所有儲存庫存檔的任務已啟動。",
+ "admin.dashboard.delete_inactive_accounts.started": "刪除所有未啟用帳號的任務已啟動。",
+ "admin.dashboard.cron.finished": "Cron: %[1]s 已完成",
+ "admin.dashboard.cron.error": "Cron 中的錯誤: %s: %[3]s",
+ "admin.dashboard.cron.cancelled": "定時作業:%[1]s 已被取消:%[3]s",
+ "admin.dashboard.cron.process": "Cron: %[1]s",
+ "admin.dashboard.cron.started": "已開始的 Cron: %[1]s",
+ "admin.dashboard.task.unknown": "未知的任務: %[1]s",
+ "admin.dashboard.task.finished": "任務: 已完成由 %[2]s 啟動的 %[1]s",
+ "admin.dashboard.task.error": "任務中的錯誤: %[1]s: %[3]s",
+ "admin.dashboard.task.cancelled": "作業:%[1]s 已被取消:%[3]s",
+ "admin.dashboard.task.process": "任務: %[1]s",
+ "admin.dashboard.task.started": "已開始的任務: %[1]s",
+ "admin.dashboard.operation_run": "執行",
+ "admin.dashboard.operation_switch": "開關",
+ "admin.dashboard.operation_name": "作業名稱",
+ "admin.dashboard.system_status": "系統狀態",
+ "admin.dashboard.operations": "維護作業",
+ "admin.dashboard.statistic": "摘要",
+ "admin.dashboard.new_version_hint": "現已推出 Forgejo %s,您正在執行 %s。詳情請參閱部落格的說明。",
"admin.monitor.queue.settings.remove_all_items.success": "已移除佇列中所有項目。",
"admin.monitor.queue.settings.remove_all_items": "全部移除",
"admin.monitor.queue.settings.changed": "已更新設定",
@@ -89,19 +215,15 @@
"webauthn.sign_in": "按下您安全金鑰上的按鈕。如果您的安全金鑰沒有按鈕,請重新插入。",
"webauthn.insert_key": "插入您的安全金鑰",
"counters.n_commits": {
- "one": "%s 個提交",
"other": "%s 個提交"
},
"counters.n_branches": {
- "one": "%s 條分支",
"other": "%s 條分支"
},
"counters.n_tags": {
- "one": "%s 個標籤",
"other": "%s 個標籤"
},
"counters.n_releases": {
- "one": "%s 發行",
"other": "%s 發行"
},
"actions.actions": "Actions",
@@ -141,8 +263,8 @@
"actions.runners.delete_runner.header": "確認刪除此 Runner",
"actions.runners.delete_runner.notice": "如果有任務正在此 Runner 上執行,它可能會被中止並標記為失敗,這可能會打斷建置工作流程。",
"actions.runners.none": "沒有可用的 Runner",
- "actions.runners.reset_registration_token.button": "重置註冊符記",
- "actions.runners.reset_registration_token.success": "成功重設了 Runner 註冊符記",
+ "actions.runners.reset_registration_token.button": "重置註冊權杖",
+ "actions.runners.reset_registration_token.success": "成功重設了 Runner 註冊權杖",
"actions.runs.all_workflows": "所有工作流程",
"actions.runs.workflow": "工作流程",
"actions.runs.invalid_workflow_helper": "工作流程設定檔無效。請檢查您的設定檔:%s",
@@ -245,7 +367,7 @@
"packages.composer.install": "執行下列命令以使用 Composer 安裝此軟體包:",
"packages.composer.dependencies.development": "開發相依性",
"packages.conan.install": "執行下列命令以使用 Conan 安裝此軟體包:",
- "packages.conda.registry": "在您的 .condarc 檔設定此註冊中心為 Conda 存儲庫:",
+ "packages.conda.registry": "在您的 .condarc 檔設定此註冊中心為 Conda 儲存庫:",
"packages.conda.install": "執行下列命令以使用 Conda 安裝此軟體包:",
"packages.container.images.title": "映像檔",
"packages.container.details.type": "映像檔類型",
@@ -413,13 +535,13 @@
"repo.diff.commit.previous-short": "上一個",
"migrate.github.description": "從 github.com 或 GitHub Enterprise 伺服器遷移資料。",
"migrate.git.description": "從任何 Git 服務遷移儲存庫。",
- "migrate.gitea.description": "從 gitea.com 或其他 Gitea 站點遷移資料。",
- "migrate.gitlab.description": "從 gitlab.com 或其他 GitLab 站點遷移資料。",
- "migrate.gogs.description": "從 notabug.org 或其他 Gogs 站點遷移資料。",
- "migrate.onedev.description": "從 code.onedev.io 或其他 OneDev 站點遷移資料。",
- "migrate.gitbucket.description": "從 GitBucket 站點遷移資料。",
+ "migrate.gitea.description": "從 gitea.com 或其他 Gitea 實例遷移資料。",
+ "migrate.gitlab.description": "從 gitlab.com 或其他 GitLab 實例遷移資料。",
+ "migrate.gogs.description": "從 notabug.org 或其他 Gogs 實例遷移資料。",
+ "migrate.onedev.description": "從 code.onedev.io 或其他 OneDev 實例遷移資料。",
+ "migrate.gitbucket.description": "從 GitBucket 實例遷移資料。",
"migrate.codebase.description": "從 codebasehq.com 遷移資料。",
- "migrate.forgejo.description": "從 codeberg.org 或其他 Forgejo 站點遷移資料。",
+ "migrate.forgejo.description": "從 codeberg.org 或其他 Forgejo 實例遷移資料。",
"migrate.items.label": "遷移項目",
"migrate.items.wiki": "Wiki",
"migrate.items.milestones": "里程碑",
@@ -503,7 +625,7 @@
"admin.auths.allow_username_change.description": "允許使用者在個人資料設定中變更其使用者名稱",
"admin.dashboard.remove_resolved_reports": "移除已解決的檢舉報告",
"admin.dashboard.actions_action_user": "撤銷不活躍使用者的 Forgejo Actions 信任",
- "admin.dashboard.transfer_lingering_logs": "將已完成 Actions 工作的日誌從資料庫轉移至儲存空間",
+ "admin.dashboard.transfer_lingering_logs": "將已完成 Actions 工作的紀錄從資料庫轉移至儲存空間",
"admin.config.security": "安全性設定",
"admin.config.global_2fa_requirement.title": "全域兩步驟驗證要求",
"admin.config.global_2fa_requirement.all": "所有使用者",
diff --git a/package-lock.json b/package-lock.json
index e5f6cf7274..75c94329d4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -43,7 +43,7 @@
"chart.js": "4.5.1",
"chartjs-adapter-dayjs-4": "1.0.4",
"chartjs-plugin-zoom": "2.2.0",
- "clippie": "4.1.15",
+ "clippie": "4.2.0",
"css-loader": "7.1.3",
"dayjs": "1.11.19",
"dropzone": "6.0.0-beta.2",
@@ -54,7 +54,7 @@
"htmx.org": "2.0.10",
"idiomorph": "0.3.0",
"jquery": "3.7.1",
- "katex": "0.16.47",
+ "katex": "0.17.0",
"mermaid": "11.15.0",
"mini-css-extract-plugin": "2.10.0",
"minimatch": "10.2.5",
@@ -77,7 +77,7 @@
"vue-chartjs": "5.3.3",
"vue-loader": "17.4.2",
"vue3-calendar-heatmap": "2.0.5",
- "webpack": "5.106.2",
+ "webpack": "5.107.1",
"webpack-cli": "7.0.2",
"wrap-ansi": "10.0.0"
},
@@ -2793,16 +2793,22 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "0.2.12",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
- "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
+ "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/core": "^1.4.3",
- "@emnapi/runtime": "^1.4.3",
- "@tybys/wasm-util": "^0.10.0"
+ "@tybys/wasm-util": "^0.10.1"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "peerDependencies": {
+ "@emnapi/core": "^1.7.1",
+ "@emnapi/runtime": "^1.7.1"
}
},
"node_modules/@nodelib/fs.scandir": {
@@ -2861,9 +2867,9 @@
"license": "MIT"
},
"node_modules/@oxc-project/types": {
- "version": "0.130.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.130.0.tgz",
- "integrity": "sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==",
+ "version": "0.132.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.132.0.tgz",
+ "integrity": "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -2924,9 +2930,9 @@
}
},
"node_modules/@rolldown/binding-android-arm64": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.1.tgz",
- "integrity": "sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.2.tgz",
+ "integrity": "sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==",
"cpu": [
"arm64"
],
@@ -2941,9 +2947,9 @@
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.1.tgz",
- "integrity": "sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.2.tgz",
+ "integrity": "sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==",
"cpu": [
"arm64"
],
@@ -2958,9 +2964,9 @@
}
},
"node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.1.tgz",
- "integrity": "sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.2.tgz",
+ "integrity": "sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==",
"cpu": [
"x64"
],
@@ -2975,9 +2981,9 @@
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.1.tgz",
- "integrity": "sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.2.tgz",
+ "integrity": "sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==",
"cpu": [
"x64"
],
@@ -2992,9 +2998,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.1.tgz",
- "integrity": "sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.2.tgz",
+ "integrity": "sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==",
"cpu": [
"arm"
],
@@ -3009,9 +3015,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.1.tgz",
- "integrity": "sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.2.tgz",
+ "integrity": "sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==",
"cpu": [
"arm64"
],
@@ -3029,9 +3035,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.1.tgz",
- "integrity": "sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.2.tgz",
+ "integrity": "sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==",
"cpu": [
"arm64"
],
@@ -3049,9 +3055,9 @@
}
},
"node_modules/@rolldown/binding-linux-ppc64-gnu": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.1.tgz",
- "integrity": "sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.2.tgz",
+ "integrity": "sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==",
"cpu": [
"ppc64"
],
@@ -3069,9 +3075,9 @@
}
},
"node_modules/@rolldown/binding-linux-s390x-gnu": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.1.tgz",
- "integrity": "sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.2.tgz",
+ "integrity": "sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==",
"cpu": [
"s390x"
],
@@ -3089,9 +3095,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.1.tgz",
- "integrity": "sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.2.tgz",
+ "integrity": "sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==",
"cpu": [
"x64"
],
@@ -3109,9 +3115,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.1.tgz",
- "integrity": "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.2.tgz",
+ "integrity": "sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==",
"cpu": [
"x64"
],
@@ -3129,9 +3135,9 @@
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.1.tgz",
- "integrity": "sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.2.tgz",
+ "integrity": "sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==",
"cpu": [
"arm64"
],
@@ -3146,9 +3152,9 @@
}
},
"node_modules/@rolldown/binding-wasm32-wasi": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.1.tgz",
- "integrity": "sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.2.tgz",
+ "integrity": "sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==",
"cpu": [
"wasm32"
],
@@ -3164,29 +3170,10 @@
"node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
- "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@tybys/wasm-util": "^0.10.1"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
- },
- "peerDependencies": {
- "@emnapi/core": "^1.7.1",
- "@emnapi/runtime": "^1.7.1"
- }
- },
"node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.1.tgz",
- "integrity": "sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.2.tgz",
+ "integrity": "sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==",
"cpu": [
"arm64"
],
@@ -3201,9 +3188,9 @@
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.1.tgz",
- "integrity": "sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.2.tgz",
+ "integrity": "sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==",
"cpu": [
"x64"
],
@@ -3695,9 +3682,9 @@
}
},
"node_modules/@stoplight/spectral-ruleset-migrator": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-migrator/-/spectral-ruleset-migrator-1.12.0.tgz",
- "integrity": "sha512-KINmItys8OhdmjudgcIu7siuxQ4hDdbMsTPW/UkXhoiEosiwok1xAyaYLBfckH9zH85TZBkDDbIbsiMoDCIxBw==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-ruleset-migrator/-/spectral-ruleset-migrator-1.12.1.tgz",
+ "integrity": "sha512-IUEbDmmTro0oF6VoAtrUySRV/b6bvYmV7wV6lB99f0Ym5lF9M2DXcgPLo7VMbKTPjCOQcaBzWRnIMXAyLjIRMA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -3744,9 +3731,9 @@
"license": "Apache-2.0"
},
"node_modules/@stoplight/spectral-rulesets": {
- "version": "1.22.2",
- "resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.22.2.tgz",
- "integrity": "sha512-JsaNqtxBRfjKTCgQJK+LoOyDhzm9Hhw9kV9U3NalsQMH5ERBJw6IVhYyCZtgHBc5FhjXao2iJnnDfGta07M4wQ==",
+ "version": "1.22.3",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.22.3.tgz",
+ "integrity": "sha512-CDkXEsrA1OOQPmF0VE92zira+eSI411s7hyIdfVeS/91BrNz3Y5HJgnwWFbh2abKVJ2rNciOzBPyGar+xfiFKA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -4213,26 +4200,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/eslint": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
- "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "license": "MIT",
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"node_modules/@types/estree": {
"version": "0.0.39",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
@@ -4285,9 +4252,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "25.8.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.8.0.tgz",
- "integrity": "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==",
+ "version": "25.9.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz",
+ "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==",
"license": "MIT",
"dependencies": {
"undici-types": ">=7.24.0 <7.24.7"
@@ -4580,9 +4547,9 @@
}
},
"node_modules/@unrs/resolver-binding-android-arm-eabi": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz",
- "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz",
+ "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==",
"cpu": [
"arm"
],
@@ -4594,9 +4561,9 @@
]
},
"node_modules/@unrs/resolver-binding-android-arm64": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz",
- "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz",
+ "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==",
"cpu": [
"arm64"
],
@@ -4608,9 +4575,9 @@
]
},
"node_modules/@unrs/resolver-binding-darwin-arm64": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz",
- "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz",
+ "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==",
"cpu": [
"arm64"
],
@@ -4622,9 +4589,9 @@
]
},
"node_modules/@unrs/resolver-binding-darwin-x64": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz",
- "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz",
+ "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==",
"cpu": [
"x64"
],
@@ -4636,9 +4603,9 @@
]
},
"node_modules/@unrs/resolver-binding-freebsd-x64": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz",
- "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz",
+ "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==",
"cpu": [
"x64"
],
@@ -4650,9 +4617,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz",
- "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz",
+ "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==",
"cpu": [
"arm"
],
@@ -4664,9 +4631,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm-musleabihf": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz",
- "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz",
+ "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==",
"cpu": [
"arm"
],
@@ -4678,9 +4645,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm64-gnu": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz",
- "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz",
+ "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==",
"cpu": [
"arm64"
],
@@ -4695,9 +4662,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm64-musl": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz",
- "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz",
+ "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==",
"cpu": [
"arm64"
],
@@ -4711,10 +4678,44 @@
"linux"
]
},
+ "node_modules/@unrs/resolver-binding-linux-loong64-gnu": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz",
+ "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-loong64-musl": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz",
+ "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@unrs/resolver-binding-linux-ppc64-gnu": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz",
- "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz",
+ "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==",
"cpu": [
"ppc64"
],
@@ -4729,9 +4730,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-riscv64-gnu": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz",
- "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz",
+ "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==",
"cpu": [
"riscv64"
],
@@ -4746,9 +4747,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-riscv64-musl": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz",
- "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz",
+ "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==",
"cpu": [
"riscv64"
],
@@ -4763,9 +4764,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-s390x-gnu": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz",
- "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz",
+ "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==",
"cpu": [
"s390x"
],
@@ -4780,9 +4781,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-x64-gnu": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz",
- "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz",
+ "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==",
"cpu": [
"x64"
],
@@ -4797,9 +4798,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-x64-musl": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz",
- "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz",
+ "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==",
"cpu": [
"x64"
],
@@ -4813,10 +4814,24 @@
"linux"
]
},
+ "node_modules/@unrs/resolver-binding-openharmony-arm64": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz",
+ "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
"node_modules/@unrs/resolver-binding-wasm32-wasi": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz",
- "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz",
+ "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==",
"cpu": [
"wasm32"
],
@@ -4824,16 +4839,18 @@
"license": "MIT",
"optional": true,
"dependencies": {
- "@napi-rs/wasm-runtime": "^0.2.11"
+ "@emnapi/core": "1.10.0",
+ "@emnapi/runtime": "1.10.0",
+ "@napi-rs/wasm-runtime": "^1.1.4"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@unrs/resolver-binding-win32-arm64-msvc": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz",
- "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz",
+ "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==",
"cpu": [
"arm64"
],
@@ -4845,9 +4862,9 @@
]
},
"node_modules/@unrs/resolver-binding-win32-ia32-msvc": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz",
- "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz",
+ "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==",
"cpu": [
"ia32"
],
@@ -4859,9 +4876,9 @@
]
},
"node_modules/@unrs/resolver-binding-win32-x64-msvc": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz",
- "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz",
+ "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==",
"cpu": [
"x64"
],
@@ -5822,9 +5839,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.10.30",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.30.tgz",
- "integrity": "sha512-xjOFN16Ha1+Rz4nFYKqHU/LSB+gx/Vi3yQLX7r7sAW+Wa+8hhF2h4pvqTrTMc8+WcDBEunnUurr46Jvv0jk3Vg==",
+ "version": "2.10.32",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz",
+ "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==",
"license": "Apache-2.0",
"bin": {
"baseline-browser-mapping": "dist/cli.cjs"
@@ -6279,9 +6296,9 @@
}
},
"node_modules/clippie": {
- "version": "4.1.15",
- "resolved": "https://registry.npmjs.org/clippie/-/clippie-4.1.15.tgz",
- "integrity": "sha512-K4z5MF32z7Gr1fUcfuUZvmrzpdNs5q8zAm2yqsWhA8mZ9Q6GL4HNdR2k3h3ubEEEGoyb8fvMA48LDr2MKYDASA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/clippie/-/clippie-4.2.0.tgz",
+ "integrity": "sha512-NcWaVzqChJ69+foFhwJXta3KXWNDJlpicxcfZG5udobyszOSBDhmFubKv1b/1nIZiVAsPoKqME2iV1SITZqFoQ==",
"license": "BSD-2-Clause"
},
"node_modules/cliui": {
@@ -6391,9 +6408,9 @@
}
},
"node_modules/comment-parser": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz",
- "integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==",
+ "version": "1.4.7",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.7.tgz",
+ "integrity": "sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6657,9 +6674,9 @@
"license": "MIT"
},
"node_modules/cytoscape": {
- "version": "3.33.3",
- "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.3.tgz",
- "integrity": "sha512-Gej7U+OKR+LZ8kvX7rb2HhCYJ0IhvEFsnkud4SB1PR+BUY/TsSO0dmOW59WEVLu51b1Rm+gQRKoz4bLYxGSZ2g==",
+ "version": "3.33.4",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.4.tgz",
+ "integrity": "sha512-HIN5Pmd9MrX9BkV7tDwnOcEJCSFvCpc8X97h3f508J6I5FsqAY65wKOCvgH2CuP42CaahWaz4tuh32SOOIH7ww==",
"license": "MIT",
"engines": {
"node": ">=0.10"
@@ -7465,9 +7482,9 @@
}
},
"node_modules/dompurify": {
- "version": "3.4.4",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.4.tgz",
- "integrity": "sha512-r8K7KGKEcztXfA/nfabSYB2hg9tDphORJTdf8xprN/luSLGmNhOBN8dm1/SYjqLLet6YUFEXOcrdTuwryp/Bew==",
+ "version": "3.4.5",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.5.tgz",
+ "integrity": "sha512-OrwIBKsdNSVEeubdJ1HBv/wNENRM9ytAVCv7YXt//A3vPdVMNuACRqK9mXCGCBW2ln7BT/A4X0jXHo2Gu89miA==",
"license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
@@ -7586,9 +7603,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.357",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.357.tgz",
- "integrity": "sha512-NHlTIQDK8fmVwHwuIzmXYEJ1Ewq3D9wDNc0cWXxDGysP6Pb21giwGNkxiTifyKy/4SoPuN5l6GLP1W9Sv7zB2g==",
+ "version": "1.5.361",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz",
+ "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==",
"license": "ISC"
},
"node_modules/emoji-regex": {
@@ -7608,9 +7625,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.21.3",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz",
- "integrity": "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==",
+ "version": "5.22.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz",
+ "integrity": "sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -7780,9 +7797,9 @@
"license": "MIT"
},
"node_modules/es-object-atoms": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10651,9 +10668,9 @@
"license": "MIT"
},
"node_modules/katex": {
- "version": "0.16.47",
- "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz",
- "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==",
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.17.0.tgz",
+ "integrity": "sha512-Vdw0ATsQ9V+LuegM/BTwQqV/6cTl5lbGcIrU+BCgLxyf6bo38ybOr372tuSIxir3CN720flu1meYR6XzNMwQnw==",
"funding": [
"https://opencollective.com/katex",
"https://github.com/sponsors/katex"
@@ -11064,10 +11081,20 @@
"license": "MIT"
},
"node_modules/linkify-it": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
- "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz",
+ "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
"license": "MIT",
"dependencies": {
"uc.micro": "^2.0.0"
@@ -11512,6 +11539,31 @@
"uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0"
}
},
+ "node_modules/mermaid/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/mermaid/node_modules/katex": {
+ "version": "0.16.47",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz",
+ "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==",
+ "funding": [
+ "https://opencollective.com/katex",
+ "https://github.com/sponsors/katex"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^8.3.0"
+ },
+ "bin": {
+ "katex": "cli.js"
+ }
+ },
"node_modules/mermaid/node_modules/marked": {
"version": "16.4.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz",
@@ -11691,6 +11743,33 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/micromark-extension-math/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/micromark-extension-math/node_modules/katex": {
+ "version": "0.16.47",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz",
+ "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==",
+ "dev": true,
+ "funding": [
+ "https://opencollective.com/katex",
+ "https://github.com/sponsors/katex"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^8.3.0"
+ },
+ "bin": {
+ "katex": "cli.js"
+ }
+ },
"node_modules/micromark-factory-destination": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
@@ -12262,10 +12341,13 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.44",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz",
- "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==",
- "license": "MIT"
+ "version": "2.0.46",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz",
+ "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/node-sarif-builder": {
"version": "2.0.3",
@@ -13691,13 +13773,13 @@
"license": "Unlicense"
},
"node_modules/rolldown": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.1.tgz",
- "integrity": "sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.2.tgz",
+ "integrity": "sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@oxc-project/types": "=0.130.0",
+ "@oxc-project/types": "=0.132.0",
"@rolldown/pluginutils": "^1.0.0"
},
"bin": {
@@ -13707,21 +13789,21 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rolldown/binding-android-arm64": "1.0.1",
- "@rolldown/binding-darwin-arm64": "1.0.1",
- "@rolldown/binding-darwin-x64": "1.0.1",
- "@rolldown/binding-freebsd-x64": "1.0.1",
- "@rolldown/binding-linux-arm-gnueabihf": "1.0.1",
- "@rolldown/binding-linux-arm64-gnu": "1.0.1",
- "@rolldown/binding-linux-arm64-musl": "1.0.1",
- "@rolldown/binding-linux-ppc64-gnu": "1.0.1",
- "@rolldown/binding-linux-s390x-gnu": "1.0.1",
- "@rolldown/binding-linux-x64-gnu": "1.0.1",
- "@rolldown/binding-linux-x64-musl": "1.0.1",
- "@rolldown/binding-openharmony-arm64": "1.0.1",
- "@rolldown/binding-wasm32-wasi": "1.0.1",
- "@rolldown/binding-win32-arm64-msvc": "1.0.1",
- "@rolldown/binding-win32-x64-msvc": "1.0.1"
+ "@rolldown/binding-android-arm64": "1.0.2",
+ "@rolldown/binding-darwin-arm64": "1.0.2",
+ "@rolldown/binding-darwin-x64": "1.0.2",
+ "@rolldown/binding-freebsd-x64": "1.0.2",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.2",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.2",
+ "@rolldown/binding-linux-arm64-musl": "1.0.2",
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.2",
+ "@rolldown/binding-linux-s390x-gnu": "1.0.2",
+ "@rolldown/binding-linux-x64-gnu": "1.0.2",
+ "@rolldown/binding-linux-x64-musl": "1.0.2",
+ "@rolldown/binding-openharmony-arm64": "1.0.2",
+ "@rolldown/binding-wasm32-wasi": "1.0.2",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.2",
+ "@rolldown/binding-win32-x64-msvc": "1.0.2"
}
},
"node_modules/rolldown/node_modules/@rolldown/pluginutils": {
@@ -15063,9 +15145,9 @@
}
},
"node_modules/terser": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz",
- "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==",
+ "version": "5.48.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz",
+ "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==",
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -15204,9 +15286,9 @@
"license": "MIT"
},
"node_modules/tinyexec": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz",
- "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.2.tgz",
+ "integrity": "sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -15564,38 +15646,41 @@
}
},
"node_modules/unrs-resolver": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz",
- "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz",
+ "integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "napi-postinstall": "^0.3.0"
+ "napi-postinstall": "^0.3.4"
},
"funding": {
"url": "https://opencollective.com/unrs-resolver"
},
"optionalDependencies": {
- "@unrs/resolver-binding-android-arm-eabi": "1.11.1",
- "@unrs/resolver-binding-android-arm64": "1.11.1",
- "@unrs/resolver-binding-darwin-arm64": "1.11.1",
- "@unrs/resolver-binding-darwin-x64": "1.11.1",
- "@unrs/resolver-binding-freebsd-x64": "1.11.1",
- "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1",
- "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1",
- "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1",
- "@unrs/resolver-binding-linux-arm64-musl": "1.11.1",
- "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1",
- "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1",
- "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1",
- "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1",
- "@unrs/resolver-binding-linux-x64-gnu": "1.11.1",
- "@unrs/resolver-binding-linux-x64-musl": "1.11.1",
- "@unrs/resolver-binding-wasm32-wasi": "1.11.1",
- "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1",
- "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1",
- "@unrs/resolver-binding-win32-x64-msvc": "1.11.1"
+ "@unrs/resolver-binding-android-arm-eabi": "1.12.2",
+ "@unrs/resolver-binding-android-arm64": "1.12.2",
+ "@unrs/resolver-binding-darwin-arm64": "1.12.2",
+ "@unrs/resolver-binding-darwin-x64": "1.12.2",
+ "@unrs/resolver-binding-freebsd-x64": "1.12.2",
+ "@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2",
+ "@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2",
+ "@unrs/resolver-binding-linux-arm64-gnu": "1.12.2",
+ "@unrs/resolver-binding-linux-arm64-musl": "1.12.2",
+ "@unrs/resolver-binding-linux-loong64-gnu": "1.12.2",
+ "@unrs/resolver-binding-linux-loong64-musl": "1.12.2",
+ "@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2",
+ "@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2",
+ "@unrs/resolver-binding-linux-riscv64-musl": "1.12.2",
+ "@unrs/resolver-binding-linux-s390x-gnu": "1.12.2",
+ "@unrs/resolver-binding-linux-x64-gnu": "1.12.2",
+ "@unrs/resolver-binding-linux-x64-musl": "1.12.2",
+ "@unrs/resolver-binding-openharmony-arm64": "1.12.2",
+ "@unrs/resolver-binding-wasm32-wasi": "1.12.2",
+ "@unrs/resolver-binding-win32-arm64-msvc": "1.12.2",
+ "@unrs/resolver-binding-win32-ia32-msvc": "1.12.2",
+ "@unrs/resolver-binding-win32-x64-msvc": "1.12.2"
}
},
"node_modules/update-browserslist-db": {
@@ -15702,16 +15787,16 @@
"license": "MIT"
},
"node_modules/vite": {
- "version": "8.0.13",
- "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.13.tgz",
- "integrity": "sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==",
+ "version": "8.0.14",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.14.tgz",
+ "integrity": "sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==",
"dev": true,
"license": "MIT",
"dependencies": {
"lightningcss": "^1.32.0",
"picomatch": "^4.0.4",
- "postcss": "^8.5.14",
- "rolldown": "1.0.1",
+ "postcss": "^8.5.15",
+ "rolldown": "1.0.2",
"tinyglobby": "^0.2.16"
},
"bin": {
@@ -15954,9 +16039,9 @@
}
},
"node_modules/vue-component-type-helpers": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.2.9.tgz",
- "integrity": "sha512-S3BiWYaLSzHxTpln665ELSrMR9UYmrIDUmhik7nVZxmJjTKL2/a+ew1hvGxksKelivm0ujjWfG1fYOiU/2e8rA==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.3.1.tgz",
+ "integrity": "sha512-pu58kqxmVyEH6VfNYW1UyEfR3XAnJ27ZXT3yzXxxpjLxVzAbyC35Zk/nm/RMs7ijWnJNSd9fWkeex2OhUsx3MA==",
"dev": true,
"license": "MIT"
},
@@ -16046,12 +16131,11 @@
"license": "BSD-2-Clause"
},
"node_modules/webpack": {
- "version": "5.106.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz",
- "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==",
+ "version": "5.107.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.1.tgz",
+ "integrity": "sha512-mvdIWxj/H6QsfgDdH9djne3a5dYcmEmtsXGESkypaGN5jXjF/b+9KDlmTDQ2TKlFUeA2fI9Y65kihD30JOdB+Q==",
"license": "MIT",
"dependencies": {
- "@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
"@types/json-schema": "^7.0.15",
"@webassemblyjs/ast": "^1.14.1",
@@ -16061,20 +16145,20 @@
"acorn-import-phases": "^1.0.3",
"browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.20.0",
- "es-module-lexer": "^2.0.0",
+ "enhanced-resolve": "^5.21.4",
+ "es-module-lexer": "^2.1.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
- "loader-runner": "^4.3.1",
+ "loader-runner": "^4.3.2",
"mime-db": "^1.54.0",
"neo-async": "^2.6.2",
"schema-utils": "^4.3.3",
"tapable": "^2.3.0",
- "terser-webpack-plugin": "^5.3.17",
+ "terser-webpack-plugin": "^5.5.0",
"watchpack": "^2.5.1",
- "webpack-sources": "^3.3.4"
+ "webpack-sources": "^3.4.1"
},
"bin": {
"webpack": "bin/webpack.js"
@@ -16156,9 +16240,9 @@
}
},
"node_modules/webpack-sources": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz",
- "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.0.tgz",
+ "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==",
"license": "MIT",
"engines": {
"node": ">=10.13.0"
@@ -16462,9 +16546,9 @@
}
},
"node_modules/ws": {
- "version": "8.20.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz",
- "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==",
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz",
+ "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==",
"dev": true,
"license": "MIT",
"engines": {
diff --git a/package.json b/package.json
index edcd831f19..40582adfac 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,7 @@
"chart.js": "4.5.1",
"chartjs-adapter-dayjs-4": "1.0.4",
"chartjs-plugin-zoom": "2.2.0",
- "clippie": "4.1.15",
+ "clippie": "4.2.0",
"css-loader": "7.1.3",
"dayjs": "1.11.19",
"dropzone": "6.0.0-beta.2",
@@ -53,7 +53,7 @@
"htmx.org": "2.0.10",
"idiomorph": "0.3.0",
"jquery": "3.7.1",
- "katex": "0.16.47",
+ "katex": "0.17.0",
"mermaid": "11.15.0",
"mini-css-extract-plugin": "2.10.0",
"minimatch": "10.2.5",
@@ -76,7 +76,7 @@
"vue-chartjs": "5.3.3",
"vue-loader": "17.4.2",
"vue3-calendar-heatmap": "2.0.5",
- "webpack": "5.106.2",
+ "webpack": "5.107.1",
"webpack-cli": "7.0.2",
"wrap-ansi": "10.0.0"
},
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index 2ec7617215..f1cea141cc 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -926,6 +926,8 @@ func Routes() *web.Route {
m.Get("/attachment", settings.GetGeneralAttachmentSettings)
m.Get("/repository", settings.GetGeneralRepoSettings)
})
+
+ m.Get("/actions/run", misc.GetActionsRun)
})
// Notifications (requires 'notifications' scope)
diff --git a/routers/api/v1/misc/actions.go b/routers/api/v1/misc/actions.go
new file mode 100644
index 0000000000..dd63c1631d
--- /dev/null
+++ b/routers/api/v1/misc/actions.go
@@ -0,0 +1,52 @@
+// Copyright 2026 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package misc
+
+import (
+ "net/http"
+
+ "forgejo.org/models/actions"
+ "forgejo.org/services/context"
+ "forgejo.org/services/convert"
+)
+
+// Retrieves a workflow run associated with a token
+func GetActionsRun(ctx *context.APIContext) {
+ // swagger:operation GET /actions/run miscellaneous getActionsRun
+ // ---
+ // summary: Get a workflow run associated with a token
+ // description: >
+ // The automatic actions token must be used as the authentication mechanism
+ // (Authorization: Bearer ${{ forgejo.token }}); other
+ // types of tokens cannot be used. The token is associated with the job, which must be still
+ // running for the request to this endpoint to succeed.
+ // produces:
+ // - application/json
+ // responses:
+ // "200":
+ // "$ref": "#/responses/ActionRun"
+ hasTaskID, taskID := ctx.Authentication.ActionsTaskID().Get()
+ if !hasTaskID {
+ ctx.Error(http.StatusForbidden, "", "must use an automatic actions token")
+ return
+ }
+ task, err := actions.GetTaskByID(ctx, taskID)
+ if err != nil {
+ ctx.ServerError("GetTaskByID", err)
+ return
+ }
+ if err := task.LoadJob(ctx); err != nil {
+ ctx.ServerError("LoadJob", err)
+ return
+ }
+ if err := task.Job.LoadRun(ctx); err != nil {
+ ctx.ServerError("LoadRun", err)
+ return
+ }
+ if err := task.Job.Run.LoadAttributes(ctx); err != nil {
+ ctx.ServerError("LoadAttributes", err)
+ return
+ }
+ ctx.JSON(http.StatusOK, convert.ToActionRun(ctx, task.Job.Run, ctx.Doer))
+}
diff --git a/routers/web/repo/actions/view.go b/routers/web/repo/actions/view.go
index 4bd7f12637..e953947c35 100644
--- a/routers/web/repo/actions/view.go
+++ b/routers/web/repo/actions/view.go
@@ -739,12 +739,13 @@ func getRunByID(ctx *app_context.Context, runID int64) *actions_model.ActionRun
return nil
}
- run, has, err := actions_model.GetRunByIDWithHas(ctx, runID)
- if err != nil {
+ run, err := actions_model.GetRunByID(ctx, runID)
+ if err != nil && !errors.Is(err, util.ErrNotExist) {
ctx.Error(http.StatusInternalServerError, err.Error())
return nil
}
- if !has {
+
+ if errors.Is(err, util.ErrNotExist) {
log.Debug("Requested runID[%d] not found.", runID)
ctx.Error(http.StatusNotFound, fmt.Sprintf("no such run %d", runID))
return nil
diff --git a/routers/web/repo/wiki_test.go b/routers/web/repo/wiki_test.go
index 5709b32257..4a8195e04e 100644
--- a/routers/web/repo/wiki_test.go
+++ b/routers/web/repo/wiki_test.go
@@ -86,7 +86,7 @@ func TestWiki(t *testing.T) {
Wiki(ctx)
assert.Equal(t, http.StatusOK, ctx.Resp.Status())
assert.EqualValues(t, "Home", ctx.Data["Title"])
- assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File", "XSS"}, ctx.Data["Pages"])
+ assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
}
func TestWikiPages(t *testing.T) {
@@ -96,7 +96,7 @@ func TestWikiPages(t *testing.T) {
contexttest.LoadRepo(t, ctx, 1)
WikiPages(ctx)
assert.Equal(t, http.StatusOK, ctx.Resp.Status())
- assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File", "XSS"}, ctx.Data["Pages"])
+ assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
}
func TestNewWiki(t *testing.T) {
diff --git a/routers/web/user/task.go b/routers/web/user/task.go
index 4059139552..3ff5bb4993 100644
--- a/routers/web/user/task.go
+++ b/routers/web/user/task.go
@@ -39,6 +39,14 @@ func TaskStatus(ctx *context.Context) {
Args: []any{task.Message},
}
}
+
+ // Convert float64 to integers. Currently no usage of floats.
+ for i := range translatableMessage.Args {
+ if arg, ok := translatableMessage.Args[i].(float64); ok {
+ translatableMessage.Args[i] = int64(arg)
+ }
+ }
+
message = ctx.Locale.TrString(translatableMessage.Format, translatableMessage.Args...)
}
diff --git a/routers/web/web.go b/routers/web/web.go
index eabc4d0a04..196d829d99 100644
--- a/routers/web/web.go
+++ b/routers/web/web.go
@@ -101,12 +101,8 @@ func optionsCorsHandler() func(next http.Handler) http.Handler {
}
}
-// The OAuth2 plugin is expected to be executed first, as it must ignore the user id stored
-// in the session (if there is a user id stored in session other plugins might return the user
-// object for that id).
-//
-// The Session plugin is expected to be executed second, in order to skip authentication
-// for users that have already signed in.
+// Authentication methods that are applied to all the web URL routes. They are processed in the order defined; an
+// earlier authentication success would prevent later authentication methods from being attempted.
func buildAuthGroup() *auth_method.Group {
group := auth_method.NewGroup()
group.Add(&auth_method.OAuth2{}) // FIXME: this should be removed and only applied in download and oauth related routers
@@ -126,6 +122,23 @@ func buildAuthGroup() *auth_method.Group {
return group
}
+// Authentication methods that are applied to Git HTTP & Git LFS HTTP routes. They are processed in the order defined;
+// an earlier authentication success would prevent later authentication methods from being attempted.
+func buildGitAuthGroup() *auth_method.Group {
+ group := auth_method.NewGroup()
+ group.Add(&auth_method.OAuth2{})
+ group.Add(&auth_method.Basic{})
+ group.Add(&auth_method.AccessToken{})
+ group.Add(&auth_method.ActionRuntimeToken{})
+ group.Add(&auth_method.ActionTaskToken{})
+ group.Add(&auth_method.AuthorizedIntegration{
+ // "Authorization: Basic ..." is easier to use for git operations, and already supported for other tokens, so it
+ // is enabled for Authorized Integrations as well:
+ PermitBasic: true,
+ })
+ return group
+}
+
func webAuth(authMethod auth_service.Method) func(*context.Context) {
return func(ctx *context.Context) {
output := common.AuthShared(ctx.Base, ctx.Session, authMethod)
@@ -275,6 +288,8 @@ func ctxDataSet(args ...any) func(ctx *context.Context) {
func Routes() *web.Route {
routes := web.NewRoute()
+ routes.Use(chi_middleware.GetHead)
+
routes.Head("/", misc.DummyOK) // for health check - doesn't need to be passed through gzip handler
routes.Methods("GET, HEAD, OPTIONS", "/assets/*", optionsCorsHandler(), public.FileHandlerFunc())
routes.Methods("GET, HEAD", "/avatars/*", resizingHandler("avatars", storage.Avatars, avatar.AllowedResizedAvatarSizes))
@@ -285,54 +300,82 @@ func Routes() *web.Route {
_ = templates.HTMLRenderer()
- var mid []any
-
+ var gzipMid any
if setting.EnableGzip {
wrapper, err := gzhttp.NewWrapper(gzhttp.RandomJitter(32, 0, false), gzhttp.MinSize(GzipMinSize))
if err != nil {
log.Fatal("gzhttp.NewWrapper failed: %v", err)
}
- mid = append(mid, wrapper)
+ gzipMid = wrapper
}
if setting.Service.EnableCaptcha {
// The captcha http.Handler should only fire on /captcha/* so we can just mount this on that url
- routes.Methods("GET,HEAD", "/captcha/*", append(mid, captcha.Server(captcha.StdWidth, captcha.StdHeight).ServeHTTP)...)
+ routes.Methods("GET,HEAD", "/captcha/*", gzipMid, captcha.Server(captcha.StdWidth, captcha.StdHeight).ServeHTTP)
}
if setting.Metrics.Enabled {
prometheus.MustRegister(metrics.NewCollector())
- routes.Get("/metrics", append(mid, Metrics)...)
+ routes.Get("/metrics", gzipMid, Metrics)
}
- routes.Methods("GET,HEAD", "/robots.txt", append(mid, misc.RobotsTxt)...)
- routes.Methods("GET,HEAD", "/manifest.json", append(mid, misc.ManifestJSON)...)
+ routes.Methods("GET,HEAD", "/robots.txt", gzipMid, misc.RobotsTxt)
+ routes.Methods("GET,HEAD", "/manifest.json", gzipMid, misc.ManifestJSON)
routes.Get("/ssh_info", misc.SSHInfo)
routes.Get("/api/healthz", healthcheck.Check)
- mid = append(mid, common.Sessioner(), context.Contexter())
-
- // Get user from session if logged in.
- mid = append(mid, webAuth(buildAuthGroup()))
-
- // GetHead allows a HEAD request redirect to GET if HEAD method is not defined for that route
- mid = append(mid, chi_middleware.GetHead)
-
if setting.API.EnableSwagger {
- // Note: The route is here but no in API routes because it renders a web page
- routes.Get("/api/swagger", append(mid, misc.Swagger)...) // Render V1 by default
- routes.Get("/api/forgejo/swagger", append(mid, misc.SwaggerForgejo)...)
+ routes.Group("", func() {
+ // Note: The route is here but no in API routes because it renders a web page
+ routes.Get("/api/swagger", misc.Swagger) // Render V1 by default
+ routes.Get("/api/forgejo/swagger", misc.SwaggerForgejo)
+ }, gzipMid, context.Contexter())
}
- // TODO: These really seem like things that could be folded into Contexter or as helper functions
- mid = append(mid, user.GetNotificationCount)
- mid = append(mid, repo.GetActiveStopwatch)
- mid = append(mid, goGet)
+ routes.Group("",
+ func() {
+ registerRoutes(routes)
+ },
+ gzipMid, common.Sessioner(), context.Contexter(), webAuth(buildAuthGroup()),
+ // TODO: GetNotificationCount & GetActiveStopwatch really seem like things that could be folded into Contexter or as helper functions
+ user.GetNotificationCount, repo.GetActiveStopwatch,
+ goGet)
+
+ // /{username}/{repo}/info/lfs routes currently need to use buildAuthGroup(), not buildGitAuthGroup(), because:
+ //
+ // a) there are tests that use session auth to access the LFS endpoints (TestAPILFSLocksLogged), which may be a test
+ // error, and
+ //
+ // b) if AuthorizedIntegration is included then JWTs generated by the LFS system with `setting.LFS.SigningKey` will
+ // return AuthenticationAttemptedIncorrectCredential from AuthorizedIntegration, and cause the requests to 401
+ // before reaching the LFS handlers.
+ //
+ // (a) is probably an error that can be fixed, and (b) should be fixed by changing LFS's JWT handling to be an
+ // `auth_service.Method` implementation which would be incorporated into the auth group, so that LFS isn't doing
+ // it's own "after the authentication" authentication. In the interm, it's split out from the `registerRoutes` call
+ // above because at least fewer middlewares can be safely applied.
+ routes.Group("",
+ func() {
+ registerGitLFSRoutes(routes)
+ }, gzipMid, common.Sessioner(), context.Contexter(), webAuth(buildAuthGroup()), goGet)
+ routes.Group("",
+ func() {
+ registerGitRoutes(routes)
+ }, gzipMid, common.Sessioner(), context.Contexter(), webAuth(buildGitAuthGroup()), goGet)
+
+ routes.NotFound(
+ gzipMid, common.Sessioner(), context.Contexter(), webAuth(buildAuthGroup()),
+ // TODO: GetNotificationCount & GetActiveStopwatch really seem like things that could be folded into Contexter or as helper functions
+ user.GetNotificationCount, repo.GetActiveStopwatch,
+ goGet,
+ func(w http.ResponseWriter, req *http.Request) {
+ ctx := context.GetWebContext(req)
+ if ctx == nil {
+ panic("missing middleware context.Contexter()")
+ }
+ ctx.NotFound("", nil)
+ })
- others := web.NewRoute()
- others.Use(mid...)
- registerRoutes(others)
- routes.Mount("", others)
return routes
}
@@ -405,13 +448,6 @@ func registerRoutes(m *web.Route) {
}
}
- lfsServerEnabled := func(ctx *context.Context) {
- if !setting.LFS.StartServer {
- ctx.Error(http.StatusNotFound)
- return
- }
- }
-
federationEnabled := func(ctx *context.Context) {
if !setting.Federation.Enabled {
ctx.Error(http.StatusNotFound)
@@ -1763,27 +1799,6 @@ func registerRoutes(m *web.Route) {
m.Group("/{reponame}", func() {
m.Get("", repo.SetEditorconfigIfExists, repo.Home)
}, ignSignIn, context.RepoAssignment, context.RepoRef(), context.UnitTypes())
-
- m.Group("/{reponame}", func() {
- m.Group("/info/lfs", func() {
- m.Post("/objects/batch", lfs.CheckAcceptMediaType, lfs.BatchHandler)
- m.Put("/objects/{oid}/{size}", lfs.UploadHandler)
- m.Get("/objects/{oid}/{filename}", lfs.DownloadHandler)
- m.Get("/objects/{oid}", lfs.DownloadHandler)
- m.Post("/verify", lfs.CheckAcceptMediaType, lfs.VerifyHandler)
- m.Group("/locks", func() {
- m.Get("/", lfs.GetListLockHandler)
- m.Post("/", lfs.PostLockHandler)
- m.Post("/verify", lfs.VerifyLockHandler)
- m.Post("/{lid}/unlock", lfs.UnLockHandler)
- }, lfs.CheckAcceptMediaType)
- m.Any("/*", func(ctx *context.Context) {
- ctx.NotFound("", nil)
- })
- }, ignoreCSRF, lfsServerEnabled)
-
- gitHTTPRouters(m)
- })
})
if setting.Repository.EnableFlags {
@@ -1815,10 +1830,37 @@ func registerRoutes(m *web.Route) {
m.Get("/demo/error/{errcode}", demo.ErrorPage)
}, ignSignIn)
}
+}
- m.NotFound(func(w http.ResponseWriter, req *http.Request) {
- ctx := context.GetWebContext(req)
- ctx.NotFound("", nil)
+// Registers HTTP Git related routes, which have different top-level middleware than [registerRoutes].
+func registerGitLFSRoutes(m *web.Route) {
+ lfsServerEnabled := func(ctx *context.Context) {
+ if !setting.LFS.StartServer {
+ ctx.Error(http.StatusNotFound)
+ return
+ }
+ }
+ m.Group("/{username}/{reponame}/info/lfs", func() {
+ m.Post("/objects/batch", lfs.CheckAcceptMediaType, lfs.BatchHandler)
+ m.Put("/objects/{oid}/{size}", lfs.UploadHandler)
+ m.Get("/objects/{oid}/{filename}", lfs.DownloadHandler)
+ m.Get("/objects/{oid}", lfs.DownloadHandler)
+ m.Post("/verify", lfs.CheckAcceptMediaType, lfs.VerifyHandler)
+ m.Group("/locks", func() {
+ m.Get("/", lfs.GetListLockHandler)
+ m.Post("/", lfs.PostLockHandler)
+ m.Post("/verify", lfs.VerifyLockHandler)
+ m.Post("/{lid}/unlock", lfs.UnLockHandler)
+ }, lfs.CheckAcceptMediaType)
+ m.Any("/*", func(ctx *context.Context) {
+ ctx.NotFound("", nil)
+ })
+ }, ignoreCSRF, lfsServerEnabled)
+}
+
+func registerGitRoutes(m *web.Route) {
+ m.Group("/{username}/{reponame}", func() {
+ gitHTTPRouters(m)
})
}
diff --git a/services/actions/Test_checkJobsOfRun/action_run.yml b/services/actions/Test_checkJobsOfRun/action_run.yml
index 1033fb43f8..1c4c8a7cab 100644
--- a/services/actions/Test_checkJobsOfRun/action_run.yml
+++ b/services/actions/Test_checkJobsOfRun/action_run.yml
@@ -16,3 +16,23 @@
updated: 1683636626
need_approval: 0
approved_by: 0
+
+# Test case with needs, only
+- id: 901
+ title: ".forgejo/workflows/test.yaml"
+ repo_id: 63
+ owner_id: 2
+ workflow_id: "test.yaml"
+ workflow_directory: ".forgejo/workflows"
+ index: 5
+ trigger_user_id: 2
+ ref: "refs/heads/main"
+ commit_sha: "c29b3a4b23e21ea3261291d82bfb8e7af7797e26"
+ trigger_event: "workflow_dispatch"
+ is_fork_pull_request: 0
+ status: 7 # running
+ started: 1779368408
+ created: 1779368408
+ updated: 1779368421
+ need_approval: 0
+ approved_by: 0
diff --git a/services/actions/Test_checkJobsOfRun/action_run_job.yml b/services/actions/Test_checkJobsOfRun/action_run_job.yml
index 3ececeb458..8f496d4940 100644
--- a/services/actions/Test_checkJobsOfRun/action_run_job.yml
+++ b/services/actions/Test_checkJobsOfRun/action_run_job.yml
@@ -38,3 +38,107 @@
task_id: 100
status: 1 # success
runs_on: '["fedora"]'
+
+# Jobs for run 901. For the test to be effective, it is important that the job with `job_id: c` has a lower `id` than
+# `job_id: b` because that reflects real-word ordering issues that need to be handled.
+- id: 674
+ run_id: 901
+ repo_id: 63
+ owner_id: 2
+ commit_sha: c29b3a4b23e21ea3261291d82bfb8e7af7797e26
+ attempt: 1
+ job_id: a
+ needs: null
+ runs_on: '["fedora"]'
+ status: 1 # success
+ task_id: 101
+ workflow_payload: |
+ "on":
+ workflow_dispatch:
+ jobs:
+ a:
+ name: a
+ runs-on: ubuntu-latest
+ steps:
+ - id: set
+ run: echo "argument=something" >> "$FORGEJO_OUTPUT"
+ outputs:
+ argument: ${{ steps.set.outputs.argument }}
+
+- id: 676
+ run_id: 901
+ repo_id: 63
+ owner_id: 2
+ commit_sha: c29b3a4b23e21ea3261291d82bfb8e7af7797e26
+ attempt: 1
+ job_id: c
+ needs: '["a","b"]'
+ runs_on: '["fedora"]'
+ status: 7 # blocked
+ workflow_payload: |
+ "on":
+ workflow_dispatch:
+ jobs:
+ c:
+ name: c
+ runs-on: []
+ uses: ./.forgejo/workflows/reusable.yaml
+ with:
+ argument: ${{ needs.a.outputs.argument }}
+ incomplete_with: true
+ incomplete_with_needs:
+ job: a
+ output: argument
+ __metadata:
+ workflow_call_id: e0c1155c1286a2f6e213ec7986500f7961418d1e11664de1409a2d8072d6845e
+
+- id: 677
+ run_id: 901
+ repo_id: 63
+ owner_id: 2
+ commit_sha: c29b3a4b23e21ea3261291d82bfb8e7af7797e26
+ attempt: 1
+ job_id: b
+ needs: '["b.reusable","a"]'
+ runs_on: '["fedora"]'
+ status: 7 # blocked
+ workflow_payload: |
+ "on":
+ workflow_dispatch:
+ jobs:
+ b:
+ name: b
+ runs-on: []
+ if: false
+ __metadata:
+ workflow_call_inputs:
+ argument: something
+ workflow_call_id: ec2c61f51535f715c1b7b3089c6b2d46578698a4c5d10f6dd4a4466b2f44f81c
+
+- id: 678
+ run_id: 901
+ repo_id: 63
+ owner_id: 2
+ commit_sha: c29b3a4b23e21ea3261291d82bfb8e7af7797e26
+ attempt: 1
+ job_id: b.reusable
+ needs: '["a"]'
+ runs_on: '["fedora"]'
+ status: 1 # success
+ workflow_payload: |
+ "on":
+ workflow_call:
+ inputs:
+ argument:
+ default: something
+ type: string
+ jobs:
+ b.reusable:
+ name: reusable
+ runs-on: ubuntu-latest
+ steps:
+ - run: |
+ echo "Argument: ${{ inputs.argument }}"
+ __metadata:
+ workflow_call_parent: ec2c61f51535f715c1b7b3089c6b2d46578698a4c5d10f6dd4a4466b2f44f81c
+
diff --git a/services/actions/Test_checkJobsOfRun/action_task_output.yml b/services/actions/Test_checkJobsOfRun/action_task_output.yml
index b678ac22a9..f364fe5ec3 100644
--- a/services/actions/Test_checkJobsOfRun/action_task_output.yml
+++ b/services/actions/Test_checkJobsOfRun/action_task_output.yml
@@ -3,3 +3,10 @@
task_id: 100
output_key: colors
output_value: '["red", "blue", "green"]'
+
+-
+ id: 101
+ task_id: 101
+ output_key: argument
+ output_value: "something"
+
diff --git a/services/actions/job_emitter.go b/services/actions/job_emitter.go
index faaf9d2cdf..020362cac0 100644
--- a/services/actions/job_emitter.go
+++ b/services/actions/job_emitter.go
@@ -61,17 +61,15 @@ func checkJobsOfRun(ctx context.Context, runID int64, recursionCount int) error
return fmt.Errorf("checkJobsOfRun for runID %d hit recursion limit %d", runID, recursionCount)
}
+ var jobs actions_model.ActionJobList
jobs, err := db.Find[actions_model.ActionRunJob](ctx, actions_model.FindRunJobOptions{RunID: runID})
if err != nil {
return err
}
- if err := db.WithTx(ctx, func(ctx context.Context) error {
- idToJobs := make(map[string][]*actions_model.ActionRunJob, len(jobs))
- for _, job := range jobs {
- idToJobs[job.JobID] = append(idToJobs[job.JobID], job)
- }
- updates := newJobStatusResolver(jobs).Resolve()
+ var updates map[int64]actions_model.Status
+ if err := db.WithTx(ctx, func(ctx context.Context) error {
+ updates = newJobStatusResolver(jobs).Resolve()
for _, job := range jobs {
if status, ok := updates[job.ID]; ok {
job.Status = status
@@ -115,15 +113,16 @@ func checkJobsOfRun(ctx context.Context, runID int64, recursionCount int) error
}); err != nil {
return err
}
+
CreateCommitStatus(ctx, jobs...)
// tryHandleIncompleteMatrix can create new jobs in this run which may initially be persisted in the DB as blocked
// because they have non-empty `needs`. In that case, we need to recursively run the job emitter so that new jobs
// are recognized as having their `needs` completed and be set as unblocked. Check if any new jobs were created and
- // rerun the job emitter if so.
+ // rerun the job emitter if so. The same is necessary if updates completed jobs that unblocked other jobs.
if hasNewJobs, err := actions_model.RunHasOtherJobs(ctx, runID, jobs); err != nil {
return fmt.Errorf("RunHasOtherJobs error: %w", err)
- } else if hasNewJobs {
+ } else if hasNewJobs || len(updates) > 0 {
return checkJobsOfRun(ctx, runID, recursionCount+1)
}
@@ -172,21 +171,6 @@ func newJobStatusResolver(jobs actions_model.ActionJobList) *jobStatusResolver {
}
func (r *jobStatusResolver) Resolve() map[int64]actions_model.Status {
- ret := map[int64]actions_model.Status{}
- for i := 0; i < len(r.statuses); i++ {
- updated := r.resolve()
- if len(updated) == 0 {
- return ret
- }
- for k, v := range updated {
- ret[k] = v
- r.statuses[k] = v
- }
- }
- return ret
-}
-
-func (r *jobStatusResolver) resolve() map[int64]actions_model.Status {
ret := map[int64]actions_model.Status{}
for id, status := range r.statuses {
if status != actions_model.StatusBlocked {
diff --git a/services/actions/job_emitter_test.go b/services/actions/job_emitter_test.go
index d6696b3482..e4c8cdfa6e 100644
--- a/services/actions/job_emitter_test.go
+++ b/services/actions/job_emitter_test.go
@@ -68,8 +68,9 @@ func Test_jobStatusResolver_Resolve(t *testing.T) {
{ID: 3, JobID: "3", Status: actions_model.StatusBlocked, Needs: []string{"2"}},
},
want: map[int64]actions_model.Status{
+ // Resolve() does only one update pass and does not update jobs recursively. Therefore, job 3, which
+ // depends on 2, is not marked as skipped. It would only be marked as skipped if it depended on job 1.
2: actions_model.StatusSkipped,
- 3: actions_model.StatusSkipped,
},
},
{
@@ -876,6 +877,61 @@ func Test_tryHandleWorkflowCallOuterJob(t *testing.T) {
}
}
+func Test_checkJobsOfRun(t *testing.T) {
+ defer unittest.OverrideFixtures("services/actions/Test_checkJobsOfRun")()
+ require.NoError(t, unittest.PrepareTestDatabase())
+
+ reusableWorkflow := `
+on:
+ workflow_call:
+ inputs:
+ argument:
+ type: string
+
+jobs:
+ reusable:
+ runs-on: ubuntu-latest
+ steps:
+ - run: |
+ echo "Argument: ${{ inputs.argument }}"
+`
+
+ defer test.MockVariableValue(&lazyRepoExpandLocalReusableWorkflow,
+ func(ctx context.Context, repoID int64, commitSHA string) (jobparser.LocalWorkflowFetcher, CleanupFunc) {
+ fetcher := func(job *jobparser.Job, path string) ([]byte, error) {
+ return []byte(reusableWorkflow), nil
+ }
+ cleanup := func() {
+ }
+ return fetcher, cleanup
+ })()
+
+ jobs, err := actions_model.GetRunJobsByRunID(t.Context(), 901)
+ require.NoError(t, err)
+ require.Len(t, jobs, 4)
+
+ require.NoError(t, checkJobsOfRun(t.Context(), 901, 0))
+
+ jobs, err = actions_model.GetRunJobsByRunID(t.Context(), 901)
+ require.NoError(t, err)
+ assert.Len(t, jobs, 5)
+
+ assert.Equal(t, "a", jobs[0].JobID)
+ assert.Equal(t, actions_model.StatusSuccess, jobs[0].Status)
+
+ assert.Equal(t, "b", jobs[1].JobID)
+ assert.Equal(t, actions_model.StatusSuccess, jobs[1].Status)
+
+ assert.Equal(t, "b.reusable", jobs[2].JobID)
+ assert.Equal(t, actions_model.StatusSuccess, jobs[2].Status)
+
+ assert.Equal(t, "c", jobs[3].JobID)
+ assert.Equal(t, actions_model.StatusBlocked, jobs[3].Status)
+
+ assert.Equal(t, "c.reusable", jobs[4].JobID)
+ assert.Equal(t, actions_model.StatusWaiting, jobs[4].Status)
+}
+
func Test_checkJobsOfRun_ExpandsMatrixWithCorrectOutputJobStatuses(t *testing.T) {
defer unittest.OverrideFixtures("services/actions/Test_checkJobsOfRun")()
require.NoError(t, unittest.PrepareTestDatabase())
diff --git a/services/convert/pull.go b/services/convert/pull.go
index 4856c58736..38ab42048a 100644
--- a/services/convert/pull.go
+++ b/services/convert/pull.go
@@ -67,7 +67,7 @@ func ToAPIPullRequest(ctx context.Context, pr *issues_model.PullRequest, doer *u
apiPullRequest := &api.PullRequest{
ID: pr.ID,
- URL: pr.Issue.HTMLURL(),
+ URL: pr.Issue.APIURL(ctx),
Index: pr.Index,
Poster: apiIssue.Poster,
Title: apiIssue.Title,
diff --git a/services/lfs/server.go b/services/lfs/server.go
index 1dfd58a3c0..41401e8bfd 100644
--- a/services/lfs/server.go
+++ b/services/lfs/server.go
@@ -183,7 +183,7 @@ func BatchHandler(ctx *context.Context) {
}
if isUpload {
- ok, err := quota_model.EvaluateForUser(ctx, ctx.Doer.ID, quota_model.LimitSubjectSizeGitLFS)
+ ok, err := quota_model.EvaluateForUser(ctx, repository.OwnerID, quota_model.LimitSubjectSizeGitLFS)
if err != nil {
log.Error("quota_model.EvaluateForUser: %v", err)
writeStatus(ctx, http.StatusInternalServerError)
@@ -191,6 +191,7 @@ func BatchHandler(ctx *context.Context) {
}
if !ok {
writeStatusMessage(ctx, http.StatusRequestEntityTooLarge, "quota exceeded")
+ return
}
}
@@ -317,8 +318,8 @@ func UploadHandler(ctx *context.Context) {
return
}
- if exists {
- ok, err := quota_model.EvaluateForUser(ctx, ctx.Doer.ID, quota_model.LimitSubjectSizeGitLFS)
+ if !exists {
+ ok, err := quota_model.EvaluateForUser(ctx, repository.OwnerID, quota_model.LimitSubjectSizeGitLFS)
if err != nil {
log.Error("quota_model.EvaluateForUser: %v", err)
writeStatus(ctx, http.StatusInternalServerError)
@@ -326,6 +327,7 @@ func UploadHandler(ctx *context.Context) {
}
if !ok {
writeStatusMessage(ctx, http.StatusRequestEntityTooLarge, "quota exceeded")
+ return
}
}
diff --git a/services/migrations/lint-locale-usage/llu.go b/services/migrations/lint-locale-usage/llu.go
index e0ed031cbe..c6eccfc2d4 100644
--- a/services/migrations/lint-locale-usage/llu.go
+++ b/services/migrations/lint-locale-usage/llu.go
@@ -35,8 +35,8 @@ func HandleMessengerInFunc(handler llu.Handler, fset *token.FileSet, n2 *ast.Fun
if ret, ok := call.Fun.(*ast.Ident); !(ok && messenger.Contains(ret.Name)) {
return true
}
- if len(call.Args) != 1 {
- handler.OnWarning(fset, call.Lparen, "unexpected invocation of base.Messenger (expected exactly 1 argument)")
+ if len(call.Args) == 0 {
+ handler.OnWarning(fset, call.Lparen, "unexpected invocation of base.Messenger (expected at least one argument)")
return true
}
handler.HandleGoTrArgument(fset, call.Args[0], "")
diff --git a/services/migrations/migrate.go b/services/migrations/migrate.go
index 6746a8c915..92a959600c 100644
--- a/services/migrations/migrate.go
+++ b/services/migrations/migrate.go
@@ -344,6 +344,7 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
log.Trace("migrating issues and comments")
messenger("migrate.in_progress.issues")
issueBatchSize := uploader.MaxBatchInsertSize("issue")
+ var processedIssuesLen int
for i := 1; ; i++ {
issues, isEnd, err := downloader.GetIssues(i, issueBatchSize)
@@ -389,6 +390,8 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
}
}
+ processedIssuesLen += len(issues)
+ messenger("migrate.in_progress.issues.progress", processedIssuesLen)
if isEnd {
break
}
@@ -399,6 +402,8 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
log.Trace("migrating pull requests and comments")
messenger("migrate.in_progress.pulls")
prBatchSize := uploader.MaxBatchInsertSize("pullrequest")
+ var processedPrsLen int
+
for i := 1; ; i++ {
prs, isEnd, err := downloader.GetPullRequests(i, prBatchSize)
if err != nil {
@@ -471,6 +476,8 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
}
}
+ processedPrsLen += len(prs)
+ messenger("migrate.in_progress.pulls.progress", processedPrsLen)
if isEnd {
break
}
diff --git a/services/migrations/migrate_test.go b/services/migrations/migrate_test.go
index 804d01df7a..001da836dd 100644
--- a/services/migrations/migrate_test.go
+++ b/services/migrations/migrate_test.go
@@ -1,3 +1,4 @@
+// Copyright 2026 The Forgejo Authors. All rights reserved.
// Copyright 2019 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
@@ -10,8 +11,10 @@ import (
"forgejo.org/models/unittest"
user_model "forgejo.org/models/user"
+ "forgejo.org/modules/migration"
"forgejo.org/modules/setting"
+ "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -128,3 +131,110 @@ func TestURLAllowedSSH(t *testing.T) {
require.NoError(t, IsPushMirrorURLAllowed(sshURL, user))
})
}
+
+var _ migration.Uploader = nullUploader{}
+
+type nullUploader struct{}
+
+func (nullUploader) MaxBatchInsertSize(string) int {
+ return 1
+}
+
+func (nullUploader) CreateRepo(*migration.Repository, migration.MigrateOptions) error {
+ return nil
+}
+
+func (nullUploader) CreateTopics(...string) error {
+ return nil
+}
+
+func (nullUploader) CreateMilestones(...*migration.Milestone) error {
+ return nil
+}
+
+func (nullUploader) CreateReleases(...*migration.Release) error {
+ return nil
+}
+
+func (nullUploader) SyncTags() error {
+ return nil
+}
+
+func (nullUploader) CreateLabels(...*migration.Label) error {
+ return nil
+}
+
+func (nullUploader) CreateIssues(...*migration.Issue) error {
+ return nil
+}
+
+func (nullUploader) CreateComments(...*migration.Comment) error {
+ return nil
+}
+
+func (nullUploader) CreatePullRequests(...*migration.PullRequest) error {
+ return nil
+}
+
+func (nullUploader) CreateReviews(...*migration.Review) error {
+ return nil
+}
+
+func (nullUploader) Rollback() error {
+ return nil
+}
+
+func (nullUploader) Finish() error {
+ return nil
+}
+
+func (nullUploader) Close() {}
+
+type testingDownloader struct {
+ migration.NullDownloader
+}
+
+func (testingDownloader) GetRepoInfo() (*migration.Repository, error) {
+ return &migration.Repository{
+ CloneURL: "https://codeberg.org/forgejo-contrib/delightful-forgejo.git",
+ }, nil
+}
+
+func (testingDownloader) GetIssues(page, _ int) ([]*migration.Issue, bool, error) {
+ return make([]*migration.Issue, 1), page == 2, nil
+}
+
+func (testingDownloader) GetPullRequests(page, _ int) ([]*migration.PullRequest, bool, error) {
+ return make([]*migration.PullRequest, 1), page == 3, nil
+}
+
+func TestMigrateRepository(t *testing.T) {
+ messages := []struct {
+ key string
+ args []any
+ }{
+ {key: "migrate.in_progress.git"},
+ {key: "migrate.in_progress.topics"},
+ {key: "migrate.in_progress.issues"},
+ {key: "migrate.in_progress.issues.progress", args: []any{1}},
+ {key: "migrate.in_progress.issues.progress", args: []any{2}},
+ {key: "migrate.in_progress.pulls"},
+ {key: "migrate.in_progress.pulls.progress", args: []any{1}},
+ {key: "migrate.in_progress.pulls.progress", args: []any{2}},
+ {key: "migrate.in_progress.pulls.progress", args: []any{3}},
+ }
+ messenger := func(key string, args ...any) {
+ if assert.NotEmpty(t, messages, key) {
+ assert.Equal(t, messages[0].key, key)
+ assert.Equal(t, messages[0].args, args)
+ messages = messages[1:]
+ }
+ }
+
+ require.NoError(t, migrateRepository(nil, nil, testingDownloader{}, nullUploader{}, migration.MigrateOptions{
+ PullRequests: true,
+ Issues: true,
+ }, messenger))
+
+ assert.Empty(t, messages)
+}
diff --git a/services/webhook/dingtalk.go b/services/webhook/dingtalk.go
index 96d4c18c11..077906e192 100644
--- a/services/webhook/dingtalk.go
+++ b/services/webhook/dingtalk.go
@@ -62,6 +62,13 @@ type (
}
)
+var dingtalkPayloadFormatter = webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: true,
+ withRepoName: true,
+}
+
// Create implements PayloadConvertor Create method
func (dc dingtalkConvertor) Create(p *api.CreatePayload) (DingtalkPayload, error) {
// created tag/branch
@@ -130,14 +137,14 @@ func (dc dingtalkConvertor) Push(p *api.PushPayload) (DingtalkPayload, error) {
// Issue implements PayloadConvertor Issue method
func (dc dingtalkConvertor) Issue(p *api.IssuePayload) (DingtalkPayload, error) {
- text, issueTitle, attachmentText, _ := getIssuesPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, issueTitle, attachmentText, _ := dingtalkPayloadFormatter.getIssuesPayloadInfo(p)
return createDingtalkPayload(issueTitle, text+"\r\n\r\n"+attachmentText, "view issue", p.Issue.HTMLURL), nil
}
// Wiki implements PayloadConvertor Wiki method
func (dc dingtalkConvertor) Wiki(p *api.WikiPayload) (DingtalkPayload, error) {
- text, _, _ := getWikiPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, _, _ := dingtalkPayloadFormatter.getWikiPayloadInfo(p, true)
url := p.Repository.HTMLURL + "/wiki/" + url.PathEscape(p.Page)
return createDingtalkPayload(text, text, "view wiki", url), nil
@@ -145,14 +152,14 @@ func (dc dingtalkConvertor) Wiki(p *api.WikiPayload) (DingtalkPayload, error) {
// IssueComment implements PayloadConvertor IssueComment method
func (dc dingtalkConvertor) IssueComment(p *api.IssueCommentPayload) (DingtalkPayload, error) {
- text, issueTitle, _ := getIssueCommentPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, issueTitle, _ := dingtalkPayloadFormatter.getIssueCommentPayloadInfo(p)
return createDingtalkPayload(issueTitle, text+"\r\n\r\n"+p.Comment.Body, "view issue comment", p.Comment.HTMLURL), nil
}
// PullRequest implements PayloadConvertor PullRequest method
func (dc dingtalkConvertor) PullRequest(p *api.PullRequestPayload) (DingtalkPayload, error) {
- text, issueTitle, attachmentText, _ := getPullRequestPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, issueTitle, attachmentText, _ := dingtalkPayloadFormatter.getPullRequestPayloadInfo(p)
return createDingtalkPayload(issueTitle, text+"\r\n\r\n"+attachmentText, "view pull request", p.PullRequest.HTMLURL), nil
}
@@ -196,19 +203,19 @@ func (dc dingtalkConvertor) Repository(p *api.RepositoryPayload) (DingtalkPayloa
// Release implements PayloadConvertor Release method
func (dc dingtalkConvertor) Release(p *api.ReleasePayload) (DingtalkPayload, error) {
- text, _ := getReleasePayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, _ := dingtalkPayloadFormatter.getReleasePayloadInfo(p)
return createDingtalkPayload(text, text, "view release", p.Release.HTMLURL), nil
}
func (dc dingtalkConvertor) Package(p *api.PackagePayload) (DingtalkPayload, error) {
- text, _ := getPackagePayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, _ := dingtalkPayloadFormatter.getPackagePayloadInfo(p)
return createDingtalkPayload(text, text, "view package", p.Package.HTMLURL), nil
}
func (dc dingtalkConvertor) Action(p *api.ActionPayload) (DingtalkPayload, error) {
- text, _ := getActionPayloadInfo(p, noneLinkFormatter)
+ text, _ := dingtalkPayloadFormatter.getActionPayloadInfo(p)
return createDingtalkPayload(text, text, "view action", p.Run.HTMLURL), nil
}
diff --git a/services/webhook/dingtalk_test.go b/services/webhook/dingtalk_test.go
index 5d2a240660..3eb2d42c8c 100644
--- a/services/webhook/dingtalk_test.go
+++ b/services/webhook/dingtalk_test.go
@@ -178,8 +178,8 @@ func TestDingTalkPayload(t *testing.T) {
pl, err := dc.Wiki(p)
require.NoError(t, err)
- assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment) by user1", pl.ActionCard.Text)
- assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment) by user1", pl.ActionCard.Title)
+ assert.Equal(t, "[test/repo] New wiki page \"index\" (Wiki change comment) by user1", pl.ActionCard.Text)
+ assert.Equal(t, "[test/repo] New wiki page \"index\" (Wiki change comment) by user1", pl.ActionCard.Title)
assert.Equal(t, "view wiki", pl.ActionCard.SingleTitle)
assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", parseRealSingleURL(pl.ActionCard.SingleURL))
@@ -187,8 +187,8 @@ func TestDingTalkPayload(t *testing.T) {
pl, err = dc.Wiki(p)
require.NoError(t, err)
- assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment) by user1", pl.ActionCard.Text)
- assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment) by user1", pl.ActionCard.Title)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" edited (Wiki change comment) by user1", pl.ActionCard.Text)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" edited (Wiki change comment) by user1", pl.ActionCard.Title)
assert.Equal(t, "view wiki", pl.ActionCard.SingleTitle)
assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", parseRealSingleURL(pl.ActionCard.SingleURL))
@@ -196,8 +196,8 @@ func TestDingTalkPayload(t *testing.T) {
pl, err = dc.Wiki(p)
require.NoError(t, err)
- assert.Equal(t, "[test/repo] Wiki page 'index' deleted by user1", pl.ActionCard.Text)
- assert.Equal(t, "[test/repo] Wiki page 'index' deleted by user1", pl.ActionCard.Title)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" deleted by user1", pl.ActionCard.Text)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" deleted by user1", pl.ActionCard.Title)
assert.Equal(t, "view wiki", pl.ActionCard.SingleTitle)
assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", parseRealSingleURL(pl.ActionCard.SingleURL))
})
diff --git a/services/webhook/discord.go b/services/webhook/discord.go
index cb7584e157..279756a81e 100644
--- a/services/webhook/discord.go
+++ b/services/webhook/discord.go
@@ -45,6 +45,12 @@ type discordForm struct {
var _ binding.Validator = &discordForm{}
+var discordPayloadFormatter = webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withRepoName: true,
+}
+
// Validate implements binding.Validator.
func (d *discordForm) Validate(req *http.Request, errs binding.Errors) binding.Errors {
ctx := app_context.GetWebContext(req)
@@ -235,21 +241,21 @@ func (d discordConvertor) Push(p *api.PushPayload) (DiscordPayload, error) {
// Issue implements PayloadConvertor Issue method
func (d discordConvertor) Issue(p *api.IssuePayload) (DiscordPayload, error) {
- title, _, text, color := getIssuesPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ title, _, text, color := discordPayloadFormatter.getIssuesPayloadInfo(p)
return d.createPayload(p.Sender, title, text, p.Issue.HTMLURL, color), nil
}
// IssueComment implements PayloadConvertor IssueComment method
func (d discordConvertor) IssueComment(p *api.IssueCommentPayload) (DiscordPayload, error) {
- title, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ title, _, color := discordPayloadFormatter.getIssueCommentPayloadInfo(p)
return d.createPayload(p.Sender, title, p.Comment.Body, p.Comment.HTMLURL, color), nil
}
// PullRequest implements PayloadConvertor PullRequest method
func (d discordConvertor) PullRequest(p *api.PullRequestPayload) (DiscordPayload, error) {
- title, _, text, color := getPullRequestPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ title, _, text, color := discordPayloadFormatter.getPullRequestPayloadInfo(p)
return d.createPayload(p.Sender, title, text, p.PullRequest.HTMLURL, color), nil
}
@@ -301,7 +307,7 @@ func (d discordConvertor) Repository(p *api.RepositoryPayload) (DiscordPayload,
// Wiki implements PayloadConvertor Wiki method
func (d discordConvertor) Wiki(p *api.WikiPayload) (DiscordPayload, error) {
- text, color, _ := getWikiPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ text, color, _ := discordPayloadFormatter.getWikiPayloadInfo(p, true)
htmlLink := p.Repository.HTMLURL + "/wiki/" + url.PathEscape(p.Page)
var description string
@@ -314,19 +320,19 @@ func (d discordConvertor) Wiki(p *api.WikiPayload) (DiscordPayload, error) {
// Release implements PayloadConvertor Release method
func (d discordConvertor) Release(p *api.ReleasePayload) (DiscordPayload, error) {
- text, color := getReleasePayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ text, color := discordPayloadFormatter.getReleasePayloadInfo(p)
return d.createPayload(p.Sender, text, p.Release.Note, p.Release.HTMLURL, color), nil
}
func (d discordConvertor) Package(p *api.PackagePayload) (DiscordPayload, error) {
- text, color := getPackagePayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ text, color := discordPayloadFormatter.getPackagePayloadInfo(p)
return d.createPayload(p.Sender, text, "", p.Package.HTMLURL, color), nil
}
func (d discordConvertor) Action(p *api.ActionPayload) (DiscordPayload, error) {
- text, color := getActionPayloadInfo(p, noneLinkFormatter)
+ text, color := discordPayloadFormatter.getActionPayloadInfo(p)
return d.createPayload(p.Run.TriggerUser, text, "", p.Run.HTMLURL, color), nil
}
diff --git a/services/webhook/discord_test.go b/services/webhook/discord_test.go
index 23745b421a..6a5d1da334 100644
--- a/services/webhook/discord_test.go
+++ b/services/webhook/discord_test.go
@@ -279,7 +279,7 @@ func TestDiscordPayload(t *testing.T) {
require.NoError(t, err)
assert.Len(t, pl.Embeds, 1)
- assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment)", pl.Embeds[0].Title)
+ assert.Equal(t, "[test/repo] New wiki page \"index\" (Wiki change comment)", pl.Embeds[0].Title)
assert.Equal(t, "Wiki change comment", pl.Embeds[0].Description)
assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.Embeds[0].URL)
assert.Equal(t, p.Sender.UserName, pl.Embeds[0].Author.Name)
@@ -291,7 +291,7 @@ func TestDiscordPayload(t *testing.T) {
require.NoError(t, err)
assert.Len(t, pl.Embeds, 1)
- assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment)", pl.Embeds[0].Title)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" edited (Wiki change comment)", pl.Embeds[0].Title)
assert.Equal(t, "Wiki change comment", pl.Embeds[0].Description)
assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.Embeds[0].URL)
assert.Equal(t, p.Sender.UserName, pl.Embeds[0].Author.Name)
@@ -303,7 +303,7 @@ func TestDiscordPayload(t *testing.T) {
require.NoError(t, err)
assert.Len(t, pl.Embeds, 1)
- assert.Equal(t, "[test/repo] Wiki page 'index' deleted", pl.Embeds[0].Title)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" deleted", pl.Embeds[0].Title)
assert.Empty(t, pl.Embeds[0].Description)
assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.Embeds[0].URL)
assert.Equal(t, p.Sender.UserName, pl.Embeds[0].Author.Name)
diff --git a/services/webhook/feishu.go b/services/webhook/feishu.go
index ffbd4eb469..a2e4632361 100644
--- a/services/webhook/feishu.go
+++ b/services/webhook/feishu.go
@@ -63,6 +63,13 @@ func newFeishuTextPayload(text string) FeishuPayload {
}
}
+var feishuPayloadFormatter = webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: true,
+ withRepoName: true,
+}
+
// Create implements PayloadConvertor Create method
func (fc feishuConvertor) Create(p *api.CreatePayload) (FeishuPayload, error) {
// created tag/branch
@@ -174,26 +181,26 @@ func (fc feishuConvertor) Repository(p *api.RepositoryPayload) (FeishuPayload, e
// Wiki implements PayloadConvertor Wiki method
func (fc feishuConvertor) Wiki(p *api.WikiPayload) (FeishuPayload, error) {
- text, _, _ := getWikiPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, _, _ := feishuPayloadFormatter.getWikiPayloadInfo(p, true)
return newFeishuTextPayload(text), nil
}
// Release implements PayloadConvertor Release method
func (fc feishuConvertor) Release(p *api.ReleasePayload) (FeishuPayload, error) {
- text, _ := getReleasePayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, _ := feishuPayloadFormatter.getReleasePayloadInfo(p)
return newFeishuTextPayload(text), nil
}
func (fc feishuConvertor) Package(p *api.PackagePayload) (FeishuPayload, error) {
- text, _ := getPackagePayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, _ := feishuPayloadFormatter.getPackagePayloadInfo(p)
return newFeishuTextPayload(text), nil
}
func (fc feishuConvertor) Action(p *api.ActionPayload) (FeishuPayload, error) {
- text, _ := getActionPayloadInfo(p, noneLinkFormatter)
+ text, _ := feishuPayloadFormatter.getActionPayloadInfo(p)
return newFeishuTextPayload(text), nil
}
diff --git a/services/webhook/feishu_test.go b/services/webhook/feishu_test.go
index 7cf24b84ed..5258edea7f 100644
--- a/services/webhook/feishu_test.go
+++ b/services/webhook/feishu_test.go
@@ -131,19 +131,19 @@ func TestFeishuPayload(t *testing.T) {
pl, err := fc.Wiki(p)
require.NoError(t, err)
- assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment) by user1", pl.Content.Text)
+ assert.Equal(t, "[test/repo] New wiki page \"index\" (Wiki change comment) by user1", pl.Content.Text)
p.Action = api.HookWikiEdited
pl, err = fc.Wiki(p)
require.NoError(t, err)
- assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment) by user1", pl.Content.Text)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" edited (Wiki change comment) by user1", pl.Content.Text)
p.Action = api.HookWikiDeleted
pl, err = fc.Wiki(p)
require.NoError(t, err)
- assert.Equal(t, "[test/repo] Wiki page 'index' deleted by user1", pl.Content.Text)
+ assert.Equal(t, "[test/repo] Wiki page \"index\" deleted by user1", pl.Content.Text)
})
t.Run("Release", func(t *testing.T) {
diff --git a/services/webhook/general.go b/services/webhook/general.go
index 0f1b3da70a..19307cd451 100644
--- a/services/webhook/general.go
+++ b/services/webhook/general.go
@@ -17,8 +17,8 @@ import (
)
type (
- linkFormatter = func(string, string) string
- nameFormatter = func(string) string
+ linkFormatter = func(url, text string) string
+ nameFormatter = func(name string) string
)
// noneLinkFormatter does not create a link but just returns the text
@@ -101,48 +101,56 @@ func getIssuesCommentInfo(p *api.IssueCommentPayload, nameFormatter nameFormatte
return title, link, by, operator
}
-func getIssuesPayloadInfo(p *api.IssuePayload, linkFormatter linkFormatter, nameFormatter nameFormatter, withSender bool) (string, string, string, int) {
- issueTitle := fmt.Sprintf("#%d %s", p.Index, p.Issue.Title)
- titleLink := linkFormatter(fmt.Sprintf("%s/issues/%d", p.Repository.HTMLURL, p.Index), issueTitle)
- var text string
- color := yellowColor
+type webhookPayloadFormatter struct {
+ linkFormatter linkFormatter
+ nameFormatter nameFormatter
+ withSender, withRepoName bool
+}
+
+func (wpf webhookPayloadFormatter) getIssuesPayloadInfo(p *api.IssuePayload) (text, issueTitle, attachmentText string, color int) {
+ issueTitle = fmt.Sprintf("#%d %s", p.Index, p.Issue.Title)
+ titleLink := wpf.linkFormatter(fmt.Sprintf("%s/issues/%d", p.Repository.HTMLURL, p.Index), issueTitle)
+ color = yellowColor
switch p.Action {
case api.HookIssueOpened:
- text = fmt.Sprintf("[%s] Issue opened: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue opened: %s", titleLink)
color = orangeColor
case api.HookIssueClosed:
- text = fmt.Sprintf("[%s] Issue closed: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue closed: %s", titleLink)
color = redColor
case api.HookIssueReOpened:
- text = fmt.Sprintf("[%s] Issue re-opened: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue re-opened: %s", titleLink)
case api.HookIssueEdited:
- text = fmt.Sprintf("[%s] Issue edited: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue edited: %s", titleLink)
case api.HookIssueAssigned:
list := make([]string, len(p.Issue.Assignees))
for i, user := range p.Issue.Assignees {
- list[i] = linkFormatter(setting.AppURL+url.PathEscape(user.UserName), user.UserName)
+ list[i] = wpf.linkFormatter(setting.AppURL+url.PathEscape(user.UserName), user.UserName)
}
- text = fmt.Sprintf("[%s] Issue assigned to %s: %s", p.Repository.FullName, strings.Join(list, ", "), titleLink)
+ text = fmt.Sprintf("Issue assigned to %s: %s", strings.Join(list, ", "), titleLink)
color = greenColor
case api.HookIssueUnassigned:
- text = fmt.Sprintf("[%s] Issue unassigned: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue unassigned: %s", titleLink)
case api.HookIssueLabelUpdated:
- text = fmt.Sprintf("[%s] Issue labels updated: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue labels updated: %s", titleLink)
case api.HookIssueLabelCleared:
- text = fmt.Sprintf("[%s] Issue labels cleared: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue labels cleared: %s", titleLink)
case api.HookIssueSynchronized:
- text = fmt.Sprintf("[%s] Issue synchronized: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Issue synchronized: %s", titleLink)
case api.HookIssueMilestoned:
- text = fmt.Sprintf("[%s] Issue milestoned to %s: %s", p.Repository.FullName, p.Issue.Milestone.Title, titleLink)
+ text = fmt.Sprintf("Issue milestoned to %s: %s", p.Issue.Milestone.Title, titleLink)
case api.HookIssueDemilestoned:
- text = fmt.Sprintf("[%s] Issue milestone cleared: %s", p.Repository.FullName, titleLink)
- }
- if withSender {
- text += fmt.Sprintf(" by %s", nameFormatter(p.Sender.UserName))
+ text = fmt.Sprintf("Issue milestone cleared: %s", titleLink)
+ }
+
+ if wpf.withRepoName {
+ text = fmt.Sprintf("[%s] %s", p.Repository.FullName, text)
+ }
+ if wpf.withSender {
+ text += fmt.Sprintf(" by %s", wpf.nameFormatter(p.Sender.UserName))
}
- var attachmentText string
if p.Action == api.HookIssueOpened || p.Action == api.HookIssueEdited {
attachmentText = p.Issue.Body
}
@@ -150,152 +158,160 @@ func getIssuesPayloadInfo(p *api.IssuePayload, linkFormatter linkFormatter, name
return text, issueTitle, attachmentText, color
}
-func getPullRequestPayloadInfo(p *api.PullRequestPayload, linkFormatter linkFormatter, nameFormatter nameFormatter, withSender bool) (string, string, string, int) {
- issueTitle := fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title)
- titleLink := linkFormatter(p.PullRequest.URL, issueTitle)
- var text string
- var attachmentText string
- color := yellowColor
+func (wpf webhookPayloadFormatter) getPullRequestPayloadInfo(p *api.PullRequestPayload) (text, issueTitle, attachmentText string, color int) {
+ issueTitle = fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title)
+ titleLink := wpf.linkFormatter(p.PullRequest.URL, issueTitle)
+ color = yellowColor
switch p.Action {
case api.HookIssueOpened:
- text = fmt.Sprintf("[%s] Pull request opened: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request opened: %s", titleLink)
attachmentText = p.PullRequest.Body
color = greenColor
case api.HookIssueClosed:
if p.PullRequest.HasMerged {
- text = fmt.Sprintf("[%s] Pull request merged: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request merged: %s", titleLink)
color = purpleColor
} else {
- text = fmt.Sprintf("[%s] Pull request closed: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request closed: %s", titleLink)
color = redColor
}
case api.HookIssueReOpened:
- text = fmt.Sprintf("[%s] Pull request re-opened: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request re-opened: %s", titleLink)
case api.HookIssueEdited:
- text = fmt.Sprintf("[%s] Pull request edited: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request edited: %s", titleLink)
attachmentText = p.PullRequest.Body
case api.HookIssueAssigned:
list := make([]string, len(p.PullRequest.Assignees))
for i, user := range p.PullRequest.Assignees {
- list[i] = linkFormatter(setting.AppURL+user.UserName, user.UserName)
+ list[i] = wpf.linkFormatter(setting.AppURL+user.UserName, user.UserName)
}
- text = fmt.Sprintf("[%s] Pull request assigned to %s: %s", p.Repository.FullName,
- strings.Join(list, ", "), titleLink)
+ text = fmt.Sprintf("Pull request assigned to %s: %s", strings.Join(list, ", "), titleLink)
color = greenColor
case api.HookIssueUnassigned:
- text = fmt.Sprintf("[%s] Pull request unassigned: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request unassigned: %s", titleLink)
case api.HookIssueLabelUpdated:
- text = fmt.Sprintf("[%s] Pull request labels updated: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request labels updated: %s", titleLink)
case api.HookIssueLabelCleared:
- text = fmt.Sprintf("[%s] Pull request labels cleared: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request labels cleared: %s", titleLink)
case api.HookIssueSynchronized:
- text = fmt.Sprintf("[%s] Pull request synchronized: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request synchronized: %s", titleLink)
case api.HookIssueMilestoned:
- text = fmt.Sprintf("[%s] Pull request milestoned to %s: %s", p.Repository.FullName, p.PullRequest.Milestone.Title, titleLink)
+ text = fmt.Sprintf("Pull request milestoned to %s: %s", p.PullRequest.Milestone.Title, titleLink)
case api.HookIssueDemilestoned:
- text = fmt.Sprintf("[%s] Pull request milestone cleared: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request milestone cleared: %s", titleLink)
case api.HookIssueReviewed:
- text = fmt.Sprintf("[%s] Pull request reviewed: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request reviewed: %s", titleLink)
attachmentText = p.Review.Content
case api.HookIssueReviewRequested:
- text = fmt.Sprintf("[%s] Pull request review requested: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request review requested: %s", titleLink)
case api.HookIssueReviewRequestRemoved:
- text = fmt.Sprintf("[%s] Pull request review request removed: %s", p.Repository.FullName, titleLink)
+ text = fmt.Sprintf("Pull request review request removed: %s", titleLink)
}
- if withSender {
- text += fmt.Sprintf(" by %s", nameFormatter(p.Sender.UserName))
+ if wpf.withRepoName {
+ text = fmt.Sprintf("[%s] %s", p.Repository.FullName, text)
+ }
+ if wpf.withSender {
+ text += fmt.Sprintf(" by %s", wpf.nameFormatter(p.Sender.UserName))
}
return text, issueTitle, attachmentText, color
}
-func getReleasePayloadInfo(p *api.ReleasePayload, linkFormatter linkFormatter, nameFormatter nameFormatter, withSender bool) (text string, color int) {
- refLink := linkFormatter(p.Repository.HTMLURL+"/releases/tag/"+util.PathEscapeSegments(p.Release.TagName), p.Release.TagName)
+func (wpf webhookPayloadFormatter) getReleasePayloadInfo(p *api.ReleasePayload) (text string, color int) {
+ refLink := wpf.linkFormatter(p.Repository.HTMLURL+"/releases/tag/"+util.PathEscapeSegments(p.Release.TagName), p.Release.TagName)
switch p.Action {
case api.HookReleasePublished:
- text = fmt.Sprintf("[%s] Release created: %s", p.Repository.FullName, refLink)
+ text = fmt.Sprintf("Release created: %s", refLink)
color = greenColor
case api.HookReleaseUpdated:
- text = fmt.Sprintf("[%s] Release updated: %s", p.Repository.FullName, refLink)
+ text = fmt.Sprintf("Release updated: %s", refLink)
color = yellowColor
case api.HookReleaseDeleted:
- text = fmt.Sprintf("[%s] Release deleted: %s", p.Repository.FullName, refLink)
+ text = fmt.Sprintf("Release deleted: %s", refLink)
color = redColor
}
- if withSender {
- text += fmt.Sprintf(" by %s", nameFormatter(p.Sender.UserName))
+ if wpf.withRepoName {
+ text = fmt.Sprintf("[%s] %s", p.Repository.FullName, text)
+ }
+ if wpf.withSender {
+ text += fmt.Sprintf(" by %s", wpf.nameFormatter(p.Sender.UserName))
}
return text, color
}
-func getWikiPayloadInfo(p *api.WikiPayload, linkFormatter linkFormatter, nameFormatter nameFormatter, withSender bool) (string, int, string) {
- pageLink := linkFormatter(p.Repository.HTMLURL+"/wiki/"+url.PathEscape(p.Page), p.Page)
+func (wpf webhookPayloadFormatter) getWikiPayloadInfo(p *api.WikiPayload, withCommitMessage bool) (text string, color int, pageLink string) {
+ pageLink = wpf.linkFormatter(p.Repository.HTMLURL+"/wiki/"+url.PathEscape(p.Page), p.Page)
- var text string
- color := greenColor
+ color = greenColor
switch p.Action {
case api.HookWikiCreated:
- text = fmt.Sprintf("[%s] New wiki page '%s'", p.Repository.FullName, pageLink)
+ text = fmt.Sprintf("New wiki page \"%s\"", pageLink)
case api.HookWikiEdited:
- text = fmt.Sprintf("[%s] Wiki page '%s' edited", p.Repository.FullName, pageLink)
+ text = fmt.Sprintf("Wiki page \"%s\" edited", pageLink)
color = yellowColor
case api.HookWikiDeleted:
- text = fmt.Sprintf("[%s] Wiki page '%s' deleted", p.Repository.FullName, pageLink)
+ text = fmt.Sprintf("Wiki page \"%s\" deleted", pageLink)
color = redColor
}
- if p.Action != api.HookWikiDeleted && p.Comment != "" {
+ if p.Action != api.HookWikiDeleted && p.Comment != "" && withCommitMessage {
text += fmt.Sprintf(" (%s)", p.Comment)
}
- if withSender {
- text += fmt.Sprintf(" by %s", nameFormatter(p.Sender.UserName))
+ if wpf.withRepoName {
+ text = fmt.Sprintf("[%s] %s", p.Repository.FullName, text)
+ }
+ if wpf.withSender {
+ text += fmt.Sprintf(" by %s", wpf.nameFormatter(p.Sender.UserName))
}
return text, color, pageLink
}
-func getIssueCommentPayloadInfo(p *api.IssueCommentPayload, linkFormatter linkFormatter, nameFormatter nameFormatter, withSender bool) (string, string, int) {
- issueTitle := fmt.Sprintf("#%d %s", p.Issue.Index, p.Issue.Title)
+func (wpf webhookPayloadFormatter) getIssueCommentPayloadInfo(p *api.IssueCommentPayload) (text, issueTitle string, color int) {
+ issueTitle = fmt.Sprintf("#%d %s", p.Issue.Index, p.Issue.Title)
- var text, typ, titleLink string
- color := yellowColor
+ var typ, titleLink string
+ color = yellowColor
if p.IsPull {
typ = "pull request"
- titleLink = linkFormatter(p.Comment.PRURL, issueTitle)
+ titleLink = wpf.linkFormatter(p.Comment.PRURL, issueTitle)
} else {
typ = "issue"
- titleLink = linkFormatter(p.Comment.IssueURL, issueTitle)
+ titleLink = wpf.linkFormatter(p.Comment.IssueURL, issueTitle)
}
switch p.Action {
case api.HookIssueCommentCreated:
- text = fmt.Sprintf("[%s] New comment on %s %s", p.Repository.FullName, typ, titleLink)
+ text = fmt.Sprintf("New comment on %s %s", typ, titleLink)
if p.IsPull {
color = greenColorLight
} else {
color = orangeColorLight
}
case api.HookIssueCommentEdited:
- text = fmt.Sprintf("[%s] Comment edited on %s %s", p.Repository.FullName, typ, titleLink)
+ text = fmt.Sprintf("Comment edited on %s %s", typ, titleLink)
case api.HookIssueCommentDeleted:
- text = fmt.Sprintf("[%s] Comment deleted on %s %s", p.Repository.FullName, typ, titleLink)
+ text = fmt.Sprintf("Comment deleted on %s %s", typ, titleLink)
color = redColor
}
- if withSender {
- text += fmt.Sprintf(" by %s", nameFormatter(p.Sender.UserName))
+ if wpf.withRepoName {
+ text = fmt.Sprintf("[%s] %s", p.Repository.FullName, text)
+ }
+ if wpf.withSender {
+ text += fmt.Sprintf(" by %s", wpf.nameFormatter(p.Sender.UserName))
}
return text, issueTitle, color
}
-func getPackagePayloadInfo(p *api.PackagePayload, linkFormatter linkFormatter, nameFormatter nameFormatter, withSender bool) (text string, color int) {
- refLink := linkFormatter(p.Package.HTMLURL, p.Package.Name+":"+p.Package.Version)
+func (wpf webhookPayloadFormatter) getPackagePayloadInfo(p *api.PackagePayload) (text string, color int) {
+ refLink := wpf.linkFormatter(p.Package.HTMLURL, p.Package.Name+":"+p.Package.Version)
switch p.Action {
case api.HookPackageCreated:
@@ -305,16 +321,16 @@ func getPackagePayloadInfo(p *api.PackagePayload, linkFormatter linkFormatter, n
text = fmt.Sprintf("Package deleted: %s", refLink)
color = redColor
}
- if withSender {
- text += fmt.Sprintf(" by %s", nameFormatter(p.Sender.UserName))
+ if wpf.withSender {
+ text += fmt.Sprintf(" by %s", wpf.nameFormatter(p.Sender.UserName))
}
return text, color
}
-func getActionPayloadInfo(p *api.ActionPayload, linkFormatter linkFormatter) (text string, color int) {
- runLink := linkFormatter(p.Run.HTMLURL, p.Run.Title)
- repoLink := linkFormatter(p.Run.Repo.HTMLURL, p.Run.Repo.FullName)
+func (wpf webhookPayloadFormatter) getActionPayloadInfo(p *api.ActionPayload) (text string, color int) {
+ runLink := wpf.linkFormatter(p.Run.HTMLURL, p.Run.Title)
+ repoLink := wpf.linkFormatter(p.Run.Repo.HTMLURL, p.Run.Repo.FullName)
switch p.Action {
case api.HookActionFailure:
diff --git a/services/webhook/general_test.go b/services/webhook/general_test.go
index 478fc003a1..d5b5bb3d62 100644
--- a/services/webhook/general_test.go
+++ b/services/webhook/general_test.go
@@ -4,6 +4,7 @@
package webhook
import (
+ "fmt"
"strings"
"testing"
@@ -12,6 +13,13 @@ import (
"github.com/stretchr/testify/assert"
)
+var generalTestPayloadFormatter = webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: true,
+ withRepoName: true,
+}
+
func createTestPayload() *api.CreatePayload {
return &api.CreatePayload{
Sha: "2020558fe2e34debb818a514715839cabd25e777",
@@ -476,7 +484,7 @@ func TestGetIssuesPayloadInfo(t *testing.T) {
for i, c := range cases {
p.Action = c.action
- text, issueTitle, attachmentText, color := getIssuesPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, issueTitle, attachmentText, color := generalTestPayloadFormatter.getIssuesPayloadInfo(p)
assert.Equal(t, c.text, text, "case %d", i)
assert.Equal(t, c.issueTitle, issueTitle, "case %d", i)
assert.Equal(t, c.attachmentText, attachmentText, "case %d", i)
@@ -575,7 +583,7 @@ func TestGetPullRequestPayloadInfo(t *testing.T) {
for i, c := range cases {
p.Action = c.action
- text, issueTitle, attachmentText, color := getPullRequestPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, issueTitle, attachmentText, color := generalTestPayloadFormatter.getPullRequestPayloadInfo(p)
assert.Equal(t, c.text, text, "case %d", i)
assert.Equal(t, c.issueTitle, issueTitle, "case %d", i)
assert.Equal(t, c.attachmentText, attachmentText, "case %d", i)
@@ -594,19 +602,19 @@ func TestGetWikiPayloadInfo(t *testing.T) {
}{
{
api.HookWikiCreated,
- "[test/repo] New wiki page 'index' (Wiki change comment) by user1",
+ "[test/repo] New wiki page \"index\" (Wiki change comment) by user1",
greenColor,
"index",
},
{
api.HookWikiEdited,
- "[test/repo] Wiki page 'index' edited (Wiki change comment) by user1",
+ "[test/repo] Wiki page \"index\" edited (Wiki change comment) by user1",
yellowColor,
"index",
},
{
api.HookWikiDeleted,
- "[test/repo] Wiki page 'index' deleted by user1",
+ "[test/repo] Wiki page \"index\" deleted by user1",
redColor,
"index",
},
@@ -614,7 +622,7 @@ func TestGetWikiPayloadInfo(t *testing.T) {
for i, c := range cases {
p.Action = c.action
- text, color, link := getWikiPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, color, link := generalTestPayloadFormatter.getWikiPayloadInfo(p, true)
assert.Equal(t, c.text, text, "case %d", i)
assert.Equal(t, c.color, color, "case %d", i)
assert.Equal(t, c.link, link, "case %d", i)
@@ -648,7 +656,7 @@ func TestGetReleasePayloadInfo(t *testing.T) {
for i, c := range cases {
p.Action = c.action
- text, color := getReleasePayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, color := generalTestPayloadFormatter.getReleasePayloadInfo(p)
assert.Equal(t, c.text, text, "case %d", i)
assert.Equal(t, c.color, color, "case %d", i)
}
@@ -685,7 +693,7 @@ func TestGetIssueCommentPayloadInfo(t *testing.T) {
for i, c := range cases {
p.Action = c.action
- text, issueTitle, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, noneNameFormatter, true)
+ text, issueTitle, color := generalTestPayloadFormatter.getIssueCommentPayloadInfo(p)
assert.Equal(t, c.text, text, "case %d", i)
assert.Equal(t, c.issueTitle, issueTitle, "case %d", i)
assert.Equal(t, c.color, color, "case %d", i)
@@ -719,8 +727,82 @@ func TestGetActionPayloadInfo(t *testing.T) {
for i, c := range cases {
p.Action = c.action
- text, color := getActionPayloadInfo(p, noneLinkFormatter)
+ text, color := generalTestPayloadFormatter.getActionPayloadInfo(p)
assert.Equal(t, c.text, text, "case %d", i)
assert.Equal(t, c.color, color, "case %d", i)
}
}
+
+func TestWebhookPayloadTextFormatter(t *testing.T) {
+ p := issueTestPayload()
+ p.Action = api.HookIssueOpened
+
+ formatterCases := []struct {
+ formatter webhookPayloadFormatter
+ expectedText string
+ }{
+ {
+ formatter: webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: false,
+ withRepoName: false,
+ },
+ expectedText: "Issue opened: #2 crash",
+ },
+ {
+ formatter: webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: true,
+ withRepoName: false,
+ },
+ expectedText: "Issue opened: #2 crash by user1",
+ },
+ {
+ formatter: webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: false,
+ withRepoName: true,
+ },
+ expectedText: "[test/repo] Issue opened: #2 crash",
+ },
+ {
+ formatter: webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: true,
+ withRepoName: true,
+ },
+ expectedText: "[test/repo] Issue opened: #2 crash by user1",
+ },
+ {
+ formatter: webhookPayloadFormatter{
+ linkFormatter: func(url, text string) string {
+ return fmt.Sprintf("%s @ %s", text, url)
+ },
+ nameFormatter: noneNameFormatter,
+ withSender: true,
+ withRepoName: true,
+ },
+ expectedText: "[test/repo] Issue opened: #2 crash @ http://localhost:3000/test/repo/issues/2 by user1",
+ },
+ {
+ formatter: webhookPayloadFormatter{
+ linkFormatter: noneLinkFormatter,
+ nameFormatter: func(name string) string {
+ return fmt.Sprintf("!!! @%s !!!", name)
+ },
+ withSender: true,
+ withRepoName: false,
+ },
+ expectedText: "Issue opened: #2 crash by !!! @user1 !!!",
+ },
+ }
+
+ for i, c := range formatterCases {
+ text, _, _, _ := c.formatter.getIssuesPayloadInfo(p)
+ assert.Equal(t, c.expectedText, text, "case %d", i)
+ }
+}
diff --git a/services/webhook/matrix.go b/services/webhook/matrix.go
index a4bd774f50..a32a2c4825 100644
--- a/services/webhook/matrix.go
+++ b/services/webhook/matrix.go
@@ -127,6 +127,13 @@ type MatrixPayload struct {
var _ shared.PayloadConvertor[MatrixPayload] = matrixConvertor{}
+var matrixPayloadFormatter = webhookPayloadFormatter{
+ linkFormatter: htmlLinkFormatter,
+ nameFormatter: noneNameFormatter,
+ withSender: true,
+ withRepoName: true,
+}
+
type matrixConvertor struct {
MsgType string
}
@@ -169,28 +176,28 @@ func (m matrixConvertor) Fork(p *api.ForkPayload) (MatrixPayload, error) {
// Issue implements payloadConvertor Issue method
func (m matrixConvertor) Issue(p *api.IssuePayload) (MatrixPayload, error) {
- text, _, _, _ := getIssuesPayloadInfo(p, htmlLinkFormatter, noneNameFormatter, true)
+ text, _, _, _ := matrixPayloadFormatter.getIssuesPayloadInfo(p)
return m.newPayload(text)
}
// IssueComment implements payloadConvertor IssueComment method
func (m matrixConvertor) IssueComment(p *api.IssueCommentPayload) (MatrixPayload, error) {
- text, _, _ := getIssueCommentPayloadInfo(p, htmlLinkFormatter, noneNameFormatter, true)
+ text, _, _ := matrixPayloadFormatter.getIssueCommentPayloadInfo(p)
return m.newPayload(text)
}
// Wiki implements payloadConvertor Wiki method
func (m matrixConvertor) Wiki(p *api.WikiPayload) (MatrixPayload, error) {
- text, _, _ := getWikiPayloadInfo(p, htmlLinkFormatter, noneNameFormatter, true)
+ text, _, _ := matrixPayloadFormatter.getWikiPayloadInfo(p, true)
return m.newPayload(text)
}
// Release implements payloadConvertor Release method
func (m matrixConvertor) Release(p *api.ReleasePayload) (MatrixPayload, error) {
- text, _ := getReleasePayloadInfo(p, htmlLinkFormatter, noneNameFormatter, true)
+ text, _ := matrixPayloadFormatter.getReleasePayloadInfo(p)
return m.newPayload(text)
}
@@ -223,7 +230,7 @@ func (m matrixConvertor) Push(p *api.PushPayload) (MatrixPayload, error) {
// PullRequest implements payloadConvertor PullRequest method
func (m matrixConvertor) PullRequest(p *api.PullRequestPayload) (MatrixPayload, error) {
- text, _, _, _ := getPullRequestPayloadInfo(p, htmlLinkFormatter, noneNameFormatter, true)
+ text, _, _, _ := matrixPayloadFormatter.getPullRequestPayloadInfo(p)
return m.newPayload(text)
}
@@ -275,7 +282,7 @@ func (m matrixConvertor) Package(p *api.PackagePayload) (MatrixPayload, error) {
}
func (m matrixConvertor) Action(p *api.ActionPayload) (MatrixPayload, error) {
- text, _ := getActionPayloadInfo(p, htmlLinkFormatter)
+ text, _ := matrixPayloadFormatter.getActionPayloadInfo(p)
return m.newPayload(text)
}
diff --git a/services/webhook/matrix_test.go b/services/webhook/matrix_test.go
index 1644def0e1..a160dac718 100644
--- a/services/webhook/matrix_test.go
+++ b/services/webhook/matrix_test.go
@@ -159,24 +159,24 @@ func TestMatrixPayload(t *testing.T) {
require.NoError(t, err)
require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] New wiki page '[index](http://localhost:3000/test/repo/wiki/index)' (Wiki change comment) by user1", pl.Body)
- assert.Equal(t, `[test/repo] New wiki page 'index' (Wiki change comment) by user1`, pl.FormattedBody)
+ assert.Equal(t, "[test/repo] New wiki page \"[index](http://localhost:3000/test/repo/wiki/index)\" (Wiki change comment) by user1", pl.Body)
+ assert.Equal(t, `[test/repo] New wiki page "index" (Wiki change comment) by user1`, pl.FormattedBody)
p.Action = api.HookWikiEdited
pl, err = mc.Wiki(p)
require.NoError(t, err)
require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] Wiki page '[index](http://localhost:3000/test/repo/wiki/index)' edited (Wiki change comment) by user1", pl.Body)
- assert.Equal(t, `[test/repo] Wiki page 'index' edited (Wiki change comment) by user1`, pl.FormattedBody)
+ assert.Equal(t, "[test/repo] Wiki page \"[index](http://localhost:3000/test/repo/wiki/index)\" edited (Wiki change comment) by user1", pl.Body)
+ assert.Equal(t, `[test/repo] Wiki page "index" edited (Wiki change comment) by user1`, pl.FormattedBody)
p.Action = api.HookWikiDeleted
pl, err = mc.Wiki(p)
require.NoError(t, err)
require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] Wiki page '[index](http://localhost:3000/test/repo/wiki/index)' deleted by user1", pl.Body)
- assert.Equal(t, `[test/repo] Wiki page 'index' deleted by user1`, pl.FormattedBody)
+ assert.Equal(t, "[test/repo] Wiki page \"[index](http://localhost:3000/test/repo/wiki/index)\" deleted by user1", pl.Body)
+ assert.Equal(t, `[test/repo] Wiki page "index" deleted by user1`, pl.FormattedBody)
})
t.Run("Release", func(t *testing.T) {
diff --git a/services/webhook/msteams.go b/services/webhook/msteams.go
index 43ab588230..578062b846 100644
--- a/services/webhook/msteams.go
+++ b/services/webhook/msteams.go
@@ -18,6 +18,9 @@ import (
webhook_module "forgejo.org/modules/webhook"
"forgejo.org/services/forms"
"forgejo.org/services/webhook/shared"
+
+ "golang.org/x/text/cases"
+ "golang.org/x/text/language"
)
type msteamsHandler struct{}
@@ -44,60 +47,274 @@ func (msteamsHandler) UnmarshalForm(bind func(any)) forms.WebhookForm {
}
type (
- // MSTeamsFact for Fact Structure
+ // MSTeamsAction defines an action for an Adaptive Card, for example, opening a URL.
+ MSTeamsAction struct {
+ Type string `json:"type"` // e.g. "Action.OpenUrl" or "Action.ToggleVisibility"
+ Title string `json:"title,omitempty"` // The button title
+ URL string `json:"url,omitempty"` // The URL to open
+ TargetElements []string `json:"targetElements,omitempty"` // For Action.ToggleVisibility
+ }
+
+ // MSTeamsTextBlock defines the Adaptive Card TextBlock element.
+ MSTeamsTextBlock struct {
+ Type string `json:"type"` // Must be "TextBlock"
+ Text string `json:"text"` // The text content
+ Size string `json:"size,omitempty"` // e.g., "Small", "Default", "Medium", "Large", "ExtraLarge"
+ Weight string `json:"weight,omitempty"` // e.g., "Lighter", "Default", "Bolder"
+ Color string `json:"color,omitempty"` // text color, e.g., "Default", "Dark", "Light", "Accent", "Good", "Warning", "Attention"
+ IsSubtle *bool `json:"isSubtle,omitempty"` // Optional: makes text less prominent (nil->omitted)
+ Wrap *bool `json:"wrap,omitempty"` // Optional: enables text wrapping (nil->omitted)
+ MaxLines int `json:"maxLines,omitempty"` // Optional: maximum number of lines to display
+ HorizAlign string `json:"horizontalAlignment,omitempty"` // e.g., "Left", "Center", "Right"
+ Spacing string `json:"spacing,omitempty"` // e.g., "None", "Small", "Default", "Medium", "Large", "ExtraLarge", "Padding"
+ FontType string `json:"fontType,omitempty"` // e.g., "Default", "Monospace"
+ Style string `json:"style,omitempty"` // e.g., "default","columnHeader","heading"
+ SelectAction *MSTeamsAction `json:"selectAction,omitempty"` // Optional: action when the TextBlock is clicked
+ IsVisible *bool `json:"isVisible,omitempty"` // Optional: is visible or not, default is true (nil->omitted)
+ }
+
+ MSTeamsBadge struct {
+ Type string `json:"type"` // Must be "Badge"
+ Text string `json:"text,omitempty"` // The text content. Either this or Icon should be present
+ Icon string `json:"icon,omitempty"` // Icon to display. Either this or Text should be present
+ Appearance string `json:"appearance,omitempty"` // e.g., "Filled", "Tint"
+ IconPosition string `json:"iconPosition,omitempty"` // e.g., "Before", "After"
+ Shape string `json:"shape,omitempty"` // e.g., "Square", "Rounded", "Circular"
+ Size string `json:"size,omitempty"` // e.g., "Medium", "Large", "ExtraLarge"
+ Style string `json:"style,omitempty"` // e.g., "Default", "Subtle", "Informative", "Accent", "Good", "Attention", "Warning"
+ Spacing string `json:"spacing,omitempty"` // e.g., "None", "Small", "Default", "Medium", "Large", "ExtraLarge", "Padding"
+ SelectAction *MSTeamsAction `json:"selectAction,omitempty"` // Optional: action when the IconRun is clicked
+ ID string `json:"id,omitempty"`
+ }
+
+ // MSTeamsRickTextBlock defines the Adaptive Card RichTextBlock element, along with its contents (TextRun, IconRun, ImageRun)
+ MSTeamsRichTextBlock struct {
+ Type string `json:"type"` // Must be "RichTextBlock"
+ Inlines []any `json:"inlines"` // Content, should be array of either TextRun, IconRun, ImageRun
+ LabelFor string `json:"labelFor,omitempty"` // Optional: label for the RichTextBlock
+ HorizAlign string `json:"horizontalAlignment,omitempty"` // e.g., "Left", "Center", "Right"
+ Spacing string `json:"spacing,omitempty"` // e.g., "None", "Small", "Default", "Medium", "Large", "ExtraLarge", "Padding"
+ ID string `json:"id,omitempty"` // ID
+ IsVisible *bool `json:"isVisible,omitempty"` // Optional: is visible or not, default is true (nil->omitted)
+ }
+
+ MSTeamsRichTextTextRun struct {
+ Type string `json:"type"` // Must be "TextRun"
+ Text string `json:"text"` // The text content
+ Highlight *bool `json:"highlight,omitempty"`
+ Italic *bool `json:"italic,omitempty"`
+ Strikethrough *bool `json:"strikethrough,omitempty"`
+ Underline *bool `json:"underline,omitempty"`
+ Color string `json:"color,omitempty"` // text color, e.g., "Default", "Dark", "Light", "Accent", "Good", "Warning", "Attention"
+ FontType string `json:"fontType,omitempty"` // e.g., "Default", "Monospace"
+ IsSubtle *bool `json:"isSubtle,omitempty"` // Optional: makes text less prominent (nil->omitted)
+ Size string `json:"size,omitempty"` // e.g., "Small", "Default", "Medium", "Large", "ExtraLarge"
+ Weight string `json:"weight,omitempty"` // e.g., "Lighter", "Default", "Bolder"
+ SelectAction *MSTeamsAction `json:"selectAction,omitempty"` // Optional: action when the TextRun is clicked
+ ID string `json:"id,omitempty"`
+ }
+
+ MSTeamsIcon struct {
+ Type string `json:"type"` // Must be "Icon"
+ Name string `json:"name"` // The icon name to display
+ Color string `json:"color,omitempty"` // text color, e.g., "Default", "Dark", "Light", "Accent", "Good", "Warning", "Attention"
+ Size string `json:"size,omitempty"` // e.g., "xxSmall", "xSmall", "Small", "Standard", "Medium", "Large", "xLarge", "xxLarge"
+ Style string `json:"style,omitempty"` // e.g., "Regular", "Filled"
+ SelectAction *MSTeamsAction `json:"selectAction,omitempty"` // Optional: action when the IconRun is clicked
+ ID string `json:"id,omitempty"`
+ }
+
+ // MSTeamsImage defines the Adaptive Card Image element.
+ MSTeamsImage struct {
+ Type string `json:"type"` // Must be "Image"
+ URL string `json:"url"` // URL of the image
+ Alt string `json:"altText"` // Alt text for the image
+ Size string `json:"size,omitempty"` // e.g., "Auto", "Stretch", "Small", "Medium", "Large"
+ Style string `json:"style,omitempty"` // e.g., "Default", "Person", "RoundedCorners"
+ SelectAction *MSTeamsAction `json:"selectAction,omitempty"` // Optional: action when the columnset is clicked
+ }
+
+ // MSTeamsColumn defines a column in an Adaptive Card ColumnSet.
+ MSTeamsColumn struct {
+ Type string `json:"type"` // Must be "Column"
+ Items []any `json:"items,omitempty"` // Array of card elements (TextBlock, Image, etc.)
+ Width any `json:"width,omitempty"` // "auto", "stretch", or number/string for fixed width
+ Style string `json:"style,omitempty"` // e.g., "default", "emphasis"
+ VerticalAlign string `json:"verticalContentAlignment,omitempty"` // "Top", "Center", "Bottom"
+ Bleed *bool `json:"bleed,omitempty"` // Optional: allow content to bleed outside padding (nil->omitted)
+ Separator *bool `json:"separator,omitempty"` // Optional: draw a separating line (nil->omitted)
+ Spacing string `json:"spacing,omitempty"` // e.g., "none", "small", "default", "medium", "large", "extraLarge", "padding"
+ SelectAction *MSTeamsAction `json:"selectAction,omitempty"` // Optional: action when column is clicked
+ IsVisible *bool `json:"isVisible,omitempty"` // Optional: is visible or not, default is true (nil->omitted)
+ }
+
+ // MSTeamsColumnSet defines a row of columns in an Adaptive Card.
+ MSTeamsColumnSet struct {
+ Type string `json:"type"` // Must be "ColumnSet"
+ Columns []MSTeamsColumn `json:"columns"` // Array of columns
+ Spacing string `json:"spacing,omitempty"` // e.g., "none", "small", "default", "medium", "large", "extraLarge", "padding"
+ Separator *bool `json:"separator,omitempty"` // Optional: draw a separating line (nil->omitted)
+ Bleed *bool `json:"bleed,omitempty"` // Optional: allow content to bleed outside padding (nil->omitted)
+ SelectAction *MSTeamsAction `json:"selectAction,omitempty"` // Optional: action when columnset is clicked
+ IsVisible *bool `json:"isVisible,omitempty"` // Optional: is visible or not, default is true (nil->omitted)
+ }
+
+ // MSTeamsFact represents a fact in an Adaptive Card FactSet.
MSTeamsFact struct {
- Name string `json:"name"`
+ Title string `json:"title"`
Value string `json:"value"`
}
- // MSTeamsSection is a MessageCard section
- MSTeamsSection struct {
- ActivityTitle string `json:"activityTitle"`
- ActivitySubtitle string `json:"activitySubtitle"`
- ActivityImage string `json:"activityImage"`
- Facts []MSTeamsFact `json:"facts"`
- Text string `json:"text"`
+ // MSTeamsFactSet represents the Adaptive Card FactSet element.
+ MSTeamsFactSet struct {
+ Type string `json:"type"` // Must be "FactSet"
+ Facts []MSTeamsFact `json:"facts"` // List of facts
+ Separator *bool `json:"separator,omitempty"` // Optional: draw a separating line (nil->omitted)
+ Spacing string `json:"spacing,omitempty"` // e.g., "None", "ExtraSmall", "Small", "Default", "Medium", "Large", "ExtraLarge", "Padding"
}
- // MSTeamsAction is an action (creates buttons, links etc)
- MSTeamsAction struct {
- Type string `json:"@type"`
- Name string `json:"name"`
- Targets []MSTeamsActionTarget `json:"targets,omitempty"`
+ // MSTeamsContainer corresponds to an Adaptive Card container.
+ MSTeamsContainer struct {
+ Type string `json:"type"` // Must be "Container"
+ Items []any `json:"items,omitempty"` // Array of card elements (TextBlock, Image, FactSet, etc.)
+ ShowBorder *bool `json:"showBorder,omitempty"` // Optional: draw a border around the container (nil->omitted)
+ RoundedCorners *bool `json:"roundedCorners,omitempty"` // Optional: round the corners of the container (nil->omitted)
+ Spacing string `json:"spacing,omitempty"` // e.g., "None", "ExtraSmall", "Small", "Default", "Medium", "Large", "ExtraLarge", "Padding"
+ Bleed *bool `json:"bleed,omitempty"` // Optional: allow content to bleed outside padding (nil->omitted)
+ Style string `json:"style,omitempty"` // color theme of the container, e.g. "default", "emphasis", "accent", "good", "attention", "warning"
+ ID string `json:"id,omitempty"` // ID
+ IsVisible *bool `json:"isVisible,omitempty"` // Optional: is visible or not, default is true (nil->omitted)
+ VerticalAlign string `json:"verticalContentAlignment,omitempty"` // "Top", "Center", "Bottom"
}
- // MSTeamsActionTarget is the actual link to follow, etc
- MSTeamsActionTarget struct {
- Os string `json:"os"`
- URI string `json:"uri"`
+ MSTeamsOptions struct {
+ Width string `json:"width"` // use "Full" to make card full width
}
- // MSTeamsPayload is the parent object
+ // MSTeamsPayload represents the Adaptive Card payload.
+ // Adaptive Cards use "body" for visual elements and "actions" for interactive buttons.
MSTeamsPayload struct {
- Type string `json:"@type"`
- Context string `json:"@context"`
- ThemeColor string `json:"themeColor"`
- Title string `json:"title"`
- Summary string `json:"summary"`
- Sections []MSTeamsSection `json:"sections"`
- PotentialAction []MSTeamsAction `json:"potentialAction"`
+ Type string `json:"type"` // Must be "AdaptiveCard"
+ Schema string `json:"$schema"` // e.g., "http://adaptivecards.io/schemas/adaptive-card.json"
+ Version string `json:"version"` // e.g., "1.5"
+ MsTeams MSTeamsOptions `json:"msteams"` // Optional: settings for Microsoft Teams
+ Body []MSTeamsContainer `json:"body"` // Array of containers (sections)
+ Actions []MSTeamsAction `json:"actions,omitempty"` // Optional array of actions
+ Style string `json:"style,omitempty"` // color theme of the card, e.g. "default", "emphasis", "accent", "good", "attention", "warning"
}
)
+var (
+ defaultStyle = "default" // default colour
+ emphasisStyle = "emphasis" // darker
+ accentStyle = "accent" // blue-purple
+ goodStyle = "good" // green
+ attentionStyle = "attention" // red
+ warningStyle = "warning" // yellow
+ // informativeStyle = "informative" // gray with white text
+ // subtleStyle = "subtle" // gray with dark text
+)
+
+func capitalise(s string) string {
+ caser := cases.Title(language.English)
+ return caser.String(strings.ToLower(s))
+}
+
+func markdownLinkFormatter(url, text string) string {
+ if url == "" {
+ return text
+ }
+ return fmt.Sprintf(`[%s](%s)`, text, url)
+}
+
+var msTeamsPayloadFormatter = webhookPayloadFormatter{
+ nameFormatter: noneNameFormatter,
+ linkFormatter: noneLinkFormatter,
+ withSender: false,
+ withRepoName: false,
+}
+
+func makeBadgeRow(badgeText, badgeIcon, badgeStyle string, refInfo ...string) MSTeamsContainer {
+ extraRefInfoText := []any{}
+ for _, info := range refInfo {
+ extraRefInfoText = append(extraRefInfoText, MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: info,
+ Size: "Small",
+ IsSubtle: new(true),
+ Spacing: "None",
+ })
+ }
+
+ return MSTeamsContainer{
+ Type: "Container",
+ VerticalAlign: "Center",
+ Items: []any{
+ MSTeamsColumnSet{
+ Type: "ColumnSet",
+ Columns: []MSTeamsColumn{
+ {
+ Type: "Column",
+ Width: "auto",
+ Items: []any{
+ MSTeamsBadge{
+ Type: "Badge",
+ Size: "Large",
+ Icon: badgeIcon,
+ Text: badgeText,
+ Style: badgeStyle,
+ },
+ },
+ },
+ {
+ Type: "Column",
+ Width: "stretch",
+ Items: extraRefInfoText,
+ },
+ },
+ },
+ },
+ }
+}
+
+func pullRequestBranchInfo(p *api.PullRequestPayload) string {
+ if p == nil || p.PullRequest == nil {
+ return ""
+ }
+
+ headRef, baseRef := "", ""
+ if p.PullRequest.Head != nil {
+ headRef = p.PullRequest.Head.Ref
+ }
+ if p.PullRequest.Base != nil {
+ baseRef = p.PullRequest.Base.Ref
+ }
+
+ switch {
+ case headRef == "" && baseRef == "":
+ return ""
+ case headRef == "":
+ return baseRef
+ case baseRef == "":
+ return headRef
+ default:
+ return fmt.Sprintf("%s → %s", headRef, baseRef)
+ }
+}
+
// Create implements PayloadConvertor Create method
func (m msteamsConvertor) Create(p *api.CreatePayload) (MSTeamsPayload, error) {
// created tag/branch
refName := git.RefName(p.Ref).ShortName()
- title := fmt.Sprintf("[%s] %s %s created", p.Repo.FullName, p.RefType, refName)
+ actionTitle := fmt.Sprintf("%s created: %s", capitalise(p.RefType), refName)
return createMSTeamsPayload(
p.Repo,
p.Sender,
- title,
- "",
+ actionTitle,
+ nil,
p.Repo.HTMLURL+"/src/"+util.PathEscapeSegments(refName),
- greenColor,
- &MSTeamsFact{fmt.Sprintf("%s:", p.RefType), refName},
+ goodStyle,
), nil
}
@@ -105,283 +322,764 @@ func (m msteamsConvertor) Create(p *api.CreatePayload) (MSTeamsPayload, error) {
func (m msteamsConvertor) Delete(p *api.DeletePayload) (MSTeamsPayload, error) {
// deleted tag/branch
refName := git.RefName(p.Ref).ShortName()
- title := fmt.Sprintf("[%s] %s %s deleted", p.Repo.FullName, p.RefType, refName)
+ actionTitle := fmt.Sprintf("%s deleted: %s", capitalise(p.RefType), refName)
return createMSTeamsPayload(
p.Repo,
p.Sender,
- title,
- "",
- p.Repo.HTMLURL+"/src/"+util.PathEscapeSegments(refName),
- yellowColor,
- &MSTeamsFact{fmt.Sprintf("%s:", p.RefType), refName},
+ actionTitle,
+ nil,
+ p.Repo.HTMLURL,
+ attentionStyle,
), nil
}
// Fork implements PayloadConvertor Fork method
func (m msteamsConvertor) Fork(p *api.ForkPayload) (MSTeamsPayload, error) {
- title := fmt.Sprintf("%s is forked to %s", p.Forkee.FullName, p.Repo.FullName)
+ actionTitle := fmt.Sprintf("%s is forked to %s", markdownLinkFormatter(p.Forkee.HTMLURL, p.Forkee.FullName), p.Repo.FullName)
return createMSTeamsPayload(
p.Repo,
p.Sender,
- title,
- "",
+ actionTitle,
+ nil,
p.Repo.HTMLURL,
- greenColor,
- &MSTeamsFact{"Forkee:", p.Forkee.FullName},
+ accentStyle,
), nil
}
// Push implements PayloadConvertor Push method
func (m msteamsConvertor) Push(p *api.PushPayload) (MSTeamsPayload, error) {
var (
- branchName = git.RefName(p.Ref).ShortName()
- commitDesc string
+ branchName = git.RefName(p.Ref).ShortName()
+ actionTitle string
)
- var titleLink string
+ var diffLink string
if p.TotalCommits == 1 {
- commitDesc = "1 new commit"
- titleLink = p.Commits[0].URL
+ actionTitle = fmt.Sprintf("[%s] 1 new commit", branchName)
+ diffLink = p.Commits[0].URL
} else {
- commitDesc = fmt.Sprintf("%d new commits", p.TotalCommits)
- titleLink = p.CompareURL
+ actionTitle = fmt.Sprintf("[%s] %d new commits", branchName, p.TotalCommits)
+ diffLink = p.CompareURL
}
- if titleLink == "" {
- titleLink = p.Repo.HTMLURL + "/src/" + util.PathEscapeSegments(branchName)
+ if diffLink == "" {
+ diffLink = p.Repo.HTMLURL + "/src/" + util.PathEscapeSegments(branchName)
}
- title := fmt.Sprintf("[%s:%s] %s", p.Repo.FullName, branchName, commitDesc)
+ var shownCommits []any
+ var hiddenCommits []any
+ const limit = 5
- var text strings.Builder
- // for each commit, generate attachment text
for i, commit := range p.Commits {
- fmt.Fprintf(&text, "[%s](%s) %s - %s", commit.ID[:7], commit.URL,
- strings.TrimRight(commit.Message, "\r\n"), commit.Author.Name)
- // add linebreak to each commit but the last
- if i < len(p.Commits)-1 {
- text.WriteString("\n\n")
+ currentCommitTextBlock := MSTeamsColumnSet{
+ Type: "ColumnSet",
+ Columns: []MSTeamsColumn{
+ {
+ Type: "Column",
+ Width: "auto",
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: markdownLinkFormatter(commit.URL, commit.ID[:8]),
+ Size: "Small",
+ FontType: "Monospace",
+ },
+ },
+ },
+ {
+ Type: "Column",
+ Width: "stretch",
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: strings.TrimRight(commit.Message, "\r\n"),
+ Size: "Small",
+ MaxLines: 3,
+ },
+ },
+ },
+ },
}
+ if i < limit {
+ shownCommits = append(shownCommits, currentCommitTextBlock)
+ } else {
+ hiddenCommits = append(hiddenCommits, currentCommitTextBlock)
+ }
+ }
+
+ bodyContainer := MSTeamsContainer{
+ Type: "Container",
+ Style: emphasisStyle,
+ ShowBorder: new(true),
+ Items: shownCommits,
+ }
+
+ if len(hiddenCommits) > 0 {
+ var extraCommitText string
+ remaining := len(hiddenCommits)
+ if remaining == 1 {
+ extraCommitText = "*and 1 more commit*"
+ } else {
+ extraCommitText = fmt.Sprintf("*and %d more commits*", remaining)
+ }
+
+ // Expand control
+ showMore := MSTeamsContainer{
+ Type: "Container",
+ ID: "showMore",
+ Items: []any{
+ MSTeamsColumnSet{
+ Type: "ColumnSet",
+ SelectAction: &MSTeamsAction{
+ Type: "Action.ToggleVisibility",
+ TargetElements: []string{"showMore", "showLess", "hiddenCommits"},
+ },
+ Columns: []MSTeamsColumn{
+ {
+ Type: "Column",
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: extraCommitText,
+ Size: "Small",
+ },
+ },
+ Width: "auto",
+ },
+ {
+ Type: "Column",
+ Items: []any{
+ MSTeamsIcon{
+ Type: "Icon",
+ Name: "ChevronDown",
+ Size: "xxSmall",
+ },
+ },
+ Width: "auto",
+ },
+ },
+ },
+ },
+ }
+
+ // Hidden commit messages
+ hiddenBlock := MSTeamsContainer{
+ Type: "Container",
+ ID: "hiddenCommits",
+ Items: hiddenCommits,
+ IsVisible: new(false),
+ }
+
+ // Collapse control
+ showLess := MSTeamsContainer{
+ Type: "Container",
+ ID: "showLess",
+ IsVisible: new(false),
+ Items: []any{
+ MSTeamsColumnSet{
+ Type: "ColumnSet",
+ SelectAction: &MSTeamsAction{
+ Type: "Action.ToggleVisibility",
+ TargetElements: []string{"showMore", "showLess", "hiddenCommits"},
+ },
+ Columns: []MSTeamsColumn{
+ {
+ Type: "Column",
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: "Collapse",
+ Size: "Small",
+ },
+ },
+ Width: "auto",
+ },
+ {
+ Type: "Column",
+ Items: []any{
+ MSTeamsIcon{
+ Type: "Icon",
+ Name: "ChevronUp",
+ Size: "xxSmall",
+ },
+ },
+ Width: "auto",
+ },
+ },
+ },
+ },
+ }
+
+ bodyContainer.Items = append(bodyContainer.Items, showMore, hiddenBlock, showLess)
}
return createMSTeamsPayload(
p.Repo,
p.Sender,
- title,
- text.String(),
- titleLink,
- greenColor,
- &MSTeamsFact{"Commit count:", fmt.Sprintf("%d", p.TotalCommits)},
+ actionTitle,
+ []MSTeamsContainer{bodyContainer},
+ diffLink,
+ defaultStyle,
), nil
}
// Issue implements PayloadConvertor Issue method
func (m msteamsConvertor) Issue(p *api.IssuePayload) (MSTeamsPayload, error) {
- title, _, attachmentText, color := getIssuesPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ actionTitle, _, attachmentText, _ := msTeamsPayloadFormatter.getIssuesPayloadInfo(p)
+
+ badgeStyle := attentionStyle
+ if p.Action == api.HookIssueReOpened {
+ badgeStyle = warningStyle
+ } else if p.Issue.State == api.StateOpen {
+ badgeStyle = goodStyle
+ }
+
+ bodySections := []MSTeamsContainer{
+ makeBadgeRow(capitalise(string(p.Issue.State)), "Target", badgeStyle, fmt.Sprintf("%s#%d", p.Repository.FullName, p.Issue.Index)),
+ }
+
+ if attachmentText != "" {
+ bodySections = append(bodySections, MSTeamsContainer{
+ Type: "Container",
+ Style: emphasisStyle,
+ ShowBorder: new(true),
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: attachmentText,
+ Wrap: new(true),
+ },
+ },
+ })
+ }
+
+ factSet := MSTeamsFactSet{
+ Type: "FactSet",
+ Facts: []MSTeamsFact{},
+ Separator: new(true),
+ }
+
+ if p.Issue.Ref != "" && (p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Ref",
+ Value: p.Issue.Ref,
+ })
+ }
+
+ if len(p.Issue.Labels) > 0 &&
+ (p.Action == api.HookIssueLabelUpdated || p.Action == api.HookIssueLabelCleared || p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ list := make([]string, len(p.Issue.Labels))
+ for i, label := range p.Issue.Labels {
+ list[i] = label.Name
+ }
+ if len(list) > 0 {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Labels",
+ Value: strings.Join(list, ", "),
+ })
+ }
+ }
+
+ if len(p.Issue.Assignees) > 0 &&
+ (p.Action == api.HookIssueAssigned || p.Action == api.HookIssueUnassigned || p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ list := make([]string, len(p.Issue.Assignees))
+ for i, user := range p.Issue.Assignees {
+ list[i] = "@" + user.UserName
+ }
+ if len(list) > 0 {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Assignee",
+ Value: strings.Join(list, ", "),
+ })
+ }
+ }
+
+ if p.Issue.Milestone != nil &&
+ (p.Action == api.HookIssueMilestoned || p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Milestone",
+ Value: p.Issue.Milestone.Title,
+ })
+ }
+
+ if len(factSet.Facts) > 0 {
+ bodySections = append(bodySections, MSTeamsContainer{
+ Type: "Container",
+ Items: []any{
+ factSet,
+ },
+ })
+ }
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- attachmentText,
+ actionTitle,
+ bodySections,
p.Issue.HTMLURL,
- color,
- &MSTeamsFact{"Issue #:", fmt.Sprintf("%d", p.Issue.ID)},
+ defaultStyle,
), nil
}
// IssueComment implements PayloadConvertor IssueComment method
func (m msteamsConvertor) IssueComment(p *api.IssueCommentPayload) (MSTeamsPayload, error) {
- title, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ actionTitle, _, _ := msTeamsPayloadFormatter.getIssueCommentPayloadInfo(p)
+
+ var style string
+ switch p.Action {
+ case api.HookIssueCommentCreated:
+ style = goodStyle
+ case api.HookIssueCommentDeleted:
+ style = attentionStyle
+ default:
+ style = emphasisStyle
+ }
+
+ bodySections := []MSTeamsContainer{
+ {
+ Type: "Container",
+ Style: style,
+ ShowBorder: new(true),
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: "Comment",
+ Size: "Small",
+ Weight: "Bolder",
+ },
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: p.Comment.Body,
+ Wrap: new(true),
+ },
+ },
+ },
+ }
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- p.Comment.Body,
+ actionTitle,
+ bodySections,
p.Comment.HTMLURL,
- color,
- &MSTeamsFact{"Issue #:", fmt.Sprintf("%d", p.Issue.ID)},
+ defaultStyle,
), nil
}
// PullRequest implements PayloadConvertor PullRequest method
func (m msteamsConvertor) PullRequest(p *api.PullRequestPayload) (MSTeamsPayload, error) {
- title, _, attachmentText, color := getPullRequestPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ actionTitle, _, attachmentText, _ := msTeamsPayloadFormatter.getPullRequestPayloadInfo(p)
+
+ badgeStyle := attentionStyle
+ badgeState := "Closed"
+ badgeIcon := "BranchRequest"
+ if p.Action == api.HookIssueReOpened {
+ badgeStyle = warningStyle
+ badgeState = "Open"
+ } else if p.PullRequest.State == api.StateOpen {
+ badgeStyle = goodStyle
+ badgeState = "Open"
+ } else if p.PullRequest.HasMerged {
+ badgeStyle = accentStyle
+ badgeState = "Merged"
+ badgeIcon = "Branch"
+ }
+
+ bodySections := []MSTeamsContainer{
+ makeBadgeRow(
+ badgeState,
+ badgeIcon,
+ badgeStyle,
+ pullRequestBranchInfo(p),
+ fmt.Sprintf("%s#%d", p.Repository.FullName, p.PullRequest.Index),
+ ),
+ }
+
+ if attachmentText != "" {
+ bodySections = append(bodySections, MSTeamsContainer{
+ Type: "Container",
+ Style: emphasisStyle,
+ ShowBorder: new(true),
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: attachmentText,
+ Wrap: new(true),
+ },
+ },
+ })
+ }
+
+ factSet := MSTeamsFactSet{
+ Type: "FactSet",
+ Facts: []MSTeamsFact{},
+ Separator: new(true),
+ }
+
+ if len(p.PullRequest.Labels) > 0 &&
+ (p.Action == api.HookIssueLabelUpdated || p.Action == api.HookIssueLabelCleared || p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ list := make([]string, len(p.PullRequest.Labels))
+ for i, label := range p.PullRequest.Labels {
+ list[i] = label.Name
+ }
+ if len(list) > 0 {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Labels",
+ Value: strings.Join(list, ", "),
+ })
+ }
+ }
+
+ if len(p.PullRequest.Assignees) > 0 &&
+ (p.Action == api.HookIssueAssigned || p.Action == api.HookIssueUnassigned || p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ list := make([]string, len(p.PullRequest.Assignees))
+ for i, user := range p.PullRequest.Assignees {
+ list[i] = "@" + user.UserName
+ }
+ if len(list) > 0 {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Assignee",
+ Value: strings.Join(list, ", "),
+ })
+ }
+ }
+
+ if p.PullRequest.Milestone != nil &&
+ (p.Action == api.HookIssueMilestoned || p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Milestone",
+ Value: p.PullRequest.Milestone.Title,
+ })
+ }
+
+ if (p.PullRequest.RequestedReviewers != nil || p.PullRequest.RequestedReviewersTeams != nil) &&
+ (p.Action == api.HookIssueReviewRequested || p.Action == api.HookIssueReviewRequestRemoved || p.Action == api.HookIssueOpened || p.Action == api.HookIssueReOpened) {
+ list := make([]string, 0,
+ len(p.PullRequest.RequestedReviewers)+
+ len(p.PullRequest.RequestedReviewersTeams),
+ )
+ for _, u := range p.PullRequest.RequestedReviewers {
+ list = append(list, u.UserName)
+ }
+ for _, t := range p.PullRequest.RequestedReviewersTeams {
+ list = append(list, t.Name)
+ }
+ if len(list) > 0 {
+ factSet.Facts = append(factSet.Facts, MSTeamsFact{
+ Title: "Reviewers",
+ Value: strings.Join(list, ", "),
+ })
+ }
+ }
+
+ bodySections = append(bodySections, MSTeamsContainer{
+ Type: "Container",
+ Items: []any{factSet},
+ })
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- attachmentText,
+ actionTitle,
+ bodySections,
p.PullRequest.HTMLURL,
- color,
- &MSTeamsFact{"Pull request #:", fmt.Sprintf("%d", p.PullRequest.ID)},
+ defaultStyle,
), nil
}
// Review implements PayloadConvertor Review method
func (m msteamsConvertor) Review(p *api.PullRequestPayload, event webhook_module.HookEventType) (MSTeamsPayload, error) {
- var text, title string
- var color int
+ badgeStyle := attentionStyle
+ badgeState := "Closed"
+ badgeIcon := "BranchRequest"
+ if p.Action == api.HookIssueReOpened {
+ badgeStyle = warningStyle
+ badgeState = "Re-opened"
+ } else if p.PullRequest.State == api.StateOpen {
+ badgeStyle = goodStyle
+ badgeState = "Open"
+ } else if p.PullRequest.HasMerged {
+ badgeStyle = accentStyle
+ badgeState = "Merged"
+ badgeIcon = "Branch"
+ }
+
+ bodySections := []MSTeamsContainer{
+ makeBadgeRow(
+ badgeState,
+ badgeIcon,
+ badgeStyle,
+ pullRequestBranchInfo(p),
+ fmt.Sprintf("%s#%d", p.Repository.FullName, p.PullRequest.Index),
+ ),
+ }
+
+ var actionTitle, bodyStyle string
if p.Action == api.HookIssueReviewed {
action, err := parseHookPullRequestEventType(event)
if err != nil {
return MSTeamsPayload{}, err
}
- title = fmt.Sprintf("[%s] Pull request review %s: #%d %s", p.Repository.FullName, action, p.Index, p.PullRequest.Title)
- text = p.Review.Content
+ actionTitle = fmt.Sprintf("Pull request review %s: #%d %s", action, p.Index, p.PullRequest.Title)
switch event {
case webhook_module.HookEventPullRequestReviewApproved:
- color = greenColor
+ bodyStyle = goodStyle
case webhook_module.HookEventPullRequestReviewRejected:
- color = redColor
- case webhook_module.HookEventPullRequestReviewComment:
- color = greyColor
- default:
- color = yellowColor
+ bodyStyle = attentionStyle
}
+
+ bodySections = append(bodySections, MSTeamsContainer{
+ Type: "Container",
+ Style: bodyStyle,
+ ShowBorder: new(true),
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: p.Review.Content,
+ Wrap: new(true),
+ },
+ },
+ })
}
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- text,
+ actionTitle,
+ bodySections,
p.PullRequest.HTMLURL,
- color,
- &MSTeamsFact{"Pull request #:", fmt.Sprintf("%d", p.PullRequest.ID)},
+ defaultStyle,
), nil
}
// Repository implements PayloadConvertor Repository method
func (m msteamsConvertor) Repository(p *api.RepositoryPayload) (MSTeamsPayload, error) {
- var title, url string
- var color int
+ var actionTitle, url string
+ style := emphasisStyle
switch p.Action {
case api.HookRepoCreated:
- title = fmt.Sprintf("[%s] Repository created", p.Repository.FullName)
+ actionTitle = fmt.Sprintf("Repository created: %s", p.Repository.FullName)
url = p.Repository.HTMLURL
- color = greenColor
+ style = goodStyle
case api.HookRepoDeleted:
- title = fmt.Sprintf("[%s] Repository deleted", p.Repository.FullName)
- color = yellowColor
+ actionTitle = fmt.Sprintf("Repository deleted: %s", p.Repository.FullName)
+ style = attentionStyle
}
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- "",
- url,
- color,
+ actionTitle,
nil,
+ url,
+ style,
), nil
}
// Wiki implements PayloadConvertor Wiki method
func (m msteamsConvertor) Wiki(p *api.WikiPayload) (MSTeamsPayload, error) {
- title, color, _ := getWikiPayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ actionTitle, _, _ := msTeamsPayloadFormatter.getWikiPayloadInfo(p, false)
+
+ var style string
+
+ switch p.Action {
+ case api.HookWikiCreated:
+ style = goodStyle
+ case api.HookWikiEdited:
+ style = warningStyle
+ case api.HookWikiDeleted:
+ style = attentionStyle
+ }
+
+ var bodySections []MSTeamsContainer
+ if p.Action != api.HookWikiDeleted {
+ bodySections = append(bodySections, MSTeamsContainer{
+ Type: "Container",
+ Style: defaultStyle,
+ ShowBorder: new(true),
+ Items: []any{
+ MSTeamsFactSet{
+ Type: "FactSet",
+ Facts: []MSTeamsFact{
+ {
+ Title: "Comment",
+ Value: p.Comment,
+ },
+ },
+ },
+ },
+ })
+ }
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- "",
+ actionTitle,
+ bodySections,
p.Repository.HTMLURL+"/wiki/"+url.PathEscape(p.Page),
- color,
- &MSTeamsFact{"Repository:", p.Repository.FullName},
+ style,
), nil
}
// Release implements PayloadConvertor Release method
func (m msteamsConvertor) Release(p *api.ReleasePayload) (MSTeamsPayload, error) {
- title, color := getReleasePayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ actionTitle, color := msTeamsPayloadFormatter.getReleasePayloadInfo(p)
+ var style string
+
+ switch color {
+ case greenColor:
+ style = goodStyle
+ case yellowColor:
+ style = warningStyle
+ case redColor:
+ style = attentionStyle
+ }
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- "",
+ actionTitle,
+ nil,
p.Release.HTMLURL,
- color,
- &MSTeamsFact{"Tag:", p.Release.TagName},
+ style,
), nil
}
func (m msteamsConvertor) Package(p *api.PackagePayload) (MSTeamsPayload, error) {
- title, color := getPackagePayloadInfo(p, noneLinkFormatter, noneNameFormatter, false)
+ actionTitle, color := msTeamsPayloadFormatter.getPackagePayloadInfo(p)
+ var style string
+
+ switch color {
+ case greenColor:
+ style = goodStyle
+ case yellowColor:
+ style = warningStyle
+ case redColor:
+ style = attentionStyle
+ }
return createMSTeamsPayload(
p.Repository,
p.Sender,
- title,
- "",
+ actionTitle,
+ nil,
p.Package.HTMLURL,
- color,
- &MSTeamsFact{"Package:", p.Package.Name},
+ style,
), nil
}
func (m msteamsConvertor) Action(p *api.ActionPayload) (MSTeamsPayload, error) {
- title, color := getActionPayloadInfo(p, noneLinkFormatter)
+ var actionTitle string
+
+ var badgeStyle, badgeState string
+
+ switch p.Action {
+ case api.HookActionFailure:
+ actionTitle = fmt.Sprintf("Action run #%d failed: %s", p.Run.ID, p.Run.Title)
+ badgeStyle = attentionStyle
+ badgeState = "Failed"
+ case api.HookActionRecover:
+ actionTitle = fmt.Sprintf("Action run #%d recovered: %s", p.Run.ID, p.Run.Title)
+ badgeStyle = goodStyle
+ badgeState = "Success"
+ case api.HookActionSuccess:
+ actionTitle = fmt.Sprintf("Action run #%d succeeded: %s", p.Run.ID, p.Run.Title)
+ badgeStyle = goodStyle
+ badgeState = "Success"
+ }
+
+ bodySections := []MSTeamsContainer{
+ makeBadgeRow(
+ badgeState,
+ "PlayCircle",
+ badgeStyle,
+ fmt.Sprintf("On %s", p.Run.PrettyRef),
+ fmt.Sprintf("%s Run #%d", p.Run.Repo.FullName, p.Run.ID),
+ ),
+ }
// TODO: is TriggerUser correct here?
// if you'd like to test these proprietary services, see the discussion on: https://codeberg.org/forgejo/forgejo/pulls/7508
return createMSTeamsPayload(
p.Run.Repo,
p.Run.TriggerUser,
- title,
- "",
+ actionTitle,
+ bodySections,
p.Run.HTMLURL,
- color,
- // TODO: does this make any sense?
- &MSTeamsFact{"Action:", p.Run.Title},
+ defaultStyle,
), nil
}
-func createMSTeamsPayload(r *api.Repository, s *api.User, title, text, actionTarget string, color int, fact *MSTeamsFact) MSTeamsPayload {
- facts := make([]MSTeamsFact, 0, 2)
+func createMSTeamsPayload(r *api.Repository, s *api.User, actionTitle string, bodySections []MSTeamsContainer, actionTarget, style string) MSTeamsPayload {
+ // Update header adding the repository name and link
+ var updatedRepo string
if r != nil {
- facts = append(facts, MSTeamsFact{
- Name: "Repository:",
- Value: r.FullName,
- })
+ updatedRepo = fmt.Sprintf(" | [%s](%s)", r.FullName, r.HTMLURL)
}
- if fact != nil {
- facts = append(facts, *fact)
+ if style == "" {
+ style = defaultStyle
+ }
+
+ repoHeaderSection := MSTeamsContainer{
+ Type: "Container",
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Text: "💬 Update" + updatedRepo,
+ Weight: "Bolder",
+ Size: "Small",
+ IsSubtle: new(true),
+ },
+ },
+ }
+
+ if s != nil {
+ // get display name
+ username := "@" + s.UserName
+ if s.FullName != "" {
+ username = s.FullName + " (@" + s.UserName + ")"
+ }
+
+ actionTitle = fmt.Sprintf("%s by %s", actionTitle, markdownLinkFormatter(s.HTMLURL, username))
+ }
+
+ // Sender info section
+ actionTitleSection := MSTeamsContainer{
+ Type: "Container",
+ Style: style,
+ Items: []any{
+ MSTeamsTextBlock{
+ Type: "TextBlock",
+ Style: "heading",
+ Text: actionTitle,
+ },
+ },
+ }
+
+ // Combine sections in order
+ body := []MSTeamsContainer{repoHeaderSection, actionTitleSection}
+ body = append(body, bodySections...)
+
+ // Create action button for navigation
+ actionButton := MSTeamsAction{
+ Type: "Action.OpenUrl",
+ Title: "View in Forgejo",
+ URL: actionTarget,
}
return MSTeamsPayload{
- Type: "MessageCard",
- Context: "https://schema.org/extensions",
- ThemeColor: fmt.Sprintf("%x", color),
- Title: title,
- Summary: title,
- Sections: []MSTeamsSection{
- {
- ActivityTitle: s.FullName,
- ActivitySubtitle: s.UserName,
- ActivityImage: s.AvatarURL,
- Text: text,
- Facts: facts,
- },
- },
- PotentialAction: []MSTeamsAction{
- {
- Type: "OpenUri",
- Name: "View in Forgejo",
- Targets: []MSTeamsActionTarget{
- {
- Os: "default",
- URI: actionTarget,
- },
- },
- },
+ Type: "AdaptiveCard",
+ Schema: "http://adaptivecards.io/schemas/adaptive-card.json",
+ Version: "1.5",
+ MsTeams: MSTeamsOptions{
+ Width: "Full",
},
+ Body: body,
+ Actions: []MSTeamsAction{actionButton},
+ Style: defaultStyle,
}
}
diff --git a/services/webhook/msteams_test.go b/services/webhook/msteams_test.go
index da6439f198..c35ac2dd77 100644
--- a/services/webhook/msteams_test.go
+++ b/services/webhook/msteams_test.go
@@ -4,6 +4,9 @@
package webhook
import (
+ "bytes"
+ "context"
+ "strings"
"testing"
webhook_model "forgejo.org/models/webhook"
@@ -15,32 +18,74 @@ import (
"github.com/stretchr/testify/require"
)
+// findTextInContainer recursively searches for text within an MSTeamsContainer
+func findTextInContainer(c MSTeamsContainer, substr string) bool {
+ for _, it := range c.Items {
+ switch v := it.(type) {
+ case MSTeamsTextBlock:
+ if strings.Contains(v.Text, substr) {
+ return true
+ }
+ case MSTeamsColumnSet:
+ for _, col := range v.Columns {
+ for _, it2 := range col.Items {
+ if tb, ok := it2.(MSTeamsTextBlock); ok && strings.Contains(tb.Text, substr) {
+ return true
+ }
+ }
+ }
+ case MSTeamsContainer:
+ if findTextInContainer(v, substr) {
+ return true
+ }
+ case MSTeamsFactSet:
+ for _, fact := range v.Facts {
+ if strings.Contains(fact.Value, substr) || strings.Contains(fact.Title, substr) {
+ return true
+ }
+ }
+ }
+ }
+ return false
+}
+
func TestMSTeamsPayload(t *testing.T) {
mc := msteamsConvertor{}
+
+ // helper to find text within the adaptive card body
+ findTextInBody := func(pl MSTeamsPayload, substr string) bool {
+ for _, container := range pl.Body {
+ if findTextInContainer(container, substr) {
+ return true
+ }
+ }
+ return false
+ }
+
t.Run("Create", func(t *testing.T) {
p := createTestPayload()
pl, err := mc.Create(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] branch test created", pl.Title)
- assert.Equal(t, "[test/repo] branch test created", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repo.FullName, fact.Value)
- } else if fact.Name == "branch:" {
- assert.Equal(t, "test", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.PotentialAction[0].Targets[0].URI)
+ // Check payload structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.Equal(t, "1.5", pl.Version)
+
+ // Check body structure: header + title + badge sections
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Header should contain repo info
+ assert.True(t, findTextInBody(pl, "test/repo"))
+
+ // Title should contain action by user
+ assert.True(t, findTextInBody(pl, "Branch created: test"))
+
+ // action button should point to branch
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.Actions[0].URL)
})
t.Run("Delete", func(t *testing.T) {
@@ -48,25 +93,20 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.Delete(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] branch test deleted", pl.Title)
- assert.Equal(t, "[test/repo] branch test deleted", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repo.FullName, fact.Value)
- } else if fact.Name == "branch:" {
- assert.Equal(t, "test", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "test/repo"))
+ assert.True(t, findTextInBody(pl, "Branch deleted: test"))
+
+ // action button should point to branch
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo", pl.Actions[0].URL)
})
t.Run("Fork", func(t *testing.T) {
@@ -74,25 +114,19 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.Fork(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "test/repo2 is forked to test/repo", pl.Title)
- assert.Equal(t, "test/repo2 is forked to test/repo", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repo.FullName, fact.Value)
- } else if fact.Name == "Forkee:" {
- assert.Equal(t, p.Forkee.FullName, fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "[test/repo2](http://localhost:3000/test/repo2) is forked to test/repo"))
+
+ // action button should point to repo
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo", pl.Actions[0].URL)
})
t.Run("Push", func(t *testing.T) {
@@ -100,25 +134,23 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.Push(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo:test] 2 new commits", pl.Title)
- assert.Equal(t, "[test/repo:test] 2 new commits", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1\n\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1", pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repo.FullName, fact.Value)
- } else if fact.Name == "Commit count:" {
- assert.Equal(t, "2", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify repo and basic content
+ assert.True(t, findTextInBody(pl, "[test] 2 new commits"))
+
+ // commit details should be present in body
+ assert.True(t, findTextInBody(pl, "2020558"))
+ assert.True(t, findTextInBody(pl, "commit message"))
+
+ // action button should point to compare
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/src/test", pl.Actions[0].URL)
})
t.Run("Issue", func(t *testing.T) {
@@ -127,48 +159,28 @@ func TestMSTeamsPayload(t *testing.T) {
p.Action = api.HookIssueOpened
pl, err := mc.Issue(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] Issue opened: #2 crash", pl.Title)
- assert.Equal(t, "[test/repo] Issue opened: #2 crash", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Equal(t, "issue body", pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else if fact.Name == "Issue #:" {
- assert.Equal(t, "2", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "test/repo"))
+ assert.True(t, findTextInBody(pl, "Issue opened: #2 crash"))
+ assert.True(t, findTextInBody(pl, "issue body"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.Actions[0].URL)
p.Action = api.HookIssueClosed
pl, err = mc.Issue(p)
require.NoError(t, err)
-
- assert.Equal(t, "[test/repo] Issue closed: #2 crash", pl.Title)
- assert.Equal(t, "[test/repo] Issue closed: #2 crash", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else if fact.Name == "Issue #:" {
- assert.Equal(t, "2", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.PotentialAction[0].Targets[0].URI)
+ require.NotNil(t, pl)
+ assert.True(t, findTextInBody(pl, "Issue closed: #2 crash"))
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.Actions[0].URL)
})
t.Run("IssueComment", func(t *testing.T) {
@@ -176,51 +188,53 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.IssueComment(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] New comment on issue #2 crash", pl.Title)
- assert.Equal(t, "[test/repo] New comment on issue #2 crash", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Equal(t, "more info needed", pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else if fact.Name == "Issue #:" {
- assert.Equal(t, "2", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/issues/2#issuecomment-4", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "test/repo"))
+ assert.True(t, findTextInBody(pl, "New comment on issue #2 crash"))
+ assert.True(t, findTextInBody(pl, "more info needed"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/issues/2#issuecomment-4", pl.Actions[0].URL)
})
t.Run("PullRequest", func(t *testing.T) {
p := pullRequestTestPayload()
+ p.PullRequest.Head = &api.PRBranchInfo{
+ Name: "feature/test",
+ Ref: "feature/test",
+ Sha: "b1eb92dc659513b7b4eb57d7ee7f9c6f92e714b5",
+ RepoID: 1,
+ Repository: &api.Repository{
+ HTMLURL: "http://localhost:3000/test/repo",
+ Name: "repo",
+ FullName: "test/repo",
+ },
+ }
pl, err := mc.PullRequest(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] Pull request opened: #12 Fix bug", pl.Title)
- assert.Equal(t, "[test/repo] Pull request opened: #12 Fix bug", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Equal(t, "fixes bug #2", pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else if fact.Name == "Pull request #:" {
- assert.Equal(t, "12", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "test/repo"))
+ assert.True(t, findTextInBody(pl, "Pull request opened: #12 Fix bug"))
+ assert.True(t, findTextInBody(pl, "fixes bug #2"))
+ assert.True(t, findTextInBody(pl, "feature/test → refs/pull/2/head"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.Actions[0].URL)
})
t.Run("PullRequestComment", func(t *testing.T) {
@@ -228,25 +242,20 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.IssueComment(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug", pl.Title)
- assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Equal(t, "changes requested", pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else if fact.Name == "Issue #:" {
- assert.Equal(t, "12", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/pulls/12#issuecomment-4", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "test/repo"))
+ assert.True(t, findTextInBody(pl, "New comment on pull request #12 Fix bug"))
+ assert.True(t, findTextInBody(pl, "changes requested"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/pulls/12#issuecomment-4", pl.Actions[0].URL)
})
t.Run("Review", func(t *testing.T) {
@@ -255,25 +264,19 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.Review(p, webhook_module.HookEventPullRequestReviewApproved)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] Pull request review approved: #12 Fix bug", pl.Title)
- assert.Equal(t, "[test/repo] Pull request review approved: #12 Fix bug", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Equal(t, "good job", pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else if fact.Name == "Pull request #:" {
- assert.Equal(t, "12", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // review content should be present
+ assert.True(t, findTextInBody(pl, "Pull request review approved: #12 Fix bug"))
+ assert.True(t, findTextInBody(pl, "good job"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.Actions[0].URL)
})
t.Run("Repository", func(t *testing.T) {
@@ -281,23 +284,18 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.Repository(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] Repository created", pl.Title)
- assert.Equal(t, "[test/repo] Repository created", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 1)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "Repository created: test/repo"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo", pl.Actions[0].URL)
})
t.Run("Package", func(t *testing.T) {
@@ -305,23 +303,20 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.Package(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "Package created: GiteaContainer:latest", pl.Title)
- assert.Equal(t, "Package created: GiteaContainer:latest", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 1)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Package:" {
- assert.Equal(t, p.Package.Name, fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/user1/-/packages/container/GiteaContainer/latest", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // no repo is associated
+ assert.False(t, findTextInBody(pl, "test/repo"))
+ // Verify content
+ assert.True(t, findTextInBody(pl, "Package created: GiteaContainer:latest"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/user1/-/packages/container/GiteaContainer/latest", pl.Actions[0].URL)
})
t.Run("Wiki", func(t *testing.T) {
@@ -330,65 +325,35 @@ func TestMSTeamsPayload(t *testing.T) {
p.Action = api.HookWikiCreated
pl, err := mc.Wiki(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment)", pl.Title)
- assert.Equal(t, "[test/repo] New wiki page 'index' (Wiki change comment)", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content for create
+ assert.True(t, findTextInBody(pl, "New wiki page \"index\""))
+ assert.True(t, findTextInBody(pl, "Wiki change comment"))
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.Actions[0].URL)
p.Action = api.HookWikiEdited
pl, err = mc.Wiki(p)
require.NoError(t, err)
-
- assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment)", pl.Title)
- assert.Equal(t, "[test/repo] Wiki page 'index' edited (Wiki change comment)", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.PotentialAction[0].Targets[0].URI)
+ require.NotNil(t, pl)
+ assert.True(t, findTextInBody(pl, "Wiki page \"index\" edited"))
+ assert.True(t, findTextInBody(pl, "Wiki change comment"))
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.Actions[0].URL)
p.Action = api.HookWikiDeleted
pl, err = mc.Wiki(p)
require.NoError(t, err)
-
- assert.Equal(t, "[test/repo] Wiki page 'index' deleted", pl.Title)
- assert.Equal(t, "[test/repo] Wiki page 'index' deleted", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.PotentialAction[0].Targets[0].URI)
+ require.NotNil(t, pl)
+ assert.True(t, findTextInBody(pl, "Wiki page \"index\" deleted"))
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "http://localhost:3000/test/repo/wiki/index", pl.Actions[0].URL)
})
t.Run("Release", func(t *testing.T) {
@@ -396,25 +361,18 @@ func TestMSTeamsPayload(t *testing.T) {
pl, err := mc.Release(p)
require.NoError(t, err)
+ require.NotNil(t, pl)
- assert.Equal(t, "[test/repo] Release created: v1.0", pl.Title)
- assert.Equal(t, "[test/repo] Release created: v1.0", pl.Summary)
- assert.Len(t, pl.Sections, 1)
- assert.Equal(t, "user1", pl.Sections[0].ActivitySubtitle)
- assert.Empty(t, pl.Sections[0].Text)
- assert.Len(t, pl.Sections[0].Facts, 2)
- for _, fact := range pl.Sections[0].Facts {
- if fact.Name == "Repository:" {
- assert.Equal(t, p.Repository.FullName, fact.Value)
- } else if fact.Name == "Tag:" {
- assert.Equal(t, "v1.0", fact.Value)
- } else {
- t.Fail()
- }
- }
- assert.Len(t, pl.PotentialAction, 1)
- assert.Len(t, pl.PotentialAction[0].Targets, 1)
- assert.Equal(t, "http://localhost:3000/test/repo/releases/tag/v1.0", pl.PotentialAction[0].Targets[0].URI)
+ // Check basic structure
+ require.Equal(t, "AdaptiveCard", pl.Type)
+ require.GreaterOrEqual(t, len(pl.Body), 2)
+
+ // Verify content
+ assert.True(t, findTextInBody(pl, "Release created: v1.0"))
+
+ require.Len(t, pl.Actions, 1)
+ assert.Equal(t, "View in Forgejo", pl.Actions[0].Title)
+ assert.Equal(t, "http://localhost:3000/test/repo/releases/tag/v1.0", pl.Actions[0].URL)
})
}
@@ -422,6 +380,7 @@ func TestMSTeamsJSONPayload(t *testing.T) {
p := pushTestPayload()
data, err := p.JSONPayload()
require.NoError(t, err)
+ require.NotNil(t, data)
hook := &webhook_model.Webhook{
RepoID: 3,
@@ -438,7 +397,7 @@ func TestMSTeamsJSONPayload(t *testing.T) {
PayloadVersion: 2,
}
- req, reqBody, err := msteamsHandler{}.NewRequest(t.Context(), hook, task)
+ req, reqBody, err := msteamsHandler{}.NewRequest(context.Background(), hook, task)
require.NotNil(t, req)
require.NotNil(t, reqBody)
require.NoError(t, err)
@@ -448,7 +407,10 @@ func TestMSTeamsJSONPayload(t *testing.T) {
assert.Equal(t, "sha256=", req.Header.Get("X-Hub-Signature-256"))
assert.Equal(t, "application/json", req.Header.Get("Content-Type"))
var body MSTeamsPayload
- err = json.NewDecoder(req.Body).Decode(&body)
+ err = json.NewDecoder(bytes.NewReader(reqBody)).Decode(&body)
require.NoError(t, err)
- assert.Equal(t, "[test/repo:test] 2 new commits", body.Summary)
+
+ // Verify payload structure
+ assert.Equal(t, "AdaptiveCard", body.Type)
+ assert.Equal(t, "1.5", body.Version)
}
diff --git a/services/webhook/slack.go b/services/webhook/slack.go
index fe1bfc8aa4..24c28b58f3 100644
--- a/services/webhook/slack.go
+++ b/services/webhook/slack.go
@@ -119,6 +119,13 @@ func SlackTextFormatter(s string) string {
return s
}
+var slackPayloadFormatter = webhookPayloadFormatter{
+ linkFormatter: SlackLinkFormatter,
+ nameFormatter: SlackNameFormatter,
+ withSender: true,
+ withRepoName: true,
+}
+
// SlackNameFormatter puts the name into an inline code block.
// This way names do not trigger unwanted message notifications, as users usually don't want to get notified about their own actions.
func SlackNameFormatter(name string) string {
@@ -174,7 +181,7 @@ func (s slackConvertor) Fork(p *api.ForkPayload) (SlackPayload, error) {
// Issue implements payloadConvertor Issue method
func (s slackConvertor) Issue(p *api.IssuePayload) (SlackPayload, error) {
- text, issueTitle, attachmentText, color := getIssuesPayloadInfo(p, SlackLinkFormatter, SlackNameFormatter, true)
+ text, issueTitle, attachmentText, color := slackPayloadFormatter.getIssuesPayloadInfo(p)
var attachments []SlackAttachment
if attachmentText != "" {
@@ -193,7 +200,7 @@ func (s slackConvertor) Issue(p *api.IssuePayload) (SlackPayload, error) {
// IssueComment implements payloadConvertor IssueComment method
func (s slackConvertor) IssueComment(p *api.IssueCommentPayload) (SlackPayload, error) {
- text, issueTitle, color := getIssueCommentPayloadInfo(p, SlackLinkFormatter, SlackNameFormatter, true)
+ text, issueTitle, color := slackPayloadFormatter.getIssueCommentPayloadInfo(p)
return s.createPayload(text, []SlackAttachment{{
Color: fmt.Sprintf("%x", color),
@@ -205,20 +212,20 @@ func (s slackConvertor) IssueComment(p *api.IssueCommentPayload) (SlackPayload,
// Wiki implements payloadConvertor Wiki method
func (s slackConvertor) Wiki(p *api.WikiPayload) (SlackPayload, error) {
- text, _, _ := getWikiPayloadInfo(p, SlackLinkFormatter, SlackNameFormatter, true)
+ text, _, _ := slackPayloadFormatter.getWikiPayloadInfo(p, true)
return s.createPayload(text, nil), nil
}
// Release implements payloadConvertor Release method
func (s slackConvertor) Release(p *api.ReleasePayload) (SlackPayload, error) {
- text, _ := getReleasePayloadInfo(p, SlackLinkFormatter, SlackNameFormatter, true)
+ text, _ := slackPayloadFormatter.getReleasePayloadInfo(p)
return s.createPayload(text, nil), nil
}
func (s slackConvertor) Package(p *api.PackagePayload) (SlackPayload, error) {
- text, _ := getPackagePayloadInfo(p, SlackLinkFormatter, SlackNameFormatter, true)
+ text, _ := slackPayloadFormatter.getPackagePayloadInfo(p)
return s.createPayload(text, nil), nil
}
@@ -265,7 +272,7 @@ func (s slackConvertor) Push(p *api.PushPayload) (SlackPayload, error) {
// PullRequest implements payloadConvertor PullRequest method
func (s slackConvertor) PullRequest(p *api.PullRequestPayload) (SlackPayload, error) {
- text, issueTitle, attachmentText, color := getPullRequestPayloadInfo(p, SlackLinkFormatter, SlackNameFormatter, true)
+ text, issueTitle, attachmentText, color := slackPayloadFormatter.getPullRequestPayloadInfo(p)
var attachments []SlackAttachment
if attachmentText != "" {
@@ -316,7 +323,7 @@ func (s slackConvertor) Repository(p *api.RepositoryPayload) (SlackPayload, erro
}
func (s slackConvertor) Action(p *api.ActionPayload) (SlackPayload, error) {
- text, _ := getActionPayloadInfo(p, SlackLinkFormatter)
+ text, _ := slackPayloadFormatter.getActionPayloadInfo(p)
return s.createPayload(text, nil), nil
}
diff --git a/services/webhook/slack_test.go b/services/webhook/slack_test.go
index 9a60bf01ac..8d3a8a2e04 100644
--- a/services/webhook/slack_test.go
+++ b/services/webhook/slack_test.go
@@ -132,19 +132,19 @@ func TestSlackPayload(t *testing.T) {
pl, err := sc.Wiki(p)
require.NoError(t, err)
- assert.Equal(t, "[test/repo] New wiki page '{{.Git.GCArgs}}