Browse Source

Merge pull request #1 from gogits/master

merge
pull/4872/head
lzlin 7 years ago committed by GitHub
parent
commit
6bb80416a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      Dockerfile
  2. 24
      Dockerfile.aarch64
  3. 24
      Dockerfile.rpi
  4. 24
      Dockerfile.rpihub
  5. 2
      README.md
  6. 113
      cmd/admin.go
  7. 10
      cmd/hook.go
  8. 4
      cmd/web.go
  9. 4
      conf/app.ini
  10. 114
      conf/locale/locale_bg-BG.ini
  11. 4
      conf/locale/locale_cs-CZ.ini
  12. 10
      conf/locale/locale_de-DE.ini
  13. 2
      conf/locale/locale_en-GB.ini
  14. 1
      conf/locale/locale_en-US.ini
  15. 30
      conf/locale/locale_es-ES.ini
  16. 2
      conf/locale/locale_fi-FI.ini
  17. 24
      conf/locale/locale_fr-FR.ini
  18. 2
      conf/locale/locale_gl-ES.ini
  19. 30
      conf/locale/locale_hu-HU.ini
  20. 38
      conf/locale/locale_it-IT.ini
  21. 278
      conf/locale/locale_ja-JP.ini
  22. 46
      conf/locale/locale_ko-KR.ini
  23. 2
      conf/locale/locale_lv-LV.ini
  24. 32
      conf/locale/locale_nl-NL.ini
  25. 2
      conf/locale/locale_pl-PL.ini
  26. 122
      conf/locale/locale_pt-BR.ini
  27. 12
      conf/locale/locale_ru-RU.ini
  28. 118
      conf/locale/locale_sr-SP.ini
  29. 56
      conf/locale/locale_sv-SE.ini
  30. 2
      conf/locale/locale_tr-TR.ini
  31. 2
      conf/locale/locale_uk-UA.ini
  32. 6
      conf/locale/locale_zh-CN.ini
  33. 2
      conf/locale/locale_zh-HK.ini
  34. 2
      conf/locale/locale_zh-TW.ini
  35. 3
      docker/build.sh
  36. 3
      docker/finalize.sh
  37. 8
      docker/start.sh
  38. 2
      gogs.go
  39. 3
      models/action.go
  40. 6
      models/comment.go
  41. 3
      models/issue_mail.go
  42. 2
      models/migrations/v15.go
  43. 4
      models/user.go
  44. 6
      models/webhook.go
  45. 260
      models/webhook_dingtalk.go
  46. 104
      pkg/bindata/bindata.go
  47. 9
      pkg/form/repo.go
  48. 12
      pkg/mailer/mail.go
  49. 19
      pkg/mailer/mailer.go
  50. 24
      pkg/setting/setting.go
  51. 3
      pkg/template/template.go
  52. 11
      public/config.codekit
  53. BIN
      public/img/dingtalk.png
  54. 3
      routes/api/v1/user/user.go
  55. 71
      routes/repo/webhook.go
  56. 2
      routes/user/auth.go
  57. 2
      templates/.VERSION
  58. 1
      templates/org/settings/webhook_new.tmpl
  59. 3
      templates/repo/editor/commit_form.tmpl
  60. 2
      templates/repo/issue/view_title.tmpl
  61. 11
      templates/repo/settings/webhook/dingtalk.tmpl
  62. 4
      templates/repo/settings/webhook/list.tmpl
  63. 1
      templates/repo/settings/webhook/new.tmpl

24
Dockerfile

@ -3,20 +3,34 @@ FROM alpine:3.5
# Install system utils & Gogs runtime dependencies
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-amd64 /usr/sbin/gosu
RUN chmod +x /usr/sbin/gosu \
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata
&& echo http://dl-2.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories \
&& apk --no-cache --no-progress add \
bash \
ca-certificates \
curl \
git \
linux-pam \
openssh \
s6 \
shadow \
socat \
tzdata
ENV GOGS_CUSTOM /data/gogs
COPY . /app/gogs/build
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
COPY docker /app/gogs/docker
COPY templates /app/gogs/templates
COPY public /app/gogs/public
WORKDIR /app/gogs/build
COPY . .
RUN ./docker/build-go.sh \
&& ./docker/build.sh \
&& ./docker/finalize.sh
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
# Configure Docker Container
VOLUME ["/data"]
EXPOSE 22 3000

24
Dockerfile.aarch64

@ -3,20 +3,34 @@ FROM aarch64/alpine:3.5
# Install system utils & Gogs runtime dependencies
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-arm64 /usr/sbin/gosu
RUN chmod +x /usr/sbin/gosu \
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata
&& echo http://dl-2.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories \
&& apk --no-cache --no-progress add \
bash \
ca-certificates \
curl \
git \
linux-pam \
openssh \
s6 \
shadow \
socat \
tzdata
ENV GOGS_CUSTOM /data/gogs
COPY . /app/gogs/build
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
COPY docker /app/gogs/docker
COPY templates /app/gogs/templates
COPY public /app/gogs/public
WORKDIR /app/gogs/build
COPY . .
RUN ./docker/build-go.sh \
&& ./docker/build.sh \
&& ./docker/finalize.sh
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
# Configure Docker Container
VOLUME ["/data"]
EXPOSE 22 3000

24
Dockerfile.rpi

@ -3,20 +3,34 @@ FROM armhf/alpine:3.5
# Install system utils & Gogs runtime dependencies
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-armhf /usr/sbin/gosu
RUN chmod +x /usr/sbin/gosu \
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata
&& echo http://dl-2.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories \
&& apk --no-cache --no-progress add \
bash \
ca-certificates \
curl \
git \
linux-pam \
openssh \
s6 \
shadow \
socat \
tzdata
ENV GOGS_CUSTOM /data/gogs
COPY . /app/gogs/build
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
COPY docker /app/gogs/docker
COPY templates /app/gogs/templates
COPY public /app/gogs/public
WORKDIR /app/gogs/build
COPY . .
RUN ./docker/build-go.sh \
&& ./docker/build.sh \
&& ./docker/finalize.sh
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
# Configure Docker Container
VOLUME ["/data"]
EXPOSE 22 3000

24
Dockerfile.rpihub

@ -19,18 +19,32 @@ RUN [ "cross-build-start" ]
# Install system utils & Gogs runtime dependencies
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-armhf /usr/sbin/gosu
RUN chmod +x /usr/sbin/gosu \
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata
&& echo http://dl-2.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories \
&& apk --no-cache --no-progress add \
bash \
ca-certificates \
curl \
git \
linux-pam \
openssh \
s6 \
shadow \
socat \
tzdata
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
COPY docker /app/gogs/docker
COPY templates /app/gogs/templates
COPY public /app/gogs/public
COPY . /app/gogs/build
WORKDIR /app/gogs/build
COPY . .
RUN ./docker/build-go.sh \
&& ./docker/build.sh \
&& ./docker/finalize.sh
# Configure LibC Name Service
COPY docker/nsswitch.conf /etc/nsswitch.conf
# For cross compile on dockerhub
################################

2
README.md

