// Copyright 2019 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package setting import ( "os/exec" "path" "path/filepath" "strings" "code.gitea.io/gitea/modules/log" ) // enumerates all the policy repository creating const ( RepoCreatingLastUserVisibility = "last" RepoCreatingPrivate = "private" RepoCreatingPublic = "public" ) // ItemsPerPage maximum items per page in forks, watchers and stars of a repo const ItemsPerPage = 40 // Repository settings var ( Repository = struct { DetectedCharsetsOrder []string DetectedCharsetScore map[string]int `ini:"-"` AnsiCharset string ForcePrivate bool DefaultPrivate string DefaultPushCreatePrivate bool MaxCreationLimit int PreferredLicenses []string DisableHTTPGit bool AccessControlAllowOrigin string UseCompatSSHURI bool GoGetCloneURLProtocol string DefaultCloseIssuesViaCommitsInAnyBranch bool EnablePushCreateUser bool EnablePushCreateOrg bool DisabledRepoUnits []string DefaultRepoUnits []string DefaultForkRepoUnits []string PrefixArchiveFiles bool DisableMigrations bool DisableStars bool `ini:"DISABLE_STARS"` DefaultBranch string AllowAdoptionOfUnadoptedRepositories bool AllowDeleteOfUnadoptedRepositories bool DisableDownloadSourceArchives bool AllowForkWithoutMaximumLimit bool // Repository editor settings Editor struct { LineWrapExtensions []string } `ini:"-"` // Repository upload settings Upload struct { Enabled bool TempPath string AllowedTypes string FileMaxSize int64 MaxFiles int } `ini:"-"` // Repository local settings Local struct { LocalCopyPath string } `ini:"-"` // Pull request settings PullRequest struct { WorkInProgressPrefixes []string CloseKeywords []string ReopenKeywords []string DefaultMergeStyle string DefaultMergeMessageCommitsLimit int DefaultMergeMessageSize int DefaultMergeMessageAllAuthors bool DefaultMergeMessageMaxApprovers int DefaultMergeMessageOfficialApproversOnly bool PopulateSquashCommentWithCommitMessages bool AddCoCommitterTrailers bool TestConflictingPatchesWithGitApply bool RetargetChildrenOnMerge bool } `ini:"repository.pull-request"` // Issue Setting Issue struct { LockReasons []string MaxPinned int } `ini:"repository.issue"` Release struct { AllowedTypes string DefaultPagingNum int } `ini:"repository.release"` Signing struct { SigningKey string SigningName string SigningEmail string InitialCommit []string CRUDActions []string `ini:"CRUD_ACTIONS"` Merges []string Wiki []string DefaultTrustModel string } `ini:"repository.signing"` }{ DetectedCharsetsOrder: []string{ "UTF-8", "UTF-16BE", "UTF-16LE", "UTF-32BE", "UTF-32LE", "ISO-8859-1", "windows-1252", "ISO-8859-2", "windows-1250", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "windows-1253", "ISO-8859-8-I", "windows-1255", "ISO-8859-8", "windows-1251", "windows-1256", "KOI8-R", "ISO-8859-9", "windows-1254", "Shift_JIS", "GB18030", "EUC-JP", "EUC-KR", "Big5", "ISO-2022-JP", "ISO-2022-KR", "ISO-2022-CN", "IBM424_rtl", "IBM424_ltr", "IBM420_rtl", "IBM420_ltr", }, DetectedCharsetScore: map[string]int{}, AnsiCharset: "", ForcePrivate: false, DefaultPrivate: RepoCreatingLastUserVisibility, DefaultPushCreatePrivate: true, MaxCreationLimit: -1, PreferredLicenses: []string{"Apache License 2.0", "MIT License"}, DisableHTTPGit: false, AccessControlAllowOrigin: "", UseCompatSSHURI: false, DefaultCloseIssuesViaCommitsInAnyBranch: false, EnablePushCreateUser: false, EnablePushCreateOrg: false, DisabledRepoUnits: []string{}, DefaultRepoUnits: []string{}, DefaultForkRepoUnits: []string{}, PrefixArchiveFiles: true, DisableMigrations: false, DisableStars: false, DefaultBranch: "main", AllowForkWithoutMaximumLimit: true, // Repository editor settings Editor: struct { LineWrapExtensions []string }{ LineWrapExtensions: strings.Split(".txt,.md,.markdown,.mdown,.mkd,.livemd,", ","), }, // Repository upload settings Upload: struct { Enabled bool TempPath string AllowedTypes string FileMaxSize int64 MaxFiles int }{ Enabled: true, TempPath: "data/tmp/uploads", AllowedTypes: "", FileMaxSize: 50, MaxFiles: 5, }, // Repository local settings Local: struct { LocalCopyPath string }{ LocalCopyPath: "tmp/local-repo", }, // Pull request settings PullRequest: struct { WorkInProgressPrefixes []string CloseKeywords []string ReopenKeywords []string DefaultMergeStyle string DefaultMergeMessageCommitsLimit int DefaultMergeMessageSize int DefaultMergeMessageAllAuthors bool DefaultMergeMessageMaxApprovers int DefaultMergeMessageOfficialApproversOnly bool PopulateSquashCommentWithCommitMessages bool AddCoCommitterTrailers bool TestConflictingPatchesWithGitApply bool RetargetChildrenOnMerge bool }{ WorkInProgressPrefixes: []string{"WIP:", "[WIP]"}, // Same as GitHub. See // https://help.github.com/articles/closing-issues-via-commit-messages CloseKeywords: strings.Split("close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved", ","), ReopenKeywords: strings.Split("reopen,reopens,reopened", ","), DefaultMergeStyle: "merge", DefaultMergeMessageCommitsLimit: 50, DefaultMergeMessageSize: 5 * 1024, DefaultMergeMessageAllAuthors: false, DefaultMergeMessageMaxApprovers: 10, DefaultMergeMessageOfficialApproversOnly: true, PopulateSquashCommentWithCommitMessages: false, AddCoCommitterTrailers: true, RetargetChildrenOnMerge: true, }, // Issue settings Issue: struct { LockReasons []string MaxPinned int }{ LockReasons: strings.Split("Too heated,Off-topic,Spam,Resolved", ","), MaxPinned: 3, }, Release: struct { AllowedTypes string DefaultPagingNum int }{ AllowedTypes: "", DefaultPagingNum: 10, }, // Signing settings Signing: struct { SigningKey string SigningName string SigningEmail string InitialCommit []string CRUDActions []string `ini:"CRUD_ACTIONS"` Merges []string Wiki []string DefaultTrustModel string }{ SigningKey: "default", SigningName: "", SigningEmail: "", InitialCommit: []string{"always"}, CRUDActions: []string{"pubkey", "twofa", "parentsigned"}, Merges: []string{"pubkey", "twofa", "basesigned", "commitssigned"}, Wiki: []string{"never"}, DefaultTrustModel: "collaborator", }, } RepoRootPath string ScriptType = "bash" ) func loadRepositoryFrom(rootCfg ConfigProvider) { var err error // Determine and create root git repository path. sec := rootCfg.Section("repository") Repository.DisableHTTPGit = sec.Key("DISABLE_HTTP_GIT").MustBool() Repository.UseCompatSSHURI = sec.Key("USE_COMPAT_SSH_URI").MustBool() Repository.GoGetCloneURLProtocol = sec.Key("GO_GET_CLONE_URL_PROTOCOL").MustString("https") Repository.MaxCreationLimit = sec.Key("MAX_CREATION_LIMIT").MustInt(-1) Repository.DefaultBranch = sec.Key("DEFAULT_BRANCH").MustString(Repository.DefaultBranch) RepoRootPath = sec.Key("ROOT").MustString(path.Join(AppDataPath, "gitea-repositories")) if !filepath.IsAbs(RepoRootPath) { RepoRootPath = filepath.Join(AppWorkPath, RepoRootPath) } else { RepoRootPath = filepath.Clean(RepoRootPath) } checkOverlappedPath("[repository].ROOT", RepoRootPath) defaultDetectedCharsetsOrder := make([]string, 0, len(Repository.DetectedCharsetsOrder)) for _, charset := range Repository.DetectedCharsetsOrder { defaultDetectedCharsetsOrder = append(defaultDetectedCharsetsOrder, strings.ToLower(strings.TrimSpace(charset))) } ScriptType = sec.Key("SCRIPT_TYPE").MustString("bash") if _, err := exec.LookPath(ScriptType); err != nil { log.Warn("SCRIPT_TYPE %q is not on the current PATH. Are you sure that this is the correct SCRIPT_TYPE?", ScriptType) } if err = sec.MapTo(&Repository); err != nil { log.Fatal("Failed to map Repository settings: %v", err) } else if err = rootCfg.Section("repository.editor").MapTo(&Repository.Editor); err != nil { log.Fatal("Failed to map Repository.Editor settings: %v", err) } else if err = rootCfg.Section("repository.upload").MapTo(&Repository.Upload); err != nil { log.Fatal("Failed to map Repository.Upload settings: %v", err) } else if err = rootCfg.Section("repository.local").MapTo(&Repository.Local); err != nil { log.Fatal("Failed to map Repository.Local settings: %v", err) } else if err = rootCfg.Section("repository.pull-request").MapTo(&Repository.PullRequest); err != nil { log.Fatal("Failed to map Repository.PullRequest settings: %v", err) } if !rootCfg.Section("packages").Key("ENABLED").MustBool(Packages.Enabled) { Repository.DisabledRepoUnits = append(Repository.DisabledRepoUnits, "repo.packages") } if !rootCfg.Section("actions").Key("ENABLED").MustBool(Actions.Enabled) { Repository.DisabledRepoUnits = append(Repository.DisabledRepoUnits, "repo.actions") } // Handle default trustmodel settings Repository.Signing.DefaultTrustModel = strings.ToLower(strings.TrimSpace(Repository.Signing.DefaultTrustModel)) if Repository.Signing.DefaultTrustModel == "default" { Repository.Signing.DefaultTrustModel = "collaborator" } // Handle preferred charset orders preferred := make([]string, 0, len(Repository.DetectedCharsetsOrder)) for _, charset := range Repository.DetectedCharsetsOrder { canonicalCharset := strings.ToLower(strings.TrimSpace(charset)) preferred = append(preferred, canonicalCharset) // remove it from the defaults for i, charset := range defaultDetectedCharsetsOrder { if charset == canonicalCharset { defaultDetectedCharsetsOrder = append(defaultDetectedCharsetsOrder[:i], defaultDetectedCharsetsOrder[i+1:]...) break } } } i := 0 for _, charset := range preferred { // Add the defaults if charset == "defaults" { for _, charset := range defaultDetectedCharsetsOrder { canonicalCharset := strings.ToLower(strings.TrimSpace(charset)) if _, has := Repository.DetectedCharsetScore[canonicalCharset]; !has { Repository.DetectedCharsetScore[canonicalCharset] = i i++ } } continue } if _, has := Repository.DetectedCharsetScore[charset]; !has { Repository.DetectedCharsetScore[charset] = i i++ } } if !filepath.IsAbs(Repository.Upload.TempPath) { Repository.Upload.TempPath = path.Join(AppWorkPath, Repository.Upload.TempPath) } if err := loadRepoArchiveFrom(rootCfg); err != nil { log.Fatal("loadRepoArchiveFrom: %v", err) } } lue='backport/38630/stable29'>backport/38630/stable29 Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
summaryrefslogtreecommitdiffstats
path: root/settings/l10n/mk.json
blob: ae7f4a91aff4060d471b277e2e342d052e8b0892 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
{ "translations": {
    "Security & setup warnings" : "Предупредувања за сигурност и подесувања",
    "Sharing" : "Споделување",
    "Server-side encryption" : "Енкрипција на страна на серверот",
    "External Storage" : "Надворешно складиште",
    "Cron" : "Крон",
    "Email server" : "Сервер за е-пошта",
    "Log" : "Записник",
    "Tips & tricks" : "Совети и трикови",
    "Updates" : "Ажурирања",
    "Couldn't remove app." : "Не можам да ја отстранам апликацијата.",
    "Language changed" : "Јазикот е сменет",
    "Invalid request" : "Неправилно барање",
    "Authentication error" : "Грешка во автентикација",
    "Admins can't remove themself from the admin group" : "Администраторите неможе да се избришат себеси од админ групата",
    "Unable to add user to group %s" : "Неможе да додадам корисник во група %s",
    "Unable to remove user from group %s" : "Неможе да избришам корисник од група %s",
    "Couldn't update app." : "Не можам да ја надградам апликацијата.",
    "Wrong password" : "Погрешна лозинка",
    "No user supplied" : "Нема корисничко име",
    "Please provide an admin recovery password, otherwise all user data will be lost" : "Ве молам дадете лозинка за поврат на администраторот, или сите кориснички податоци ќе бидат изгубени",
    "Wrong admin recovery password. Please check the password and try again." : "Погрешна лозинка за поврат на администраторот. Ве молам проверете ја лозинката и пробајте повторно.",
    "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Позадината не подржува промена на лозинката, но корисничкиот клуч за енкрипција беше успешно ажуриран.",
    "Unable to change password" : "Вашата лозинка неможе да се смени",
    "Enabled" : "Овозможен",
    "Not enabled" : "Не е овозможено",
    "Federated Cloud Sharing" : "Федерирано клауд споделување",
    "A problem occurred, please check your log files (Error: %s)" : "Се случи грешка, ве молам проверете ги вашите датотеки за логови (Грешка: %s)",
    "Migration Completed" : "Миграцијата заврши",
    "Group already exists." : "Групата веќе постои.",
    "Unable to add group." : "Не можам да додадам група.",
    "Unable to delete group." : "Не можам да избришам група.",
    "log-level out of allowed range" : "нивото на логирање е надвор од дозволениот опсег",
    "Saved" : "Снимено",
    "test email settings" : "провери ги нагодувањата за електронска пошта",
    "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите подесувања. (Error: %s)",
    "Email sent" : "Е-порака пратена",
    "Invalid mail address" : "Неправилна електронска адреса/пошта",
    "A user with that name already exists." : "Корисник со ова име веќе постои.",
    "Unable to create user." : "Неможе да додадам корисник.",
    "Your %s account was created" : "Вашата %s сметка е креирана",
    "Unable to delete user." : "Неможам да избришам корисник",
    "Forbidden" : "Забрането",
    "Invalid user" : "Неправилен корисник",
    "Unable to change mail address" : "Не можам да ја променам електронската адреса/пошта",
    "Email saved" : "Електронската пошта е снимена",
    "Your full name has been changed." : "Вашето целосно име е променето.",
    "Unable to change full name" : "Не можам да го променам целото име",
    "Migration started …" : "Миграцијата е започнаа ...",
    "Sending..." : "Испраќам...",
    "Official" : "Официјален",
    "Approved" : "Одобрен",
    "Experimental" : "Експериментален",
    "All" : "Сите",
    "No apps found for your version" : "За вашата верзија не се пронајдени апликации",
    "Please wait...." : "Ве молам почекајте ...",
    "Error while disabling app" : "Грешка при исклучувањето на апликацијата",
    "Disable" : "Оневозможи",
    "Enable" : "Овозможи",
    "Error while enabling app" : "Грешка при вклучувањето на апликацијата",
    "Updating...." : "Надградувам ...",
    "Error while updating app" : "Грешка додека ја надградувам апликацијата",
    "Updated" : "Надграден",
    "Uninstalling ...." : "Деинсталирам ...",
    "Error while uninstalling app" : "Грешка при деинсталација на апликацијата",
    "Uninstall" : "Деинсталирај",
    "App update" : "Надградба на апликацијата",
    "Valid until {date}" : "Валидно до {date}",
    "Delete" : "Избриши",
    "An error occurred: {message}" : "Се случи грешка: {message}",
    "Select a profile picture" : "Одбери фотографија за профилот",
    "Very weak password" : "Многу слаба лозинка",
    "Weak password" : "Слаба лозинка",
    "So-so password" : "Така така лозинка",
    "Good password" : "Добра лозинка",
    "Strong password" : "Јака лозинка",
    "Groups" : "Групи",
    "Unable to delete {objName}" : "Не можам да избришам {objName}",
    "Error creating group" : "Грешка при креирање на група",
    "A valid group name must be provided" : "Мора да се обезбеди валидно име на група",
    "undo" : "врати",
    "no group" : "нема група",
    "never" : "никогаш",
    "deleted {userName}" : "избришан {userName}",
    "add group" : "додади група",
    "A valid username must be provided" : "Мора да се обезбеди валидно корисничко име ",
    "Error creating user" : "Грешка при креирање на корисникот",
    "A valid password must be provided" : "Мора да се обезбеди валидна лозинка",
    "__language_name__" : "__language_name__",
    "Personal info" : "Лични податоци",
    "Sync clients" : "Клиенти за синхронизација",
    "Info, warnings, errors and fatal issues" : "Информации, предупредувања, грешки и фатални работи",
    "Warnings, errors and fatal issues" : "Предупредувања, грешки и фатални работи",
    "Errors and fatal issues" : "Грешки и фатални работи",
    "Fatal issues only" : "Само фатални работи",
    "None" : "Ништо",
    "Login" : "Најава",
    "Plain" : "Чиста",
    "NT LAN Manager" : "NT LAN Менаџер",
    "SSL" : "SSL",
    "TLS" : "TLS",
    "Open documentation" : "Отвори ја документацијата",
    "Allow apps to use the Share API" : "Дозволете апликациите да го користат API-то за споделување",
    "Allow users to share via link" : "Допушти корисниците да споделуваат со линкови",
    "Enforce password protection" : "Наметни заштита на лозинка",
    "Allow public uploads" : "Дозволи јавен аплоуд",
    "Set default expiration date" : "Постави основен датум на истекување",
    "Expire after " : "Истекува по",
    "days" : "денови",
    "Enforce expiration date" : "Наметни датум на траење",
    "Allow resharing" : "Овозможи повторно споделување",
    "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи",
    "Exclude groups from sharing" : "Исклучи групи од споделување",
    "Execute one task with each page loaded" : "Изврши по една задача со секоја вчитана страница",
    "This is used for sending out notifications." : "Ова се користи за испраќање на известувања.",
    "Send mode" : "Мод на испраќање",
    "Encryption" : "Енкрипција",
    "From address" : "Од адреса",
    "mail" : "Електронска пошта",
    "Authentication method" : "Метод на автентификација",
    "Authentication required" : "Потребна е автентификација",
    "Server address" : "Адреса на сервер",
    "Port" : "Порта",
    "Credentials" : "Акредитиви",
    "SMTP Username" : "SMTP корисничко име",
    "SMTP Password" : "SMTP лозинка",
    "Test email settings" : "Провери ги нагодувањаа за електронска пошта",
    "Send email" : "Испрати пошта",
    "More" : "Повеќе",
    "Less" : "Помалку",
    "Version" : "Верзија",
    "Documentation:" : "Документација:",
    "Enable only for specific groups" : "Овозможи само на специфицирани групи",
    "Cheers!" : "Поздрав!",
    "Forum" : "Форум",
    "Profile picture" : "Фотографија за профил",
    "Upload new" : "Префрли нова",
    "Remove image" : "Отстрани ја фотографијата",
    "Cancel" : "Откажи",
    "Email" : "Е-пошта",
    "Your email address" : "Вашата адреса за е-пошта",
    "Password" : "Лозинка",
    "Unable to change your password" : "Вашата лозинка неможе да се смени",
    "Current password" : "Моментална лозинка",
    "New password" : "Нова лозинка",
    "Change password" : "Смени лозинка",
    "Language" : "Јазик",
    "Help translate" : "Помогни во преводот",
    "Get the apps to sync your files" : "Преземете апликации за синхронизирање на вашите датотеки",
    "Show First Run Wizard again" : "Прикажи го повторно волшебникот при првото стартување",
    "Username" : "Корисничко име",
    "Create" : "Создај",
    "Admin Recovery Password" : "Обновување на Admin лозинката",
    "Add Group" : "Додади група",
    "Group" : "Група",
    "Everyone" : "Секој",
    "Admins" : "Администратори",
    "Default Quota" : "Предефинирана квота",
    "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ве молам внесете квота за просторот (нпр: \"512 MB\" или \"12 GB\")",
    "Unlimited" : "Неограничено",
    "Other" : "Останато",
    "Full Name" : "Цело име",
    "Quota" : "Квота",
    "Storage Location" : "Локација на сториџот",
    "Last Login" : "Последна најава",
    "change full name" : "промена на целото име",
    "set new password" : "постави нова лозинка",
    "Default" : "Предефиниран"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
}