mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-01-07 00:53:10 +00:00
Compare commits
13 commits
71a79881c2
...
6a0d853144
Author | SHA1 | Date | |
---|---|---|---|
|
6a0d853144 | ||
|
188815c3b4 | ||
|
2bf7648ea1 | ||
|
5a5ed4fd6e | ||
|
ae4eeef54c | ||
|
96e908964d | ||
|
5805b55cce | ||
|
2be8d899ca | ||
|
cfb18e2b6c | ||
|
e1cdaf1f28 | ||
|
3bea06f906 | ||
|
6e13ac4d5f | ||
|
faf1c836eb |
10 changed files with 288 additions and 37 deletions
|
@ -1285,6 +1285,11 @@ settings.event_issue_assign_desc = Задача е възложена или о
|
|||
settings.event_pull_request_review_request_desc = Рецензия на заявка за сливане е поискана или е премахната.
|
||||
generate_repo = Генериране на хранилище
|
||||
default_branch_helper = Стандартният клон е основния клон за заявки за сливане и подавания на код.
|
||||
issues.reaction.add = Добавяне на реакция
|
||||
issues.reaction.alt_few = %[1]s реагира с %[2]s.
|
||||
issues.reaction.alt_many = %[1]s и още %[2]d реагираха с %[3]s.
|
||||
issues.reaction.alt_add = Добавяне на реакция %[1]s към коментара.
|
||||
issues.reaction.alt_remove = Премахване на реакция %[1]s от коментара.
|
||||
|
||||
[modal]
|
||||
confirm = Потвърждаване
|
||||
|
|
|
@ -1467,6 +1467,22 @@ issues.context.edit = Redigere
|
|||
issues.context.delete = Slet
|
||||
issues.no_content = Ingen beskrivelse angivet.
|
||||
issues.close = Luk problem
|
||||
summary_card_alt = Oversigtskort for depot %s
|
||||
issues.choose.invalid_config = Problemkonfigurationen indeholder fejl:
|
||||
issues.no_ref = Ingen gren/tag angivet
|
||||
issues.create = Opret problem
|
||||
issues.new_label = Ny etiket
|
||||
issues.choose.invalid_templates = %v ugyldig(e) skabelon(er) fundet
|
||||
issues.new_label_placeholder = Etiketnavn
|
||||
issues.new_label_desc_placeholder = Beskrivelse
|
||||
issues.create_label = Opret etiket
|
||||
issues.label_templates.title = Indlæs en etiketforudindstilling
|
||||
issues.label_templates.info = Der findes endnu ingen etiketter. Opret en etiket med "Ny etiket", eller brug en etiketforudindstilling:
|
||||
issues.label_templates.helper = Vælg en etiketforudindstilling
|
||||
issues.label_templates.use = Brug etiketforudindstilling
|
||||
issues.label_templates.fail_to_load_file = Kunne ikke indlæse etiketskabelonfilen "%s": %v
|
||||
issues.add_label = tilføjede %s etiketten %s
|
||||
issues.add_labels = tilføjede %s etiketterne %s
|
||||
|
||||
[notification]
|
||||
watching = Overvåger
|
||||
|
|
|
@ -747,7 +747,7 @@ webauthn=Clés de sécurité à deux facteurs
|
|||
public_profile=Profil public
|
||||
biography_placeholder=Parlez-nous un peu de vous ! (Markdown est interprété)
|
||||
location_placeholder=Partagez votre position approximative avec d'autres personnes
|
||||
profile_desc=Contrôlez comment votre profil est affiché aux autres utilisateurs. Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et les opérations Git basées sur le Web.
|
||||
profile_desc=À propos de vous
|
||||
password_username_disabled=Les utilisateurs externes ne sont pas autorisés à modifier leur nom d'utilisateur. Veuillez contacter l'administrateur de votre site pour plus de détails.
|
||||
full_name=Nom complet
|
||||
website=Site Web
|
||||
|
@ -838,7 +838,7 @@ add_email_success=La nouvelle adresse e-mail a été ajoutée.
|
|||
email_preference_set_success=L'e-mail de préférence a été défini avec succès.
|
||||
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
|
||||
keep_email_private=Cacher l'adresse courriel
|
||||
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Notez que changer cette option n'aura pas d'effet sur les commits existants.
|
||||
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Cette option n'aura pas d'effet sur les commits existants.
|
||||
openid_desc=OpenID vous permet de confier l'authentification à une tierce partie.
|
||||
|
||||
manage_ssh_keys=Gérer les clés SSH
|
||||
|
@ -1101,7 +1101,7 @@ license_helper_desc=Une licence réglemente ce que les autres peuvent ou ne peuv
|
|||
readme=LISEZMOI
|
||||
readme_helper=Choisissez un modèle de fichier LISEZMOI
|
||||
readme_helper_desc=Le README est l'endroit idéal pour décrire votre projet et accueillir des contributeurs.
|
||||
auto_init=Initialiser le dépôt (avec un .gitignore, une Licence et un README.md)
|
||||
auto_init=Initialiser le dépôt
|
||||
trust_model_helper=Choisissez, parmi les éléments suivants, les règles de confiance des signatures paraphant les révisions :
|
||||
trust_model_helper_collaborator=Collaborateur : ne se fier qu'aux signatures des collaborateurs du dépôt
|
||||
trust_model_helper_committer=Auteur : ne se fier qu'aux signatures des auteurs de révisions
|
||||
|
@ -3699,7 +3699,7 @@ cran.install=Pour installer le paquet, exécutez la commande suivante :
|
|||
debian.registry=Configurez ce registre à partir d'un terminal :
|
||||
debian.registry.info=Choisissez $distribution et $component dans la liste ci-dessous.
|
||||
debian.install=Pour installer le paquet, exécutez la commande suivante :
|
||||
debian.repository=Infos sur le Dépôt
|
||||
debian.repository=Infos sur le dépôt
|
||||
debian.repository.distributions=Distributions
|
||||
debian.repository.components=Composants
|
||||
debian.repository.architectures=Architectures
|
||||
|
|
|
@ -938,9 +938,9 @@ permissions_public_only=Tikai publiskie
|
|||
permissions_access_all=Visi (publiskie, privātie un ierobežotie)
|
||||
select_permissions=Atlasīt atļaujas
|
||||
permission_no_access=Nav piekļuves
|
||||
permission_read=Skatīšanās
|
||||
permission_read=Lasīt
|
||||
permission_write=Lasīt un rakstīt
|
||||
access_token_desc=Atzīmētie pilnvaras apgabali ierobežo autentifikāciju tikai atbilstošiem <a href="%[1]s" target="_blank">>API</a> izsaukumiem. Sīkāka informācija pieejama <a href="%[2]s" target="_blank">>dokumentācijā</a>.
|
||||
access_token_desc=Atlasītās pilnvaru atļaujas ierobežo pilnvarošanu tikai atbilstošiem <a href="%[1]s" target="_blank">API</a> maršrutiem. Vairāk ir lasāms<a href="%[2]s" target="_blank">dokumentācijā</a>.
|
||||
at_least_one_permission=Nepieciešams norādīt vismaz vienu tiesību, lai izveidotu pilnvaru
|
||||
permissions_list=Tiesības:
|
||||
|
||||
|
@ -948,8 +948,8 @@ manage_oauth2_applications=Pārvaldīt OAuth2 lietotnes
|
|||
edit_oauth2_application=Labot OAuth2 lietotni
|
||||
oauth2_applications_desc=OAuth2 lietotnes ļauj trešo pušu lietotnēm droša veidā autentificēt lietotajus šajā Forgejo instancē.
|
||||
remove_oauth2_application=Noņemt OAuth2 lietotni
|
||||
remove_oauth2_application_desc=Noņemot OAuth2 lietotni, tiks noņemta piekļuve visām parakstītajām piekļuves pilnvarām. Vai turpināt?
|
||||
remove_oauth2_application_success=Lietotne tika dzēsta.
|
||||
remove_oauth2_application_desc=OAuth2 lietotnes noņemšana atsauks piekļuvi visām parakstītajām piekļuves pilnvarām. Turpināt?
|
||||
remove_oauth2_application_success=Lietotne tika izdzēsta.
|
||||
create_oauth2_application=Izveidot jaunu OAuth2 lietotni
|
||||
create_oauth2_application_button=Izveidot lietotni
|
||||
create_oauth2_application_success=Ir sekmīgi izveidota jauna OAuth2 lietotne.
|
||||
|
@ -965,7 +965,7 @@ oauth2_regenerate_secret_hint=Pazaudēts noslēpums?
|
|||
oauth2_client_secret_hint=Pēc šīs lapas pamešanas vai atsvaidzināšanas noslēpums vairs netiks parādīts. Lūgums pārliecināties, ka tas ir saglabāts.
|
||||
oauth2_application_edit=Labot
|
||||
oauth2_application_create_description=OAuth2 lietotnes ļauj trešas puses lietotnēm piekļūt lietotāja kontiem šajā instancē.
|
||||
oauth2_application_remove_description=OAuth2 lietotnes noņemšana liegs tai piekļūt pilnvarotiem lietotāju kontiem šajā instancē. Vai turpināt?
|
||||
oauth2_application_remove_description=OAuth2 lietotnes noņemšana liegs tai piekļūt pilnvarotiem lietotāju kontiem šajā serverī. Turpināt?
|
||||
oauth2_application_locked=Forgejo sāknēšanas brīdī reģistrē dažas OAuth2 lietotnes, ja tas ir iespējots konfigurācijā. Lai novērstu negaidītu uzvedību, tās nevar ne labot, ne noņemt. Lūgums vērsties OAuth2 dokumentācijā pēc vairāk informācijas.
|
||||
|
||||
authorized_oauth2_applications=Pilnvarotās OAuth2 lietotnes
|
||||
|
@ -976,7 +976,7 @@ revoke_oauth2_grant_description=Šīs trešās puses lietotnes piekļuves atsauk
|
|||
revoke_oauth2_grant_success=Piekļuve sekmīgi atsaukta.
|
||||
|
||||
twofa_desc=Divfaktoru autentifikācija uzlabo konta drošību.
|
||||
twofa_recovery_tip=Ja ierīce tiek pazaudēta, iespējams izmantot vienreiz izmantojamo atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam.
|
||||
twofa_recovery_tip=Ja ierīce tiks pazaudēta, būs iespējams izmantot vienreizējas izmantošanas atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam.
|
||||
twofa_is_enrolled=Kontam ir <strong>ieslēgta</strong> divfaktoru autentifikācija.
|
||||
twofa_not_enrolled=Kontam šobrīd nav ieslēgta divfaktoru autentifikācija.
|
||||
twofa_disable=Atspējot divpakāpju pieteikšanos
|
||||
|
@ -2856,6 +2856,14 @@ new_from_template_description = Var atlasīt šajā serverī esošu glabātavas
|
|||
new_advanced = Papildu iestatījumi
|
||||
new_advanced_expand = Klikšķināt, lai izvērstu
|
||||
auto_init_description = Sākt ar README Git vēsturē, pēc izvēles pievienojot licences un .gitignore datnes.
|
||||
issues.reaction.add = Pievienot reakciju
|
||||
issues.reaction.alt_few = %[1]s atsaucās ar %[2]s.
|
||||
issues.reaction.alt_many = %[1]s un vēl %[2]d atsaucās ar %[3]s.
|
||||
issues.reaction.alt_remove = Noņemt no piebildes %[1] reakciju.
|
||||
issues.reaction.alt_add = Pievienot piebildei %[1] reakcijas.
|
||||
issues.context.menu = Piebildes izvēlne
|
||||
summary_card_alt = Glabātavas %s apkopojuma kartīte
|
||||
release.summary_card_alt = Laidiena "%s" apkopojuma kartīte glabātavā %s
|
||||
|
||||
[graphs]
|
||||
component_loading=Ielādē %s...
|
||||
|
@ -3073,33 +3081,33 @@ dashboard.bootstrap_stack_usage=Sākumielādētāja viengala rindas lietojums
|
|||
dashboard.stack_memory_obtained=Iegūtā viengala rindas atmiņa
|
||||
dashboard.mspan_structures_usage=MSpan struktūru lietojums
|
||||
dashboard.mspan_structures_obtained=Iegūtās MSpan struktūras
|
||||
dashboard.mcache_structures_usage=Izmantotās MCache struktūras
|
||||
dashboard.mcache_structures_usage=MCache struktūru lietojums
|
||||
dashboard.mcache_structures_obtained=Iegūtās MCache struktūras
|
||||
dashboard.profiling_bucket_hash_table_obtained=Iegūtā profilēšanas kausa jaucējtabula
|
||||
dashboard.profiling_bucket_hash_table_obtained=Iegūtā profilēšanas groza jaucējtabula
|
||||
dashboard.gc_metadata_obtained=Iegūtie GC metadati
|
||||
dashboard.other_system_allocation_obtained=Iegūtās citas sistēmas sadales
|
||||
dashboard.next_gc_recycle=Nākošā GC atkritne
|
||||
dashboard.other_system_allocation_obtained=Citas iegūtās sistēmas sadales
|
||||
dashboard.next_gc_recycle=Nākamā GC atkritne
|
||||
dashboard.last_gc_time=Laiks kopš pēdējās GC
|
||||
dashboard.total_gc_time=Kopējais GC izpildes laiks
|
||||
dashboard.total_gc_pause=Kopējais GC izpildes laiks
|
||||
dashboard.last_gc_pause=Pedējās GC izpildes laiks
|
||||
dashboard.total_gc_pause=Kopējais GC pārtraukums
|
||||
dashboard.last_gc_pause=Pedējais GC pārtraukums
|
||||
dashboard.gc_times=GC reizes
|
||||
dashboard.delete_old_actions=Dzēst visas darbības no datu bāzes
|
||||
dashboard.delete_old_actions.started=Uzsākta visu novecojušo darbību dzēšana no datu bāzes.
|
||||
dashboard.delete_old_actions=Izdzēst visas novecojušās darbības no datubāzes
|
||||
dashboard.delete_old_actions.started=Uzsākta visu novecojušo darbību izdzēšana no datubāzes.
|
||||
dashboard.update_checker=Atjauninājumu pārbaudītājs
|
||||
dashboard.delete_old_system_notices=Dzēst vecos sistēmas paziņojumus no datubāzes
|
||||
dashboard.gc_lfs=Veikt atkritumu uzkopšanas darbus LFS meta objektiem
|
||||
dashboard.stop_zombie_tasks=Apturēt zombija uzdevumus
|
||||
dashboard.stop_endless_tasks=Apturēt nepārtrauktus uzdevumus
|
||||
dashboard.cancel_abandoned_jobs=Atcelt pamestus darbus
|
||||
dashboard.start_schedule_tasks=Sākt plānotos uzdevumus
|
||||
dashboard.stop_zombie_tasks=Apturēt darbību zombijuzdevumus
|
||||
dashboard.stop_endless_tasks=Apturēt bezgalīgus darbību uzdevumus
|
||||
dashboard.cancel_abandoned_jobs=Atcelt pamestus darbību darbus
|
||||
dashboard.start_schedule_tasks=Uzsākt paredzētos darbību uzdevumus
|
||||
dashboard.sync_branch.started=Uzsākta zaru sinhronizēšana
|
||||
dashboard.rebuild_issue_indexer=Pārbūvēt pieteikumu indeksētāju
|
||||
|
||||
users.user_manage_panel=Lietotāju kontu pārvaldība
|
||||
users.user_manage_panel=Pārvaldīt lietotāju kontus
|
||||
users.new_account=Izveidot lietotāja kontu
|
||||
users.name=Lietotājvārds
|
||||
users.full_name=Vārds, uzvārds
|
||||
users.full_name=Pilns vārds
|
||||
users.activated=Aktivēts
|
||||
users.admin=Pārvaldītājs
|
||||
users.restricted=Ierobežots
|
||||
|
@ -3110,7 +3118,7 @@ users.2fa=2FA
|
|||
users.repos=Glabātavas
|
||||
users.created=Izveidots
|
||||
users.last_login=Pēdējā pieteikšanās
|
||||
users.never_login=Pieteikšanās nekad nav veikta
|
||||
users.never_login=Pieteikšanās nekad nav notikusi
|
||||
users.send_register_notify=Nosūtīt lietotājam reģistrācijas paziņojumu
|
||||
users.new_success=Lietotāja konts "%s" tika izveidots.
|
||||
users.edit=Labot
|
||||
|
@ -3469,7 +3477,7 @@ monitor.stats=Statistika
|
|||
monitor.cron=Cron uzdevumi
|
||||
monitor.name=Nosaukums
|
||||
monitor.schedule=Grafiks
|
||||
monitor.next=Nākošās izpildes laiks
|
||||
monitor.next=Nākamā reize
|
||||
monitor.previous=Pēdējās izpildes laiks
|
||||
monitor.execute_times=Izpildes
|
||||
monitor.process=Darbojošies procesi
|
||||
|
@ -3536,6 +3544,19 @@ self_check.database_fix_mysql = MySQL/MariaDB lietotāji var izmantot komandu "f
|
|||
config.app_slogan = Servera sauklis
|
||||
config.allow_dots_in_usernames = Ļaut lietotājiem izmantot punktus savā lietotājvārdā. Neietekmē esošos kontus.
|
||||
users.restricted.description = Ļaut mijiedarbību tikai ar glabātavām un apvienībām, kurās šis lietotājs ir pievienots kā līdzdalībnieks. Tas neļauj piekļūt šī servera publiskajām glabātavām.
|
||||
dashboard.sync_tag.started = Uzsākta birku sinhronizēšana
|
||||
users.organization_creation.description = Ļaut jaunu apvienību izveidošanu.
|
||||
users.block.description = Liegt šī lietotāja mijiedarbību ar šo serveri caur tā kontu un neļaut pieteikšanos.
|
||||
users.admin.description = Nodrošināt šim lietotājam pilnu piekļuvi visām pārvaldīšanas iespējām ar tīmekļa saskarni un API.
|
||||
users.local_import.description = Ļaut glabātavu ievietošanu no servera vietējās datņu sistēmas. Tā var būt drošības nepilnība.
|
||||
emails.delete = Izdzēst e-pasta adresi
|
||||
emails.delete_desc = Vai tiešām izdzēst šo e-pasta adresi?
|
||||
emails.deletion_success = E-pasta adrese tika izdzēsta.
|
||||
emails.delete_primary_email_error = Nevar izdzēst galveno e-pasta adresi.
|
||||
auths.tips.gmail_settings = Gmail iestatījumi:
|
||||
users.activated.description = E-pasta adreses apliecināšanas pabeigšana. Neaktivēta konta īpašnieks nevarēs pieteikties, kamēr e-pasta adreses apliecināšana nebūs pabeigta.
|
||||
auths.default_domain_name = Noklusējuma domēna vārds, kas tiek izmantots e-pasta adresēs
|
||||
dashboard.sync_repo_tags = Datubāzē sinhronizēt birkas no Git datiem
|
||||
|
||||
[action]
|
||||
create_repo=izveidoja glabātavu <a href="%s">%s</a>
|
||||
|
@ -3784,6 +3805,18 @@ arch.pacman.sync = Jāsinhronizē pakotne ar pacman:
|
|||
arch.version.description = Apraksts
|
||||
arch.version.provides = Nodrošina
|
||||
arch.pacman.conf = <code>/etc/pacman.conf</code> jāpievieno serveris ar atbilstošu distribūciju un arhitektūru:
|
||||
arch.version.groups = Kopa
|
||||
arch.version.replaces = Aizvieto
|
||||
arch.version.checkdepends = Pārbaudīt atkarības
|
||||
arch.version.conflicts = Nesaderības
|
||||
npm.dependencies.bundle = Iekļautās atkarības
|
||||
container.images.title = Attēli
|
||||
arch.version.optdepends = Izvēles atkarības
|
||||
arch.version.makedepends = Izveidot atkarības
|
||||
arch.version.backup = Rezerves kopija
|
||||
arch.version.depends = Atkarības
|
||||
rpm.repository.multiple_groups = Šī pakotne ir pieejama vairākās kopās.
|
||||
owner.settings.cargo.rebuild.no_index = Nevar pārbūvēt, nav sāknēts neviens indekss.
|
||||
|
||||
[secrets]
|
||||
secrets=Noslēpumi
|
||||
|
@ -3889,11 +3922,25 @@ variables.creation.failed=Neizdevās pievienot mainīgo.
|
|||
variables.creation.success=Mainīgais "%s" tika pievienots.
|
||||
variables.update.failed=Neizdevās labot mainīgo.
|
||||
variables.update.success=Mainīgais tika labots.
|
||||
workflow.dispatch.invalid_input_type = Nederīgs ievades mainīgā veids "%s".
|
||||
workflow.dispatch.run = Izpildīt darbplūsmu
|
||||
workflow.dispatch.success = Darbplūsmas izpildīšana tika sekmīgi pieprasīta.
|
||||
workflow.dispatch.use_from = Izmantot darbplūsmu no
|
||||
runs.workflow = Darbplūsma
|
||||
runs.no_job_without_needs = Darbplūsmā ir jābūt vismaz vienam darbam bez atkarībām.
|
||||
workflow.dispatch.input_required = Nepieciešama vērtība ievades mainīgajam "%s".
|
||||
runs.expire_log_message = Žurnāli tika iztīrīti, jo tie bija pārāk veci.
|
||||
runs.no_workflows.help_no_write_access = Lai uzzinātu par Forgejo Acties, jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
|
||||
runs.no_job = Darbplūsmā ir jābūt vismaz vienam darbam
|
||||
runs.no_workflows.help_write_access = Nav skaidrs, kā sākt izmantot Forgejo Actions? Jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">ātro ievadu lietotāja dokumentācijā</a>, lai uzrakstītu savu pirmo darbplūsmu, tad <a target="_blank" rel="noopener noreferrer" href="%s">jāiestata Forgejo izpildītājs</a>, lai izpildītu savus darbus.
|
||||
workflow.dispatch.warn_input_limit = Attēlo tikai pirmos %d ievades mainīgos.
|
||||
workflow.dispatch.trigger_found = Šai darbplūsmai ir <c>workflow_dispatch</c> notikuma izraisītājs.
|
||||
|
||||
[projects]
|
||||
type-1.display_name=Individuālais projekts
|
||||
type-2.display_name=Glabātavas projekts
|
||||
type-3.display_name=Apvienības projekts
|
||||
deleted.display_name = Izdzēsts projekts
|
||||
|
||||
[git.filemode]
|
||||
changed_filemode=%[1]s → %[2]s
|
||||
|
@ -3946,6 +3993,13 @@ pulls.read = <b>Lasīt:</b> lasīšana un izveidot izmaiņu pieprasījumus.
|
|||
code.read = <b>Lasīt</b>: piekļūt glabātavas kodam un klonēt to.
|
||||
issues.read = <b>Lasīt</b>: lasīt un izveidot pieteikumus un piebildes.
|
||||
issues.write = <b>Rakstīt</b>: aizvērt pieteikums un pārvaldīt tādus metadatus kā iezīmes, atskaites punktus, atbildīgos, beigu datumus un atkarības.
|
||||
wiki.read = <b>Lasīt</b>: lasīt iebūvēto vikivietni un tās vēsturi.
|
||||
projects.write = <b>Rakstīt</b>: izveidot projektus un slejas un labot tās.
|
||||
packages.read = <b>Lasīt</b>: apskatīt un lejupielādēt glabātavai piesaistītās pakotnes.
|
||||
releases.read = <b>Lasīt</b>: apskatīt un lejupielādēt laidienus.
|
||||
releases.write = <b>Rakstīt</b>: laist klajā, labot un izdzēst laidienus un to līdzekļus.
|
||||
wiki.write = <b>Rakstīt</b>: izveidot, atjaunināt un izdzēst iebūvētās vikivietnes lapas.
|
||||
projects.read = <b>Lasīt</b>: piekļūt glabātavas projektu dēļiem.
|
||||
|
||||
|
||||
[munits.data]
|
||||
|
@ -3955,4 +4009,12 @@ gib = GiB
|
|||
tib = TiB
|
||||
kib = KiB
|
||||
eib = EiB
|
||||
b = B
|
||||
b = B
|
||||
|
||||
[markup]
|
||||
filepreview.line = %[1]d. rinda %[2]s
|
||||
filepreview.lines = %[1]d. līdz %[2]d. rinda %[3]s
|
||||
filepreview.truncated = Priekšskatījums tika saīsināts
|
||||
|
||||
[translation_meta]
|
||||
test = Šī ir pārbaudes virkne. Tā netiek attēlota Forgejo saskarnē, bet tiek izmantota pārbaudes nolūkiem. Droši var ievadīt "ok", lai ietaupītu laiku (vai kādu jautru faktu pēc izvēles), lai sasniegtu to saldo 100% pabeigšanas atzīmi.
|
|
@ -1171,8 +1171,8 @@ template.issue_labels=Метки задач
|
|||
template.one_item=Необходимо выбрать хотя бы один элемент шаблона
|
||||
template.invalid=Необходимо выбрать шаблон репозитория
|
||||
|
||||
archive.issue.nocomment=Этот репозиторий в архиве. Вы не можете комментировать задачи.
|
||||
archive.pull.nocomment=Это репозиторий в архиве. Вы не можете комментировать запросы на слияние.
|
||||
archive.issue.nocomment=Этот репозиторий архивирован. Комментирование в задачах невозможно.
|
||||
archive.pull.nocomment=Этот репозиторий архивирован. Комментирование в запросах слияний невозможно.
|
||||
|
||||
form.reach_limit_of_creation_1=Достигнуто ограничение на количество репозиториев: %d.
|
||||
form.reach_limit_of_creation_n=Достигнуто ограничение на количество репозиториев: %d.
|
||||
|
@ -2859,6 +2859,14 @@ new_from_template_description = Вы можете выбрать любой ша
|
|||
new_advanced = Расширенные настройки
|
||||
new_advanced_expand = Нажмите, чтобы раскрыть
|
||||
auto_init_description = Начать историю коммитов с добавления README и, если надо, лицензии и .gitignore.
|
||||
summary_card_alt = Карточка со сводкой о репозитории %s
|
||||
issues.reaction.add = Добавить реакцию
|
||||
issues.reaction.alt_few = Реакция %[2]s от %[1]s.
|
||||
issues.reaction.alt_many = Реакция %[3]s от %[1]s и %[2]d других.
|
||||
issues.reaction.alt_remove = Убрать реакцию %[1]s с этого комментария.
|
||||
issues.reaction.alt_add = Добавить реакцию %[1]s к этому комментарию.
|
||||
issues.context.menu = Меню комментария
|
||||
release.summary_card_alt = Карточка со сводкой о выпуске «%s» в репозитории %s
|
||||
|
||||
[graphs]
|
||||
component_loading_failed = Не удалось загрузить %s
|
||||
|
|
|
@ -165,6 +165,7 @@ error413 = Kotanızı doldurdunuz.
|
|||
toggle_menu = Menüyü aç-kapa
|
||||
new_migrate.title = Yeni geçiş
|
||||
new_migrate.link = Yeni geçiş
|
||||
copy_path = Dizini kopyala
|
||||
|
||||
[aria]
|
||||
navbar=Gezinti Çubuğu
|
||||
|
@ -195,6 +196,12 @@ buttons.ref.tooltip=Bir konuya veya değişiklik isteğine değin
|
|||
buttons.switch_to_legacy.tooltip=Eski düzenleyiciyi kullan
|
||||
buttons.enable_monospace_font=Eşaralıklı yazıtipini etkinleştir
|
||||
buttons.disable_monospace_font=Eşaralıklı yazıtipini devre dışı bırak
|
||||
buttons.new_table.tooltip = Tablo ekle
|
||||
table_modal.header = Tablo ekle
|
||||
table_modal.placeholder.header = Başlık
|
||||
table_modal.placeholder.content = İçerik
|
||||
table_modal.label.rows = Satırlar
|
||||
table_modal.label.columns = Sütunlar
|
||||
|
||||
[filter]
|
||||
string.asc=A - Z
|
||||
|
@ -466,6 +473,7 @@ sign_up_button = Hemen kaydol.
|
|||
hint_register = Hesaba ihtiyacın var mı? <a href="%s">Hemen kaydol.</a>
|
||||
sign_in_openid = OpenID ile giriş yap
|
||||
hint_login = Mevcut hesabın var mı? <a href="%s">Hemen giriş yap!</a>
|
||||
use_onetime_code = Tek kullanımlık kod kullan
|
||||
|
||||
[mail]
|
||||
view_it_on=%s üzerinde görüntüle
|
||||
|
@ -543,6 +551,7 @@ account_security_caution.text_1 = Eğer bu sizseniz bu e-postayı görmezden gel
|
|||
password_change.subject = Parolanız değişti
|
||||
admin.new_user.user_info = Kullanıcı bilgisi
|
||||
admin.new_user.text = Lütfen bu kullanıcıyı admin panelinden yönetmek için <a href="%s">buraya tıklayın</a>.
|
||||
password_change.text_1 = Hesabınızın parolası değişti.
|
||||
|
||||
[modal]
|
||||
yes=Evet
|
||||
|
@ -650,6 +659,8 @@ Biography = Biyografi
|
|||
AccessToken = Erişim jetonu
|
||||
Location = Konum
|
||||
Website = Websitesi
|
||||
admin_cannot_delete_self = Yöneticiyken kullanıcınızı silemezsiniz. Lütfen önce yönetici yetkilerinizi kaldırın.
|
||||
username_error_no_dots = ` sadece alfanumerik karakterler ("0-9","a-z","A-Z"), tire ("-") ve alt tire ("-") içerebilir. Alfanumerik olmayan karakterlerle başlayamaz ve bitemez, ayrıca ardışık alfanumerik olmayan karakterler de kullanılamaz.`
|
||||
|
||||
|
||||
[user]
|
||||
|
@ -690,6 +701,9 @@ followers.title.one = Takipçi
|
|||
block = Engelle
|
||||
public_activity.visibility_hint.self_private = Aktiviteniz sadece size ve oluşum yöneticilerine açıktır. <a href="%s">Değiştir</a>.
|
||||
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_1 = Birbirinizden takipten çıkacak ve birbirinizi takip edemeyeceksiniz.
|
||||
block_user.detail = Bu kullanıcıyı engellediğinizde:
|
||||
|
||||
[settings]
|
||||
profile=Profil
|
||||
|
@ -3683,6 +3697,7 @@ runs.no_workflows.quick_start = Gitea İşlem'i nasıl başlatacağınızı bilm
|
|||
type-1.display_name=Kişisel Proje
|
||||
type-2.display_name=Depo Projesi
|
||||
type-3.display_name=Organizasyon Projesi
|
||||
deleted.display_name = Silinmiş proje
|
||||
|
||||
[git.filemode]
|
||||
changed_filemode=%[1]s → %[2]s
|
||||
|
|
|
@ -2864,6 +2864,8 @@ issues.reaction.alt_many = %[1]s 和另外 %[2]d 人回应了 %[3]s。
|
|||
issues.reaction.alt_remove = 从评论中移除 %[1] 回应。
|
||||
issues.context.menu = 评论菜单
|
||||
issues.reaction.alt_add = 对评论添加 %[1]s 回应。
|
||||
release.summary_card_alt = 仓库 %[2]s 中标题为 %[1]s 的版本发布的摘要卡片
|
||||
summary_card_alt = 仓库 %s 的摘要卡片
|
||||
|
||||
[graphs]
|
||||
component_loading=正在加载 %s...
|
||||
|
|
1
release-notes/6445.md
Normal file
1
release-notes/6445.md
Normal file
|
@ -0,0 +1 @@
|
|||
feat: webhook: sourcehut: submit SSH URL for private repository or when pre-filled
|
|
@ -8,6 +8,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"io"
|
||||
"io/fs"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
@ -189,11 +190,11 @@ func (pc sourcehutConvertor) Package(_ *api.PackagePayload) (graphqlPayload[buil
|
|||
return graphqlPayload[buildsVariables]{}, shared.ErrPayloadTypeNotSupported
|
||||
}
|
||||
|
||||
// mustBuildManifest adjusts the manifest to submit to the builds service
|
||||
// newPayload opens and adjusts the manifest to submit to the builds service
|
||||
//
|
||||
// in case of an error the Error field will be set, to be visible by the end-user under recent deliveries
|
||||
func (pc sourcehutConvertor) newPayload(repo *api.Repository, commitID, ref, note string, trusted bool) (graphqlPayload[buildsVariables], error) {
|
||||
manifest, err := pc.buildManifest(repo, commitID, ref)
|
||||
manifest, err := pc.constructManifest(repo, commitID, ref)
|
||||
if err != nil {
|
||||
if len(manifest) == 0 {
|
||||
return graphqlPayload[buildsVariables]{}, err
|
||||
|
@ -238,9 +239,9 @@ func (pc sourcehutConvertor) newPayload(repo *api.Repository, commitID, ref, not
|
|||
}, nil
|
||||
}
|
||||
|
||||
// buildManifest adjusts the manifest to submit to the builds service
|
||||
// constructManifest opens and adjusts the manifest to submit to the builds service
|
||||
// in case of an error the []byte might contain an error that can be displayed to the user
|
||||
func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRef string) ([]byte, error) {
|
||||
func (pc sourcehutConvertor) constructManifest(repo *api.Repository, commitID, gitRef string) ([]byte, error) {
|
||||
gitRepo, err := gitrepo.OpenRepository(pc.ctx, repo)
|
||||
if err != nil {
|
||||
msg := "could not open repository"
|
||||
|
@ -265,6 +266,10 @@ func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRe
|
|||
}
|
||||
defer r.Close()
|
||||
|
||||
return adjustManifest(repo, commitID, gitRef, r, pc.meta.ManifestPath)
|
||||
}
|
||||
|
||||
func adjustManifest(repo *api.Repository, commitID, gitRef string, r io.Reader, path string) ([]byte, error) {
|
||||
// reference: https://man.sr.ht/builds.sr.ht/manifest.md
|
||||
var manifest struct {
|
||||
Sources []string `yaml:"sources"`
|
||||
|
@ -273,7 +278,7 @@ func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRe
|
|||
Rest map[string]yaml.Node `yaml:",inline"`
|
||||
}
|
||||
if err := yaml.NewDecoder(r).Decode(&manifest); err != nil {
|
||||
msg := fmt.Sprintf("could not decode manifest %q", pc.meta.ManifestPath)
|
||||
msg := fmt.Sprintf("could not decode manifest %q", path)
|
||||
return []byte(msg), fmt.Errorf(msg+": %w", err)
|
||||
}
|
||||
|
||||
|
@ -284,16 +289,21 @@ func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRe
|
|||
manifest.Environment["BUILD_SUBMITTER_URL"] = setting.AppURL
|
||||
manifest.Environment["GIT_REF"] = gitRef
|
||||
|
||||
source := repo.CloneURL + "#" + commitID
|
||||
found := false
|
||||
for i, s := range manifest.Sources {
|
||||
if s == repo.CloneURL {
|
||||
manifest.Sources[i] = source
|
||||
if s == repo.CloneURL || s == repo.SSHURL {
|
||||
manifest.Sources[i] = s + "#" + commitID
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
source := repo.CloneURL
|
||||
if repo.Private || setting.Repository.DisableHTTPGit {
|
||||
// default to ssh for private repos or when git clone is disabled over http
|
||||
source = repo.SSHURL
|
||||
}
|
||||
source += "#" + commitID
|
||||
manifest.Sources = append(manifest.Sources, source)
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ package sourcehut
|
|||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
webhook_model "code.gitea.io/gitea/models/webhook"
|
||||
|
@ -384,3 +385,134 @@ func TestSourcehutJSONPayload(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
assert.Equal(t, "json test", body.Variables.Note)
|
||||
}
|
||||
|
||||
func TestSourcehutAdjustManifest(t *testing.T) {
|
||||
defer test.MockVariableValue(&setting.AppURL, "https://example.forgejo.org/")()
|
||||
t.Run("without sources", func(t *testing.T) {
|
||||
repo := &api.Repository{
|
||||
CloneURL: "http://localhost:3000/testdata/repo.git",
|
||||
}
|
||||
|
||||
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
|
||||
tasks:
|
||||
- say-hello: |
|
||||
echo hello
|
||||
- say-world: echo world`), ".build.yml")
|
||||
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, `sources:
|
||||
- http://localhost:3000/testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
|
||||
environment:
|
||||
BUILD_SUBMITTER: forgejo
|
||||
BUILD_SUBMITTER_URL: https://example.forgejo.org/
|
||||
GIT_REF: refs/heads/main
|
||||
image: alpine/edge
|
||||
tasks:
|
||||
- say-hello: |
|
||||
echo hello
|
||||
- say-world: echo world
|
||||
`, string(manifest))
|
||||
})
|
||||
|
||||
t.Run("with other sources", func(t *testing.T) {
|
||||
repo := &api.Repository{
|
||||
CloneURL: "http://localhost:3000/testdata/repo.git",
|
||||
}
|
||||
|
||||
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
|
||||
sources:
|
||||
- http://other.example.conm/repo.git
|
||||
tasks:
|
||||
- hello: echo world`), ".build.yml")
|
||||
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, `sources:
|
||||
- http://other.example.conm/repo.git
|
||||
- http://localhost:3000/testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
|
||||
environment:
|
||||
BUILD_SUBMITTER: forgejo
|
||||
BUILD_SUBMITTER_URL: https://example.forgejo.org/
|
||||
GIT_REF: refs/heads/main
|
||||
image: alpine/edge
|
||||
tasks:
|
||||
- hello: echo world
|
||||
`, string(manifest))
|
||||
})
|
||||
|
||||
t.Run("with same source", func(t *testing.T) {
|
||||
repo := &api.Repository{
|
||||
CloneURL: "http://localhost:3000/testdata/repo.git",
|
||||
}
|
||||
|
||||
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
|
||||
sources:
|
||||
- http://localhost:3000/testdata/repo.git
|
||||
- http://other.example.conm/repo.git
|
||||
tasks:
|
||||
- hello: echo world`), ".build.yml")
|
||||
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, `sources:
|
||||
- http://localhost:3000/testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
|
||||
- http://other.example.conm/repo.git
|
||||
environment:
|
||||
BUILD_SUBMITTER: forgejo
|
||||
BUILD_SUBMITTER_URL: https://example.forgejo.org/
|
||||
GIT_REF: refs/heads/main
|
||||
image: alpine/edge
|
||||
tasks:
|
||||
- hello: echo world
|
||||
`, string(manifest))
|
||||
})
|
||||
|
||||
t.Run("with ssh source", func(t *testing.T) {
|
||||
repo := &api.Repository{
|
||||
CloneURL: "http://localhost:3000/testdata/repo.git",
|
||||
SSHURL: "git@localhost:testdata/repo.git",
|
||||
}
|
||||
|
||||
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
|
||||
sources:
|
||||
- git@localhost:testdata/repo.git
|
||||
- http://other.example.conm/repo.git
|
||||
tasks:
|
||||
- hello: echo world`), ".build.yml")
|
||||
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, `sources:
|
||||
- git@localhost:testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
|
||||
- http://other.example.conm/repo.git
|
||||
environment:
|
||||
BUILD_SUBMITTER: forgejo
|
||||
BUILD_SUBMITTER_URL: https://example.forgejo.org/
|
||||
GIT_REF: refs/heads/main
|
||||
image: alpine/edge
|
||||
tasks:
|
||||
- hello: echo world
|
||||
`, string(manifest))
|
||||
})
|
||||
|
||||
t.Run("private without source", func(t *testing.T) {
|
||||
repo := &api.Repository{
|
||||
CloneURL: "http://localhost:3000/testdata/repo.git",
|
||||
SSHURL: "git@localhost:testdata/repo.git",
|
||||
Private: true,
|
||||
}
|
||||
|
||||
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
|
||||
tasks:
|
||||
- hello: echo world`), ".build.yml")
|
||||
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, `sources:
|
||||
- git@localhost:testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
|
||||
environment:
|
||||
BUILD_SUBMITTER: forgejo
|
||||
BUILD_SUBMITTER_URL: https://example.forgejo.org/
|
||||
GIT_REF: refs/heads/main
|
||||
image: alpine/edge
|
||||
tasks:
|
||||
- hello: echo world
|
||||
`, string(manifest))
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue