mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-05-16 03:04:23 +02:00
Compare commits
14 commits
f6124f76d5
...
492199b104
Author | SHA1 | Date | |
---|---|---|---|
492199b104 | |||
9b3a86aa48 | |||
2f486a0a54 | |||
f6fc68a234 | |||
db88c56f41 | |||
304db0519b | |||
27fa12427c | |||
c54896ba70 | |||
de9d498109 | |||
641ddbbbb9 | |||
bc8860ce32 | |||
4b8f0d0972 | |||
10cd0f3992 | |||
5c76c37a50 |
|
@ -3439,6 +3439,7 @@ config_summary = Souhrn
|
|||
config.open_with_editor_app_help = Editory v nabídce „Otevřít pomocí“ v nabídce klonování. Ponechte prázdné pro použití výchozího editoru (zobrazíte jej rozšířením).
|
||||
config_settings = Nastavení
|
||||
auths.tip.gitlab_new = Zaregistrujte si novou aplikaci na https://gitlab.com/-/profile/applications
|
||||
auths.default_domain_name = Výchozí doménové jméno použité pro e-mailovou adresu
|
||||
|
||||
[action]
|
||||
create_repo=vytvořil/a repozitář <a href="%s">%s</a>
|
||||
|
|
|
@ -3406,6 +3406,7 @@ config_settings = Einstellungen
|
|||
config.open_with_editor_app_help = Die „Öffnen mit“-Editoren für das Klonmenü. Falls es leer gelassen wird, wird der Standardwert benutzt. Erweitern, um den Standardwert zu sehen.
|
||||
config_summary = Zusammenfassung
|
||||
auths.tip.gitlab_new = Registriere eine neue Anwendung auf https://gitlab.com/-/profile/applications
|
||||
auths.default_domain_name = Standarddomainname, der für die E-Mail-Adresse benutzt wird
|
||||
|
||||
|
||||
[action]
|
||||
|
|
|
@ -144,12 +144,12 @@ value=Τιμή
|
|||
toggle_menu = Μενού
|
||||
confirm_delete_artifact = Είστε βέβαιοι πως θέλετε να διαγράψετε το προϊόν «%s»;
|
||||
filter = Φίλτρο
|
||||
filter.is_archived = Αρχειοθετημένο
|
||||
filter.is_archived = Αρχειοθετημένα
|
||||
filter.clear = Απενεργοποίηση φίλτρου
|
||||
filter.not_archived = Μη αρχειοθετημένα
|
||||
filter.is_template = Πρότυπο
|
||||
filter.public = Δημόσιο
|
||||
filter.private = Ιδιωτικό
|
||||
filter.is_template = Πρότυπα
|
||||
filter.public = Δημόσια
|
||||
filter.private = Ιδιωτικά
|
||||
filter.not_fork = Εξαίρεση fork
|
||||
filter.is_mirror = Είδωλα
|
||||
filter.not_mirror = Εξαίρεση ειδώλων
|
||||
|
@ -169,7 +169,7 @@ number_of_contributions_in_the_last_12_months=%s συνεισφορές τους
|
|||
contributions_zero=Χωρίς συνεισφορές
|
||||
less=Λιγότερα
|
||||
more=Περισσότερα
|
||||
contributions_format = {contributions} στις {day} του μήνα {month} του έτους {year}
|
||||
contributions_format = {contributions} στις {day} {month} του έτους {year}
|
||||
contributions_one = συνεισφορά
|
||||
contributions_few = συνεισφορές
|
||||
|
||||
|
@ -497,7 +497,7 @@ issue.action.reopen=Ο/Η <b>@%[1]s</b> άνοιξε ξανά το #%[2]d.
|
|||
issue.action.merge=Ο/Η <b>@%[1]s</b> συγχώνευσε το #%[2]d στο %[3]s.
|
||||
issue.action.approve=<b>@%[1]s</b> ενέκρινε αυτό το pull request.
|
||||
issue.action.reject=<b>@%[1]s</b> ζήτησε αλλαγές σε αυτό το pull request.
|
||||
issue.action.review=<b>@%[1]s</b> σχολίασε αυτό το pull request.
|
||||
issue.action.review=<b>@%[1]s</b> άφησε σχόλιο σε αυτό το pull request.
|
||||
issue.action.review_dismissed=<b>@%[1]s</b> απέρριψε την τελευταία αναθεώρηση από %[2]s για αυτό το pull request.
|
||||
issue.action.ready_for_review=Ο/Η <b>@%[1]s</b> επισήμανε πως αυτό το pull request είναι έτοιμο για αξιολόγηση.
|
||||
issue.action.new=Ο/Η <b>@%[1]s</b> δημιούργησε το #%[2]d.
|
||||
|
@ -647,9 +647,9 @@ follow=Ακολούθηση
|
|||
unfollow=Να μην ακολουθώ
|
||||
user_bio=Βιογραφικό
|
||||
disabled_public_activity=Αυτός ο χρήστης έχει απενεργοποιήσει τη δημόσια προβολή της δραστηριότητας του.
|
||||
email_visibility.limited=Η διεύθυνση email σας είναι ορατή σε όλους τους ταυτοποιημένους χρήστες
|
||||
email_visibility.limited=Η διεύθυνση email σας είναι ορατή σε κάθε ταυτοποιημένο χρήστη
|
||||
email_visibility.private=Η διεύθυνση email σας είναι ορατή μόνο σε εσάς και στους διαχειριστές
|
||||
show_on_map=Δείτε το μέρος αυτό σε έναν χάρτη
|
||||
show_on_map=Προβολή σε χάρτη
|
||||
settings=Ρυθμίσεις χρήστη
|
||||
|
||||
form.name_reserved=Το όνομα χρήστη «%s» είναι δεσμευμένο.
|
||||
|
@ -1183,7 +1183,7 @@ fork_from_self=Δεν μπορείτε να κάνετε fork σε ένα απο
|
|||
fork_guest_user=Συνδεθείτε για να κάνετε fork αυτό το αποθετήριο.
|
||||
watch_guest_user=Συνδεθείτε για να παρακολουθήσετε αυτό το αποθετήριο.
|
||||
star_guest_user=Συνδεθείτε για να δώσετε ένα αστέρι σε αυτό το αποθετήριο.
|
||||
unwatch=Μη Παρακολούθηση
|
||||
unwatch=Παύση ακολούθησης
|
||||
watch=Παρακολούθηση
|
||||
unstar=Όχι Αστέρι
|
||||
star=Αστέρι
|
||||
|
@ -1475,7 +1475,7 @@ issues.change_title_at=`άλλαξε το τίτλο από <b><strike>%s</strik
|
|||
issues.change_ref_at=`άλλαξε την αναφορά από <b><strike>%s</strike></b> σε <b>%s</b> %s`
|
||||
issues.remove_ref_at=`αφαίρεση την αναφορά <b>%s</b> %s`
|
||||
issues.add_ref_at=`πρόσθεσε την αναφορά <b>%s</b> %s`
|
||||
issues.delete_branch_at=`διέγραψε το κλάδο <b>%s</b> %s`
|
||||
issues.delete_branch_at=`διέγραψε τον κλάδο <b>%s</b> %s`
|
||||
issues.filter_label=Σήμα
|
||||
issues.filter_label_exclude=`Χρησιμοποιήστε <code>alt</code> + <code>κάντε κλικ/Enter</code> για να εξαιρέσετε τις σημάνσεις`
|
||||
issues.filter_label_no_select=Όλα τα σήματα
|
||||
|
@ -1503,8 +1503,8 @@ issues.filter_type.reviewed_by_you=Ελέγχθηκε από εσάς
|
|||
issues.filter_sort=Ταξινόμηση
|
||||
issues.filter_sort.latest=Νεότερα
|
||||
issues.filter_sort.oldest=Παλαιότερα
|
||||
issues.filter_sort.recentupdate=Ενημερώθηκαν πρόσφατα
|
||||
issues.filter_sort.leastupdate=Ενημερώθηκαν παλαιότερα
|
||||
issues.filter_sort.recentupdate=Πρόσφατη δραστηριότητα
|
||||
issues.filter_sort.leastupdate=Ανενεργή δραστηριότητα
|
||||
issues.filter_sort.mostcomment=Περισσότερα σχόλια
|
||||
issues.filter_sort.leastcomment=Λιγότερα σχόλια
|
||||
issues.filter_sort.nearduedate=Πλησιέστερη ημερομηνία παράδοσης
|
||||
|
@ -1529,9 +1529,9 @@ pulls.merged_by_fake=από %[2]s συγχωνεύθηκε %[1]s
|
|||
issues.closed_by=από <a href="%[2]s">%[3]s</a> έκλεισαν %[1]s
|
||||
issues.opened_by_fake=άνοιξε το %[1]s από %[2]s
|
||||
issues.closed_by_fake=από %[2]s έκλεισαν %[1]s
|
||||
issues.previous=Προηγούμενο
|
||||
issues.next=Επόμενο
|
||||
issues.open_title=Ανοικτό
|
||||
issues.previous=Προηγούμενη
|
||||
issues.next=Επόμενη
|
||||
issues.open_title=Ανοιχτά
|
||||
issues.closed_title=Κλειστά
|
||||
issues.draft_title=Προσχέδιο
|
||||
issues.num_comments_1=%d σχόλιο
|
||||
|
@ -1602,8 +1602,8 @@ issues.label_deletion_desc=Η διαγραφή ενός σήματος θα το
|
|||
issues.label_deletion_success=Το σήμα έχει διαγραφεί.
|
||||
issues.label.filter_sort.alphabetically=Αλφαβητικά
|
||||
issues.label.filter_sort.reverse_alphabetically=Αντίστροφα αλφαβητικά
|
||||
issues.label.filter_sort.by_size=Μικρότερο μέγεθος
|
||||
issues.label.filter_sort.reverse_by_size=Μεγαλύτερο μέγεθος
|
||||
issues.label.filter_sort.by_size=Μικρότερου μεγέθους
|
||||
issues.label.filter_sort.reverse_by_size=Μεγαλύτερου μεγέθους
|
||||
issues.num_participants_few=%d Συμμετέχοντες
|
||||
issues.attachment.open_tab=`Πατήστε εδώ για να ανοίξετε το «%s» σε μια νέα καρτέλα`
|
||||
issues.attachment.download=`Πατήστε εδώ για να κατεβάσετε το «%s»`
|
||||
|
@ -1944,7 +1944,7 @@ wiki=Wiki
|
|||
wiki.welcome=Καλώς ήρθατε στο Wiki.
|
||||
wiki.welcome_desc=Το wiki σας επιτρέπει να γράψετε και να μοιραστείτε τεκμηριώσεις (documentation) με άλλους συνεργάτες.
|
||||
wiki.desc=Γράψτε και μοιραστείτε τεκμηριώσεις με συνεργάτες.
|
||||
wiki.create_first_page=Δημιουργία της πρώτης σελίδας
|
||||
wiki.create_first_page=Δημιουργία πρώτης σελίδας
|
||||
wiki.page=Σελίδα
|
||||
wiki.filter_page=Φιλτράρισμα σελίδας
|
||||
wiki.new_page=Σελίδα
|
||||
|
@ -1981,7 +1981,7 @@ activity.active_prs_count_1=<strong>%d</strong> ενεργό pull request
|
|||
activity.active_prs_count_n=<strong>%d</strong> ενεργά pull request
|
||||
activity.merged_prs_count_1=Συγχωνευμένο pull request
|
||||
activity.merged_prs_count_n=Συγχωνευμένα pull request
|
||||
activity.opened_prs_count_1=Συνιστώμενο pull request
|
||||
activity.opened_prs_count_1=Νέα pull request
|
||||
activity.opened_prs_count_n=Συνιστώμενα pull requests
|
||||
activity.title.user_1=%d χρήστη
|
||||
activity.title.user_n=%d χρήστες
|
||||
|
@ -1993,7 +1993,7 @@ activity.merged_prs_label=Συγχωνευμένο
|
|||
activity.opened_prs_label=Προτεινόμενα
|
||||
activity.active_issues_count_1=<strong>%d</strong> ενεργό ζήτημα
|
||||
activity.active_issues_count_n=<strong>%d</strong> ενεργά ζητήματα
|
||||
activity.closed_issues_count_1=Κλειστό ζήτημα
|
||||
activity.closed_issues_count_1=Κλεισμένα ζητήματα
|
||||
activity.closed_issues_count_n=Κλειστά ζητήματα
|
||||
activity.title.issues_1=%d ζήτημα
|
||||
activity.title.issues_n=%d ζητήματα
|
||||
|
@ -2871,8 +2871,8 @@ emails=Email χρήστη
|
|||
config=Διαμόρφωση
|
||||
notices=Ειδοποιήσεις συστήματος
|
||||
monitor=Παρακολούθηση
|
||||
first_page=Πρώτο
|
||||
last_page=Τελευταίο
|
||||
first_page=Πρώτη
|
||||
last_page=Τελευταία
|
||||
total=Σύνολο: %d
|
||||
settings=Ρυθμίσεις διαχειριστή
|
||||
|
||||
|
@ -3402,14 +3402,14 @@ self_check.database_collation_case_insensitive = Η βάση δεδομένων
|
|||
[action]
|
||||
create_repo=δημιούργησε το αποθετήριο <a href="%s">%s</a>
|
||||
rename_repo=μετονόμασε το αποθετήριο από <code>%[1]s</code> σε <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=έκανε push στο <a href="%[2]s">%[3]s</a> σε <a href="%[1]s">%[4]s</a>
|
||||
commit_repo=έκανε push στο <a href="%[2]s">%[3]s</a> του <a href="%[1]s">%[4]s</a>
|
||||
create_issue=`άνοιξε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_issue=`έκλεισε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_issue=`άνοιξε ξανά το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
create_pull_request=`δημιούργησε το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_pull_request=`έκλεισε pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_pull_request=`άνοιξε ξανά το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_issue=`σχολίασε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_issue=`άφησε σχόλιο στο ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_pull=`σχολίασε στο pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
merge_pull_request=`συγχώνευσε το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
auto_merge_pull_request=`αυτόματη συγχώνευση του pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3770,7 +3770,7 @@ submodule=Υπομονάδα
|
|||
code_search_unavailable = Η αναζήτηση κώδικα δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
|
||||
keyword_search_unavailable = Η αναζήτηση με την χρήση λέξεων-κλειδιών δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
|
||||
runner_kind = Αναζήτηση runner...
|
||||
code_search_by_git_grep = Η αναζήτηση κώδικα εκτελείται με την χρήση της εντολής «git grep». Αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»), ίσως να παρουσιαστούν καλύτερα αποτελέσματα.
|
||||
code_search_by_git_grep = Για την αναζήτηση κώδικα, χρησιμοποιείται η εντολή «git grep». Ίσως να παρουσιαστούν καλύτερα αποτελέσματα, αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»).
|
||||
package_kind = Αναζήτηση πακέτων...
|
||||
project_kind = Αναζήτηση έργων...
|
||||
branch_kind = Αναζήτηση κλάδων...
|
||||
|
@ -3780,7 +3780,7 @@ search = Αναζήτηση...
|
|||
type_tooltip = Είδος αναζήτησης
|
||||
fuzzy = Στο περίπου
|
||||
fuzzy_tooltip = Να συμπεριληφθούν αποτελέσματα που μοιάζουν με τον όρο αναζήτησης
|
||||
match = Ταιριαστά
|
||||
match = Ακριβής
|
||||
match_tooltip = Να συμπεριληφθούν αποτελέσματα που ταιριάζουν με τον όρο αναζήτησης
|
||||
repo_kind = Αναζήτηση αποθετηρίων...
|
||||
user_kind = Αναζήτηση χρηστών...
|
||||
|
|
1
options/locale/locale_hi.ini
Normal file
1
options/locale/locale_hi.ini
Normal file
|
@ -0,0 +1 @@
|
|||
|
|
@ -145,7 +145,7 @@ confirm_delete_artifact = Вы точно хотите удалить артеф
|
|||
toggle_menu = Показать/скрыть меню
|
||||
filter.not_archived = Не архивированные
|
||||
filter = Фильтры
|
||||
filter.clear = Очистить фильтры
|
||||
filter.clear = Снять фильтры
|
||||
filter.is_fork = Ответвления
|
||||
filter.not_fork = Не ответвления
|
||||
filter.is_mirror = Зеркала
|
||||
|
@ -1895,15 +1895,15 @@ milestones.create_success=Этап «%s» создан.
|
|||
milestones.edit=Редактировать этап
|
||||
milestones.edit_subheader=Используйте лучшее описание контрольной точки, во избежание непонимания со стороны других людей.
|
||||
milestones.cancel=Отмена
|
||||
milestones.modify=Обновить этап
|
||||
milestones.modify=Сохранить этап
|
||||
milestones.edit_success=Этап «%s» обновлён.
|
||||
milestones.deletion=Удалить этап
|
||||
milestones.deletion_desc=Удаление этапа приведет к его удалению из всех связанных задач. Продолжить?
|
||||
milestones.deletion_success=Этап успешно удалён.
|
||||
milestones.filter_sort.earliest_due_data=Ближайший срок выполнения
|
||||
milestones.filter_sort.latest_due_date=Поздний срок выполнения
|
||||
milestones.filter_sort.least_complete=Менее полное
|
||||
milestones.filter_sort.most_complete=Более полное
|
||||
milestones.filter_sort.least_complete=Менее выполненные
|
||||
milestones.filter_sort.most_complete=Более выполненные
|
||||
milestones.filter_sort.most_issues=Больше задач
|
||||
milestones.filter_sort.least_issues=Меньше задач
|
||||
|
||||
|
@ -2323,7 +2323,7 @@ settings.protected_branch.delete_rule=Удалить правило
|
|||
settings.protected_branch_can_push=Разрешить отправку?
|
||||
settings.protected_branch_can_push_yes=Вы можете выполнять отправку
|
||||
settings.protected_branch_can_push_no=Вы не можете выполнять отправку
|
||||
settings.branch_protection=Правила защиты ветки «<b>%s</b>»
|
||||
settings.branch_protection=Правила доступа ветки «<b>%s</b>»
|
||||
settings.protect_this_branch=Защитить эту ветку
|
||||
settings.protect_this_branch_desc=Предотвращает удаление, ограничивает Push и слияние Git в ветку.
|
||||
settings.protect_disable_push=Запретить отправку изменений
|
||||
|
@ -2370,9 +2370,9 @@ settings.protect_unprotected_file_patterns=Шаблоны незащищённы
|
|||
settings.protect_unprotected_file_patterns_desc=Незащищенные файлы, которые допускается изменять напрямую, если пользователь имеет право на запись, несмотря на ограничение отправки изменений. Можно указать несколько шаблонов, разделяя их точкой с запятой («;»). О синтаксисе шаблонов читайте в документации <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> . Примеры: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Включить защиту
|
||||
settings.delete_protected_branch=Отключить защиту
|
||||
settings.update_protect_branch_success=Защита веток по правилу «%s» изменена.
|
||||
settings.remove_protected_branch_success=Защита веток по правилу «%s» удалена.
|
||||
settings.remove_protected_branch_failed=Не удалось удалить правило защиты веток «%s».
|
||||
settings.update_protect_branch_success=Правила доступа веток «%s» изменена.
|
||||
settings.remove_protected_branch_success=Правила доступа веток «%s» удалена.
|
||||
settings.remove_protected_branch_failed=Не удалось удалить правило доступа веток «%s».
|
||||
settings.protected_branch_deletion=Отключение защиты ветки
|
||||
settings.protected_branch_deletion_desc=Любой пользователь с разрешениями на запись сможет выполнять push в эту ветку. Вы уверены?
|
||||
settings.block_rejected_reviews=Блокировка слияния по отклоненным отзывам
|
||||
|
@ -2452,7 +2452,7 @@ diff.browse_source=Просмотр исходного кода
|
|||
diff.parent=родитель
|
||||
diff.commit=коммит
|
||||
diff.git-notes=Заметки
|
||||
diff.data_not_available=Различия недоступны
|
||||
diff.data_not_available=Различия отсутствуют или недоступны
|
||||
diff.options_button=Опции Diff
|
||||
diff.show_diff_stats=Показать статистику
|
||||
diff.download_patch=Скачать .patch
|
||||
|
@ -2626,7 +2626,7 @@ issues.blocked_by_user = Невозможно создать задачу в э
|
|||
settings.new_owner_blocked_doer = Вы заблокированы новым владельцем.
|
||||
settings.add_collaborator_blocked_them = Невозможно добавить соучастника, т.к. им заблокирован владелец репозитория.
|
||||
pulls.blocked_by_changed_protected_files_1 = Этот запрос на слияние заблокирован, т.к. им изменяется защищённый файл:
|
||||
object_format_helper = Формат объектов в репозитории. Невозможно изменить в дальнейшем. SHA1 даёт наибольшую совместимость.
|
||||
object_format_helper = Формат объектов в репозитории. Невозможно изменить в дальнейшем. SHA1 имеет наибольшую совместимость.
|
||||
pulls.blocked_by_outdated_branch = Этот запрос на слияние заблокирован, т.к. он устарел.
|
||||
pulls.blocked_by_changed_protected_files_n = Этот запрос на слияние заблокирован, т.к. им изменяются защищённые файлы:
|
||||
blame.ignore_revs.failed = Не удалось проигнорировать правки из <a href="%s">.git-blame-ignore-revs</a>.
|
||||
|
|
|
@ -638,6 +638,8 @@ Location = 地区
|
|||
To = 分支名
|
||||
AccessToken = 访问令牌
|
||||
Description = 描述
|
||||
Pronouns = 代称
|
||||
Biography = 简历
|
||||
|
||||
[user]
|
||||
change_avatar=修改头像
|
||||
|
@ -2105,7 +2107,7 @@ settings.sync_mirror=立即同步
|
|||
settings.pull_mirror_sync_in_progress=正在从远程 %s 拉取更改。
|
||||
settings.push_mirror_sync_in_progress=正在推送变更到远程 %s 。
|
||||
settings.site=网站
|
||||
settings.update_settings=更新仓库设置
|
||||
settings.update_settings=保存设置
|
||||
settings.update_mirror_settings=更新镜像设置
|
||||
settings.branches.switch_default_branch=切换默认分支
|
||||
settings.branches.update_default_branch=更新默认分支
|
||||
|
@ -2287,7 +2289,7 @@ settings.event_issue_assign=工单已分配
|
|||
settings.event_issue_assign_desc=工单已被指派或取消指派。
|
||||
settings.event_issue_label=工单已分类
|
||||
settings.event_issue_label_desc=工单标签被更新或清除。
|
||||
settings.event_issue_milestone=工单被收入里程碑中
|
||||
settings.event_issue_milestone=工单已被收入里程碑中
|
||||
settings.event_issue_milestone_desc=工单被收入或取消收入里程碑中。
|
||||
settings.event_issue_comment=工单评论
|
||||
settings.event_issue_comment_desc=工单评论被创建、编辑或删除
|
||||
|
@ -2737,6 +2739,16 @@ release.download_count_one = %s 下载
|
|||
release.download_count_few = %s 下载
|
||||
release.system_generated = 此附件是自动生成的。
|
||||
pulls.ready_for_review = 准备好接受评审了吗?
|
||||
settings.web_hook_name_sourcehut_builds = SourceHut 构建
|
||||
settings.graphql_url = GraphQL URL 链接
|
||||
settings.sourcehut_builds.access_token_helper = 已授予 JOBS:RW 权限的访问令牌。可在 meta.sr.ht 上生成标准的 <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht 令牌</a>或<a target="_blank" rel="noopener noreferrer" href="%s">带有密匙访问权限的 builds.sr.ht 令牌</a> 。
|
||||
settings.matrix.access_token_helper = 推荐为此设立专门的 Matrix 账户。访问令牌可从 Element Web 客户端(在隐私/无痕模式选项卡中打开)> 用户菜单(左上角)> 所有设置 > 帮助及关于 > 高级 > 访问令牌(在主服务器 URL 下方)检索。获取完成后,请直接关闭隐私/无痕选项卡(注销会使令牌失效)。
|
||||
settings.event_pull_request_enforcement = 执行
|
||||
settings.sourcehut_builds.manifest_path = 构建清单路径
|
||||
settings.sourcehut_builds.visibility = 作业可见性
|
||||
settings.matrix.room_id_helper = 房间 ID 可从 Element Web 客户端 > 房间设置 > 高级 > 内部房间 ID 获得。例如:%s。
|
||||
release.hide_archive_links_helper = 为此版本发布隐藏自动生成的源代码存档。例如,如果您准备自行上传。
|
||||
release.hide_archive_links = 隐藏自动生成的存档
|
||||
|
||||
[graphs]
|
||||
component_loading=正在加载 %s...
|
||||
|
@ -3420,6 +3432,8 @@ auths.tips.gmail_settings = Gmail 设置:
|
|||
auths.tip.gitlab_new = 在 https://gitlab.com/-/profile/applications 上注册新应用
|
||||
config_settings = 设置
|
||||
config_summary = 概况
|
||||
auths.default_domain_name = 用于电子邮件地址的默认域名
|
||||
config.open_with_editor_app_help = 克隆菜单中的“打开方式”所用的编辑器。如果留空,将使用默认值。展开以查看默认值。
|
||||
|
||||
[action]
|
||||
create_repo=创建了仓库 <a href="%s">%s</a>
|
||||
|
@ -3773,6 +3787,7 @@ variables.creation.success=变量 “%s” 添加成功。
|
|||
variables.update.failed=编辑变量失败。
|
||||
variables.update.success=该变量已被编辑。
|
||||
runs.workflow = 工作流
|
||||
runs.no_job_without_needs = 工作流必须至少包含一组没有依赖的作业。
|
||||
|
||||
[projects]
|
||||
type-1.display_name=个人项目
|
||||
|
@ -3807,7 +3822,7 @@ runner_kind = 搜索Runners...
|
|||
no_results = 未找到匹配的结果。
|
||||
type_tooltip = 搜索类型
|
||||
fuzzy = 模糊
|
||||
code_search_by_git_grep = 当前搜索结果由 git grep 提供,如果站点管理员启用了仓库索引可能会有更好的结果。
|
||||
code_search_by_git_grep = 当前搜索结果由 git grep 提供,如果站点管理员启用了代码索引可能会有更好的结果。
|
||||
match = 匹配
|
||||
match_tooltip = 仅包含与搜索词完全匹配的结果
|
||||
fuzzy_tooltip = 在搜索结果中包含与搜索词相近的项目
|
||||
|
|
1
release-notes/8.0.0/3383.md
Normal file
1
release-notes/8.0.0/3383.md
Normal file
|
@ -0,0 +1 @@
|
|||
The default config for `database.MAX_OPEN_CONNS` changed from 0 (unlimited) to 100 to avoid problems if it exceeds the limit by the database server. If you require high concurrency, try to increase this value for both Forgejo **and your database server**. [`Limit database max connections by default`](https://codeberg.org/forgejo/forgejo/pulls/3383)
|
|
@ -57,7 +57,7 @@ func Activity(ctx *context.Context) {
|
|||
ctx.Repo.CanRead(unit.TypeReleases),
|
||||
ctx.Repo.CanRead(unit.TypeIssues),
|
||||
ctx.Repo.CanRead(unit.TypePullRequests),
|
||||
ctx.Repo.CanRead(unit.TypeCode)); err != nil {
|
||||
ctx.Repo.CanRead(unit.TypeCode) && !ctx.Repo.Repository.IsEmpty); err != nil {
|
||||
ctx.ServerError("GetActivityStats", err)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
tplWatching base.TplName = "repo/issue/view_content/watching"
|
||||
tplWatching base.TplName = "repo/issue/view_content/sidebar/watching"
|
||||
)
|
||||
|
||||
// IssueWatch sets issue watching
|
||||
|
|
|
@ -1423,16 +1423,16 @@ func registerRoutes(m *web.Route) {
|
|||
m.Group("/contributors", func() {
|
||||
m.Get("", repo.Contributors)
|
||||
m.Get("/data", repo.ContributorsData)
|
||||
})
|
||||
}, repo.MustBeNotEmpty, context.RequireRepoReaderOr(unit.TypeCode))
|
||||
m.Group("/code-frequency", func() {
|
||||
m.Get("", repo.CodeFrequency)
|
||||
m.Get("/data", repo.CodeFrequencyData)
|
||||
})
|
||||
}, repo.MustBeNotEmpty, context.RequireRepoReaderOr(unit.TypeCode))
|
||||
m.Group("/recent-commits", func() {
|
||||
m.Get("", repo.RecentCommits)
|
||||
m.Get("/data", repo.RecentCommitsData)
|
||||
})
|
||||
}, context.RepoRef(), repo.MustBeNotEmpty, context.RequireRepoReaderOr(unit.TypePullRequests, unit.TypeIssues, unit.TypeReleases))
|
||||
}, repo.MustBeNotEmpty, context.RequireRepoReaderOr(unit.TypeCode))
|
||||
}, context.RepoRef(), context.RequireRepoReaderOr(unit.TypeCode, unit.TypePullRequests, unit.TypeIssues, unit.TypeReleases))
|
||||
|
||||
m.Group("/activity_author_data", func() {
|
||||
m.Get("", repo.ActivityAuthors)
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
<div role="main" aria-label="{{.Title}}" class="page-content repository commits">
|
||||
{{template "repo/header" .}}
|
||||
<div class="ui container flex-container">
|
||||
<div class="flex-container-nav">
|
||||
{{template "repo/navbar" .}}
|
||||
</div>
|
||||
{{if and (not .IsEmptyRepo) (.Permission.CanRead $.UnitTypeCode)}}
|
||||
<div class="flex-container-nav">
|
||||
{{template "repo/navbar" .}}
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="flex-container-main">
|
||||
{{if .PageIsPulse}}{{template "repo/pulse" .}}{{end}}
|
||||
{{if .PageIsContributors}}{{template "repo/contributors" .}}{{end}}
|
||||
|
|
|
@ -159,7 +159,7 @@
|
|||
</a>
|
||||
{{end}}
|
||||
|
||||
{{if and (.Permission.CanReadAny $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases) (not .IsEmptyRepo)}}
|
||||
{{if and (.Permission.CanReadAny $.UnitTypeCode $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases)}}
|
||||
<a class="{{if .PageIsActivity}}active {{end}}item" href="{{.RepoLink}}/activity">
|
||||
{{svg "octicon-pulse"}} {{ctx.Locale.Tr "repo.activity"}}
|
||||
</a>
|
||||
|
|
|
@ -1,17 +1,6 @@
|
|||
<div class="ui watching">
|
||||
<span class="text"><strong>{{ctx.Locale.Tr "notification.notifications"}}</strong></span>
|
||||
<div class="tw-mt-2">
|
||||
<form hx-boost="true" hx-sync="this:replace" hx-target="this" method="post" action="{{.Issue.Link}}/watch">
|
||||
<input type="hidden" name="watch" value="{{if $.IssueWatch.IsWatching}}0{{else}}1{{end}}">
|
||||
<button class="fluid ui button">
|
||||
{{if $.IssueWatch.IsWatching}}
|
||||
{{svg "octicon-mute" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.issues.unsubscribe"}}
|
||||
{{else}}
|
||||
{{svg "octicon-unmute" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.issues.subscribe"}}
|
||||
{{end}}
|
||||
</button>
|
||||
</form>
|
||||
{{template "repo/issue/view_content/sidebar/watching" .}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
12
templates/repo/issue/view_content/sidebar/watching.tmpl
Normal file
12
templates/repo/issue/view_content/sidebar/watching.tmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
<form hx-boost="true" hx-sync="this:replace" hx-target="this" method="post" action="{{.Issue.Link}}/watch">
|
||||
<input type="hidden" name="watch" value="{{if $.IssueWatch.IsWatching}}0{{else}}1{{end}}">
|
||||
<button class="fluid ui button">
|
||||
{{if $.IssueWatch.IsWatching}}
|
||||
{{svg "octicon-mute" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.issues.unsubscribe"}}
|
||||
{{else}}
|
||||
{{svg "octicon-unmute" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.issues.subscribe"}}
|
||||
{{end}}
|
||||
</button>
|
||||
</form>
|
|
@ -86,18 +86,18 @@
|
|||
{{else}}
|
||||
{{if $newMirrorsEntirelyEnabled}}
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs"}}
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pushing-to-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_title"}}</a><br><br>
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/user/repo-mirror#pushing-to-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_title"}}</a><br><br>
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.pull_mirror_instructions"}}
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_pull_section"}}</a><br>
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/user/repo-mirror#pulling-from-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_pull_section"}}</a><br>
|
||||
{{else if $onlyNewPushMirrorsEnabled}}
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.disabled_pull_mirror.instructions"}}
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.more_information_if_disabled"}}
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_title"}}</a><br>
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/user/repo-mirror#pulling-from-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_title"}}</a><br>
|
||||
{{else if $onlyNewPullMirrorsEnabled}}
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.instructions"}}
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning"}}
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.more_information_if_disabled"}}
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com/usage/repo-mirror#pulling-from-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_title"}}</a><br><br>
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/user/repo-mirror#pulling-from-a-remote-repository">{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.doc_link_title"}}</a><br><br>
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.disabled_push_mirror.info"}}
|
||||
{{if $existingPushMirror}}
|
||||
{{ctx.Locale.Tr "repo.settings.mirror_settings.docs.can_still_use"}}
|
||||
|
|
|
@ -4,13 +4,20 @@
|
|||
package integration
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
unit_model "code.gitea.io/gitea/models/unit"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/test"
|
||||
repo_service "code.gitea.io/gitea/services/repository"
|
||||
"code.gitea.io/gitea/tests"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
@ -63,3 +70,122 @@ func TestRepoActivity(t *testing.T) {
|
|||
assert.Len(t, list.Nodes, 3)
|
||||
})
|
||||
}
|
||||
|
||||
func TestRepoActivityAllUnitsDisabled(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "user1"})
|
||||
session := loginUser(t, user.Name)
|
||||
|
||||
unit_model.LoadUnitConfig()
|
||||
|
||||
// Create a repo, with no unit enabled.
|
||||
repo, err := repo_service.CreateRepository(db.DefaultContext, user, user, repo_service.CreateRepoOptions{
|
||||
Name: "empty-repo",
|
||||
AutoInit: false,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotEmpty(t, repo)
|
||||
|
||||
enabledUnits := make([]repo_model.RepoUnit, 0)
|
||||
disabledUnits := []unit_model.Type{unit_model.TypeCode, unit_model.TypeIssues, unit_model.TypePullRequests, unit_model.TypeReleases}
|
||||
err = repo_service.UpdateRepositoryUnits(db.DefaultContext, repo, enabledUnits, disabledUnits)
|
||||
assert.NoError(t, err)
|
||||
|
||||
req := NewRequest(t, "GET", fmt.Sprintf("%s/activity", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/contributors", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/code-frequency", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/recent-commits", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
}
|
||||
|
||||
func TestRepoActivityOnlyCodeUnitWithEmptyRepo(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "user1"})
|
||||
session := loginUser(t, user.Name)
|
||||
|
||||
unit_model.LoadUnitConfig()
|
||||
|
||||
// Create a empty repo, with only code unit enabled.
|
||||
repo, err := repo_service.CreateRepository(db.DefaultContext, user, user, repo_service.CreateRepoOptions{
|
||||
Name: "empty-repo",
|
||||
AutoInit: false,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotEmpty(t, repo)
|
||||
|
||||
enabledUnits := make([]repo_model.RepoUnit, 1)
|
||||
enabledUnits[0] = repo_model.RepoUnit{RepoID: repo.ID, Type: unit_model.TypeCode}
|
||||
disabledUnits := []unit_model.Type{unit_model.TypeIssues, unit_model.TypePullRequests, unit_model.TypeReleases}
|
||||
err = repo_service.UpdateRepositoryUnits(db.DefaultContext, repo, enabledUnits, disabledUnits)
|
||||
assert.NoError(t, err)
|
||||
|
||||
req := NewRequest(t, "GET", fmt.Sprintf("%s/activity", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusOK)
|
||||
|
||||
// Git repo empty so no activity for contributors etc
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/contributors", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/code-frequency", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/recent-commits", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
}
|
||||
|
||||
func TestRepoActivityOnlyCodeUnitWithNonEmptyRepo(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "user1"})
|
||||
session := loginUser(t, user.Name)
|
||||
|
||||
unit_model.LoadUnitConfig()
|
||||
|
||||
// Create a repo, with only code unit enabled.
|
||||
repo, _, f := CreateDeclarativeRepo(t, user, "", []unit_model.Type{unit_model.TypeCode}, nil, nil)
|
||||
defer f()
|
||||
|
||||
req := NewRequest(t, "GET", fmt.Sprintf("%s/activity", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusOK)
|
||||
|
||||
// Git repo not empty so activity for contributors etc
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/contributors", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusOK)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/code-frequency", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusOK)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/recent-commits", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusOK)
|
||||
}
|
||||
|
||||
func TestRepoActivityOnlyIssuesUnit(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "user1"})
|
||||
session := loginUser(t, user.Name)
|
||||
|
||||
unit_model.LoadUnitConfig()
|
||||
|
||||
// Create a empty repo, with only code unit enabled.
|
||||
repo, err := repo_service.CreateRepository(db.DefaultContext, user, user, repo_service.CreateRepoOptions{
|
||||
Name: "empty-repo",
|
||||
AutoInit: false,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotEmpty(t, repo)
|
||||
|
||||
enabledUnits := make([]repo_model.RepoUnit, 1)
|
||||
enabledUnits[0] = repo_model.RepoUnit{RepoID: repo.ID, Type: unit_model.TypeIssues}
|
||||
disabledUnits := []unit_model.Type{unit_model.TypeCode, unit_model.TypePullRequests, unit_model.TypeReleases}
|
||||
err = repo_service.UpdateRepositoryUnits(db.DefaultContext, repo, enabledUnits, disabledUnits)
|
||||
assert.NoError(t, err)
|
||||
|
||||
req := NewRequest(t, "GET", fmt.Sprintf("%s/activity", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusOK)
|
||||
|
||||
// Git repo empty so no activity for contributors etc
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/contributors", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/code-frequency", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
req = NewRequest(t, "GET", fmt.Sprintf("%s/activity/recent-commits", repo.Link()))
|
||||
session.MakeRequest(t, req, http.StatusNotFound)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue