diff --git a/modules/avatar/avatar.go b/modules/avatar/avatar.go
index 106215ec0b2b8..bab5e63a08944 100644
--- a/modules/avatar/avatar.go
+++ b/modules/avatar/avatar.go
@@ -11,19 +11,18 @@ import (
"image/color"
"image/png"
- _ "image/gif" // for processing gif images
- _ "image/jpeg" // for processing jpeg images
+ _ "image/gif" // for image format registration
+ _ "image/jpeg" // for image format registration
"code.gitea.io/gitea/modules/avatar/identicon"
"code.gitea.io/gitea/modules/setting"
"golang.org/x/image/draw"
- _ "golang.org/x/image/webp" // for processing webp images
+ _ "golang.org/x/image/webp" // for image format registration
)
// DefaultAvatarSize is the target CSS pixel size for avatar generation. It is
-// multiplied by setting.Avatar.RenderedSizeFactor and the resulting size is the
// usual size of avatar image saved on server, unless the original file is smaller
// than the size after resizing.
const DefaultAvatarSize = 256
@@ -31,8 +30,8 @@ const DefaultAvatarSize = 256
// RandomImageSize generates and returns a random avatar image unique to input data
// in custom size (height and width).
func RandomImageSize(size int, data []byte) (image.Image, error) {
- // we use white as background, and use dark colors to draw blocks
- imgMaker, err := identicon.New(size, color.White, identicon.DarkColors...)
+ // Use transparent background instead of white
+ imgMaker, err := identicon.New(size, color.Transparent, identicon.DarkColors...)
if err != nil {
return nil, fmt.Errorf("identicon.New: %w", err)
}
@@ -66,11 +65,14 @@ func processAvatarImage(data []byte, maxOriginSize int64) ([]byte, error) {
return nil, fmt.Errorf("image height is too large: %d > %d", imgCfg.Height, setting.Avatar.MaxHeight)
}
- // If the origin is small enough, just use it, then APNG could be supported,
- // otherwise, if the image is processed later, APNG loses animation.
- // And one more thing, webp is not fully supported, for animated webp, image.DecodeConfig works but Decode fails.
- // So for animated webp, if the uploaded file is smaller than maxOriginSize, it will be used, if it's larger, there will be an error.
- if len(data) < int(maxOriginSize) {
+ // Check max origin size if specified (for animated images)
+ if maxOriginSize > 0 && len(data) < int(maxOriginSize) {
+ return data, nil
+ }
+
+ // If the origin is small enough (both dimensions <= target size), just use it
+ targetSize := DefaultAvatarSize * setting.Avatar.RenderedSizeFactor
+ if imgCfg.Width <= targetSize && imgCfg.Height <= targetSize {
return data, nil
}
@@ -82,21 +84,24 @@ func processAvatarImage(data []byte, maxOriginSize int64) ([]byte, error) {
// try to crop and resize the origin image if necessary
img = cropSquare(img)
- targetSize := DefaultAvatarSize * setting.Avatar.RenderedSizeFactor
+ if setting.Avatar.RenderedSizeFactor > 0 {
+ targetSize = DefaultAvatarSize * setting.Avatar.RenderedSizeFactor
+ }
img = scale(img, targetSize, targetSize, draw.BiLinear)
- // try to encode the cropped/resized image to png
+ // Create a new RGBA image to preserve transparency
+ dst := image.NewRGBA(image.Rect(0, 0, img.Bounds().Dx(), img.Bounds().Dy()))
+ draw.Draw(dst, dst.Bounds(), image.Transparent, image.Point{}, draw.Src)
+ draw.Draw(dst, img.Bounds(), img, img.Bounds().Min, draw.Over)
+
+ // Encode the image to PNG with transparency
bs := bytes.Buffer{}
- if err = png.Encode(&bs, img); err != nil {
+ if err = png.Encode(&bs, dst); err != nil {
return nil, err
}
resized := bs.Bytes()
- // usually the png compression is not good enough, use the original image (no cropping/resizing) if the origin is smaller
- if len(data) <= len(resized) {
- return data, nil
- }
-
+ // Always use the processed image to ensure transparency
return resized, nil
}
diff --git a/modules/avatar/identicon/colors.go b/modules/avatar/identicon/colors.go
index 09a98bd0e9eba..201e3c1e51bb2 100644
--- a/modules/avatar/identicon/colors.go
+++ b/modules/avatar/identicon/colors.go
@@ -7,128 +7,128 @@ import "image/color"
// DarkColors are dark colors for avatar blocks, they come from image/color/palette.WebSafe, and light colors (0xff) are removed
var DarkColors = []color.Color{
- color.RGBA{0x00, 0x00, 0x33, 0xff},
- color.RGBA{0x00, 0x00, 0x66, 0xff},
- color.RGBA{0x00, 0x00, 0x99, 0xff},
- color.RGBA{0x00, 0x00, 0xcc, 0xff},
- color.RGBA{0x00, 0x33, 0x00, 0xff},
- color.RGBA{0x00, 0x33, 0x33, 0xff},
- color.RGBA{0x00, 0x33, 0x66, 0xff},
- color.RGBA{0x00, 0x33, 0x99, 0xff},
- color.RGBA{0x00, 0x33, 0xcc, 0xff},
- color.RGBA{0x00, 0x66, 0x00, 0xff},
- color.RGBA{0x00, 0x66, 0x33, 0xff},
- color.RGBA{0x00, 0x66, 0x66, 0xff},
- color.RGBA{0x00, 0x66, 0x99, 0xff},
- color.RGBA{0x00, 0x66, 0xcc, 0xff},
- color.RGBA{0x00, 0x99, 0x00, 0xff},
- color.RGBA{0x00, 0x99, 0x33, 0xff},
- color.RGBA{0x00, 0x99, 0x66, 0xff},
- color.RGBA{0x00, 0x99, 0x99, 0xff},
- color.RGBA{0x00, 0x99, 0xcc, 0xff},
- color.RGBA{0x00, 0xcc, 0x00, 0xff},
- color.RGBA{0x00, 0xcc, 0x33, 0xff},
- color.RGBA{0x00, 0xcc, 0x66, 0xff},
- color.RGBA{0x00, 0xcc, 0x99, 0xff},
- color.RGBA{0x00, 0xcc, 0xcc, 0xff},
- color.RGBA{0x33, 0x00, 0x00, 0xff},
- color.RGBA{0x33, 0x00, 0x33, 0xff},
- color.RGBA{0x33, 0x00, 0x66, 0xff},
- color.RGBA{0x33, 0x00, 0x99, 0xff},
- color.RGBA{0x33, 0x00, 0xcc, 0xff},
- color.RGBA{0x33, 0x33, 0x00, 0xff},
- color.RGBA{0x33, 0x33, 0x33, 0xff},
- color.RGBA{0x33, 0x33, 0x66, 0xff},
- color.RGBA{0x33, 0x33, 0x99, 0xff},
- color.RGBA{0x33, 0x33, 0xcc, 0xff},
- color.RGBA{0x33, 0x66, 0x00, 0xff},
- color.RGBA{0x33, 0x66, 0x33, 0xff},
- color.RGBA{0x33, 0x66, 0x66, 0xff},
- color.RGBA{0x33, 0x66, 0x99, 0xff},
- color.RGBA{0x33, 0x66, 0xcc, 0xff},
- color.RGBA{0x33, 0x99, 0x00, 0xff},
- color.RGBA{0x33, 0x99, 0x33, 0xff},
- color.RGBA{0x33, 0x99, 0x66, 0xff},
- color.RGBA{0x33, 0x99, 0x99, 0xff},
- color.RGBA{0x33, 0x99, 0xcc, 0xff},
- color.RGBA{0x33, 0xcc, 0x00, 0xff},
- color.RGBA{0x33, 0xcc, 0x33, 0xff},
- color.RGBA{0x33, 0xcc, 0x66, 0xff},
- color.RGBA{0x33, 0xcc, 0x99, 0xff},
- color.RGBA{0x33, 0xcc, 0xcc, 0xff},
- color.RGBA{0x66, 0x00, 0x00, 0xff},
- color.RGBA{0x66, 0x00, 0x33, 0xff},
- color.RGBA{0x66, 0x00, 0x66, 0xff},
- color.RGBA{0x66, 0x00, 0x99, 0xff},
- color.RGBA{0x66, 0x00, 0xcc, 0xff},
- color.RGBA{0x66, 0x33, 0x00, 0xff},
- color.RGBA{0x66, 0x33, 0x33, 0xff},
- color.RGBA{0x66, 0x33, 0x66, 0xff},
- color.RGBA{0x66, 0x33, 0x99, 0xff},
- color.RGBA{0x66, 0x33, 0xcc, 0xff},
- color.RGBA{0x66, 0x66, 0x00, 0xff},
- color.RGBA{0x66, 0x66, 0x33, 0xff},
- color.RGBA{0x66, 0x66, 0x66, 0xff},
- color.RGBA{0x66, 0x66, 0x99, 0xff},
- color.RGBA{0x66, 0x66, 0xcc, 0xff},
- color.RGBA{0x66, 0x99, 0x00, 0xff},
- color.RGBA{0x66, 0x99, 0x33, 0xff},
- color.RGBA{0x66, 0x99, 0x66, 0xff},
- color.RGBA{0x66, 0x99, 0x99, 0xff},
- color.RGBA{0x66, 0x99, 0xcc, 0xff},
- color.RGBA{0x66, 0xcc, 0x00, 0xff},
- color.RGBA{0x66, 0xcc, 0x33, 0xff},
- color.RGBA{0x66, 0xcc, 0x66, 0xff},
- color.RGBA{0x66, 0xcc, 0x99, 0xff},
- color.RGBA{0x66, 0xcc, 0xcc, 0xff},
- color.RGBA{0x99, 0x00, 0x00, 0xff},
- color.RGBA{0x99, 0x00, 0x33, 0xff},
- color.RGBA{0x99, 0x00, 0x66, 0xff},
- color.RGBA{0x99, 0x00, 0x99, 0xff},
- color.RGBA{0x99, 0x00, 0xcc, 0xff},
- color.RGBA{0x99, 0x33, 0x00, 0xff},
- color.RGBA{0x99, 0x33, 0x33, 0xff},
- color.RGBA{0x99, 0x33, 0x66, 0xff},
- color.RGBA{0x99, 0x33, 0x99, 0xff},
- color.RGBA{0x99, 0x33, 0xcc, 0xff},
- color.RGBA{0x99, 0x66, 0x00, 0xff},
- color.RGBA{0x99, 0x66, 0x33, 0xff},
- color.RGBA{0x99, 0x66, 0x66, 0xff},
- color.RGBA{0x99, 0x66, 0x99, 0xff},
- color.RGBA{0x99, 0x66, 0xcc, 0xff},
- color.RGBA{0x99, 0x99, 0x00, 0xff},
- color.RGBA{0x99, 0x99, 0x33, 0xff},
- color.RGBA{0x99, 0x99, 0x66, 0xff},
- color.RGBA{0x99, 0x99, 0x99, 0xff},
- color.RGBA{0x99, 0x99, 0xcc, 0xff},
- color.RGBA{0x99, 0xcc, 0x00, 0xff},
- color.RGBA{0x99, 0xcc, 0x33, 0xff},
- color.RGBA{0x99, 0xcc, 0x66, 0xff},
- color.RGBA{0x99, 0xcc, 0x99, 0xff},
- color.RGBA{0x99, 0xcc, 0xcc, 0xff},
- color.RGBA{0xcc, 0x00, 0x00, 0xff},
- color.RGBA{0xcc, 0x00, 0x33, 0xff},
- color.RGBA{0xcc, 0x00, 0x66, 0xff},
- color.RGBA{0xcc, 0x00, 0x99, 0xff},
- color.RGBA{0xcc, 0x00, 0xcc, 0xff},
- color.RGBA{0xcc, 0x33, 0x00, 0xff},
- color.RGBA{0xcc, 0x33, 0x33, 0xff},
- color.RGBA{0xcc, 0x33, 0x66, 0xff},
- color.RGBA{0xcc, 0x33, 0x99, 0xff},
- color.RGBA{0xcc, 0x33, 0xcc, 0xff},
- color.RGBA{0xcc, 0x66, 0x00, 0xff},
- color.RGBA{0xcc, 0x66, 0x33, 0xff},
- color.RGBA{0xcc, 0x66, 0x66, 0xff},
- color.RGBA{0xcc, 0x66, 0x99, 0xff},
- color.RGBA{0xcc, 0x66, 0xcc, 0xff},
- color.RGBA{0xcc, 0x99, 0x00, 0xff},
- color.RGBA{0xcc, 0x99, 0x33, 0xff},
- color.RGBA{0xcc, 0x99, 0x66, 0xff},
- color.RGBA{0xcc, 0x99, 0x99, 0xff},
- color.RGBA{0xcc, 0x99, 0xcc, 0xff},
- color.RGBA{0xcc, 0xcc, 0x00, 0xff},
- color.RGBA{0xcc, 0xcc, 0x33, 0xff},
- color.RGBA{0xcc, 0xcc, 0x66, 0xff},
- color.RGBA{0xcc, 0xcc, 0x99, 0xff},
- color.RGBA{0xcc, 0xcc, 0xcc, 0xff},
+ // color.RGBA{0x00, 0x00, 0x33, 0xff}, // #000033 - Dark Blue
+ // color.RGBA{0x00, 0x00, 0x66, 0xff}, // #000066 - Deep Blue
+ // color.RGBA{0x00, 0x00, 0x99, 0xff}, // #000099 - Medium Blue
+ color.RGBA{0x00, 0x00, 0xcc, 0xff}, // #0000CC - Bright Blue
+ // color.RGBA{0x00, 0x33, 0x00, 0xff}, // #003300 - Dark Green
+ // color.RGBA{0x00, 0x33, 0x33, 0xff}, // #003333 - Greenish Blue
+ // color.RGBA{0x00, 0x33, 0x66, 0xff}, // #003366 - Dark Teal
+ color.RGBA{0x00, 0x33, 0x99, 0xff}, // #003399 - Teal
+ color.RGBA{0x00, 0x33, 0xcc, 0xff}, // #0033CC - Bright Teal
+ color.RGBA{0x00, 0x66, 0x00, 0xff}, // #006600 - Darker Green
+ color.RGBA{0x00, 0x66, 0x33, 0xff}, // #006633 - Greenish
+ color.RGBA{0x00, 0x66, 0x66, 0xff}, // #006666 - Soft Teal
+ color.RGBA{0x00, 0x66, 0x99, 0xff}, // #006699 - Light Teal
+ color.RGBA{0x00, 0x66, 0xcc, 0xff}, // #0066CC - Cyan
+ color.RGBA{0x00, 0x99, 0x00, 0xff}, // #009900 - Medium Green
+ color.RGBA{0x00, 0x99, 0x33, 0xff}, // #009933 - Bright Green
+ color.RGBA{0x00, 0x99, 0x66, 0xff}, // #009966 - Sea Green
+ color.RGBA{0x00, 0x99, 0x99, 0xff}, // #009999 - Dark Cyan
+ color.RGBA{0x00, 0x99, 0xcc, 0xff}, // #0099CC - Bright Cyan
+ color.RGBA{0x00, 0xcc, 0x00, 0xff}, // #00CC00 - Vivid Green
+ color.RGBA{0x00, 0xcc, 0x33, 0xff}, // #00CC33 - Bright Turquoise
+ color.RGBA{0x00, 0xcc, 0x66, 0xff}, // #00CC66 - Light Teal
+ color.RGBA{0x00, 0xcc, 0x99, 0xff}, // #00CC99 - Soft Cyan
+ color.RGBA{0x00, 0xcc, 0xcc, 0xff}, // #00CCCC - Cyan
+ // color.RGBA{0x33, 0x00, 0x00, 0xff}, // #330000 - Dark Red
+ // color.RGBA{0x33, 0x00, 0x33, 0xff}, // #330033 - Dark Purple
+ // color.RGBA{0x33, 0x00, 0x66, 0xff}, // #330066 - Purple
+ color.RGBA{0x33, 0x00, 0x99, 0xff}, // #330099 - Violet
+ color.RGBA{0x33, 0x00, 0xcc, 0xff}, // #3300CC - Bright Purple
+ // color.RGBA{0x33, 0x33, 0x00, 0xff}, // #333300 - Dark Yellow
+ // color.RGBA{0x33, 0x33, 0x33, 0xff}, // #333333 - Dark Gray
+ // color.RGBA{0x33, 0x33, 0x66, 0xff}, // #333366 - Blue Gray
+ color.RGBA{0x33, 0x33, 0x99, 0xff}, // #333399 - Slate Blue
+ color.RGBA{0x33, 0x33, 0xcc, 0xff}, // #3333CC - Light Slate Blue
+ color.RGBA{0x33, 0x66, 0x00, 0xff}, // #336600 - Olive Green
+ color.RGBA{0x33, 0x66, 0x33, 0xff}, // #336633 - Forest Green
+ color.RGBA{0x33, 0x66, 0x66, 0xff}, // #336666 - Teal
+ color.RGBA{0x33, 0x66, 0x99, 0xff}, // #336699 - Dark Aqua
+ color.RGBA{0x33, 0x66, 0xcc, 0xff}, // #3366CC - Aqua
+ color.RGBA{0x33, 0x99, 0x00, 0xff}, // #339900 - Bright Green
+ color.RGBA{0x33, 0x99, 0x33, 0xff}, // #339933 - Lime Green
+ color.RGBA{0x33, 0x99, 0x66, 0xff}, // #339966 - Light Lime
+ color.RGBA{0x33, 0x99, 0x99, 0xff}, // #339999 - Light Aqua
+ color.RGBA{0x33, 0x99, 0xcc, 0xff}, // #3399CC - Bright Aqua
+ color.RGBA{0x33, 0xcc, 0x00, 0xff}, // #33CC00 - Spring Green
+ color.RGBA{0x33, 0xcc, 0x33, 0xff}, // #33CC33 - Bright Olive
+ color.RGBA{0x33, 0xcc, 0x66, 0xff}, // #33CC66 - Pale Green
+ color.RGBA{0x33, 0xcc, 0x99, 0xff}, // #33CC99 - Light Spring Green
+ color.RGBA{0x33, 0xcc, 0xcc, 0xff}, // #33CCCC - Aqua
+ color.RGBA{0x66, 0x00, 0x00, 0xff}, // #660000 - Dark Maroon
+ color.RGBA{0x66, 0x00, 0x33, 0xff}, // #660033 - Dark Burgundy
+ color.RGBA{0x66, 0x00, 0x66, 0xff}, // #660066 - Deep Purple
+ color.RGBA{0x66, 0x00, 0x99, 0xff}, // #660099 - Indigo
+ color.RGBA{0x66, 0x00, 0xcc, 0xff}, // #6600CC - Bright Indigo
+ color.RGBA{0x66, 0x33, 0x00, 0xff}, // #663300 - Dark Brown
+ color.RGBA{0x66, 0x33, 0x33, 0xff}, // #663333 - Brownish
+ color.RGBA{0x66, 0x33, 0x66, 0xff}, // #663366 - Dark Violet
+ color.RGBA{0x66, 0x33, 0x99, 0xff}, // #663399 - Dark Lavender
+ color.RGBA{0x66, 0x33, 0xcc, 0xff}, // #6633CC - Bright Lavender
+ // color.RGBA{0x66, 0x66, 0x00, 0xff}, // #666600 - Olive
+ // color.RGBA{0x66, 0x66, 0x33, 0xff}, // #666633 - Khaki
+ color.RGBA{0x66, 0x66, 0x66, 0xff}, // #666666 - Gray
+ color.RGBA{0x66, 0x66, 0x99, 0xff}, // #666699 - Grayish Blue
+ color.RGBA{0x66, 0x66, 0xcc, 0xff}, // #6666CC - Light Blue Gray
+ color.RGBA{0x66, 0x99, 0x00, 0xff}, // #669900 - Yellow Green
+ color.RGBA{0x66, 0x99, 0x33, 0xff}, // #669933 - Medium Olive
+ color.RGBA{0x66, 0x99, 0x66, 0xff}, // #669966 - Olive Drab
+ color.RGBA{0x66, 0x99, 0x99, 0xff}, // #669999 - Dark Sea Green
+ color.RGBA{0x66, 0x99, 0xcc, 0xff}, // #6699CC - Soft Aqua
+ color.RGBA{0x66, 0xcc, 0x00, 0xff}, // #66CC00 - Bright Greeny Yellow
+ color.RGBA{0x66, 0xcc, 0x33, 0xff}, // #66CC33 - Light Frog Green
+ color.RGBA{0x66, 0xcc, 0x66, 0xff}, // #66CC66 - Light Olive Green
+ color.RGBA{0x66, 0xcc, 0x99, 0xff}, // #66CC99 - Light Sage
+ color.RGBA{0x66, 0xcc, 0xcc, 0xff}, // #66CCCC - Light Cyan
+ color.RGBA{0x99, 0x00, 0x00, 0xff}, // #990000 - Dark Crimson
+ color.RGBA{0x99, 0x00, 0x33, 0xff}, // #990033 - Purple Red
+ color.RGBA{0x99, 0x00, 0x66, 0xff}, // #990066 - Dark Fuchsia
+ color.RGBA{0x99, 0x00, 0x99, 0xff}, // #990099 - Dark Magenta
+ color.RGBA{0x99, 0x00, 0xcc, 0xff}, // #9900CC - Deep Magenta
+ color.RGBA{0x99, 0x33, 0x00, 0xff}, // #993300 - Dark Rust
+ color.RGBA{0x99, 0x33, 0x33, 0xff}, // #993333 - Reddish Brown
+ color.RGBA{0x99, 0x33, 0x66, 0xff}, // #993366 - Maroon
+ color.RGBA{0x99, 0x33, 0x99, 0xff}, // #993399 - Dark Pink
+ color.RGBA{0x99, 0x33, 0xcc, 0xff}, // #9933CC - Bright Magenta
+ // color.RGBA{0x99, 0x66, 0x00, 0xff}, // #996600 - Olive Brown
+ // color.RGBA{0x99, 0x66, 0x33, 0xff}, // #996633 - Dark Khaki
+ color.RGBA{0x99, 0x66, 0x66, 0xff}, // #996666 - Brown Gray
+ color.RGBA{0x99, 0x66, 0x99, 0xff}, // #996699 - Dusty Pink
+ color.RGBA{0x99, 0x66, 0xcc, 0xff}, // #9966CC - Lavender Gray
+ // color.RGBA{0x99, 0x99, 0x00, 0xff}, // #999900 - Olive Drab Green
+ // color.RGBA{0x99, 0x99, 0x33, 0xff}, // #999933 - Medium Olive Green
+ // color.RGBA{0x99, 0x99, 0x66, 0xff}, // #999966 - Pale Olive
+ color.RGBA{0x99, 0x99, 0x99, 0xff}, // #999999 - Light Gray
+ color.RGBA{0x99, 0x99, 0xcc, 0xff}, // #9999CC - Light Steel Blue
+ color.RGBA{0x99, 0xcc, 0x00, 0xff}, // #99CC00 - Chartreuse
+ color.RGBA{0x99, 0xcc, 0x33, 0xff}, // #99CC33 - Light Lime Green
+ color.RGBA{0x99, 0xcc, 0x66, 0xff}, // #99CC66 - Soft Lime
+ color.RGBA{0x99, 0xcc, 0x99, 0xff}, // #99CC99 - Light Seafoam
+ color.RGBA{0x99, 0xcc, 0xcc, 0xff}, // #99CCCC - Pale Cyan
+ color.RGBA{0xcc, 0x00, 0x00, 0xff}, // #CC0000 - Bright Red
+ color.RGBA{0xcc, 0x00, 0x33, 0xff}, // #CC0033 - Ruby Red
+ color.RGBA{0xcc, 0x00, 0x66, 0xff}, // #CC0066 - Deep Pink
+ color.RGBA{0xcc, 0x00, 0x99, 0xff}, // #CC0099 - Fuchsia
+ color.RGBA{0xcc, 0x00, 0xcc, 0xff}, // #CC00CC - Magenta
+ color.RGBA{0xcc, 0x33, 0x00, 0xff}, // #CC3300 - Dark Tomato
+ color.RGBA{0xcc, 0x33, 0x33, 0xff}, // #CC3333 - Crimson
+ color.RGBA{0xcc, 0x33, 0x66, 0xff}, // #CC3366 - Dark Salmon
+ color.RGBA{0xcc, 0x33, 0x99, 0xff}, // #CC3399 - Hot Pink
+ color.RGBA{0xcc, 0x33, 0xcc, 0xff}, // #CC33CC - Bright Orchid
+ color.RGBA{0xcc, 0x66, 0x00, 0xff}, // #CC6600 - Burnt Orange
+ color.RGBA{0xcc, 0x66, 0x33, 0xff}, // #CC6633 - Orange
+ color.RGBA{0xcc, 0x66, 0x66, 0xff}, // #CC6666 - Light Coral
+ color.RGBA{0xcc, 0x66, 0x99, 0xff}, // #CC6699 - Light Pink
+ color.RGBA{0xcc, 0x66, 0xcc, 0xff}, // #CC66CC - Medium Violet Red
+ // color.RGBA{0xcc, 0x99, 0x00, 0xff}, // #CC9900 - Goldenrod
+ // color.RGBA{0xcc, 0x99, 0x33, 0xff}, // #CC9933 - Wheat
+ // color.RGBA{0xcc, 0x99, 0x66, 0xff}, // #CC9966 - Khaki
+ color.RGBA{0xcc, 0x99, 0x99, 0xff}, // #CC9999 - Rosy Brown
+ color.RGBA{0xcc, 0x99, 0xcc, 0xff}, // #CC99CC - Thistle
+ color.RGBA{0xcc, 0xcc, 0x00, 0xff}, // #CCCC00 - Olive
+ color.RGBA{0xcc, 0xcc, 0x33, 0xff}, // #CCCC33 - Pale Olive
+ color.RGBA{0xcc, 0xcc, 0x66, 0xff}, // #CCCC66 - Pale Goldenrod
+ color.RGBA{0xcc, 0xcc, 0x99, 0xff}, // #CCCC99 - Light Khaki
+ color.RGBA{0xcc, 0xcc, 0xcc, 0xff}, // #CCCCCC - Light Gray
}
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 6da0eea91ce76..99c71072b3a27 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -17,20 +17,22 @@ template=Шаблон
language=Язык
notifications=Уведомления
active_stopwatch=Трекер рабочего времени
+tracked_time_summary=Результат отслеживаемого времени на основе фильтров списка задач
create_new=Создать…
user_profile_and_more=Профиль и настройки...
signed_in_as=Вы вошли как
enable_javascript=Для этого сайта требуется поддержка JavaScript.
toc=Содержание
licenses=Лицензии
-return_to_gitea=Вернуться к Gitea
+return_to_gitea=Вернуться в Gitea
+more_items=Ещё
username=Имя пользователя
email=Адрес электронной почты
password=Пароль
access_token=Токен доступа
re_type=Подтвердить пароль
-captcha=CAPTCHA
+captcha=КАПЧА
twofa=Двухфакторная аутентификация
twofa_scratch=Двухфакторный scratch-код
passcode=Код
@@ -42,6 +44,7 @@ webauthn_use_twofa=Используйте двухфакторный код с
webauthn_error=Не удалось прочитать ваш ключ безопасности.
webauthn_unsupported_browser=Ваш браузер в настоящее время не поддерживает WebAuthn.
webauthn_error_unknown=Произошла неизвестная ошибка. Повторите попытку.
+webauthn_error_insecure=WebAuthn поддерживает только защищенные соединения. Для тестирования по HTTP можно использовать origin "localhost" или "127.0.0.1".
webauthn_error_unable_to_process=Сервер не смог обработать ваш запрос.
webauthn_error_duplicated=Данный ключ безопасности не разрешен для этого запроса. Пожалуйста, убедитесь, что ключ не регистрировался ранее.
webauthn_error_empty=Необходимо задать имя для этого ключа.
@@ -90,9 +93,11 @@ remove=Удалить
remove_all=Удалить все
remove_label_str=Удалить элемент «%s»
edit=Изменить
+view=Просмотр
+test=Проверить
enabled=Включено
-disabled=Отключен
+disabled=Отключено
locked=Заблокировано
copy=Скопировать
@@ -100,17 +105,23 @@ copy_url=Скопировать URL
copy_hash=Копировать хеш
copy_content=Скопировать содержимое
copy_branch=Скопировать имя ветки
+copy_path=Скопировать путь
copy_success=Скопировано!
copy_error=Ошибка при копировании
copy_type_unsupported=Невозможно скопировать файл этого типа
+copy_filename=Скопировать имя файла
write=Редактирование
preview=Предпросмотр
loading=Загрузка…
+files=Файлы
error=Ошибка
error404=Либо страница, которую вы пытаетесь открыть, не существует, либо у вас недостаточно прав для ее просмотра.
+error503=Сервер не смог обработать ваш запрос. Пожалуйста, попробуйте позже.
go_back=Назад
+invalid_data=Неверные данные: %v
+nothing_has_been_changed=Ничего не изменилось.
never=Никогда
unknown=Неизвестно
@@ -121,8 +132,10 @@ pin=Закрепить
unpin=Открепить
artifacts=Артефакты
+expired=Истек срок действия
+confirm_delete_artifact=Вы уверены, что хотите удалить артефакт '%s' ?
-archived=Архивировано
+archived=Заархивировано
concept_system_global=Глобально
concept_user_individual=Индивидуально
@@ -138,15 +151,53 @@ confirm_delete_selected=Вы уверены, что хотите удалить
name=Название
value=Значение
+readme=Readme
filter=Фильтр
-filter.is_archived=Архивировано
+filter.clear=Очистить фильтр
+filter.is_archived=Заархивировано
+filter.not_archived=Не заархивировано
+filter.is_fork=Ответвление
+filter.not_fork=Нет ответвлений
+filter.is_mirror=Зазеркалировано
+filter.not_mirror=Без зеркал
filter.is_template=Шаблон
+filter.not_template=Не шаблон
filter.public=Публичный
-filter.private=Личный
+filter.private=Приватный
+no_results_found=Результатов не найдено.
+internal_error_skipped=Произошла внутренняя ошибка, но она была пропущена: %s
[search]
+search=Поиск...
+type_tooltip=Тип поиска
+fuzzy=Плавное
+fuzzy_tooltip=Включать результаты, которые не полностью соответствуют поисковому запросу
+words=Слова
+words_tooltip=Включает только результаты, содержащие все слова из поискового запроса
+regexp=Регулярное выражение
+regexp_tooltip=Ищет по шаблону регулярного выражения
+exact=Точное
+exact_tooltip=Ищет точное совпадение с поисковым запросом, включая все символы и пробелы
+repo_kind=Поиск репозитория...
+user_kind=Поиск пользователей...
+org_kind=Поиск организаций…
+team_kind=Поиск команд...
+code_kind=Поиск кода…
+code_search_unavailable=Поиск по коду сейчас недоступен. Пожалуйста, свяжитесь с администратором сайта.
+code_search_by_git_grep=Текущие результаты получены через "git grep". Если администратор сайта включит индексацию репозитория, результаты могут быть точнее.
+package_kind=Поиск пакетов…
+project_kind=Поиск проектов…
+branch_kind=Поиск веток…
+tag_kind=Поиск тегов…
+tag_tooltip=Поиск по совпадающим тегам. Используйте «%» для сопоставления с любой последовательностью чисел.
+commit_kind=Поиск коммитов…
+runner_kind=Поиск сборщиков…
+no_results=Нет совпадающих результатов.
+issue_kind=Поиск задач…
+pull_kind=Поиск запросов на слияние…
+keyword_search_unavailable=Поиск по ключевым словам в настоящее время недоступен. Пожалуйста, свяжитесь с администратором сайта.
[aria]
navbar=Панель навигации
@@ -170,7 +221,10 @@ buttons.link.tooltip=Добавить ссылку
buttons.list.unordered.tooltip=Добавить маркированный список
buttons.list.ordered.tooltip=Добавить нумерованный список
buttons.list.task.tooltip=Добавить список заданий
+buttons.table.add.tooltip=Добавить таблицу
buttons.table.add.insert=Добавить
+buttons.table.rows=Строки
+buttons.table.cols=Колонки
buttons.mention.tooltip=Упомянуть пользователя или команду
buttons.ref.tooltip=Сослаться на задачу или запрос на слияние
buttons.switch_to_legacy.tooltip=Использовать старый редактор
@@ -178,24 +232,31 @@ buttons.enable_monospace_font=Включить моноширинный шриф
buttons.disable_monospace_font=Выключить моноширинный шрифт
[filter]
+string.asc=А–Я
+string.desc=Я–А
[error]
occurred=Произошла ошибка
+report_message="Если вы считаете, что это ошибка Gitea, пожалуйста, поищите проблему на GitHub или создайте новую при необходимости."
not_found=Цель не найдена.
network_error=Ошибка сети
[startpage]
app_desc=Удобный сервис собственного хостинга репозиториев Git
install=Простой в установке
+install_desc="Просто запустите исполняемый файл для вашей платформы, разверните через Docker, или установите с помощью менеджера пакетов."
platform=Кроссплатформенный
+platform_desc="Gitea работает на любой платформе, поддерживаемой Go: Windows, macOS, Linux, ARM и т. д. Выбирайте, что вам больше нравится!"
lightweight=Легковесный
lightweight_desc=Gitea имеет низкие системные требования и может работать на недорогом Raspberry Pi. Экономьте энергию вашей машины!
license=Открытый исходный код
+license_desc="Получите %[2]s! Присоединяйтесь к нам, внося свой вклад в развитие проекта. Не стесняйтесь стать контрибьютором!"
[install]
install=Установка
+installing_desc=Идёт установка, подождите…
title=Начальная конфигурация
-docker_helper=Если вы запускаете Gitea внутри Docker, пожалуйста внимательно прочтите документацию перед тем, как изменить любые настройки.
+docker_helper="Если вы запускаете Gitea внутри Docker, пожалуйста внимательно прочтите документацию перед тем, как изменить любые настройки."
require_db_desc=Gitea требует MySQL, PostgreSQL, MSSQL, SQLite3 или TiDB (через протокол MySQL).
db_title=Настройки базы данных
db_type=Тип базы данных
@@ -210,10 +271,16 @@ path=Путь
sqlite_helper=Путь к файлу базы данных SQLite3.
Введите абсолютный путь, если вы запускаете Gitea как службу.
reinstall_error=Вы пытаетесь произвести установку в уже существующую базу данных Gitea
reinstall_confirm_message=Переустановка в уже существующую базу данных Gitea может вызвать несколько проблем. В большинстве случаев вы должны использовать существующий "app.ini" для запуска Gitea. Если вы понимаете, что вы делаете, подтвердите:
+reinstall_confirm_check_1=Данные, зашифрованные ключом SECRET_KEY в app.ini, могут быть потеряны: пользователи могут не иметь возможности войти с помощью 2FA/OTP и зеркала могут не работать корректно. Проверив это поле, вы подтверждаете, что текущий файл app.ini содержит правильный SECRET_KEY.
+reinstall_confirm_check_2=Репозитории и настройки могут нуждаться в повторной синхронизации. Отметьте этот флажок, если вы синхронизируете хуки репозиториев и authorized_keys вручную. Вы подтверждаете, что настройки репозиториев и зеркал верны.
reinstall_confirm_check_3=Вы подтверждаете, что полностью уверены, что этот Gitea запущен при коренном расположении app.ini и вы уверены, что вам нужна переустановка. Вы подтверждаете, что соглашаетесь с указанными выше рисками.
err_empty_db_path=Путь к базе данных SQLite3 не может быть пустым.
no_admin_and_disable_registration=Вы не можете отключить регистрацию до создания учётной записи администратора.
err_empty_admin_password=Пароль администратора не может быть пустым.
+err_empty_admin_email=Адрес электронной почты администратора не может быть пустым.
+err_admin_name_is_reserved=Имя администратора недействительно. Имя зарезервировано.
+err_admin_name_pattern_not_allowed=Неверное имя администратора, имя попадает под зарезервированный шаблон.
+err_admin_name_is_invalid=Имя администратора недействительно
general_title=Основные настройки
app_name=Название сайта
@@ -229,6 +296,7 @@ domain_helper=Домен или адрес хоста для сервера.
ssh_port=Порт SSH сервера
ssh_port_helper=Номер порта, который использует SSH сервер. Оставьте пустым, чтобы отключить SSH.
http_port=Gitea HTTP порт
+http_port_helper=Порт, на котором будет работать веб-сервер Gitea.
app_url=Базовый URL Gitea
app_url_helper=Этот параметр влияет на URL для клонирования по HTTP/HTTPS и на некоторые уведомления по электронной почте.
log_root_path=Путь к журналу
@@ -236,9 +304,10 @@ log_root_path_helper=Файлы журнала будут записыватьс
optional_title=Расширенные настройки
email_title=Настройки электронной почты
-smtp_addr=Узел SMTP
-smtp_port=SMTP-порт
-smtp_from=Отправить эл. почту как
+smtp_addr=Хост SMTP
+smtp_port=Порт SMTP
+smtp_from=Отправить электронную почту как
+smtp_from_invalid=Недопустимый адрес отправителя сообщения
smtp_from_helper=Адрес электронной почты, который будет использоваться Gitea. Введите обычный адрес электронной почты или используйте формат "Имя" .
mailer_user=SMTP логин
mailer_password=SMTP пароль
@@ -258,7 +327,7 @@ openid_signin=Включить вход через OpenID
openid_signin_popup=Включить вход через OpenID.
openid_signup=Включить регистрацию через OpenID
openid_signup_popup=Включить саморегистрацию OpenID.
-enable_captcha=Включить CAPTCHA при регистрации
+enable_captcha=Включить КАПЧУ при регистрации
enable_captcha_popup=Запрашивать капчу при регистрации пользователя.
require_sign_in_view=Требовать авторизации для просмотра страниц
require_sign_in_view_popup=Ограничить доступ к странице только вошедшими пользователями. Посетители увидят лишь страницы входа и регистрации.
@@ -267,7 +336,7 @@ admin_title=Настройки учётной записи администра
admin_name=Логин администратора
admin_password=Пароль
confirm_password=Подтвердить пароль
-admin_email=Адрес эл. почты
+admin_email=Адрес электронной почты
install_btn_confirm=Установить Gitea
test_git_failed=Не удалось проверить 'git' команду: %v
sqlite3_not_available=Эта версия Gitea не поддерживает SQLite3. Пожалуйста, загрузите официальную бинарную версию из %s (не 'go build' версия).
@@ -291,13 +360,16 @@ no_reply_address=Скрытый почтовый домен
no_reply_address_helper=Доменное имя для пользователей со скрытым адресом электронной почты. Например, имя пользователя 'joe' будет зарегистрировано в Git как 'joe@noreply.example.org' если скрытый домен электронной почты установлен как 'noreply.example.org'.
password_algorithm=Алгоритм хеширования пароля
invalid_password_algorithm=Некорректный алгоритм хеширования пароля
+password_algorithm_helper=Задайте алгоритм хеширования паролей. Алгоритмы имеют различные требования и стойкость. Алгоритм argon2 довольно безопасен, но он использует много памяти и может не подходить для слабых систем.
enable_update_checker=Включить проверку обновлений
enable_update_checker_helper=Периодически проверяет наличие новых версий, подключаясь к gitea.io.
env_config_keys=Настройка окружения
env_config_keys_prompt=Следующие переменные окружения также будут применены к вашему конфигурационному файлу:
+config_write_file_prompt=Эти параметры конфигурации будут записаны в: %s
[home]
-uname_holder=Имя пользователя / Адрес эл. почты
+nav_menu=Меню навигации
+uname_holder=Имя пользователя / Адрес электронной почты
password_holder=Пароль
switch_dashboard_context=Переключить контекст панели управления
my_repos=Репозитории
@@ -310,9 +382,9 @@ filter=Другие фильтры
filter_by_team_repositories=Фильтровать по репозиториям команды
feed_of=Лента «%s»
-show_archived=Архивировано
-show_both_archived_unarchived=Показаны архивированные и разархивированные
-show_only_archived=Показаны только архивированные
+show_archived=Заархивировано
+show_both_archived_unarchived=Показаны заархивированные и разархивированные
+show_only_archived=Показаны только заархивированные
show_only_unarchived=Показаны только разархивированные
show_private=Приватный
@@ -322,6 +394,12 @@ show_only_public=Показаны только публичные
issues.in_your_repos=В ваших репозиториях
+guide_title=Активность отсутствует
+guide_desc=В настоящее время вы не подписаны ни на репозитории ни на пользователей, поэтому контента для отображения нет. Возможно вас заинтересуют репозитории или пользователи из приведенных ниже ссылок.
+explore_repos=Обзор репозиториев
+explore_users=Обзор пользователей
+empty_org=У вас пока нет организаций.
+empty_repo=У вас пока нет репозиториев.
[explore]
repos=Репозитории
@@ -331,10 +409,12 @@ go_to=Перейти к
code=Код
code_last_indexed_at=Последний проиндексированный %s
relevant_repositories_tooltip=Репозитории, являющиеся ответвлениями или не имеющие ни темы, ни значка, ни описания, скрыты.
-relevant_repositories=Показаны только релевантные репозитории, показать результаты без фильтрации.
+relevant_repositories="Показаны только релевантные репозитории, показать результаты без фильтрации."
[auth]
create_new_account=Регистрация аккаунта
+already_have_account=Уже есть аккаунт?
+sign_in_now=Войти сейчас!
disable_register_prompt=Извините, возможность регистрации отключена. Пожалуйста, свяжитесь с администратором сайта.
disable_register_mail=Подтверждение регистрации по электронной почте отключено.
manual_activation_only=Обратитесь к администратору сайта для завершения активации.
@@ -342,20 +422,27 @@ remember_me=Запомнить это устройство
remember_me.compromised=Токен входа более не действителен, что может указывать на компрометацию учётной записи. Пожалуйста, проверьте свою учётную запись на необычные действия.
forgot_password_title=Восстановить пароль
forgot_password=Забыли пароль?
+need_account=Нужен аккаунт?
+sign_up_tip=Вы регистрируете первый аккаунт в системе, который будет обладать правами администратора. Пожалуйста, обязательно запомните ваше имя пользователя и пароль. Если вы забудете имя пользователя или пароль, обратитесь к документации Gitea для восстановления доступа.
+sign_up_now=Зарегистрироваться
sign_up_successful=Учётная запись успешно создана. Добро пожаловать!
+confirmation_mail_sent_prompt_ex=Новое письмо с подтверждением было отправлено на адрес %s. Пожалуйста, проверьте вашу почту в течение %s, чтобы завершить процесс регистрации. Если адрес электронной почты для регистрации указан неверно, вы можете войти и изменить его.
must_change_password=Обновить пароль
allow_password_change=Требовать смену пароля пользователем (рекомендуется)
reset_password_mail_sent_prompt=Письмо с подтверждением отправлено на %s. Пожалуйста, проверьте входящую почту в течение %s, чтобы завершить процесс восстановления аккаунта.
active_your_account=Активируйте свой аккаунт
account_activated=Учётная запись активирована
+prohibit_login=Вход запрещён
+prohibit_login_desc=Вашему аккаунту запрещен вход в систему. Пожалуйста, свяжитесь с администратором сайта.
resent_limit_prompt=Извините, вы уже запросили активацию по электронной почте недавно. Пожалуйста, подождите 3 минуты, а затем повторите попытку.
has_unconfirmed_mail=Здравствуйте, %s! У вас есть неподтвержденный адрес электронной почты (%s). Если вам не приходило письмо с подтверждением или нужно выслать новое письмо, нажмите на кнопку ниже.
+change_unconfirmed_mail_address=Если адрес электронной почты для регистрации указан неверно, вы можете изменить его здесь и отправить новое письмо с подтверждением.
resend_mail=Нажмите здесь, чтобы переотправить активационное письмо
email_not_associate=Этот адрес электронной почты не связан ни с одной учётной записью.
send_reset_mail=Отправить письмо для восстановления аккаунта
reset_password=Восстановление аккаунта
invalid_code=Код подтверждения недействителен или истёк.
-invalid_code_forgot_password=Ваш код подтверждения недействителен или истек. Нажмите здесь для начала новой сессии.
+invalid_code_forgot_password="Ваш код подтверждения недействителен или истек. Нажмите здесь для начала новой сессии."
invalid_password=Ваш пароль не совпадает с паролем, который был использован для создания учётной записи.
reset_password_helper=Восстановить аккаунт
reset_password_wrong_user=Вы вошли как %s, но ссылка для восстановления учётной записи предназначена для %s
@@ -367,6 +454,7 @@ use_scratch_code=Использовать scratch-код
twofa_scratch_used=Вы использовали scratch-код. Вы были перенаправлены на страницу настроек для генерации нового кода или отключения двуфакторной аутентификации.
twofa_passcode_incorrect=Ваш пароль неверен. Если вы потеряли устройство, используйте ваш scratch-код.
twofa_scratch_token_incorrect=Неверный scratch-код.
+twofa_required=Для доступа к репозиториям необходимо настроить двухфакторную аутентификацию или попробуйте войти снова.
login_userpass=Вход
login_openid=OpenID
oauth_signup_tab=Зарегистрировать новый аккаунт
@@ -375,22 +463,33 @@ oauth_signup_submit=Полная учётная запись
oauth_signin_tab=Ссылка на существующую учётную запись
oauth_signin_title=Войдите, чтобы авторизовать связанную учётную запись
oauth_signin_submit=Привязать учётную запись
+oauth.signin.error.general=Произошла ошибка при обработке запроса авторизации: %s. Если ошибка повторяется, пожалуйста, свяжитесь с администратором сайта.
oauth.signin.error.access_denied=Запрос на авторизацию был отклонен.
oauth.signin.error.temporarily_unavailable=Произошла ошибка авторизации, так как сервер аутентификации временно недоступен. Пожалуйста, повторите попытку позже.
+oauth_callback_unable_auto_reg=Автоматическая регистрация включена, но OAuth2-провайдер %[1]s вернул отсутствующие поля: %[2]s, невозможно создать аккаунт автоматически. Пожалуйста, создайте или свяжите аккаунт вручную или свяжитесь с администратором сайта.
openid_connect_submit=Подключить
openid_connect_title=Подключение к существующей учётной записи
openid_connect_desc=Выбранный OpenID URI неизвестен. Свяжите с новой учётной записью здесь.
openid_register_title=Создать новый аккаунт
openid_register_desc=Выбранный OpenID URI неизвестен. Свяжите с новой учётной записью здесь.
openid_signin_desc=Введите ваш OpenID URI. Например: alice.openid.example.org или https://openid.example.org/alice.
+disable_forgot_password_mail=Восстановление аккаунта отключено, так как не настроен адрес электронной почты. Пожалуйста, свяжитесь с администратором сайта.
+disable_forgot_password_mail_admin=Восстановление аккаунта доступно только при наличии настроенного адреса электронной почты.
email_domain_blacklisted=С данным адресом электронной почты регистрация невозможна.
authorize_application=Авторизация приложения
authorize_redirect_notice=Вы будете перенаправлены на %s, если вы авторизуете это приложение.
authorize_application_created_by=Это приложение было создано %s.
+authorize_application_description=Если вы предоставите доступ, приложение сможет читать и изменять всю информацию вашего аккаунта, включая приватные репозитории и организации.
+authorize_application_with_scopes=С областью видимости: %s
authorize_title=Разрешить «%s» доступ к вашей учётной записи?
authorization_failed=Ошибка авторизации
+authorization_failed_desc=Авторизация не удалась из-за недопустимого запроса. Пожалуйста, свяжитесь с разработчиком приложения, которое вы пытались авторизовать.
sspi_auth_failed=Аутентификация SSPI не удалась
+password_pwned="Выбранный вами пароль находится в списке скомпрометированных паролей, ранее раскрытых в утечках данных. Пожалуйста, попробуйте другой пароль и рассмотрите возможность его замены и в других сервисах."
password_pwned_err=Не удалось завершить запрос к HaveIBeenPwned
+last_admin=Вы не можете удалить последнего администратора. Должен быть хотя бы один администратор.
+signin_passkey=Войти с помощью ключа доступа
+back_to_sign_in=Вернуться на страницу входа
[mail]
view_it_on=Посмотреть на %s
@@ -407,8 +506,11 @@ activate_email=Подтвердите адрес своей электронно
activate_email.title=%s, пожалуйста, подтвердите ваш адрес электронной почты
activate_email.text=Пожалуйста, перейдите по ссылке, чтобы подтвердить ваш адрес электронной почты в течение %s:
+register_notify=Добро пожаловать в %s
register_notify.title=%[1]s, добро пожаловать в %[2]s
-register_notify.text_3=Если эта учётная запись была создана для вас, пожалуйста, сначала установите пароль.
+register_notify.text_1=Это письмо подтверждения вашей регистрации в %s!
+register_notify.text_2=Теперь вы можете войти, используя имя пользователя: %s.
+register_notify.text_3="Если эта учётная запись была создана для вас, пожалуйста, сначала установите пароль."
reset_password=Восстановить учётную запись
reset_password.title=%s, вы запросили восстановление вашей учётной записи
@@ -423,15 +525,15 @@ issue.x_mentioned_you=@%s упомянул(а) вас:
issue.action.force_push=%[1]s форсировал(а) отправку в %[2]s изменений %[4]s вместо %[3]s.
issue.action.push_1=@%[1]s отправил(а) %[3]d изменение в %[2]s
issue.action.push_n=@%[1]s отправил(а) %[3]d изменений в %[2]s
-issue.action.close=@%[1]s закрыл(а) #%[2]d.
-issue.action.reopen=@%[1]s переоткрыл(а) #%[2]d.
-issue.action.merge=@%[1]s слил(а) #%[2]d в %[3]s.
+issue.action.close="@%[1]s закрыл(а) #%[2]d."
+issue.action.reopen="@%[1]s переоткрыл(а) #%[2]d."
+issue.action.merge="@%[1]s слил(а) #%[2]d в %[3]s."
issue.action.approve=@%[1]s одобрил(а) этот запрос на слияние.
issue.action.reject=@%[1]s запросил(а) изменения в этом запросе на слияние.
issue.action.review=@%[1]s прокомментировал(а) этот запрос на слияние.
issue.action.review_dismissed=@%[1]s отклонил(а) последний отзыв с %[2]s для этого запроса на слияние.
issue.action.ready_for_review=@%[1]s отметил(а) этот запрос на слияние как готовый к рассмотрению.
-issue.action.new=@%[1]s создал(а) #%[2]d.
+issue.action.new="@%[1]s создал(а) #%[2]d."
issue.in_tree_path=В %s:
release.new.subject=%s в %s выпущено
@@ -445,10 +547,18 @@ release.download.targz=Исходный код (TAR.GZ)
repo.transfer.subject_to=%s хочет передать «%s» в %s
repo.transfer.subject_to_you=%s хочет передать «%s» вам
repo.transfer.to_you=вам
+repo.transfer.body=Для принятия или отклонения перейдите по ссылке %s или просто проигнорируйте это сообщение.
repo.collaborator.added.subject=%s добавил(а) вас в %s
repo.collaborator.added.text=Вы были добавлены в качестве соавтора репозитория:
+repo.actions.run.failed=Ошибка выполнения
+repo.actions.run.succeeded=Выполнено успешно
+repo.actions.run.cancelled=Выполнение отменено
+repo.actions.jobs.all_succeeded=Все задания успешно выполнены
+repo.actions.jobs.all_failed=Все задания завершились неудачно
+repo.actions.jobs.some_not_successful=Некоторые задания завершились неудачно
+repo.actions.jobs.all_cancelled=Все задания отменены
team_invite.subject=%[1]s приглашает вас присоединиться к организации %[2]s
team_invite.text_1=%[1]s приглашает вас присоединиться к команде %[2]s в организации %[3]s.
@@ -465,7 +575,7 @@ modify=Изменить
[form]
UserName=Пользователь
RepoName=Название репозитория
-Email=Адрес эл. почты
+Email=Адрес электронной почты
Password=Пароль
Retype=Подтвердить пароль
SSHTitle=Имя ключа SSH
@@ -497,6 +607,7 @@ url_error=`«%s» не является валидным URL.`
include_error=` должно содержать подстроку «%s».`
glob_pattern_error=` неверный glob шаблон: %s.`
regex_pattern_error=` Неверный шаблон регулярного выражения: %s.`
+username_error=` может содержать только латинские алфавитно-цифровые символы ('0-9','a-z','A-Z'), тире ('-'), подчеркивание ('_') и точку ('.'). Не должно начинаться или заканчиваться на не алфавитно-цифровые символы, и последовательные не алфавитно-цифровые символы также запрещены.`
invalid_group_team_map_error=` сопоставление недопустимо: %s`
unknown_error=Неизвестная ошибка:
captcha_incorrect=Капча не пройдена.
@@ -505,18 +616,23 @@ lang_select_error=Выберите язык из списка.
username_been_taken=Имя пользователя уже занято.
username_change_not_local_user=Нелокальным пользователям запрещено изменять их имя пользователя.
+change_username_disabled=Изменение имени пользователя отключено.
+change_full_name_disabled=Изменение полного имени отключено.
username_has_not_been_changed=Имя пользователя не было изменено
repo_name_been_taken=Название репозитория уже используется.
repository_force_private=Включена принудительная приватность: приватные репозитории не могут быть сделаны публичными.
repository_files_already_exist=Файлы уже существуют для этого репозитория. Обратитесь к системному администратору.
+repository_files_already_exist.adopt=Файлы уже существуют для этого репозитория и могут быть только приняты.
repository_files_already_exist.delete=Файлы уже существуют для этого репозитория. Вы должны удалить их.
repository_files_already_exist.adopt_or_delete=Файлы уже существуют для этого репозитория. Или принять их или удалить их.
visit_rate_limit=Удалённый вход отклонён в связи с ограничением количества попыток в секунду.
+2fa_auth_required=Для удаленного доступа требуется двухфакторная аутентификация.
org_name_been_taken=Название организации уже занято.
team_name_been_taken=Название команды уже занято.
team_no_units_error=Разрешите доступ хотя бы к одному разделу репозитория.
email_been_used=Этот адрес электронной почты уже используется.
email_invalid=Недопустимый адрес электронной почты.
+email_domain_is_not_allowed=Домен электронной почты пользователя %s конфликтует с EMAIL_DOMAIN_ALLOWLIST или EMAIL_DOMAIN_BLOCKLIST. Пожалуйста, убедитесь, что ваша операция корректна.
openid_been_used=Адрес OpenID «%s» уже используется.
username_password_incorrect=Неверное имя пользователя или пароль.
password_complexity=Пароль не удовлетворяет требованиям к сложности:
@@ -528,6 +644,8 @@ enterred_invalid_repo_name=Введённое вами название репо
enterred_invalid_org_name=Введённое вам название организации некорректно.
enterred_invalid_owner_name=Имя нового владельца некорректно.
enterred_invalid_password=Введённый пароль неверен.
+unset_password=Вошедший пользователь не установил пароль.
+unsupported_login_type=Тип входа на сервер не поддерживается для удаления учетной записи.
user_not_exist=Пользователь не существует.
team_not_exist=Команда не существует.
last_org_owner=Вы не можете удалить последнего пользователя из команды 'Владельцы'. Для организации должен быть хотя бы один владелец.
@@ -539,11 +657,19 @@ invalid_ssh_key=Не удается проверить ключ SSH: %s
invalid_gpg_key=Не удается проверить ключ GPG: %s
invalid_ssh_principal=Неверный принципал: %s
must_use_public_key=Ключ, который вы предоставили, является закрытым. Пожалуйста, не отправляйте свой закрытый ключ куда бы то ни было. Используйте для этих целей открытый ключ.
+unable_verify_ssh_key="Не удалось проверить SSH-ключ. Проверьте его на наличие ошибок."
auth_failed=Ошибка аутентификации: %v
+still_own_repo="На ваш аккаунт зарегистрирован один или несколько репозиториев, сначала удалите или передайте их."
+still_has_org="Ваш аккаунт является участником одной или нескольких организаций. Сначала покиньте их."
+still_own_packages="Ваш аккаунт владеет одним или несколькими пакетами. Сначала удалите их."
+org_still_own_repo="Эта организация все еще владеет одним или несколькими репозиториями. Удалите или передайте их."
+org_still_own_packages="Эта организация все еще владеет одним или несколькими пакетами. Сначала удалите их."
target_branch_not_exist=Целевая ветка не существует.
+target_ref_not_exist=Целевая ссылка не существует %s
+admin_cannot_delete_self=Вы не можете удалить себя, когда вы являетесь администратором. Пожалуйста, сначала удалите ваши права администратора.
[user]
change_avatar=Изменить свой аватар…
@@ -569,7 +695,31 @@ settings=Параметры пользователя
form.name_reserved=Имя пользователя «%s» зарезервировано.
form.name_pattern_not_allowed=Шаблон «%s» не допускается в имени пользователя.
-
+form.name_chars_not_allowed=Имя пользователя "%s" содержит недопустимые символы.
+
+block.block=Заблокировать
+block.block.user=Заблокировать пользователя
+block.block.org=Заблокировать пользователя в организации
+block.block.failure=Не удалось заблокировать пользователя: %s
+block.unblock=Разблокировать
+block.unblock.failure=Не удалось разблокировать пользователя: %s
+block.blocked=Вы заблокировали этого пользователя.
+block.title=Заблокировать пользователя
+block.info=Блокировка пользователя предотвращает его взаимодействие с репозиториями, такими как открытие или комментирование задач и запросов на слияние. Подробнее о блокировке пользователя.
+block.info_1=Блокировка пользователя предотвращает следующие действия с вашим аккаунтом и репозиториями:
+block.info_2=ваши подписчики
+block.info_3=отправку вам уведомлений через упоминание вашего имени пользователя
+block.info_4=вас пригласили в качестве соавтора в репозиторий
+block.info_5=проставление оценок, ответвления или просмотр репозиториев
+block.info_6=открытие и комментирование задач или запросов на слияние
+block.info_7=реакции на ваши комментарии в задачах или запросах на слияние
+block.user_to_block=Заблокировать пользователя
+block.note=Заметка
+block.note.title=Необязательное примечание:
+block.note.info=Заметка не видна заблокированному пользователю.
+block.note.edit=Редактировать заметку
+block.list=Заблокированные пользователи
+block.list.none=Вы не заблокировали ни одного пользователя.
[settings]
profile=Профиль
@@ -584,13 +734,18 @@ applications=Приложения
orgs=Управление организациями
repos=Репозитории
delete=Удалить аккаунт
+twofa=Двухфакторная аутентификация
account_link=Привязанные аккаунты
organization=Организации
uid=UID
+webauthn=Двухфакторная аутентификация (Ключи безопасности)
public_profile=Открытый профиль
biography_placeholder=Расскажите немного о себе! (Можно использовать Markdown)
location_placeholder=Поделитесь своим приблизительным местоположением с другими
+profile_desc=Управление тем, как ваш профиль отображается для других пользователей. Ваш основной адрес электронной почты будет использоваться для уведомлений, восстановления пароля и операций с Git.
+password_username_disabled=Вы не можете изменить свое имя пользователя. Пожалуйста, свяжитесь с администратором сайта для получения дополнительной информации.
+password_full_name_disabled=Вы не можете изменить свое полное имя. Пожалуйста, свяжитесь с администратором сайта для получения дополнительной информации.
full_name=Имя и фамилия
website=Веб-сайт
location=Местоположение
@@ -608,6 +763,7 @@ cancel=Отмена
language=Язык
ui=Тема
hidden_comment_types=Скрытые типы комментариев
+hidden_comment_types_description=Типы комментариев, отмеченные здесь, не будут отображаться на страницах задач. Отметка "Метка", например, удаляет все комментарии "{user} добавил/удалил {метка}".
hidden_comment_types.ref_tooltip=Комментарии об упоминании задачи в другой задаче/коммите/…
hidden_comment_types.issue_ref_tooltip=Комментарии об изменении ветки/тега, связанных с этой задачей
comment_type_group_reference=Упоминания
@@ -629,7 +785,7 @@ privacy=Приватность
keep_activity_private=Скрыть активность со страницы профиля
keep_activity_private_popup=Делает активность видимой только для вас и администраторов
-lookup_avatar_by_mail=Найти аватар по адресу эл. почты
+lookup_avatar_by_mail=Найти аватар по адресу электронной почты
federated_avatar_lookup=Найти внешний аватар
enable_custom_avatar=Включить собственный аватар
choose_new_avatar=Выбрать новый аватар
@@ -639,6 +795,7 @@ uploaded_avatar_not_a_image=Загружаемый файл не являетс
uploaded_avatar_is_too_big=Размер загружаемого файла (%d КиБ) превышает максимальный размер (%d КиБ).
update_avatar_success=Ваш аватар был изменен.
update_user_avatar_success=Аватар пользователя обновлён.
+cropper_prompt=Вы можете редактировать изображение перед сохранением. Отредактированное изображение будет сохранено как PNG.
change_password=Обновить пароль
old_password=Текущий пароль
@@ -654,14 +811,18 @@ manage_themes=Выберите тему по умолчанию
manage_openid=Управление OpenID
email_desc=Ваш основной адрес электронной почты будет использоваться для уведомлений, восстановления пароля и, если он не скрыт, для действий с Git в веб-интерфейсе.
theme_desc=Это будет темой по умолчанию для всего сайта.
+theme_colorblindness_help=Цветовая поддержка темы
+theme_colorblindness_prompt=Gitea выпустила несколько тем с базовой поддержкой дальтонизма, в которых определено всего несколько цветов. Работа еще продолжается. Дополнительные улучшения могут быть сделаны, определив больше цветов в CSS-файлах темы.
primary=Основной
activated=Активирован
requires_activation=Требуется активация
primary_email=Сделать основным
activate_email=Отправить активацию
activations_pending=Ожидает активации
+can_not_add_email_activations_pending=Ожидается активация. Если хотите добавить новый адрес электронной почты, попробуйте снова через несколько минут.
delete_email=Удалить
email_deletion=Удалить адрес электронной почты
+email_deletion_desc=Адрес электронной почты и вся связанная с ним информация будет удалена из вашего аккаунта. Коммиты, сделанные от имени этого адреса электронной почты, не будут изменены. Продолжить?
email_deletion_success=Ваш адрес электронной почты был удалён.
theme_update_success=Тема была изменена.
theme_update_error=Выбранная тема не существует.
@@ -677,6 +838,7 @@ add_email_success=Добавлен новый адрес электронной
email_preference_set_success=Настройки электронной почты успешно установлены.
add_openid_success=Добавлен новый адрес OpenID.
keep_email_private=Скрыть адрес электронной почты
+keep_email_private_popup=Это скроет ваш адрес электронной почты в вашем профиле, а также при создании запроса на слияние или редактирование файла с помощью веб-интерфейса. Запушенные коммиты не будут изменены. Используйте %s в коммите для ассоциации его с вашим аккаунтом.
openid_desc=OpenID позволяет делегировать аутентификацию внешнему поставщику.
manage_ssh_keys=Управление ключами SSH
@@ -686,8 +848,8 @@ add_key=Добавить ключ
ssh_desc=Эти открытые ключи SSH связаны с вашей учётной записью. Соответствующие закрытые ключи обеспечивают полный доступ к вашим хранилищам.
principal_desc=Эти принципалы сертификатов SSH привязаны к вашей учётной записи и разрешают полный доступ к вашим хранилищам.
gpg_desc=Эти открытые GPG ключи связаны с вашей учётной записью. Храните закрытые ключи в безопасности, так как они позволяют проверять подлинности коммитов.
-ssh_helper=Нужна помощь? Ознакомьтесь с руководством GitHub по созданию ключей SSH или решению возникающих проблем при использовании SSH.
-gpg_helper=Нужна помощь? Взгляните на руководство GitHub по GPG.
+ssh_helper="Нужна помощь? Ознакомьтесь с руководством GitHub по созданию ключей SSH или решению возникающих проблем при использовании SSH."
+gpg_helper="Нужна помощь? Взгляните на руководство GitHub по GPG."
add_new_key=Добавить ключ SSH
add_new_gpg_key=Добавить ключ GPG
key_content_ssh_placeholder=Начинается с 'ssh-ed25519', 'ssh-rsa', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com', или 'sk-ssh-ed25519@openssh.com'
@@ -703,6 +865,7 @@ gpg_key_matched_identities_long=Встроенные в этот ключ иде
gpg_key_verified=Проверенный ключ
gpg_key_verified_long=Ключ был проверен токеном и может быть использован для проверки коммитов, соответствующих любым активным адресом электронной почты этого пользователя в дополнение к любым соответствующим идентификаторам этого ключа.
gpg_key_verify=Проверить
+gpg_invalid_token_signature=Предоставленный GPG ключ, подпись и токен не совпадают, или токен устарел.
gpg_token_required=Вы должны предоставить подпись для токена ниже
gpg_token=Токен
gpg_token_help=Вы можете сгенерировать подпись с помощью:
@@ -712,6 +875,7 @@ verify_gpg_key_success=Ключ GPG «%s» верифицирован.
ssh_key_verified=Проверенный ключ
ssh_key_verified_long=Ключ был проверен токеном и может быть использован для проверки коммитов, соответствующих любым активным адресом электронной почты этого пользователя.
ssh_key_verify=Проверить
+ssh_invalid_token_signature=Предоставленный SSH ключ, подпись или токен не совпадают, или токен устарел.
ssh_token_required=Вы должны предоставить подпись для токена ниже
ssh_token=Токен
ssh_token_help=Вы можете сгенерировать подпись с помощью:
@@ -732,6 +896,7 @@ gpg_key_deletion=Удалить ключ GPG
ssh_principal_deletion=Удалить принципала сертификата SSH
ssh_key_deletion_desc=Удаление ключа SSH аннулирует его доступ к вашей учётной записи. Продолжить?
gpg_key_deletion_desc=Удаление ключа GPG отменяет проверку подписанных им коммитов. Продолжить?
+ssh_principal_deletion_desc=Удаление SSH-сертификата отзывает доступ к вашему аккаунту. Продолжить?
ssh_key_deletion_success=Ключ SSH удален.
gpg_key_deletion_success=Ключ GPG удалён.
ssh_principal_deletion_success=Принципал удалён.
@@ -771,9 +936,13 @@ delete_token_success=Токен удалён. Приложения, исполь
repo_and_org_access=Доступ к репозиторию и организации
permissions_public_only=Только публичные
permissions_access_all=Все (публичные, приватные и ограниченные)
+permission_not_set=Не установлено
permission_no_access=Нет доступа
-permission_read=Прочитанные
+permission_read=Читать
permission_write=Чтение и запись
+permission_anonymous_read=Анонимный чтение
+permission_everyone_read=Чтение всем
+permission_everyone_write=Запись всем
access_token_desc=Выбранные области действия токена ограничивают авторизацию только соответствующими маршрутами API. Читайте документацию для получения дополнительной информации.
at_least_one_permission=Необходимо выбрать хотя бы одно разрешение для создания токена
permissions_list=Разрешения:
@@ -789,6 +958,8 @@ create_oauth2_application_button=Создать приложение
create_oauth2_application_success=Вы успешно создали новое приложение OAuth2.
update_oauth2_application_success=Изменения настроек приложения OAuth2 успешно применены.
oauth2_application_name=Имя приложения
+oauth2_confidential_client=Конфиденциальный клиент. Выберите для приложений, которые сохраняют конфиденциальные данные, например, для веб-приложений. Не выбирайте для нативных приложений, включая настольные и мобильные приложения.
+oauth2_skip_secondary_authorization=Пропустить повторную авторизацию для публичных клиентов после однократного предоставления доступа. Может создать угрозу безопасности.
oauth2_redirect_uris=URI для перенаправления. Используйте новую строку для каждого URI.
save_application=Сохранить
oauth2_client_id=ID клиента
@@ -799,37 +970,51 @@ oauth2_client_secret_hint=Пожалуйста, сохраните секрет,
oauth2_application_edit=Изменить
oauth2_application_create_description=Приложения OAuth2 предоставляет стороннему приложению доступ к учётным записям пользователей данного сервиса.
oauth2_application_remove_description=Удаление приложения OAuth2 приведёт к отмене его доступа к авторизованным учётным записям пользователей в данном экземпляре. Продолжить?
+oauth2_application_locked=Gitea заранее регистрирует некоторые приложения OAuth2 при запуске, если это есть в конфигурации. Чтобы предотвратить неожиданное поведение, эти приложения не могут быть изменены или удалены. Пожалуйста, обратитесь к документации OAuth2 для получения дополнительной информации.
authorized_oauth2_applications=Авторизованные приложения OAuth2
+authorized_oauth2_applications_description=Вы предоставили доступ к вашему личному аккаунту Gitea этим сторонним приложениям. Отзовите доступ для приложений, которые вам больше не нужны.
revoke_key=Отозвать
revoke_oauth2_grant=Отозвать доступ
+revoke_oauth2_grant_description=Отзыв доступа для этого приложения заблокирует доступ приложения к вашим данным. Вы уверены?
revoke_oauth2_grant_success=Доступ был успешно отозван.
+twofa_desc=Чтобы защитить свою учетную запись от кражи пароля, вы можете использовать смартфон или другое устройство для получения временных одноразовых паролей ("TOTP").
twofa_recovery_tip=В случае утраты устройства можно использовать одноразовый ключ восстановления для получения доступа к учётной записи.
twofa_is_enrolled=Ваша учётная запись в настоящее время использует двухфакторную аутентификацию.
twofa_not_enrolled=Ваша учётная запись в настоящее время не использует двухфакторную аутентификацию.
twofa_disable=Отключить двухфакторную аутентификацию
+twofa_scratch_token_regenerate=Пересоздать одноразовый ключ восстановления
+twofa_scratch_token_regenerated=Ваш одноразовый ключ восстановления теперь %s. Храните его в безопасном месте, так как он не будет показан снова.
+twofa_enroll=Включить двухфакторную аутентификацию
twofa_disable_note=При необходимости можно отключить двухфакторную аутентификацию.
twofa_disable_desc=Отключение двухфакторной аутентификации сделает ваш аккаунт менее безопасным. Продолжить?
+regenerate_scratch_token_desc=Если вы потеряли свой ключ восстановления или уже использовали его для входа, вы можете сбросить его здесь.
twofa_disabled=Двухфакторная аутентификация выключена.
scan_this_image=Отсканируйте это изображение вашим приложением для двухфакторной аутентификации:
or_enter_secret=Или введите кодовое слово: %s
then_enter_passcode=И введите пароль, показанный в приложении:
passcode_invalid=Неверный пароль. попробуйте снова.
+twofa_enrolled=Ваша учетная запись успешно активирована. Храните одноразовый ключ восстановления (%s) в безопасном месте, так как он больше не будет показан.
twofa_failed_get_secret=Не удалось получить ключ.
+webauthn_desc="Ключи безопасности — это аппаратные устройства, содержащие криптографические ключи. Они могут использоваться для двухфакторной аутентификации. Ключи безопасности должны поддерживать стандарт WebAuthn Authenticator."
webauthn_register_key=Добавить ключ безопасности
webauthn_nickname=Имя пользователя
webauthn_delete_key=Удалить ключ безопасности
+webauthn_delete_key_desc=Если вы удалите ключ безопасности, вы больше не сможете войти с помощью него. Продолжить?
webauthn_key_loss_warning=В случае утраты ключей безопасности вы потеряете доступ к учётной записи.
+webauthn_alternative_tip=Вы можете настроить дополнительный метод аутентификации.
manage_account_links=Управление привязанными аккаунтами
manage_account_links_desc=Эти внешние аккаунты привязаны к вашему аккаунту Gitea.
+account_links_not_available=Нет внешних аккаунтов, связанных с вашим аккаунтом Gitea.
link_account=Привязать аккаунт
remove_account_link=Удалить привязанный аккаунт
remove_account_link_desc=Удаление привязанной учётной записи отменит её доступ к вашей учётной записи Gitea. Продолжить?
remove_account_link_success=Привязанная учётная запись удалена.
+hooks.desc=Добавить веб-хуки, которые будут работать для всех ваших репозиториев.
orgs_none=Вы не состоите ни в одной организации.
repos_none=Вы не владеете ни одним репозиторием.
@@ -842,10 +1027,12 @@ delete_account_title=Удалить аккаунт
delete_account_desc=Вы уверены, что хотите навсегда удалить этот аккаунт?
email_notifications.enable=Включить почтовые уведомления
-email_notifications.onmention=Посылать письмо на эл. почту только при упоминании
+email_notifications.onmention=Отправить письмо на электронную почту только при упоминании
email_notifications.disable=Отключить почтовые уведомления
email_notifications.submit=Установить настройки электронной почты
email_notifications.andyourown=И ваши собственные уведомления
+email_notifications.actions.desc="Уведомления для запусков рабочих процессов на репозиториях, настроенных с помощью Gitea Actions."
+email_notifications.actions.failure_only=Уведомлять только при неуспешных запусках рабочих процессов
visibility=Видимость пользователя
visibility.public=Публичный
@@ -856,9 +1043,13 @@ visibility.private=Приватный
visibility.private_tooltip=Виден только членам организаций, к которым вы присоединились
[repo]
+new_repo_helper="Репозиторий содержит все файлы проекта, включая историю изменений. Уже есть репозиторий в другом месте? Перенести репозиторий."
owner=Владелец
owner_helper=Некоторые организации могут не отображаться в раскрывающемся списке из-за максимального ограничения количества репозиториев.
repo_name=Название репозитория
+repo_name_profile_public_hint=.profile — это специальный репозиторий, который можно использовать для добавления README.md в публичный профиль организации, видимый всем. Убедитесь, что он публичный, и инициализируйте его с README в директории профиля, чтобы начать.
+repo_name_profile_private_hint=.profile-private — это специальный репозиторий, который можно использовать для добавления README.md в профиль участника организации, видимый только участникам организации. Убедитесь, что он приватный, и инициализируйте его с README в директории профиля, чтобы начать.
+repo_name_helper=Хорошие имена репозиториев используют короткие, запоминающиеся и уникальные ключевые слова. Репозиторий с именем ".profile" или ".profile-private" можно использовать для добавления README.md в профиль пользователя/организации.
repo_size=Размер репозитория
template=Шаблон
template_select=Выбрать шаблон.
@@ -869,7 +1060,7 @@ visibility_description=Только владелец или члены орга
visibility_helper=Сделать репозиторий приватным
visibility_helper_forced=Администратор сайта настроил параметр видимости новых репозиториев. Репозиторий приватный по умолчанию.
visibility_fork_helper=(Изменение этого повлияет на все форки.)
-clone_helper=Нужна помощь в клонировании? Посетите страницу помощи.
+clone_helper="Нужна помощь в клонировании? Посетите страницу помощи."
fork_repo=Форкнуть репозиторий
fork_from=Форк от
already_forked=Вы уже форкнули %s
@@ -877,7 +1068,12 @@ fork_to_different_account=Ответвление для другой учётн
fork_visibility_helper=Видимость форкнутого репозитория изменить нельзя.
fork_branch=Ветка для клонирования в форк
all_branches=Все ветки
+view_all_branches=Посмотреть все ветви
+view_all_tags=Посмотреть все теги
+fork_no_valid_owners=Нельзя сделать ответвление от этого репозитория, потому что нет допустимых владельцев.
+fork.blocked_user=Не удалось создать ответвление репозитория, потому что вы заблокированы владельцем репозитория.
use_template=Использовать этот шаблон
+open_with_editor=Открыть с помощью %s
download_zip=Скачать ZIP
download_tar=Скачать TAR.GZ
download_bundle=Скачать BUNDLE
@@ -885,13 +1081,18 @@ generate_repo=Создать репозиторий
generate_from=Создать из
repo_desc=Описание
repo_desc_helper=Добавьте краткое описание (необязательно)
+repo_no_desc=Описание отсутствует
+repo_lang=Языки
repo_gitignore_helper=Выберите шаблон .gitignore.
repo_gitignore_helper_desc=Выберите из списка шаблонов для популярных языков , какие файлы не надо отслеживать. По умолчанию в .gitignore включены типичные артефакты, создаваемые инструментами сборки каждого языка.
issue_labels=Метки задач
issue_labels_helper=Выберите набор ярлыков задачи.
license=Лицензия
license_helper=Выберите файл лицензии.
-license_helper_desc=Лицензия определяет, что другие люди могут, а что не могут делать с вашим кодом. Не уверены, какая лицензия подходит для вашего проекта? Смотрите Выберите лицензию.
+license_helper_desc="Лицензия определяет, что другие люди могут, а что не могут делать с вашим кодом. Не уверены, какая лицензия подходит для вашего проекта? Смотрите Выберите лицензию."
+multiple_licenses=Несколько лицензий
+object_format=Формат объекта
+object_format_helper=Формат объекта репозитория. Невозможно изменить позже. SHA1 совместим.
readme=README
readme_helper=Выберите шаблон README.
readme_helper_desc=Это место, где вы можете написать подробное описание вашего проекта.
@@ -909,23 +1110,29 @@ mirror_prune=Очистить
mirror_prune_desc=Удаление устаревших отслеживаемых ссылок
mirror_interval=Интервал зеркалирования (допустимы единицы времени 'h', 'm', 's'). Значение 0 отключает периодическую синхронизацию. (Минимальный интервал: %s)
mirror_interval_invalid=Недопустимый интервал зеркалирования.
+mirror_sync=синхронизировано
mirror_sync_on_commit=Синхронизировать при отправке коммитов
mirror_address=Клонировать по URL
mirror_address_desc=Поместите необходимые учётные данные в секцию авторизации.
+mirror_address_url_invalid=Указан неверный URL. Убедитесь, что все компоненты URL правильно экранированы.
+mirror_address_protocol_invalid=Указанный URL неправильный. Только адреса http(s):// или git:// могут использоваться для создания зеркала.
mirror_lfs=Хранилище больших файлов (LFS)
mirror_lfs_desc=Активировать зеркалирование данных LFS.
mirror_lfs_endpoint=LFS Endpoint
+mirror_lfs_endpoint_desc="Синхронизация попытается использовать URL клонирования для определения LFS-сервера. Вы также можете указать пользовательскую конечную точку, если данные LFS репозитория хранятся в другом месте."
mirror_last_synced=Последняя синхронизация
mirror_password_placeholder=(Неизменный)
mirror_password_blank_placeholder=(Отменено)
mirror_password_help=Смените имя пользователя для удаления пароля.
watchers=Наблюдатели
-stargazers=Звездочеты
+stargazers=Добавили в избранное
stars_remove_warning=Данное действие удалит все звёзды из этого репозитория.
forks=Форки
+stars=В избранном
reactions_more=и ещё %d
unit_disabled=Администратор сайта отключил этот раздел репозитория.
language_other=Разное
+adopt_search=Введите имя пользователя для поиска непринятых репозиториев… (оставьте пустым для поиска всех)
adopt_preexisting_label=Принятые файлы
adopt_preexisting=Принять уже существующие файлы
adopt_preexisting_content=Создать репозиторий из %s
@@ -935,16 +1142,26 @@ delete_preexisting=Удалить уже существующие файлы
delete_preexisting_content=Удалить файлы из %s
delete_preexisting_success=Удалены непринятые файлы в %s
blame_prior=Показать авторство предшествующих изменений
+blame.ignore_revs="Изменения в .git-blame-ignore-revs игнорируются. Нажмите сюда для перехода к обычному просмотру авторства изменений."
+blame.ignore_revs.failed="Не удалось проигнорировать изменения в .git-blame-ignore-revs."
+user_search_tooltip=Показывает не более 30 пользователей
+tree_path_not_found=Путь %[1]s не существует в %[2]s
transfer.accept=Принять трансфер
+transfer.accept_desc=Переместить в "%s"
transfer.reject=Отказаться от перемещения
+transfer.reject_desc=Отменить перемещение в "%s"
+transfer.no_permission_to_accept=У вас нет прав для подтверждения этой передачи.
+transfer.no_permission_to_reject=У вас нет прав для отклонения этой передачи.
desc.private=Приватный
desc.public=Публичный
+desc.public_access=Публичный доступ
desc.template=Шаблон
desc.internal=Внутренний
desc.archived=Архивировано
+desc.sha256=SHA256
template.items=Элементы шаблона
template.git_content=Содержимое Git (ветвь по умолчанию)
@@ -957,6 +1174,8 @@ template.issue_labels=Метки задач
template.one_item=Необходимо выбрать хотя бы один элемент шаблона
template.invalid=Необходимо выбрать хранилище шаблонов
+archive.title=Это репозиторий заархивирован. Вы можете просматривать файлы и клонировать его, но не можете вносить в него изменения и открывать задачи или запросы на слияние.
+archive.title_date=Этот репозиторий был заархивирован на %s. Вы можете просматривать файлы или клонировать его, но не можете отправлять изменения, открывать задачи или создавать запросы на слияние.
archive.issue.nocomment=Этот репозиторий в архиве. Вы не можете комментировать задачи.
archive.pull.nocomment=Это репозиторий в архиве. Вы не можете комментировать запросы на слияние.
@@ -971,8 +1190,9 @@ migrate_service=Сервис миграции
migrate_options_mirror_helper=Этот репозиторий будет зеркалом
migrate_options_lfs=Перенос LFS файлов
migrate_options_lfs_endpoint.label=LFS Endpoint
-migrate_options_lfs_endpoint.description=Миграция попытается использовать ваш Git удаленно, чтобы определить сервер LFS. Вы также можете указать пользовательскую конечную точку, если данные хранятся в другом месте.
+migrate_options_lfs_endpoint.description="Миграция попытается использовать ваш Git удаленно, чтобы определить сервер LFS. Вы также можете указать пользовательскую конечную точку, если данные хранятся в другом месте."
migrate_options_lfs_endpoint.description.local=Также поддерживается путь на локальном сервере.
+migrate_options_lfs_endpoint.placeholder=Если оставить это поле пустым, конечная точка будет получена из клона URL-адреса.
migrate_items=Элементы миграции
migrate_items_wiki=Вики
migrate_items_milestones=Этапы
@@ -984,15 +1204,18 @@ migrate_items_releases=Релизы
migrate_repo=Перенос репозитория
migrate.clone_address=Перенос / Клонирование по URL
migrate.clone_address_desc=Это может быть HTTP/HTTPS/GIT адрес или локальный путь существующего репозитория на сервере.
+migrate.github_token_desc=Вы можете указать здесь один или несколько токенов, разделенных запятыми, чтобы ускорить миграцию, обойдя ограничение частоты запросов API GitHub. ВНИМАНИЕ: Злоупотребление этой функцией может нарушить политику поставщика услуг и привести к блокировке вашей учетной записи.
migrate.clone_local_path=или локальный путь на сервере
migrate.permission_denied=У вас нет прав на импорт локальных репозиториев.
-migrate.invalid_local_path=Недопустимый локальный путь. Он не существует или не является каталогом.
+migrate.permission_denied_blocked=Импорт с запрещенных хостов невозможен. Обратитесь к администратору для проверки настроек ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS.
+migrate.invalid_local_path="Недопустимый локальный путь. Он не существует или не является каталогом."
migrate.invalid_lfs_endpoint=Конечная точка LFS недействительна.
migrate.failed=Миграция не удалась: %v
migrate.migrate_items_options=Токен доступа необходим для миграции дополнительных элементов
-migrated_from=Перенесено из %[2]s
+migrated_from="Перенесено из %[2]s"
migrated_from_fake=Перенесено из %[1]s
migrate.migrate=Миграция из %s
+migrate.migrating=Перенос из %s…
migrate.migrating_failed=Перенос из %s не удался.
migrate.migrating_failed.error=Не удалось мигрировать: %s
migrate.migrating_failed_no_addr=Миграция не удалась.
@@ -1004,6 +1227,11 @@ migrate.gogs.description=Перенести данные с notabug.org или
migrate.onedev.description=Перенести данные с code.onedev.io или других экземпляров OneDev.
migrate.codebase.description=Перенос данных с codebasehq.com.
migrate.gitbucket.description=Перенести данные из экземпляров GitBucket.
+migrate.codecommit.description=Перенос данных из AWS CodeCommit.
+migrate.codecommit.aws_access_key_id=ID ключа доступа AWS Access Key ID
+migrate.codecommit.aws_secret_access_key=Секретный ключ доступа AWS (Secret Access Key)
+migrate.codecommit.https_git_credentials_username=Имя пользователя HTTPS Git
+migrate.codecommit.https_git_credentials_password=Пароль HTTPS Git
migrate.migrating_git=Перенос Git данных
migrate.migrating_topics=Миграция тем
migrate.migrating_milestones=Перенос этапов
@@ -1013,6 +1241,7 @@ migrate.migrating_issues=Миграция задач
migrate.migrating_pulls=Миграция запросов на слияние
migrate.cancel_migrating_title=Отменить миграцию
migrate.cancel_migrating_confirm=Вы хотите отменить эту миграцию?
+migration_status=Статус миграции
mirror_from=зеркало из
forked_from=ответвлено от
@@ -1026,6 +1255,7 @@ watch=Следить
unstar=Убрать из избранного
star=В избранное
fork=Форкнуть
+action.blocked_user=Не удается выполнить действие, потому что вы заблокированы владельцем репозитория.
download_archive=Скачать репозиторий
more_operations=Ещё действия
@@ -1034,7 +1264,9 @@ clone_this_repo=Клонировать репозиторий
cite_this_repo=Сослаться на этот репозиторий
create_new_repo_command=Создать новый репозиторий из командной строки
push_exist_repo=Отправка существующего репозитория из командной строки
+empty_message=В репозитории нет файлов.
broken_message=Данные Git, лежащие в основе репозитория, не могут быть прочитаны. Свяжитесь с администратором этого экземпляра или удалите этот репозиторий.
+no_branch=В этом репозитории нет веток.
code=Код
code.desc=Исходный код, файлы, коммиты и ветки.
@@ -1051,6 +1283,7 @@ projects=Проекты
packages=Пакеты
actions=Действия
labels=Метки
+org_labels_desc=Метки уровня организации, которые можно использовать со всеми репозиториями в этой организации
org_labels_desc_manage=управлять
milestone=Этап
@@ -1062,6 +1295,7 @@ releases=Релизы
tag=Тег
released_this=выпустил(-а) это
tagged_this=добавил(а) тег
+file.title=%s в %s
file_raw=Исходник
file_history=История
file_view_source=Просмотреть исходный код
@@ -1069,10 +1303,16 @@ file_view_rendered=Просмотр отрендеренного
file_view_raw=Посмотреть исходник
file_permalink=Постоянная ссылка
file_too_large=Этот файл слишком большой, поэтому он не может быть отображён.
+file_is_empty=Файл пуст.
+code_preview_line_from_to=Строки с %[1]d по %[2]d в %[3]s
+code_preview_line_in=Строка %[1]d в %[2]s
invisible_runes_header=`Этот файл содержит невидимые символы Юникода`
+invisible_runes_description=`Этот файл содержит невидимые символы Юникода, которые неразличимы для человека, но могут быть по-разному обработаны компьютером. Если вы считаете, что это сделано намеренно, вы можете спокойно проигнорировать это предупреждение. Используйте кнопку Escape, чтобы показать их.`
ambiguous_runes_header=`Этот файл содержит неоднозначные символы Юникода`
+ambiguous_runes_description=`Этот файл содержит символы Юникода, которые можно спутать с другими символами. Если вы считаете, что это сделано намеренно, вы можете спокойно проигнорировать это предупреждение. Используйте кнопку Escape, чтобы показать эти символы.`
invisible_runes_line=`В этой строке есть невидимые символы Юникода`
ambiguous_runes_line=`В этой строке есть неоднозначные символы Юникода`
+ambiguous_character=`%[1]c [U+%04[1]X] можно спутать с %[2]c [U+%04[2]X]`
escape_control_characters=Экранировать
unescape_control_characters=Убрать экранирование
@@ -1082,6 +1322,8 @@ video_not_supported_in_browser=Ваш браузер не поддерживае
audio_not_supported_in_browser=Ваш браузер не поддерживает HTML5 'audio' тэг.
symbolic_link=Символическая ссылка
executable_file=Исполняемый файл
+vendored=Поставленные
+generated=Сгенерировано
commit_graph=Граф коммитов
commit_graph.select=Выбрать ветку
commit_graph.hide_pr_refs=Скрыть запросы на слияние
@@ -1090,6 +1332,7 @@ commit_graph.color=Цвет
commit.contained_in=Этот коммит содержится в:
commit.contained_in_default_branch=Этот коммит является частью ветки по умолчанию
commit.load_referencing_branches_and_tags=Загрузить ветки и теги, ссылающиеся на этот коммит
+commit.merged_in_pr=Этот коммит был объединён с запросом на слияние %s.
blame=Ответственный
download_file=Скачать файл
normal_view=Обычный вид
@@ -1103,7 +1346,9 @@ editor.upload_file=Загрузить файл
editor.edit_file=Редактировать файл
editor.preview_changes=Просмотр изменений
editor.cannot_edit_lfs_files=LFS файлы невозможно редактировать в веб-интерфейсе.
+editor.cannot_edit_too_large_file=Файл слишком большой для редактирования.
editor.cannot_edit_non_text_files=Двоичные файлы нельзя редактировать в веб-интерфейсе.
+editor.file_not_editable_hint=Но вы все равно можете переименовать или переместить его.
editor.edit_this_file=Редактировать файл
editor.this_file_locked=Файл заблокирован
editor.must_be_on_a_branch=Чтобы внести или предложить изменения этого файла, необходимо выбрать ветку.
@@ -1117,15 +1362,17 @@ editor.or=или
editor.cancel_lower=Отменить
editor.commit_signed_changes=Зафиксировать подписанные изменения
editor.commit_changes=Сохранить правки
+editor.add_tmpl=Добавить '{filename}'
editor.add=Добавить %s
editor.update=Обновить %s
editor.delete=Удалить %s
editor.patch=Применить патч
editor.patching=Исправление:
+editor.fail_to_apply_patch=Не удалось применить патч
editor.new_patch=Новый патч
editor.commit_message_desc=Добавьте необязательное расширенное описание…
editor.signoff_desc=Добавить трейлер Signed-off-by с автором коммита в конце сообщения коммита.
-editor.commit_directly_to_this_branch=Сделайте коммит прямо в ветку %s.
+editor.commit_directly_to_this_branch="Сделайте коммит прямо в ветку %s."
editor.create_new_branch=Создайте новую ветку для этого коммита, и сделайте запрос на слияние.
editor.create_new_branch_np=Создать новую ветку для этого коммита.
editor.propose_file_change=Предложить изменение файла
@@ -1134,12 +1381,18 @@ editor.new_branch_name_desc=Новое название ветки…
editor.cancel=Отмена
editor.filename_cannot_be_empty=Имя файла не может быть пустым.
editor.filename_is_invalid=Недопустимое имя файла: «%s».
+editor.commit_email=Адрес электронной почты коммита
+editor.invalid_commit_email=Этот адрес электронной почты - неверен.
editor.branch_does_not_exist=Ветка «%s» отсутствует в этом репозитории.
editor.branch_already_exists=Ветка «%s» уже существует в этом репозитории.
editor.directory_is_a_file=Имя каталога «%s» уже используется в качестве имени файла в этом репозитории.
+editor.file_is_a_symlink=`"%s" является символической ссылкой. Символические ссылки не могут быть отредактированы в веб-редакторе.`
editor.filename_is_a_directory=Имя файла «%s» уже используется в качестве каталога в этом репозитории.
-editor.file_changed_while_editing=Содержимое файла изменилось с момента начала редактирования. Нажмите здесь, чтобы увидеть, что было изменено, или Зафиксировать изменения снова, чтобы заменить их.
+editor.file_modifying_no_longer_exists=Файл, который вы пытаетесь отредактировать, "%s", больше не существует в этом репозитории.
+editor.file_changed_while_editing="Содержимое файла изменилось с момента начала редактирования. Нажмите здесь, чтобы увидеть, что было изменено, или Зафиксировать изменения снова, чтобы заменить их."
editor.file_already_exists=Файл с именем «%s» уже существует в репозитории.
+editor.commit_id_not_matching=ID фиксации не совпадает с ID в начале редактирования. Зафиксируйтесь в патч ветку, а затем объедините.
+editor.push_out_of_date=Похоже, что push устарел.
editor.commit_empty_file_header=Закоммитить пустой файл
editor.commit_empty_file_text=Файл, который вы собираетесь зафиксировать, пуст. Продолжить?
editor.no_changes_to_show=Нет изменений.
@@ -1156,13 +1409,22 @@ editor.user_no_push_to_branch=Пользователь не может отпр
editor.require_signed_commit=Ветка ожидает подписанный коммит
editor.cherry_pick=Перенести изменения %s в:
editor.revert=Откатить %s к:
+editor.failed_to_commit=Не удалось зафиксировать изменения.
+editor.failed_to_commit_summary=Сообщение об ошибке:
+editor.fork_create=Сделать ответвление репозитория для предложения изменений
+editor.fork_create_description=Вы не можете редактировать этот репозиторий напрямую. Вместо этого вы можете создать ответвление, внести изменения и создать запрос на слияние.
+editor.fork_edit_description=Вы не можете редактировать этот репозиторий напрямую. Изменения будут записаны в ваше ответвление %s, чтобы вы могли создать запрос на слияние.
+editor.fork_not_editable=Вы создали ответвление этого репозитория, но ваше ответвление не может быть отредактировано.
+editor.fork_failed_to_push_branch=Не удалось отправить ветку %s в ваш репозиторий.
+editor.fork_branch_exists=Ветка "%s" уже существует в вашем ответвлении, пожалуйста, выберите новое имя для ветки.
commits.desc=Просмотр истории изменений исходного кода.
commits.commits=Коммитов
commits.no_commits=Нет общих коммитов. «%s» и «%s» имеют совершенно разные истории.
commits.nothing_to_compare=Эти ветки одинаковы.
commits.search.tooltip=Можно предварять ключевые слова префиксами "author:", "committer:", "after:", или "before:", например "revert author:Alice before:2019-01-13".
+commits.search_branch=Эта ветка
commits.search_all=Все ветки
commits.author=Автор
commits.message=Сообщение
@@ -1174,6 +1436,8 @@ commits.signed_by_untrusted_user=Подписано ненадежным пол
commits.signed_by_untrusted_user_unmatched=Подписан недоверенным пользователем, который не соответствует автору коммита
commits.gpg_key_id=Идентификатор ключа GPG
commits.ssh_key_fingerprint=Отпечаток ключа SSH
+commits.view_path=Посмотреть историю в данной точке
+commits.view_file_diff=Просмотр изменений файла в этой фиксации
commit.operations=Операции
commit.revert=Откатить
@@ -1184,13 +1448,14 @@ commit.cherry-pick-header=Cherry-pick: %s
commit.cherry-pick-content=Выбрать ветку для переноса:
commitstatus.error=Ошибка
-commitstatus.failure=Неудача
+commitstatus.failure=Неудачно
commitstatus.pending=Ожидание
commitstatus.success=Успешно
ext_issues=Доступ к внешним задачам
ext_issues.desc=Ссылка на внешнюю систему отслеживания ошибок.
+projects.desc=Управление задачами и запросами на слияние в проектах.
projects.description=Описание (необязательно)
projects.description_placeholder=Описание
projects.create=Создать проект
@@ -1205,26 +1470,27 @@ projects.edit=Редактировать проекты
projects.edit_subheader=Создавайте и организуйте задачи и отслеживайте прогресс.
projects.modify=Обновить проект
projects.edit_success=Проект «%s» обновлён.
-projects.type.none=Нет
-projects.type.basic_kanban=Обычный Канбан
-projects.type.bug_triage=Планирование работы с багами
-projects.template.desc=Шаблон проекта
-projects.template.desc_helper=Выберите шаблон проекта для начала
-projects.column.edit=Изменить столбец
-projects.column.edit_title=Название
-projects.column.new_title=Название
-projects.column.new_submit=Создать столбец
-projects.column.new=Новый столбец
-projects.column.set_default=Установить по умолчанию
-projects.column.set_default_desc=Назначить этот столбец по умолчанию для неклассифицированных задач и запросов на слияние
-projects.column.delete=Удалить столбец
-projects.column.color=Цвет
+projects.type.none="Нет"
+projects.type.basic_kanban="Обычный Канбан"
+projects.type.bug_triage="Планирование работы с багами"
+projects.template.desc="Шаблон проекта"
+projects.template.desc_helper="Выберите шаблон проекта для начала"
+projects.column.edit="Изменить столбец"
+projects.column.edit_title="Название"
+projects.column.new_title="Название"
+projects.column.new_submit="Создать столбец"
+projects.column.new="Новая колонка"
+projects.column.set_default="Установить по умолчанию"
+projects.column.set_default_desc="Назначить этот столбец по умолчанию для неклассифицированных задач и запросов на слияние"
+projects.column.delete="Удалить столбец"
+projects.column.deletion_desc="Удаление колонки проекта перемещает все связанные задачи в колонку по умолчанию. Продолжить?"
+projects.column.color="Цвет"
projects.open=Открыть
projects.close=Закрыть
projects.column.assigned_to=Назначено на
-projects.card_type.desc=Предпросмотр карточек
-projects.card_type.images_and_text=Изображения и текст
-projects.card_type.text_only=Только текст
+projects.card_type.desc="Предпросмотр карточек"
+projects.card_type.images_and_text="Изображения и текст"
+projects.card_type.text_only="Только текст"
issues.desc=Организация отчетов об ошибках, заданий и этапов.
issues.filter_assignees=Фильтр назначений
@@ -1232,6 +1498,8 @@ issues.filter_milestones=Фильтр этапов
issues.filter_projects=Фильтровать проекты
issues.filter_labels=Фильтр меток
issues.filter_reviewers=Фильтр рецензентов
+issues.filter_no_results=Нет результатов
+issues.filter_no_results_placeholder=Попробуйте изменить фильтры поиска.
issues.new=Новая задача
issues.new.title_empty=Заголовок не может быть пустым
issues.new.labels=Метки
@@ -1249,6 +1517,10 @@ issues.new.clear_milestone=Очистить этап
issues.new.assignees=Назначенные
issues.new.clear_assignees=Убрать ответственных
issues.new.no_assignees=Нет назначенных лиц
+issues.new.no_reviewers=Нет рецензентов
+issues.new.blocked_user=Не удается создать задачу, потому что вы были заблокированы владельцем репозитория.
+issues.edit.already_changed=Не удается сохранить изменения в задаче. Похоже, содержимое уже было изменено другим пользователем. Пожалуйста, обновите страницу и попробуйте еще раз, чтобы избежать перезаписи его изменений
+issues.edit.blocked_user=Не удалось отредактировать содержимое, потому что вы заблокированы автором или владельцем репозитория.
issues.choose.get_started=Начать
issues.choose.open_external_link=Открыть
issues.choose.blank=По умолчанию
@@ -1274,6 +1546,7 @@ issues.remove_labels=удалил(а) метки %s %s
issues.add_remove_labels=добавил(а) метки %s и удалил(а) %s %s
issues.add_milestone_at=`добавил(а) к этапу %s %s`
issues.add_project_at=`добавил(а) в %s проект %s`
+issues.move_to_column_of_project=`перемещено в %s в %s на %s`
issues.change_milestone_at=`изменил(а) целевой этап с %s на %s %s`
issues.change_project_at=`изменил(а) проект с %s на %s %s`
issues.remove_milestone_at=`удалил(а) это из этапа %s %s`
@@ -1302,9 +1575,14 @@ issues.filter_project=Проект
issues.filter_project_all=Все проекты
issues.filter_project_none=Нет проекта
issues.filter_assignee=Назначено
+issues.filter_assignee_no_assignee=Без назначения
+issues.filter_assignee_any_assignee=С назначением
issues.filter_poster=Автор
+issues.filter_user_placeholder=Поиск пользователей
+issues.filter_user_no_select=Все пользователи
issues.filter_type=Тип
issues.filter_type.all_issues=Все задачи
+issues.filter_type.all_pull_requests=Все запросы на слияние
issues.filter_type.assigned_to_you=Назначено вам
issues.filter_type.created_by_you=Созданные вами
issues.filter_type.mentioning_you=Вы упомянуты
@@ -1313,13 +1591,14 @@ issues.filter_type.reviewed_by_you=Проверенные вами
issues.filter_sort=Сортировать
issues.filter_sort.latest=Новейшие
issues.filter_sort.oldest=Старейшие
+issues.filter_sort.recentupdate=Последнее обновление
issues.filter_sort.leastupdate=Давно обновленные
issues.filter_sort.mostcomment=Больше комментариев
issues.filter_sort.leastcomment=Меньше комментариев
issues.filter_sort.nearduedate=Ближайшее по дате завершения
issues.filter_sort.farduedate=Удалённое по дате завершения
-issues.filter_sort.moststars=Больше звезд
-issues.filter_sort.feweststars=Меньше звезд
+issues.filter_sort.moststars=Больше в избранном
+issues.filter_sort.feweststars=Меньше в избранном
issues.filter_sort.mostforks=Больше форков
issues.filter_sort.fewestforks=Меньше форков
issues.action_open=Открыть
@@ -1331,10 +1610,10 @@ issues.action_assignee=Ответственный
issues.action_assignee_no_select=Нет ответственного
issues.action_check=Выбрать/отменить выбор
issues.action_check_all=Выбрать/отменить выбор всех элементов
-issues.opened_by=открыта %[1]s %[3]s
-pulls.merged_by=от %[3]s был слит %[1]s
+issues.opened_by="открыта %[1]s %[3]s"
+pulls.merged_by="от %[3]s был слит %[1]s"
pulls.merged_by_fake=от %[2]s был слит %[1]s
-issues.closed_by=от %[3]s была закрыта %[1]s
+issues.closed_by="от %[3]s была закрыта %[1]s"
issues.opened_by_fake=открыт %[1]s пользователем %[2]s
issues.closed_by_fake=%[2]s закрыл(а) %[1]s
issues.previous=Предыдущая
@@ -1344,7 +1623,7 @@ issues.closed_title=Закрыто
issues.draft_title=Черновик
issues.num_comments_1=%d комментарий
issues.num_comments=комментариев: %d
-issues.commented_at=`прокомментировал(а) %s`
+issues.commented_at="`прокомментировал(а) %s`"
issues.delete_comment_confirm=Вы уверены, что хотите удалить этот комментарий?
issues.context.copy_link=Копировать ссылку
issues.context.quote_reply=Цитировать ответ
@@ -1355,17 +1634,20 @@ issues.no_content=Описание отсутствует.
issues.close=Закрыть задачу
issues.comment_pull_merged_at=слил(а) коммит %[1]s в %[2]s %[3]s
issues.comment_manually_pull_merged_at=вручную слил(а) коммит %[1]s в %[2]s %[3]s
+issues.close_comment_issue=Прокомментировать и закрыть
issues.reopen_issue=Открыть снова
+issues.reopen_comment_issue=Прокомментировать и открыть снова
issues.create_comment=Комментировать
-issues.closed_at=`закрыл(а) эту задачу %[2]s`
-issues.reopened_at=`переоткрыл(а) эту проблему %[2]s`
-issues.commit_ref_at=`упомянул эту задачу в коммите %[2]s`
-issues.ref_issue_from=`ссылка на эту проблему %[4]s %[2]s`
-issues.ref_pull_from=`сослался(ась) на этот запрос на слияние %[4]s %[2]s`
-issues.ref_closing_from=`сослался(ась) на запрос на слияние %[4]s, который закроет эту задачу %[2]s`
-issues.ref_reopening_from=`сослался(ась) на запрос на слияние %[4]s, который повторно откроет эту задачу %[2]s`
-issues.ref_closed_from=`закрыл этот запрос %[4]s %[2]s`
-issues.ref_reopened_from=`переоткрыл эту задачу %[4]s %[2]s`
+issues.comment.blocked_user=Не удалось создать или отредактировать комментарий, потому что вы заблокированы автором или владельцем репозитория.
+issues.closed_at="`закрыл(а) эту задачу %[2]s`"
+issues.reopened_at="`переоткрыл(а) эту проблему %[2]s`"
+issues.commit_ref_at="`упомянул эту задачу в коммите %[2]s`"
+issues.ref_issue_from="`ссылка на эту проблему %[4]s %[2]s`"
+issues.ref_pull_from="`сослался(ась) на этот запрос на слияние %[4]s %[2]s`"
+issues.ref_closing_from="`сослался(ась) на запрос на слияние %[4]s, который закроет эту задачу %[2]s`"
+issues.ref_reopening_from="`сослался(ась) на запрос на слияние %[4]s, который повторно откроет эту задачу %[2]s`"
+issues.ref_closed_from="`закрыл этот запрос %[4]s %[2]s`"
+issues.ref_reopened_from="`переоткрыл эту задачу %[4]s %[2]s`"
issues.ref_from=`из %[1]s`
issues.author=Автор
issues.author_helper=Этот пользователь является автором.
@@ -1378,25 +1660,29 @@ issues.role.collaborator_helper=Этот пользователь был при
issues.role.first_time_contributor=Новый участник
issues.role.first_time_contributor_helper=Это первый вклад пользователя в репозиторий.
issues.role.contributor=Участник
+issues.role.contributor_helper=Этот пользователь ранее вносил изменения в репозиторий.
issues.re_request_review=Повторить запрос на отзыв
issues.is_stale=Со времени этого обзора в этот PR были внесены некоторые изменения
issues.remove_request_review=Удалить запрос на отзыв
issues.remove_request_review_block=Невозможно удалить запрос на отзыв
issues.dismiss_review=Отклонить отзыв
issues.dismiss_review_warning=Вы уверены, что хотите отклонить эту рецензию?
-issues.sign_in_require_desc=Войдите, чтобы присоединиться к обсуждению.
+issues.sign_in_require_desc="Войдите, чтобы присоединиться к обсуждению."
issues.edit=Изменить
issues.cancel=Отмена
issues.save=Сохранить
issues.label_title=Имя метки
issues.label_description=Описание метки
issues.label_color=Цвет метки
+issues.label_color_invalid=Недопустимый цвет
issues.label_exclusive=Эксклюзивный
issues.label_archive=Метка архива
issues.label_archived_filter=Показать архивированные метки
issues.label_archive_tooltip=Архивированные метки исключаются по умолчанию из подсказок при поиске по метке.
issues.label_exclusive_desc=Назовите метку область/элемент
, чтобы сделать ее взаимоисключающей с другими метками область/
.
issues.label_exclusive_warning=Любые метки с конфликтующей областью будут удалены при редактировании меток задачи или запроса на слияние.
+issues.label_exclusive_order=Порядок сортировки
+issues.label_exclusive_order_tooltip=Исключающие метки в одной области будут отсортированы в соответствии с этим числовым порядком.
issues.label_count=%d меток
issues.label_open_issues=%d открытых задач
issues.label_edit=Редактировать
@@ -1415,18 +1701,19 @@ issues.attachment.download=`Нажмите, чтобы скачать «%s»`
issues.subscribe=Подписаться
issues.unsubscribe=Отказаться от подписки
issues.unpin=Открепить
-issues.max_pinned=Нельзя закрепить больше задач
-issues.pin_comment=закрепил(а) эту задачу %s
-issues.unpin_comment=открепил(а) эту задачу %s
+issues.max_pinned="Нельзя закрепить больше задач"
+issues.pin_comment="закрепил(а) эту задачу %s"
+issues.unpin_comment="открепил(а) эту задачу %s"
issues.lock=Ограничить обсуждение
issues.unlock=Снять ограничение
issues.lock_duplicate=Обсуждение задачи уже ограничено.
issues.unlock_error=Невозможно снять несуществующее ограничение обсуждения.
-issues.lock_with_reason=заблокировано как %s и ограничено обсуждение для соучастников %s
-issues.lock_no_reason=ограничил(а) обсуждение задачи кругом соавторов %s
-issues.unlock_comment=снял(а) ограничение %s
+issues.lock_with_reason="заблокировано как %s и ограничено обсуждение для соучастников %s"
+issues.lock_no_reason="ограничил(а) обсуждение задачи кругом соавторов %s"
+issues.unlock_comment="снял(а) ограничение %s"
issues.lock_confirm=Ограничить
issues.unlock_confirm=Снять
+issues.lock.notice_1=- Другие пользователи не могут добавлять новые комментарии к этой задаче.
issues.lock.notice_2=- Вы и другие соавторы с доступом к этому репозиторию могут оставлять комментарии, которые могут видеть другие.
issues.lock.notice_3=- Вы всегда можете снять ограничение с обсуждения этой задачи.
issues.unlock.notice_1=- Все снова смогут принять участие в обсуждении данной задачи.
@@ -1440,12 +1727,29 @@ issues.delete.title=Удалить эту задачу?
issues.delete.text=Вы действительно хотите удалить эту задачу? Это навсегда удалит всё содержимое. Возможно лучше закрыть её в архивных целях.
issues.tracker=Отслеживание времени
-
+issues.timetracker_timer_start=Запустить таймер
+issues.timetracker_timer_stop=Остановить таймер
+issues.timetracker_timer_discard=Сбросить таймер
+issues.timetracker_timer_manually_add=Добавить время
+
+issues.time_estimate_set=Установить предполагаемое время
+issues.time_estimate_display=Оценка: %s
+issues.change_time_estimate_at=изменена оценка времени на %[1]s %[2]s
+issues.remove_time_estimate_at=удалена оценка времени %s
+issues.time_estimate_invalid=Неверный формат оценки времени
+issues.start_tracking_history=начал(а) работу %s
issues.tracker_auto_close=Таймер будет остановлен автоматически, когда эта проблема будет закрыта
-issues.tracking_already_started=`Вы уже начали отслеживать время для другой задачи!`
+issues.stopwatch_already_stopped=Таймер для этой задачи уже остановлен
+issues.stopwatch_already_created=Таймер для этой задачи уже существует
+issues.tracking_already_started="`Вы уже начали отслеживать время для другой задачи!`"
+issues.stop_tracking=Остановить Таймер
+issues.stop_tracking_history=проработал(а) %[1]s %[2]s
+issues.cancel_tracking=Отменить отслеживание
issues.cancel_tracking_history=`отменил(а) отслеживание времени %s`
issues.del_time=Удалить этот журнал времени
+issues.add_time_history=Добавлено время %[1]s %[2]s
issues.del_time_history=`удалил(а) потраченное время %s`
+issues.add_time_manually=Добавить время вручную
issues.add_time_hours=Часы
issues.add_time_minutes=Минуты
issues.add_time_sum_to_small=Время не было введено.
@@ -1453,29 +1757,30 @@ issues.time_spent_total=Общее затраченное время
issues.time_spent_from_all_authors=`Общее затраченное время: %s`
issues.due_date=Срок выполнения
-issues.invalid_due_date_format=Дата окончания должна быть в формате 'гггг-мм-дд'.
-issues.error_modifying_due_date=Не удалось изменить срок выполнения.
-issues.error_removing_due_date=Не удалось убрать срок выполнения.
-issues.push_commit_1=добавил(а) %d коммит %s
-issues.push_commits_n=добавил(а) %d коммитов %s
-issues.force_push_codes=`форсировал(а) отправку изменений %[1]s %[4]s
вместо %[2]s
%[6]s`
+issues.invalid_due_date_format="Дата окончания должна быть в формате 'гггг-мм-дд'."
+issues.error_modifying_due_date="Не удалось изменить срок выполнения."
+issues.error_removing_due_date="Не удалось убрать срок выполнения."
+issues.push_commit_1="добавил(а) %d коммит %s"
+issues.push_commits_n="добавил(а) %d коммитов %s"
+issues.force_push_codes="`форсировал(а) отправку изменений %[1]s %[4]s
вместо %[2]s
%[6]s`"
issues.force_push_compare=Сравнить
-issues.due_date_form=гггг-мм-дд
-issues.due_date_form_add=Добавить срок выполнения
-issues.due_date_form_edit=Редактировать
-issues.due_date_form_remove=Удалить
-issues.due_date_not_set=Срок выполнения не установлен.
-issues.due_date_added=добавил(а) срок выполнения %s %s
-issues.due_date_modified=изменил(а) срок выполнения с %[2]s на %[1]s %[3]s
-issues.due_date_remove=удалён срок выполнения %s %s
-issues.due_date_overdue=Просроченные
-issues.due_date_invalid=Срок действия недействителен или находится за пределами допустимого диапазона. Пожалуйста, используйте формат 'гггг-мм-дд'.
+issues.due_date_form="гггг-мм-дд"
+issues.due_date_form_add="Добавить срок выполнения"
+issues.due_date_form_edit="Редактировать"
+issues.due_date_form_remove="Удалить"
+issues.due_date_not_writer="Вы должны иметь доступ на запись к этому репозиторию, чтобы обновить срок выполнения задачи."
+issues.due_date_not_set="Срок выполнения не установлен."
+issues.due_date_added="добавил(а) срок выполнения %s %s"
+issues.due_date_modified="изменил(а) срок выполнения с %[2]s на %[1]s %[3]s"
+issues.due_date_remove="удалён срок выполнения %s %s"
+issues.due_date_overdue="Просроченные"
+issues.due_date_invalid="Срок действия недействителен или находится за пределами допустимого диапазона. Пожалуйста, используйте формат 'гггг-мм-дд'."
issues.dependency.title=Зависимости
issues.dependency.issue_no_dependencies=Зависимостей нет.
issues.dependency.pr_no_dependencies=Зависимостей нет.
-issues.dependency.no_permission_1=У вас недостаточно прав для чтения %d зависимости
-issues.dependency.no_permission_n=У вас недостаточно прав для чтения %d зависимостей
-issues.dependency.no_permission.can_remove=У вас недостаточно прав для чтения этой зависимости, но вы можете удалить эту зависимость
+issues.dependency.no_permission_1="У вас недостаточно прав для чтения %d зависимости"
+issues.dependency.no_permission_n="У вас недостаточно прав для чтения %d зависимостей"
+issues.dependency.no_permission.can_remove="У вас недостаточно прав для чтения этой зависимости, но вы можете удалить эту зависимость"
issues.dependency.add=Добавить зависимость…
issues.dependency.cancel=Отменить
issues.dependency.remove=Удалить
@@ -1486,7 +1791,9 @@ issues.dependency.pr_closing_blockedby=Закрытие этого запрос
issues.dependency.issue_closing_blockedby=Закрытие этой задачи блокируется следующими задачами
issues.dependency.issue_close_blocks=Эта задача блокирует закрытие следующих задач
issues.dependency.pr_close_blocks=Этот запрос на слияние блокирует закрытие следующих задач
-issues.dependency.issue_batch_close_blocked=Невозможно пакетно закрыть выбранные задачи, потому что у задачи #%d остаются открытые зависимости
+issues.dependency.issue_close_blocked=Вы должны закрыть все задачи, блокирующие эту задачу, прежде чем ее можно будет закрыть.
+issues.dependency.issue_batch_close_blocked="Невозможно пакетно закрыть выбранные задачи, потому что у задачи #%d остаются открытые зависимости"
+issues.dependency.pr_close_blocked=Вы должны закрыть все задачи, блокирующие этот запрос на слияние, прежде чем его можно будет слить.
issues.dependency.blocks_short=Блоки
issues.dependency.blocked_by_short=Зависит от
issues.dependency.remove_header=Удалить зависимость
@@ -1497,22 +1804,27 @@ issues.dependency.add_error_same_issue=Вы не можете заставить
issues.dependency.add_error_dep_issue_not_exist=Зависимая задача не существует.
issues.dependency.add_error_dep_not_exist=Зависимости не существует.
issues.dependency.add_error_dep_exists=Зависимость уже существует.
+issues.dependency.add_error_cannot_create_circular=Вы не можете создать зависимость с двумя задачами, блокирующими друг друга.
issues.dependency.add_error_dep_not_same_repo=Обе задачи должны находиться в одном репозитории.
issues.review.self.approval=Вы не можете одобрить собственный запрос на слияние.
issues.review.self.rejection=Невозможно запрашивать изменения своего запроса на слияние.
-issues.review.approve=одобрил(а) эти изменения %s
+issues.review.approve="одобрил(а) эти изменения %s"
+issues.review.comment="рассмотрел(а) %s"
+issues.review.dismissed="отклонил(а) проверку %s %s"
issues.review.dismissed_label=Отклонено
issues.review.left_comment=оставил комментарий
issues.review.content.empty=Запрашивая изменения, вы обязаны оставить комментарий с пояснением своих пожеланий относительно запроса на слияние.
-issues.review.reject=запросил(а) изменения %s
-issues.review.wait=был запрошен для отзыва %s
-issues.review.add_review_request=запросил отзыв от %s %s
-issues.review.remove_review_request=удалена заявка на отзыв для %s %s
+issues.review.reject="запросил(а) изменения %s"
+issues.review.wait="был запрошен для отзыва %s"
+issues.review.add_review_request="запросил отзыв от %s %s"
+issues.review.remove_review_request="удалена заявка на отзыв для %s %s"
+issues.review.remove_review_request_self="отказался(ась) от проверки %s"
issues.review.pending=Ожидание
issues.review.pending.tooltip=Этот комментарий в настоящее время не виден другим пользователям. Чтобы отправить отложенные комментарии, выберите «%s» → «%s/%s/%s» в верхней части страницы.
issues.review.review=Рецензия
issues.review.reviewers=Рецензенты
issues.review.outdated=Устаревшее
+issues.review.outdated_description=Содержимое изменилось с момента создания этого комментария
issues.review.option.show_outdated_comments=Показать устаревшие комментарии
issues.review.option.hide_outdated_comments=Скрыть устаревшие комментарии
issues.review.show_outdated=Показать устаревшие
@@ -1523,6 +1835,12 @@ issues.review.resolve_conversation=Покинуть диалог
issues.review.un_resolve_conversation=Незавершённый разговор
issues.review.resolved_by=пометить этот разговор как разрешённый
issues.review.commented=Комментировать
+issues.review.official=Одобрено
+issues.review.requested=На рассмотрении
+issues.review.rejected=Запрошены изменения
+issues.review.stale=Будет обновлено после подтверждения
+issues.review.unofficial=Неучтенное одобрение
+issues.assignee.error=Не все назначения были добавлены из-за непредвиденной ошибки.
issues.reference_issue.body=Тело
issues.content_history.deleted=удалено
issues.content_history.edited=отредактировано
@@ -1537,6 +1855,9 @@ compare.compare_head=сравнить
pulls.desc=Включить запросы на слияние и проверки кода.
pulls.new=Новый запрос на слияние
+pulls.new.blocked_user=Не удаётся создать запрос на слияние, потому что вы заблокированы владельцем репозитория.
+pulls.new.must_collaborator=Вы должны быть соавтором, чтобы создать запрос на слияние.
+pulls.edit.already_changed=Не удаётся сохранить изменения в запросе на слияние. Похоже, содержимое уже было изменено другим пользователем. Пожалуйста, обновите страницу и попробуйте ещё раз, чтобы избежать перезаписи его изменений
pulls.view=Просмотр запроса на слияние
pulls.compare_changes=Новый запрос на слияние
pulls.allow_edits_from_maintainers=Разрешить редактирование сопровождающими
@@ -1557,12 +1878,15 @@ pulls.show_all_commits=Показать все коммиты
pulls.show_changes_since_your_last_review=Показать изменения с момента вашего последнего отзыва
pulls.showing_only_single_commit=Показать только изменения коммита %[1]s
pulls.showing_specified_commit_range=Показаны только изменения между %[1]s..%[2]
+pulls.select_commit_hold_shift_for_range=Выберите коммит. Удерживайте Shift + клик, чтобы выбрать диапазон
+pulls.review_only_possible_for_full_diff=Проверка возможна только при просмотре полного различия
pulls.filter_changes_by_commit=Фильтр по коммиту
pulls.nothing_to_compare=Нечего сравнивать, родительская и текущая ветка одинаковые.
+pulls.nothing_to_compare_have_tag=Выбранные ветки/теги идентичны.
pulls.nothing_to_compare_and_allow_empty_pr=Ветки идентичны. Этот PR будет пустым.
-pulls.has_pull_request=`Запрос на слияние этих веток уже существует: %[2]s#%[3]d`
+pulls.has_pull_request="`Запрос на слияние этих веток уже существует: %[2]s#%[3]d`"
pulls.create=Создать запрос на слияние
-pulls.title_desc=хочет влить %[1]d коммит(ов) из %[2]s
в %[3]s
+pulls.title_desc="хочет влить %[1]d коммит(ов) из %[2]s
в %[3]s
"
pulls.merged_title_desc=слито %[1]d коммит(ов) из %[2]s
в %[3]s
%[4]s
pulls.change_target_branch_at=`изменил(а) целевую ветку с %s на %s %s`
pulls.tab_conversation=Обсуждение
@@ -1576,46 +1900,66 @@ pulls.closed=Запрос на слияние закрыт
pulls.manually_merged=Слито вручную
pulls.merged_info_text=Ветку %s теперь можно удалить.
pulls.is_closed=Запрос на слияние закрыт.
-pulls.title_wip_desc=`Добавьте %s в начало заголовка для защиты от случайного досрочного принятия запроса на слияние`
+pulls.title_wip_desc="`Добавьте %s в начало заголовка для защиты от случайного досрочного принятия запроса на слияние`"
pulls.cannot_merge_work_in_progress=Этот запрос на слияние помечен как в процессе работы.
pulls.still_in_progress=Всё ещё в процессе?
pulls.add_prefix=Добавить %s префикс
pulls.remove_prefix=Удалить %s префикс
pulls.data_broken=Содержимое этого запроса было нарушено вследствие удаления информации форка.
pulls.files_conflicted=Этот запрос на слияние имеет изменения конфликтующие с целевой веткой.
-pulls.is_ancestor=Эта ветка уже включена в целевую ветку. Сливать нечего.
-pulls.is_empty=Изменения из этой ветки уже есть в целевой ветке. Это будет пустой коммит.
+pulls.is_checking=Проверка конфликтов слияния…
+pulls.is_ancestor="Эта ветка уже включена в целевую ветку. Сливать нечего."
+pulls.is_empty="Изменения из этой ветки уже есть в целевой ветке. Это будет пустой коммит."
pulls.required_status_check_failed=Некоторые необходимые проверки не были пройдены.
pulls.required_status_check_missing=Отсутствуют некоторые обязательные проверки.
pulls.required_status_check_administrator=Как администратор, вы все равно можете принять этот запрос на слияние.
-pulls.blocked_by_rejection=Официальный рецензент запросил изменения к этому запросу на слияние.
+pulls.blocked_by_approvals="Этот запрос на слияние пока не имеет достаточного количества одобрений. Получено %d из %d одобрений."
+pulls.blocked_by_approvals_whitelisted="Этому запросу на слияние не хватает необходимых подтверждений. Получено %d из %d подтверждений от пользователей или команд из белого списка."
+pulls.blocked_by_rejection="Официальный рецензент запросил изменения к этому запросу на слияние."
+pulls.blocked_by_official_review_requests="Для этого запроса на слияние требуются официальные проверки."
+pulls.blocked_by_outdated_branch="Этот запрос на слияние заблокирован, так как устарел."
+pulls.blocked_by_changed_protected_files_1="Этот запрос на слияние заблокирован, так как изменяет защищенный файл:"
+pulls.blocked_by_changed_protected_files_n="Этот запрос на слияние заблокирован, так как изменяет защищенные файлы:"
pulls.can_auto_merge_desc=Этот запрос на слияние может быть объединён автоматически.
pulls.cannot_auto_merge_desc=Этот запрос на слияние не может быть объединён автоматически.
pulls.cannot_auto_merge_helper=Пожалуйста, совершите слияние вручную для урегулирования конфликтов.
-pulls.num_conflicting_files_1=%d конфликтующий файл
-pulls.num_conflicting_files_n=%d конфликтующих файлов
-pulls.approve_count_1=%d одобрение
-pulls.approve_count_n=%d одобрений
-pulls.reject_count_1=%d запрос на изменение
-pulls.reject_count_n=%d запросов на изменение
-pulls.waiting_count_1=%d ожидает проверки
-pulls.waiting_count_n=%d ожидающих отзывов
+pulls.num_conflicting_files_1="%d конфликтующий файл"
+pulls.num_conflicting_files_n="%d конфликтующих файлов"
+pulls.approve_count_1="%d одобрение"
+pulls.approve_count_n="%d одобрений"
+pulls.reject_count_1="%d запрос на изменение"
+pulls.reject_count_n="%d запросов на изменение"
+pulls.waiting_count_1="%d ожидает проверки"
+pulls.waiting_count_n="%d ожидающих отзывов"
+pulls.wrong_commit_id="ID фиксации должен быть идентификатором фиксации в целевой ветке"
pulls.no_merge_desc=Запрос на слияние не может быть принят, так как отключены все настройки слияния.
pulls.no_merge_helper=Включите опции слияния в настройках репозитория или совершите слияние этого запроса вручную.
pulls.no_merge_wip=Данный запрос на слияние не может быть принят, поскольку он помечен как находящийся в разработке.
+pulls.no_merge_not_ready=Этот запрос не готов к слиянию, обратите внимания на ревью и проверки.
pulls.no_merge_access=У вас нет права для слияния данного запроса.
pulls.merge_pull_request=Создать коммит на слияние
+pulls.rebase_merge_pull_request=Перебазировать, затем перемотка вперёд
+pulls.rebase_merge_commit_pull_request=Перебазировать, затем создать коммит слияния
pulls.squash_merge_pull_request=Создать объединённый коммит
+pulls.fast_forward_only_merge_pull_request=Только перемотка вперед
pulls.merge_manually=Слито вручную
pulls.merge_commit_id=ID коммита слияния
pulls.require_signed_wont_sign=Данная ветка ожидает подписанные коммиты, однако слияние не будет подписано
pulls.invalid_merge_option=Этот параметр слияния нельзя использовать для этого запроса на слияние.
+pulls.merge_conflict=Ошибка слияния: Возник конфликт при слиянии. Подсказка: Попробуйте другую стратегию.
pulls.merge_conflict_summary=Сообщение об ошибке
+pulls.rebase_conflict=Ошибка слияния: Возник конфликт при перебазировании коммита: %[1]s. Совет: Попробуйте другую стратегию.
pulls.rebase_conflict_summary=Сообщение об ошибке
+pulls.unrelated_histories=Ошибка слияния: Ветки для слияния не имеют общей истории. Совет: Попробуйте другую стратегию.
+pulls.merge_out_of_date=Ошибка слияния: Во время генерации слияния базовая ветка была обновлена. Совет: Попробуйте снова.
+pulls.head_out_of_date=Ошибка слияния: Во время генерации слияния исходная ветка была обновлена. Совет: Попробуйте снова.
+pulls.has_merged=Ошибка: Запрос на слияние был объединен, вы не можете выполнить повторное слияние или изменить целевую ветку.
+pulls.push_rejected=Слияние не удалось: отправка была отклонена. Проверьте Git-хуки для этого репозитория.
pulls.push_rejected_summary=Полная ошибка отклонения
-pulls.open_unmerged_pull_exists=`Вы не можете снова открыть, поскольку уже существует запрос на слияние (#%d) из того же репозитория с той же информацией о слиянии и ожидающий слияния.`
+pulls.push_rejected_no_message=Слияние не удалось: отправка была отклонена, но сервер не указал причину.
Проверьте Git-хуки для этого репозитория
+pulls.open_unmerged_pull_exists="`Вы не можете снова открыть, поскольку уже существует запрос на слияние (#%d) из того же репозитория с той же информацией о слиянии и ожидающий слияния.`"
pulls.status_checking=Выполняются некоторые проверки
pulls.status_checks_success=Все проверки выполнены успешно
pulls.status_checks_warning=Некоторые проверки сообщили о предупреждениях
@@ -1631,11 +1975,16 @@ pulls.update_branch_success=Обновление ветки выполнено
pulls.update_not_allowed=У вас недостаточно прав для обновления ветки
pulls.outdated_with_base_branch=Эта ветка отстает от базовой ветки
pulls.close=Закрыть запрос на слияние
-pulls.closed_at=`закрыл этот запрос на слияние %[2]s`
-pulls.reopened_at=`переоткрыл этот запрос на слияние %[2]s`
+pulls.closed_at="`закрыл этот запрос на слияние %[2]s`"
+pulls.reopened_at="`переоткрыл этот запрос на слияние %[2]s`"
+pulls.cmd_instruction_hint=Просмотреть инструкции для командной строки
+pulls.cmd_instruction_checkout_title=Переключить
+pulls.cmd_instruction_checkout_desc=Из репозитория вашего проекта переключитесь на новую ветку и протестируйте изменения.
pulls.cmd_instruction_merge_title=Слить
pulls.cmd_instruction_merge_desc=Слить изменения и обновить в Gitea.
+pulls.cmd_instruction_merge_warning=Внимание: Эта операция не может объединить запрос на слияние, так как "автоопределение ручного слияния" не включено.
pulls.clear_merge_message=Очистить сообщение о слиянии
+pulls.clear_merge_message_hint=Очистка сообщения о слиянии удалит только содержимое сообщения коммита, но сохранит сгенерированные git дополнения, такие как "Соафторы…".
pulls.auto_merge_button_when_succeed=(При успешных проверках)
pulls.auto_merge_when_succeed=Слить автоматически после прохождения всех проверок
@@ -1652,9 +2001,17 @@ pulls.auto_merge_canceled_schedule_comment=`отменил автоматиче
pulls.delete.title=Удалить этот запрос на слияние?
pulls.delete.text=Вы действительно хотите удалить этот запрос на слияние? (Это навсегда удалит всё содержимое. Возможно, лучше закрыть запрос в архивных целях.)
+pulls.recently_pushed_new_branches=Вы отправили изменения в ветку %[1]s %[2]s
+pulls.upstream_diverging_prompt_behind_1=Эта ветка отстает на %[1]d коммит от %[2]s
+pulls.upstream_diverging_prompt_behind_n=Эта ветка отстает на %[1]d коммитов от %[2]s
+pulls.upstream_diverging_prompt_base_newer=В базовой ветке %s есть новые изменения
+pulls.upstream_diverging_merge=Синхронизировать ответвление
+pulls.upstream_diverging_merge_confirm=Вы хотите объединить "%[1]s" с "%[2]s"?
pull.deleted_branch=(удалена):%s
+pull.agit_documentation=Ознакомиться с документацией AGit
+comments.edit.already_changed=Не удаётся сохранить изменения в комментарии. Похоже, содержимое уже было изменено другим пользователем. Пожалуйста, обновите страницу и попробуйте ещё раз, чтобы избежать перезаписи этих изменений
milestones.new=Новый этап
milestones.closed=Закрыт %s
@@ -1662,12 +2019,14 @@ milestones.update_ago=Обновлено %s
milestones.no_due_date=Срок не указан
milestones.open=Открыть
milestones.close=Закрыть
+milestones.new_subheader=Контрольные точки могут помочь вам упорядочить задачи и отслеживать ход их выполнения.
+milestones.completeness=%d%% Завершено
milestones.create=Создать этап
milestones.title=Заголовок
milestones.desc=Описание
milestones.due_date=Дата окончания (опционально)
milestones.clear=Очистить
-milestones.invalid_due_date_format=Дата окончания должна быть в формате 'гггг-мм-дд'.
+milestones.invalid_due_date_format="Дата окончания должна быть в формате 'гггг-мм-дд'."
milestones.create_success=Этап «%s» создан.
milestones.edit=Редактировать этап
milestones.edit_subheader=Используйте лучшее описание контрольной точки, во избежание непонимания со стороны других людей.
@@ -1686,9 +2045,12 @@ milestones.filter_sort.most_issues=Большинство задач
milestones.filter_sort.least_issues=Меньшинство задач
signing.will_sign=Этот коммит будет подписан ключом «%s».
+signing.wont_sign.error=Произошла ошибка при проверке возможности подписания фиксации.
+signing.wont_sign.nokey=Нет доступного ключа для подписи этой фиксации.
signing.wont_sign.never=Коммиты никогда не подписываются.
signing.wont_sign.always=Коммиты всегда подписываются.
signing.wont_sign.pubkey=Этот коммит не будет подписан, поскольку к вашей учётной записи не привязано публичного ключа.
+signing.wont_sign.twofa=Для подписи коммитов необходимо включить двухфакторную аутентификацию.
signing.wont_sign.parentsigned=Этот коммит не будет подписан, так как родительский коммит не подписан.
signing.wont_sign.basesigned=Слияние не будет подписано, так как базовый коммит не подписан.
signing.wont_sign.headsigned=Слияние не будет подписано, так как головной коммит не подписан.
@@ -1724,8 +2086,13 @@ wiki.reserved_page=Имя страницы вики «%s» зарезервир
wiki.pages=Страницы
wiki.last_updated=Последнее обновление %s
wiki.page_name_desc=Введите имя страницы вики. Некоторые специальные имена: 'Home', '_Sidebar' и '_Footer'.
+wiki.original_git_entry_tooltip=Просмотр исходного Git файла вместо использования простой ссылки.
activity=Активность
+activity.navbar.pulse=Пульс
+activity.navbar.code_frequency=Кодовая частота
+activity.navbar.contributors=Соавторы
+activity.navbar.recent_commits=Последние коммиты
activity.period.filter_label=Период:
activity.period.daily=1 день
activity.period.halfweekly=3 дня
@@ -1769,6 +2136,7 @@ activity.title.releases_1=%d релиз
activity.title.releases_n=%d релизов
activity.title.releases_published_by=%s опубликованы %s
activity.published_release_label=Опубликовано
+activity.no_git_activity=В этом периоде не было активности в Git.
activity.git_stats_exclude_merges=За исключением слияний,
activity.git_stats_author_1=%d автор
activity.git_stats_author_n=%d автора(ов)
@@ -1790,16 +2158,27 @@ activity.git_stats_and_deletions=и
activity.git_stats_deletion_1=%d удаление
activity.git_stats_deletion_n=%d удалений
-contributors.contribution_type.commits=коммитов
+contributors.contribution_type.filter_label=Тип участия:
+contributors.contribution_type.commits=Коммиты
+contributors.contribution_type.additions=Добавления
+contributors.contribution_type.deletions=Удаления
settings=Настройки
+settings.desc=Настройки позволяют управлять параметрами репозитория.
settings.options=Репозиторий
+settings.public_access=Публичный доступ
+settings.public_access_desc=Настройка прав доступа публичных посетителей для переопределения значений по умолчанию для этого репозитория.
+settings.public_access.docs.not_set=Не задано: нет дополнительных разрешений на публичный доступ. Права посетителя определяются видимостью репозитория и правами участников.
+settings.public_access.docs.anonymous_read=Анонимное чтение: пользователи, не вошедшие в систему, могут получить доступ к модулю с правами на чтение.
+settings.public_access.docs.everyone_read=Чтение для всех: все вошедшие в систему пользователи могут получить доступ к модулю с правами на чтение. Право на чтение модулей задач/запросов на слияние также означает, что пользователи могут создавать новые задачи/запросы на слияние.
+settings.public_access.docs.everyone_write=Запись для всех: все вошедшие в систему пользователи имеют права на запись в модуль. Только модуль Wiki поддерживает это разрешение.
settings.collaboration=Соавторы
settings.collaboration.admin=Администратор
settings.collaboration.write=Запись
settings.collaboration.read=Просмотр
settings.collaboration.owner=Владелец
settings.collaboration.undefined=Не определено
+settings.collaboration.per_unit=Права доступа к модулям
settings.hooks=Веб-хуки
settings.githooks=Git-хуки
settings.basic_settings=Основные параметры
@@ -1809,12 +2188,15 @@ settings.mirror_settings.docs.disabled_pull_mirror.instructions=Настройт
settings.mirror_settings.docs.disabled_push_mirror.instructions=Настройте свой проект, чтобы автоматически получать коммиты, теги и ветки из другого репозитория.
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=В настоящее время это можно сделать только в меню «Новая миграция». Для получения дополнительной информации, пожалуйста, ознакомьтесь:
settings.mirror_settings.docs.disabled_push_mirror.info=Push-зеркала отключены администратором сайта.
+settings.mirror_settings.docs.no_new_mirrors=Ваш репозиторий зеркалирует изменения в другой репозиторий или из него. Пожалуйста, имейте в виду, что в данный момент невозможно создавать новые зеркала.
settings.mirror_settings.docs.can_still_use=Хотя вы не можете изменять существующие зеркала или создавать новые, вы можете по-прежнему использовать существующее зеркало.
settings.mirror_settings.docs.pull_mirror_instructions=Чтобы настроить pull-зеркало, пожалуйста, ознакомьтесь:
settings.mirror_settings.docs.more_information_if_disabled=Вы можете узнать больше о зеркалах push и pull здесь:
settings.mirror_settings.docs.doc_link_title=Как зеркалировать репозитории?
+settings.mirror_settings.docs.doc_link_pull_section=раздел документации "Извлечение из удаленного репозитория".
settings.mirror_settings.docs.pulling_remote_title=Получение из удалённого репозитория
settings.mirror_settings.mirrored_repository=Синхронизированное хранилище
+settings.mirror_settings.pushed_repository=Отправляемый репозиторий
settings.mirror_settings.direction=Направление
settings.mirror_settings.direction.pull=Отправка
settings.mirror_settings.direction.push=Отправка
@@ -1825,6 +2207,7 @@ settings.mirror_settings.push_mirror.add=Добавить Push-зеркало
settings.mirror_settings.push_mirror.edit_sync_time=Изменить интервал синхронизации зеркала
settings.sync_mirror=Синхронизировать
+settings.pull_mirror_sync_in_progress=В данный момент идёт извлечение изменений из удаленного репозитория %s.
settings.push_mirror_sync_in_progress=Идёт отправка изменений в удалённый репозиторий %s.
settings.site=Сайт
settings.update_settings=Обновить настройки
@@ -1835,6 +2218,8 @@ settings.branches.add_new_rule=Добавить новое правило
settings.advanced_settings=Расширенные настройки
settings.wiki_desc=Включить вики для репозитория
settings.use_internal_wiki=Использовать встроенную вики
+settings.default_wiki_branch_name=Название ветки вики по умолчанию
+settings.failed_to_change_default_wiki_branch=Не удалось изменить ветку вики по умолчанию.
settings.use_external_wiki=Использовать внешнюю вики
settings.external_wiki_url=URL внешней вики
settings.external_wiki_url_error=URL внешней вики не является корректным URL.
@@ -1864,6 +2249,10 @@ settings.pulls.default_delete_branch_after_merge=Удалить ветку за
settings.pulls.default_allow_edits_from_maintainers=По умолчанию разрешать редактирование сопровождающими
settings.releases_desc=Включить релизы
settings.packages_desc=Включить реестр пакетов
+settings.projects_desc=Включить проекты
+settings.projects_mode_desc=Режим проектов (какие типы проектов показывать)
+settings.projects_mode_repo=Только проекты репозитория
+settings.projects_mode_owner=Только проекты пользователя или организации
settings.projects_mode_all=Все проекты
settings.actions_desc=Включить действия репозитория
settings.admin_settings=Настройки администратора
@@ -1874,6 +2263,7 @@ settings.admin_indexer_commit_sha=Последний индексированн
settings.admin_indexer_unindexed=Не индексировано
settings.reindex_button=Добавить в очередь переиндексации
settings.reindex_requested=Переиндексация запрошена
+settings.admin_enable_close_issues_via_commit_in_any_branch=Закрывать задачи через коммиты в любой ветке
settings.danger_zone=Опасная зона
settings.new_owner_has_same_repo=У нового владельца уже есть хранилище с таким названием.
settings.convert=Преобразовать в обычный репозиторий
@@ -1889,14 +2279,17 @@ settings.convert_fork_succeed=Форк преобразован в обычны
settings.transfer=Передать права собственности
settings.transfer.rejected=Трансфер репозитория отменён.
settings.transfer.success=Трансфер репозитория успешно выполнен.
+settings.transfer.blocked_user=Не удалось передать репозиторий, так как вы заблокированы новым владельцем.
settings.transfer_abort=Отменить трансфер
settings.transfer_abort_invalid=Невозможно отменить трансфер несуществующего репозитория.
settings.transfer_abort_success=Передача репозитория %s успешно отменена.
settings.transfer_desc=Передать репозиторий другому пользователю или организации где у вас есть права администратора.
settings.transfer_form_title=Введите сопутствующую информацию для подтверждения операции:
+settings.transfer_in_progress=В данный момент выполняется передача. Отмените её, если хотите передать этот репозиторий другому пользователю.
settings.transfer_notices_1=- Вы можете потерять доступ, если новый владелец является отдельным пользователем.
settings.transfer_notices_2=- Вы сохраните доступ, если новым владельцем станет организация, владельцем которой вы являетесь.
settings.transfer_notices_3=- если репозиторий является приватным и передается отдельному пользователю, это действие позволяет убедиться, что пользователь имеет хотя бы права на чтение (и при необходимости изменяет права доступа).
+settings.transfer_notices_4=- Если репозиторий принадлежит организации, и вы передаете его другой организации или частному лицу, вы потеряете связи между задачами репозитория и доской проектов организации.
settings.transfer_owner=Новый владелец
settings.transfer_perform=Выполнить трансфер
settings.transfer_started=Репозиторий ожидает подтверждения передачи от «%s»
@@ -1907,9 +2300,13 @@ settings.trust_model.default=Модель доверия по умолчанию
settings.trust_model.default.desc=Использовать стандартную модель доверия репозитория для этой установки.
settings.trust_model.collaborator=Соавтор
settings.trust_model.collaborator.long=Соавтор: Доверять подписям соавторов
+settings.trust_model.collaborator.desc=Действительные подписи участников этого репозитория будут отмечены как "доверенные", независимо от того, соответствуют ли они автору коммита. В противном случае действительные подписи будут отмечены как "недоверенные", если подпись соответствует автору коммита, и "несоответствующие" в противном случае.
settings.trust_model.committer=Коммитер
+settings.trust_model.committer.long=Автор коммита: доверять подписям, соответствующим авторам коммитов. Это соответствует поведению GitHub и заставит коммиты, подписанные Gitea, указывать Gitea в качестве автора коммита.
+settings.trust_model.committer.desc=Действительные подписи будут отмечены как "доверенные" только если они соответствуют автору коммита, в противном случае они будут отмечены как "несоответствующие". Это заставит Gitea указываться в качестве автора подписанных коммитов, а фактический автор будет указан в трейлерах коммита как Co-authored-by: и Co-committed-by:. Ключ Gitea по умолчанию должен соответствовать пользователю в базе данных.
settings.trust_model.collaboratorcommitter=Соавтор+Коммитер
settings.trust_model.collaboratorcommitter.long=Соавтор+Коммитер: Доверять подписям соавторов, которые соответствуют автору коммита
+settings.trust_model.collaboratorcommitter.desc=Действительные подписи участников этого репозитория будут отмечены как "доверенные", если они соответствуют автору коммита. В противном случае действительные подписи будут отмечены как "недоверенные", если подпись соответствует автору коммита, и "несоответствующие" в противном случае. Это заставит Gitea указываться в качестве автора подписанных коммитов, а фактический автор будет указан в трейлерах коммита как Co-Authored-By: и Co-Committed-By:. Ключ Gitea по умолчанию должен соответствовать пользователю в базе данных.
settings.wiki_delete=Стереть данные вики
settings.wiki_delete_desc=Будьте внимательны! Как только вы удалите вики — пути назад не будет.
settings.wiki_delete_notices_1=- Это навсегда удалит и отключит вики для %s.
@@ -1918,6 +2315,7 @@ settings.wiki_deletion_success=Данные вики удалены.
settings.delete=Удалить этот репозиторий
settings.delete_desc=Будьте внимательны! Как только вы удалите репозиторий — пути назад не будет.
settings.delete_notices_1=- Эта операция НЕ МОЖЕТ быть отменена.
+settings.delete_notices_2=- Эта операция навсегда удалит репозиторий %s, включая код, задачи, комментарии, данные вики и настройки участников.
settings.delete_notices_fork_1=- Все форки станут независимыми репозиториями после удаления.
settings.deletion_success=Репозиторий удалён.
settings.update_settings_success=Настройки репозитория обновлены.
@@ -1928,6 +2326,7 @@ settings.add_collaborator_success=Соавтор добавлен.
settings.add_collaborator_inactive_user=Невозможно добавить неактивного пользователя как соавтора.
settings.add_collaborator_owner=Невозможно добавить владельца в качестве соавтора.
settings.add_collaborator_duplicate=Соавтор уже добавлен в этот репозиторий.
+settings.add_collaborator.blocked_user=Соавтор заблокирован владельцем репозитория или наоборот.
settings.delete_collaborator=Удалить
settings.collaborator_deletion=Удалить соавтора
settings.collaborator_deletion_desc=Этот пользователь больше не будет иметь доступа для совместной работы в этом репозитории после удаления. Вы хотите продолжить?
@@ -1938,31 +2337,38 @@ settings.team_not_in_organization=Команда не в той же орган
settings.teams=Команды
settings.add_team=Добавить команду
settings.add_team_duplicate=Команда уже имеет репозиторий
+settings.add_team_success=Команда теперь имеет доступ к репозиторию.
+settings.change_team_permission_tip=Права команды настраиваются на странице настроек команды и не могут быть изменены для каждого репозитория отдельно
settings.delete_team_tip=Эта команда имеет доступ ко всем репозиториям и не может быть удалена
settings.remove_team_success=Доступ команды к репозиторию удалён.
settings.add_webhook=Добавить веб-хук
-settings.add_webhook.invalid_channel_name=Название канала веб-хука не может быть пустым или состоять только из символа #.
-settings.hooks_desc=Веб-хуки позволяют внешним службам получать уведомления при возникновении определенных событий на Gitea. При возникновении указанных событий мы отправим запрос POST на каждый заданный вами URL. Узнать больше можно в нашем руководстве по веб-хукам.
+settings.add_webhook.invalid_channel_name="Название канала веб-хука не может быть пустым или состоять только из символа #."
+settings.hooks_desc="Веб-хуки позволяют внешним службам получать уведомления при возникновении определенных событий на Gitea. При возникновении указанных событий мы отправим запрос POST на каждый заданный вами URL. Узнать больше можно в нашем руководстве по веб-хукам."
settings.webhook_deletion=Удалить веб-хук
settings.webhook_deletion_desc=Удаление этого веб-хука приведет к удалению всей связанной с ним информации, включая историю. Хотите продолжить?
settings.webhook_deletion_success=Веб-хук был удалён.
+settings.webhook.test_delivery=Проверить отправку
+settings.webhook.test_delivery_desc=Протестировать этот веб-хук с тестовой отправкой.
+settings.webhook.test_delivery_desc_disabled=Чтобы протестировать этот веб-хук с помощью имитации события, активируйте его.
settings.webhook.request=Запрос
settings.webhook.response=Ответ
settings.webhook.headers=Заголовки
settings.webhook.payload=Содержимое
settings.webhook.body=Тело ответа
settings.webhook.replay.description=Повторить этот веб-хук.
+settings.webhook.replay.description_disabled=Для повторной отправки веб-хука активируйте его.
settings.webhook.delivery.success=Событие было добавлено в очередь доставки. Может пройти несколько секунд, прежде чем оно отобразится в истории.
-settings.githooks_desc=Git-хуки предоставляются самим Git. Вы можете изменять файлы хуков из списка ниже, чтобы настроить собственные операции.
+settings.githooks_desc="Git-хуки предоставляются самим Git. Вы можете изменять файлы хуков из списка ниже, чтобы настроить собственные операции."
settings.githook_edit_desc=Если хук не активен, будет подставлен пример содержимого. Пустое значение в этом поле приведёт к отключению хука.
settings.githook_name=Название хукa
settings.githook_content=Содержимое хука
settings.update_githook=Обновить хук
-settings.add_webhook_desc=Gitea будет оправлять POST
запросы на указанный URL адрес, с информацией о происходящих событиях. Подробности на странице инструкции по использованию веб-хуков.
+settings.add_webhook_desc="Gitea будет оправлять POST
запросы на указанный URL адрес, с информацией о происходящих событиях. Подробности на странице инструкции по использованию веб-хуков."
settings.payload_url=URL обработчика
settings.http_method=Метод HTTP
settings.content_type=Тип содержимого
settings.secret=Секретный ключ
+settings.webhook_secret_desc=Если сервер веб-хука поддерживает использование секретного ключа, вы можете следовать инструкциям веб-хука и заполнить его здесь.
settings.slack_username=Имя пользователя
settings.slack_icon_url=URL иконки
settings.slack_color=Цвет
@@ -1981,14 +2387,18 @@ settings.event_fork=Форкнуть
settings.event_fork_desc=Репозиторий форкнут.
settings.event_wiki=Вики
settings.event_wiki_desc=Страница вики создана, переименована, изменена или удалена.
+settings.event_statuses=Статусы
+settings.event_statuses_desc=Статус коммита обновлен через API.
settings.event_release=Релиз
settings.event_release_desc=Релиз опубликован, обновлён или удалён из репозитория.
settings.event_push=Отправка
+settings.event_force_push=Принудительная отправка
settings.event_push_desc=Отправка в репозиторий.
settings.event_repository=Репозиторий
settings.event_repository_desc=Репозиторий создан или удален.
settings.event_header_issue=События задачи
settings.event_issues=Задачи
+settings.event_issues_desc=Задача создана, закрыта, переоткрыта, отредактирована или удалена.
settings.event_issue_assign=Назначена задача
settings.event_issue_assign_desc=Задача назначена или снята с назначения.
settings.event_issue_label=Ярлык задачи
@@ -1999,6 +2409,7 @@ settings.event_issue_comment=Комментарии в задаче
settings.event_issue_comment_desc=Комментарий создан, изменён или удалён.
settings.event_header_pull_request=События запроса на слияние
settings.event_pull_request=Запрос на слияние
+settings.event_pull_request_desc=Запрос на слияние создан, закрыт, переоткрыт, отредактирован или удален.
settings.event_pull_request_assign=Запроса на слияние назначен
settings.event_pull_request_assign_desc=Запрос на слияние назначен или не назначен.
settings.event_pull_request_label=Запрос на слияние отмечен
@@ -2015,9 +2426,17 @@ settings.event_pull_request_review_request=Запрошена рецензия
settings.event_pull_request_review_request_desc=Создан или удалён запрос на рецензию для запроса на слияние.
settings.event_pull_request_approvals=Утверждения запросов на слияние
settings.event_pull_request_merge=Удовлетворение запросов на слияние
+settings.event_header_workflow=События рабочего процесса
+settings.event_workflow_run=Запуск рабочего процесса
+settings.event_workflow_run_desc=Запуск рабочего процесса Gitea Actions в очереди, ожидающий, выполняющийся или завершенный.
+settings.event_workflow_job=Задания рабочего процесса
+settings.event_workflow_job_desc=Задания рабочего процесса Gitea Actions в очереди, ожидающие, выполняющиеся или завершенные.
settings.event_package=Пакеты
settings.event_package_desc=Пакет создан или удален в репозитории.
settings.branch_filter=Фильтр веток
+settings.branch_filter_desc_1=Ветка (и имя ref) допускает список событий push, создания ветвей и удаления ветки, указанных как шаблон glob. Если пусто или *
сообщаются события для всех ветвей и тегов.
+settings.branch_filter_desc_2=Используйте префикс refs/heads/
или refs/tags/
для совпадения полного имени ссылки.
+settings.branch_filter_desc_doc="Смотрите %[2]s документацию для получения информации о синтаксисе."
settings.authorization_header=Заголовок Authorization
settings.authorization_header_desc=Будет включён в качестве заголовка авторизации для запросов. Примеры: %s.
settings.active=Активный
@@ -2031,7 +2450,7 @@ settings.hook_type=Тип хука
settings.slack_token=Slack токен
settings.slack_domain=Домен
settings.slack_channel=Канал
-settings.add_web_hook_desc=Интегрировать %s в ваш репозиторий.
+settings.add_web_hook_desc="Интегрировать %s в ваш репозиторий."
settings.web_hook_name_gitea=Gitea
settings.web_hook_name_gogs=Gogs
settings.web_hook_name_slack=Slack
@@ -2062,38 +2481,73 @@ settings.add_key_success=Ключ развёртывания «%s» добавл
settings.deploy_key_deletion=Удалить ключ развёртывания
settings.deploy_key_deletion_desc=Удаление ключа развёртывания сделает невозможным доступ к репозиторию с его помощью. Вы уверены?
settings.deploy_key_deletion_success=Ключ развёртывания удалён.
+settings.branches=Ветки
+settings.protected_branch=Защита веток
settings.protected_branch.save_rule=Сохранить правило
settings.protected_branch.delete_rule=Удалить правило
settings.protected_branch_can_push=Разрешить отправку?
settings.protected_branch_can_push_yes=Вы можете выполнять отправку
settings.protected_branch_can_push_no=Вы не можете выполнять отправку
+settings.branch_protection=Правила защиты ветки '%s'
settings.protect_this_branch=Защитить эту ветку
settings.protect_this_branch_desc=Предотвращает удаление, ограничивает Push и слияние Git в ветку.
settings.protect_disable_push=Отключить отправку
settings.protect_disable_push_desc=Отправка не будет разрешена в эту ветку.
+settings.protect_disable_force_push=Запретить принудительную отправку
+settings.protect_disable_force_push_desc=Принудительная отправка в эту ветку будет запрещена.
settings.protect_enable_push=Включить отправку
settings.protect_enable_push_desc=Любому, у кого есть доступ на запись, будет разрешена отправка изменений в эту ветку (но не принудительная отправка).
+settings.protect_enable_force_push_all=Разрешить принудительную отправку всем
+settings.protect_enable_force_push_all_desc=Любой пользователь с правами на отправку сможет выполнять принудительную отправку в эту ветку.
+settings.protect_enable_force_push_allowlist=Ограниченная принудительная отправка по белому списку
+settings.protect_enable_force_push_allowlist_desc=Только пользователи или команды из белого списка с правами на отправку смогут выполнять принудительную отправку в эту ветку.
settings.protect_enable_merge=Разрешить всем
settings.protect_enable_merge_desc=Все, у кого есть доступ на запись, смогут удовлетворять запросы на слияние в эту ветку.
+settings.protect_whitelist_committers=Ограничение отправки по белому списку
+settings.protect_whitelist_committers_desc=Только пользователям или командам из белого списка будет разрешена отправка изменений в эту ветку (но не принудительная отправка).
+settings.protect_whitelist_deploy_keys=Разрешить отправку ключам развертывания из белого списка с правами на запись.
+settings.protect_whitelist_users=Пользователи, которые могут отправлять изменения в эту ветку:
+settings.protect_whitelist_teams=Команды, члены которых могут отправлять изменения в эту ветку:
+settings.protect_force_push_allowlist_users=Пользователи из списка допущенных с правом принудительной отправки:
+settings.protect_force_push_allowlist_teams=Команды из списка допущенных с правом принудительной отправки:
+settings.protect_force_push_allowlist_deploy_keys=Ключи развёртывания из списка допущенных с правом отправки для принудительной отправки.
+settings.protect_merge_whitelist_committers=Ограничить право на слияние белым списком
+settings.protect_merge_whitelist_committers_desc=Только пользователи или команды из белого списка смогут объединять запросы на слияние в эту ветку.
+settings.protect_merge_whitelist_users=Пользователи из белого списка с правом на слияние:
+settings.protect_merge_whitelist_teams=Команды из белого списка, участники которых обладают правом на слияние:
settings.protect_check_status_contexts=Включить проверку статуса
settings.protect_status_check_patterns=Шаблоны проверки состояния:
settings.protect_status_check_patterns_desc=Добавьте шаблоны, чтобы указать, какие проверки состояния должны быть пройдены, прежде чем ветви могут быть объединены в ветвь, соответствующую этому правилу. В каждой строке указывается шаблон. Шаблоны не могут быть пустыми.
+settings.protect_check_status_contexts_desc=Требовать успешного прохождения проверок статуса перед слиянием. При включении коммиты сначала должны быть отправлены в другую ветку, а затем объединены или отправлены напрямую в ветку, соответствующую этому правилу, после успешного прохождения проверок. Если контексты не указаны, последний коммит должен быть успешным независимо от контекста.
settings.protect_check_status_contexts_list=Проверки состояния за последнюю неделю для этого репозитория
settings.protect_status_check_matched=Совпало
settings.protect_invalid_status_check_pattern=Неверный шаблон проверки состояния: «%s».
settings.protect_no_valid_status_check_patterns=Нет допустимых шаблонов проверки состояния.
settings.protect_required_approvals=Необходимые одобрения:
+settings.protect_required_approvals_desc=Разрешить принятие запроса на слияние только с достаточным количеством подтверждений. Подтверждения могут быть от пользователей или команд из белого списка или от любого пользователя с правами на запись.
+settings.protect_approvals_whitelist_enabled=Ограничить подтверждения пользователями из белого списка
+settings.protect_approvals_whitelist_enabled_desc=Только проверки от пользователей или команд из белого списка будут учитываться при подсчете необходимых подтверждений. Без белого списка подтверждений учитываются проверки от всех, у кого есть права на запись.
+settings.protect_approvals_whitelist_users=Проверяющие из белого списка:
+settings.protect_approvals_whitelist_teams=Команды из белого списка для проверок:
settings.dismiss_stale_approvals=Отклонить устаревшие разрешения
settings.dismiss_stale_approvals_desc=Когда новые коммиты, изменяющие содержимое запроса на слияние, отправляются в ветку, старые разрешения будут отклонены.
+settings.ignore_stale_approvals=Игнорировать устаревшие подтверждения
+settings.ignore_stale_approvals_desc=Не учитывать одобрения, сделанные для предыдущих коммитов (устаревшие рецензии), при подсчёте количества одобрений запроса на слияние. Неактуально, если устаревшие рецензии уже отклонены.
settings.require_signed_commits=Требовать подписанные коммиты
settings.require_signed_commits_desc=Отклонить отправку изменений в эту ветку, если они не подписаны или не проверяемы.
settings.protect_branch_name_pattern=Шаблон имени для защищённых веток
+settings.protect_branch_name_pattern_desc="Шаблоны имен защищенных веток. См. документацию для синтаксиса шаблонов. Примеры: main, release/**"
settings.protect_patterns=Шаблоны
-settings.protect_protected_file_patterns=Шаблоны защищённых файлов (разделённые точкой с запятой ';'):
-settings.protect_unprotected_file_patterns=Шаблоны незащищённых файлов (разделённые точкой с запятой ';'):
+settings.protect_protected_file_patterns="Шаблоны защищённых файлов (разделённые точкой с запятой ';'):"
+settings.protect_protected_file_patterns_desc="Защищенные файлы нельзя изменять напрямую, даже если у пользователя есть права на добавление, редактирование или удаление файлов в этой ветке. Несколько шаблонов можно разделить точкой с запятой (';'). См. документацию по %[2]s для синтаксиса шаблонов. Примеры: .drone.yml
, /docs/**/*.txt
."
+settings.protect_unprotected_file_patterns="Шаблоны незащищённых файлов (разделённые точкой с запятой ';'):"
+settings.protect_unprotected_file_patterns_desc="Незащищенные файлы, которые можно изменять напрямую, если у пользователя есть права на запись, обходя ограничения на отправку. Несколько шаблонов можно разделить точкой с запятой (';'). См. документацию по %[2]s для синтаксиса шаблонов. Примеры: .drone.yml
, /docs/**/*.txt
."
+settings.add_protected_branch=Включить защиту
+settings.delete_protected_branch=Отключить защиту
settings.update_protect_branch_success=Защита веток по правилу «%s» изменена.
settings.remove_protected_branch_success=Защита веток по правилу «%s» удалена.
settings.remove_protected_branch_failed=Не удалось удалить правило защиты веток «%s».
+settings.protected_branch_deletion=Отключение защиты ветки
settings.protected_branch_deletion_desc=Любой пользователь с разрешениями на запись сможет выполнять push в эту ветку. Вы уверены?
settings.block_rejected_reviews=Блокировка слияния по отклоненным отзывам
settings.block_rejected_reviews_desc=Слияние будет невозможно, если официальными рецензентами будут запрошены изменения, даже если имеется достаточное количество одобрений.
@@ -2101,8 +2555,11 @@ settings.block_on_official_review_requests=Блокировать слияние
settings.block_on_official_review_requests_desc=Слияние невозможно, если не имеется достаточное количество одобрений официальных представителей.
settings.block_outdated_branch=Блокировать слияние, если запрос на слияние устарел
settings.block_outdated_branch_desc=Слияние будет невозможно, если головная ветвь находится позади базовой ветви.
+settings.block_admin_merge_override=Администраторы должны соблюдать правила защиты веток
+settings.block_admin_merge_override_desc=Администраторы должны соблюдать правила защиты веток и не могут их обходить.
settings.default_branch_desc=Главная ветка является "базовой" для вашего репозитория, на которую по умолчанию направлены все запросы на слияние и которая является лицом вашего репозитория. Первое, что увидит посетитель — это содержимое главной ветки. Выберите её из уже существующих:
settings.merge_style_desc=Стили слияния
+settings.default_merge_style_desc=Стиль слияния по умолчанию
settings.choose_branch=Выберите ветку…
settings.no_protected_branch=Нет защищённых веток.
settings.edit_protected_branch=Редактировать
@@ -2118,21 +2575,39 @@ settings.tags.protection.allowed.teams=Разрешенные команды
settings.tags.protection.allowed.noone=Ни один
settings.tags.protection.create=Защитить тег
settings.tags.protection.none=Нет защищенных тегов.
+settings.tags.protection.pattern.description="Вы можете использовать краткое имя, glob-шаблон или регулярное выражение для сопоставления с несколькими тегами. Подробнее можно ознакомиться в руководстве по защищенным тегам."
settings.bot_token=Токен для бота
settings.chat_id=ID чата
+settings.thread_id=ID потока
settings.matrix.homeserver_url=URL домашнего сервера
settings.matrix.room_id=ID комнаты
settings.matrix.message_type=Тип сообщения
+settings.visibility.private.button=Сделать приватным
+settings.visibility.private.text=Изменение видимости на приватное не только сделает репозиторий видимым только для разрешённых участников, но и может разорвать связь между ним и ответвлениями (форки), отслеживающих и добавивших его в избранное.
+settings.visibility.private.bullet_title=Изменение видимости на приватную приведет к следующему:
+settings.visibility.private.bullet_one=Сделать репозиторий видимым только для разрешенных участников.
+settings.visibility.private.bullet_two=Может удалить связь между ним и ответвлениями (форки), отслеживающими и добавившими в избранное этот репозиторий.
+settings.visibility.public.button=Сделать публичным
+settings.visibility.public.text=Изменение видимости на публичную сделает репозиторий видимым для всех.
+settings.visibility.public.bullet_title=Изменение видимости на публичную приведет к:
+settings.visibility.public.bullet_one=Сделать репозиторий видимым для всех.
+settings.visibility.success=Видимость репозитория изменена.
+settings.visibility.error=Произошла ошибка при попытке изменить видимость репозитория.
+settings.visibility.fork_error=Невозможно изменить видимость ответвлённого репозитория.
settings.archive.button=Архивировать репозиторий
settings.archive.header=Архивировать этот репозиторий
+settings.archive.text=Архивация сделает репозиторий полностью доступным только для чтения. Он будет скрыт с панели управления. Никто (даже вы!) не сможет создавать новые коммиты, задачи или запросы на слияние.
settings.archive.success=Репозиторий был успешно архивирован.
settings.archive.error=Ошибка при попытке архивировать репозиторий. Смотрите логи для получения подробностей.
settings.archive.error_ismirror=Вы не можете поместить зеркалируемый репозиторий в архив.
settings.archive.branchsettings_unavailable=Настройки ветки недоступны, если репозиторий архивирован.
settings.archive.tagsettings_unavailable=Настройки тегов недоступны, если репозиторий архивирован.
+settings.archive.mirrors_unavailable=Зеркала недоступны, если репозиторий архивирован.
settings.unarchive.button=Разархивировать репозиторий
settings.unarchive.header=Вернуть этот репозиторий из архива
+settings.unarchive.text=Разархивация восстановит возможность получения коммитов и отправки изменений, а также создания новых задач и запросов на слияние.
settings.unarchive.success=Репозиторий был успешно разархивирован.
+settings.unarchive.error=Произошла ошибка при попытке разархивировать репозиторий. Подробности смотрите в логах.
settings.update_avatar_success=Аватар репозитория обновлён.
settings.lfs=LFS
settings.lfs_filelist=Файлы LFS хранятся в этом репозитории
@@ -2148,9 +2623,11 @@ settings.lfs_invalid_locking_path=Недопустимый путь: %s
settings.lfs_invalid_lock_directory=Невозможно заблокировать каталог: %s
settings.lfs_lock_already_exists=Блокировка уже существует: %s
settings.lfs_lock=Заблокировать
+settings.lfs_lock_path=Путь к файлу для блокировки…
settings.lfs_locks_no_locks=Нет блокировки
settings.lfs_lock_file_no_exist=Заблокированный файл не существует в ветке по умолчанию
settings.lfs_force_unlock=Принудительная разблокировка
+settings.lfs_pointers.found=Найдено %d указателей blob — %d связанных, %d несвязанных (%d отсутствует в хранилище)
settings.lfs_pointers.sha=Blob SHA
settings.lfs_pointers.oid=OID
settings.lfs_pointers.inRepo=В репозитории
@@ -2196,6 +2673,7 @@ diff.show_more=Показать больше
diff.load=Загрузить разницу
diff.generated=сгенерированный
diff.vendored=поставляемый
+diff.comment.add_line_comment=Добавить комментарий к строке
diff.comment.placeholder=Оставить комментарий
diff.comment.add_single_comment=Добавить простой комментарий
diff.comment.add_review_comment=Добавить комментарий
@@ -2211,12 +2689,15 @@ diff.review.reject=Запрос изменений
diff.review.self_approve=Авторы запросов на слияние не могут одобрять собственные запросы
diff.committed_by=коммит произвёл
diff.protected=Защищено
-diff.image.side_by_side=`Режим "рядом"`
+diff.image.side_by_side=Режим "рядом"
diff.image.swipe=Свайп
diff.image.overlay=Наложение
diff.has_escaped=В этой строке есть невидимые символы Юникода
diff.show_file_tree=Показать дерево файлов
diff.hide_file_tree=Скрыть дерево файлов
+diff.submodule_added=Подмодуль %[1]s добавлен в %[2]s
+diff.submodule_deleted=Подмодуль %[1]s удален из %[2]s
+diff.submodule_updated=Подмодуль %[1]s обновлен: %[2]s
releases.desc=Релизы позволяют организовать хранение готовых сборок проекта в строгом хронологически верном порядке.
release.releases=Релизы
@@ -2226,6 +2707,7 @@ release.new_release=Новый релиз
release.draft=Черновик
release.prerelease=Пре-релиз
release.stable=Стабильный
+release.latest=Последний
release.compare=Сравнить
release.edit=редактировать
release.ahead.commits=%d коммиты
@@ -2251,6 +2733,7 @@ release.edit_release=Редактировать релиз
release.delete_release=Удалить этот релиз
release.delete_tag=Удалить тег
release.deletion=Удаление релиза
+release.deletion_desc=Удаление релиза только удаляет его из Gitea. Это действие не затронет Git-тег, содержимое вашего репозитория или его историю. Продолжить?
release.deletion_success=Релиз удалён.
release.deletion_tag_desc=Этот тег будет удалён из хранилища. Содержимое хранилища и история не изменятся. Продолжить?
release.deletion_tag_success=Тег удалён.
@@ -2285,6 +2768,7 @@ branch.restore_success=Ветка «%s» восстановлена.
branch.restore_failed=Не удалось восстановить ветку «%s».
branch.protected_deletion_failed=Ветка «%s» защищена. Её нельзя удалить.
branch.default_deletion_failed=Ветка «%s» является веткой по умолчанию. Её нельзя удалить.
+branch.default_branch_not_exist=Ветка по умолчанию "%s" не существует.
branch.restore=Восстановить ветку «%s»
branch.download=Скачать ветку «%s»
branch.rename=Переименовать ветку «%s»
@@ -2299,6 +2783,10 @@ branch.create_branch_operation=Создать ветку
branch.new_branch=Создать новую ветку
branch.new_branch_from=Создать новую ветку из «%s»
branch.renamed=Ветка %s была переименована в %s.
+branch.rename_default_or_protected_branch_error=Переименовывать ветку по умолчанию или защищенные ветки могут только администраторы.
+branch.rename_protected_branch_failed=Эта ветвь защищена глобальными правилами защиты.
+branch.commits_divergence_from=Расхождение коммитов: отстает на %[1]d и опережает на %[2]d от %[3]s
+branch.commits_no_divergence=То же самое, что и в ветке %[1]s
tag.create_tag=Создать тег %s
tag.create_tag_operation=Создать тег
@@ -2312,14 +2800,23 @@ topic.done=Сохранить
topic.count_prompt=Нельзя выбрать более 25 тем
topic.format_prompt=Темы должны начинаться с буквы или цифры и могут содержать дефисы («-») и точки («.»). Длина темы не должна превышать 35 символов. Все буквы должны быть строчными.
+find_file.follow_symlink=Следовать этой символической ссылке
find_file.go_to_file=Перейти к файлу
find_file.no_matching=Совпадающих файлов не найдено
error.csv.too_large=Не удается отобразить этот файл, потому что он слишком большой.
error.csv.unexpected=Не удается отобразить этот файл, потому что он содержит неожиданный символ в строке %d и столбце %d.
error.csv.invalid_field_count=Не удается отобразить этот файл, потому что он имеет неправильное количество полей в строке %d.
+error.broken_git_hook="Похоже, Git-хуки этого репозитория не работают. Выполните указания из документации, чтобы исправить их, а затем делайте коммиты, чтобы обновить статус."
[graphs]
+component_loading=Загрузка %s…
+component_loading_failed=Не удалось загрузить %s
+component_loading_info=Это может занять некоторое время…
+component_failed_to_load=Произошла непредвиденная ошибка.
+code_frequency.what=частота кода
+contributors.what=вклады
+recent_commits.what=последние коммиты
[org]
org_name_holder=Название организации
@@ -2344,6 +2841,7 @@ team_permission_desc=Разрешение
team_unit_desc=Разрешить доступ к разделам репозитория
team_unit_disabled=(Отключено)
+form.name_been_taken=Название организации "%s" уже занято.
form.name_reserved=Название организации «%s» зарезервировано.
form.name_pattern_not_allowed=Шаблон «%s» не допускается в названии организации.
form.create_org_not_allowed=Этому пользователю не разрешено создавать организацию.
@@ -2351,11 +2849,17 @@ form.create_org_not_allowed=Этому пользователю не разре
settings=Настройки
settings.options=Организация
settings.full_name=Полное имя
+settings.email=Адрес электронной почты
settings.website=Сайт
settings.location=Местоположение
settings.permission=Разрешения
settings.repoadminchangeteam=Администратор репозитория может добавлять и удалять права доступа для команд
settings.visibility=Видимость
+settings.change_visibility=Изменить видимость
+settings.change_visibility_notices_1=Если организация будет преобразована в приватную, у добавивших в избранное эти репозитории исчезнут из избранного безвозвратно.
+settings.change_visibility_notices_2=При переводе организации в приватный режим пользователи, не входящие в неё, лишатся доступа к её репозиториям.
+settings.change_visibility_success=Видимость организации %s успешно изменена.
+settings.visibility_desc=Измените, кто может видеть организацию и ее репозитории.
settings.visibility.public=Публичный
settings.visibility.limited=Ограниченный (Видимый только выполнившим вход пользователям)
settings.visibility.limited_shortname=Ограниченный
@@ -2365,12 +2869,27 @@ settings.visibility.private_shortname=Приватный
settings.update_settings=Обновить настройки
settings.update_setting_success=Настройки организации обновлены.
+settings.rename=Переименовать организацию
+settings.rename_desc=Изменение названия организации также изменит URL организации и освободит старое название.
+settings.rename_success=Организация %[1]s успешно переименована в %[2]s.
+settings.rename_no_change=Название организации не изменилось.
+settings.rename_new_org_name=Новое название организации
+settings.rename_failed=Переименовать организацию не удалось из-за внутренней ошибки
+settings.rename_notices_1=Эта операция НЕ МОЖЕТ быть отменена.
+settings.rename_notices_2=Старое название будет перенаправлять на новое до тех пор, пока его не займут.
settings.update_avatar_success=Аватар организации обновлён.
settings.delete=Удалить организацию
settings.delete_account=Удалить эту организацию
settings.delete_prompt=Это действие БЕЗВОЗВРАТНО удалит эту организацию навсегда!
+settings.name_confirm=Введите название организации для подтверждения:
+settings.delete_notices_1=Эта операция НЕ МОЖЕТ быть отменена.
+settings.delete_notices_2=Эта операция навсегда удалит все репозитории из %s, включая код, задачи, комментарии, данные вики и настройки участников.
+settings.delete_notices_3=Эта операция навсегда удалит все пакеты из %s.
+settings.delete_notices_4=Эта операция навсегда удалит все проекты из %s.
settings.confirm_delete_account=Подтвердить удаление
+settings.delete_failed=Не удалось удалить организацию из-за внутренней ошибки
+settings.delete_successful=Организация %s успешно удалена.
settings.hooks_desc=Добавьте веб-хуки, которые будет вызываться для всех репозиториев под этой организации.
settings.labels_desc=Добавьте метки, которые могут быть использованы в задачах для всех репозиториев этой организации.
@@ -2397,6 +2916,7 @@ teams.can_create_org_repo=Создать репозитории
teams.can_create_org_repo_helper=Участники могут создавать новые репозитории в организации. Создатель получит администраторский доступ к новому репозиторию.
teams.none_access=Нет доступа
teams.none_access_helper=Участники не могут просматривать или выполнять любые другие действия над этим элементом. Это не влияет на публичные репозитории.
+teams.general_access=Общий доступ
teams.general_access_helper=Разрешения участников будут определяться таблицей разрешений ниже.
teams.read_access=Чтение
teams.read_access_helper=Участники могут просматривать и клонировать командные репозитории.
@@ -2425,9 +2945,11 @@ teams.remove_all_repos_title=Удалить все репозитории ком
teams.remove_all_repos_desc=Удаляет все репозитории из команды.
teams.add_all_repos_title=Добавить все репозитории
teams.add_all_repos_desc=Добавит все репозитории организации в команду.
+teams.add_nonexistent_repo="Репозиторий, который вы пытаетесь добавить, не существует. Сначала создайте его."
teams.add_duplicate_users=Пользователь уже состоит в команде.
teams.repos.none=Для этой команды нет доступных репозиториев.
teams.members.none=В этой команде нет участников.
+teams.members.blocked_user=Нельзя добавить пользователя, так как он заблокирован организацией.
teams.specific_repositories=Конкретные репозитории
teams.specific_repositories_helper=Участники будут иметь доступ только к репозиториям, явно добавленным в команду. Выбор этого не автоматически удалит репозитории, уже добавленные в Все репозитории.
teams.all_repositories=Все репозитории
@@ -2439,17 +2961,32 @@ teams.invite.title=Вас пригласили присоединиться к
teams.invite.by=Приглашен(а) %s
teams.invite.description=Нажмите на кнопку ниже, чтобы присоединиться к команде.
+view_as_role=Посмотреть как: %s
+view_as_public_hint=Вы просматриваете README как публичный пользователь.
+view_as_member_hint=Вы просматриваете README как участник этой организации.
+worktime=Время работы
+worktime.date_range_start=Дата начала
+worktime.date_range_end=Дата завершения
+worktime.query=Запрос
+worktime.time=Время
+worktime.by_repositories=По репозиториям
+worktime.by_milestones=По этапам
+worktime.by_members=По участникам
[admin]
+maintenance=Техническое обслуживание
dashboard=Панель
+self_check=Самопроверка
identity_access=Идентификация и доступ
users=Пользователи
organizations=Организации
+assets=Ресурсы кода
repositories=Репозитории
hooks=Веб-хуки
integrations=Интеграции
authentication=Аутентификация
+emails=Адреса электронной почты пользователя
config=Конфигурация
config_summary=Статистика
config_settings=Настройки
@@ -2458,8 +2995,11 @@ monitor=Мониторинг
first_page=Первая
last_page=Последняя
total=Всего: %d
+settings=Настройки администратора
+dashboard.new_version_hint="Доступна новая версия Gitea %s, у вас установлена версия %s. Подробности смотрите в блоге."
dashboard.statistic=Статистика
+dashboard.maintenance_operations=Операции по техническому обслуживанию
dashboard.system_status=Состояние системы
dashboard.operation_name=Имя операции
dashboard.operation_switch=Переключить
@@ -2478,16 +3018,29 @@ dashboard.cron.cancelled=Планировщик: %[1]s отменено: %[3]s
dashboard.cron.error=Ошибка в запланированном задании: %s: %[3]s
dashboard.cron.finished=Планировщик: %[1]s завершено
dashboard.delete_inactive_accounts=Удалить все неактивированные учётные записи
-dashboard.delete_repo_archives=Удалить все архивы репозиториев (ZIP, TAR.GZ, и т.д..)
+dashboard.delete_inactive_accounts.started=Удаление всех неактивированных учётных записей началось.
+dashboard.delete_repo_archives="Удалить все архивы репозиториев (ZIP, TAR.GZ, и т.д..)"
+dashboard.delete_repo_archives.started=Удаление всех архивов репозитория началось.
dashboard.delete_missing_repos=Удалить все записи о репозиториях с отсутствующими файлами Git
+dashboard.delete_missing_repos.started=Началось удаление всех репозиториев без Git-файлов
dashboard.delete_generated_repository_avatars=Удалить генерированные аватары репозитория
+dashboard.sync_repo_branches=Синхронизировать пропущенные ветки из git-данных с базой данных
+dashboard.sync_repo_tags=Синхронизировать пропущенные теги из git-данных с базой данных
dashboard.update_mirrors=Обновить зеркала
dashboard.repo_health_check=Проверка состояния всех репозиториев
dashboard.check_repo_stats=Проверить всю статистику репозитория
dashboard.archive_cleanup=Удалить старые архивы репозитория
+dashboard.deleted_branches_cleanup=Очистка удаленных веток
dashboard.update_migration_poster_id=Обновить ID плакатов миграции
+dashboard.git_gc_repos=Выполнить сборку мусора во всех репозиториях
+dashboard.resync_all_sshkeys=Обновить файл '.ssh/authorized_keys' с ключами Gitea SSH
+dashboard.resync_all_sshprincipals=Обновить файл '.ssh/authorized_principals' с привилегиями Gitea SSH
+dashboard.resync_all_hooks="Повторная синхронизация hook'ов pre-receive, update и post-receive во всех репозиториях."
dashboard.reinit_missing_repos=Переинициализировать все отсутствующие Git репозитории, для которых существуют записи
dashboard.sync_external_users=Синхронизировать данные внешних пользователей
+dashboard.cleanup_hook_task_table=Очистить таблицу hook_task
+dashboard.cleanup_packages=Очистка устаревших пакетов
+dashboard.cleanup_actions=Очистка устаревших журналов и артефактов
dashboard.server_uptime=Время непрерывной работы сервера
dashboard.current_goroutine=Текущее количество Goroutines
dashboard.current_memory_usage=Текущее использование памяти
@@ -2517,8 +3070,19 @@ dashboard.total_gc_time=Итоговая задержка GC
dashboard.total_gc_pause=Итоговая задержка GC
dashboard.last_gc_pause=Последняя пауза сборщика мусора
dashboard.gc_times=Количество сборок мусора
+dashboard.delete_old_actions=Удаление всех старых активностей из базы данных
+dashboard.delete_old_actions.started=Удаление всех старых активностей из базы данных запущено
dashboard.update_checker=Проверка обновлений
dashboard.delete_old_system_notices=Удалить все старые системные уведомления из базы данных
+dashboard.gc_lfs=Очистить метаданные LFS
+dashboard.stop_zombie_tasks=Остановить "зомби" задания
+dashboard.stop_endless_tasks=Остановить бесконечные задания
+dashboard.cancel_abandoned_jobs=Отменить оставшиеся задания
+dashboard.start_schedule_tasks=Запустить запланированные задания
+dashboard.sync_branch.started=Началась синхронизация веток
+dashboard.sync_tag.started=Началась синхронизация тегов
+dashboard.rebuild_issue_indexer=Перестроить индекс задач
+dashboard.sync_repo_licenses=Синхронизировать лицензии репозиториев
users.user_manage_panel=Панель управления пользователями
users.new_account=Создать новый аккаунт
@@ -2529,10 +3093,12 @@ users.admin=Администратор
users.restricted=Ограничено
users.reserved=Зарезервировано
users.bot=Бот
+users.remote=Удаленный
users.2fa=Двухфакторная авторизация
users.repos=Репозитории
users.created=Создано
users.last_login=Последний вход
+users.never_login=Никогда не входил
users.send_register_notify=Отправить пользователю уведомление о регистрации
users.new_success=Учётная запись «%s» создана.
users.edit=Редактировать
@@ -2554,11 +3120,12 @@ users.allow_import_local=Пользователь имеет право импо
users.allow_create_organization=Эта учётная запись имеет разрешения на создание организаций
users.update_profile=Обновить профиль пользователя
users.delete_account=Удалить эту учётную запись
-users.cannot_delete_self=Вы не можете удалить собственную учётную запись
+users.cannot_delete_self="Вы не можете удалить собственную учётную запись"
users.still_own_repo=Этот пользователь всё ещё является владельцем одного или более репозиториев. Сначала удалите или передайте эти репозитории.
users.still_has_org=Этот пользователь всё ещё является членом одной или более организаций. Сначала удалите пользователя из всех организаций.
users.purge=Удалить пользователя
users.purge_help=Принудительное удаление пользователя и любых репозиториев, организаций и пакетов, принадлежащих пользователю. Комментарии тоже будут удалены.
+users.still_own_packages=Этот пользователь всё ещё владеет одним или несколькими пакетами. Сначала удалите эти пакеты.
users.deletion_success=Учётная запись успешно удалена.
users.reset_2fa=Сброс 2FA
users.list_status_filter.menu_text=Фильтр
@@ -2575,14 +3142,22 @@ users.list_status_filter.is_2fa_enabled=2FA включено
users.list_status_filter.not_2fa_enabled=2FA отключено
users.details=О пользователе
-emails.email_manage_panel=Управление эл. почтой пользователя
+emails.email_manage_panel=Управление электронной почтой пользователя
emails.primary=Первичный
emails.activated=Активирован
+emails.filter_sort.email=Адрес электронной почты
+emails.filter_sort.email_reverse=Адрес электронной почты (обратный порядок)
emails.filter_sort.name=Имя пользователя
+emails.filter_sort.name_reverse=Имя пользователя (обратный порядок)
+emails.updated=Адрес электронной почты обновлён
emails.not_updated=Не удалось обновить запрошенный адрес электронной почты: %v
emails.duplicate_active=Этот адрес электронной почты уже активирован для другого пользователя.
emails.change_email_header=Обновить свойства электронной почты
emails.change_email_text=Вы уверены, что хотите обновить этот адрес электронной почты?
+emails.delete=Удалить адрес электронной почты
+emails.delete_desc=Вы уверены, что хотите удалить этот адрес электронной почты?
+emails.deletion_success=Адрес электронной почты был удален.
+emails.delete_primary_email_error=Нельзя удалить основной адрес электронной почты.
orgs.org_manage_panel=Управление организациями
orgs.name=Название
@@ -2615,10 +3190,12 @@ packages.size=Размер
packages.published=Опубликовано
defaulthooks=Стандартные Веб-хуки
+defaulthooks.desc="Вебхуки автоматически отправляют HTTP POST-запросы на сервер при срабатывании определённых событий в Gitea. Вебхуки, указанные здесь, используются по умолчанию и будут копироваться во все новые репозитории. Подробнее можно ознакомиться в руководстве по веб-хукам."
defaulthooks.add_webhook=Добавить стандартный Веб-хук
defaulthooks.update_webhook=Обновить стандартный Веб-хук
systemhooks=Системные веб-хуки
+systemhooks.desc="Вебхуки автоматически отправляют HTTP POST-запросы на сервер при срабатывании определённых событий в Gitea. Вебхуки, заданные здесь, будут применяться ко всем репозиториям в системе, поэтому, пожалуйста, учитывайте возможное влияние на производительность. Подробнее можно ознакомиться в руководстве по веб-хукам."
systemhooks.add_webhook=Добавить системный веб-хук
systemhooks.update_webhook=Обновить системный веб-хук
@@ -2694,17 +3271,39 @@ auths.oauth2_required_claim_name_helper=Задайте, чтобы ограни
auths.oauth2_required_claim_value=Необходимое значение заявки
auths.oauth2_required_claim_value_helper=Задайте, чтобы ограничить вход с этого источника только пользователями с заявкой, имеющей такие имя и значение
auths.oauth2_group_claim_name=Имя заявки, указывающее имена групп для этого источника. (Необязательно)
+auths.oauth2_full_name_claim_name="Атрибут - клеймо, для полного имени пользователя необязателен. (Если он есть, то полное имя пользователя всегда будет синхронизироваться с этим значением)"
+auths.oauth2_ssh_public_key_claim_name=Название публичного SSH-ключа
+auths.oauth2_admin_group=Права группы для пользователей администраторов. (По желанию — требует указания названия вышеуказанного атрибута)
+auths.oauth2_restricted_group=Права группы для ограниченных пользователей. (По желанию — требует указания названия вышеуказанного атрибута)
+auths.oauth2_map_group_to_team=Сопоставление заявленных групп с командами организации. (По желанию — требует указания названия вышеуказанного атрибута)
auths.oauth2_map_group_to_team_removal=Удалить пользователей из синхронизированных команд, если пользователь не принадлежит к соответствующей группе.
auths.enable_auto_register=Включить автоматическую регистрацию
auths.sspi_auto_create_users=Автоматически создавать пользователей
+auths.sspi_auto_create_users_helper=Разрешить методу аутентификации SSPI автоматически создавать новые учетные записи для пользователей, входящих впервые
auths.sspi_auto_activate_users=Автоматически активировать пользователей
auths.sspi_auto_activate_users_helper=Разрешить метод аутентификации SSPI для автоматической активации новых пользователей
auths.sspi_strip_domain_names=Удалять доменные имена из имён пользователей
+auths.sspi_strip_domain_names_helper=Если отмечено, доменные имена будут удалены из имён входа (например, "DOMAIN\user" и "user@example.org" станут только "user").
auths.sspi_separator_replacement=Разделитель для использования вместо \, / и @
+auths.sspi_separator_replacement_helper=Символ для замены разделителей в именах входа нижнего уровня (например, \ в "ДОМЕН\пользователь") и именах участников-пользователей (например, @ в "user@example.org").
auths.sspi_default_language=Язык пользователя по умолчанию
+auths.sspi_default_language_helper=Язык по умолчанию для пользователей, автоматически создаваемых методом аутентификации SSPI. Оставьте пустым, если предпочитаете автоматическое определение языка.
auths.tips=Советы
auths.tips.oauth2.general=Аутентификация OAuth2
+auths.tips.oauth2.general.tip=При регистрации новой аутентификации OAuth2 URL обратного вызова/перенаправления должен быть:
auths.tip.oauth2_provider=Поставщик OAuth2
+auths.tip.bitbucket=Зарегистрируйте нового OAuth потребителя на %s и добавьте разрешение 'Аккаунт' - 'Чтение'
+auths.tip.nextcloud=Зарегистрируйте нового потребителя OAuth в вашем экземпляре, выбрав в меню "Настройки -> Безопасность -> OAuth 2.0 client"
+auths.tip.dropbox=Добавьте новое приложение на %s
+auths.tip.facebook=Зарегистрируйте новое приложение на %s и добавьте модуль "Facebook Login"
+auths.tip.github=Добавьте OAuth приложение на %s
+auths.tip.gitlab_new=Добавьте новое приложение на %s
+auths.tip.google_plus=Получите учетные данные OAuth2 клиента в консоли Google API по адресу %s
+auths.tip.openid_connect=Используйте OpenID Connect Discovery URL "https://{server}/.well-known/openid-configuration" для указания конечных точек
+auths.tip.twitter=Перейдите на %s, создайте приложение и убедитесь, что опция "Разрешить использовать это приложение для входа с помощью Twitter" включена
+auths.tip.discord=Добавьте новое приложение на %s
+auths.tip.gitea=Зарегистрировать новое приложение OAuth2. Руководство можно найти на %s
+auths.tip.yandex=Создайте новое приложение по адресу %s. В разделе "API Яндекс.Паспорта" выберите следующие разрешения: "Доступ к адресу электронной почты", "Доступ к аватару пользователя" и "Доступ к имени пользователя, фамилии и полу"
auths.tip.mastodon=Введите пользовательский URL экземпляра для экземпляра mastodon, с которым вы хотите аутентифицироваться (или использовать его по умолчанию)
auths.edit=Обновить параметры аутентификации
auths.activated=Источник аутентификации активирован
@@ -2726,7 +3325,7 @@ config.app_name=Название сайта
config.app_ver=Версия Gitea
config.app_url=Базовый URL Gitea
config.custom_conf=Путь к файлу конфигурации
-config.custom_file_root_path=Пользовательский путь до папки с файлами
+config.custom_file_root_path="Пользовательский путь до папки с файлами"
config.domain=Домен сервера
config.offline_mode=Локальный режим
config.disable_router_log=Отключение журнала маршрутизатора
@@ -2774,7 +3373,7 @@ config.enable_openid_signin=Включение входа через OpenID
config.show_registration_button=Показать кнопку регистрации
config.require_sign_in_view=Для просмотра необходима авторизация
config.mail_notify=Почтовые уведомления
-config.enable_captcha=Включить CAPTCHA
+config.enable_captcha=Включить КАПЧУ
config.active_code_lives=Время жизни кода для активации
config.reset_password_code_lives=Время действия кода восстановления аккаунта
config.default_keep_email_private=Скрывать адреса электронной почты по умолчанию
@@ -2804,6 +3403,7 @@ config.mailer_sendmail_path=Путь к Sendmail
config.mailer_sendmail_args=Дополнительные аргументы для Sendmail
config.mailer_sendmail_timeout=Тайм-аут Sendmail
config.mailer_use_dummy=Заглушка
+config.test_email_placeholder=Адрес электронной почты (например, test@example.com)
config.send_test_mail=Отправить тестовое письмо
config.send_test_mail_submit=Отправить
config.test_mail_failed=Не удалось отправить тестовое письмо на «%s»: %v
@@ -2817,6 +3417,10 @@ config.cache_adapter=Адаптер кэша
config.cache_interval=Интервал кэширования
config.cache_conn=Подключение кэша
config.cache_item_ttl=Время жизни данных в кеше
+config.cache_test=Проверка кэша
+config.cache_test_failed=Не удалось проверить кэш: %v.
+config.cache_test_slow=Проверка кэша прошла успешно, но отклик был медленным: %s.
+config.cache_test_succeeded=Проверка кэша прошла успешно, ответ был получен за: %s.
config.session_config=Конфигурация сессии
config.session_provider=Провайдер сессии
@@ -2831,6 +3435,8 @@ config.picture_config=Настройка изображения
config.picture_service=Сервис изображений
config.disable_gravatar=Отключить Gravatar
config.enable_federated_avatar=Включить внешние аватары
+config.open_with_editor_app_help=Редакторы «Открыть с помощью» для меню клонирования. Если оставить пустым, будет использоваться редактор по умолчанию (разверните для просмотра).
+config.git_guide_remote_name=Имя удалённого репозитория в командах git руководства
config.git_config=Конфигурация Git
config.git_disable_diff_highlight=Отключить подсветку синтаксиса при сравнении
@@ -2862,6 +3468,9 @@ monitor.next=Следующий раз
monitor.previous=Предыдущий раз
monitor.execute_times=Количество выполнений
monitor.process=Запущенные процессы
+monitor.stacktrace=Трассировка стека
+monitor.trace=Трассировка
+monitor.performance_logs=Журналы производительности
monitor.processes_count=%d процессов
monitor.download_diagnosis_report=Скачать диагностический отчёт
monitor.desc=Описание
@@ -2869,6 +3478,7 @@ monitor.start=Время начала
monitor.execute_time=Время выполнения
monitor.last_execution_result=Результат
monitor.process.cancel=Отменить процесс
+monitor.process.cancel_desc=Отмена процесса может привести к потере данных
monitor.process.children=Потомки
monitor.queues=Очереди
@@ -2880,8 +3490,10 @@ monitor.queue.numberworkers=Количество рабочих
monitor.queue.activeworkers=Активные рабочие
monitor.queue.maxnumberworkers=Максимальное количество рабочих
monitor.queue.numberinqueue=Позиция в очереди
+monitor.queue.review_add=Просмотр / Добавление воркеров
monitor.queue.settings.title=Настройки пула
monitor.queue.settings.desc=Пулы увеличиваются динамически в ответ на блокировку очередей своих рабочих.
+monitor.queue.settings.maxnumberworkers=Максимальное количество воркеров
monitor.queue.settings.maxnumberworkers.placeholder=В настоящее время %[1]d
monitor.queue.settings.maxnumberworkers.error=Максимальное количество рабочих должно быть числом
monitor.queue.settings.submit=Обновить настройки
@@ -2904,38 +3516,47 @@ notices.desc=Описание
notices.op=Oп.
notices.delete_success=Уведомления системы были удалены.
+self_check.no_problem_found=Проблем не обнаружено.
+self_check.startup_warnings=Предупреждения при запуске:
+self_check.database_collation_mismatch=Ожидается, что в базе данных будет использоваться сортировка: %s
+self_check.database_collation_case_insensitive=В базе данных используется сортировка %s, которая не учитывает регистр. Хотя Gitea может работать с ней, в редких случаях возможны непредвиденные проблемы.
+self_check.database_inconsistent_collation_columns=В базе данных используется сортировка %s, но эти столбцы используют несовместимые сортировки. Это может вызвать непредвиденные проблемы.
+self_check.database_fix_mysql=Для пользователей MySQL/MariaDB можно использовать команду "gitea doctor convert" для исправления проблем с сортировкой или исправить их вручную с помощью SQL-запросов "ALTER ... COLLATE ...".
+self_check.database_fix_mssql=Для пользователей MSSQL на данный момент проблему можно исправить только вручную с помощью SQL-запросов "ALTER ... COLLATE ...".
+self_check.location_origin_mismatch=Текущий URL (%[1]s) не совпадает с URL, который видит Gitea (%[2]s). Если вы используете обратный прокси, убедитесь, что заголовки "Host" и "X-Forwarded-Proto" настроены правильно.
[action]
-create_repo=создал(а) репозиторий %s
-rename_repo=переименовал(а) репозиторий из %[1]s
на %[3]s
-commit_repo=отправил(а) изменения в %[3]s в %[4]s
-create_issue=`открыл(а) задачу %[3]s#%[2]s`
-close_issue=`закрыл(а) задачу %[3]s#%[2]s`
-reopen_issue=`переоткрыл(а) задачу %[3]s#%[2]s`
-create_pull_request=`создал(а) запрос на слияние %[3]s#%[2]s`
-close_pull_request=`закрыл(а) запрос на слияние %[3]s#%[2]s`
-reopen_pull_request=`переоткрыл(а) запрос на слияние %[3]s#%[2]s`
-comment_issue=`прокомментировал(а) задачу %[3]s#%[2]s`
-comment_pull=`прокомментировал(а) запрос на слияние %[3]s#%[2]s`
-merge_pull_request=`принял(а) запрос на слияние %[3]s#%[2]s`
-auto_merge_pull_request=`автоматически принял(а) запрос на слияние %[3]s#%[2]s`
-transfer_repo=передал(а) репозиторий %s
%s
-push_tag=создал(а) тег %[3]s в %[4]s
-delete_tag=удалил(а) тэг %[2]s из %[3]s
-delete_branch=удалил(а) ветку %[2]s из %[3]s
+create_repo="создал(а) репозиторий %s"
+rename_repo="переименовал(а) репозиторий из %[1]s
на %[3]s"
+commit_repo="отправил(а) изменения в %[3]s в %[4]s"
+create_issue="`открыл(а) задачу %[3]s#%[2]s`"
+close_issue="`закрыл(а) задачу %[3]s#%[2]s`"
+reopen_issue="`переоткрыл(а) задачу %[3]s#%[2]s`"
+create_pull_request="`создал(а) запрос на слияние %[3]s#%[2]s`"
+close_pull_request="`закрыл(а) запрос на слияние %[3]s#%[2]s`"
+reopen_pull_request="`переоткрыл(а) запрос на слияние %[3]s#%[2]s`"
+comment_issue="`прокомментировал(а) задачу %[3]s#%[2]s`"
+comment_pull="`прокомментировал(а) запрос на слияние %[3]s#%[2]s`"
+merge_pull_request="`принял(а) запрос на слияние %[3]s#%[2]s`"
+auto_merge_pull_request="`автоматически принял(а) запрос на слияние %[3]s#%[2]s`"
+transfer_repo="передал(а) репозиторий %s
%s"
+push_tag="создал(а) тег %[3]s в %[4]s"
+delete_tag="удалил(а) тэг %[2]s из %[3]s"
+delete_branch="удалил(а) ветку %[2]s из %[3]s"
compare_branch=Сравнить
compare_commits=Сравнить %d коммитов
compare_commits_general=Сравнить коммиты
-mirror_sync_push=синхронизировал(а) коммиты %[3]s в %[4]s из зеркала
-mirror_sync_create=синхронизировал(а) новую ссылку %[3]s в %[4]s из зеркала
-mirror_sync_delete=синхронизированные и удалённые ссылки %[2]s
на %[3]s из зеркала
-approve_pull_request=`утвердил(а) задачу %[3]s#%[2]s`
-reject_pull_request=`предложил(а) изменения для %[3]s#%[2]s`
-review_dismissed=`отклонил(а) отзыв от %[4]s для %[3]s#%[2]s`
+mirror_sync_push="синхронизировал(а) коммиты %[3]s в %[4]s из зеркала"
+mirror_sync_create="синхронизировал(а) новую ссылку %[3]s в %[4]s из зеркала"
+mirror_sync_delete="синхронизированные и удалённые ссылки %[2]s
на %[3]s из зеркала"
+approve_pull_request="`утвердил(а) задачу %[3]s#%[2]s`"
+reject_pull_request="`предложил(а) изменения для %[3]s#%[2]s`"
+publish_release="`выпущен %[4]s в %[3]s`"
+review_dismissed="`отклонил(а) отзыв от %[4]s для %[3]s#%[2]s`"
review_dismissed_reason=Причина:
-create_branch=создал(а) ветку %[3]s в %[4]s
-starred_repo=добавил(а) %[2]s в избранное
-watched_repo=начала(а) наблюдение за %[2]s
+create_branch="создал(а) ветку %[3]s в %[4]s"
+starred_repo="добавил(а) %[2]s в избранное"
+watched_repo="начала(а) наблюдение за %[2]s"
[tool]
now=сейчас
@@ -2959,6 +3580,8 @@ raw_minutes=минут
[dropzone]
default_message=Перетащите файл или кликните сюда для загрузки.
+invalid_input_type=Вы не можете загрузить файлы этого типа.
+file_too_big=Размер файла ({{filesize}} MB) превышает максимальный размер ({{maxFilesize}} MB).
remove_file=Удалить файл
[notification]
@@ -2980,9 +3603,11 @@ default_key=Подписано ключом по умолчанию
error.extract_sign=Не удалось извлечь подпись
error.generate_hash=Не удается создать хэш коммита
error.no_committer_account=Аккаунт пользователя с такой электронной почтой не найден
-error.no_gpg_keys_found=Не найден ключ, соответствующий данной подписи
-error.not_signed_commit=Неподписанный коммит
-error.failed_retrieval_gpg_keys=Не удалось получить ни одного ключа GPG автора коммита
+error.no_gpg_keys_found="Не найден ключ, соответствующий данной подписи"
+error.not_signed_commit="Неподписанный коммит"
+error.failed_retrieval_gpg_keys="Не удалось получить ни одного ключа GPG автора коммита"
+error.probable_bad_signature="ВНИМАНИЕ! Хотя в базе данных есть ключ с этим идентификатором, он не подтверждает этот коммит! Этот коммит ПОДОЗРИТЕЛЬНЫЙ."
+error.probable_bad_default_signature="ВНИМАНИЕ! Хотя ключ по умолчанию имеет этот идентификатор, он не подтверждает этот коммит! Этот коммит ПОДОЗРИТЕЛЬНЫЙ."
[units]
unit=Элемент
@@ -2993,16 +3618,17 @@ error.unit_not_allowed=У вас нет доступа к этому разде
title=Пакеты
desc=Управление пакетами репозитория.
empty=Пока нет пакетов.
-empty.documentation=Дополнительную информацию о реестре пакетов можно найти в документации.
-empty.repo=Вы загрузили пакет, но он здесь не отображается? Перейдите в настройки пакета и свяжите его с этим репозиторием.
-registry.documentation=Для получения дополнительной информации о реестре %s смотрите документацию.
+no_metadata=Метаданные отсутствуют.
+empty.documentation="Дополнительную информацию о реестре пакетов можно найти в документации."
+empty.repo="Вы загрузили пакет, но он здесь не отображается? Перейдите в настройки пакета и свяжите его с этим репозиторием."
+registry.documentation="Для получения дополнительной информации о реестре %s смотрите документацию."
filter.type=Тип
filter.type.all=Все
filter.no_result=Фильтр не дал результатов.
filter.container.tagged=С тегом
filter.container.untagged=Без тегов
-published_by=Опубликовано %[1]s %[3]s
-published_by_in=Опубликовано %[1]s %[3]s в %[5]s
+published_by="Опубликовано %[1]s %[3]s"
+published_by_in="Опубликовано %[1]s %[3]s в %[5]s"
installation=Установка
about=Об этом пакете
requirements=Требования
@@ -3019,32 +3645,46 @@ versions=Версии
versions.view_all=Показать всё
dependency.id=ID
dependency.version=Версия
+search_in_external_registry=Искать в %s
+alpine.registry=Настройте этот реестр, добавив URL в файл /etc/apk/repositories
:
alpine.registry.key=Загрузите публичный ключ RSA реестра в каталог /etc/apk/keys/
для проверки подписи индекса:
alpine.registry.info=Выберите $branch и $repository из списка ниже.
alpine.install=Чтобы установить пакет, выполните следующую команду:
alpine.repository=О репозитории
+alpine.repository.branches=Ветки
alpine.repository.repositories=Репозитории
alpine.repository.architectures=Архитектуры
+arch.registry=Добавьте сервер с соответствующим репозиторием и архитектурой в /etc/pacman.conf
:
+arch.install=Синхронизировать пакет с pacman:
arch.repository=О репозитории
arch.repository.repositories=Репозитории
arch.repository.architectures=Архитектуры
+cargo.registry=Настройте этот реестр в конфигурационном файле Cargo (например, ~/.cargo/config.toml
):
cargo.install=Чтобы установить пакет с помощью Cargo, выполните следующую команду:
+chef.registry=Настройте этот реестр в своём файле ~/.chef/config.rb
:
chef.install=Чтобы установить пакет, выполните следующую команду:
+composer.registry=Настройте этот реестр в файле ~/.composer/config.json
:
composer.install=Чтобы установить пакет с помощью Composer, выполните следующую команду:
composer.dependencies=Зависимости
composer.dependencies.development=Зависимости для разработки
conan.details.repository=Репозиторий
+conan.registry=Установить реестр из командной строки:
conan.install=Чтобы установить пакет с помощью Conan, выполните следующую команду:
+conda.registry=Пропишите этот реестр в качестве репозитория Conda в своём файле .condarc
:
conda.install=Чтобы установить пакет с помощью Conda, выполните следующую команду:
container.details.type=Тип образа
container.details.platform=Платформа
container.pull=Загрузите образ из командной строки:
+container.images=Образы
+container.digest=Хеш-сумма
container.multi_arch=ОС / архитектура
container.layers=Слои образа
container.labels=Метки
container.labels.key=Ключ
container.labels.value=Значение
+cran.registry=Настройте этот реестр в файле Rprofile.site
:
cran.install=Чтобы установить пакет, выполните следующую команду:
+debian.registry=Настройте этот реестр из командной строки:
debian.registry.info=Выберите $distribution и $component из списка ниже.
debian.install=Чтобы установить пакет, выполните следующую команду:
debian.repository=О репозитории
@@ -3053,40 +3693,53 @@ debian.repository.components=Компоненты
debian.repository.architectures=Архитектуры
generic.download=Скачать пакет из командной строки:
go.install=Установите пакет из командной строки:
+helm.registry=Настройте этот реестр из командной строки:
helm.install=Чтобы установить пакет, выполните следующую команду:
+maven.registry=Настройте реестр в файле pom.xml
вашего проекта:
+maven.install=Чтобы использовать пакет, включите в блок dependencies
в файле pom.xml
следующее:
maven.install2=Выполнить через командную строку:
maven.download=Чтобы скачать зависимость, запустите в командной строке:
+nuget.registry=Настройте этот реестр из командной строки:
nuget.install=Чтобы установить пакет с помощью NuGet, выполните следующую команду:
nuget.dependency.framework=Целевой фреймворк
+npm.registry=Настройте реестр в файле .npmrc
вашего проекта:
npm.install=Чтобы установить пакет с помощью npm, выполните следующую команду:
npm.install2=или добавьте его в файл package.json:
npm.dependencies=Зависимости
npm.dependencies.development=Зависимости для разработки
+npm.dependencies.bundle=Зависимости комплекта
npm.dependencies.peer=Одноранговые зависимости
npm.dependencies.optional=Необязательные зависимости
npm.details.tag=Тег
pub.install=Чтобы установить пакет с помощью Dart, выполните следующую команду:
pypi.requires=Требуется Python
pypi.install=Чтобы установить пакет с помощью pip, выполните следующую команду:
+rpm.registry=Настройте этот реестр из командной строки:
rpm.distros.redhat=на дистрибутивах семейства RedHat
rpm.distros.suse=на дистрибутивах семейства SUSE
rpm.install=Чтобы установить пакет, выполните следующую команду:
rpm.repository=О репозитории
rpm.repository.architectures=Архитектуры
+rpm.repository.multiple_groups=Этот пакет доступен в нескольких группах.
rubygems.install=Чтобы установить пакет с помощью gem, выполните следующую команду:
rubygems.install2=или добавьте его в Gemfile:
rubygems.dependencies.runtime=Зависимости времени выполнения
rubygems.dependencies.development=Зависимости для разработки
rubygems.required.ruby=Требуется версия Ruby
rubygems.required.rubygems=Требуется версия RubyGem
+swift.registry=Настройте этот реестр из командной строки:
swift.install=Добавьте пакет в свой файл Package.swift
:
swift.install2=и запустите следующую команду:
vagrant.install=Чтобы добавить бокс Vagrant, выполните следующую команду:
settings.link=Связать этот пакет с репозиторием
+settings.link.description=Если вы свяжете пакет с репозиторием, пакет появится в списке пакетов репозитория. Связывать можно только репозитории одного владельца. Оставьте поле пустым, чтобы удалить связь.
settings.link.select=Выберите репозиторий
settings.link.button=Обновить ссылку на репозиторий
settings.link.success=Связь с репозиторием успешно обновлена.
settings.link.error=Не удалось обновить привязку к репозиторию.
+settings.link.repo_not_found=Репозиторий %s не найден.
+settings.unlink.error=Не удалось удалить связь с репозиторием.
+settings.unlink.success=Связь с репозиторием успешно удалена.
settings.delete=Удалить пакет
settings.delete.description=Удаление пакета необратимо и не может быть отменено.
settings.delete.notice=Вы собираетесь удалить %s (%s). Эта операция необратима, вы уверены?
@@ -3098,10 +3751,13 @@ owner.settings.cargo.initialize.description=Для использования р
owner.settings.cargo.initialize.error=Не удалось инициализировать индекс Cargo: %v
owner.settings.cargo.initialize.success=Индекс Cargo успешно создан.
owner.settings.cargo.rebuild=Перестроить индекс
+owner.settings.cargo.rebuild.description=Пересборка может быть полезна, если индекс не синхронизирован с сохраненными пакетами Cargo.
owner.settings.cargo.rebuild.error=Не удалось перестроить индекс Cargo: %v
+owner.settings.cargo.rebuild.success=Индекс Cargo успешно перестроен.
owner.settings.cleanuprules.title=Управление правилами очистки
owner.settings.cleanuprules.add=Добавить правило очистки
owner.settings.cleanuprules.edit=Изменить правило очистки
+owner.settings.cleanuprules.none=Правила очистки недоступны. Пожалуйста, ознакомьтесь с документацией.
owner.settings.cleanuprules.preview=Предварительный просмотр правила очистки
owner.settings.cleanuprules.preview.overview=Планируется удалить %d пакетов.
owner.settings.cleanuprules.preview.none=Правило очистки не соответствует ни одному пакету.
@@ -3120,6 +3776,7 @@ owner.settings.cleanuprules.success.update=Правило очистки обн
owner.settings.cleanuprules.success.delete=Правило очистки удалено.
owner.settings.chef.title=Реестр Chef
owner.settings.chef.keypair=Создать пару ключей
+owner.settings.chef.keypair.description=Для аутентификации в реестре Chef необходима пара ключей. Если вы уже генерировали пару ключей ранее, создание новой пары приведет к удалению старой.
[secrets]
secrets=Секреты
@@ -3130,8 +3787,13 @@ none=Секретов пока нет.
creation.description=Описание
creation.name_placeholder=регистр не важен, только алфавитно-цифровые символы и подчёркивания, не может начинаться с GITEA_ или GITHUB_
creation.value_placeholder=Введите любое содержимое. Пробельные символы в начале и конце будут опущены.
+creation.description_placeholder=Добавьте краткое описание (необязательно).
+save_success=Секрет "%s" успешно сохранён.
+save_failed=Не удалось сохранить секрет.
+add_secret=Добавить секрет
+edit_secret=Редактировать секрет
deletion=Удалить секрет
deletion.description=Удаление секрета необратимо, его нельзя отменить. Продолжить?
deletion.success=Секрет удалён.
@@ -3143,14 +3805,14 @@ actions=Действия
unit.desc=Управление действиями
-status.unknown=Неизвестно
-status.waiting=Ожидает
-status.running=Запущено
-status.success=Успешно
-status.failure=Неудача
-status.cancelled=Отменено
-status.skipped=Пропущено
-status.blocked=Заблокировано
+status.unknown="Неизвестно"
+status.waiting="Ожидает"
+status.running="Запущено"
+status.success="Успешно"
+status.failure="Неудача"
+status.cancelled="Отменено"
+status.skipped="Пропущено"
+status.blocked="Заблокировано"
runners=Раннеры
runners.runner_manage_panel=Управление раннерами
@@ -3179,6 +3841,7 @@ runners.delete_runner=Удалить этот раннер
runners.delete_runner_success=Раннер успешно удалён
runners.delete_runner_failed=Не удалось удалить раннер
runners.delete_runner_header=Подтвердите удаление раннера
+runners.delete_runner_notice=Если на этом раннере выполняется задание, оно будет завершено и помечено как неудачное. Это может нарушить рабочий поток сборки.
runners.none=Нет доступных раннеров
runners.status.unspecified=Неизвестно
runners.status.idle=Простаивает
@@ -3186,26 +3849,45 @@ runners.status.active=Активный
runners.status.offline=Недоступен
runners.version=Версия
runners.reset_registration_token=Сброс регистрационного токена
+runners.reset_registration_token_confirm=Вы хотите аннулировать текущий токен и сгенерировать новый?
runners.reset_registration_token_success=Токен регистрации раннера успешно сброшен
runs.all_workflows=Все рабочие потоки
-runs.commit=коммит
+runs.commit=Коммит
runs.scheduled=Запланировано
runs.pushed_by=отправлено
runs.invalid_workflow_helper=Файл конфигурации рабочего потока некорректен. Пожалуйста, проверьте конфигурационный файл: %s
+runs.no_matching_online_runner_helper=Нет доступных раннеров с меткой: %s
+runs.no_job_without_needs=Рабочий поток должен содержать по крайней мере одну задачу без зависимостей.
+runs.no_job=Рабочий поток должен содержать хотя бы одно задание
runs.actor=Актор
runs.status=Статус
runs.actors_no_select=Все акторы
+runs.status_no_select=Все статусы
runs.no_results=Ничего не найдено.
runs.no_workflows=Пока нет рабочих процессов.
+runs.no_workflows.quick_start="Не знаете, с чего начать работу с Gitea Actions? Ознакомьтесь с кратким руководством."
+runs.no_workflows.documentation="Дополнительную информацию о Gitea Actions можно найти в документации."
runs.no_runs=Рабочий поток ещё не запускался.
runs.empty_commit_message=(пустое сообщение коммита)
+runs.expire_log_message=Логи были удалены, так как они устарели.
+runs.delete=Удалить рабочий поток
+runs.cancel=Отмена выполнения рабочего потока
+runs.delete.description=Вы уверены, что хотите навсегда удалить этот рабочий поток? Это действие нельзя отменить.
+runs.not_done=Этот рабочий поток не завершен.
+runs.view_workflow_file=Просмотр файла рабочего потока
workflow.disable=Выключить рабочий поток
workflow.disable_success=Рабочий поток «%s» успешно выключен.
workflow.enable=Включить рабочий поток
workflow.enable_success=Рабочий поток «%s» успешно включен.
workflow.disabled=Рабочий поток выключен.
+workflow.run=Запустить рабочий поток
+workflow.not_found=Рабочий поток '%s' не найден.
+workflow.run_success=Рабочий поток '%s' успешно запущен.
+workflow.from_ref=Использовать рабочий поток из
+workflow.has_workflow_dispatch=Данный рабочий поток имеет триггер событий workflow_dispatch.
+workflow.has_no_workflow_dispatch=Рабочий поток '%s' не имеет триггера события workflow_dispatch.
need_approval_desc=Требуется одобрение, чтобы запустить рабочие потоки для запроса на слияние.
@@ -3216,6 +3898,7 @@ variables.none=Переменных пока нет.
variables.deletion=Удалить переменную
variables.deletion.description=Удаление переменной необратимо, его нельзя отменить. Продолжить?
variables.description=Переменные будут передаваться определенным действиям и не могут быть прочитаны иначе.
+variables.id_not_exist=Переменная с идентификатором %d не существует.
variables.edit=Изменить переменную
variables.deletion.failed=Не удалось удалить переменную.
variables.deletion.success=Переменная удалена.
@@ -3224,11 +3907,16 @@ variables.creation.success=Переменная «%s» добавлена.
variables.update.failed=Не удалось изменить переменную.
variables.update.success=Переменная изменена.
+logs.always_auto_scroll=Всегда автоматически прокручивать логи
+logs.always_expand_running=Всегда разворачивать журнал выполнения
[projects]
+deleted.display_name=Удалённый проект
type-1.display_name=Индивидуальный проект
type-2.display_name=Проект репозитория
type-3.display_name=Проект организации
+enter_fullscreen=Полноэкранный режим
+exit_fullscreen=Выход из полноэкранного режима
[git.filemode]
changed_filemode=%[1]s → %[2]s
diff --git a/stylelint.config.ts b/stylelint.config.ts
index 8a5b87e17caa4..2c2b0e0462231 100644
--- a/stylelint.config.ts
+++ b/stylelint.config.ts
@@ -20,9 +20,13 @@ export default {
],
ignoreFiles: [
'**/*.go',
- '/web_src/fomantic',
+ '/web_src/fomantic/**/*',
],
overrides: [
+ {
+ files: ['**/*.css', '**/*.vue'],
+ rules: {},
+ },
{
files: ['**/chroma/*', '**/codemirror/*', '**/standalone/*', '**/console.css', 'font_i18n.css'],
rules: {
diff --git a/web_src/css/base.css b/web_src/css/base.css
index 9cef92019d08b..4e5bfab0c6cab 100644
--- a/web_src/css/base.css
+++ b/web_src/css/base.css
@@ -1,7 +1,9 @@
:root {
/* fonts */
- --fonts-proportional: -apple-system, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial;
- --fonts-monospace: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace, var(--fonts-emoji);
+ --fonts-proportional: -apple-system, "Segoe UI", system-ui, Roboto,
+ "Helvetica Neue", Arial;
+ --fonts-monospace: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco,
+ Consolas, "Liberation Mono", "Courier New", monospace, var(--fonts-emoji);
/* GitHub explicitly sets font names like: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla";
Actually "Twemoji Mozilla" emoji font is widely used by browsers like Firefox, Pale Moon, and it is more likely up-to-dated than the system emoji font.
So not setting emoji font seems to be the best choice, here we just use a non-existing dummy font name and let browsers choose. */
@@ -54,10 +56,13 @@
}
:root * {
- --fonts-regular: var(--fonts-override, var(--fonts-proportional)), "Noto Sans", "Liberation Sans", sans-serif, var(--fonts-emoji);
+ --fonts-regular: var(--fonts-override, var(--fonts-proportional)), "Noto Sans",
+ "Liberation Sans", sans-serif, var(--fonts-emoji);
}
-*, ::before, ::after {
+*,
+::before,
+::after {
/* these are needed for tailwind borders to work because we do not load tailwind's base
https://github.com/tailwindlabs/tailwindcss/blob/master/src/css/preflight.css */
border-width: 0;
@@ -65,7 +70,8 @@
border-color: currentcolor;
}
-html, body {
+html,
+body {
height: 100%;
font-size: 14px;
}
@@ -105,7 +111,7 @@ code {
padding: 1px 4px;
border-radius: var(--border-radius);
background-color: var(--color-label-bg);
- color: var(--color-label-text);
+ color: var(--color-text-light);
}
b,
@@ -347,7 +353,7 @@ a.label,
.inline-code-block {
padding: 2px 4px;
- border-radius: .24em;
+ border-radius: 0.24em;
background-color: var(--color-label-bg);
}
@@ -405,7 +411,7 @@ a.label,
margin-bottom: -0.25rem;
}
.ui.dropdown .menu > .item > svg {
- margin-right: .78rem; /* use the same margin as for
*/
+ margin-right: 0.78rem; /* use the same margin as for
*/
}
.ui.selection.dropdown .menu > .item {
@@ -563,7 +569,7 @@ img.ui.avatar,
}
.text.grey {
- color: var(--color-text-light) !important;
+ color: var(--color-orange-badge) !important;
}
.text.light {
@@ -699,35 +705,40 @@ img.ui.avatar,
blockquote.attention-note {
border-left-color: var(--color-blue-dark-1);
}
-strong.attention-note, svg.attention-note {
+strong.attention-note,
+svg.attention-note {
color: var(--color-blue-dark-1);
}
blockquote.attention-tip {
border-left-color: var(--color-success-text);
}
-strong.attention-tip, svg.attention-tip {
+strong.attention-tip,
+svg.attention-tip {
color: var(--color-success-text);
}
blockquote.attention-important {
border-left-color: var(--color-violet-dark-1);
}
-strong.attention-important, svg.attention-important {
+strong.attention-important,
+svg.attention-important {
color: var(--color-violet-dark-1);
}
blockquote.attention-warning {
border-left-color: var(--color-warning-text);
}
-strong.attention-warning, svg.attention-warning {
+strong.attention-warning,
+svg.attention-warning {
color: var(--color-warning-text);
}
blockquote.attention-caution {
border-left-color: var(--color-red-dark-1);
}
-strong.attention-caution, svg.attention-caution {
+strong.attention-caution,
+svg.attention-caution {
color: var(--color-red-dark-1);
}
@@ -992,7 +1003,7 @@ table th[data-sortt-desc] .svg {
.ui.tabular.menu .item:hover,
.ui.secondary.pointing.menu a.item:hover {
- color: var(--color-text);
+ color: var(--color-primary-3);
}
.ui.tabular.menu .active.item,
@@ -1024,7 +1035,9 @@ table th[data-sortt-desc] .svg {
}
.ui.dropdown:not(.button) {
- line-height: var(--line-height-default); /* the dropdown doesn't have default line-height, use this to make the dropdown icon align with plain dropdown */
+ line-height: var(
+ --line-height-default
+ ); /* the dropdown doesn't have default line-height, use this to make the dropdown icon align with plain dropdown */
}
/* dropdown has some kinds of icons:
diff --git a/web_src/css/chroma/dark.css b/web_src/css/chroma/dark.css
index bfe9d69f73304..f47d2456695a1 100644
--- a/web_src/css/chroma/dark.css
+++ b/web_src/css/chroma/dark.css
@@ -1,76 +1,252 @@
-/* https://github.com/alecthomas/chroma/blob/6428fb4e65f3c1493491571c8a6a8f1add1da822/types.go#L208 */
-.chroma .bp { color: #fabd2f; } /* NameBuiltinPseudo */
-.chroma .c { color: #777e94; } /* Comment */
-.chroma .c1 { color: #777e94; } /* CommentSingle */
-.chroma .ch { color: #777e94; } /* CommentHashbang */
-.chroma .cm { color: #777e94; } /* CommentMultiline */
-.chroma .cp { color: #8ec07c; } /* CommentPreproc */
-.chroma .cpf { color: #649bc4; } /* CommentPreprocFile */
-.chroma .cs { color: #9075cd; } /* CommentSpecial */
-.chroma .dl { color: #649bc4; } /* LiteralStringDelimiter */
-.chroma .fm {} /* NameFunctionMagic */
-.chroma .g {} /* Generic */
-.chroma .gd { color: #ffffff; background-color: #5f3737; } /* GenericDeleted */
-.chroma .ge { color: #ddee30; } /* GenericEmph */
-.chroma .gh { color: #ffaa10; } /* GenericHeading */
-.chroma .gi { color: #ffffff; background-color: #3a523a; } /* GenericInserted */
-.chroma .gl {} /* GenericUnderline */
-.chroma .go { color: #777e94; } /* GenericOutput */
-.chroma .gp { color: #ebdbb2; } /* GenericPrompt */
-.chroma .gr { color: #ff4433; } /* GenericError */
-.chroma .gs { color: #ebdbb2; } /* GenericStrong */
-.chroma .gt { color: #ff7540; } /* GenericTraceback */
-.chroma .gu { color: #b8bb26; } /* GenericSubheading */
-.chroma .il { color: #649bc4; } /* LiteralNumberIntegerLong */
-.chroma .k { color: #ff7540; } /* Keyword */
-.chroma .kc { color: #649bc4; } /* KeywordConstant */
-.chroma .kd { color: #ff7540; } /* KeywordDeclaration */
-.chroma .kn { color: #ffaa10; } /* KeywordNamespace */
-.chroma .kp { color: #5f8700; } /* KeywordPseudo */
-.chroma .kr { color: #ff7540; } /* KeywordReserved */
-.chroma .kt { color: #ff7b72; } /* KeywordType */
-.chroma .l {} /* Literal */
-.chroma .ld {} /* LiteralDate */
-.chroma .m { color: #649bc4; } /* LiteralNumber */
-.chroma .mb { color: #649bc4; } /* LiteralNumberBin */
-.chroma .mf { color: #649bc4; } /* LiteralNumberFloat */
-.chroma .mh { color: #649bc4; } /* LiteralNumberHex */
-.chroma .mi { color: #649bc4; } /* LiteralNumberInteger */
-.chroma .mo { color: #649bc4; } /* LiteralNumberOct */
-.chroma .n { color: #c9d1d9; } /* Name */
-.chroma .na { color: #fabd2f; } /* NameAttribute */
-.chroma .nb { color: #fabd2f; } /* NameBuiltin */
-.chroma .nc { color: #ffaa10; } /* NameClass */
-.chroma .nd { color: #8ec07c; } /* NameDecorator */
-.chroma .ne { color: #ff7540; } /* NameException */
-.chroma .nf { color: #fabd2f; } /* NameFunction */
-.chroma .ni { color: #fabd2f; } /* NameEntity */
-.chroma .nl { color: #ff7540; } /* NameLabel */
-.chroma .nn { color: #c9d1d9; } /* NameNamespace */
-.chroma .no { color: #649bc4; } /* NameConstant */
-.chroma .nt { color: #ff7540; } /* NameTag */
-.chroma .nv { color: #ebdbb2; } /* NameVariable */
-.chroma .nx { color: #b6bac5; } /* NameOther */
-.chroma .o { color: #ff7540; } /* Operator */
-.chroma .ow { color: #5f8700; } /* OperatorWord */
-.chroma .p { color: #d2d4db; } /* Punctuation */
-.chroma .py {} /* NameProperty */
-.chroma .s { color: #b8bb26; } /* LiteralString */
-.chroma .s1 { color: #b8bb26; } /* LiteralStringSingle */
-.chroma .s2 { color: #b8bb26; } /* LiteralStringDouble */
-.chroma .sa { color: #ffaa10; } /* LiteralStringAffix */
-.chroma .sb { color: #b8bb26; } /* LiteralStringBacktick */
-.chroma .sc { color: #ffaa10; } /* LiteralStringChar */
-.chroma .sd { color: #b8bb26; } /* LiteralStringDoc */
-.chroma .se { color: #ff8540; } /* LiteralStringEscape */
-.chroma .sh { color: #b8bb26; } /* LiteralStringHeredoc */
-.chroma .si { color: #ffaa10; } /* LiteralStringInterpol */
-.chroma .sr { color: #9075cd; } /* LiteralStringRegex */
-.chroma .ss { color: #ff8540; } /* LiteralStringSymbol */
-.chroma .sx { color: #ffaa10; } /* LiteralStringOther */
-.chroma .vc { color: #649bee; } /* NameVariableClass */
-.chroma .vg { color: #649bee; } /* NameVariableGlobal */
-.chroma .vi { color: #649bee; } /* NameVariableInstance */
-.chroma .vm {} /* NameVariableMagic */
-.chroma .w { color: #7f8699; } /* TextWhitespace */
-.chroma .err {/* not styled because Chroma uses it on too many things like JSX */} /* Error */
+/* Tokyo Night Storm Theme for Gitea */
+/* Типы данных */
+.chroma .k, /* Ключевые слова типов (int, string, bool) */
+.chroma .kt, /* Ключевые слова типов (type, interface, struct) */
+.chroma .nc, /* Имена классов/пользовательских типов */
+.chroma .nn, /* Пространства имён */
+.chroma .no, /* Константы типов */
+.chroma .n, /* Общие имена (пользовательские типы) */
+.chroma .n[class*="Type"] {
+ /* Классы с Type в названии */
+ color: #009999; /* Светло-голубой для всех типов */
+}
+
+.chroma .bp {
+ color: #7dcfff;
+} /* Псевдоклассы встроенных объектов */
+.chroma .c {
+ color: #565f89;
+ font-style: italic;
+} /* Комментарии */
+.chroma .c1 {
+ color: #565f89;
+ font-style: italic;
+} /* Однострочные комментарии */
+.chroma .ch {
+ color: #565f89;
+ font-style: italic;
+} /* Комментарии с хэшбэнгом (#!) */
+.chroma .cm {
+ color: #565f89;
+ font-style: italic;
+} /* Многострочные комментарии */
+.chroma .cp {
+ color: #7aa2f7;
+} /* Директивы препроцессора */
+.chroma .cpf {
+ color: #7aa2f7;
+} /* Файловые директивы препроцессора */
+.chroma .cs {
+ color: #9d7cd8;
+ font-style: italic;
+} /* Специальные комментарии */
+.chroma .dl {
+ color: #9ece6a;
+} /* Разделители строковых литералов */
+.chroma .fm {
+ color: #7dcfff;
+} /* Магические методы функций */
+.chroma .g {
+ color: #a9b1d6;
+} /* Общие стили */
+.chroma .gd {
+ color: #f7768e;
+ background-color: #3b2a3f;
+} /* Удаленный текст (git diff) */
+.chroma .ge {
+ color: #9ece6a;
+ font-style: italic;
+} /* Курсивный текст */
+.chroma .gh {
+ color: #7aa2f7;
+ font-weight: bold;
+} /* Заголовки */
+.chroma .gi {
+ color: #9ece6a;
+ background-color: #2a3a3a;
+} /* Добавленный текст (git diff) */
+.chroma .gl {
+ text-decoration: underline;
+} /* Подчеркнутый текст */
+.chroma .go {
+ color: #444b6a;
+} /* Вывод программы */
+.chroma .gp {
+ color: #7aa2f7;
+} /* Приглашение командной строки */
+.chroma .gr {
+ color: #f7768e;
+ font-weight: bold;
+} /* Ошибки */
+.chroma .gs {
+ font-weight: bold;
+} /* Жирный текст */
+.chroma .gt {
+ color: #ff9e64;
+} /* Трассировка стека */
+.chroma .gu {
+ color: #7aa2f7;
+ font-weight: bold;
+} /* Подзаголовки */
+.chroma .il {
+ color: #ff9e64;
+} /* Длинные целые числа */
+.chroma .k {
+ color: #bb9af7;
+} /* Ключевые слова */
+.chroma .kc {
+ color: #bb9af7;
+} /* Константы */
+.chroma .kd {
+ color: #bb9af7;
+} /* Объявления ключевых слов */
+.chroma .kn {
+ color: #7dcfff;
+} /* Пространства имен */
+.chroma .kp {
+ color: #bb9af7;
+} /* Псевдоклассы */
+.chroma .kr {
+ color: #bb9af7;
+} /* Зарезервированные слова */
+.chroma .kt {
+ color: #7dcfff;
+} /* Типы данных */
+.chroma .l {
+ color: #ff9e64;
+} /* Литералы */
+.chroma .ld {
+ color: #e0af68;
+} /* Даты */
+.chroma .m {
+ color: #ff9e64;
+} /* Числа */
+.chroma .mb {
+ color: #ff9e64;
+} /* Двоичные числа */
+.chroma .mf {
+ color: #ff9e64;
+} /* Числа с плавающей точкой */
+.chroma .mh {
+ color: #ff9e64;
+} /* Шестнадцатеричные числа */
+.chroma .mi {
+ color: #ff9e64;
+} /* Целые числа */
+.chroma .mo {
+ color: #ff9e64;
+} /* Восьмеричные числа */
+.chroma .n {
+ color: #a9b1d6;
+} /* Имена */
+.chroma .na {
+ color: #7dcfff;
+} /* Атрибуты */
+.chroma .nb {
+ color: #7dcfff;
+} /* Встроенные имена */
+.chroma .nc {
+ color: #7dcfff;
+ font-style: italic;
+} /* Классы */
+.chroma .nd {
+ color: #bb9af7;
+} /* Декораторы */
+.chroma .ne {
+ color: #f7768e;
+} /* Исключения */
+.chroma .nf {
+ color: #7dcfff;
+} /* Функции */
+.chroma .ni {
+ color: #ff9e64;
+} /* Сущности */
+.chroma .nl {
+ color: #e0af68;
+} /* Метки */
+.chroma .nn {
+ color: #7dcfff;
+} /* Пространства имен */
+.chroma .no {
+ color: #7dcfff;
+} /* Константы */
+.chroma .nt {
+ color: #f7768e;
+} /* HTML-теги */
+.chroma .nv {
+ color: #a9b1d6;
+} /* Переменные */
+.chroma .nx {
+ color: #a9b1d6;
+} /* Другие имена */
+.chroma .o {
+ color: #7aa2f7;
+} /* Операторы */
+.chroma .ow {
+ color: #7dcfff;
+} /* Ключевые слова операторов */
+.chroma .p {
+ color: #a9b1d6;
+} /* Пунктуация */
+.chroma .py {
+ color: #a9b1d6;
+} /* Свойства */
+.chroma .s {
+ color: #9ece6a;
+} /* Строковые литералы */
+.chroma .s1 {
+ color: #9ece6a;
+} /* Одинарные кавычки */
+.chroma .s2 {
+ color: #9ece6a;
+} /* Двойные кавычки */
+.chroma .sa {
+ color: #bb9af7;
+} /* Префиксы/суффиксы строк */
+.chroma .sb {
+ color: #9ece6a;
+} /* Обратные кавычки */
+.chroma .sc {
+ color: #e0af68;
+} /* Символы в строках */
+.chroma .sd {
+ color: #565f89;
+ font-style: italic;
+} /* Документационные строки */
+.chroma .se {
+ color: #ff9e64;
+} /* Экранированные последовательности */
+.chroma .sh {
+ color: #9ece6a;
+} /* Наследуемые строки */
+.chroma .si {
+ color: #bb9af7;
+} /* Интерполированные строки */
+.chroma .sr {
+ color: #9ece6a;
+} /* Регулярные выражения */
+.chroma .ss {
+ color: #9ece6a;
+} /* Символьные строки */
+.chroma .sx {
+ color: #e0af68;
+} /* Другие строки */
+.chroma .vc {
+ color: #7dcfff;
+} /* Переменные класса */
+.chroma .vg {
+ color: #7dcfff;
+} /* Глобальные переменные */
+.chroma .vi {
+ color: #7dcfff;
+} /* Переменные экземпляра */
+.chroma .vm {
+ color: #a9b1d6;
+} /* Магические переменные */
+.chroma .w {
+ color: #444b6a;
+} /* Пробельные символы */
+.chroma .err {
+ color: #f7768e;
+ background-color: #3b2a3f;
+} /* Ошибки */
diff --git a/web_src/css/features/gitgraph.css b/web_src/css/features/gitgraph.css
index 8bdafc3c99a5a..c730bc876fa76 100644
--- a/web_src/css/features/gitgraph.css
+++ b/web_src/css/features/gitgraph.css
@@ -88,162 +88,226 @@
fill: var(--color-secondary-dark-5);
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-1 {
- stroke: #499a37;
- fill: #499a37;
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-1 {
+ stroke: #4db392;
+ fill: #4db392;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-2 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-2 {
stroke: #ce4751;
fill: #ce4751;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-3 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-3 {
stroke: #8f9121;
fill: #8f9121;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-4 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-4 {
stroke: #ac32a6;
fill: #ac32a6;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-5 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-5 {
stroke: #7445e9;
fill: #7445e9;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-6 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-6 {
stroke: #c67d28;
fill: #c67d28;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-7 {
- stroke: #4db392;
- fill: #4db392;
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-7 {
+ stroke: #499a37;
+ fill: #499a37;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-8 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-8 {
stroke: #aa4d30;
fill: #aa4d30;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-9 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-9 {
stroke: #2a6f84;
fill: #2a6f84;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-10 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-10 {
stroke: #c45327;
fill: #c45327;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-11 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-11 {
stroke: #3d965c;
fill: #3d965c;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-12 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-12 {
stroke: #792a93;
fill: #792a93;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-13 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-13 {
stroke: #439d73;
fill: #439d73;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-14 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-14 {
stroke: #103aad;
fill: #103aad;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-15 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-15 {
stroke: #982e85;
fill: #982e85;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-0 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.flow-color-16-0 {
stroke: #7db233;
fill: #7db233;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-1 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-1 {
stroke: #5ac144;
fill: #5ac144;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-2 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-2 {
stroke: #ed5a8b;
fill: #ed5a8b;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-3 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-3 {
stroke: #ced049;
fill: #ced048;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-4 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-4 {
stroke: #db61d7;
fill: #db62d6;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-5 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-5 {
stroke: #8455f9;
fill: #8455f9;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-6 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-6 {
stroke: #e6a151;
fill: #e6a151;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-7 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-7 {
stroke: #44daaa;
fill: #44daaa;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-8 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-8 {
stroke: #dd7a5c;
fill: #dd7a5c;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-9 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-9 {
stroke: #38859c;
fill: #38859c;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-10 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-10 {
stroke: #d95520;
fill: #d95520;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-11 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-11 {
stroke: #42ae68;
fill: #42ae68;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-12 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-12 {
stroke: #9126b5;
fill: #9126b5;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-13 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-13 {
stroke: #4ab080;
fill: #4ab080;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-14 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-14 {
stroke: #284fb8;
fill: #284fb8;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-15 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-15 {
stroke: #971c80;
fill: #971c80;
}
-#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-0 {
+#git-graph-container:not(.monochrome)
+#rel-container
+.flow-group.highlight.flow-color-16-0 {
stroke: #87ca28;
fill: #87ca28;
}
diff --git a/web_src/css/markup/content.css b/web_src/css/markup/content.css
index 14d95ca72671e..573eeaeb228af 100644
--- a/web_src/css/markup/content.css
+++ b/web_src/css/markup/content.css
@@ -169,7 +169,7 @@ In markup content, we always use bottom margin for all elements */
}
.markup .task-list-item input[type="checkbox"] {
- margin: 0 .3em .25em -1.4em;
+ margin: 0 0.3em 0.25em -1.4em;
vertical-align: middle;
padding: 0;
}
diff --git a/web_src/css/modules/button.css b/web_src/css/modules/button.css
index 8e3309474b2a7..2c636b8d4f240 100644
--- a/web_src/css/modules/button.css
+++ b/web_src/css/modules/button.css
@@ -17,6 +17,8 @@
border: 1px solid var(--color-light-border);
color: var(--color-text);
white-space: nowrap;
+ padding: 0.57em 1.43em;
+ min-height: 38px;
}
.ui.button:focus-visible {
@@ -30,8 +32,8 @@
}
.ui.button:hover {
- background: var(--color-hover);
- color: var(--color-text);
+ background: var(--color-primary);
+ color: var(--color-nav-bg);
}
.ui.active.button,
@@ -99,10 +101,6 @@
}
/* reference sizes (not exactly at the moment): normal: padding-x=21, height=38 ; compact: padding-x=15, height=32 */
-.ui.button { /* stylelint-disable-line no-duplicate-selectors */
- min-height: 38px;
- padding: 0.57em /* around 8px */ 1.43em /* around 20px */;
-}
.ui.compact.buttons .button,
.ui.compact.button {
padding: 0.42em /* around 8px */ 1.07em /* around 15px */;
@@ -162,6 +160,7 @@
.ui.basic.buttons .button,
.ui.basic.button {
border-radius: var(--border-radius);
+ margin-top: 5px;
background: none;
}
.ui.basic.buttons {
@@ -182,8 +181,8 @@
.ui.basic.buttons .button:hover,
.ui.basic.button:hover {
- color: var(--color-text);
- background: var(--color-hover);
+ color: var(--color-primary);
+ /* background: var(--color-hover); */
border-color: var(--color-secondary-dark-2);
}
@@ -193,8 +192,8 @@
.ui.basic.active.button,
.ui.basic.buttons .active.button:hover,
.ui.basic.active.button:hover {
- color: var(--color-text);
- background: var(--color-active);
+ color: var(--color-primary);
+ /* background: var(--color-active); */
}
.ui.button.toggle.active {
@@ -214,13 +213,13 @@
.ui.primary.button,
.ui.primary.buttons .button {
background: var(--color-primary);
- color: var(--color-primary-contrast);
+ color: var(--color-nav-bg);
}
.ui.primary.button:hover,
.ui.primary.buttons .button:hover {
background: var(--color-primary-hover);
- color: var(--color-primary-contrast);
+ color: var(--color-nav-bg);
}
.ui.primary.button:active,
@@ -249,7 +248,7 @@
.ui.red.button,
.ui.red.buttons .button {
- color: var(--color-white);
+ color: var(--color-nav-bg);
background: var(--color-red);
}
diff --git a/web_src/css/modules/checkbox.css b/web_src/css/modules/checkbox.css
index f7e61ba360ff1..1fc9dacd3b89f 100644
--- a/web_src/css/modules/checkbox.css
+++ b/web_src/css/modules/checkbox.css
@@ -87,6 +87,7 @@ input[type="radio"] {
left: 0;
}
.ui.toggle.checkbox label::after {
+ cursor: pointer;
background: var(--color-white);
box-shadow: 1px 1px 4px 1px var(--color-shadow);
position: absolute;
diff --git a/web_src/css/modules/input.css b/web_src/css/modules/input.css
index d39377b4e1f7b..29a307e1b92b8 100644
--- a/web_src/css/modules/input.css
+++ b/web_src/css/modules/input.css
@@ -170,13 +170,16 @@
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection {
min-width: 10em;
}
-.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(:focus) {
+.ui.action.input:not([class*="left action"])
+> .ui.dropdown.selection:not(:focus) {
border-right: none;
}
-.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(.active):hover {
+.ui.action.input:not([class*="left action"])
+> .ui.dropdown.selection:not(.active):hover {
border-color: var(--color-input-border);
}
-.ui.action.input:not([class*="left action"]) .ui.dropdown.selection.upward.visible {
+.ui.action.input:not([class*="left action"])
+.ui.dropdown.selection.upward.visible {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
@@ -184,12 +187,19 @@
.ui.action.input:not([class*="left action"]) > input:hover {
border-right: none;
}
-.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection,
-.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection:hover,
+.ui.action.input:not([class*="left action"])
+> input:focus
++ .ui.dropdown.selection,
+.ui.action.input:not([class*="left action"])
+> input:focus
++ .ui.dropdown.selection:hover,
.ui.action.input:not([class*="left action"]) > input:focus + .button,
.ui.action.input:not([class*="left action"]) > input:focus + .button:hover,
.ui.action.input:not([class*="left action"]) > input:focus + i.icon + .button,
-.ui.action.input:not([class*="left action"]) > input:focus + i.icon + .button:hover {
+.ui.action.input:not([class*="left action"])
+> input:focus
++ i.icon
++ .button:hover {
border-left-color: var(--color-primary);
}
.ui.action.input:not([class*="left action"]) > input:focus {
diff --git a/web_src/css/modules/label.css b/web_src/css/modules/label.css
index cf850e4c5aac7..776cd0d23bca6 100644
--- a/web_src/css/modules/label.css
+++ b/web_src/css/modules/label.css
@@ -22,6 +22,7 @@
a.ui.label {
cursor: pointer;
+ margin-top: 5px;
}
.ui.label > a {
@@ -91,25 +92,25 @@ a.ui.label:hover {
.ui.basic.label {
background: var(--color-button);
- border: 1px solid var(--color-light-border);
- color: var(--color-text-light);
+ border: 1px solid var(--color-primary-2);
+ color: var(--color-primary);
}
a.ui.basic.label:hover {
text-decoration: none;
- color: var(--color-text);
- border-color: var(--color-secondary-dark-2);
+ color: var(--color-primary-hover);
+ border-color: var(--color-primary);
background: var(--color-hover);
}
.ui.ui.ui.primary.label {
background: var(--color-primary);
border-color: var(--color-primary-dark-2);
- color: var(--color-primary-contrast);
+ color: var(--color-white);
}
a.ui.ui.ui.primary.label:hover {
- background: var(--color-primary-dark-3);
- border-color: var(--color-primary-dark-3);
- color: var(--color-primary-contrast);
+ background: var(--color-primary-hover);
+ border-color: var(--color-primary-dark-2);
+ color: var(--color-nav-bg);
}
.ui.ui.ui.basic.primary.label {
background: transparent;
@@ -288,7 +289,9 @@ a.ui.ui.ui.basic.grey.label:hover {
If the labels-list itself needs some layouts, use extra classes or "tw" helpers. */
.labels-list {
display: contents;
- font-size: var(--font-size-label); /* it must match the label font size, otherwise the height mismatches */
+ font-size: var(
+ --font-size-label
+ ); /* it must match the label font size, otherwise the height mismatches */
}
.labels-list a {
diff --git a/web_src/css/modules/menu.css b/web_src/css/modules/menu.css
index 5072dcbd0e17d..a64748be5000f 100644
--- a/web_src/css/modules/menu.css
+++ b/web_src/css/modules/menu.css
@@ -332,27 +332,27 @@
background: none;
padding: 0.5em 1.33333333em;
font-size: 0.85714286em;
- color: var(--color-text-light-2);
+ color: var(--color-text-light);
}
.ui.vertical.menu .item .menu .item {
- color: var(--color-text-light-2);
+ color: var(--color-text-light);
text-indent: 16px;
}
.ui.vertical.menu .item .menu .item:hover,
.ui.vertical.menu .item .menu a.item:hover {
- color: var(--color-text-light-1);
+ color: var(--color-text-light);
}
.ui.vertical.menu .item .menu .active.item {
background-color: transparent;
font-weight: var(--font-weight-medium);
- color: var(--color-text);
+ color: var(--color-text-light-2);
}
.ui.vertical.menu .item .menu a.item:hover {
- color: var(--color-text);
+ color: var(--color-text-light-2);
}
.ui.vertical.menu .menu .item::before {
display: none;
@@ -458,7 +458,7 @@
}
@media (max-width: 767.98px) {
- .ui.pagination.menu .item:not(.active,.navigation),
+ .ui.pagination.menu .item:not(.active, .navigation),
.ui.pagination.menu .item.navigation span.navigation_label {
display: none;
}
@@ -479,7 +479,7 @@
background: none;
margin-left: 0;
margin-right: 0;
- gap: .35714286em;
+ gap: 0.35714286em;
border-radius: 0;
border: none;
}
@@ -602,7 +602,7 @@
.ui.secondary.pointing.menu .active.item,
.ui.secondary.pointing.menu .active.item:hover,
.ui.secondary.pointing.menu .dropdown.item:hover {
- color: var(--color-text-dark);
+ color: var(--color-primary-3-hover);
}
.ui.secondary.pointing.menu .active.dropdown.item {
diff --git a/web_src/css/modules/navbar.css b/web_src/css/modules/navbar.css
index 149766a586b09..7e86e56a020f5 100644
--- a/web_src/css/modules/navbar.css
+++ b/web_src/css/modules/navbar.css
@@ -31,12 +31,14 @@
}
#navbar .item.active {
- background: var(--color-active);
+ color: var(--color-primary);
+ /* background: var(--color-active); */
}
#navbar a.item:hover,
#navbar button.item:hover {
- background: var(--color-nav-hover-bg);
+ color: var(--color-primary);
+ /* background: var(--color-nav-hover-bg); */
}
#navbar .item.ui.dropdown {
@@ -130,7 +132,9 @@
}
.secondary-nav {
- background: var(--color-secondary-nav-bg) !important; /* important because of .ui.secondary.menu */
+ background: var(
+ --color-secondary-nav-bg
+ ) !important; /* important because of .ui.secondary.menu */
}
.issue-navbar {
diff --git a/web_src/css/modules/segment.css b/web_src/css/modules/segment.css
index adb514be59939..5afeef65a0376 100644
--- a/web_src/css/modules/segment.css
+++ b/web_src/css/modules/segment.css
@@ -7,7 +7,7 @@
padding: 1em;
border-radius: 0.28571429rem;
border: 1px solid var(--color-secondary);
- background: var(--color-box-body);
+ background: var(--color-nav-bg);
color: var(--color-text);
}
.ui.segment:first-child {
@@ -70,7 +70,8 @@
}
.ui.segments:not(.horizontal) > .segment:only-child,
-.ui.segments:not(.horizontal) > .segment:has(~ .tw-hidden) { /* workaround issue with :last-child ignoring hidden elements */
+.ui.segments:not(.horizontal) > .segment:has(~ .tw-hidden) {
+ /* workaround issue with :last-child ignoring hidden elements */
border-radius: 0.28571429rem;
}
diff --git a/web_src/css/modules/table.css b/web_src/css/modules/table.css
index 6298471d474e4..b05fa32dcce65 100644
--- a/web_src/css/modules/table.css
+++ b/web_src/css/modules/table.css
@@ -169,7 +169,7 @@
.ui.selectable.table > tbody > tr:hover,
.ui.table tbody tr td.selectable:hover {
- background: var(--color-hover);
+ background: var(--color-hover-table);
}
.ui.attached.table {
@@ -295,7 +295,7 @@
background: var(--color-light);
}
.ui.basic.striped.selectable.table > tbody > tr:nth-child(2n):hover {
- background: var(--color-hover);
+ background: var(--color-hover-table);
}
.ui[class*="very basic"].table {
diff --git a/web_src/css/repo.css b/web_src/css/repo.css
index 9f4fa518819a7..5083474bc471d 100644
--- a/web_src/css/repo.css
+++ b/web_src/css/repo.css
@@ -162,22 +162,38 @@ td .commit-summary {
font-size: 0.5em;
}
-.repository.file.list .non-diff-file-content .header .file-actions .btn-octicon {
+.repository.file.list
+.non-diff-file-content
+.header
+.file-actions
+.btn-octicon {
line-height: var(--line-height-default);
padding: 8px;
vertical-align: middle;
color: var(--color-text);
}
-.repository.file.list .non-diff-file-content .header .file-actions .btn-octicon:hover {
+.repository.file.list
+.non-diff-file-content
+.header
+.file-actions
+.btn-octicon:hover {
color: var(--color-primary);
}
-.repository.file.list .non-diff-file-content .header .file-actions .btn-octicon-danger:hover {
+.repository.file.list
+.non-diff-file-content
+.header
+.file-actions
+.btn-octicon-danger:hover {
color: var(--color-red);
}
-.repository.file.list .non-diff-file-content .header .file-actions .btn-octicon.disabled {
+.repository.file.list
+.non-diff-file-content
+.header
+.file-actions
+.btn-octicon.disabled {
color: inherit;
opacity: var(--opacity-disabled);
cursor: default;
@@ -268,7 +284,11 @@ td .commit-summary {
display: none;
}
}
-.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .branch-name {
+.repository.file.editor
+.commit-form-wrapper
+.commit-form
+.quick-pull-choice
+.branch-name {
display: inline-block;
padding: 2px 4px;
font: 12px var(--fonts-monospace);
@@ -278,21 +298,34 @@ td .commit-summary {
margin: 0 2px;
}
-.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .new-branch-name-input {
+.repository.file.editor
+.commit-form-wrapper
+.commit-form
+.quick-pull-choice
+.new-branch-name-input {
position: relative;
margin-left: 25px;
}
-.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .new-branch-name-input input {
+.repository.file.editor
+.commit-form-wrapper
+.commit-form
+.quick-pull-choice
+.new-branch-name-input
+input {
width: 240px !important;
padding-left: 26px !important;
}
-.repository.file.editor .commit-form-wrapper .commit-form .quick-pull-choice .octicon-git-branch {
+.repository.file.editor
+.commit-form-wrapper
+.commit-form
+.quick-pull-choice
+.octicon-git-branch {
position: absolute;
top: 9px;
left: 10px;
- color: var(--color-grey);
+ color: var(--color-grey-light);
}
.repository.options #interval {
@@ -361,7 +394,7 @@ td .commit-summary {
.repository.view.issue .issue-title .ui.input input {
font-size: 1.5em;
- padding: 2px .5rem;
+ padding: 2px 0.5rem;
}
.issue-title .index {
@@ -436,7 +469,8 @@ td .commit-summary {
padding-left: 16px;
}
-.repository.view.issue .comment-list .timeline::before { /* ciara */
+.repository.view.issue .comment-list .timeline::before {
+ /* ciara */
display: block;
content: "";
position: absolute;
@@ -518,7 +552,11 @@ td .commit-summary {
padding: 3px;
}
-.repository.view.issue .comment-list .timeline-item .badge .svg.octicon-comment {
+.repository.view.issue
+.comment-list
+.timeline-item
+.badge
+.svg.octicon-comment {
margin-top: 2px;
}
@@ -536,7 +574,11 @@ td .commit-summary {
color: inherit;
}
-.repository.view.issue .comment-list .timeline-item .avatar-with-link + .comment-text-line {
+.repository.view.issue
+.comment-list
+.timeline-item
+.avatar-with-link
++ .comment-text-line {
margin-left: 0.25em;
}
@@ -545,7 +587,10 @@ td .commit-summary {
padding-top: 0;
}
-.repository.view.issue .comment-list .timeline-item.event > .commit-status-link {
+.repository.view.issue
+.comment-list
+.timeline-item.event
+> .commit-status-link {
float: right;
margin-right: 8px;
margin-top: 4px;
@@ -587,7 +632,11 @@ td .commit-summary {
background: var(--color-box-body);
}
-.repository.view.issue .comment-list .conversation-holder .comment .comment-container {
+.repository.view.issue
+.comment-list
+.conversation-holder
+.comment
+.comment-container {
border: none;
}
@@ -596,7 +645,12 @@ td .commit-summary {
width: 100%;
margin: 0;
}
- .repository.view.issue .comment-list .comment .content .form .button:not(:last-child) {
+ .repository.view.issue
+ .comment-list
+ .comment
+ .content
+ .form
+ .button:not(:last-child) {
margin-bottom: 1rem;
}
}
@@ -620,10 +674,11 @@ td .commit-summary {
}
.merge-section-info code {
- border: 1px solid var(--color-light-border);
+ border: 1px solid var(--color-primary);
border-radius: var(--border-radius);
+ color: var(--color-milk-text);
padding: 2px 4px;
- background: var(--color-light);
+ background: var(--color-primary-2);
}
.repository.view.issue .comment-list .comment .no-content {
@@ -662,7 +717,10 @@ td .commit-summary {
margin-left: 24px;
}
-.repository.view.issue .comment-list .comment-code-cloud button.comment-form-reply {
+.repository.view.issue
+.comment-list
+.comment-code-cloud
+button.comment-form-reply {
margin: 0;
}
@@ -790,16 +848,16 @@ td .commit-summary {
/* the border css competes with .markup where all tables have outer border which would add a double
border here, remove only the outer borders from this table */
-.repository .data-table tr:first-child :is(td,th) {
+.repository .data-table tr:first-child :is(td, th) {
border-top: none !important;
}
-.repository .data-table tr:last-child :is(td,th) {
+.repository .data-table tr:last-child :is(td, th) {
border-bottom: none !important;
}
-.repository .data-table tr :is(td,th):first-child {
+.repository .data-table tr :is(td, th):first-child {
border-left: none !important;
}
-.repository .data-table tr :is(td,th):last-child {
+.repository .data-table tr :is(td, th):last-child {
border-right: none !important;
}
@@ -899,6 +957,10 @@ td .commit-summary {
justify-content: end;
}
+.diff-detail-actions > * {
+ margin-top: 5px;
+}
+
.diff-detail-actions > *,
.diff-detail-actions .button {
margin-left: 0 !important;
@@ -990,7 +1052,12 @@ td .commit-summary {
display: inline-block;
}
-.repository .diff-file-box .code-diff-split .tag-code .lines-code code.code-inner {
+.repository
+.diff-file-box
+.code-diff-split
+.tag-code
+.lines-code
+code.code-inner {
padding-left: 10px !important;
}
@@ -1130,7 +1197,8 @@ td .commit-summary {
}
.repository .repository-summary .sub-menu .item.active {
- background: var(--color-secondary);
+ color: var(--color-primary-3);
+ background: var(--color-code-bg);
}
#cite-repo-modal #citation-panel {
@@ -1837,7 +1905,11 @@ tbody.commit-list {
/* Don't show the general avatar, we show the inline avatar on mobile.
* And don't show the role labels, there's no place for that. */
.repository.view.issue .comment-list .timeline .timeline-avatar,
- .repository.view.issue .comment-list .timeline .comment-header-right .role-label {
+ .repository.view.issue
+ .comment-list
+ .timeline
+ .comment-header-right
+ .role-label {
display: none;
}
.commit-header h3 {
@@ -1881,7 +1953,7 @@ tbody.commit-list {
.commit-status-list {
max-height: 240px; /* fit exactly 6 items, commit-status-item.height * 6 */
overflow-x: hidden;
- transition: max-height .2s;
+ transition: max-height 0.2s;
}
.commit-status-item {
diff --git a/web_src/css/review.css b/web_src/css/review.css
index 23383c051cccb..24c5e9ae5a09b 100644
--- a/web_src/css/review.css
+++ b/web_src/css/review.css
@@ -133,7 +133,7 @@
}
.code-expander-button:hover {
- background: var(--color-primary);
+ background: var(--color-primary-2-hover);
color: var(--color-primary-contrast);
}
@@ -150,7 +150,9 @@
.review-box-panel .combo-markdown-editor {
width: 730px; /* this width matches current EasyMDE's toolbar's width */
- max-width: calc(100vw - 70px); /* leave enough space on left, and align the page content */
+ max-width: calc(
+ 100vw - 70px
+ ); /* leave enough space on left, and align the page content */
}
#review-box {
diff --git a/web_src/css/shared/flex-list.css b/web_src/css/shared/flex-list.css
index e94e9e9cc265c..165efeea46abc 100644
--- a/web_src/css/shared/flex-list.css
+++ b/web_src/css/shared/flex-list.css
@@ -25,7 +25,7 @@
.flex-item-header {
display: flex;
- gap: .25rem;
+ gap: 0.25rem;
justify-content: space-between;
flex-wrap: wrap;
}
@@ -59,7 +59,7 @@
}
.flex-item .flex-item-title a {
- color: var(--color-text);
+ color: var(--color-primary);
overflow-wrap: anywhere;
}
@@ -67,13 +67,13 @@
display: flex;
align-items: center;
flex-wrap: wrap;
- gap: .25rem;
+ gap: 0.25rem;
color: var(--color-text-light-2);
overflow-wrap: anywhere;
}
.flex-item .flex-item-body a {
- color: inherit;
+ /* color: inherit; */
overflow-wrap: anywhere;
}
diff --git a/web_src/css/themes/theme-gitea-dark.css b/web_src/css/themes/theme-gitea-dark.css
index 48fbd14dfb251..0de83f412a3a0 100644
--- a/web_src/css/themes/theme-gitea-dark.css
+++ b/web_src/css/themes/theme-gitea-dark.css
@@ -7,8 +7,12 @@ gitea-theme-meta-info {
:root {
--is-dark-theme: true;
- --color-primary: #4183c4;
- --color-primary-contrast: #ffffff;
+ --color-primary-2: #384c78b3;
+ --color-primary-2-hover: #384c78;
+ --color-primary-3: #75a3e8cc;
+ --color-primary-3-hover: #75a3e8;
+ --color-primary: #75a3e8cc;
+ --color-primary-contrast: #bcc3cb;
--color-primary-dark-1: #548fca;
--color-primary-dark-2: #679cd0;
--color-primary-dark-3: #7aa8d6;
@@ -16,25 +20,30 @@ gitea-theme-meta-info {
--color-primary-dark-5: #b3cde7;
--color-primary-dark-6: #d9e6f3;
--color-primary-dark-7: #f4f8fb;
- --color-primary-light-1: #3876b3;
- --color-primary-light-2: #31699f;
+ --color-primary-light-1: #75a3e8;
+ --color-primary-light-2: #75a3e8;
--color-primary-light-3: #2b5c8b;
--color-primary-light-4: #254f77;
--color-primary-light-5: #193450;
--color-primary-light-6: #0c1a28;
--color-primary-light-7: #04080c;
- --color-primary-alpha-10: #4183c419;
- --color-primary-alpha-20: #4183c433;
- --color-primary-alpha-30: #4183c44b;
- --color-primary-alpha-40: #4183c466;
- --color-primary-alpha-50: #4183c480;
- --color-primary-alpha-60: #4183c499;
- --color-primary-alpha-70: #4183c4b3;
- --color-primary-alpha-80: #4183c4cc;
- --color-primary-alpha-90: #4183c4e1;
+ --color-primary-external-legend-1: #5ee9b5;
+ --color-primary-external-legend-2: #00d492;
+ --color-primary-external-legend-3: #00bc7d;
+ --color-primary-external-legend-4: #009966;
+ --color-primary-external-legend-5: #007a55;
+ --color-primary-alpha-10: #1e1a4d;
+ --color-primary-alpha-20: #312c85;
+ --color-primary-alpha-30: #372aac;
+ --color-primary-alpha-40: #432dd7;
+ --color-primary-alpha-50: #4f39f6;
+ --color-primary-alpha-60: #615fff;
+ --color-primary-alpha-70: #7c86ff;
+ --color-primary-alpha-80: #a3b3ff;
+ --color-primary-alpha-90: #c6d2ff;
--color-primary-hover: var(--color-primary-light-1);
--color-primary-active: var(--color-primary-light-2);
- --color-secondary: #3b444c;
+ --color-secondary: #4d5565;
--color-secondary-dark-1: #414b54;
--color-secondary-dark-2: #49545f;
--color-secondary-dark-3: #576471;
@@ -57,7 +66,7 @@ gitea-theme-meta-info {
--color-secondary-alpha-30: #3b444c4b;
--color-secondary-alpha-40: #3b444c66;
--color-secondary-alpha-50: #3b444c80;
- --color-secondary-alpha-60: #3b444c99;
+ --color-secondary-alpha-60: #363b49;
--color-secondary-alpha-70: #3b444cb3;
--color-secondary-alpha-80: #3b444ccc;
--color-secondary-alpha-90: #3b444ce1;
@@ -65,20 +74,20 @@ gitea-theme-meta-info {
--color-secondary-hover: var(--color-secondary-dark-3);
--color-secondary-active: var(--color-secondary-dark-2);
/* console colors - used for actions console and console files */
- --color-console-fg: #f7f8f9;
+ --color-console-fg: #abb1d3;
--color-console-fg-subtle: #bdc4cc;
- --color-console-bg: #171b1e;
- --color-console-border: #2e353b;
- --color-console-hover-bg: #272d33;
- --color-console-active-bg: #2e353b;
- --color-console-menu-bg: #262b31;
- --color-console-menu-border: #414b55;
+ --color-console-bg: var(--color-nav-bg);
+ --color-console-border: var(--color-primary-2);
+ --color-console-hover-bg: #6464ff1a;
+ --color-console-active-bg: #6464ff1a;
+ --color-console-menu-bg: var(--color-nav-bg);
+ --color-console-menu-border: var(--color-primary-2);
/* named colors */
- --color-red: #cc4848;
+ --color-red: #e24471cc; /* #cc4848 */
--color-orange: #cc580c;
--color-yellow: #cc9903;
--color-olive: #91a313;
- --color-green: #87ab63;
+ --color-green: #50bda4; /* #73c280 */
--color-teal: #00918a;
--color-blue: #3a8ac6;
--color-violet: #906ae1;
@@ -87,7 +96,7 @@ gitea-theme-meta-info {
--color-brown: #a47252;
--color-black: #1d2328;
/* light variants - produced via Sass scale-color(color, $lightness: +10%) */
- --color-red-light: #d15a5a;
+ --color-red-light: #e24471; /* #d15a5a */
--color-orange-light: #f6a066;
--color-yellow-light: #eaaf03;
--color-olive-light: #abc016;
@@ -100,7 +109,7 @@ gitea-theme-meta-info {
--color-brown-light: #b08061;
--color-black-light: #424851;
/* dark 1 variants - produced via Sass scale-color(color, $lightness: -10%) */
- --color-red-dark-1: #c23636;
+ --color-red-dark-1: #e24471; /* #c23636 */
--color-orange-dark-1: #f38236;
--color-yellow-dark-1: #b88a03;
--color-olive-dark-1: #839311;
@@ -113,7 +122,7 @@ gitea-theme-meta-info {
--color-brown-dark-1: #94674a;
--color-black-dark-1: #292e38;
/* dark 2 variants - produced via Sass scale-color(color, $lightness: -20%) */
- --color-red-dark-2: #ad3030;
+ --color-red-dark-2: #e24471e6; /* #ad3030 */
--color-orange-dark-2: #f16e17;
--color-yellow-dark-2: #a37a02;
--color-olive-dark-2: #74820f;
@@ -147,25 +156,33 @@ gitea-theme-meta-info {
--color-grey-light: #818f9e;
--color-gold: #b1983b;
--color-white: #ffffff;
- --color-diff-added-linenum-bg: #274227;
- --color-diff-added-row-bg: #203224;
+ --color-diff-added-linenum-bg: #324e38;
+ --color-diff-added-row-bg: #25332f;
--color-diff-added-row-border: #314a37;
- --color-diff-added-word-bg: #3c653c;
+ --color-diff-added-word-bg: #324e38;
--color-diff-moved-row-bg: #818044;
--color-diff-moved-row-border: #bcca6f;
- --color-diff-removed-linenum-bg: #482121;
- --color-diff-removed-row-bg: #301e1e;
+ --color-diff-removed-linenum-bg: #5b3235;
+ --color-diff-removed-row-bg: #3c2930;
--color-diff-removed-row-border: #634343;
--color-diff-removed-word-bg: #6f3333;
- --color-diff-inactive: #22282d;
- --color-error-border: #a04141;
+ --color-diff-inactive: #363b49;
+ --color-error-border: var(--color-red);
+ --color-error-bg: #e244711a;
+ --color-error-bg-active: var(--color-red-dark-1);
+ --color-error-bg-hover: var(--color-red-dark-2);
+ --color-error-text: var(--color-red-light);
+ /* --color-error-border: #a04141;
--color-error-bg: #522;
--color-error-bg-active: #744;
--color-error-bg-hover: #633;
- --color-error-text: #f9cbcb;
+ --color-error-text: #f9cbcb; */
--color-success-border: #458a57;
--color-success-bg: #284034;
--color-success-text: #6cc664;
+ /* --color-success-border: #50bda4;
+ --color-success-bg: #50bda41a;
+ --color-success-text: #50bda4cc; */
--color-warning-border: #bb9d00;
--color-warning-bg: #3a3a30;
--color-warning-text: #fbbd08;
@@ -187,62 +204,71 @@ gitea-theme-meta-info {
--color-git: #f05133;
--color-logo: #609926;
/* target-based colors */
- --color-body: #1b1f23;
- --color-box-header: #1a1d1f;
- --color-box-body: #14171a;
- --color-box-body-highlight: #1e2226;
- --color-text-dark: #f7f8f9;
- --color-text: #d0d5da;
- --color-text-light: #bcc3cb;
- --color-text-light-1: #a5afb9;
- --color-text-light-2: #8f9ba8;
- --color-text-light-3: #788797;
+ --color-body: #1f212b;
+ --color-box-header: #363b49;
+ --color-box-body: #1f212b;
+ --color-box-body-highlight: #2c3752;
+ --color-text-dark: #666d88;
+ --color-text: #7d84a0;
+ --color-text-light: #949bb8;
+ --color-text-light-1: #abb1d3;
+ --color-text-light-2: #c0c5de;
+ --color-text-light-3: #d1d5e6;
--color-footer: var(--color-nav-bg);
--color-timeline: #343c44;
--color-input-text: var(--color-text-dark);
- --color-input-background: #171a1e;
- --color-input-toggle-background: #2e353c;
+ --color-input-background: #1f212b;
+ --color-input-toggle-background: #363b49;
--color-input-border: var(--color-secondary);
--color-input-border-hover: var(--color-secondary-dark-1);
- --color-light: #00001728;
- --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled)));
- --color-light-border: #e8f3ff28;
- --color-hover: #e8f3ff19;
- --color-hover-opaque: #21252a; /* TODO: color-mix(in srgb, var(--color-body), var(--color-hover)); */
- --color-active: #e8f3ff24;
- --color-menu: #171a1e;
- --color-card: #171a1e;
- --color-markup-table-row: #e8f3ff0f;
- --color-markup-code-block: #e8f3ff12;
- --color-markup-code-inline: #e8f3ff28;
- --color-button: #171a1e;
- --color-code-bg: #14171a;
- --color-shadow: #00001758;
- --color-shadow-opaque: #000017;
- --color-secondary-bg: #2a3137;
- --color-expand-button: #2f363d;
- --color-placeholder-text: var(--color-text-light-3);
- --color-editor-line-highlight: var(--color-primary-light-5);
- --color-project-column-bg: var(--color-secondary-light-2);
- --color-caret: var(--color-text); /* should ideally be --color-text-dark, see #15651 */
- --color-reaction-bg: #e8f3ff12;
+ --color-light: #21232d;
+ --color-hover-table: #2a2e41;
+ --color-light-mimic-enabled: rgba(
+ 0,
+ 0,
+ 0,
+ calc(40 / 255 * 222 / 255 / var(--opacity-disabled))
+ );
+ --color-light-border: #4d5565;
+ --color-hover: #2a2e41; /* #50bda4 */
+ --color-hover-opaque: #2a2e41; /* TODO: color-mix(in srgb, var(--color-body), var(--color-hover)); */
+ --color-active: #2a2e41;
+ --color-menu: #1f212b;
+ --color-card: #1f212b;
+ --color-markup-table-row: #e2447180;
+ --color-markup-code-block: #2a2e41;
+ --color-markup-code-inline: #384c78b3;
+ --color-milk-text: #abb1d3;
+ --color-button: #363b49;
+ --color-code-bg: #2a2e41;
+ --color-shadow: #6464ff4d;
+ --color-shadow-opaque: #6464ff4d;
+ --color-secondary-bg: #1f212b;
+ --color-expand-button: #384c78b3;
+ --color-placeholder-text: var(--color-green);
+ --color-editor-line-highlight: #32364d;
+ --color-project-column-bg: #6464ff1a;
+ --color-caret: var(
+ --color-text
+ ); /* should ideally be --color-text-dark, see #15651 */
+ --color-reaction-bg: #1f212b;
--color-reaction-hover-bg: var(--color-primary-light-4);
--color-reaction-active-bg: var(--color-primary-light-5);
- --color-tooltip-text: #f9fafb;
- --color-tooltip-bg: #000b17f0;
- --color-nav-bg: #16191d;
- --color-nav-hover-bg: var(--color-secondary-light-1);
+ --color-tooltip-text: #50bda4;
+ --color-tooltip-bg: #1f212b;
+ --color-nav-bg: #2a2e41;
+ --color-nav-hover-bg: #363b49;
--color-nav-text: var(--color-text);
- --color-secondary-nav-bg: #181c20;
- --color-label-text: var(--color-text);
- --color-label-bg: #7282924b;
- --color-label-hover-bg: #728292a0;
- --color-label-active-bg: #728292ff;
+ --color-secondary-nav-bg: #1f212b;
+ --color-label-text: var(--color-nav-bg);
+ --color-label-bg: var(--color-primary);
+ --color-label-hover-bg: var(--color-primary-hover);
+ --color-label-active-bg: var(--color-primary-active);
--color-accent: var(--color-primary-light-1);
--color-small-accent: var(--color-primary-light-5);
--color-highlight-fg: #87651e;
- --color-highlight-bg: #352c1c;
- --color-overlay-backdrop: #080808c0;
+ --color-highlight-bg: #1f212b;
+ --color-overlay-backdrop: #1f212b;
accent-color: var(--color-accent);
color-scheme: dark;
}
diff --git a/web_src/css/themes/theme-gitea-light.css b/web_src/css/themes/theme-gitea-light.css
index eaff717417ff2..23d071f5b55a9 100644
--- a/web_src/css/themes/theme-gitea-light.css
+++ b/web_src/css/themes/theme-gitea-light.css
@@ -7,124 +7,133 @@ gitea-theme-meta-info {
:root {
--is-dark-theme: false;
- --color-primary: #4183c4;
- --color-primary-contrast: #ffffff;
- --color-primary-dark-1: #3876b3;
- --color-primary-dark-2: #31699f;
- --color-primary-dark-3: #2b5c8b;
- --color-primary-dark-4: #254f77;
- --color-primary-dark-5: #193450;
- --color-primary-dark-6: #0c1a28;
- --color-primary-dark-7: #04080c;
- --color-primary-light-1: #548fca;
- --color-primary-light-2: #679cd0;
- --color-primary-light-3: #7aa8d6;
- --color-primary-light-4: #8db5dc;
- --color-primary-light-5: #b3cde7;
- --color-primary-light-6: #d9e6f3;
- --color-primary-light-7: #f4f8fb;
- --color-primary-alpha-10: #4183c419;
- --color-primary-alpha-20: #4183c433;
- --color-primary-alpha-30: #4183c44b;
- --color-primary-alpha-40: #4183c466;
- --color-primary-alpha-50: #4183c480;
- --color-primary-alpha-60: #4183c499;
- --color-primary-alpha-70: #4183c4b3;
- --color-primary-alpha-80: #4183c4cc;
- --color-primary-alpha-90: #4183c4e1;
- --color-primary-hover: var(--color-primary-dark-1);
- --color-primary-active: var(--color-primary-dark-2);
- --color-secondary: #d0d7de;
- --color-secondary-dark-1: #c7ced5;
- --color-secondary-dark-2: #b9c0c7;
- --color-secondary-dark-3: #99a0a7;
- --color-secondary-dark-4: #899097;
- --color-secondary-dark-5: #7a8188;
- --color-secondary-dark-6: #6a7178;
- --color-secondary-dark-7: #5b6269;
- --color-secondary-dark-8: #4b5259;
- --color-secondary-dark-9: #3c434a;
- --color-secondary-dark-10: #2c333a;
- --color-secondary-dark-11: #1d242b;
- --color-secondary-dark-12: #0d141b;
- --color-secondary-dark-13: #00040b;
- --color-secondary-light-1: #dee5ec;
- --color-secondary-light-2: #e4ebf2;
- --color-secondary-light-3: #ebf2f9;
- --color-secondary-light-4: #f1f8ff;
- --color-secondary-alpha-10: #d0d7de19;
- --color-secondary-alpha-20: #d0d7de33;
- --color-secondary-alpha-30: #d0d7de4b;
- --color-secondary-alpha-40: #d0d7de66;
- --color-secondary-alpha-50: #d0d7de80;
- --color-secondary-alpha-60: #d0d7de99;
- --color-secondary-alpha-70: #d0d7deb3;
- --color-secondary-alpha-80: #d0d7decc;
- --color-secondary-alpha-90: #d0d7dee1;
+ --color-primary-2: #615fff;
+ --color-primary-2-hover: #4f39f6;
+ --color-primary-3: #615fff;
+ --color-primary-3-hover: #4f39f6;
+ --color-primary: #615fff;
+ --color-primary-contrast: #bcc3cb;
+ --color-primary-dark-1: #548fca;
+ --color-primary-dark-2: #679cd0;
+ --color-primary-dark-3: #7aa8d6;
+ --color-primary-dark-4: #8db5dc;
+ --color-primary-dark-5: #b3cde7;
+ --color-primary-dark-6: #d9e6f3;
+ --color-primary-dark-7: #f4f8fb;
+ --color-primary-light-1: #4f39f6;
+ --color-primary-light-2: #4f39f6;
+ --color-primary-light-3: #432dd7;
+ --color-primary-light-4: #372aac;
+ --color-primary-light-5: #312c85;
+ --color-primary-light-6: #1e1a4d;
+ --color-primary-light-7: #04080c;
+ --color-primary-external-legend-1: #4f39f6;
+ --color-primary-external-legend-2: #615fff;
+ --color-primary-external-legend-3: #7c86ff;
+ --color-primary-external-legend-4: #a3b3ff;
+ --color-primary-external-legend-5: #c6d2ff;
+ --color-primary-alpha-10: #1e1a4d;
+ --color-primary-alpha-20: #312c85;
+ --color-primary-alpha-30: #372aac;
+ --color-primary-alpha-40: #432dd7;
+ --color-primary-alpha-50: #4f39f6;
+ --color-primary-alpha-60: #615fff;
+ --color-primary-alpha-70: #7c86ff;
+ --color-primary-alpha-80: #a3b3ff;
+ --color-primary-alpha-90: #c6d2ff;
+ --color-primary-hover: var(--color-primary-light-1);
+ --color-primary-active: var(--color-primary-light-2);
+ --color-secondary: #c6c9e2;
+ --color-secondary-dark-1: #414b54;
+ --color-secondary-dark-2: #49545f;
+ --color-secondary-dark-3: #576471;
+ --color-secondary-dark-4: #677685;
+ --color-secondary-dark-5: #758594;
+ --color-secondary-dark-6: #8392a0;
+ --color-secondary-dark-7: #929eab;
+ --color-secondary-dark-8: #a2acb7;
+ --color-secondary-dark-9: #a9b3bd;
+ --color-secondary-dark-10: #b7bfc7;
+ --color-secondary-dark-11: #c5cbd2;
+ --color-secondary-dark-12: #cfd4da;
+ --color-secondary-dark-13: #d2d7dc;
+ --color-secondary-light-1: #313940;
+ --color-secondary-light-2: #292f35;
+ --color-secondary-light-3: #1d2226;
+ --color-secondary-light-4: #171b1e;
+ --color-secondary-alpha-10: #3b444c19;
+ --color-secondary-alpha-20: #c6c9e2;
+ --color-secondary-alpha-30: #3b444c4b;
+ --color-secondary-alpha-40: #d0d4ed;
+ --color-secondary-alpha-50: #3b444c80;
+ --color-secondary-alpha-60: #d5d9f3;
+ --color-secondary-alpha-70: #3b444cb3;
+ --color-secondary-alpha-80: #3b444ccc;
+ --color-secondary-alpha-90: #3b444ce1;
--color-secondary-button: var(--color-secondary-dark-4);
- --color-secondary-hover: var(--color-secondary-dark-5);
- --color-secondary-active: var(--color-secondary-dark-6);
+ --color-secondary-hover: var(--color-secondary-dark-3);
+ --color-secondary-active: var(--color-secondary-dark-2);
/* console colors - used for actions console and console files */
- --color-console-fg: #f7f8f9;
+ --color-console-fg: #abb1d3;
--color-console-fg-subtle: #bdc4cc;
- --color-console-bg: #171b1e;
- --color-console-border: #2e353b;
- --color-console-hover-bg: #272d33;
- --color-console-active-bg: #2e353b;
- --color-console-menu-bg: #262b31;
- --color-console-menu-border: #414b55;
+ --color-console-bg: var(--color-nav-bg);
+ --color-console-border: var(--color-primary-2);
+ --color-console-hover-bg: #6464ff1a;
+ --color-console-active-bg: #6464ff1a;
+ --color-console-menu-bg: var(--color-nav-bg);
+ --color-console-menu-border: var(--color-primary-2);
/* named colors */
- --color-red: #db2828;
- --color-orange: #f2711c;
- --color-yellow: #fbbd08;
- --color-olive: #b5cc18;
- --color-green: #21ba45;
- --color-teal: #00b5ad;
- --color-blue: #2185d0;
- --color-violet: #6435c9;
- --color-purple: #a333c8;
- --color-pink: #e03997;
- --color-brown: #a5673f;
+ --color-red: #e24471cc; /* #cc4848 */
+ --color-orange: #cc580c;
+ --color-yellow: #cc9903;
+ --color-olive: #91a313;
+ --color-green: #50bda4; /* #73c280 */
+ --color-teal: #00918a;
+ --color-blue: #3a8ac6;
+ --color-violet: #906ae1;
+ --color-purple: #b259d0;
+ --color-pink: #d22e8b;
+ --color-brown: #a47252;
--color-black: #1d2328;
- /* light variants - produced via Sass scale-color(color, $lightness: +25%) */
- --color-red-light: #e45e5e;
- --color-orange-light: #f59555;
- --color-yellow-light: #fcce46;
- --color-olive-light: #d3e942;
- --color-green-light: #46de6a;
- --color-teal-light: #08fff4;
- --color-blue-light: #51a5e3;
- --color-violet-light: #8b67d7;
- --color-purple-light: #bb64d8;
- --color-pink-light: #e86bb1;
- --color-brown-light: #c58b66;
- --color-black-light: #4b5b68;
+ /* light variants - produced via Sass scale-color(color, $lightness: +10%) */
+ --color-red-light: #e24471; /* #d15a5a */
+ --color-orange-light: #f6a066;
+ --color-yellow-light: #eaaf03;
+ --color-olive-light: #abc016;
+ --color-green-light: #93b373;
+ --color-teal-light: #00b6ad;
+ --color-blue-light: #4e96cc;
+ --color-violet-light: #9b79e4;
+ --color-purple-light: #ba6ad5;
+ --color-pink-light: #d74397;
+ --color-brown-light: #b08061;
+ --color-black-light: #424851;
/* dark 1 variants - produced via Sass scale-color(color, $lightness: -10%) */
- --color-red-dark-1: #c82121;
- --color-orange-dark-1: #e6630d;
- --color-yellow-dark-1: #e5ac04;
- --color-olive-dark-1: #a3b816;
- --color-green-dark-1: #1ea73e;
- --color-teal-dark-1: #00a39c;
- --color-blue-dark-1: #1e78bb;
- --color-violet-dark-1: #5a30b5;
- --color-purple-dark-1: #932eb4;
- --color-pink-dark-1: #db228a;
- --color-brown-dark-1: #955d39;
- --color-black-dark-1: #2c3339;
+ --color-red-dark-1: #e24471; /* #c23636 */
+ --color-orange-dark-1: #f38236;
+ --color-yellow-dark-1: #b88a03;
+ --color-olive-dark-1: #839311;
+ --color-green-dark-1: #7a9e55;
+ --color-teal-dark-1: #00837c;
+ --color-blue-dark-1: #347cb3;
+ --color-violet-dark-1: #7b4edb;
+ --color-purple-dark-1: #a742c9;
+ --color-pink-dark-1: #be297d;
+ --color-brown-dark-1: #94674a;
+ --color-black-dark-1: #292e38;
/* dark 2 variants - produced via Sass scale-color(color, $lightness: -20%) */
- --color-red-dark-2: #b11e1e;
- --color-orange-dark-2: #cc580c;
- --color-yellow-dark-2: #cc9903;
- --color-olive-dark-2: #91a313;
- --color-green-dark-2: #1a9537;
- --color-teal-dark-2: #00918a;
- --color-blue-dark-2: #1a6aa6;
- --color-violet-dark-2: #502aa1;
- --color-purple-dark-2: #8229a0;
- --color-pink-dark-2: #c21e7b;
- --color-brown-dark-2: #845232;
- --color-black-dark-2: #131619;
+ --color-red-dark-2: #e24471e6; /* #ad3030 */
+ --color-orange-dark-2: #f16e17;
+ --color-yellow-dark-2: #a37a02;
+ --color-olive-dark-2: #74820f;
+ --color-green-dark-2: #6c8c4c;
+ --color-teal-dark-2: #00746e;
+ --color-blue-dark-2: #2e6e9f;
+ --color-violet-dark-2: #6733d6;
+ --color-purple-dark-2: #9834b9;
+ --color-pink-dark-2: #a9246f;
+ --color-brown-dark-2: #835b42;
+ --color-black-dark-2: #272930;
/* ansi colors used for actions console and console files */
--color-ansi-black: #1e2327;
--color-ansi-red: #cc4848;
@@ -134,7 +143,7 @@ gitea-theme-meta-info {
--color-ansi-magenta: #d22e8b;
--color-ansi-cyan: #00918a;
--color-ansi-white: var(--color-console-fg-subtle);
- --color-ansi-bright-black: #46494d;
+ --color-ansi-bright-black: #424851;
--color-ansi-bright-red: #d15a5a;
--color-ansi-bright-green: #93b373;
--color-ansi-bright-yellow: #eaaf03;
@@ -143,35 +152,43 @@ gitea-theme-meta-info {
--color-ansi-bright-cyan: #00b6ad;
--color-ansi-bright-white: var(--color-console-fg);
/* other colors */
- --color-grey: #697077;
- --color-grey-light: #7c838a;
- --color-gold: #a1882b;
+ --color-grey: #384149;
+ --color-grey-light: #818f9e;
+ --color-gold: #b1983b;
--color-white: #ffffff;
- --color-diff-added-linenum-bg: #d1f8d9;
- --color-diff-added-row-bg: #e6ffed;
- --color-diff-added-row-border: #e6ffed;
- --color-diff-added-word-bg: #acf2bd;
- --color-diff-moved-row-bg: #f1f8d1;
- --color-diff-moved-row-border: #d0e27f;
- --color-diff-removed-linenum-bg: #ffcecb;
- --color-diff-removed-row-bg: #ffeef0;
- --color-diff-removed-row-border: #f1c0c0;
- --color-diff-removed-word-bg: #fdb8c0;
- --color-diff-inactive: #f0f2f4;
- --color-error-border: #e0b4b4;
- --color-error-bg: #fff6f6;
- --color-error-bg-active: #fbb;
- --color-error-bg-hover: #fdd;
- --color-error-text: #9f3a38;
- --color-success-border: #a3c293;
- --color-success-bg: #fcfff5;
- --color-success-text: #2c662d;
- --color-warning-border: #c9ba9b;
- --color-warning-bg: #fffaf3;
- --color-warning-text: #573a08;
- --color-info-border: #a9d5de;
- --color-info-bg: #f8ffff;
- --color-info-text: #276f86;
+ --color-diff-added-linenum-bg: #759c91;
+ --color-diff-added-row-bg: #83a79d;
+ --color-diff-added-row-border: #506c64;
+ --color-diff-added-word-bg: #96b5ac;
+ --color-diff-moved-row-bg: #818044;
+ --color-diff-moved-row-border: #bcca6f;
+ --color-diff-removed-linenum-bg: #8e6b78;
+ --color-diff-removed-row-bg: #a4808d;
+ --color-diff-removed-row-border: #634343;
+ --color-diff-removed-word-bg: #b794a0;
+ --color-diff-inactive: #d5d9f3;
+ --color-error-border: var(--color-red);
+ --color-error-bg: #e244711a;
+ --color-error-bg-active: var(--color-red-dark-1);
+ --color-error-bg-hover: var(--color-red-dark-2);
+ --color-error-text: var(--color-red-light);
+ /* --color-error-border: #a04141;
+ --color-error-bg: #522;
+ --color-error-bg-active: #744;
+ --color-error-bg-hover: #633;
+ --color-error-text: #f9cbcb; */
+ --color-success-border: #458a57;
+ --color-success-bg: #284034;
+ --color-success-text: #6cc664;
+ /* --color-success-border: #50bda4;
+ --color-success-bg: #50bda41a;
+ --color-success-text: #50bda4cc; */
+ --color-warning-border: #bb9d00;
+ --color-warning-bg: #3a3a30;
+ --color-warning-text: #fbbd08;
+ --color-info-border: #306090;
+ --color-info-bg: #26354c;
+ --color-info-text: #38a8e8;
--color-red-badge: #db2828;
--color-red-badge-bg: #db28281a;
--color-red-badge-hover-bg: #db28284d;
@@ -187,62 +204,71 @@ gitea-theme-meta-info {
--color-git: #f05133;
--color-logo: #609926;
/* target-based colors */
- --color-body: #ffffff;
- --color-box-header: #f1f3f5;
- --color-box-body: #ffffff;
- --color-box-body-highlight: #ecf5fd;
- --color-text-dark: #01050a;
- --color-text: #181c21;
- --color-text-light: #30363b;
- --color-text-light-1: #40474d;
- --color-text-light-2: #5b6167;
- --color-text-light-3: #747c84;
+ --color-body: #e9edfd;
+ --color-box-header: #d5d9f3;
+ --color-box-body: #e9edfd;
+ --color-box-body-highlight: #abb1d3;
+ --color-text-dark: #25283a;
+ --color-text: #2c3752;
+ --color-text-light: #364363;
+ --color-text-light-1: #7b82a6;
+ --color-text-light-2: #3e4c70;
+ --color-text-light-3: #8d94bb;
--color-footer: var(--color-nav-bg);
- --color-timeline: #d0d7de;
+ --color-timeline: #343c44;
--color-input-text: var(--color-text-dark);
- --color-input-background: #fff;
- --color-input-toggle-background: #d0d7de;
+ --color-input-background: #e9edfd;
+ --color-input-toggle-background: #d5d9f3;
--color-input-border: var(--color-secondary);
--color-input-border-hover: var(--color-secondary-dark-1);
- --color-light: #00001706;
- --color-light-mimic-enabled: rgba(0, 0, 0, calc(6 / 255 * 222 / 255 / var(--opacity-disabled)));
- --color-light-border: #0000171d;
- --color-hover: #00001708;
- --color-hover-opaque: #f1f3f5; /* TODO: color-mix(in srgb, var(--color-body), var(--color-hover)); */
- --color-active: #00001714;
- --color-menu: #f8f9fb;
- --color-card: #f8f9fb;
- --color-markup-table-row: #0030600a;
- --color-markup-code-block: #00306010;
- --color-markup-code-inline: #00306012;
- --color-button: #f8f9fb;
- --color-code-bg: #fafdff;
- --color-shadow: #00001726;
- --color-shadow-opaque: #c7ced5;
- --color-secondary-bg: #f2f5f8;
- --color-expand-button: #cfe8fa;
- --color-placeholder-text: var(--color-text-light-3);
- --color-editor-line-highlight: var(--color-primary-light-6);
- --color-project-column-bg: var(--color-secondary-light-4);
- --color-caret: var(--color-text-dark);
- --color-reaction-bg: #0000170a;
- --color-reaction-hover-bg: var(--color-primary-light-5);
- --color-reaction-active-bg: var(--color-primary-light-6);
- --color-tooltip-text: #fbfdff;
- --color-tooltip-bg: #000017f0;
- --color-nav-bg: #f6f7fa;
- --color-nav-hover-bg: var(--color-secondary-light-1);
+ --color-light: #e2e6f6;
+ --color-hover-table: #d5d9f3;
+ --color-light-mimic-enabled: rgba(
+ 0,
+ 0,
+ 0,
+ calc(40 / 255 * 222 / 255 / var(--opacity-disabled))
+ );
+ --color-light-border: var(--color-primary);
+ --color-hover: #d5d9f3;
+ --color-hover-opaque: #d5d9f3; /* TODO: color-mix(in srgb, var(--color-body), var(--color-hover)); */
+ --color-active: #d5d9f3;
+ --color-menu: #e9edfd;
+ --color-card: #e9edfd;
+ --color-markup-table-row: #e2447180;
+ --color-markup-code-block: #d5d9f3;
+ --color-markup-code-inline: #d5d9f3;
+ --color-milk-text: #abb1d3;
+ --color-button: #abb1d3;
+ --color-code-bg: #d5d9f3;
+ --color-shadow: #6464ff4d;
+ --color-shadow-opaque: #6464ff4d;
+ --color-secondary-bg: #e9edfd;
+ --color-expand-button: #6464ff1a;
+ --color-placeholder-text: var(--color-text-light-1);
+ --color-editor-line-highlight: #d0d4ee;
+ --color-project-column-bg: #6464ff1a;
+ --color-caret: var(
+ --color-text
+ ); /* should ideally be --color-text-dark, see #15651 */
+ --color-reaction-bg: #e9edfd;
+ --color-reaction-hover-bg: var(--color-primary-light-4);
+ --color-reaction-active-bg: var(--color-primary-light-5);
+ --color-tooltip-text: var(--color-primary-alpha-20);
+ --color-tooltip-bg: #e9edfd;
+ --color-nav-bg: #d5d9f3;
+ --color-nav-hover-bg: #d5d9f3;
--color-nav-text: var(--color-text);
- --color-secondary-nav-bg: #f9fafb;
- --color-label-text: var(--color-text);
- --color-label-bg: #949da64b;
- --color-label-hover-bg: #949da6a0;
- --color-label-active-bg: #949da6ff;
+ --color-secondary-nav-bg: #e9edfd;
+ --color-label-text: var(--color-primary-alpha-20);
+ --color-label-bg: #c6d2ff;
+ --color-label-hover-bg: #a3b3ff;
+ --color-label-active-bg: #a3b3ff;
--color-accent: var(--color-primary-light-1);
- --color-small-accent: var(--color-primary-light-6);
- --color-highlight-fg: #eed200;
- --color-highlight-bg: #fffbdd;
- --color-overlay-backdrop: #080808c0;
+ --color-small-accent: var(--color-primary-light-5);
+ --color-highlight-fg: #87651e;
+ --color-highlight-bg: #e9edfd;
+ --color-overlay-backdrop: #e9edfd;
accent-color: var(--color-accent);
color-scheme: light;
}
diff --git a/web_src/js/components/ActivityHeatmap.vue b/web_src/js/components/ActivityHeatmap.vue
index 296cb61cff516..163e50f6d5891 100644
--- a/web_src/js/components/ActivityHeatmap.vue
+++ b/web_src/js/components/ActivityHeatmap.vue
@@ -17,11 +17,11 @@ defineProps<{
const colorRange = [
'var(--color-secondary-alpha-60)',
'var(--color-secondary-alpha-60)',
- 'var(--color-primary-light-4)',
- 'var(--color-primary-light-2)',
- 'var(--color-primary)',
- 'var(--color-primary-dark-2)',
- 'var(--color-primary-dark-4)',
+ 'var(--color-primary-external-legend-5)',
+ 'var(--color-primary-external-legend-4)',
+ 'var(--color-primary-external-legend-3)',
+ 'var(--color-primary-external-legend-2)',
+ 'var(--color-primary-external-legend-1)',
];
const endDate = shallowRef(new Date());