@ -1,4 +1,4 @@
Gogs [![Build Status](https://travis-ci.org/gogits/gogs.svg?branch=master)](https://travis-ci.org/gogits/gogs) [![Build status](https://ci.appveyor.com/api/projects/status/b9uu5ejl933e2wlt/branch/master?svg=true)](https://ci.appveyor.com/project/Unknwon/gogs/branch/master) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/gogs/localized.svg)](https://crowdin.com/project/gogs) [![Sourcegraph](https://sourcegraph.com/github.com/gogits/gogs/-/badge.svg)](https://sourcegraph.com/github.com/gogits/gogs?badge) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/gogits/gogs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Gogs [![Build Status](https://travis-ci.org/gogits/gogs.svg?branch=master)](https://travis-ci.org/gogits/gogs) [![Build status](https://ci.appveyor.com/api/projects/status/b9uu5ejl933e2wlt/branch/master?svg=true)](https://ci.appveyor.com/project/Unknwon/gogs/branch/master) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/gogs/localized.svg)](https://crowdin.com/project/gogs)
=====================
![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true)

113
cmd/admin.go

@ -6,6 +6,8 @@ package cmd
import (
"fmt"
"reflect"
"runtime"
"github.com/urfave/cli"
@ -21,6 +23,13 @@ var (
to make automatic initialization process more smoothly`,
Subcommands: []cli.Command{
subcmdCreateUser,
subcmdDeleteInactivateUsers,
subcmdDeleteRepositoryArchives,
subcmdDeleteMissingRepositories,
subcmdGitGcRepos,
subcmdRewriteAllPublicKeys,
subcmdSyncRepositoryHooks,
subcmdReinitMissingRepositories,
},
}
@ -36,6 +45,90 @@ to make automatic initialization process more smoothly`,
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
subcmdDeleteInactivateUsers = cli.Command{
Name: "delete-inactive-users",
Usage: "Delete all inactive accounts",
Action: adminDashboardOperation(
models.DeleteInactivateUsers,
"All inactivate accounts have been deleted successfully",
),
Flags: []cli.Flag{
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
subcmdDeleteRepositoryArchives = cli.Command{
Name: "delete-repository-archives",
Usage: "Delete all repositories archives",
Action: adminDashboardOperation(
models.DeleteRepositoryArchives,
"All repositories archives have been deleted successfully",
),
Flags: []cli.Flag{
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
subcmdDeleteMissingRepositories = cli.Command{
Name: "delete-missing-repositories",
Usage: "Delete all repository records that lost Git files",
Action: adminDashboardOperation(
models.DeleteMissingRepositories,
"All repositories archives have been deleted successfully",
),
Flags: []cli.Flag{
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
subcmdGitGcRepos = cli.Command{
Name: "collect-garbage",
Usage: "Do garbage collection on repositories",
Action: adminDashboardOperation(
models.GitGcRepos,
"All repositories have done garbage collection successfully",
),
Flags: []cli.Flag{
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
subcmdRewriteAllPublicKeys = cli.Command{
Name: "rewrite-public-keys",
Usage: "Rewrite '.ssh/authorized_keys' file (caution: non-Gogs keys will be lost)",
Action: adminDashboardOperation(
models.RewriteAllPublicKeys,
"All public keys have been rewritten successfully",
),
Flags: []cli.Flag{
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
subcmdSyncRepositoryHooks = cli.Command{
Name: "resync-hooks",
Usage: "Resync pre-receive, update and post-receive hooks",
Action: adminDashboardOperation(
models.SyncRepositoryHooks,
"All repositories' pre-receive, update and post-receive hooks have been resynced successfully",
),
Flags: []cli.Flag{
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
subcmdReinitMissingRepositories = cli.Command{
Name: "reinit-missing-repositories",
Usage: "Reinitialize all repository records that lost Git files",
Action: adminDashboardOperation(
models.ReinitMissingRepositories,
"All repository records that lost Git files have been reinitialized successfully",
),
Flags: []cli.Flag{
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
},
}
)
func runCreateUser(c *cli.Context) error {
@ -68,3 +161,23 @@ func runCreateUser(c *cli.Context) error {
fmt.Printf("New user '%s' has been successfully created!\n", c.String("name"))
return nil
}
func adminDashboardOperation(operation func() error, successMessage string) func(*cli.Context) error {
return func(c *cli.Context) error {
if c.IsSet("config") {
setting.CustomConf = c.String("config")
}
setting.NewContext()
models.LoadConfigs()
models.SetEngine()
if err := operation(); err != nil {
functionName := runtime.FuncForPC(reflect.ValueOf(operation).Pointer()).Name()
return fmt.Errorf("%s: %v", functionName, err)
}
fmt.Printf("%s\n", successMessage)
return nil
}
}

10
cmd/hook.go

@ -11,6 +11,7 @@ import (
"fmt"
"os"
"os/exec"
"path"
"path/filepath"
"strings"
@ -22,7 +23,9 @@ import (
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/pkg/httplib"
"github.com/gogits/gogs/pkg/mailer"
"github.com/gogits/gogs/pkg/setting"
"github.com/gogits/gogs/pkg/template"
http "github.com/gogits/gogs/routes/repo"
)
@ -184,6 +187,13 @@ func runHookPostReceive(c *cli.Context) error {
}
setup(c, "hooks/post-receive.log", true)
// Post-receive hook does more than just gather Git information,
// so we need to setup additional services for email notifications.
setting.NewPostReceiveHookServices()
mailer.NewContext()
mailer.InitMailRender(path.Join(setting.StaticRootPath, "templates/mail"),
path.Join(setting.CustomPath, "templates/mail"), template.NewFuncMap())
isWiki := strings.Contains(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
buf := bytes.NewBuffer(nil)

4
cmd/web.go

@ -387,10 +387,12 @@ func runWeb(c *cli.Context) error {
m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebHooksNewPost)
m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksNewPost)
m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksNewPost)
m.Post("/dingtalk/new", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksNewPost)
m.Get("/:id", repo.WebHooksEdit)
m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebHooksEditPost)
m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksEditPost)
m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksEditPost)
m.Post("/dingtalk/:id", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksEditPost)
})
m.Route("/delete", "GET,POST", org.SettingsDelete)
@ -439,9 +441,11 @@ func runWeb(c *cli.Context) error {
m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebHooksNewPost)
m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksNewPost)
m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksNewPost)
m.Post("/dingtalk/new", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksNewPost)
m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebHooksEditPost)
m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksEditPost)
m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksEditPost)
m.Post("/dingtalk/:id", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksEditPost)
m.Group("/:id", func() {
m.Get("", repo.WebHooksEdit)

4
conf/app.ini

@ -209,8 +209,8 @@ ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
ENABLE_CAPTCHA = true
[webhook]
; Types are enabled for users to use, can be "gogs", "slack", "discord"
TYPES = gogs, slack, discord
; Types are enabled for users to use, can be "gogs", "slack", "discord", "dingtalk"
TYPES = gogs, slack, discord, dingtalk
; Hook task queue length, increase if webhook shooting starts hanging
QUEUE_LENGTH = 1000
; Deliver timeout in seconds

114
conf/locale/locale_bg-BG.ini

@ -48,7 +48,7 @@ cancel=Отказ
install=Инсталация
title=Стъпки за инсталиране при първоначално стартиране
docker_helper=Ако Gogs е стартиран в Docker контейнер, моля прочетете <a target="_blank" href="%s">нашите указания</a> внимателно, преди да правите промени по настройките на тази страница!
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3, MSSQL or TiDB.
requite_db_desc=Gogs изисква MySQL, PostgreSQL, SQLite3 или TiDB.
db_title=Настройки на базата данни
db_type=Тип на база данни
host=Сървър
@ -58,8 +58,8 @@ db_name=Име на база данни
db_helper=Моля, използвайте INNODB engine с utf8_general_ci кодиране на знаци за MySQL.
ssl_mode=Режим SSL
path=Път
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
err_empty_db_path=SQLite3 database path cannot be empty.
sqlite_helper=Път към файл на SQLite3 база от данни. <br>Моля използвайте абсолютен път, когато стартирате gogs като услуга.
err_empty_db_path=Пътят към SQLite3 базата от данни не може да бъде празен.
no_admin_and_disable_registration=Невъзможно изключване на регистрациите без предварително да е създаден поне един административен профил.
err_empty_admin_password=Паролата на администратор не може да е празна.
@ -74,16 +74,16 @@ domain=Домейн
domain_helper=Тази настройка влияе на URL адреса за клониране чрез SSH.
ssh_port=SSH порт
ssh_port_helper=Номер на порт на SSH сървъра. Оставете празно за да изключите достъп през SSH.
use_builtin_ssh_server=Use Builtin SSH Server
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
use_builtin_ssh_server=Използване на вграден SSH сървър
use_builtin_ssh_server_popup=Стартиране на вграден SSH сървър за Git операции, различен от системния SSH демон.
http_port=HTTP порт
http_port_helper=Порт, на който приложението ще слуша.
app_url=URL адрес на приложението
app_url_helper=Този настройка променя HTTP/HTTPS адреса за клониране, а понякога и адреса на ел. поща.
log_root_path=Път към журналите
log_root_path_helper=Директория в която се записват журналите.
enable_console_mode=Enable Console Mode
enable_console_mode_popup=In addition to file mode, also print logs to console.
enable_console_mode=Включване на конзолен режим
enable_console_mode_popup=Изписване на логовете в конзолата, в допълнение към файловият режим.
optional_title=Опционални настройки
email_title=Настройки на пощенска услуга
@ -119,7 +119,7 @@ sqlite3_not_available=Вашата версия не поддържа SQLite3,
invalid_db_setting=Настройките на базата данни са некоректни: %v
invalid_repo_path=Основният път към хранилищата е невалиден: %v
run_user_not_match=Потребителският контекст на приложението не е на текущия потребител: %s -> %s
smtp_host_missing_port=SMTP Host is missing port in address.
smtp_host_missing_port=Липсва порт в зададения SMTP адрес.
invalid_smtp_from=Невалидно поле От: %v
save_config_failed=Неуспешно запазване на конфигурация: %v
invalid_admin_setting=Настройките на профил на администратора са невалидни: %v
@ -170,12 +170,12 @@ password_too_short=Размерът на паролата не може да б
non_local_account=Нелокални потребители не могат да сменят паролата си през Gogs.
login_two_factor=Two-factor Authentication
login_two_factor_passcode=Authentication Passcode
login_two_factor_passcode=Парола за удостоверяване
login_two_factor_enter_recovery_code=Enter a two-factor recovery code
login_two_factor_recovery=Two-factor Recovery
login_two_factor_recovery_code=Recovery Code
login_two_factor_enter_passcode=Enter a two-factor passcode
login_two_factor_invalid_recovery_code=Recovery code has been used or does not valid.
login_two_factor_invalid_recovery_code=Този код за възстановяване вече е бил използван или не е валиден.
[mail]
activate_account=Моля активирайте Вашия профил
@ -264,8 +264,8 @@ profile=Профил
password=Парола
avatar=Аватар
ssh_keys=SSH ключове
security=Security
repos=Repositories
security=Сигурност
repos=Хранилища
orgs=Организации
applications=Приложения
delete=Изтрий профил
@ -335,25 +335,25 @@ key_state_desc=Този ключ е използван през последни
token_state_desc=Този API ключ е използван през последните 7 дни
two_factor=Two-factor Authentication
two_factor_status=Status:
two_factor_on=On
two_factor_off=Off
two_factor_enable=Enable
two_factor_disable=Disable
two_factor_status=Статус:
two_factor_on=Вкл.
two_factor_off=Изкл.
two_factor_enable=Активиране
two_factor_disable=Деактивиране
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
two_factor_enable_title=Enable Two-factor Authentication
two_factor_scan_qr=Please use your authentication application to scan the image:
two_factor_or_enter_secret=Or enter the secret:
two_factor_then_enter_passcode=Then enter passcode:
two_factor_verify=Verify
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
two_factor_then_enter_passcode=След това въведете паролата:
two_factor_verify=Потвърждаване
two_factor_invalid_passcode=Въведената парола е невалидна! Моля опитайте отново.
two_factor_enable_error=Enable Two-factor authentication failed: %v
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
two_factor_regenerate_recovery_codes=Ново генериране на кодове за възстановяване
two_factor_regenerate_recovery_codes_error=Неуспешно генериране на кодове за възстановяване: %v
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
two_factor_disable_title=Disable Two-factor Authentication
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
@ -375,10 +375,10 @@ orgs.none=Не сте член на никоя организация.
orgs.leave_title=Напусни организация
orgs.leave_desc=Ще загубите достъп до всички хранилища и екипи, след като напуснете организацията. Желаете ли да продължите?
repos.leave=Leave
repos.leave_title=Leave repository
repos.leave=Напускане
repos.leave_title=Напускане на хранилище
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
repos.leave_success=You have left repository '%s' successfully!
repos.leave_success=Вие успешно напуснахте хранилище "%s"!
delete_account=Изтриване на собствения профил
delete_prompt=Тази операция ще изтрие Вашия профил завинаги и тя <strong>НЕ МОЖЕ</strong> да бъде отменена в последствие!
@ -450,7 +450,7 @@ quick_guide=Бърз справочник
clone_this_repo=Клонирай хранилището
create_new_repo_command=Създай ново хранилище чрез командния ред
push_exist_repo=Предай съществуващо хранилище през командния ред
bare_message=This repository does not have any content yet.
bare_message=Това хранилище все още не съдържа нищо.
files=Файлове
branch=Клон
@ -463,7 +463,7 @@ pulls=Заявки за сливане
labels=Етикети
milestones=Етапи
commits=Ревизии
git_branches=Branches
git_branches=Клонове
releases=Версии
file_raw=Директен файл
file_history=История
@ -472,12 +472,12 @@ file_permalink=Постоянна връзка
file_too_large=Този файл е твърде голям за да се визуализира
video_not_supported_in_browser=Вашият браузър не поддържа HTML5 видео тагове.
branches.overview=Overview
branches.active_branches=Active Branches
branches.stale_branches=Stale Branches
branches.all=All Branches
branches.updated_by=Updated %[1]s by %[2]s
branches.change_default_branch=Change Default Branch
branches.overview=Преглед
branches.active_branches=Активни клонове
branches.stale_branches=Застинали клонове
branches.all=Всички клонове
branches.updated_by=Актуализирани %[1]s от %[2]s
branches.change_default_branch=Промяна на клон по подразбиране
editor.new_file=Нов файл
editor.upload_file=Качи файл
@ -616,6 +616,7 @@ pulls.compare_compare=сравни
pulls.filter_branch=Филтър по клон
pulls.no_results=Няма резултати.
pulls.nothing_to_compare=Няма нищо за сравняване, защото родителският клон и върхът са еднакви.
pulls.nothing_merge_base=Няма нищо за сравняване, защото двата клона имат напълно различна история.
pulls.has_pull_request=`Вече има заявка за сливане между тези две цели: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Създай заявка за сливане
pulls.title_desc=заяви обединяване на %[1]d ревизии от <code>%[2]s</code> във <code>%[3]s</code>
@ -685,28 +686,28 @@ settings.collaboration.admin=За администрация
settings.collaboration.write=За писане
settings.collaboration.read=За четене
settings.collaboration.undefined=Недефинирано
settings.branches=Branches
settings.branches=Клонове
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
settings.default_branch=Default Branch
settings.default_branch=Клон по подразбиране
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
settings.update=Update
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
settings.update_default_branch_unsupported=Промяна на клон по подразбиране не се поддържа от тази версия на Git сървъра.
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
settings.protected_branches=Protected Branches
settings.protected_branches=Защитени клонове
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
settings.choose_a_branch=Choose a branch...
settings.branch_protection=Branch Protection
settings.choose_a_branch=Избор на клон...
settings.branch_protection=Защита на клон
settings.branch_protection_desc=Please choose protect options for branch <b>%s</b>.
settings.protect_this_branch=Protect this branch
settings.protect_this_branch_desc=Disable force pushes and prevent from deletion.
settings.protect_require_pull_request=Require pull request instead direct pushing
settings.protect_require_pull_request_desc=Enable this option to disable direct pushing to this branch. Commits have to be pushed to another non-protected branch and merged to this branch through pull request.
settings.protect_whitelist_committers=Whitelist who can push to this branch
settings.protect_whitelist_committers=Списък на всички, които могат да изпращат към този клон
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
settings.protect_whitelist_users=Users who can push to this branch
settings.protect_whitelist_search_users=Search users
settings.protect_whitelist_users=Потребители, които могат да изпращат към този клон
settings.protect_whitelist_search_users=Търсене на потребители
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
settings.protect_whitelist_search_teams=Search teams
settings.protect_whitelist_search_teams=Търсене на екипи
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
settings.hooks=Уеб-куки
settings.githooks=Git куки
@ -806,8 +807,8 @@ settings.event_send_everything=При <strong>всички</strong> събити
settings.event_choose=Нека избера от какво имам нужда.
settings.event_create=Създаване
settings.event_create_desc=Създаване на клон или маркер
settings.event_delete=Delete
settings.event_delete_desc=Branch or tag deleted
settings.event_delete=Изтриване
settings.event_delete_desc=Изтрит клон или етикет
settings.event_fork=Fork
settings.event_fork_desc=Repository forked
settings.event_push=Предаване
@ -829,7 +830,8 @@ settings.delete_webhook=Изтрий уеб-куката
settings.recent_deliveries=Последни изпращания
settings.hook_type=Тип на куката
settings.add_slack_hook_desc=Добавяне на интеграция със <a href="%s">Slack</a> във Вашето хранилище.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_discord_hook_desc=Добавяне на интеграция с <a href="%s">Discord</a> към хранилището.
settings.add_dingtalk_hook_desc=Добавяне на интеграция с <a href="%s">Dingtalk</a> към хранилището.
settings.slack_token=API ключ
settings.slack_domain=Домейн
settings.slack_channel=Канал
@ -912,7 +914,7 @@ team_permission_desc=Какво ниво на достъп трябва да и
form.name_reserved=Името на организацията '%s' е запазено.
form.name_pattern_not_allowed=Име на организацията от вида '%s' не е разрешено.
form.team_name_reserved=Team name '%s' is reserved.
form.team_name_reserved=Име на екип "%s" е запазено.
settings=Настройки
settings.options=Опции
@ -1079,7 +1081,7 @@ repos.private=Частно
repos.watches=Наблюдавания
repos.stars=Харесвания
repos.issues=Задачи
repos.size=Size
repos.size=Размер
auths.auth_manage_panel=Управление на удостоверявания
auths.new=Добави нов начин на удостоверяване
@ -1160,13 +1162,13 @@ config.ssh_keygen_path=Път до генератор ('ssh-keygen')
config.ssh_minimum_key_size_check=Проверка за минимален размер на ключове
config.ssh_minimum_key_sizes=Минимален размер на ключове
config.repo_config=Repository Configuration
config.repo_config=Конфигурация на хранилище
config.repo_root_path=Основен път към хранилища
config.script_type=Тип на скрипта
config.repo_force_private=Force Private
config.max_creation_limit=Max Creation Limit
config.preferred_licenses=Preferred Licenses
config.disable_http_git=Disable HTTP Git
config.preferred_licenses=Предпочитани лицензи
config.disable_http_git=Забраняване на HTTP Git
config.enable_local_path_migration=Enable Local Path Migration
config.commits_fetch_concurrency=Commits Fetch Concurrency
@ -1242,8 +1244,8 @@ config.git_pull_timeout=Време за отказ при сливане
config.git_gc_timeout=Време за отказ при GC
config.log_config=Конфигурация на журнал
config.log_mode=Mode
config.log_options=Options
config.log_mode=Режим
config.log_options=Настройки
monitor.cron=Cron задачи
monitor.name=Име
@ -1285,10 +1287,10 @@ create_pull_request=`създаде заявка за сливане <a href="%s
close_pull_request=`затвори заявка за сливане <a href="%s/pulls/%s">%s#%[2]s</a>`
reopen_pull_request=`повторно отвори заявка за сливане <a href="%s/pulls/%s">%s#%[2]s</a>`
merge_pull_request=`обедини заявка за сливане <a href="%s/pulls/%s">%s#%[2]s</a>`
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
create_branch=създаде клон <a href="%[1]s/src/%[2]s"> %[3]s</a> % <a href="%[1]s">[4]s</a>
delete_branch=изтри клон <code>%[2]s</code> % <a href="%[1]s">[3]s</a>
push_tag=предаде маркер <a href="%s/src/%s">%[2]s</a> към <a href="%[1]s">[3]s</a>
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
delete_tag=изтри етикет <code>%[2]s</code> % <a href="%[1]s">[3]s</a>
[tool]
ago=преди

4
conf/locale/locale_cs-CZ.ini

@ -459,7 +459,7 @@ filter_branch_and_tag=Filtr pro větev nebo značku
branches=Větve
tags=Značky
issues=Úkoly
pulls=Požadavky na natažení
pulls=Pull Requesty
labels=Štítky
milestones=Milníky
commits=Revize
@ -616,6 +616,7 @@ pulls.compare_compare=porovnat
pulls.filter_branch=Filtrovat větev
pulls.no_results=Nebyly nalezeny žádné výsledky.
pulls.nothing_to_compare=Není co porovnávat, protože základ a hlavní větve jsou shodné.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Požadavek na natažení mezi těmito větvemi již existuje: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Vytvořit požadavek na natažení
pulls.title_desc=chce sloučit %[1]d revizí z větve <code>%[2]s</code> do větve <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Nedávné dodávky
settings.hook_type=Typ háčku
settings.add_slack_hook_desc=Přidat integraci <a href="%s">Slacku</a> do vašeho repositáře.
settings.add_discord_hook_desc=Přidat integraci <a href="%s">Discord</a> do vašeho repositáře.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Poukázka
settings.slack_domain=Doména
settings.slack_channel=Kanál

10
conf/locale/locale_de-DE.ini

@ -450,7 +450,7 @@ quick_guide=Kurzanleitung
clone_this_repo=Dieses Repository klonen
create_new_repo_command=Erstellen Sie ein neues Repository mittels der Kommandozeile
push_exist_repo=Bestehendes Repository von der Kommandozeile pushen
bare_message=Dies Repository hat noch keinen Inhalt.
bare_message=Dieses Repository hat noch keinen Inhalt.
files=Dateien
branch=Branch
@ -616,6 +616,7 @@ pulls.compare_compare=vergleichen
pulls.filter_branch=Branch filtern
pulls.no_results=Keine Ergebnisse verfügbar.
pulls.nothing_to_compare=Es gibt nichts zu vergleichen, da Base- und Head-Branch gleich sind.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Es existiert bereits ein Pull-Request zwischen diesen beiden Zielen: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Pull-Request erstellen
pulls.title_desc=möchte %[1]d Commits von <code>%[2]s</code> nach <code>%[3]s</code> zusammenführen
@ -745,12 +746,12 @@ settings.convert_notices_1=- Dieser Vorgang wandelt das Mirror-Repository in ein
settings.convert_confirm=Umwandlung bestätigen
settings.convert_succeed=Das Repository wurde erfolgreich in ein normales Repository umgewandelt.
settings.transfer=Besitz übertragen
settings.transfer_desc=Dieses Repository auf einen anderen Benutzer bzw. eine Organisation in der Sie Admin-Rechte haben übertragen.
settings.transfer_desc=Dieses Repository auf einen anderen Benutzer oder eine Organisation, in der Sie Admin-Rechte haben, übertragen.
settings.transfer_notices_1=- Sie werden keinen Zugriff mehr haben, wenn der neue Besitzer ein individueller Benutzer ist.
settings.transfer_notices_2=- Sie werden weiterhin Zugriff haben, wenn der neue Besitzer eine Organisation ist und Sie einer der Besitzer sind.
settings.transfer_form_title=Bitte geben Sie die folgenden Informationen ein, um die Operation zu bestätigen:
settings.wiki_delete=Wiki-Daten löschen
settings.wiki_delete_desc=Das Löschen von Wiki Daten kann nicht rückgängig gemacht werden. Bitte seien Sie vorsichtig.
settings.wiki_delete_desc=Das Löschen von Wiki-Daten kann nicht rückgängig gemacht werden. Bitte seien Sie vorsichtig.
settings.wiki_delete_notices_1=- Dies löscht und deaktiviert das Wiki für %s
settings.wiki_deletion_success=Repository Wiki Daten erfolgreich gelöscht.
settings.delete=Dieses Repository löschen
@ -830,6 +831,7 @@ settings.recent_deliveries=Letzte Zustellungen
settings.hook_type=Hook Typ
settings.add_slack_hook_desc=Fügen Sie <a href="%s">Slack</a>-Integration zu Ihrem Repository hinzu.
settings.add_discord_hook_desc=Fügen Sie <a href="%s">Discord</a>-Integration zu Ihrem Repository hinzu.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Token
settings.slack_domain=Domain
settings.slack_channel=Kanal
@ -1003,7 +1005,7 @@ dashboard.git_gc_repos=Garbage Collection auf Repositories ausführen
dashboard.git_gc_repos_success=Garbage Collection wurde auf allen Repositories erfolgreich ausgeführt.
dashboard.resync_all_sshkeys=Datei '.ssh/authorized_keys' neu anlegen (Achtung: Schlüssel, die nicht zu Gogs gehören gehen verloren)
dashboard.resync_all_sshkeys_success=Alle öffentlichen Keys wurden erfolgreich neu geschrieben.
dashboard.resync_all_hooks=Synchronisiere pre-receive, update und post-receive Hooks für alle Repositorien
dashboard.resync_all_hooks=Synchronisiere pre-receive, update und post-receive Hooks für alle Repositories
dashboard.resync_all_hooks_success=Pre-receive, update und post-receive Hooks aller Repositorien wurden erfolgreich synchronisiert.
dashboard.reinit_missing_repos=Alle Repository-Datensätze mit verloren gegangenen Git-Dateien neu initialisieren
dashboard.reinit_missing_repos_success=Alle Repository-Datensätze, die Git-Dateien verloren haben wurden erfolgreich neu initialisiert.

2
conf/locale/locale_en-GB.ini

@ -616,6 +616,7 @@ pulls.compare_compare=compare
pulls.filter_branch=Filter branch
pulls.no_results=No results found.
pulls.nothing_to_compare=There is nothing to compare because base and head branches are even.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`There is already a pull request between these two targets: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Create Pull Request
pulls.title_desc=wants to merge %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Recent Deliveries
settings.hook_type=Hook Type
settings.add_slack_hook_desc=Add <a href="%s">Slack</a> integration to your repository.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Token
settings.slack_domain=Domain
settings.slack_channel=Channel

1
conf/locale/locale_en-US.ini

@ -831,6 +831,7 @@ settings.recent_deliveries = Recent Deliveries
settings.hook_type = Hook Type
settings.add_slack_hook_desc = Add <a href="%s">Slack</a> integration to your repository.
settings.add_discord_hook_desc = Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc = Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token = Token
settings.slack_domain = Domain
settings.slack_channel = Channel

30
conf/locale/locale_es-ES.ini

@ -119,7 +119,7 @@ sqlite3_not_available=Tu versión no soporta SQLite3, por favor descarga el bina
invalid_db_setting=La configuración de la base de datos no es correcta: %v
invalid_repo_path=La ruta de la raíz del repositorio es inválida: %v
run_user_not_match=El usuario que está ejecutando la aplicación no es el usuario actual: %s -> %s
smtp_host_missing_port=SMTP Host is missing port in address.
smtp_host_missing_port=No se ha definido el puerto para el host SMTP.
invalid_smtp_from=El campo SMTP no es válido: %v
save_config_failed=Error al guardar la configuración: %v
invalid_admin_setting=La configuración de la cuenta de administración es inválida: %v
@ -170,12 +170,12 @@ password_too_short=La longitud de la contraseña no puede ser menor a 6.
non_local_account=Cuentas que no son locales no pueden cambiar las contraseñas a través de Gogs.
login_two_factor=Autenticación en dos pasos
login_two_factor_passcode=Authentication Passcode
login_two_factor_enter_recovery_code=Enter a two-factor recovery code
login_two_factor_recovery=Two-factor Recovery
login_two_factor_recovery_code=Recovery Code
login_two_factor_enter_passcode=Enter a two-factor passcode
login_two_factor_invalid_recovery_code=Recovery code has been used or does not valid.
login_two_factor_passcode=Pin de autenticación
login_two_factor_enter_recovery_code=Introduce un código de recuperación de autenticación en dos pasos
login_two_factor_recovery=Recuperación de autenticación en dos pasos
login_two_factor_recovery_code=Código de recuperación
login_two_factor_enter_passcode=Introduce un Pin de autenticación a dos pasos
login_two_factor_invalid_recovery_code=El código de recuperación ya se ha utilizado o no es válido.
[mail]
activate_account=Por favor, active su cuenta
@ -340,14 +340,14 @@ two_factor_on=Activado
two_factor_off=Desactivado
two_factor_enable=Activar
two_factor_disable=Desactivar
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
two_factor_view_recovery_codes=Guarda <a href="%s%s"> tus códigos de recuperación</a> en un lugar seguro. Podrás usarlos como código de acceso si pierdes el acceso a tu aplicación de autenticación.
two_factor_http=Para las operaciones sobre HTTP/HTTPS, no puedes usar un usuario y contraseña. Por favor, cree y utilice <a href="%[1]s%[2]s"> un token de acceso personal</a> como su credencial de acceso, por ejemplo, <code>%[3]s</code>.
two_factor_enable_title=Habilitar autenticaciñon en dos pasos
two_factor_scan_qr=Por favor, use su aplicación de autenticación para escanear la imagen:
two_factor_or_enter_secret=Or enter the secret:
two_factor_then_enter_passcode=Then enter passcode:
two_factor_then_enter_passcode=Introduce el Pin:
two_factor_verify=Verificar
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
two_factor_invalid_passcode=¡El Pin que has introducido no es válido, por favor, inténtalo de nuevo!
two_factor_enable_error=Enable Two-factor authentication failed: %v
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
@ -616,6 +616,7 @@ pulls.compare_compare=comparar con
pulls.filter_branch=Filtrar rama
pulls.no_results=Sin resultados.
pulls.nothing_to_compare=Nada que comparar. Las dos ramas coinciden.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Ya existe un pull request entre estas dos ramas: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Crear Pull Request
pulls.title_desc=desea fusionar %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code>
@ -780,7 +781,7 @@ settings.webhook_deletion_success=¡Webhook eliminado con éxito!
settings.webhook.test_delivery=Test de entrega
settings.webhook.test_delivery_desc=Enviar un falso evento Push de entrega para probar tus ajustes de webhook
settings.webhook.test_delivery_success=Probar que los webhook han sido añadidos a la cola de entrega. Esto puede tomar algunos segundos antes de aparecer en el historial de entregas.
settings.webhook.redelivery=Redelivery
settings.webhook.redelivery=Reenviar
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
settings.webhook.request=Petición
settings.webhook.response=Respuesta
@ -830,6 +831,7 @@ settings.recent_deliveries=Envíos Recientes
settings.hook_type=Tipo de Hook
settings.add_slack_hook_desc=Añade integración con <a href="%s">Slack</a> a tu repositorio.
settings.add_discord_hook_desc=Añade integración con <a href="%s">Slack</a> a tu repositorio.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Token
settings.slack_domain=Dominio
settings.slack_channel=Canal
@ -1103,9 +1105,9 @@ auths.attribute_username_placeholder=Dejar vacío para usar el campo de inicio d
auths.attribute_name=Atributo nombre
auths.attribute_surname=Atributo apellido
auths.attribute_mail=Atributo correo electrónico
auths.verify_group_membership=Verify group membership
auths.verify_group_membership=Verificar pertenencia a grupo
auths.group_search_base_dn=Group Search Base DN
auths.group_filter=Group Filter
auths.group_filter=Filtro de grupo
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
auths.user_attribute_listed_in_group=User Attribute Listed in Group
auths.attributes_in_bind=Buscar atributos en el contexto del Bind DN
@ -1272,7 +1274,7 @@ notices.delete_success=Las notificaciones del sistema han sido eliminadas satisf
[action]
create_repo=creó el repositorio <a href="%s">%s</a>
fork_repo=forked a repository to <a href="%s">%s</a>
fork_repo=ha hecho un Fork en <a href="%s">%s</a>
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
commit_repo=hizo push a <a href="%[1]s/src/%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a>
compare_commits=Ver comparación de estos %d commits

2
conf/locale/locale_fi-FI.ini

@ -616,6 +616,7 @@ pulls.compare_compare=vertaa
pulls.filter_branch=Suodata branch
pulls.no_results=Tuloksia ei löytynyt.
pulls.nothing_to_compare=Ei ole mitään verrattavaa koska base ja head branchit ovat tasoissa.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`On olemassa jo pull pyyntö näiden kohteiden välillä: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Luo Pull-pyyntö
pulls.title_desc=haluaa yhdistää %[1]d committia lähteestä <code>%[2]s</code> kohteeseen <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Viimeisimmät toimitukset
settings.hook_type=Koukkutyyppi
settings.add_slack_hook_desc=Lisää <a href="%s">Slack</a> integraatio repoosi.
settings.add_discord_hook_desc=Lisää <a href="%s">Discord</a> integraatio repositoryysi.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Pääsymerkki
settings.slack_domain=Verkkotunnus
settings.slack_channel=Kanava

24
conf/locale/locale_fr-FR.ini

@ -119,7 +119,7 @@ sqlite3_not_available=Votre version publiée ne prend pas en charge SQLite3. Veu
invalid_db_setting=Paramètres de base de données incorrects : %v
invalid_repo_path=Chemin vers la racine du dépôt invalide : %v
run_user_not_match=L'utilisateur d'exécution saisi n'est pas l'utilisateur d'exécution actuel : %s -> %s
smtp_host_missing_port=Le numéro de port est manquant dans ladresse de l'Hôte SMTP.
smtp_host_missing_port=Le numéro de port est manquant dans l'adresse de l'Hôte SMTP.
invalid_smtp_from=Le champ SMTP Provenant de n'est pas valide: %v
save_config_failed=La sauvegarde de la configuration a échoué : %v
invalid_admin_setting=Paramètres du compte administrateur invalides : %v
@ -158,7 +158,7 @@ sign_up_now=Pas de compte ? Inscrivez-vous maintenant.
confirmation_mail_sent_prompt=Un nouveau mail de confirmation à été envoyé à <b>%s</b>. Veuillez vérifier votre boîte de réception dans un délai de %d heures pour compléter votre enregistrement.
active_your_account=Activer votre compte
prohibit_login=Connexion interdite
prohibit_login_desc=Votre compte est interdit de se connecter, contactez l’administrateur du site.
prohibit_login_desc=La connexion avec ce compte est interdite ; contactez l'administrateur du site.
resent_limit_prompt=Désolé, vos tentatives d'activation sont trop fréquentes. Veuillez réessayer dans 3 minutes.
has_unconfirmed_mail=Bonjour %s, votre adresse e-mail (<b>%s</b>) n'a pas été confirmée. Si vous n'avez reçu aucun mail de confirmation ou souhaitez renouveler l'envoi, cliquez sur le bouton ci-dessous.
resend_mail=Cliquez ici pour renvoyer un mail de confirmation
@ -170,12 +170,12 @@ password_too_short=Le mot de passe doit contenir 6 caractères minimum.
non_local_account=Les comptes non locaux ne peuvent pas changer leur mot de passe via Gogs.
login_two_factor=Authentification en deux étapes
login_two_factor_passcode=Mot de passe dauthentification
login_two_factor_passcode=Mot de passe d'authentification
login_two_factor_enter_recovery_code=Entrez un code de récupération en deux étapes
login_two_factor_recovery=Récupération en deux étapes
login_two_factor_recovery_code=Code de récupération
login_two_factor_enter_passcode=Entrez un code d'authentification en deux étapes
login_two_factor_invalid_recovery_code=Code de récupération a été utilisé ou nest pas valide.
login_two_factor_invalid_recovery_code=Code de récupération a été utilisé ou n'est pas valide.
[mail]
activate_account=Veuillez activer votre compte
@ -343,7 +343,7 @@ two_factor_disable=Désactiver
two_factor_view_recovery_codes=Voir et sauvegarder <a href="%s%s">vos codes de récupération</a> dans un endroit sécurisé. Vois pouvez les utiliser comme mot de passe si vous perdez l'accès à l'application d'authentification.
two_factor_http=Vous ne pouvez plus utiliser un nom d'utilisateur et mot de passe en clair pour les opérations en HTTP/HTTPS. Merci de créer et d'utiliser un <a href="%[1]s%[2]s">jeton d'accès personnel</a> comme moyen d'identification, par exemple <code>%[3]s</code>.
two_factor_enable_title=Activer l'authentification en deux étapes
two_factor_scan_qr=Veuillez utiliser votre application d’authentification pour numériser l’image :
two_factor_scan_qr=Veuillez utiliser votre application d'authentification pour numériser l'image :
two_factor_or_enter_secret=Ou entrez la phrase secrète :
two_factor_then_enter_passcode=Puis entrez le mot de passe :
two_factor_verify=Vérifier
@ -506,16 +506,16 @@ editor.new_branch_name_desc=Nouveau nom de la branche...
editor.cancel=Annuler
editor.filename_cannot_be_empty=Nom de fichier ne peut pas être vide.
editor.branch_already_exists=La branche '%s' existe déjà dans ce dépôt.
editor.directory_is_a_file=L'entrée '%s' dans le chemin d’accès parent est un fichier pas un répertoire dans ce dépôt.
editor.directory_is_a_file=L'entrée '%s' dans le chemin d'accès parent est un fichier, pas un répertoire dans ce dépôt.
editor.file_is_a_symlink=Le fichier « %s » est un lien symbolique qui ne peut être modifié depuis l'éditeur web.
editor.filename_is_a_directory=Le nom de fichier '%s' existe déjà dans ce dépot.
editor.file_editing_no_longer_exists=Le fichier '%s' que vous modifiez n'existe plus dans le dépôt.
editor.file_changed_while_editing=Le contenu du fichier à changé depuis que vous avez commencé à l'éditer. <a target="_blank" href="%s">Cliquez ici</a> pour voir ce qui à été modifié ou <strong>appuyez sur commit encore une fois</strong> pour remplacer ces changements.
editor.file_already_exists=La branche '%s' existe déjà dans ce dépôt.
editor.no_changes_to_show=Il n’y a aucun changement à afficher.
editor.fail_to_update_file=Échec lors de la mise à jour/création du fichier '%s' avec lerreur : %v
editor.fail_to_update_file=Échec lors de la mise à jour/création du fichier '%s' avec l'erreur : %v
editor.add_subdir=Ajouter un sous-répertoire...
editor.unable_to_upload_files=Échec lors de l'envoie du fichier '%s' avec lerreur : %v
editor.unable_to_upload_files=Échec lors de l'envoie du fichier '%s' avec l'erreur : %v
editor.upload_files_to_dir=Transférer les fichiers vers '%s'
commits.commit_history=Historique des commits
@ -616,6 +616,7 @@ pulls.compare_compare=Comparer
pulls.filter_branch=Filtre de branche
pulls.no_results=Aucun résultat trouvé.
pulls.nothing_to_compare=Il n'y a rien de comparable parce que les deux branches sont égales.
pulls.nothing_merge_base=Il n'y a rien à comparer parce que les deux branches ont un historique complètement différent.
pulls.has_pull_request=`Il y a déjà une demande de tirer entre ces deux cibles : <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Creer une Pull Request
pulls.title_desc=veut fusionner %[1]d commits à partir de <code>%[2]s</code> vers <code>%[3]s</code>
@ -726,7 +727,7 @@ settings.external_wiki_url=URL Wiki externe
settings.external_wiki_url_desc=Les visiteurs seront redirigés vers cette URL lorsqu'ils cliqueront sur l'onglet.
settings.issues_desc=Activer le système de tickets
settings.use_internal_issue_tracker=Utiliser le système simplifié de tickets interne
settings.allow_public_issues_desc=Permettre laccès du public aux tickets lorsque le dépôt est privé
settings.allow_public_issues_desc=Permettre l'accès du public aux tickets lorsque le dépôt est privé
settings.use_external_issue_tracker=Utiliser un bug-tracker externe
settings.external_tracker_url=Adresse de l'issue tracker externe
settings.external_tracker_url_desc=Les visiteurs seront redirigés vers cette URL lorsqu'ils cliqueront sur l'onglet.
@ -757,7 +758,7 @@ settings.delete=Supprimer ce dépôt
settings.delete_desc=Attention, cette action est action irréversible. Soyez sûr de vous.
settings.delete_notices_1=- Cette opération <strong>ne peut pas </strong> être annulée.
settings.delete_notices_2=- Cette opération supprimera définitivement le dépôt, y compris les données Git, les tickets, les commentaires et les accès des collaborateurs.
settings.delete_notices_fork_1=-Tous les forks deviendront indépendants après leffacement.
settings.delete_notices_fork_1=-Tous les forks deviendront indépendants après l'effacement.
settings.deletion_success=Le dépôt a été supprimé avec succès!
settings.update_settings_success=Options mises à jour avec succès.
settings.transfer_owner=Nouveau propriétaire
@ -830,6 +831,7 @@ settings.recent_deliveries=Livraisons récentes
settings.hook_type=Type de Hook
settings.add_slack_hook_desc=Intégrer <a href="%s"> Slack</a> à votre dépôt.
settings.add_discord_hook_desc=Ajouter l'intégration de <a href="%s">Discord</a> à votre dépôt.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Jeton
settings.slack_domain=Domaine
settings.slack_channel=Canal
@ -1103,7 +1105,7 @@ auths.attribute_username_placeholder=Laisser vide pour utiliser la valeur du for
auths.attribute_name=First Name Attribute
auths.attribute_surname=Attribut du nom de famille
auths.attribute_mail=Attribut de l'e-mail
auths.verify_group_membership=Vérifier lappartenance à un groupe
auths.verify_group_membership=Vérifier l'appartenance à un groupe
auths.group_search_base_dn=Group Search Base DN
auths.group_filter=Filtre par groupe
auths.group_attribute_contain_user_list=Attribut de groupe contenant la liste des utilisateurs

2
conf/locale/locale_gl-ES.ini

@ -616,6 +616,7 @@ pulls.compare_compare=comparar con
pulls.filter_branch=Filtrar rama
pulls.no_results=Sen resultados.
pulls.nothing_to_compare=Nada que comparar. As dúas ramas coinciden.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Xa existe un pull request entre estas dúas ramas: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Crear Pull Request
pulls.title_desc=desexa fusionar %[1]d achegas de <code>%[2]s</code> en <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Envíos recentes
settings.hook_type=Tipo de Hook
settings.add_slack_hook_desc=Engade integración con <a href="%s">Slack</a> ao teu repositorio.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Token
settings.slack_domain=Dominio
settings.slack_channel=Canle

30
conf/locale/locale_hu-HU.ini

@ -241,7 +241,7 @@ auth_failed=Hitelesítési hiba: %v
still_own_repo=A felhasználód még legalább egy tároló tulajdonosa, először törölnöd kell őket vagy átadni másnak a tulajdonjogaikat.
still_has_org=A fiókod még mindig tagja legalább egy szervezetnek. Először ki kell lépned vagy törölnöd kell a tagságodat.
org_still_own_repo=Ez a szervezet még repository-k tulajdonosa. Először töröld vagy ruházd át őket.
org_still_own_repo=Ez a szervezet továbbra is tulajdonosa tárolóknak, ezért előbb törölje vagy adja át másnak a tárolókat.
target_branch_not_exist=Cél branch nem létezik.
@ -616,6 +616,7 @@ pulls.compare_compare=összehasonlítás
pulls.filter_branch=Branch szűrése
pulls.no_results=Nincs találat.
pulls.nothing_to_compare=Nincs mit összehasonlítani, mert a base és a head branch egyezik.
pulls.nothing_merge_base=Nincs mit összehasonlítani, mert két ág teljes mértékben különböző előzményekkel rendelkezik.
pulls.has_pull_request=`Már létezik egy pull kérés a két cél között: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Pull Kérés Létrehozása
pulls.title_desc=szeretne %[1]d commit-ot egyesíteni innen: <code>%[2]s</code> ide: <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Legutóbbi Küldések
settings.hook_type=Hook Típusa
settings.add_slack_hook_desc=<a href="%s">Slack</a> integráció hozzáadása a repository-hoz.
settings.add_discord_hook_desc=<a href="%s">Discord</a> integráció hozzáadva a térolóhoz.
settings.add_dingtalk_hook_desc=<a href="%s">Dingtalk</a> integráció hozzáadása a tárolóhoz.
settings.slack_token=Token
settings.slack_domain=Domain
settings.slack_channel=Csatorna
@ -1291,23 +1293,23 @@ push_tag=feltöltött egy cimkét: <a href="%s/src/%s">%[2]s</a> ide: <a href="%
delete_tag=törölt egy cimkét <code>%[2]s</code> ekkor: <a href="%[1]s">%[3]s</a>
[tool]
ago=óta
ago=
from_now=mostantól
now=most
1s=1 másodperce
1m=1 perce
1s=1 másodperce %s
1m=1 perce %s
1h=1 órája
1d=1 napja
1w=1 hete
1mon=1 hónapja
1y=1 éve
seconds=%d másodperce
minutes=%d perce
1d=1 napja %s
1w=1 hete %s
1mon=1 hónapja %s
1y=1 éve %s
seconds=%d másodperce %s
minutes=%d perce %s
hours=%d órája
days=%d nap %s
weeks=%d hete
months=%d hónapja
years=%d éve
days=%d napja %s
weeks=%d hete %s
months=%d hónapja %s
years=%d éve %s
raw_seconds=másodperc
raw_minutes=perc

38
conf/locale/locale_it-IT.ini

@ -169,11 +169,11 @@ reset_password_helper=Clicca qui per reimpostare la password
password_too_short=La lunghezza della password non può essere meno 6 caratteri.
non_local_account=Gli account non locali non possono modificare le password tramite Gogs.
login_two_factor=Two-factor Authentication
login_two_factor=Autenticazione in Due Passaggi
login_two_factor_passcode=Authentication Passcode
login_two_factor_enter_recovery_code=Enter a two-factor recovery code
login_two_factor_enter_recovery_code=Inserisci il codice di recupero dell'Autenticazione a due Fattori
login_two_factor_recovery=Two-factor Recovery
login_two_factor_recovery_code=Recovery Code
login_two_factor_recovery_code=Recupera il codice
login_two_factor_enter_passcode=Enter a two-factor passcode
login_two_factor_invalid_recovery_code=Recovery code has been used or does not valid.
@ -265,7 +265,7 @@ password=Password
avatar=Avatar
ssh_keys=Chiavi SSH
security=Security
repos=Repositories
repos=Repository
orgs=Organizzazioni
applications=Applicazioni
delete=Elimina account
@ -334,19 +334,19 @@ no_activity=Nessuna attività recente
key_state_desc=Hai utilizzato questa chiave negli ultimi 7 giorni
token_state_desc=Questo token e' satato utilizzato negli ultimi 7 giorni
two_factor=Two-factor Authentication
two_factor=Autenticazione in Due Passaggi
two_factor_status=Status:
two_factor_on=On
two_factor_on=Attiva
two_factor_off=Off
two_factor_enable=Enable
two_factor_disable=Disable
two_factor_disable=Disattivata
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
two_factor_enable_title=Enable Two-factor Authentication
two_factor_enable_title=Abilita l'autenticazione in due passaggi
two_factor_scan_qr=Please use your authentication application to scan the image:
two_factor_or_enter_secret=Or enter the secret:
two_factor_then_enter_passcode=Then enter passcode:
two_factor_verify=Verify
two_factor_verify=Verifica
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
two_factor_enable_error=Enable Two-factor authentication failed: %v
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
@ -375,7 +375,7 @@ orgs.none=Non sei membro di alcuna organizzazione.
orgs.leave_title=Abbandona una organizzazione
orgs.leave_desc=Abbandonando l'organizzazione perderai l'accesso a tutti i repository e i gruppi. Confermi?
repos.leave=Leave
repos.leave=Abbandona
repos.leave_title=Leave repository
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
repos.leave_success=You have left repository '%s' successfully!
@ -605,8 +605,8 @@ issues.label_deletion=Elimina Etichetta
issues.label_deletion_desc=Eliminare l'etichetta rimuovera le sue informazioni in tutti i problemi correlati. Vuoi continuare?
issues.label_deletion_success=Etichetta eliminata con successo!
issues.num_participants=%d Partecipanti
issues.attachment.open_tab=`Click to see "%s" in a new tab`
issues.attachment.download=`Click to download "%s"`
issues.attachment.open_tab='Clicca per vedere "%s" in una nuova scheda'
issues.attachment.download=«Clicca qui per scaricare "%s"»
pulls.new=Nuova Pull Request
pulls.compare_changes=Confronta le modifiche
@ -616,6 +616,7 @@ pulls.compare_compare=confronta
pulls.filter_branch=Filtra branch
pulls.no_results=Nessun risultato trovato.
pulls.nothing_to_compare=Non c'è niente da confrontare perchè i branch base e head uguali.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`E' già presente una pull request tra questi due trargets: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Crea Pull Request
pulls.title_desc=vorrebbe unire %[1]d commit da <code>%[2]s</code> a <code>%[3]s</code>
@ -628,7 +629,7 @@ pulls.merged=Unito
pulls.has_merged=Questo contributo è stato incluso con successo!
pulls.data_broken=I dati di questa pull request si sono rotti causa dell'eliminazione delle informazioni di fork.
pulls.is_checking=Il controllo dei conflitti è ancora in corso, per favore aggiorna pagina tra qualche istante.
pulls.can_auto_merge_desc=La pull request non può essere mergiata automaticamente.
pulls.can_auto_merge_desc=La pull request può essere mergiata automaticamente.
pulls.cannot_auto_merge_desc=Questa pull request non può essere mergiata automaticamente perchè ci sono dei conflitti.
pulls.cannot_auto_merge_helper=Effettua il merge manualmente per risolvere i conflitti.
pulls.merge_pull_request=Unisci Pull Request
@ -689,10 +690,10 @@ settings.branches=Branches
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
settings.default_branch=Default Branch
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
settings.update=Update
settings.update=Aggiorna
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
settings.protected_branches=Protected Branches
settings.protected_branches=Branch protetti
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
settings.choose_a_branch=Choose a branch...
settings.branch_protection=Branch Protection
@ -808,8 +809,8 @@ settings.event_create=Crea
settings.event_create_desc=Branch, o tag creato
settings.event_delete=Delete
settings.event_delete_desc=Branch or tag deleted
settings.event_fork=Fork
settings.event_fork_desc=Repository forked
settings.event_fork=Forka
settings.event_fork_desc=Repository Forkata
settings.event_push=Push
settings.event_push_desc=Git push in un repository
settings.event_issues=Issues
@ -830,6 +831,7 @@ settings.recent_deliveries=Recenti Deliveries
settings.hook_type=Tipo di Hook
settings.add_slack_hook_desc=Aggiungi <a href="%s"> Slack</a> integrazione al tuo repository.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Token
settings.slack_domain=Dominio
settings.slack_channel=Canale
@ -1242,7 +1244,7 @@ config.git_pull_timeout=Timeout per il pull
config.git_gc_timeout=Timeout per le operazioni di GC
config.log_config=Configurazione Log
config.log_mode=Mode
config.log_mode=Modalità
config.log_options=Options
monitor.cron=Incarici di cron

278
conf/locale/locale_ja-JP.ini

@ -69,7 +69,7 @@ app_name_helper=素晴らしい組織名を入れてください!
repo_path=リポジトリのルートパス
repo_path_helper=すべての Git リモート リポジトリはこのディレクトリに保存されます。
run_user=実行ユーザ
run_user_helper=ユーザーはリポジトリ ルートパスへのアクセス、及びGogs を実行する権限を所有する必要があります。
run_user_helper=ユーザーはリポジトリのルートパスへのアクセス権限、及び Gogs の実行権限を持っている必要があります。
domain=ドメイン
domain_helper=これはSSH用クローンURLに影響します。
ssh_port=SSH ポート
@ -99,8 +99,8 @@ offline_mode=オフラインモードを有効にする
offline_mode_popup=プロダクションモードでは、CDNを使用せずにローカルからリソースファイルを使用します。
disable_gravatar=Gravatarのサービスを無効にします
disable_gravatar_popup=Gravatarとカスタムソースを無効にして、全てのアバターをユーザーによってアップロードされたものかデフォルトなものにします。
federated_avatar_lookup=Enable Federated Avatars Lookup
federated_avatar_lookup_popup=Enable federated avatars lookup to use federated open source service based on libravatar.
federated_avatar_lookup=連合アバター検索を有効にする
federated_avatar_lookup_popup=Libavatarに基づいたオープンソースサービスを使用するには、連合アバター検索を有効にします。
disable_registration=自己登録を無効にする
disable_registration_popup=自己登録を無効にし、管理者のみがアカウント作成できる
enable_captcha=Captchaを有効にする
@ -117,9 +117,9 @@ install_gogs=Gogs をインストール
test_git_failed='Git' コマンドテストに失敗: %v
sqlite3_not_available=このリリース バージョンは SQLite3 をサポートしていません。gobuild バージョンではない、公式のバイナリ バージョンを %s からダウンロードしてください。
invalid_db_setting=データベースの設定が正しくありません: %v
invalid_repo_path=リポジトリのルート パスが無効です: %v
invalid_repo_path=リポジトリのルートパスが無効です: %v
run_user_not_match=実行ユーザーは、現在のユーザーではない: %s-> %s
smtp_host_missing_port=SMTP Host is missing port in address.
smtp_host_missing_port=SMTPホストのポートが見つかりません。
invalid_smtp_from=SMTP From フィールドの値が有効ではありません: %v
save_config_failed=構成の保存に失敗した: %v
invalid_admin_setting=管理者アカウントの設定が無効です: %v
@ -135,7 +135,7 @@ show_more_repos=リポジトリをさらに表示…
collaborative_repos=共同リポジトリ
my_orgs=自分の組織
my_mirrors=自分のミラー
view_home=ビュー %s
view_home=%s を見る
issues.in_your_repos=あなたのリポジトリ
@ -167,7 +167,7 @@ reset_password=パスワードリセット
invalid_code=申し訳ありませんが、確認用コードが期限切れまたは無効です。
reset_password_helper=パスワードをリセットするにはここをクリック
password_too_short=6文字未満のパスワードは設定できません。
non_local_account=Non-local accounts cannot change passwords through Gogs.
non_local_account=非ローカルアカウントではGogs経由でのパスワード変更はできません。
login_two_factor=2段階認証
login_two_factor_passcode=認証用パスコード
@ -240,14 +240,14 @@ unable_verify_ssh_key=GogsはあなたのSSH keyを確認できません。し
auth_failed=認証に失敗しました: %v
still_own_repo=アカウント所有のリポジトリがあり、リポジトリの削除または所有者の移譲が必要です。
still_has_org=アカウントはまだ組織のメンバーであり、組織から退出するか削除する必要があります。
still_has_org=あなたのアカウントは1つ以上の組織に所属しているため、先に組織を脱退するか削除する必要があります。
org_still_own_repo=この組織はまだリポジトリの所有しています、リポジトリを削除または転送する必要があります。
target_branch_not_exist=ターゲットブランチが存在しない
[user]
change_avatar=アバターを変更
join_on=参加しました
join_on=登録日
repositories=リポジトリ
activity=パブリック・アクティビティ
followers=フォロワー
@ -256,7 +256,7 @@ following=フォロー
follow=フォロー
unfollow=フォロー解除
form.name_reserved=ユーザー名 '%s' は予約されています。
form.name_reserved=ユーザー名 '%s' は使用されています。
form.name_pattern_not_allowed=ユーザ名のパターン '%s' は許可されていません。
[settings]
@ -284,7 +284,7 @@ continue=続行
cancel=キャンセル
lookup_avatar_by_mail=メールからアバターを取得
federated_avatar_lookup=Federated Avatar Lookup
federated_avatar_lookup=連合アバター検索
enable_custom_avatar=カスタムのアバターを有効にする
choose_new_avatar=新しいアバターを選択
update_avatar=アバターの設定を更新
@ -310,13 +310,13 @@ email_deletion=電子メールの削除
email_deletion_desc=この電子メール アドレスを削除すると、あなたのアカウントの関連情報も削除されます。続行しますか。
email_deletion_success=電子メールが正常に削除されました。
add_new_email=新しいメールアドレスを追加
add_email=電子メールを追加します。
add_email=メールアドレスの追加
add_email_confirmation_sent='%s' に新しい確認メールを送信しました、次の %d 時間以内に受信トレイを確認し、確認プロセスを完了してください。
add_email_success=新しいメールアドレスが追加されました。
manage_ssh_keys=SSH キーを管理
add_key=キーを追加
ssh_desc=これはあなたのアカウントに関連付けられている SSH キーの一覧です。あなたが認識していないキーを削除します
ssh_desc=あなたのアカウントに紐付けられているSSHキーの一覧です。SSHキーがあれば誰でもリポジトリへのアクセス権を得ることが出来ますので、見覚えのないSSHキーがないかよくご確認ください
ssh_helper=<strong>やり方がわかりませんか?</strong> GitHubのガイドをご覧ください。 <a href="%s"> SSHキーの作成</a> <a href="%s">SSH使用に際してよくある問題</a>
add_new_key=SSH キーを追加
ssh_key_been_used=公開鍵は使用されています。
@ -328,7 +328,7 @@ delete_key=削除
ssh_key_deletion=SSH キーの削除
ssh_key_deletion_desc=このSSHキーを削除すると、あなたのアカウントに関連するすべてのアクセスが削除されます。続行しますか?
ssh_key_deletion_success=SSH キーは正常に削除されました!
add_on=追加された
add_on=登録日
last_used=最終使用日
no_activity=最近の活動なし
key_state_desc=この鍵は7日間以内に使われています。
@ -343,10 +343,10 @@ two_factor_disable=無効にする
two_factor_view_recovery_codes=<a href="%s%s">リカバリーコード</a>を確認し、安全な場所に保管してください。認証済みアプリケーションにアクセスできなくなったとき、パスコードとしてそれを使用できます。
two_factor_http=HTTP/HTTPS 通信において、平文のユーザー名・パスワードは使用できなくなりました。個人証明には<a href="%[1]s%[2]s">パーソナル・アクセストークン</a>を作成し利用してください。例:<code>%[3]s</code>
two_factor_enable_title=2段階認証を有効にする
two_factor_scan_qr=Please use your authentication application to scan the image:
two_factor_or_enter_secret=Or enter the secret:
two_factor_scan_qr=認証アプリケーションを使用して画像をスキャンしてください :
two_factor_or_enter_secret=またはシークレットを入力:
two_factor_then_enter_passcode=パスコードを入力してください:
two_factor_verify=Verify
two_factor_verify=確認
two_factor_invalid_passcode=入力されたパスコードは使用できません。もう一度お試しください。
two_factor_enable_error=2段階認証の有効化に失敗しました: %v
two_factor_enable_success=2段階認証があなたのアカウントで有効化されました!
@ -372,13 +372,13 @@ access_token_deletion_desc=パーソナルアクセストークンを削除す
delete_token_success=パーソナルアクセストークンは正常に削除されました!同時にあなたのアプリケーションを更新することを忘れないでください。
orgs.none=あなたはどの組織のメンバーでもありません。
orgs.leave_title=Leave organization
orgs.leave_desc=You will lose access to all repositories and teams after you left the organization. Do you want to continue?
orgs.leave_title=組織を作成
orgs.leave_desc=組織から脱退すると、全てのリポジトリとチームへのアクセスができなくなります。続行しますか?
repos.leave=Leave
repos.leave_title=Leave repository
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
repos.leave_success=You have left repository '%s' successfully!
repos.leave=脱退
repos.leave_title=リポジトリから脱退
repos.leave_desc=脱退するとリポジトリへのアクセスができなくなります。よろしいですか?
repos.leave_success=リポジトリ '%s' からの脱退が完了しました!
delete_account=アカウントを削除
delete_prompt=この操作をするとアカウントが完全に削除され、<strong>二度と元に戻すことができなくなります</strong> !
@ -391,8 +391,8 @@ owner=オーナー
repo_name=リポジトリ名
repo_name_helper=短くて分かりやすく<strong>重複しない</strong>リポジトリ名を決めてください。
visibility=公開/非公開
visiblity_helper=このリポジトリは<span class="ui red text">プライベート</span>です。
visiblity_helper_forced=サイト管理者は、強制的にすべての新しいリポジトリを<span class="ui red text"> プライベート</span> にしています。
visiblity_helper=このリポジトリは<span class="ui red text">非公開</span>です
visiblity_helper_forced=サイト管理者が、すべての新しいリポジトリを<span class="ui red text">非公開</span>にすることを強制しています
visiblity_fork_helper=(この値の変更はすべてのフォークに適用されます)
clone_helper=クローンに関してお困りであれば<a target="_blank"href="%s"> ヘルプ</a> を参照しましょう。
fork_repo=リポジトリをフォーク
@ -400,7 +400,7 @@ fork_from=フォーク元
fork_visiblity_helper=フォークされたリポジトリの可視状態は変更できません。
repo_desc=説明
repo_lang=言語
repo_gitignore_helper=Select .gitignore templates
repo_gitignore_helper=.gitignoreのテンプレートを選択
license=ライセンス
license_helper=ライセンス ファイルを選択
readme=Readme
@ -409,10 +409,10 @@ auto_init=選択されたファイルおよびテンプレートでリポジト
create_repo=リポジトリを作成
default_branch=デフォルトのブランチ
mirror_prune=Prune
mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote
mirror_prune_desc=リモートに存在しないリモート追跡参照を削除する
mirror_interval=ミラー 間隔(時)
mirror_address=ミラー アドレス
mirror_address_desc=Please include necessary user credentials in the address.
mirror_address_desc=アドレスに必要なユーザーの資格情報を入力してください。
mirror_last_synced=最終同期
watchers=ウォッチャー
stargazers=Stargazers
@ -428,7 +428,7 @@ migrate_type_helper=このリポジトリは、<span class="text blue"> ミラ
migrate_repo=リポジトリを移行
migrate.clone_address=クローンアドレス
migrate.clone_address_desc=HTTP/HTTPS/GIT URLを設定できます。
migrate.clone_address_desc_import_local=You're also allowed to migrate a repository by local server path.
migrate.clone_address_desc_import_local=ローカルサーバーのパスでリポジトリを移行することもできます。
migrate.permission_denied=ローカル リポジトリをインポートすることはできません。
migrate.invalid_local_path=ローカルパスが無効です。存在しないかディレクトリではありません。
migrate.failed=移行に失敗しました: %v
@ -450,7 +450,7 @@ quick_guide=クイック ガイド
clone_this_repo=このリポジトリのクローンを作成
create_new_repo_command=コマンドラインで新しいリポジトリを作成します。
push_exist_repo=コマンド ・ ラインから既存のリポジトリをプッシュ
bare_message=This repository does not have any content yet.
bare_message=このリポジトリにはまだコンテンツがありません。
files=ファイル
branch=ブランチ
@ -472,9 +472,9 @@ file_permalink=パーマリンク
file_too_large=このファイルは大きすぎるため、表示できません。
video_not_supported_in_browser=お使いのブラウザーは、HTML5 の video タグをサポートしていません。
branches.overview=Overview
branches.active_branches=Active Branches
branches.stale_branches=Stale Branches
branches.overview=概要
branches.active_branches=アクティブブランチ
branches.stale_branches=古いブランチ
branches.all=すべてのブランチ
branches.updated_by=%[1]s が %[2]s によって更新されました
branches.change_default_branch=デフォルトブランチの変更
@ -482,16 +482,16 @@ branches.change_default_branch=デフォルトブランチの変更
editor.new_file=新規ファイル
editor.upload_file=ファイルをアップロード
editor.edit_file=ファイルを編集
editor.preview_changes=Preview Changes
editor.preview_changes=変更箇所のプレビュー
editor.cannot_edit_non_text_files=テキストファイルでないため編集できません
editor.edit_this_file=このファイルを編集
editor.must_be_on_a_branch=You must be on a branch to make or propose changes to this file
editor.fork_before_edit=ファイルを編集する前にこのリポジトリをフォークする必要があります。
editor.delete_this_file=このファイルを削除
editor.must_have_write_access=You must have write access to make or propose changes to this file
editor.must_have_write_access=このファイルへの変更を作成・提案するには、書き込み権限が必要です
editor.file_delete_success=ファイル '%s' は正常に削除されました!
editor.name_your_file=ファイル名を設定...
editor.filename_help=To add directory, just type it and press /. To remove a directory, go to the beginning of the field and press backspace.
editor.filename_help=ディレクトリを追加するには、ディレクトリ名を入力後 / を入力してください。削除するには、入力欄の先頭まで移動し backspace キーを押してください。
editor.or=もしくは
editor.cancel_lower=キャンセル
editor.commit_changes=変更をコミット
@ -500,14 +500,14 @@ editor.add='%s' を追加
editor.update='%s' を更新
editor.delete='%s' を削除
editor.commit_message_desc=詳細な説明を追加...
editor.commit_directly_to_this_branch=Commit directly to the <strong class="branch-name">%s</strong> branch.
editor.create_new_branch=Create a <strong>new branch</strong> for this commit and start a pull request.
editor.commit_directly_to_this_branch=<strong class="branch-name">%s</strong> ブランチに直接コミットする。
editor.create_new_branch=このコミットのために<strong>新しいブランチ</strong>を作成し、プルリクエストの作成を開始する。
editor.new_branch_name_desc=新しいブランチ名...
editor.cancel=キャンセル
editor.filename_cannot_be_empty=ファイル名を空にすることはできません。
editor.branch_already_exists=Branch '%s' already exists in this repository.
editor.branch_already_exists=ブランチ '%s' は、このリポジトリに既に存在します。
editor.directory_is_a_file=Entry '%s' in the parent path is a file not a directory in this repository.
editor.file_is_a_symlink=The file '%s' is a symlink that cannot be modified from the web editor.
editor.file_is_a_symlink=ファイル '%s' はシンボリックリンクのため、Webエディターから編集することができません。
editor.filename_is_a_directory=ファイル名 '%s' は、このリポジトリに存在するディレクトリと同じ名前です。
editor.file_editing_no_longer_exists=あなたが編集しているファイル '%s' は、すでにリポジトリに存在しません。
editor.file_changed_while_editing=あなたが編集を開始してから、ファイルの内容が変更されました。<a target="_blank" href="%s">ここをクリック</a>して変更箇所を確認するか、<strong>コミットをもう一度押して</strong>変更を上書きしてください。
@ -563,14 +563,14 @@ issues.filter_type.assigned_to_you=担当中のリポジトリ
issues.filter_type.created_by_you=作成したリポジトリ
issues.filter_type.mentioning_you=あなたに伝える
issues.filter_sort=並べ替え
issues.filter_sort.latest=最新
issues.filter_sort.oldest=最も古い
issues.filter_sort.recentupdate=最近更新された
issues.filter_sort.leastupdate=つい最近更新
issues.filter_sort.mostcomment=一番多いコメント
issues.filter_sort.leastcomment=一番少ないコメント
issues.opened_by=%[1]s <a href="%[2]s">%[3]s</a> によって開かれました
issues.opened_by_fake=%[1]s %[2]s によって開かれました
issues.filter_sort.latest=作成が新しい順
issues.filter_sort.oldest=作成が古い順
issues.filter_sort.recentupdate=更新が新しい順
issues.filter_sort.leastupdate=作成が古い順
issues.filter_sort.mostcomment=コメントが多い順
issues.filter_sort.leastcomment=コメントが少ない順
issues.opened_by=%[1]s <a href="%[2]s">%[3]s</a> によって開かれました
issues.opened_by_fake=%[1]s %[2]s によって開かれました
issues.previous=前ページ
issues.next=次ページ
issues.open_title=オープン
@ -584,8 +584,8 @@ issues.close_comment_issue=コメントしてクローズ
issues.reopen_issue=Reopen
issues.reopen_comment_issue=コメントと再開
issues.create_comment=コメント 
issues.closed_at=`<a id="%[1]s" href="#%[1]s">%[2]s</a> 閉じられました`
issues.reopened_at=`<a id="%[1]s" href="#%[1]s">%[2]s</a> 再び開かれました`
issues.closed_at=`<a id="%[1]s" href="#%[1]s">%[2]s</a> 閉じられました`
issues.reopened_at=`<a id="%[1]s" href="#%[1]s">%[2]s</a> 再び開かれました`
issues.commit_ref_at=`この課題がコミット <a id="%[1]s" href="#%[1]s">%[2]s</a> から参照されました`
issues.poster=ポスター
issues.collaborator=共同編集者
@ -615,19 +615,20 @@ pulls.compare_base=ベース
pulls.compare_compare=比較
pulls.filter_branch=フィルターブランチ
pulls.no_results=結果が見つかりませんでした。
pulls.nothing_to_compare=There is nothing to compare because base and head branches are even.
pulls.nothing_to_compare=ベースブランチとヘッドブランチが同一であるため、比較するものがありません。
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`既にプルリクエストがこれらのターゲット間に存在します: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=プルリクエストを作成します。
pulls.title_desc=wants to merge %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code>
pulls.merged_title_desc=merged %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code> %[4]s
pulls.merged_title_desc=%[4]s に %[1]d 件のコミットが <code>%[2]s</code> から <code>%[3]s</code> にマージされました
pulls.tab_conversation=会話
pulls.tab_commits=コミット
pulls.tab_files=ファイルが変更された
pulls.reopen_to_merge=Please reopen this pull request to perform merge operation.
pulls.reopen_to_merge=マージ操作を実行するには、このプルリクエストを再び開いてください。
pulls.merged=マージされた
pulls.has_merged=このプルプルリクエストは正常にマージされました!
pulls.data_broken=Data of this pull request has been broken due to deletion of fork information.
pulls.is_checking=The conflict checking is still in progress, please refresh page in few moments.
pulls.is_checking=コンフリクトが発生していないかチェック中です、しばらく待ったのちページを更新してください。
pulls.can_auto_merge_desc=このプルリクエストは自動的にマージできます。
pulls.cannot_auto_merge_desc=コンフリクトが発生しているため、このプルリクエストを自動的にマージすることはできません。
pulls.cannot_auto_merge_helper=競合を解決するためには、手動でマージする必要があります。
@ -643,27 +644,27 @@ milestones.closed=%s を閉じました
milestones.no_due_date=期限なし
milestones.open=開く
milestones.close=閉じる
milestones.new_subheader=あなたの課題を整理するためマイルス トーンを作成します。
milestones.create=マイルス トーンを作成
milestones.new_subheader=あなたの課題を整理するためマイルストーンを作成します。
milestones.create=マイルストーンを作成
milestones.title=タイトル
milestones.desc=説明
milestones.due_date=期日 (オプション)
milestones.clear=消去
milestones.invalid_due_date_format=限日付のフォーマットが無効、'yyyy-mm-dd' のフォーマットが必要です。
milestones.create_success=マイルス トーン '%s' が正常に作成されました!
milestones.edit=マイルス トーンを編集
milestones.edit_subheader=人々を混乱させないため、マイルス トーンにより良い説明を使用します
milestones.invalid_due_date_format=日のフォーマットが無効です、 'yyyy-mm-dd' の形式である必要があります。
milestones.create_success=マイルストーン '%s' が正常に作成されました
milestones.edit=マイルストーンを編集
milestones.edit_subheader=メンバーを混乱させないよう、マイルストーンの説明はわかりやすくしましょう
milestones.cancel=キャンセル
milestones.modify=マイルス トーンを変更します。
milestones.edit_success=マイルス トーン '%s' の変更が正常に保存されました
milestones.deletion=マイルス トーンの削除
milestones.deletion_desc=このマイルス トーンを削除すると、関連課題に該当情報が削除されます。続行しますか。
milestones.deletion_success=マイルス トーンは正常に削除されました。
milestones.modify=マイルストーンを変更
milestones.edit_success=マイルストーン '%s' の変更が正常に保存されました
milestones.deletion=マイルストーンの削除
milestones.deletion_desc=マイルストーンを削除すると、課題との紐付け情報が削除されます。続行しますか?
milestones.deletion_success=マイルストーンは正常に削除されました!
wiki=Wiki
wiki.welcome=Wiki へようこそ!
wiki.welcome_desc=Wikiとは、あなたのプロジェクトを文書化し、複数人で一緒に編集する場所です。
wiki.create_first_page=最初のページを作成する
wiki.create_first_page=最初のページを作成する
wiki.page=ページ
wiki.filter_page=フィルターページ
wiki.new_page=新しいページを作成
@ -686,9 +687,9 @@ settings.collaboration.write=書込
settings.collaboration.read=読込
settings.collaboration.undefined=未定義
settings.branches=ブランチ
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
settings.branches_bare=リポジトリが初期の状態ではブランチの設定はおこなえません。まずは何かプッシュしてください。
settings.default_branch=デフォルトブランチ
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
settings.default_branch_desc=デフォルトブランチは、コードのコミットやプルリクエスト、オンライン編集において「基点」となるブランチです。
settings.update=更新
settings.update_default_branch_unsupported=このサーバー上のGitバージョンではデフォルトブランチの変更がサポートされていません。
settings.update_default_branch_success=このリポジトリのデフォルトブランチが更新されました!
@ -719,31 +720,31 @@ settings.update_settings=設定の更新
settings.change_reponame_prompt=この変更はリンクがリポジトリに関連付ける方法に影響します。
settings.advanced_settings=拡張設定
settings.wiki_desc=Wiki システムを有効にする
settings.use_internal_wiki=Use builtin wiki
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
settings.use_external_wiki=外部 wiki を使用します。
settings.use_internal_wiki=内蔵 Wiki を使用する
settings.allow_public_wiki_desc=非公開リポジトリであってもWikiへのアクセスは誰でも可能にする
settings.use_external_wiki=外部 Wiki を使用する
settings.external_wiki_url=外部 Wiki の URL
settings.external_wiki_url_desc=Visitors will be redirected to URL when they click on the tab.
settings.external_wiki_url_desc=訪問者がタブをクリックしたとき、このURLにリダイレクトされます。
settings.issues_desc=課題トラッキングツールを有効
settings.use_internal_issue_tracker=Use builtin lightweight issue tracker
settings.allow_public_issues_desc=Allow public access to issues when repository is private
settings.use_internal_issue_tracker=軽量な内蔵の課題トラッキングシステムを使用
settings.allow_public_issues_desc=非公開リポジトリであっても課題へのアクセスは誰でも可能にする
settings.use_external_issue_tracker=外部課題トラッキングシステムを使用
settings.external_tracker_url=外部課題トラッキングツール URL
settings.external_tracker_url_desc=Visitors will be redirected to URL when they click on the tab.
settings.external_tracker_url_desc=訪問者がタブをクリックしたとき、このURLにリダイレクトされます。
settings.tracker_url_format=外部課題トラッキングツール URLのフォーマット
settings.tracker_issue_style=External Issue Tracker Naming Style:
settings.tracker_issue_style=外部課題トラッキングシステムの命名方式:
settings.tracker_issue_style.numeric=数値
settings.tracker_issue_style.alphanumeric=英数字
settings.tracker_url_format_desc=You can use placeholder <code>{user} {repo} {index}</code> for user name, repository name and issue index.
settings.pulls_desc=Enable pull requests to accept public contributions
settings.tracker_url_format_desc=ユーザー名、リポジトリ名、課題番号を埋め込むために <code>{user} {repo} {index}</code> が使用できます。
settings.pulls_desc=誰でもコントリビュートできるよう、プルリクエストの受け付けを有効にします
settings.danger_zone=危険地帯
settings.cannot_fork_to_same_owner=元の持ち主に向けてフォークすることは出来ません。
settings.new_owner_has_same_repo=新しいオーナーは、既に同じ名前のリポジトリを持っています。
settings.convert=Convert To Regular Repository
settings.convert_desc=You can convert this mirror to a regular repository. This cannot be reversed.
settings.convert_notices_1=- This operation will convert this repository mirror into a regular repository and cannot be undone.
settings.convert_confirm=Confirm Conversion
settings.convert_succeed=Repository has been converted to regular type successfully.
settings.convert=通常リポジトリへ変更
settings.convert_desc=ミラーリポジトリを通常のリポジトリに変更します。この操作は元に戻せません。
settings.convert_notices_1=- この操作によりリポジトリはミラーリポジトリから通常リポジトリへと変更され、元に戻すことはできません。
settings.convert_confirm=変更を確認
settings.convert_succeed=リポジトリは正常に通常リポジトリへ変更されました。
settings.transfer=オーナー移転
settings.transfer_desc=リポジトリをあなたが管理者権限を持っている別のユーザーまた組織に移譲します。
settings.transfer_notices_1=-新しい所有者が個人ユーザーの場合、あなたがアクセスできなくなります。
@ -778,10 +779,10 @@ settings.webhook_deletion=Webhook を削除
settings.webhook_deletion_desc=このwebhookを削除すると、すべての情報と配信履歴が削除されます。続行しますか?
settings.webhook_deletion_success=Webhook が正常に削除されました。
settings.webhook.test_delivery=テスト配信
settings.webhook.test_delivery_desc=Send a fake push event delivery to test your webhook settings
settings.webhook.test_delivery_success=Test webhook has been added to delivery queue. It may take few seconds before it shows up in the delivery history.
settings.webhook.test_delivery_desc=Webhook 設定をテストするために、フェイクのpushイベントを送信します
settings.webhook.test_delivery_success=テスト Webhook が配信キューに追加されました。配信履歴に表示されるまでにはしばらく時間がかかる場合があります。
settings.webhook.redelivery=再送信
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
settings.webhook.redelivery_success=フックタスク '%s' が配信キューに再び追加されました。配信履歴に表示されるまでにはしばらく時間がかかる場合があります。
settings.webhook.request=リクエスト
settings.webhook.response=レスポンス
settings.webhook.headers=ヘッダ
@ -800,26 +801,26 @@ settings.secret_desc=Secret will be sent as SHA256 HMAC hex digest of payload vi
settings.slack_username=ユーザ名
settings.slack_icon_url=アイコン URL
settings.slack_color=カラー
settings.event_desc=どのイベントをこのWEBフックのトリガーにしますか?
settings.event_desc=どのイベントをこの Webhook のトリガーにしますか?
settings.event_push_only=<code>push</code> イベントのみ
settings.event_send_everything=<strong>すべて</strong> が必要です。
settings.event_choose=必要なものを選択しましょう。
settings.event_create=Create
settings.event_create_desc=ブランチ、またはタグを作成
settings.event_send_everything=<strong>すべて</strong>のイベント
settings.event_choose=必要なものを選択
settings.event_create=作成
settings.event_create_desc=ブランチやタグの作成時
settings.event_delete=削除
settings.event_delete_desc=Branch or tag deleted
settings.event_delete_desc=ブランチやタグの削除時
settings.event_fork=フォーク
settings.event_fork_desc=リポジトリがフォークされまし
settings.event_fork_desc=リポジトリがフォークされた
settings.event_push=プッシュ
settings.event_push_desc=Git リポジトリにプッシュ
settings.event_push_desc=リポジトリへのプッシュがされた時
settings.event_issues=課題
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
settings.event_issues_desc=課題の開始・終了・再開・編集・アサイン・アサイン解除・ラベル更新・ラベル削除・マイルストーン紐付け・マイルストーン紐付け解除がされた時
settings.event_issue_comment=課題へのコメント
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
settings.event_issue_comment_desc=課題へのコメントが作成・編集・削除された時
settings.event_pull_request=プルリクエスト
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
settings.event_pull_request_desc=プルリクエストの開始・終了・再開・編集・アサイン・アサイン解除・ラベル更新・ラベル削除・マイルストーン紐付け・マイルストーン紐付け解除・同期がされた時
settings.event_release=リリース
settings.event_release_desc=リポジトリでリリースが公開されました。
settings.event_release_desc=リポジトリでリリースが公開された時
settings.active=アクティブ
settings.active_helper=このフックのトリガーが引かれた時に、イベントの詳細を配信します。
settings.add_hook_success=新しい webhook が追加されました。
@ -828,13 +829,14 @@ settings.update_hook_success=Webhook を更新しました。
settings.delete_webhook=Webhook を削除
settings.recent_deliveries=最近のデリバリー
settings.hook_type=フックタイプ
settings.add_slack_hook_desc=リポジトリに <a href="%s"> Slack</a> 連携を追加します。
settings.add_slack_hook_desc=リポジトリに <a href="%s">Slack</a> 連携を追加します。
settings.add_discord_hook_desc=リポジトリに <a href="%s">Discord</a> 連携を追加します。
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=トークン
settings.slack_domain=ドメイン
settings.slack_channel=チャンネル
settings.deploy_keys=デプロイキー
settings.deploy_keys_helper=<b>Common Gotcha!</b> If you're looking for adding personal public keys, please add them in your <a href="%s%s">account settings</a>.
settings.deploy_keys_helper=<b>お探しですか?</b> 個人公開鍵を追加する場合は、<a href="%s%s">アカウント設定</a>からおこなえます。
settings.add_deploy_key=デプロイキーを追加
settings.deploy_key_desc=個人アカウントのSSHキーとは異なり、デプロイキーは読み取り専用アクセスとなります。
settings.no_deploy_keys=デプロイキーは1つも追加されていません。
@ -853,12 +855,12 @@ diff.commit=コミット
diff.data_not_available=差分データは利用できません。
diff.show_diff_stats=差分情報を表示
diff.show_split_view=分割表示
diff.show_unified_view=Unified View
diff.show_unified_view=一括表示
diff.stats_desc=共有<strong>%d 個のファイルを変更した</strong>、<strong>%d 個の追加</strong> と <strong>%d 個の削除</strong>を含む
diff.bin=BIN
diff.view_file=ファイルの表示
diff.file_suppressed=File diff suppressed because it is too large
diff.too_many_files=Some files were not shown because too many files changed in this diff
diff.file_suppressed=ファイルの差分が大きいため隠しています
diff.too_many_files=この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません
release.releases=リリース
release.new_release=新しいリリース
@ -897,7 +899,7 @@ org_full_name_holder=組織のフルネーム
org_name_helper=偉大な組織の名は短く覚えやすいです。
create_org=組織を作成
repo_updated=最終更新
people=人々
people=メンバー
invite_someone=誰かを招待
teams=チーム
lower_members=メンバー
@ -931,21 +933,21 @@ settings.delete_org_title=組織の削除
settings.delete_org_desc=この組織は完全に削除されます。よろしいですか?
settings.hooks_desc=この組織のもとで <strong>すべてのリポジトリ</strong> に対してトリガーされる webhook を追加します。
members.membership_visibility=Membership Visibility:
members.membership_visibility=所属状況を公開:
members.public=パブリック
members.public_helper=プライベートにする
members.private=プライベート
members.public_helper=非公開にする
members.private=非公開
members.private_helper=公開する
members.member_role=メンバーの役割:
members.owner=オーナー
members.member=メンバー
members.remove=削除
members.leave=退
members.leave=退
members.invite_desc=%s に新しいメンバーを追加
members.invite_now=今すぐ招待
teams.join=参加
teams.leave=退
teams.leave=退
teams.read_access=読み取りアクセス権
teams.read_access_helper=このチームはリポジトリの閲覧とクローンをすることができます。
teams.write_access=書き込みアクセス権
@ -1041,8 +1043,8 @@ dashboard.gc_times=GC実行回数
users.user_manage_panel=ユーザー管理パネル
users.new_account=新規アカウントを作成
users.name=名前
users.activated=アクティブ化
users.admin=アドミン
users.activated=有効
users.admin=管理者
users.repos=リポジトリ
users.created=作成日時
users.send_register_notify=登録通知をユーザーに送信
@ -1051,8 +1053,8 @@ users.edit=編集
users.auth_source=認証ソース
users.local=ローカル
users.auth_login_name=認証ログイン名
users.password_helper=それをそのまま空のままにします
users.update_profile_success=アカウントのプロファイルが更新されました。
users.password_helper=変更しない場合は空白のままにしてください
users.update_profile_success=アカウント情報が更新されました。
users.edit_account=アカウントの編集
users.max_repo_creation=最大リポジトリ作成数
users.max_repo_creation_desc=(デフォルトの設定を使用する場合は -1 を設定してください)
@ -1061,10 +1063,10 @@ users.prohibit_login=ログイン禁止のアカウント
users.is_admin=管理者権限を持つアカウント
users.allow_git_hook=Git フックの作成権限を持つアカウント
users.allow_import_local=ローカルリポジトリをインポートする権限を持つアカウント
users.update_profile=アカウント ・ プロファイルを更新
users.update_profile=アカウント情報を更新
users.delete_account=このアカウントを削除
users.still_own_repo=アカウント所有のリポジトリがあり、リポジトリの削除または所有者の移譲が必要です。
users.still_has_org=アカウントはまだ組織のメンバーであり、組織から退出するか削除する必要があります。
users.still_has_org=このアカウントは1つ以上の組織に所属しているため、先に組織を脱退させるか組織を削除する必要があります。
users.deletion_success=アカウントが正常に削除されました。
orgs.org_manage_panel=組織の管理パネル
@ -1075,7 +1077,7 @@ orgs.members=メンバー
repos.repo_manage_panel=リポジトリの管理パネル
repos.owner=オーナー
repos.name=名前
repos.private=プライベート
repos.private=非公開
repos.watches=Watches
repos.stars=Stars
repos.issues=課題
@ -1085,7 +1087,7 @@ auths.auth_manage_panel=認証管理パネル
auths.new=新しいソースを追加
auths.name=名前
auths.type=タイプ
auths.enabled=Enabled
auths.enabled=有効
auths.updated=更新しました
auths.auth_type=認証タイプ
auths.auth_name=認証名
@ -1098,7 +1100,7 @@ auths.bind_password=バインド パスワード
auths.bind_password_helper=警告: このパスワードは暗号化されずに格納されます。特権を持つアカウントに使用しないでください。
auths.user_base=ユーザ検索ベース
auths.user_dn=User DN
auths.attribute_username=Username Attribute
auths.attribute_username=ユーザー名属性
auths.attribute_username_placeholder=Leave empty to use sign-in form field value for user name.
auths.attribute_name=First Name Attribute
auths.attribute_surname=名字属性
@ -1116,7 +1118,7 @@ auths.smtp_auth=SMTP 認証の種類
auths.smtphost=SMTP ホスト
auths.smtpport=SMTP ポート
auths.allowed_domains=許可されているドメイン
auths.allowed_domains_helper=Leave it empty to not restrict any domains. Multiple domains should be separated by comma ','.
auths.allowed_domains_helper=ドメイン制限をおこなわない場合は空のままにしてください。複数のドメインを記入する場合は、カンマ ',' で区切ってください。
auths.enable_tls=TLS 暗号化を有効にする
auths.skip_tls_verify=TLSベリファイを省略
auths.pam_service_name=PAMサービス名
@ -1130,9 +1132,9 @@ auths.update=認証設定を更新
auths.delete=この認証を削除
auths.delete_auth_title=認証削除
auths.delete_auth_desc=認証を削除します、継続しますか?
auths.still_in_used=This authentication is still used by some users, please delete or convert these users to another login type first.
auths.still_in_used=この認証を使用しているユーザーがいます。ユーザーを削除するか、別のログイン方法に割り当ててください。
auths.deletion_success=認証が正常に削除されました。
auths.login_source_exist=Login source '%s' already exists.
auths.login_source_exist=ログイン ソース '%s' は既に存在します。
config.server_config=サーバーの構成
config.app_name=アプリケーション名
@ -1145,7 +1147,7 @@ config.run_user=実行ユーザ
config.run_mode=実行モード
config.git_version=Git バージョン
config.static_file_root_path=静的ファイルのルートパス
config.log_file_root_path=ログ ファイルのルート パス
config.log_file_root_path=ログファイルのルートパス
config.reverse_auth_user=リバース認証ユーザ
config.ssh_config=SSH設定
@ -1155,22 +1157,22 @@ config.ssh_domain=ドメイン
config.ssh_port=ポート
config.ssh_listen_port=リッスンポート
config.ssh_root_path=ルートパス
config.ssh_key_test_path=Key Test Path
config.ssh_key_test_path=キーテストパス
config.ssh_keygen_path=鍵生成コマンド ('ssh-keygen') のパス
config.ssh_minimum_key_size_check=最小キーサイズチェック
config.ssh_minimum_key_sizes=最小キーサイズ
config.repo_config=レポジトリの構成
config.repo_config=リポジトリの設定
config.repo_root_path=リポジトリのルートパス
config.script_type=スクリプトの種類
config.repo_force_private=Force Private
config.repo_force_private=非公開リポジトリの強制
config.max_creation_limit=最大作成数
config.preferred_licenses=Preferred Licenses
config.preferred_licenses=優先ライセンス
config.disable_http_git=HTTP Git の無効化
config.enable_local_path_migration=Enable Local Path Migration
config.commits_fetch_concurrency=Commits Fetch Concurrency
config.db_config=データベースの構成
config.db_config=データベース設定
config.db_type=タイプ
config.db_host=ホスト
config.db_name=名前
@ -1180,10 +1182,10 @@ config.db_ssl_mode_helper=(「postgres」のみ)
config.db_path=パス
config.db_path_helper=("sqlite3" および "tidb" の場合)
config.service_config=サービスの構成
config.service_config=サービスの設定
config.register_email_confirm=電子メールの確認を必要
config.disable_register=登録を無効にする
config.show_registration_button=登録ボタンを表示します。
config.show_registration_button=登録ボタンを表示
config.require_sign_in_view=サインインを要求
config.mail_notify=メール通知
config.disable_key_size_check=最小キーサイズチェックを無効にする
@ -1196,7 +1198,7 @@ config.queue_length=キューの長さ
config.deliver_timeout=送信タイムアウト
config.skip_tls_verify=TLSの確認を省略
config.mailer_config=メーラーの構成
config.mailer_config=メーラーの設定
config.mailer_enabled=有効にした
config.mailer_disable_helo=HELOコマンド無効
config.mailer_name=名前
@ -1207,14 +1209,14 @@ config.test_mail_failed='%s' 宛のテストメールの送信に失敗しまし
config.test_mail_sent=テストメールが '%s' に送信されました。
config.oauth_config=OAuth 構成
config.oauth_enabled=Enabled
config.oauth_enabled=有効
config.cache_config=キャッシュの構成
config.cache_config=キャッシュの設定
config.cache_adapter=キャッシュ アダプター
config.cache_interval=キャッシュ間隔
config.cache_conn=キャッシュ接続
config.session_config=セッションの構成
config.session_config=セッションの設定
config.session_provider=セッション プロバイダー
config.provider_config=プロバイダーの構成
config.cookie_name=クッキーの名前
@ -1224,10 +1226,10 @@ config.session_life_time=セッションのライフタイム
config.https_only=HTTPS のみ
config.cookie_life_time=クッキーのライフタイム
config.picture_config=画像構成
config.picture_config=画像の設定
config.picture_service=画像サービス
config.disable_gravatar=Gravatarを無効にする
config.enable_federated_avatar=Enable Federated Avatars
config.enable_federated_avatar=連合アバターを有効にする
config.git_config=Git 設定
config.git_disable_diff_highlight=Diff のシンタックスハイライトを無効にする
@ -1235,13 +1237,13 @@ config.git_max_diff_lines=Diff の最大行数(1ファイルあたり)
config.git_max_diff_line_characters=Diff の最大文字数(1行あたり)
config.git_max_diff_files=Diff の最大ファイル数(表示)
config.git_gc_args=GC の引数
config.git_migrate_timeout=Migration Timeout
config.git_mirror_timeout=Mirror Update Timeout
config.git_migrate_timeout=移行タイムアウト
config.git_mirror_timeout=ミラー更新タイムアウト
config.git_clone_timeout=Clone 操作のタイムアウト
config.git_pull_timeout=Pull 操作のタイムアウト
config.git_gc_timeout=GC 操作のタイムアウト
config.log_config=ログの構成
config.log_config=ログの設定
config.log_mode=モード
config.log_options=オプション

46
conf/locale/locale_ko-KR.ini

@ -340,24 +340,24 @@ two_factor_on=켜기
two_factor_off=끄기
two_factor_enable=활성화
two_factor_disable=비활성화
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
two_factor_enable_title=Enable Two-factor Authentication
two_factor_scan_qr=Please use your authentication application to scan the image:
two_factor_or_enter_secret=Or enter the secret:
two_factor_then_enter_passcode=Then enter passcode:
two_factor_verify=Verify
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
two_factor_enable_error=Enable Two-factor authentication failed: %v
two_factor_view_recovery_codes=<a href="%s%s">복구 코드</a>를 안전한 장소에 저장해 두십시오. 인증 애플리케이션에 접근할 수 없을때 사용할 수 있습니다.
two_factor_http=HTTP/HTTPS 작업에 더이상 평문 사용자명과 비밀번호를 사용할 수 없습니다. <a href="%[1]s%[2]s">개인 액세스 토큰</a>을 생성후 사용해 주세요. 예. <code>%[3]s</code>.
two_factor_enable_title=2단계 인증 활성화
two_factor_scan_qr=인증 애플리케이션으로 이 이미지를 스캔하세요:
two_factor_or_enter_secret=또는 이 비밀키를 입력하세요:
two_factor_then_enter_passcode=그리고 코드를 입력하세요:
two_factor_verify=확인
two_factor_invalid_passcode=입력한 코드가 올바르지 않습니다. 다시 시도해 주세요!
two_factor_enable_error=2단계 인증 활성화 실패: %v
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
two_factor_disable_title=Disable Two-factor Authentication
two_factor_disable_title=2단계 인증 비활성화
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
two_factor_disable_success=Two-factor authentication has disabled successfully!
two_factor_disable_success=2단계 인증이 성공적으로 비활성화되었습니다!
manage_access_token=개인 액세스 토큰 관리
generate_new_token=새 토큰을 생성
@ -450,7 +450,7 @@ quick_guide=퀵 가이드
clone_this_repo=이 저장소 복제
create_new_repo_command=커맨드 라인에서 새 저장소 만들기
push_exist_repo=커맨드 라인에서 기존 저장소 푸시하기
bare_message=This repository does not have any content yet.
bare_message=이 저장소에는 아직 내용이 없습니다.
files=파일
branch=브렌치
@ -463,7 +463,7 @@ pulls=풀 리퀘스트
labels=레이블
milestones=마일스톤
commits=커밋
git_branches=Branches
git_branches=브랜치
releases=릴리즈
file_raw=Raw
file_history=히스토리
@ -473,11 +473,11 @@ file_too_large=이 파일은 표시하기엔 너무 큽니다.
video_not_supported_in_browser=이 브라우저는 HTML5 비디오 태그를 지원하지 않습니다.
branches.overview=Overview
branches.active_branches=Active Branches
branches.stale_branches=Stale Branches
branches.all=All Branches
branches.active_branches=활성 브랜치
branches.stale_branches=오래된 브랜치
branches.all=모든 브랜치
branches.updated_by=Updated %[1]s by %[2]s
branches.change_default_branch=Change Default Branch
branches.change_default_branch=기본 브랜치 변경
editor.new_file=파일 생성
editor.upload_file=파일 업로드
@ -616,6 +616,7 @@ pulls.compare_compare=비교
pulls.filter_branch=Filter Branch
pulls.no_results=결과 없음
pulls.nothing_to_compare=Base 와 head 브랜치가 동일해서 비교할 게 없습니다.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`이 두 타겟 사이엔 이미 풀 리퀘스트가 있습니다:<a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=풀 리퀘스트 생성
pulls.title_desc=<code>%[2]s</code> 에서 <code>%[3]s</code> 로 %[1]d commits 를 머지하려 합니다
@ -738,7 +739,7 @@ settings.tracker_issue_style.alphanumeric=문자 숫자
settings.tracker_url_format_desc=<code>{user} {repo} {index}</code> 사용자 명, 저장소 명, 이슈 인덱스를 사용하여 표시자를 사용할 수 있습니다.
settings.pulls_desc=끌어오기 요청을 공개적으로 기여받을 수 있도록 활성화합니다.
settings.danger_zone=위험 설정
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
settings.cannot_fork_to_same_owner=본인 소유의 저장소를 본인 명의로 포크할 수 없습니다.
settings.new_owner_has_same_repo=새로운 소유자가 같은 이름의 저장소를 이미 가지고 있습니다. 다른 이름을 선택해주세요.
settings.convert=일반 리파지토리로 변환
settings.convert_desc=이 미러를 일반 리파지토리로 변환할 수 없습니다. 반대로는 할 수 없습니다.
@ -807,13 +808,13 @@ settings.event_send_everything=<strong>모든 것</strong>이 필요합니다.
settings.event_choose=필요한 것을 선택해주세요.
settings.event_create=생성
settings.event_create_desc=브랜치 또는 태그를 생성합니다.
settings.event_delete=Delete
settings.event_delete_desc=Branch or tag deleted
settings.event_fork=Fork
settings.event_delete=삭제
settings.event_delete_desc=브랜치나 태그 삭제됨
settings.event_fork=포크
settings.event_fork_desc=Repository forked
settings.event_push=푸시
settings.event_push_desc=깃 저장소로 푸시
settings.event_issues=Issues
settings.event_issues=이슈
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
settings.event_issue_comment=Issue Comment
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
@ -831,6 +832,7 @@ settings.recent_deliveries=최근의 Deliveries
settings.hook_type=훅 타입
settings.add_slack_hook_desc=저장소에 <a href="%s">슬랙</a>연동을 추가
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=토큰
settings.slack_domain=도메인
settings.slack_channel=채널

2
conf/locale/locale_lv-LV.ini

@ -616,6 +616,7 @@ pulls.compare_compare=salīdzināmais
pulls.filter_branch=Filtrēt atzarus
pulls.no_results=Nekas netika atrasts.
pulls.nothing_to_compare=Nav ko salīdzināt, jo bāzes un salīdzināmie atzari ir vienādi.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Jau eksistē izmaiņu pieprasījums starp šiem diviem atzariem: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Izveidot izmaiņu pieprasījumu
pulls.title_desc=vēlas sapludināt %[1]d revīzijas no <code>%[2]s</code> uz <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Pēdējās piegādes
settings.hook_type=Āķa veids
settings.add_slack_hook_desc=PIevienot <a href="%s">Slack</a> integrāciju Jūsu repozitorijā.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Talons
settings.slack_domain=Domēns
settings.slack_channel=Kanāls

32
conf/locale/locale_nl-NL.ini

@ -205,7 +205,7 @@ AdminEmail=E-mail beheerder
NewBranchName=Nieuwe branch naam
CommitSummary=Commit samenvatting
CommitMessage=Commit bericht
CommitChoice=Commit choice
CommitChoice=Keuze toepassen
TreeName=Bestandspad
Content=Inhoud
@ -264,7 +264,7 @@ profile=Profiel
password=Wachtwoord
avatar=Profielfoto
ssh_keys=SSH-sleutels
security=Security
security=Beveiliging
repos=Repositories
orgs=Organisaties
applications=Toepassingen
@ -336,17 +336,17 @@ token_state_desc=Deze token is de laatste 7 dagen gebruikt
two_factor=Two-factor Authentication
two_factor_status=Status:
two_factor_on=On
two_factor_off=Off
two_factor_enable=Enable
two_factor_disable=Disable
two_factor_on=Aan
two_factor_off=Uit
two_factor_enable=Inschakelen
two_factor_disable=Uitschakelen
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
two_factor_enable_title=Enable Two-factor Authentication
two_factor_scan_qr=Please use your authentication application to scan the image:
two_factor_or_enter_secret=Or enter the secret:
two_factor_then_enter_passcode=Then enter passcode:
two_factor_verify=Verify
two_factor_verify=Verifiëren
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
two_factor_enable_error=Enable Two-factor authentication failed: %v
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
@ -375,8 +375,8 @@ orgs.none=U bent geen lid van een organisatie.
orgs.leave_title=Een organisatie verlaten
orgs.leave_desc=U verliest toegang tot alle repositories en teams nadat u de organisatie verlaten hebt. Wilt u doorgaan?
repos.leave=Leave
repos.leave_title=Leave repository
repos.leave=Verlaat
repos.leave_title=Verlaat repository
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
repos.leave_success=You have left repository '%s' successfully!
@ -472,7 +472,7 @@ file_permalink=Permalink
file_too_large=Dit bestand is te groot om te worden getoond
video_not_supported_in_browser=Uw browser ondersteunt geen HTML5 video label.
branches.overview=Overview
branches.overview=Overzicht
branches.active_branches=Active Branches
branches.stale_branches=Stale Branches
branches.all=All Branches
@ -494,7 +494,7 @@ editor.name_your_file=Bestandsnaam...
editor.filename_help=To add directory, just type it and press /. To remove a directory, go to the beginning of the field and press backspace.
editor.or=of
editor.cancel_lower=annuleren
editor.commit_changes=Commit Changes
editor.commit_changes=Wijzigingen toepassen
editor.add_tmpl='%s/<filename>' toevoegen
editor.add='%s' toevoegen
editor.update='%s' updaten
@ -509,7 +509,7 @@ editor.branch_already_exists=Aftakking '%s' bestaat al in deze repository.
editor.directory_is_a_file=Entry '%s' in the parent path is a file not a directory in this repository.
editor.file_is_a_symlink=The file '%s' is a symlink that cannot be modified from the web editor.
editor.filename_is_a_directory=The filename '%s' is an existing directory in this repository.
editor.file_editing_no_longer_exists=The file '%s' you are editing no longer exists in the repository.
editor.file_editing_no_longer_exists=Het bestand '%s' die u aan het bewerken bent bestaat niet meer in deze repository.
editor.file_changed_while_editing=File content has been changed since you started editing. <a target="_blank" href="%s">Click here</a> to see what have been changed or <strong>press commit again</strong> to overwrite those changes.
editor.file_already_exists=A file with name '%s' already exists in this repository.
editor.no_changes_to_show=Er zijn geen wijzigingen om weer te geven.
@ -616,6 +616,7 @@ pulls.compare_compare=vergelijk
pulls.filter_branch=Filter branch
pulls.no_results=Geen resultaten gevonden.
pulls.nothing_to_compare=Er is niets te vergelijken omdat base en head branches dezelfde zijn.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=' Er is al een pull-aanvraag tussen deze twee targets: <a href="%[1]s/pulls/%[3]d"> %[2]s #% [3]d</a>'
pulls.create=Pull verzoek aanmaken
pulls.title_desc=wil %[1]d commits van <code>%[2]s</code> samenvoegen met <code>%[3]s</code>
@ -689,7 +690,7 @@ settings.branches=Branches
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
settings.default_branch=Default Branch
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
settings.update=Update
settings.update=Bijwerken
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
settings.protected_branches=Protected Branches
@ -704,7 +705,7 @@ settings.protect_require_pull_request_desc=Enable this option to disable direct
settings.protect_whitelist_committers=Whitelist who can push to this branch
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
settings.protect_whitelist_users=Users who can push to this branch
settings.protect_whitelist_search_users=Search users
settings.protect_whitelist_search_users=Doorzoek gebruikers
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
settings.protect_whitelist_search_teams=Search teams
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
@ -806,7 +807,7 @@ settings.event_send_everything=Ik moet <strong>alles</strong> hebben.
settings.event_choose=Laat me kiezen wat ik nodig heb.
settings.event_create=Creëer
settings.event_create_desc=Branch, of tag aangemaakt
settings.event_delete=Delete
settings.event_delete=Verwijderen
settings.event_delete_desc=Branch or tag deleted
settings.event_fork=Fork
settings.event_fork_desc=Repository forked
@ -830,6 +831,7 @@ settings.recent_deliveries=Recente bezorgingen
settings.hook_type=Type hook
settings.add_slack_hook_desc=<a href="%s"> toegestane vertraging</a> integratie toevoegen aan uw repository.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Slack token
settings.slack_domain=Slack domein
settings.slack_channel=Slack kanaal

2
conf/locale/locale_pl-PL.ini

@ -616,6 +616,7 @@ pulls.compare_compare=porównaj
pulls.filter_branch=Filtruj branch
pulls.no_results=Nie znaleziono wyników.
pulls.nothing_to_compare=Nie ma nic do porównania, ponieważ gałęzie bazy i head są identyczne.
pulls.nothing_merge_base=Nie ma nic do porównania, ponieważ dwie gałęzie mają zupełnie inną historię.
pulls.has_pull_request=`Istnieje już pull request dla tych dwóch celów: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Utwórz Pull Request
pulls.title_desc=chce scalić %[1]d commity/ów z <code>%[2]s</code> do <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Ostatnie wywołania
settings.hook_type=Typ hooka
settings.add_slack_hook_desc=Dodaj integrację ze <a href="%s">Slackiem</a> do Twojego repozytorium.
settings.add_discord_hook_desc=Dodaj integrację <a href="%s">Discord</a> do Twojego repozytorium.
settings.add_dingtalk_hook_desc=Dodaj integrację <a href="%s">Dingtalk</a> do Twojego repozytorium.
settings.slack_token=Token
settings.slack_domain=Domena
settings.slack_channel=Kanał

122
conf/locale/locale_pt-BR.ini

@ -1,7 +1,7 @@
app_desc=Um serviço de Git hospedável e amigável escrito em Go
app_desc=Um serviço de Git auto-hospedado e amigável escrito em Go
home=Página inicial
dashboard=Página Inicial
dashboard=Painel de controle
explore=Explorar
help=Ajuda
sign_in=Entrar
@ -11,11 +11,11 @@ register=Registrar
website=Site
version=Versão
page=Página
template=Template
template=Modelo
language=Idioma
create_new=Criar...
user_profile_and_more=Perfil do usuário e configurações
signed_in_as=Logado como
user_profile_and_more=Perfil do usuário e mais
signed_in_as=Entrou como
username=Usuário
email=E-mail
@ -58,7 +58,7 @@ db_name=Nome do banco de dados
db_helper=Por favor, use o mecanismo INNODB com o conjunto de caracteres utf8_general_ci para MySQL.
ssl_mode=Modo SSL
path=Caminho
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
sqlite_helper=Caminho para o arquivo de banco de dados SQLite3. <br>Use o caminho absoluto ao iniciar como serviço.
err_empty_db_path=Deve haver um caminho para o banco de dados SQLite3.
no_admin_and_disable_registration=Você não pode desabilitar o registro sem criar uma conta de administrador.
err_empty_admin_password=A senha de administrador não pode ser vazia.
@ -75,7 +75,7 @@ domain_helper=Isto afeta URLs para o clone via SSH.
ssh_port=Porta SSH
ssh_port_helper=Número da porta que seu servidor SSH está usando, deixe vazio para desativar o recurso SSH.
use_builtin_ssh_server=Usar o servidor SSH embutido
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
use_builtin_ssh_server_popup=Iniciar o servidor SSH embutido para operações Git, para diferenciar do serviço SSH do sistema.
http_port=Porta HTTP
http_port_helper=Número da porta em que a aplicação irá executar.
app_url=URL do aplicativo
@ -344,8 +344,8 @@ two_factor_view_recovery_codes=Consulte e salve <a href="%s%s">seus códigos de
two_factor_http=Para operações em HTTP/HTTPS, você não poderá mais usar seu nome de usuário e senha. Crie e use um <a href="%[1]s%[2]s">Token de Acesso Pessoal</a> como credencial (p. ex.: <code>%[3]%</code>).
two_factor_enable_title=Ativar autenticação de dois fatores
two_factor_scan_qr=Use o seu aplicativo de autenticação para escanear a imagem:
two_factor_or_enter_secret=Or enter the secret:
two_factor_then_enter_passcode=Then enter passcode:
two_factor_or_enter_secret=Ou informe o segredo:
two_factor_then_enter_passcode=Em seguida digite a senha:
two_factor_verify=Verificar
two_factor_invalid_passcode=A senha inserida é inválida. Tente novamente!
two_factor_enable_error=Falha ao ativar a autenticação de dois fatores: %v
@ -476,7 +476,7 @@ branches.overview=Visão geral
branches.active_branches=Branches ativos
branches.stale_branches=Branches obsoletos
branches.all=Todos os branches
branches.updated_by=Updated %[1]s by %[2]s
branches.updated_by=Atualizado %[1]s por %[2]s
branches.change_default_branch=Modificar branch padrão
editor.new_file=Novo arquivo
@ -616,6 +616,7 @@ pulls.compare_compare=comparar
pulls.filter_branch=Filtrar branch
pulls.no_results=Nada encontrado.
pulls.nothing_to_compare=Não há nada para comparar porque o branch base e o head estão iguais.
pulls.nothing_merge_base=Não há o que comparar pois os dois branches possuem históricos completamente diferentes.
pulls.has_pull_request=`Já existem pull requests entre esses dois alvos: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Criar Pull Request
pulls.title_desc=quer mesclar %[1]d commits de <code>%[2]s</code> em <code>%[3]s</code>
@ -688,26 +689,26 @@ settings.collaboration.undefined=Indefinido
settings.branches=Branches
settings.branches_bare=Não é possível gerenciar branches num repositório vazio. Adicione conteúdo primeiro.
settings.default_branch=Branch padrão
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
settings.default_branch_desc=O branch padrão é considerado branch "base" para commits, pull requests e edição on-line.
settings.update=Atualizar
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
settings.update_default_branch_unsupported=Mudar o branch padrão não é suportado pela versão do Git no servidor.
settings.update_default_branch_success=O branch padrão deste repositório foi atualizado com sucesso!
settings.protected_branches=Branches protegidos
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
settings.protected_branches_desc=Proteger branches de push forçado, remoção acidental e committers da lista branca.
settings.choose_a_branch=Selecione um branch...
settings.branch_protection=Proteção de Branch
settings.branch_protection_desc=Please choose protect options for branch <b>%s</b>.
settings.branch_protection_desc=Escolha opções de proteção para o branch <b>%s</b>.
settings.protect_this_branch=Proteger este branch
settings.protect_this_branch_desc=Disable force pushes and prevent from deletion.
settings.protect_require_pull_request=Require pull request instead direct pushing
settings.protect_require_pull_request_desc=Enable this option to disable direct pushing to this branch. Commits have to be pushed to another non-protected branch and merged to this branch through pull request.
settings.protect_whitelist_committers=Whitelist who can push to this branch
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
settings.protect_whitelist_users=Users who can push to this branch
settings.protect_this_branch_desc=Desabilita pushes forçados e previne remoção.
settings.protect_require_pull_request=Requer pull request ao invés de push direto
settings.protect_require_pull_request_desc=Habilite esta opção para desabilitar push direto para este branch. Os commits precisam sofrer um push para outro branch não protegido e merge para este branch por meio de um pull request.
settings.protect_whitelist_committers=Incluir na lista branca quem pode fazer push para este branch
settings.protect_whitelist_committers_desc=Adicionar pessoas ou equipes para a lista branca de push direto para este branch. Usuários na lista branca contornarão a verificação de necessidade de pull request.
settings.protect_whitelist_users=Usuários que podem realizar push para este branch
settings.protect_whitelist_search_users=Pesquisar usuários
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
settings.protect_whitelist_search_teams=Search teams
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
settings.protect_whitelist_teams=Equipes cujos membros podem realizar push para este branch
settings.protect_whitelist_search_teams=Buscar times
settings.update_protect_branch_success=As opções de proteção deste branch foram atualizadas com sucesso!
settings.hooks=Webhooks
settings.githooks=Hooks do Git
settings.basic_settings=Configurações básicas
@ -720,13 +721,13 @@ settings.change_reponame_prompt=Esta mudança irá afetar os links para este rep
settings.advanced_settings=Configurações avançadas
settings.wiki_desc=Habilitar sistema de wiki
settings.use_internal_wiki=Usar wiki nativa
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
settings.allow_public_wiki_desc=Permitir acesso público à wiki quando o repositório for privado
settings.use_external_wiki=Usar wiki externa
settings.external_wiki_url=URL externa da wiki
settings.external_wiki_url_desc=Os visitantes serão redirecionados para a URL ao clicar na aba.
settings.issues_desc=Habilitar issue tracker
settings.use_internal_issue_tracker=Usar o issue tracker nativo
settings.allow_public_issues_desc=Allow public access to issues when repository is private
settings.allow_public_issues_desc=Permitir acesso público a problemas quando o repositório for privado
settings.use_external_issue_tracker=Usar issue tracker externo
settings.external_tracker_url=URL do Issue Tracker Externo
settings.external_tracker_url_desc=Visitantes serão redirecionados ao URL quando clicarem na aba.
@ -737,7 +738,7 @@ settings.tracker_issue_style.alphanumeric=Alfanumérico
settings.tracker_url_format_desc=Você pode usar o espaço reservado <code>{user} {repo} {index}</code> para o nome do usuário, índice de nome e a questão do repositório.
settings.pulls_desc=Habilitar Pull Requests para aceitar contribuições públicas
settings.danger_zone=Zona de perigo
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
settings.cannot_fork_to_same_owner=Não se pode realizar fork de um repositório para seu dono original.
settings.new_owner_has_same_repo=O novo dono já tem um repositório com o mesmo nome. Por favor, escolha outro nome.
settings.convert=Converter para repositório tradicional
settings.convert_desc=Você pode converter este espelho em um repositório tradicional. Esta ação não pode ser revertida.
@ -780,8 +781,8 @@ settings.webhook_deletion_success=Webhook deletado com sucesso!
settings.webhook.test_delivery=Entrega de teste
settings.webhook.test_delivery_desc=Enviar uma entrega de evento de Push falso para testar suas configurações de webhook
settings.webhook.test_delivery_success=O Webhook de teste foi adicionado para a fila de entrega. Pode demorar alguns segundos antes de ser exibido no histórico de entrega.
settings.webhook.redelivery=Redelivery
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
settings.webhook.redelivery=Re-entrega
settings.webhook.redelivery_success=A tarefa hook '%s' foi readicionada à fila de entrega. Pode demorar alguns segundos para a situação da entrega no histórico ser atualizada.
settings.webhook.request=Solicitação
settings.webhook.response=Resposta
settings.webhook.headers=Cabeçalhos
@ -796,7 +797,7 @@ settings.add_webhook_desc=Enviaremos uma solicitação <code>POST</code> para o
settings.payload_url=URL de Payload
settings.content_type=Tipo de conteúdo
settings.secret=Secreto
settings.secret_desc=Secret will be sent as SHA256 HMAC hex digest of payload via <code>X-Gogs-Signature</code> header.
settings.secret_desc=O segredo será enviado como digest hexadecimal SHA256 HMAC do payload via cabeçalho <code>X-Gogs-Signature</code>.
settings.slack_username=Nome de usuário
settings.slack_icon_url=URL do ícone
settings.slack_color=Cor
@ -806,20 +807,20 @@ settings.event_send_everything=Preciso de <strong>tudo</strong>.
settings.event_choose=Deixe-me escolher o que eu preciso.
settings.event_create=Criar
settings.event_create_desc=Branch ou Tag criado
settings.event_delete=Delete
settings.event_delete_desc=Branch or tag deleted
settings.event_delete=Apagar
settings.event_delete_desc=Branch ou tag excluído
settings.event_fork=Fork
settings.event_fork_desc=Repository forked
settings.event_fork_desc=Feito fork do repositório
settings.event_push=Push
settings.event_push_desc=Git push para o repositório
settings.event_issues=Issues
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
settings.event_issue_comment=Issue Comment
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
settings.event_issues=Problemas
settings.event_issues_desc=Problema aberto, fechado, reaberto, editado, atribuído, desatribuído, etiqueta atualizada, etiqueta limpa, milestone definido ou milestone indefinido.
settings.event_issue_comment=Comentário do Problema
settings.event_issue_comment_desc=Comentário do problema criado, editado ou excluído.
settings.event_pull_request=Pull Request
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
settings.event_release=Release
settings.event_release_desc=Release published in a repository.
settings.event_pull_request_desc=Pull request aberto, fechado, reaberto, editado, atribuído, desatribuído, etiqueta atualizada, etiqueta limpa, milestone definido, milestone indefinido ou sincronizado.
settings.event_release=Lançamento
settings.event_release_desc=Lançamento publicado em um repositório.
settings.active=Ativo
settings.active_helper=Enviaremos detalhes do evento quando este hook for acionado.
settings.add_hook_success=Novos hooks de web foram adicionados.
@ -829,12 +830,13 @@ settings.delete_webhook=Excluir Webhook
settings.recent_deliveries=Entregas Recentes
settings.hook_type=Tipo de Hook
settings.add_slack_hook_desc=Adicionar <a href="%s">Slack</a> de integração para o seu repositório.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_discord_hook_desc=Adicionar integração do <a href="%s">Discord</a> ao seu repositório.
settings.add_dingtalk_hook_desc=Adicionar integração do <a href="%s">Dingtalk</a> ao seu repositório.
settings.slack_token=Token
settings.slack_domain=Domínio
settings.slack_channel=Canal
settings.deploy_keys=Chaves de Deploy
settings.deploy_keys_helper=<b>Common Gotcha!</b> If you're looking for adding personal public keys, please add them in your <a href="%s%s">account settings</a>.
settings.deploy_keys_helper=<b>Pegadinha Comum!</b> Se estiver buscando adicionar chaves públicas pessoais, faça isto nas suas <a href="%s%s">configurações da conta</a>.
settings.add_deploy_key=Nova chave
settings.deploy_key_desc=Chave de Deploy só tem acesso somente leitura. Não é igual as chaves SSH de conta pessoal.
settings.no_deploy_keys=Você ainda não adicionou nenhuma chave de Deploy.
@ -912,7 +914,7 @@ team_permission_desc=Que nível de permissão esta equipe deve ter?
form.name_reserved=O nome de organização '%s' não pode ser usado.
form.name_pattern_not_allowed=Não é permitido usar o padrão '%s' para o nome de organização.
form.team_name_reserved=Team name '%s' is reserved.
form.team_name_reserved=O nome nome de equipe '%s' está reservado.
settings=Configurações
settings.options=Opções
@ -1003,8 +1005,8 @@ dashboard.git_gc_repos=Fazer coleta de lixo nos repositórios
dashboard.git_gc_repos_success=Em todos repositórios, a coleta de lixo foi realizada com sucesso.
dashboard.resync_all_sshkeys=Reescrever o arquivo '.ssh/authorized_keys' (atenção: chaves que não sejam do Gogs serão perdidas)
dashboard.resync_all_sshkeys_success=Todas as chaves públicas foram reescritas com sucesso.
dashboard.resync_all_hooks=Resync pre-receive, update and post-receive hooks of all repositories
dashboard.resync_all_hooks_success=All repositories' pre-receive, update and post-receive hooks have been resynced successfully.
dashboard.resync_all_hooks=Ressincronizar hooks pre-receive, update e post-receive de todos os repositórios
dashboard.resync_all_hooks_success=Os hooks pre-receive, update e post-receive de todos os repositórios foram ressincronizados com sucesso.
dashboard.reinit_missing_repos=Reinicializar todos os registros de repositório que perderam os arquivos do Git
dashboard.reinit_missing_repos_success=Todos os repositórios que perderam arquivos do Git foram reinicializados com sucesso.
@ -1079,7 +1081,7 @@ repos.private=Privado
repos.watches=Observadores
repos.stars=Favoritos
repos.issues=Issues
repos.size=Size
repos.size=Tamanho
auths.auth_manage_panel=Painel de gerenciamento da autenticação
auths.new=Adicionar nova fonte
@ -1100,14 +1102,14 @@ auths.user_base=Base de pesquisa do usuário
auths.user_dn=Usuário do DN
auths.attribute_username=Atributo nome de usuário
auths.attribute_username_placeholder=Deixe vazio para usar o valor do campo de formulário de entrada de nome de usuário.
auths.attribute_name=First Name Attribute
auths.attribute_name=Atributo do Nome
auths.attribute_surname=Atributo sobrenome
auths.attribute_mail=Atributo e-mail
auths.verify_group_membership=Verify group membership
auths.verify_group_membership=Verificar associação a grupo
auths.group_search_base_dn=Group Search Base DN
auths.group_filter=Group Filter
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
auths.user_attribute_listed_in_group=User Attribute Listed in Group
auths.group_filter=Filtro de Grupo
auths.group_attribute_contain_user_list=Atributo do grupo contendo a lista de usuários
auths.user_attribute_listed_in_group=Atributo do usuário listado no grupo
auths.attributes_in_bind=Buscar os atributos no contexto de Bind DN
auths.filter=Filtro de usuário
auths.admin_filter=Filtro de administrador
@ -1160,13 +1162,13 @@ config.ssh_keygen_path=Caminho do keygen ('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.repo_config=Repository Configuration
config.repo_config=Configuração do Repositório
config.repo_root_path=Caminho raiz do repositório
config.script_type=Tipo de script
config.repo_force_private=Force Private
config.max_creation_limit=Max Creation Limit
config.preferred_licenses=Preferred Licenses
config.disable_http_git=Disable HTTP Git
config.repo_force_private=Forçar Privado
config.max_creation_limit=Limite de Criação
config.preferred_licenses=Licenças Preferidas
config.disable_http_git=Desabilitar Git por HTTP
config.enable_local_path_migration=Enable Local Path Migration
config.commits_fetch_concurrency=Commits Fetch Concurrency
@ -1242,8 +1244,8 @@ config.git_pull_timeout=Timeout para operação de pull
config.git_gc_timeout=Timeout para execução do GC
config.log_config=Configuração de log
config.log_mode=Mode
config.log_options=Options
config.log_mode=Modo
config.log_options=Opções
monitor.cron=Tarefas cron
monitor.name=Nome
@ -1272,7 +1274,7 @@ notices.delete_success=Avisos do sistema foram excluídos com sucesso.
[action]
create_repo=repositório criado <a href="%s"> %s</a>
fork_repo=forked a repository to <a href="%s">%s</a>
fork_repo=repositório criado <a href="%s"> %s</a>
rename_repo=renomeou o o repositório <code>%[1]s</code> para <a href="%[2]s">%[3]s</a>
commit_repo=pushed para <a href="%[1]s/src/%[2]s">%[3]s</a> em <a href="%[1]s">%[4]s</a>
compare_commits=Ver comparação entre esses %d commits
@ -1285,8 +1287,8 @@ create_pull_request=`criou o pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
close_pull_request=`fechou o pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
reopen_pull_request=`reabriu o pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
merge_pull_request=`mesclou o pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
create_branch=criado novo branch <a href="%[1]s/src/%[2]s">%[3]s</a> em <a href="%[1]s">%[4]s</a>
delete_branch=excluído branch <code>%[2]s</code> em <a href="%[1]s">%[3]s</a>
push_tag=Foi feito push na tag <a href="%s/src/%s">%[2]s</a> para <a href="%[1]s">%[3]s</a>
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>

12
conf/locale/locale_ru-RU.ini

@ -119,7 +119,7 @@ sqlite3_not_available=Ваша версия не поддерживает SQLite
invalid_db_setting=Настройки базы данных не правильные: %v
invalid_repo_path=Недопустимый путь к корню репозитория: %v
run_user_not_match=Текущий пользователь не является пользователем для запуска: %s -> %s
smtp_host_missing_port=SMTP Host is missing port in address.
smtp_host_missing_port=Не указан порт в адресе хоста SMTP.
invalid_smtp_from=Поле SMTP From неправильное: %v
save_config_failed=Не удалось сохранить конфигурацию: %v
invalid_admin_setting=Указан недопустимый параметр учетной записи администратора: %v
@ -616,6 +616,7 @@ pulls.compare_compare=сравнить
pulls.filter_branch=Фильтр по ветке
pulls.no_results=Результатов не найдено.
pulls.nothing_to_compare=Нечего сравнивать, родительская и текущая ветка одинаковые.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Уже существует запрос на слияние между двумя целями: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Создать запрос на слияние
pulls.title_desc=хочет смерджить %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Недавние рассылки
settings.hook_type=Тип перехватчика
settings.add_slack_hook_desc=Добавить интеграцию с <a href="%s">Slack</a> в ваш репозиторий.
settings.add_discord_hook_desc=Добавить интеграцию с <a href="%s">Discord</a> в ваш репозиторий.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Token
settings.slack_domain=Домен
settings.slack_channel=Канал
@ -1104,10 +1106,10 @@ auths.attribute_name=First Name Attribute
auths.attribute_surname=Фамилия аттрибута
auths.attribute_mail=Электронная почта аттрибута
auths.verify_group_membership=Verify group membership
auths.group_search_base_dn=Group Search Base DN
auths.group_filter=Group Filter
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
auths.user_attribute_listed_in_group=User Attribute Listed in Group
auths.group_search_base_dn=Base DN для поиска группы
auths.group_filter=Групповой фильтр
auths.group_attribute_contain_user_list=Атрибут группы, содержащий список пользователей
auths.user_attribute_listed_in_group=Пользовательский атрибут, перечисленный в группе
auths.attributes_in_bind=Извлечение атрибутов в виде Bind DN
auths.filter=Фильтр пользователя
auths.admin_filter=Фильтр администратора

118
conf/locale/locale_sr-SP.ini

@ -4,7 +4,7 @@ home=Почетна
dashboard=Контролни панел
explore=Преглед
help=Помоћ
sign_in=Пријавите Се
sign_in=Пријавите се
sign_out=Одјава
sign_up=Регистрација
register=Регистрација
@ -51,10 +51,10 @@ docker_helper=Ако покрећете Gogs унутар Docker, молимо
requite_db_desc=Gogs захтева MySQL, PostgreSQL, SQLite3, MSSQL или TiDB.
db_title=Подешавања базе
db_type=Тип базе података
host=Хост
host=Власник
user=Корисник
password=Лозинка
db_name=Име базе података
db_name=Назив базе података
db_helper=За MySQL користите тип табела InnoDB са кодирањем utf8_general_ci.
ssl_mode=Режим SSL
path=Пут
@ -196,7 +196,7 @@ Email=Адреса ел. поште
Password=Лозинка
Retype=Поновите лозинку
SSHTitle=Име SSH кључа
HttpsUrl=HTTPS URL адреса
HttpsUrl=HTTPS URL
PayloadUrl=URL адреса за слање
TeamName=Име тима
AuthName=Ауторизацијско име
@ -268,12 +268,12 @@ security=Безбедност
repos=Спремишта
orgs=Организације
applications=Апликације
delete=Уклоните налог
delete=Уклоните Hалог
public_profile=Јавни профил
profile_desc=Ваша адреса е-поште је јавна и коришће се за све обавести везане са налогом, као и друге операције почињене кроз Gogs.
password_username_disabled=Нелокални корисници не могу да промене своје кориничко име.
full_name=Име и презиме
full_name=Пуно Име
website=Веб страница
location=Локација
update_profile=Ажурирај профил
@ -300,7 +300,7 @@ password_incorrect=Тренутна лозинка је нетачна.
change_password_success=Лозинка је успешно промењена. Можете се пријавити са новом лозинком.
password_change_disabled=Нелокални корисници не могу да промене своје лозинке.
emails=Адреса ел. поште
emails=Адреса е-поште
manage_emails=Управљање адресама е-поште
email_desc=Ваша главна адреса ће се користити за обавештења и других операција.
primary=Главно
@ -521,7 +521,7 @@ editor.upload_files_to_dir=Пошаљи датотеке на '%s'
commits.commit_history=Историја ревизија
commits.commits=Комити
commits.search=Претражи комите
commits.find=Претражи
commits.find=Пронађи
commits.author=Аутор
commits.message=Порука
commits.date=Датум
@ -616,6 +616,7 @@ pulls.compare_compare=упореди
pulls.filter_branch=Филтер по грани
pulls.no_results=Нема резултата.
pulls.nothing_to_compare=Нема шта да се упореди, гране су исте.
pulls.nothing_merge_base=Немогуће је упоредити јер двије гране имају потпуно другачију историју.
pulls.has_pull_request=`Већ постоји захтев за спајање између ове две гране: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Поднеси захтев за спајање
pulls.title_desc=жели да споји %[1]d комит(е) из <code>%[2]s</code> у <code>%[3]s</code>
@ -693,21 +694,21 @@ settings.update=Ажурирање
settings.update_default_branch_unsupported=Промена подразумеване гране није подржавана од стране Git верзија сервера.
settings.update_default_branch_success=Подразумевана грана овог спремишта је била успешно ажурирана!
settings.protected_branches=Заштићене гране
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
settings.choose_a_branch=Choose a branch...
settings.branch_protection=Branch Protection
settings.branch_protection_desc=Please choose protect options for branch <b>%s</b>.
settings.protect_this_branch=Protect this branch
settings.protect_this_branch_desc=Disable force pushes and prevent from deletion.
settings.protect_require_pull_request=Require pull request instead direct pushing
settings.protect_require_pull_request_desc=Enable this option to disable direct pushing to this branch. Commits have to be pushed to another non-protected branch and merged to this branch through pull request.
settings.protect_whitelist_committers=Whitelist who can push to this branch
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
settings.protect_whitelist_users=Users who can push to this branch
settings.protect_whitelist_search_users=Search users
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
settings.protect_whitelist_search_teams=Search teams
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
settings.protected_branches_desc=Заштита гранe од додира, случајног брисања и команди листе кода.
settings.choose_a_branch=Изаберите Филијалy...
settings.branch_protection=Заштита Филијала
settings.branch_protection_desc=Молимо изаберите заштитне опције за грану <b>%s</b>.
settings.protect_this_branch=Заштити ову филијалy
settings.protect_this_branch_desc=Онемогућите притисак и заштититy од брисања.
settings.protect_require_pull_request=Захтев за повлачењем уместо директног додира
settings.protect_require_pull_request_desc=Омогућите ову опцију да бисте спречили директан додир на ову грану. Обавезно мора бити покренуто у незаштићеној грани затим објединти на ову грану кao захтев за спајање.
settings.protect_whitelist_committers=Whitelist који може да додирне ову грану
settings.protect_whitelist_committers_desc=Додајте људе или тимовe у листу белих исправа за директан приступ овој теми. Корисници из беле листе ће заобићи захтев за повлачење захтева.
settings.protect_whitelist_users=Корисници који могу да додирнy ову грану
settings.protect_whitelist_search_users=Тражи кориснике
settings.protect_whitelist_teams=Тимови кao и њихови чланови могу потакнути овy грану
settings.protect_whitelist_search_teams=Тимови за претрагу
settings.update_protect_branch_success=Заштитна опција за ову грану је успешно ажурирана!
settings.hooks=Webhooks
settings.githooks=Git хуки
settings.basic_settings=Основна подешавања
@ -720,16 +721,16 @@ settings.change_reponame_prompt=Ова промена ће утицати на
settings.advanced_settings=Напредна подешавања
settings.wiki_desc=Омогући систем вики
settings.use_internal_wiki=Користи уграђен вики
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
settings.allow_public_wiki_desc=Дозволите приступ wiki када је трговина приватна
settings.use_external_wiki=Користи спољни Вики
settings.external_wiki_url=URL адреса спољног Вики
settings.external_wiki_url_desc=Посетиоци ће бити преусмерени URL адреси након што кликну на картицу.
settings.issues_desc=Омогући систем праћења грешака
settings.use_internal_issue_tracker=Користи уграђен систем праћења грешака
settings.allow_public_issues_desc=Allow public access to issues when repository is private
settings.allow_public_issues_desc=Дозволите приступ проблемима када је трговина приватна
settings.use_external_issue_tracker=Користи спољни систем праћења грешака
settings.external_tracker_url=External Issue Tracker URL
settings.external_tracker_url_desc=Visitors will be redirected to URL when they click on the tab.
settings.external_tracker_url=Екстерни проблем Tracker URL
settings.external_tracker_url_desc=Посетиоци ће бити преусмерени на URL када кликну на картицу.
settings.tracker_url_format=Спољни формат везе система за праћење грешака
settings.tracker_issue_style=Стил именовања на спољном систему:
settings.tracker_issue_style.numeric=Нумерично
@ -737,7 +738,7 @@ settings.tracker_issue_style.alphanumeric=Алфанумерично
settings.tracker_url_format_desc=Можете да користите шаблон <code>{user} {repo} {index}</code> за корисничко име, спремишта и задатака.
settings.pulls_desc=Омогући систем захтева за спајање да би сте преузели јавних доприноса
settings.danger_zone=Опасна зона
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
settings.cannot_fork_to_same_owner=Не можете поделити спремиште власнику.
settings.new_owner_has_same_repo=Нови власник већ има спремиште по истим називом. Молимо вас изаберите друго име.
settings.convert=Претворити у обично спремиште
settings.convert_desc=Можете претворити огледало у обично спремиште, али та операција не може се укинути.
@ -781,7 +782,7 @@ settings.webhook.test_delivery=Провери испоруку
settings.webhook.test_delivery_desc=Пошаљи push за тестирање подешавања webhook
settings.webhook.test_delivery_success=Тест webhook је додат у месту испоруке. Процес може да потраје неколико секунди пре него што ће показати у историји испоруке.
settings.webhook.redelivery=Redelivery
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
settings.webhook.redelivery_success=Hook задатак '%s' је прочитан редоследом испоруке. Може потрајати неколико секунди да ce ажурира статус испоруке у историји.
settings.webhook.request=Захтев
settings.webhook.response=Одговор
settings.webhook.headers=Наслови
@ -796,7 +797,7 @@ settings.add_webhook_desc=Послаћемо захтев <code>POST</code> на
settings.payload_url=URL адреса за слање
settings.content_type=Тип садржаја
settings.secret=Тајна
settings.secret_desc=Secret will be sent as SHA256 HMAC hex digest of payload via <code>X-Gogs-Signature</code> header.
settings.secret_desc=Тајна ће бити послата као SHA256 HMAC hex digest корисног оптерећења преко <code>X-Gogs-Signature</code> заглавља.
settings.slack_username=Корисничко име
settings.slack_icon_url=URL адреса иконице
settings.slack_color=Боја
@ -806,14 +807,14 @@ settings.event_send_everything=У <strong>свим</strong> догађајима
settings.event_choose=Изабраћу шта ми је потребно.
settings.event_create=Креирај
settings.event_create_desc=Створена грана или ознака
settings.event_delete=Delete
settings.event_delete_desc=Branch or tag deleted
settings.event_fork=Fork
settings.event_fork_desc=Repository forked
settings.event_delete=Обриши
settings.event_delete_desc=Oбрисана грана или ознака
settings.event_fork=Креирај огранак
settings.event_fork_desc=Спремиште је допуштено
settings.event_push=Push
settings.event_push_desc=Git push у спремиште
settings.event_issues=Issues
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
settings.event_issues=Задаци
settings.event_issues_desc=Проблем је отворен, затворен, поново отворен, уређен, додељен, не додељен, етикета је ажурирана, етикета је очишћена, помјерена или демилестирана.
settings.event_issue_comment=Коментар проблема
settings.event_issue_comment_desc=Коментар проблема креиран, уређиван или избришен.
settings.event_pull_request=Захтев за спајање
@ -830,6 +831,7 @@ settings.recent_deliveries=Недавне испоруке
settings.hook_type=Тип Hook-а
settings.add_slack_hook_desc=Додавање интеграције <a href="%s">Slack</a> у спремиште.
settings.add_discord_hook_desc=Додавати <a href="%s">Discord</a> интеграцију вашем спремишту.
settings.add_dingtalk_hook_desc=Додајте интеграцију <a href="%s">Dingtalk</a> у своје спремиште.
settings.slack_token=Токен
settings.slack_domain=Домен
settings.slack_channel=Канал
@ -1003,8 +1005,8 @@ dashboard.git_gc_repos=Изврши cакупљање смећа на спрем
dashboard.git_gc_repos_success=Сва спремишта су успешно извршили cакупљање смећа.
dashboard.resync_all_sshkeys=Препиши '.ssh/authorized_keys' (опрез: не Gogs тастери ће бити изгубљени)
dashboard.resync_all_sshkeys_success=Сви јавни кључеви су успешно преписани.
dashboard.resync_all_hooks=Resync pre-receive, update and post-receive hooks of all repositories
dashboard.resync_all_hooks_success=All repositories' pre-receive, update and post-receive hooks have been resynced successfully.
dashboard.resync_all_hooks=Поново синхронизујте купљенe pre-receive, ажурирањa и post-receive у свим репозиторијумима
dashboard.resync_all_hooks_success=Све спремишта pre-receive, ажурирања и post-receive успешно су ресинкронизованa.
dashboard.reinit_missing_repos=Поново постави све податке са изгубљеним Git датотекама
dashboard.reinit_missing_repos_success=Сви подаци са изгубљеним Git датотекама су успешно поново постављени.
@ -1079,7 +1081,7 @@ repos.private=Приватно
repos.watches=Watches
repos.stars=Фаворити
repos.issues=Задаци
repos.size=Size
repos.size=Величина
auths.auth_manage_panel=Контролна панела аутентикације
auths.new=Додај нови извор
@ -1100,14 +1102,14 @@ auths.user_base=База претраживање корисника
auths.user_dn=DN корисника
auths.attribute_username=Атрибут username
auths.attribute_username_placeholder=Оставите празно да бисте користили корисничко име за регистрацију.
auths.attribute_name=First Name Attribute
auths.attribute_name=Првo име атрибута
auths.attribute_surname=Презиме атрибута
auths.attribute_mail=Е-маил адреса
auths.verify_group_membership=Verify group membership
auths.group_search_base_dn=Group Search Base DN
auths.group_filter=Group Filter
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
auths.user_attribute_listed_in_group=User Attribute Listed in Group
auths.verify_group_membership=Потврдите чланство у групи
auths.group_search_base_dn=База DN за претраживање групе
auths.group_filter=Филтер групе
auths.group_attribute_contain_user_list=Група атрибута која садржи листу корисника
auths.user_attribute_listed_in_group=Атрибут прилагођен и наведен у групи
auths.attributes_in_bind=Екстракција атрибута у облику Bind DN
auths.filter=Филтер корисника
auths.admin_filter=Филтер администратора
@ -1132,7 +1134,7 @@ auths.delete_auth_title=Брисање канала аутентикације
auths.delete_auth_desc=Овај канал аутентикације ће бити избрисан. Да ли желите да наставите?
auths.still_in_used=Овај канал аутентикације још увек се користи од стране неких корисника, уклоните или пребаци ове кориснике у друг врсту аутентикације.
auths.deletion_success=Канал аутентикације успешно избрисан!
auths.login_source_exist=Login source '%s' already exists.
auths.login_source_exist=Улазни извор '%s' већ постоји.
config.server_config=Конфигурација сервера
config.app_name=Име апликације
@ -1160,15 +1162,15 @@ config.ssh_keygen_path=Пут до генератор кључева ('ssh-keyge
config.ssh_minimum_key_size_check=Минимална величина провера кључа
config.ssh_minimum_key_sizes=Минимална величина кључева
config.repo_config=Repository Configuration
config.repo_config=Конфигурација спремишта
config.repo_root_path=Пут до корена спремишта
config.script_type=Врста скрипта
config.repo_force_private=Force Private
config.max_creation_limit=Max Creation Limit
config.preferred_licenses=Preferred Licenses
config.disable_http_git=Disable HTTP Git
config.enable_local_path_migration=Enable Local Path Migration
config.commits_fetch_concurrency=Commits Fetch Concurrency
config.max_creation_limit=Ограничење максималне креације
config.preferred_licenses=Преференцијалне лиценце
config.disable_http_git=Онемогући HTTP Git
config.enable_local_path_migration=Омогући миграцију локалнe путањe
config.commits_fetch_concurrency=Предузеће Fetch Concurrency
config.db_config=Конфигурација базе података
config.db_type=Тип
@ -1242,8 +1244,8 @@ config.git_pull_timeout=Време до отказивања pull операци
config.git_gc_timeout=Време до отказивања cакупљање смећа
config.log_config=Kонфигурација журнала
config.log_mode=Mode
config.log_options=Options
config.log_mode=Режим
config.log_options=Опције
monitor.cron=Cron задаци
monitor.name=Име
@ -1272,7 +1274,7 @@ notices.delete_success=Системска обавештавања су успе
[action]
create_repo=креира спремиште <a href="%s">%s</a>
fork_repo=forked a repository to <a href="%s">%s</a>
fork_repo=отворио спремиште <a href="%s">%s</a>
rename_repo=преимензје спремиште од <code>%[1]s</code> на <a href="%[2]s">%[3]s</a>
commit_repo=извршује push на <a href="%[1]s/src/%[2]s">%[3]s</a> у <a href="%[1]s">%[4]s</a>
compare_commits=Поређење ових %d комита
@ -1285,10 +1287,10 @@ create_pull_request=`шаље захтев за спајање <a href="%s/pulls
close_pull_request=`затвара захтев за спајање <a href="%s/pulls/%s">%s#%[2]s</a>`
reopen_pull_request=`поново отвара захтев за спајање <a href="%s/pulls/%s">%s#%[2]s</a>`
merge_pull_request=`прихваћује захтев за спајање <a href="%s/pulls/%s">%s#%[2]s</a>`
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
create_branch=створи нову филијалy <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
delete_branch=избрисана филијалa <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
push_tag=извршује push са ознаком <a href="%s/src/%s">%[2]s</a> на <a href="%[1]s">%[3]s</a>
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
delete_tag=избрисана ознака <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
[tool]
ago=пре

56
conf/locale/locale_sv-SE.ini

@ -48,7 +48,7 @@ cancel=Avbryt
install=Installation
title=Steg för att installera för första gången
docker_helper=Om du kör Gogs inuti Docker, vänligen läs <a target="_blank" href="%s">Riktninjerna</a> nogrant innan du ändrar någonting på denna sida!
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3, MSSQL or TiDB.
requite_db_desc=Gogs kräver MySQL, PostgreSQL, SQLite3, MSSQL eller TiDB.
db_title=Databasinställningar
db_type=Databastyp
host=Server
@ -58,8 +58,8 @@ db_name=Databasens namn
db_helper=Se till att i MySQL använda INNODB med teckenuppsättningen utf8_general_ci.
ssl_mode=SSL-läge
path=Filväg
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
err_empty_db_path=SQLite3 database path cannot be empty.
sqlite_helper=Sökvägen för SQLite3 databas. <br>Vänligen använd den absoluta sökvägen när du kör som en tjänst.
err_empty_db_path=Sökvägen till SQLite3 databasen får inte vara tom.
no_admin_and_disable_registration=Du kan inte inaktivera registrering utan att skapa ett administratörskonto.
err_empty_admin_password=Administratörslösenordet får ej vara tomt.
@ -74,7 +74,7 @@ domain=Domän
domain_helper=Detta påverkar SSH klonings webbadresser.
ssh_port=SSH-port
ssh_port_helper=Portnumret som din SSH-server brukar, lämna tomt för att inaktivera SSH-funktionaliteten.
use_builtin_ssh_server=Use Builtin SSH Server
use_builtin_ssh_server=Använd inbyggd SSH Server
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
http_port=HTTP Port
http_port_helper=Portnumret vilket applikationen kommer lyssnar på.
@ -82,8 +82,8 @@ app_url=Applikationsadressen
app_url_helper=Detta påverkar HTTP/HTTPS kloningsadressen och på platser i e-post.
log_root_path=Loggsökväg
log_root_path_helper=Katalog till vilken loggfiler skrivs.
enable_console_mode=Enable Console Mode
enable_console_mode_popup=In addition to file mode, also print logs to console.
enable_console_mode=Aktivera Konsolläge
enable_console_mode_popup=Utöver fil-läge, skriver även ut loggar till konsol.
optional_title=Övriga inställningar
email_title=E-post tjänstens inställningar
@ -119,8 +119,8 @@ sqlite3_not_available=Din release stödjer ej SQLite3, ladda vänligen ner den o
invalid_db_setting=Databas inställningen är inkorrekt: %v
invalid_repo_path=Utvecklingskatalogens rotsökväg är ogiltig: %v
run_user_not_match=Köranvändaren är inte aktuell användare: %s -> %s
smtp_host_missing_port=SMTP Host is missing port in address.
invalid_smtp_from=SMTP From field is not valid: %v
smtp_host_missing_port=SMTP-värden saknar port i adressen.
invalid_smtp_from=SMTP från fält är inte giltigt: %v
save_config_failed=Konfigurationssparningen misslyckades: %v
invalid_admin_setting=Inställningarna för administratörskontot är felaktiga: %v
install_success=Välkommen! Vi är glada att du väljer Gogs, ha kul och ta hand om dig.
@ -169,13 +169,13 @@ reset_password_helper=Klicka här för att återställa ditt lösenord
password_too_short=Lösenordet får ej vara kortare än 6 tecken.
non_local_account=Icke-lokala konton får inte ändra lösenord genom Gogs.
login_two_factor=Two-factor Authentication
login_two_factor_passcode=Authentication Passcode
login_two_factor_enter_recovery_code=Enter a two-factor recovery code
login_two_factor_recovery=Two-factor Recovery
login_two_factor_recovery_code=Recovery Code
login_two_factor_enter_passcode=Enter a two-factor passcode
login_two_factor_invalid_recovery_code=Recovery code has been used or does not valid.
login_two_factor=Tvåfaktorsautentisering
login_two_factor_passcode=Autentiseringskod
login_two_factor_enter_recovery_code=Ange en tvåfaktorsautentisering återställningskod
login_two_factor_recovery=Tvåfaktorsautentisering Återställning
login_two_factor_recovery_code=Återställningskod
login_two_factor_enter_passcode=Ange en tvåfaktorsautentiserings kod
login_two_factor_invalid_recovery_code=Återställningskoden har använts eller är inte giltig.
[mail]
activate_account=Vänligen aktivera ditt konto
@ -212,7 +212,7 @@ Content=Innehåll
require_error=får inte vara tomt
alpha_dash_error=` får bara innehålla bokstäver, nummer och bindestreck (-_).`
alpha_dash_dot_error=` får bara innehålla bokstäver, nummer, bindestreck (-_) och punkt`
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
alpha_dash_dot_slash_error=` får bara innehålla bokstäver, nummer, bindestreck (-_), punkt eller snedstreck`
size_error=` måste vara av storleken %s`
min_size_error=` måste innehålla minst %s tecken.`
max_size_error=` får inte innehålla mer än %s tecken.`
@ -264,8 +264,8 @@ profile=Profil
password=Lösenord
avatar=Avatar
ssh_keys=SSH-nycklar
security=Security
repos=Repositories
security=Säkerhet
repos=Utvecklingskataloger
orgs=Organisationer
applications=Applikationer
delete=Radera konto
@ -334,19 +334,19 @@ no_activity=Ingen nylig aktivitet
key_state_desc=Denna nyckel har använts inom dom senaste 7 dagarna
token_state_desc=Denna token har används inom dom senaste 7 dagarna
two_factor=Two-factor Authentication
two_factor=Tvåfaktorsautentisering
two_factor_status=Status:
two_factor_on=On
two_factor_off=Off
two_factor_enable=Enable
two_factor_disable=Disable
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
two_factor_on=
two_factor_off=Av
two_factor_enable=Aktivera
two_factor_disable=Inaktivera
two_factor_view_recovery_codes=Visa och spara <a href="%s%s">dina återställningskoder</a> på ett säkert ställe. Du kan använda dem som kod om du förlorar åtkomsten till din autentisering applikation.
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
two_factor_enable_title=Enable Two-factor Authentication
two_factor_enable_title=Avaktivera Tvåfaktorsautentisering
two_factor_scan_qr=Please use your authentication application to scan the image:
two_factor_or_enter_secret=Or enter the secret:
two_factor_then_enter_passcode=Then enter passcode:
two_factor_verify=Verify
two_factor_then_enter_passcode=Ange sedan lösenordet:
two_factor_verify=Verifiera
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
two_factor_enable_error=Enable Two-factor authentication failed: %v
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
@ -616,6 +616,7 @@ pulls.compare_compare=jämför
pulls.filter_branch=Filtrera gren
pulls.no_results=Inga resultat hittades.
pulls.nothing_to_compare=Det finns inget att jämföra eftersom bas och huvudgrenar är lika.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Det finns redan en pullförfrågan mellan detta två mål: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]s</a>^
pulls.create=Skapa Pullförfrågan
pulls.title_desc=vill sammanfoga %[1]d incheckningar från <code>s[2]s</code> in i <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Färska leveranser
settings.hook_type=Kroktyp
settings.add_slack_hook_desc=Lägg till <a href="%s">Slack</a>-integration till ditt förråd.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Pollett
settings.slack_domain=Domän
settings.slack_channel=Kanal

2
conf/locale/locale_tr-TR.ini

@ -616,6 +616,7 @@ pulls.compare_compare=karşılaştır
pulls.filter_branch=Dal filtrele
pulls.no_results=Sonuç bulunamadı.
pulls.nothing_to_compare=Karşılaştırılacak hiçbir şey yok, çünkü temel ve ana dal aynı.
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`Bu iki hedef için zaten bir değişiklik isteği var: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Değişiklik İsteği Oluştur
pulls.title_desc=<code>%[3]s</code> içindeki <code>%[2]s</code> işlemelerini %[1]d ile birleştirmek istiyor
@ -830,6 +831,7 @@ settings.recent_deliveries=Son Dağıtımlar
settings.hook_type=İstek Türü
settings.add_slack_hook_desc=Deponuza <a href="%s">Slack</a> entegrasyonunu ekleyin.
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=Erişim Anahtarı
settings.slack_domain=Alan Adı
settings.slack_channel=Kanal

2
conf/locale/locale_uk-UA.ini

@ -616,6 +616,7 @@ pulls.compare_compare=compare
pulls.filter_branch=Фільтрувати гілку
pulls.no_results=Результатів не знайдено.
pulls.nothing_to_compare=Нічого порівнювати, бо base та head гілки однакові.
pulls.nothing_merge_base=Нічого порівнювати, бо обидві гілки мають повністю різну історію.
pulls.has_pull_request=`Вже є pull request між ціми двома цілями: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Створити pull request
pulls.title_desc=хоче злити %[1]d комітів з <code>%[2]s</code> до <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=Недавні розсилки
settings.hook_type=Тип хуку
settings.add_slack_hook_desc=Додати <a href="%s">Slack</a>-інтеграцію до вашого репозиторію.
settings.add_discord_hook_desc=Додати <a href="%s">Discord</a>-інтеграцію до репозиторію.
settings.add_dingtalk_hook_desc=Додати інтеграцію <a href="%s">Dingtalk</a> до вашого репозиторію.
settings.slack_token=Жетон
settings.slack_domain=Домен
settings.slack_channel=Канал

6
conf/locale/locale_zh-CN.ini

@ -2,7 +2,7 @@ app_desc=一款极易搭建的自助 Git 服务
home=首页
dashboard=控制面板
explore=探索
explore=发现
help=帮助
sign_in=登录
sign_out=退出
@ -569,7 +569,7 @@ issues.filter_sort.recentupdate=最近更新
issues.filter_sort.leastupdate=最少更新
issues.filter_sort.mostcomment=最多评论
issues.filter_sort.leastcomment=最少评论
issues.opened_by=由 <a href="%[2]s">%[3]s</a> %[1]s创建
issues.opened_by=由 <a href="%[2]s">%[3]s</a> %[1]s创建
issues.opened_by_fake=由 %[2]s 于 %[1]s创建
issues.previous=上一页
issues.next=下一页
@ -616,6 +616,7 @@ pulls.compare_compare=对比分支
pulls.filter_branch=过滤分支
pulls.no_results=未找到结果
pulls.nothing_to_compare=基准和对比分支代码已经同步,无需进行对比。
pulls.nothing_merge_base=由于两个分支各自拥有完全不同的提交历史,因此无法进行比较。
pulls.has_pull_request=`已经存在目标分支的合并请求:<a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=创建合并请求
pulls.title_desc=请求将 %[1]d 次代码提交从 <code>%[2]s</code> 合并至 <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=最近推送记录
settings.hook_type=钩子类型
settings.add_slack_hook_desc=为您的仓库增加 <a href="%s">Slack</a> 集成。
settings.add_discord_hook_desc=为您的仓库增加 <a href="%s">Discord</a> 集成。
settings.add_dingtalk_hook_desc=为您的仓库增加 <a href="%s">钉钉</a> 集成。
settings.slack_token=令牌
settings.slack_domain=域名
settings.slack_channel=频道

2
conf/locale/locale_zh-HK.ini

@ -616,6 +616,7 @@ pulls.compare_compare=對比文件變化
pulls.filter_branch=過濾分支
pulls.no_results=未找到結果
pulls.nothing_to_compare=基準和對比分支代碼已經同步,無需進行對比。
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`已經存在目標分支的合併請求:<a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=創建合併請求
pulls.title_desc=請求將 %[1]d 次代碼提交從 <code>%[2]s</code> 合併至 <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=最近推送記錄
settings.hook_type=鉤子類型
settings.add_slack_hook_desc=為您的倉庫增加 <a href="%s">Slack</a> 集成。
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=令牌
settings.slack_domain=域名
settings.slack_channel=頻道

2
conf/locale/locale_zh-TW.ini

@ -616,6 +616,7 @@ pulls.compare_compare=對比文件變化
pulls.filter_branch=過濾分支
pulls.no_results=未找到結果
pulls.nothing_to_compare=基準和對比分支代碼已經同步,無需進行對比。
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
pulls.has_pull_request=`已經存在目標分支的合併請求:<a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=創建合併請求
pulls.title_desc=請求將 %[1]d 次代碼提交從 <code>%[2]s</code> 合併至 <code>%[3]s</code>
@ -830,6 +831,7 @@ settings.recent_deliveries=最近推送記錄
settings.hook_type=鉤子類型
settings.add_slack_hook_desc=為您的倉庫增加 <a href="%s">Slack</a> 集成。
settings.add_discord_hook_desc=Hook <a href="%s">Discord</a> 到你的 repository。
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
settings.slack_token=令牌
settings.slack_domain=域名
settings.slack_channel=頻道

3
docker/build.sh

@ -25,5 +25,6 @@ rm -r $GOPATH
apk --no-progress del build-deps
# Create git user for Gogs
adduser -H -D -g 'Gogs Git User' git -h /data/git -s /bin/bash && passwd -u git
addgroup -S git
adduser -G git -H -D -g 'Gogs Git User' git -h /data/git -s /bin/bash && usermod -p '*' git && passwd -u git
echo "export GOGS_CUSTOM=${GOGS_CUSTOM}" >> /etc/profile

3
docker/finalize.sh

@ -6,9 +6,6 @@ set -e
# Move to final place
mv /app/gogs/build/gogs /app/gogs/
mv /app/gogs/build/templates /app/gogs/
mv /app/gogs/build/public /app/gogs/
mv /app/gogs/build/docker /app/gogs/
# Final cleaning
rm -rf /app/gogs/build

8
docker/start.sh

@ -38,6 +38,14 @@ create_volume_subfolder() {
done
}
setids() {
PUID=${PUID:-1000}
PGID=${PGID:-1000}
groupmod -o -g "$PGID" git
usermod -o -u "$PUID" git
}
setids
cleanup
create_volume_subfolder

2
gogs.go

@ -16,7 +16,7 @@ import (
"github.com/gogits/gogs/pkg/setting"
)
const APP_VER = "0.11.28.0718"
const APP_VER = "0.11.31.1022"
func init() {
setting.AppVer = APP_VER

3
models/action.go

@ -379,8 +379,7 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
if ref[0] == '#' {
ref = fmt.Sprintf("%s%s", repo.FullName(), ref)
} else if !strings.Contains(ref, "/") {
// We don't support User#ID syntax yet
// return ErrNotImplemented
// FIXME: We don't support User#ID syntax yet
continue
}

6
models/comment.go

@ -188,7 +188,7 @@ func (cmt *Comment) mailParticipants(e Engine, opType ActionType, issue *Issue)
issue.Content = fmt.Sprintf("Reopened #%d", issue.Index)
}
if err = mailIssueCommentToParticipants(issue, cmt.Poster, mentions); err != nil {
log.Error(4, "mailIssueCommentToParticipants: %v", err)
log.Error(2, "mailIssueCommentToParticipants: %v", err)
}
return nil
@ -290,10 +290,10 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err
// Notify watchers for whatever action comes in, ignore if no action type.
if act.OpType > 0 {
if err = notifyWatchers(e, act); err != nil {
log.Error(4, "notifyWatchers: %v", err)
log.Error(2, "notifyWatchers: %v", err)
}
if err = comment.mailParticipants(e, act.OpType, opts.Issue); err != nil {
log.Error(4, "MailParticipants: %v", err)
log.Error(2, "MailParticipants: %v", err)
}
}

3
models/issue_mail.go

@ -155,7 +155,6 @@ func mailIssueCommentToParticipants(issue *Issue, doer *User, mentions []string)
tos = append(tos, mentions[i])
}
mailer.SendIssueMentionMail(NewMailerIssue(issue), NewMailerRepo(issue.Repo), NewMailerUser(doer), GetUserEmailsByNames(tos))
return nil
}
@ -168,7 +167,7 @@ func (issue *Issue) MailParticipants() (err error) {
}
if err = mailIssueCommentToParticipants(issue, issue.Poster, mentions); err != nil {
log.Error(4, "mailIssueCommentToParticipants: %v", err)
log.Error(2, "mailIssueCommentToParticipants: %v", err)
}
return nil

2
models/migrations/v15.go

@ -67,6 +67,8 @@ func generateAndMigrateGitHooks(x *xorm.Engine) (err error) {
wikiPath := repoBase + ".wiki.git"
log.Trace("[%04d]: %s", idx, repoPath)
// Note: we should not create hookDir here because update hook file should already exists inside this direcotry,
// if this directory does not exist, the current setup is not correct anyway.
hookDir := filepath.Join(repoPath, "hooks")
customHookDir := filepath.Join(repoPath, "custom_hooks")
wikiHookDir := filepath.Join(wikiPath, "hooks")

4
models/user.go

@ -492,7 +492,7 @@ func GetUserSalt() (string, error) {
return tool.RandomString(10)
}
// NewGhostUser creates and returns a fake user for someone has deleted his/her account.
// NewGhostUser creates and returns a fake user for someone who has deleted his/her account.
func NewGhostUser() *User {
return &User{
ID: -1,
@ -502,7 +502,7 @@ func NewGhostUser() *User {
}
var (
reservedUsernames = []string{"assets", "css", "img", "js", "less", "plugins", "debug", "raw", "install", "api", "avatar", "user", "org", "help", "stars", "issues", "pulls", "commits", "repo", "template", "admin", "new", ".", ".."}
reservedUsernames = []string{"explore", "create", "assets", "css", "img", "js", "less", "plugins", "debug", "raw", "install", "api", "avatar", "user", "org", "help", "stars", "issues", "pulls", "commits", "repo", "template", "admin", "new", ".", ".."}
reservedUserPatterns = []string{"*.keys"}
)

6
models/webhook.go

@ -349,6 +349,7 @@ const (
GOGS HookTaskType = iota + 1
SLACK
DISCORD
DINGTALK
)
var hookTaskTypes = map[string]HookTaskType{
@ -571,6 +572,11 @@ func prepareHookTasks(e Engine, repo *Repository, event HookEventType, p api.Pay
if err != nil {
return fmt.Errorf("GetDiscordPayload: %v", err)
}
case DINGTALK:
payloader, err = GetDingtalkPayload(p, event)
if err != nil {
return fmt.Errorf("GetDingtalkPayload: %v", err)
}
default:
payloader = p
}

260
models/webhook_dingtalk.go

@ -0,0 +1,260 @@
// Copyright 2017 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package models
import (
"encoding/json"
"fmt"
"strings"
"github.com/gogits/git-module"
api "github.com/gogits/go-gogs-client"
)
const (
DingtalkNotificationTitle = "Gogs Notification"
)
//Refer: https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1
type DingtalkActionCard struct {
Title string `json:"title"`
Text string `json:"text"`
HideAvatar string `json:"hideAvatar"`
BtnOrientation string `json:"btnOrientation"`
SingleTitle string `json:"singleTitle"`
SingleURL string `json:"singleURL"`
}
//Refer: https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1
type DingtalkAtObject struct {
AtMobiles []string `json:"atMobiles"`
IsAtAll bool `json:"isAtAll"`
}
//Refer: https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1
type DingtalkPayload struct {
MsgType string `json:"msgtype"`
At DingtalkAtObject `json:"at"`
ActionCard DingtalkActionCard `json:"actionCard"`
}
func (p *DingtalkPayload) JSONPayload() ([]byte, error) {
data, err := json.MarshalIndent(p, "", " ")
if err != nil {
return []byte{}, err
}
return data, nil
}
func NewDingtalkActionCard(singleTitle, singleURL string) DingtalkActionCard {
return DingtalkActionCard{
Title: DingtalkNotificationTitle,
SingleURL: singleURL,
SingleTitle: singleTitle,
}
}
//TODO: add content
func GetDingtalkPayload(p api.Payloader, event HookEventType) (payload *DingtalkPayload, err error) {
switch event {
case HOOK_EVENT_CREATE:
payload, err = getDingtalkCreatePayload(p.(*api.CreatePayload))
case HOOK_EVENT_DELETE:
payload, err = getDingtalkDeletePayload(p.(*api.DeletePayload))
case HOOK_EVENT_FORK:
payload, err = getDingtalkForkPayload(p.(*api.ForkPayload))
case HOOK_EVENT_PUSH:
payload, err = getDingtalkPushPayload(p.(*api.PushPayload))
case HOOK_EVENT_ISSUES:
payload, err = getDingtalkIssuesPayload(p.(*api.IssuesPayload))
case HOOK_EVENT_ISSUE_COMMENT:
payload, err = getDingtalkIssueCommentPayload(p.(*api.IssueCommentPayload))
case HOOK_EVENT_PULL_REQUEST:
payload, err = getDingtalkPullRequestPayload(p.(*api.PullRequestPayload))
case HOOK_EVENT_RELEASE:
payload, err = getDingtalkReleasePayload(p.(*api.ReleasePayload))
}
if err != nil {
return nil, fmt.Errorf("event '%s': %v", event, err)
}
return payload, nil
}
func getDingtalkCreatePayload(p *api.CreatePayload) (*DingtalkPayload, error) {
refName := git.RefEndName(p.Ref)
refType := strings.Title(p.RefType)
actionCard := NewDingtalkActionCard("View "+refType, p.Repo.HTMLURL+"/src/"+refName)
actionCard.Text += "# New " + refType + " Create Event"
actionCard.Text += "\n- Repo: **" + MarkdownLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) + "**"
actionCard.Text += "\n- New " + refType + ": **" + MarkdownLinkFormatter(p.Repo.HTMLURL+"/src/"+refName, refName) + "**"
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
func getDingtalkDeletePayload(p *api.DeletePayload) (*DingtalkPayload, error) {
refName := git.RefEndName(p.Ref)
refType := strings.Title(p.RefType)
actionCard := NewDingtalkActionCard("View Repo", p.Repo.HTMLURL)
actionCard.Text += "# " + refType + " Delete Event"
actionCard.Text += "\n- Repo: **" + MarkdownLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) + "**"
actionCard.Text += "\n- " + refType + ": **" + refName + "**"
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
func getDingtalkForkPayload(p *api.ForkPayload) (*DingtalkPayload, error) {
actionCard := NewDingtalkActionCard("View Forkee", p.Forkee.HTMLURL)
actionCard.Text += "# Repo Fork Event"
actionCard.Text += "\n- From Repo: **" + MarkdownLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) + "**"
actionCard.Text += "\n- To Repo: **" + MarkdownLinkFormatter(p.Forkee.HTMLURL, p.Forkee.FullName) + "**"
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
func getDingtalkPushPayload(p *api.PushPayload) (*DingtalkPayload, error) {
refName := git.RefEndName(p.Ref)
pusher := p.Pusher.FullName
if pusher == "" {
pusher = p.Pusher.UserName
}
var detail string
for i, commit := range p.Commits {
msg := strings.Split(commit.Message, "\n")[0]
commitLink := MarkdownLinkFormatter(commit.URL, commit.ID[:7])
detail += fmt.Sprintf("> %d. %s %s - %s\n", i, commitLink, commit.Author.Name, msg)
}
actionCard := NewDingtalkActionCard("View Changes", p.CompareURL)
actionCard.Text += "# Repo Push Event"
actionCard.Text += "\n- Repo: **" + MarkdownLinkFormatter(p.Repo.HTMLURL, p.Repo.Name) + "**"
actionCard.Text += "\n- Ref: **" + MarkdownLinkFormatter(p.Repo.HTMLURL+"/src/"+refName, refName) + "**"
actionCard.Text += "\n- Pusher: **" + pusher + "**"
actionCard.Text += "\n## " + fmt.Sprintf("Total %d commits(s)", len(p.Commits))
actionCard.Text += "\n" + detail
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
func getDingtalkIssuesPayload(p *api.IssuesPayload) (*DingtalkPayload, error) {
issueName := fmt.Sprintf("#%d %s", p.Index, p.Issue.Title)
issueURL := fmt.Sprintf("%s/issues/%d", p.Repository.HTMLURL, p.Index)
actionCard := NewDingtalkActionCard("View Issue", issueURL)
actionCard.Text += "# Issue Event " + strings.Title(string(p.Action))
actionCard.Text += "\n- Issue: **" + MarkdownLinkFormatter(issueURL, issueName) + "**"
if p.Action == api.HOOK_ISSUE_ASSIGNED {
actionCard.Text += "\n- New Assignee: **" + p.Issue.Assignee.UserName + "**"
} else if p.Action == api.HOOK_ISSUE_MILESTONED {
actionCard.Text += "\n- New Milestone: **" + p.Issue.Milestone.Title + "**"
} else if p.Action == api.HOOK_ISSUE_LABEL_UPDATED {
if len(p.Issue.Labels) > 0 {
labels := make([]string, len(p.Issue.Labels))
for i, label := range p.Issue.Labels {
labels[i] = "**" + label.Name + "**"
}
actionCard.Text += "\n- Labels: " + strings.Join(labels, ",")
} else {
actionCard.Text += "\n- Labels: **empty**"
}
}
if p.Issue.Body != "" {
actionCard.Text += "\n> " + p.Issue.Body
}
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
func getDingtalkIssueCommentPayload(p *api.IssueCommentPayload) (*DingtalkPayload, error) {
issueName := fmt.Sprintf("#%d %s", p.Issue.Index, p.Issue.Title)
commentURL := fmt.Sprintf("%s/issues/%d", p.Repository.HTMLURL, p.Issue.Index)
if p.Action != api.HOOK_ISSUE_COMMENT_DELETED {
commentURL += "#" + CommentHashTag(p.Comment.ID)
}
issueURL := fmt.Sprintf("%s/issues/%d", p.Repository.HTMLURL, p.Issue.Index)
actionCard := NewDingtalkActionCard("View Issue Comment", commentURL)
actionCard.Text += "# Issue Comment " + strings.Title(string(p.Action))
actionCard.Text += "\n- Issue: " + MarkdownLinkFormatter(issueURL, issueName)
actionCard.Text += "\n- Comment content: "
actionCard.Text += "\n> " + p.Comment.Body
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
func getDingtalkPullRequestPayload(p *api.PullRequestPayload) (*DingtalkPayload, error) {
title := "# Pull Request " + strings.Title(string(p.Action))
if p.Action == api.HOOK_ISSUE_CLOSED && p.PullRequest.HasMerged {
title = "# Pull Request Merged"
}
pullRequestURL := fmt.Sprintf("%s/pulls/%d", p.Repository.HTMLURL, p.Index)
content := "- PR: " + MarkdownLinkFormatter(pullRequestURL, fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title))
if p.Action == api.HOOK_ISSUE_ASSIGNED {
content += "\n- New Assignee: **" + p.PullRequest.Assignee.UserName + "**"
} else if p.Action == api.HOOK_ISSUE_MILESTONED {
content += "\n- New Milestone: *" + p.PullRequest.Milestone.Title + "*"
} else if p.Action == api.HOOK_ISSUE_LABEL_UPDATED {
labels := make([]string, len(p.PullRequest.Labels))
for i, label := range p.PullRequest.Labels {
labels[i] = "**" + label.Name + "**"
}
content += "\n- New Labels: " + strings.Join(labels, ",")
}
actionCard := NewDingtalkActionCard("View Pull Request", pullRequestURL)
actionCard.Text += title + "\n" + content
if p.Action == api.HOOK_ISSUE_OPENED || p.Action == api.HOOK_ISSUE_EDITED {
actionCard.Text += "\n> " + p.PullRequest.Body
}
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
func getDingtalkReleasePayload(p *api.ReleasePayload) (*DingtalkPayload, error) {
releaseURL := p.Repository.HTMLURL + "/src/" + p.Release.TagName
author := p.Release.Author.FullName
if author == "" {
author = p.Release.Author.UserName
}
actionCard := NewDingtalkActionCard("View Release", releaseURL)
actionCard.Text += "# New Release Published"
actionCard.Text += "\n- Repo: " + MarkdownLinkFormatter(p.Repository.HTMLURL, p.Repository.Name)
actionCard.Text += "\n- Tag: " + MarkdownLinkFormatter(releaseURL, p.Release.TagName)
actionCard.Text += "\n- Author: " + author
actionCard.Text += fmt.Sprintf("\n- Draft?: %t", p.Release.Draft)
actionCard.Text += fmt.Sprintf("\n- Pre Release?: %t", p.Release.Prerelease)
actionCard.Text += "\n- Title: " + p.Release.Name
if p.Release.Body != "" {
actionCard.Text += "\n- Note: " + p.Release.Body
}
return &DingtalkPayload{MsgType: "actionCard", ActionCard: actionCard}, nil
}
//Format link addr and title into markdown style
func MarkdownLinkFormatter(link, text string) string {
return "[" + text + "](" + link + ")"
}

104
pkg/bindata/bindata.go

File diff suppressed because one or more lines are too long

9
pkg/form/repo.go

@ -195,6 +195,15 @@ func (f *NewDiscordHook) Validate(ctx *macaron.Context, errs binding.Errors) bin
return validate(errs, ctx.Data, f, ctx.Locale)
}
type NewDingtalkHook struct {
PayloadURL string `binding:"Required;Url"`
Webhook
}
func (f *NewDingtalkHook) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
return validate(errs, ctx.Data, f, ctx.Locale)
}
// .___
// | | ______ ________ __ ____
// | |/ ___// ___/ | \_/ __ \

12
pkg/mailer/mail.go

@ -94,7 +94,7 @@ func SendUserMail(c *macaron.Context, u User, tpl, code, subject, info string) {
msg := NewMessage([]string{u.Email()}, subject, body)
msg.Info = fmt.Sprintf("UID: %d, %s", u.ID(), info)
SendAsync(msg)
Send(msg)
}
func SendActivateAccountMail(c *macaron.Context, u User) {
@ -122,7 +122,7 @@ func SendActivateEmailMail(c *macaron.Context, u User, email string) {
msg := NewMessage([]string{email}, c.Tr("mail.activate_email"), body)
msg.Info = fmt.Sprintf("UID: %d, activate email", u.ID())
SendAsync(msg)
Send(msg)
}
// SendRegisterNotifyMail triggers a notify e-mail by admin created a account.
@ -139,7 +139,7 @@ func SendRegisterNotifyMail(c *macaron.Context, u User) {
msg := NewMessage([]string{u.Email()}, c.Tr("mail.register_notify"), body)
msg.Info = fmt.Sprintf("UID: %d, registration notify", u.ID())
SendAsync(msg)
Send(msg)
}
// SendCollaboratorMail sends mail notification to new collaborator.
@ -160,7 +160,7 @@ func SendCollaboratorMail(u, doer User, repo Repository) {
msg := NewMessage([]string{u.Email()}, subject, body)
msg.Info = fmt.Sprintf("UID: %d, add collaborator", u.ID())
SendAsync(msg)
Send(msg)
}
func composeTplData(subject, body, link string) map[string]interface{} {
@ -192,7 +192,7 @@ func SendIssueCommentMail(issue Issue, repo Repository, doer User, tos []string)
return
}
SendAsync(composeIssueMessage(issue, repo, doer, MAIL_ISSUE_COMMENT, tos, "issue comment"))
Send(composeIssueMessage(issue, repo, doer, MAIL_ISSUE_COMMENT, tos, "issue comment"))
}
// SendIssueMentionMail composes and sends issue mention emails to target receivers.
@ -200,5 +200,5 @@ func SendIssueMentionMail(issue Issue, repo Repository, doer User, tos []string)
if len(tos) == 0 {
return
}
SendAsync(composeIssueMessage(issue, repo, doer, MAIL_ISSUE_MENTION, tos, "issue mention"))
Send(composeIssueMessage(issue, repo, doer, MAIL_ISSUE_MENTION, tos, "issue mention"))
}

19
pkg/mailer/mailer.go

@ -24,6 +24,7 @@ import (
type Message struct {
Info string // Message information for log purpose.
*gomail.Message
confirmChan chan struct{}
}
// NewMessageFrom creates new mail message object with custom From header.
@ -48,9 +49,9 @@ func NewMessageFrom(to []string, from, subject, htmlBody string) *Message {
}
}
msg.SetBody(contentType, body)
return &Message{
Message: msg,
confirmChan: make(chan struct{}),
}
}
@ -204,12 +205,14 @@ func processMailQueue() {
} else {
log.Trace("E-mails sent %s: %s", msg.GetHeader("To"), msg.Info)
}
msg.confirmChan <- struct{}{}
}
}
}
var mailQueue chan *Message
// NewContext initializes settings for mailer.
func NewContext() {
// Need to check if mailQueue is nil because in during reinstall (user had installed
// before but swithed install lock off), this function will be called again
@ -222,8 +225,18 @@ func NewContext() {
go processMailQueue()
}
func SendAsync(msg *Message) {
go func() {
// Send puts new message object into mail queue.
// It returns without confirmation (mail processed asynchronously) in normal cases,
// but waits/blocks under hook mode to make sure mail has been sent.
func Send(msg *Message) {
mailQueue <- msg
if setting.HookMode {
<-msg.confirmChan
return
}
go func() {
<-msg.confirmChan
}()
}

24
pkg/setting/setting.go

@ -832,9 +832,10 @@ var (
MailService *Mailer
)
// newMailService initializes mail service options from configuration.
// No non-error log will be printed in hook mode.
func newMailService() {
sec := Cfg.Section("mailer")
// Check mailer setting.
if !sec.Key("ENABLED").MustBool() {
return
}
@ -863,6 +864,9 @@ func newMailService() {
MailService.FromEmail = parsed.Address
}
if HookMode {
return
}
log.Info("Mail Service Enabled")
}
@ -877,6 +881,8 @@ func newRegisterMailService() {
log.Info("Register Mail Service Enabled")
}
// newNotifyMailService initializes notification email service options from configuration.
// No non-error log will be printed in hook mode.
func newNotifyMailService() {
if !Cfg.Section("service").Key("ENABLE_NOTIFY_MAIL").MustBool() {
return
@ -885,6 +891,10 @@ func newNotifyMailService() {
return
}
Service.EnableNotifyMail = true
if HookMode {
return
}
log.Info("Notify Mail Service Enabled")
}
@ -901,3 +911,15 @@ func NewServices() {
newRegisterMailService()
newNotifyMailService()
}
// HookMode indicates whether program starts as Git server-side hook callback.
var HookMode bool
// NewPostReceiveHookServices initializes all services that are needed by
// Git server-side post-receive hook callback.
func NewPostReceiveHookServices() {
HookMode = true
newService()
newMailService()
newNotifyMailService()
}

3
pkg/template/template.go

@ -22,11 +22,12 @@ import (
"gopkg.in/editorconfig/editorconfig-core-go.v1"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/pkg/tool"
"github.com/gogits/gogs/pkg/markup"
"github.com/gogits/gogs/pkg/setting"
"github.com/gogits/gogs/pkg/tool"
)
// TODO: only initialize map once and save to a local variable to reduce copies.
func NewFuncMap() []template.FuncMap {
return []template.FuncMap{map[string]interface{}{
"GoVer": func() string {

11
public/config.codekit

@ -84,6 +84,17 @@
"outputPathIsSetByUser": 0,
"processed": 1
},
"\/img\/dingtalk.png": {
"fileType": 32768,
"ignore": 0,
"ignoreWasSetByUser": 0,
"initialSize": 30738,
"inputAbbreviatedPath": "\/img\/dingtalk.png",
"outputAbbreviatedPath": "\/img\/dingtalk.png",
"outputPathIsOutsideProject": 0,
"outputPathIsSetByUser": 0,
"processed": 0
},
"\/img\/discord.png": {
"fileType": 32768,
"ignore": 0,

BIN
public/img/dingtalk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

3
routes/api/v1/user/user.go

@ -12,6 +12,7 @@ import (
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/models/errors"
"github.com/gogits/gogs/pkg/context"
"github.com/gogits/gogs/pkg/markup"
)
func Search(c *context.APIContext) {
@ -39,7 +40,7 @@ func Search(c *context.APIContext) {
ID: users[i].ID,
UserName: users[i].Name,
AvatarUrl: users[i].AvatarLink(),
FullName: users[i].FullName,
FullName: markup.Sanitize(users[i].FullName),
}
if c.IsLogged {
results[i].Email = users[i].Email

71
routes/repo/webhook.go

@ -268,6 +268,44 @@ func DiscordHooksNewPost(c *context.Context, f form.NewDiscordHook) {
c.Redirect(orCtx.Link + "/settings/hooks")
}
func DingtalkHooksNewPost(c *context.Context, f form.NewDingtalkHook) {
c.Data["Title"] = c.Tr("repo.settings")
c.Data["PageIsSettingsHooks"] = true
c.Data["PageIsSettingsHooksNew"] = true
c.Data["Webhook"] = models.Webhook{HookEvent: &models.HookEvent{}}
orCtx, err := getOrgRepoCtx(c)
if err != nil {
c.Handle(500, "getOrgRepoCtx", err)
return
}
if c.HasError() {
c.HTML(200, orCtx.NewTemplate)
return
}
w := &models.Webhook{
RepoID: orCtx.RepoID,
URL: f.PayloadURL,
ContentType: models.JSON,
HookEvent: ParseHookEvent(f.Webhook),
IsActive: f.Active,
HookTaskType: models.DINGTALK,
OrgID: orCtx.OrgID,
}
if err := w.UpdateEvent(); err != nil {
c.Handle(500, "UpdateEvent", err)
return
} else if err := models.CreateWebhook(w); err != nil {
c.Handle(500, "CreateWebhook", err)
return
}
c.Flash.Success(c.Tr("repo.settings.add_hook_success"))
c.Redirect(orCtx.Link + "/settings/hooks")
}
func checkWebhook(c *context.Context) (*OrgRepoCtx, *models.Webhook) {
c.Data["RequireHighlightJS"] = true
@ -296,6 +334,8 @@ func checkWebhook(c *context.Context) (*OrgRepoCtx, *models.Webhook) {
case models.DISCORD:
c.Data["SlackHook"] = w.GetSlackHook()
c.Data["HookType"] = "discord"
case models.DINGTALK:
c.Data["HookType"] = "dingtalk"
default:
c.Data["HookType"] = "gogs"
}
@ -445,6 +485,37 @@ func DiscordHooksEditPost(c *context.Context, f form.NewDiscordHook) {
c.Redirect(fmt.Sprintf("%s/settings/hooks/%d", orCtx.Link, w.ID))
}
func DingtalkHooksEditPost(c *context.Context, f form.NewDingtalkHook) {
c.Data["Title"] = c.Tr("repo.settings")
c.Data["PageIsSettingsHooks"] = true
c.Data["PageIsSettingsHooksEdit"] = true
orCtx, w := checkWebhook(c)
if c.Written() {
return
}
c.Data["Webhook"] = w
if c.HasError() {
c.HTML(200, orCtx.NewTemplate)
return
}
w.URL = f.PayloadURL
w.HookEvent = ParseHookEvent(f.Webhook)
w.IsActive = f.Active
if err := w.UpdateEvent(); err != nil {
c.Handle(500, "UpdateEvent", err)
return
} else if err := models.UpdateWebhook(w); err != nil {
c.Handle(500, "UpdateWebhook", err)
return
}
c.Flash.Success(c.Tr("repo.settings.update_hook_success"))
c.Redirect(fmt.Sprintf("%s/settings/hooks/%d", orCtx.Link, w.ID))
}
func TestWebhook(c *context.Context) {
var authorUsername, committerUsername string

2
routes/user/auth.go

@ -95,7 +95,6 @@ func Login(c *context.Context) {
} else {
redirectTo, _ = url.QueryUnescape(c.GetCookie("redirect_to"))
}
c.SetCookie("redirect_to", "", -1, setting.AppSubURL)
if isSucceed {
if isValidRedirect(redirectTo) {
@ -103,6 +102,7 @@ func Login(c *context.Context) {
} else {
c.Redirect(setting.AppSubURL + "/")
}
c.SetCookie("redirect_to", "", -1, setting.AppSubURL)
return
}

2
templates/.VERSION

@ -1 +1 @@
0.11.28.0718
0.11.31.1022

1
templates/org/settings/webhook_new.tmpl

@ -20,6 +20,7 @@
{{template "repo/settings/webhook/gogs" .}}
{{template "repo/settings/webhook/slack" .}}
{{template "repo/settings/webhook/discord" .}}
{{template "repo/settings/webhook/dingtalk" .}}
</div>
{{template "repo/settings/webhook/history" .}}

3
templates/repo/editor/commit_form.tmpl

@ -14,7 +14,8 @@
<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="direct" {{if eq .commit_choice "direct"}}checked{{end}}>
<label>
<i class="octicon octicon-git-commit" height="16" width="14"></i>
{{.i18n.Tr "repo.editor.commit_directly_to_this_branch" .BranchName | Safe}}
{{$branchName := .BranchName | Str2html}}
{{.i18n.Tr "repo.editor.commit_directly_to_this_branch" $branchName | Safe}}
</label>
</div>
</div>

2
templates/repo/issue/view_title.tmpl

@ -28,7 +28,7 @@
{{if .Issue.PullRequest.HasMerged}}
{{ $mergedStr:= TimeSince .Issue.PullRequest.Merged $.Lang }}
<a {{if gt .Issue.PullRequest.Merger.ID 0}}href="{{.Issue.PullRequest.Merger.HomeLink}}"{{end}}>{{.Issue.PullRequest.Merger.Name}}</a>
<span class="pull-desc">{{$.i18n.Tr "repo.pulls.merged_title_desc" .NumCommits .HeadTarget .BaseTarget $mergedStr | Safe}}</span>
<span class="pull-desc">{{$.i18n.Tr "repo.pulls.merged_title_desc" .NumCommits .HeadTarget .BaseTarget $mergedStr | Str2html}}</span>
{{else}}
<a {{if gt .Issue.Poster.ID 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>{{.Issue.Poster.Name}}</a>
<span class="pull-desc">{{$.i18n.Tr "repo.pulls.title_desc" .NumCommits .HeadTarget .BaseTarget | Str2html}}</span>

11
templates/repo/settings/webhook/dingtalk.tmpl

@ -0,0 +1,11 @@
{{if eq .HookType "dingtalk"}}
<p>{{.i18n.Tr "repo.settings.add_dingtalk_hook_desc" "https://open-doc.dingtalk.com/" | Str2html}}</p>
<form class="ui form" action="{{.BaseLink}}/settings/hooks/dingtalk/{{if .PageIsSettingsHooksNew}}new{{else}}{{.Webhook.ID}}{{end}}" method="post">
{{.CSRFTokenHTML}}
<div class="required field {{if .Err_PayloadURL}}error{{end}}">
<label for="payload_url">{{.i18n.Tr "repo.settings.payload_url"}}</label>
<input id="payload_url" name="payload_url" type="url" value="{{.Webhook.URL}}" placeholder="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx" autofocus required>
</div>
{{template "repo/settings/webhook/settings" .}}
</form>
{{end}}

4
templates/repo/settings/webhook/list.tmpl

@ -20,6 +20,10 @@
<a class="item" href="{{$.BaseLink}}/settings/hooks/discord/new">
<img class="img-12" src="{{AppSubURL}}/img/discord.png">Discord
</a>
{{else if eq . "dingtalk"}}
<a class="item" href="{{$.BaseLink}}/settings/hooks/dingtalk/new">
<img class="img-12" src="{{AppSubURL}}/img/dingtalk.png">Dingtalk
</a>
{{end}}
{{end}}
</div>

1
templates/repo/settings/webhook/new.tmpl

@ -20,6 +20,7 @@
{{template "repo/settings/webhook/gogs" .}}
{{template "repo/settings/webhook/slack" .}}
{{template "repo/settings/webhook/discord" .}}
{{template "repo/settings/webhook/dingtalk" .}}
</div>
{{template "repo/settings/webhook/history" .}}

Loading…
Cancel
Save