diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-04-30 19:56:28 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-04-30 19:56:28 -0700 |
commit | 75b44066f3ed7cde238cdea1f0bf9e2f1744c820 (patch) | |
tree | 7d70061c1a35564d0e14fffc7b9ba2f87f7d9236 /gitk-git | |
parent | improve error message in config.c (diff) | |
parent | gitk: Add Russian translation (diff) | |
download | tgif-75b44066f3ed7cde238cdea1f0bf9e2f1744c820.tar.xz |
Merge git://git.kernel.org/pub/scm/gitk/gitk
* git://git.kernel.org/pub/scm/gitk/gitk:
gitk: Add Russian translation
gitk: Fix compare-commits function when we have local changes
gitk: Avoid crash if closed while reading references
gitk: Handle external diff tool with spaces in the path
gitk: Remember and restore the window state with the geometry
gitk: Map KP_Divide to focus the search box
gitk: Mark some more strings for translation
gitk: Mark forgotten string for translation
gitk: Make .gitk a hidden file under windows
gitk: Add a command to compare two strings of commits
gitk: Add a way to mark a commit, plus a "find descendant" command
gitk: Fixes for Mac OS X TkAqua
gitk: Provide a 32x32 window icon based on the git logo
gitk: Provide a window icon if possible
gitk: Handle blobs containing a DOS end-of-file marker
Diffstat (limited to 'gitk-git')
-rw-r--r-- | gitk-git/gitk | 321 | ||||
-rw-r--r-- | gitk-git/po/ru.po | 1085 |
2 files changed, 1381 insertions, 25 deletions
diff --git a/gitk-git/gitk b/gitk-git/gitk index 1773ae63eb..1a7887b252 100644 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -521,7 +521,7 @@ proc updatecommits {} { incr viewactive($view) set viewcomplete($view) 0 reset_pending_select {} - nowbusy $view "Reading" + nowbusy $view [mc "Reading"] if {$showneartags} { getallcommits } @@ -1830,7 +1830,9 @@ proc setoptions {} { option add *Button.font uifont startupFile option add *Checkbutton.font uifont startupFile option add *Radiobutton.font uifont startupFile - option add *Menu.font uifont startupFile + if {[tk windowingsystem] ne "aqua"} { + option add *Menu.font uifont startupFile + } option add *Menubutton.font uifont startupFile option add *Label.font uifont startupFile option add *Message.font uifont startupFile @@ -1910,8 +1912,8 @@ proc makewindow {} { # The "mc" arguments here are purely so that xgettext # sees the following string as needing to be translated - makemenu .bar { - {mc "File" cascade { + set file { + mc "File" cascade { {mc "Update" command updatecommits -accelerator F5} {mc "Reload" command reloadcommits -accelerator Meta1-F5} {mc "Reread references" command rereadrefs} @@ -1921,21 +1923,41 @@ proc makewindow {} { {xx "" separator} {mc "Quit" command doquit -accelerator Meta1-Q} }} - {mc "Edit" cascade { + set edit { + mc "Edit" cascade { {mc "Preferences" command doprefs} }} - {mc "View" cascade { + set view { + mc "View" cascade { {mc "New view..." command {newview 0} -accelerator Shift-F4} {mc "Edit view..." command editview -state disabled -accelerator F4} {mc "Delete view" command delview -state disabled} {xx "" separator} {mc "All files" radiobutton {selectedview 0} -command {showview 0}} }} - {mc "Help" cascade { + if {[tk windowingsystem] ne "aqua"} { + set help { + mc "Help" cascade { {mc "About gitk" command about} {mc "Key bindings" command keys} }} + set bar [list $file $edit $view $help] + } else { + proc ::tk::mac::ShowPreferences {} {doprefs} + proc ::tk::mac::Quit {} {doquit} + lset file end [lreplace [lindex $file end] end-1 end] + set apple { + xx "Apple" cascade { + {mc "About gitk" command about} + {xx "" separator} + }} + set help { + mc "Help" cascade { + {mc "Key bindings" command keys} + }} + set bar [list $apple $file $view $help] } + makemenu .bar $bar . configure -menu .bar # the gui has upper and lower half, parts of a paned window. @@ -2229,10 +2251,16 @@ proc makewindow {} { } } + if {[info exists geometry(state)] && $geometry(state) eq "zoomed"} { + wm state . $geometry(state) + } + if {[tk windowingsystem] eq {aqua}} { set M1B M1 + set ::BM "3" } else { set M1B Control + set ::BM "2" } bind .pwbottom <Configure> {resizecdetpanes %W %w} @@ -2250,10 +2278,14 @@ proc makewindow {} { set delta [expr {- (%D)}] allcanvs yview scroll $delta units } + bindall <Shift-MouseWheel> { + set delta [expr {- (%D)}] + $canv xview scroll $delta units + } } } - bindall <2> "canvscan mark %W %x %y" - bindall <B2-Motion> "canvscan dragto %W %x %y" + bindall <$::BM> "canvscan mark %W %x %y" + bindall <B$::BM-Motion> "canvscan dragto %W %x %y" bindkey <Home> selfirstline bindkey <End> sellastline bind . <Key-Up> "selnextline -1" @@ -2285,6 +2317,7 @@ proc makewindow {} { bindkey d "$ctext yview scroll 18 units" bindkey u "$ctext yview scroll -18 units" bindkey / {focus $fstring} + bindkey <Key-KP_Divide> {focus $fstring} bindkey <Key-Return> {dofind 1 1} bindkey ? {dofind -1 1} bindkey f nextfile @@ -2331,6 +2364,10 @@ proc makewindow {} { {mc "Create new branch" command mkbranch} {mc "Cherry-pick this commit" command cherrypick} {mc "Reset HEAD branch to here" command resethead} + {mc "Mark this commit" command markhere} + {mc "Return to mark" command gotomark} + {mc "Find descendant of this and mark" command find_common_desc} + {mc "Compare with marked commit" command compare_commits} } $rowctxmenu configure -tearoff 0 @@ -2487,6 +2524,9 @@ proc savestuff {w} { if {![winfo viewable .]} return catch { set f [open "~/.gitk-new" w] + if {$::tcl_platform(platform) eq {windows}} { + file attributes "~/.gitk-new" -hidden true + } puts $f [list set mainfont $mainfont] puts $f [list set textfont $textfont] puts $f [list set uifont $uifont] @@ -2512,6 +2552,7 @@ proc savestuff {w} { puts $f [list set perfile_attrs $perfile_attrs] puts $f "set geometry(main) [wm geometry .]" + puts $f "set geometry(state) [wm state .]" puts $f "set geometry(topwidth) [winfo width .tf]" puts $f "set geometry(topheight) [winfo height .tf]" puts $f "set geometry(pwsash0) \"[.tf.histframe.pwclist sash coord 0]\"" @@ -3204,9 +3245,8 @@ proc external_diff {} { set difftofile [external_diff_get_one_file $diffidto $flist_menu_file $diffdir] if {$difffromfile ne {} && $difftofile ne {}} { - set cmd [concat | [shellsplit $extdifftool] \ - [list $difffromfile $difftofile]] - if {[catch {set fl [open $cmd r]} err]} { + set cmd [list [shellsplit $extdifftool] $difffromfile $difftofile] + if {[catch {set fl [open |$cmd r]} err]} { file delete -force $diffdir error_popup "$extdifftool: [mc "command failed:"] $err" } else { @@ -3737,7 +3777,7 @@ proc editview {} { set newviewopts($curview,perm) $viewperm($curview) set newviewopts($curview,cmd) $viewargscmd($curview) decode_view_opts $curview $viewargs($curview) - vieweditor $top $curview "Gitk: edit view $viewname($curview)" + vieweditor $top $curview "[mc "Gitk: edit view"] $viewname($curview)" } proc vieweditor {top n title} { @@ -4046,7 +4086,7 @@ proc ishighlighted {id} { } proc bolden {id font} { - global canv linehtag currentid boldids need_redisplay + global canv linehtag currentid boldids need_redisplay markedid # need_redisplay = 1 means the display is stale and about to be redrawn if {$need_redisplay} return @@ -4059,6 +4099,9 @@ proc bolden {id font} { -fill [$canv cget -selectbackground]] $canv lower $t } + if {[info exists markedid] && $id eq $markedid} { + make_idmark $id + } } proc bolden_name {id font} { @@ -5563,7 +5606,7 @@ proc drawcmittext {id row col} { global cmitlisted commitinfo rowidlist parentlist global rowtextx idpos idtags idheads idotherrefs global linehtag linentag linedtag selectedline - global canvxmax boldids boldnameids fgcolor + global canvxmax boldids boldnameids fgcolor markedid global mainheadid nullid nullid2 circleitem circlecolors ctxbut # listed is 0 for boundary, 1 for normal, 2 for negative, 3 for left, 4 for right @@ -5645,6 +5688,9 @@ proc drawcmittext {id row col} { if {$selectedline == $row} { make_secsel $id } + if {[info exists markedid] && $markedid eq $id} { + make_idmark $id + } set xr [expr {$xt + [font measure $font $headline]}] if {$xr > $canvxmax} { set canvxmax $xr @@ -6443,6 +6489,17 @@ proc setlink {id lk} { } } +proc appendshortlink {id {pre {}} {post {}}} { + global ctext linknum + + $ctext insert end $pre + $ctext tag delete link$linknum + $ctext insert end [string range $id 0 7] link$linknum + $ctext insert end $post + setlink $id link$linknum + incr linknum +} + proc makelink {id} { global pendinglinks @@ -6499,7 +6556,7 @@ proc appendrefs {pos ids var} { } } if {[llength $tags] > $maxrefs} { - $ctext insert $pos "many ([llength $tags])" + $ctext insert $pos "[mc "many"] ([llength $tags])" } else { set tags [lsort -index 0 -decreasing $tags] set sep {} @@ -6586,6 +6643,16 @@ proc make_secsel {id} { $canv3 lower $t } +proc make_idmark {id} { + global linehtag canv fgcolor + + if {![info exists linehtag($id)]} return + $canv delete markid + set t [eval $canv create rect [$canv bbox $linehtag($id)] \ + -tags markid -outline $fgcolor] + $canv raise $t +} + proc selectline {l isnew {desired_loc {}}} { global canv ctext commitinfo selectedline global canvy0 linespc parents children curview @@ -7216,7 +7283,7 @@ proc getblobdiffs {ids} { set diffnparents 0 set diffinhdr 0 set diffencoding [get_path_encoding {}] - fconfigure $bdf -blocking 0 -encoding binary + fconfigure $bdf -blocking 0 -encoding binary -eofchar {} set blobdifffd($ids) $bdf filerun $bdf [list getblobdiffline $bdf $diffids] } @@ -7367,7 +7434,8 @@ proc getblobdiffline {bdf ids} { $ctext insert end "$line\n" filesep } else { - set line [encoding convertfrom $diffencoding $line] + set line [string map {\x1A ^Z} \ + [encoding convertfrom $diffencoding $line]] # parse the prefix - one ' ', '-' or '+' for each parent set prefix [string range $line 0 [expr {$diffnparents - 1}]] set tag [expr {$diffnparents > 1? "m": "d"}] @@ -7970,7 +8038,7 @@ proc mstime {} { proc rowmenu {x y id} { global rowctxmenu selectedline rowmenuid curview - global nullid nullid2 fakerowmenu mainhead + global nullid nullid2 fakerowmenu mainhead markedid stopfinding set rowmenuid $id @@ -7986,6 +8054,15 @@ proc rowmenu {x y id} { } else { $menu entryconfigure 7 -label [mc "Detached head: can't reset" $mainhead] -state disabled } + if {[info exists markedid] && $markedid ne $id} { + $menu entryconfigure 9 -state normal + $menu entryconfigure 10 -state normal + $menu entryconfigure 11 -state normal + } else { + $menu entryconfigure 9 -state disabled + $menu entryconfigure 10 -state disabled + $menu entryconfigure 11 -state disabled + } } else { set menu $fakerowmenu } @@ -7995,6 +8072,162 @@ proc rowmenu {x y id} { tk_popup $menu $x $y } +proc markhere {} { + global rowmenuid markedid canv + + set markedid $rowmenuid + make_idmark $markedid +} + +proc gotomark {} { + global markedid + + if {[info exists markedid]} { + selbyid $markedid + } +} + +proc replace_by_kids {l r} { + global curview children + + set id [commitonrow $r] + set l [lreplace $l 0 0] + foreach kid $children($curview,$id) { + lappend l [rowofcommit $kid] + } + return [lsort -integer -decreasing -unique $l] +} + +proc find_common_desc {} { + global markedid rowmenuid curview children + + if {![info exists markedid]} return + if {![commitinview $markedid $curview] || + ![commitinview $rowmenuid $curview]} return + #set t1 [clock clicks -milliseconds] + set l1 [list [rowofcommit $markedid]] + set l2 [list [rowofcommit $rowmenuid]] + while 1 { + set r1 [lindex $l1 0] + set r2 [lindex $l2 0] + if {$r1 eq {} || $r2 eq {}} break + if {$r1 == $r2} { + selectline $r1 1 + break + } + if {$r1 > $r2} { + set l1 [replace_by_kids $l1 $r1] + } else { + set l2 [replace_by_kids $l2 $r2] + } + } + #set t2 [clock clicks -milliseconds] + #puts "took [expr {$t2-$t1}]ms" +} + +proc compare_commits {} { + global markedid rowmenuid curview children + + if {![info exists markedid]} return + if {![commitinview $markedid $curview]} return + addtohistory [list do_cmp_commits $markedid $rowmenuid] + do_cmp_commits $markedid $rowmenuid +} + +proc getpatchid {id} { + global patchids + + if {![info exists patchids($id)]} { + set cmd [diffcmd [list $id] {-p --root}] + # trim off the initial "|" + set cmd [lrange $cmd 1 end] + if {[catch { + set x [eval exec $cmd | git patch-id] + set patchids($id) [lindex $x 0] + }]} { + set patchids($id) "error" + } + } + return $patchids($id) +} + +proc do_cmp_commits {a b} { + global ctext curview parents children patchids commitinfo + + $ctext conf -state normal + clear_ctext + init_flist {} + for {set i 0} {$i < 100} {incr i} { + set skipa 0 + set skipb 0 + if {[llength $parents($curview,$a)] > 1} { + appendshortlink $a [mc "Skipping merge commit "] "\n" + set skipa 1 + } else { + set patcha [getpatchid $a] + } + if {[llength $parents($curview,$b)] > 1} { + appendshortlink $b [mc "Skipping merge commit "] "\n" + set skipb 1 + } else { + set patchb [getpatchid $b] + } + if {!$skipa && !$skipb} { + set heada [lindex $commitinfo($a) 0] + set headb [lindex $commitinfo($b) 0] + if {$patcha eq "error"} { + appendshortlink $a [mc "Error getting patch ID for "] \ + [mc " - stopping\n"] + break + } + if {$patchb eq "error"} { + appendshortlink $b [mc "Error getting patch ID for "] \ + [mc " - stopping\n"] + break + } + if {$patcha eq $patchb} { + if {$heada eq $headb} { + appendshortlink $a [mc "Commit "] + appendshortlink $b " == " " $heada\n" + } else { + appendshortlink $a [mc "Commit "] " $heada\n" + appendshortlink $b [mc " is the same patch as\n "] \ + " $headb\n" + } + set skipa 1 + set skipb 1 + } else { + $ctext insert end "\n" + appendshortlink $a [mc "Commit "] " $heada\n" + appendshortlink $b [mc " differs from\n "] \ + " $headb\n" + $ctext insert end [mc "- stopping\n"] + break + } + } + if {$skipa} { + if {[llength $children($curview,$a)] != 1} { + $ctext insert end "\n" + appendshortlink $a [mc "Commit "] \ + [mc " has %s children - stopping\n" \ + [llength $children($curview,$a)]] + break + } + set a [lindex $children($curview,$a) 0] + } + if {$skipb} { + if {[llength $children($curview,$b)] != 1} { + appendshortlink $b [mc "Commit "] \ + [mc " has %s children - stopping\n" \ + [llength $children($curview,$b)]] + break + } + set b [lindex $children($curview,$b) 0] + } + } + $ctext conf -state disabled +} + proc diffvssel {dirn} { global rowmenuid selectedline @@ -8189,7 +8422,7 @@ proc domktag {} { } proc redrawtags {id} { - global canv linehtag idpos currentid curview cmitlisted + global canv linehtag idpos currentid curview cmitlisted markedid global canvxmax iddrawn circleitem mainheadid circlecolors if {![commitinview $id $curview]} return @@ -8214,6 +8447,9 @@ proc redrawtags {id} { if {[info exists currentid] && $currentid == $id} { make_secsel $id } + if {[info exists markedid] && $markedid eq $id} { + make_idmark $id + } } proc mktagcan {} { @@ -10197,7 +10433,7 @@ proc doprefs {} { proc choose_extdiff {} { global extdifftool - set prog [tk_getOpenFile -title "External diff tool" -multiple false] + set prog [tk_getOpenFile -title [mc "External diff tool"] -multiple false] if {$prog ne {}} { set extdifftool $prog } @@ -10240,6 +10476,7 @@ proc setfg {c} { } allcanvs itemconf text -fill $c $canv itemconf circle -outline $c + $canv itemconf markid -outline $c } proc prefscan {} { @@ -10689,9 +10926,15 @@ catch { } } -set mainfont {Helvetica 9} -set textfont {Courier 9} -set uifont {Helvetica 9 bold} +if {[tk windowingsystem] eq "aqua"} { + set mainfont {{Lucida Grande} 9} + set textfont {Monaco 9} + set uifont {{Lucida Grande} 9 bold} +} else { + set mainfont {Helvetica 9} + set textfont {Courier 9} + set uifont {Helvetica 9 bold} +} set tabstop 8 set findmergefiles 0 set maxgraphpct 50 @@ -10712,7 +10955,11 @@ set datetimeformat "%Y-%m-%d %H:%M:%S" set autoselect 1 set perfile_attrs 0 -set extdifftool "meld" +if {[tk windowingsystem] eq "aqua"} { + set extdifftool "opendiff" +} else { + set extdifftool "meld" +} set colors {green red blue magenta darkgrey brown orange} set bgcolor white @@ -10883,9 +11130,33 @@ set lserial 0 set isworktree [expr {[exec git rev-parse --is-inside-work-tree] == "true"}] setcoords makewindow +catch { + image create photo gitlogo -width 16 -height 16 + + image create photo gitlogominus -width 4 -height 2 + gitlogominus put #C00000 -to 0 0 4 2 + gitlogo copy gitlogominus -to 1 5 + gitlogo copy gitlogominus -to 6 5 + gitlogo copy gitlogominus -to 11 5 + image delete gitlogominus + + image create photo gitlogoplus -width 4 -height 4 + gitlogoplus put #008000 -to 1 0 3 4 + gitlogoplus put #008000 -to 0 1 4 3 + gitlogo copy gitlogoplus -to 1 9 + gitlogo copy gitlogoplus -to 6 9 + gitlogo copy gitlogoplus -to 11 9 + image delete gitlogoplus + + image create photo gitlogo32 -width 32 -height 32 + gitlogo32 copy gitlogo -zoom 2 2 + + wm iconphoto . -default gitlogo gitlogo32 +} # wait for the window to become visible tkwait visibility . wm title . "[file tail $argv0]: [file tail [pwd]]" +update readrefs if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} { diff --git a/gitk-git/po/ru.po b/gitk-git/po/ru.po new file mode 100644 index 0000000000..704eba8f9d --- /dev/null +++ b/gitk-git/po/ru.po @@ -0,0 +1,1085 @@ +# +# Translation of gitk to Russian. +# +msgid "" +msgstr "" +"Project-Id-Version: gitk\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-04-24 16:00+0200\n" +"PO-Revision-Date: 2009-04-24 16:00+0200\n" +"Last-Translator: Alex Riesen <raa.lkml@gmail.com>\n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: gitk:113 +msgid "Couldn't get list of unmerged files:" +msgstr "" +"Невозможно получить список файлов незавершённой операции слияния:" + +#: gitk:268 +msgid "Error parsing revisions:" +msgstr "Ошибка в идентификаторе версии:" + +#: gitk:323 +msgid "Error executing --argscmd command:" +msgstr "Ошибка выполнения команды заданой --argscmd:" + +#: gitk:336 +msgid "No files selected: --merge specified but no files are unmerged." +msgstr "" +"Файлы не выбраны: указан --merge, но не было найдено ни одного файла " +"где эта операция должна быть завершена." + +#: gitk:339 +msgid "" +"No files selected: --merge specified but no unmerged files are within file " +"limit." +msgstr "" +"Файлы не выбраны: указан --merge, но в рамках указаного " +"ограничения на имена файлов нет ни одного " +"где эта операция должна быть завершена." + +#: gitk:361 gitk:508 +msgid "Error executing git log:" +msgstr "Ошибка запуска git log:" + +#: gitk:379 +msgid "Reading" +msgstr "Чтение" + +#: gitk:439 gitk:4021 +msgid "Reading commits..." +msgstr "Чтение версий..." + +#: gitk:442 gitk:1560 gitk:4024 +msgid "No commits selected" +msgstr "Ничего не выбрано" + +#: gitk:1436 +msgid "Can't parse git log output:" +msgstr "Ошибка обработки вывода команды git log:" + +#: gitk:1656 +msgid "No commit information available" +msgstr "Нет информации о состоянии" + +#: gitk:1791 gitk:1815 gitk:3814 gitk:8478 gitk:10014 gitk:10186 +msgid "OK" +msgstr "Ok" + +#: gitk:1817 gitk:3816 gitk:8078 gitk:8152 gitk:8259 gitk:8308 gitk:8480 +#: gitk:10015 gitk:10187 +msgid "Cancel" +msgstr "Отмена" + +#: gitk:1915 +msgid "Update" +msgstr "Обновить" + +#: gitk:1916 +msgid "Reload" +msgstr "Перечитать" + +#: gitk:1917 +msgid "Reread references" +msgstr "Обновить список ссылок" + +#: gitk:1918 +msgid "List references" +msgstr "Список ссылок" + +#: gitk:1920 +msgid "Start git gui" +msgstr "Запустить git gui" + +#: gitk:1922 +msgid "Quit" +msgstr "Завершить" + +#: gitk:1914 +msgid "File" +msgstr "Файл" + +#: gitk:1925 +msgid "Preferences" +msgstr "Настройки" + +#: gitk:1924 +msgid "Edit" +msgstr "Редактировать" + +#: gitk:1928 +msgid "New view..." +msgstr "Новое представление..." + +#: gitk:1929 +msgid "Edit view..." +msgstr "Редактировать представление..." + +#: gitk:1930 +msgid "Delete view" +msgstr "Удалить представление" + +#: gitk:1932 +msgid "All files" +msgstr "Все файлы" + +#: gitk:1927 gitk:3626 +msgid "View" +msgstr "Представление" + +#: gitk:1935 gitk:2609 +msgid "About gitk" +msgstr "О gitk" + +#: gitk:1936 +msgid "Key bindings" +msgstr "Назначения клавиатуры" + +#: gitk:1934 +msgid "Help" +msgstr "Подсказка" + +#: gitk:1994 +msgid "SHA1 ID: " +msgstr "SHA1:" + +#: gitk:2025 +msgid "Row" +msgstr "Строка" + +#: gitk:2056 +msgid "Find" +msgstr "Поиск" + +#: gitk:2057 +msgid "next" +msgstr "След." + +#: gitk:2058 +msgid "prev" +msgstr "Пред." + +#: gitk:2059 +msgid "commit" +msgstr "состояние" + +#: gitk:2062 gitk:2064 gitk:4179 gitk:4202 gitk:4226 gitk:6164 gitk:6236 +#: gitk:6320 +msgid "containing:" +msgstr "содержащее:" + +#: gitk:2065 gitk:3117 gitk:3122 gitk:4254 +msgid "touching paths:" +msgstr "касательно файлов:" + +#: gitk:2066 gitk:4259 +msgid "adding/removing string:" +msgstr "добавив/удалив строку:" + +#: gitk:2075 gitk:2077 +msgid "Exact" +msgstr "Точно" + +#: gitk:2077 gitk:4334 gitk:6132 +msgid "IgnCase" +msgstr "Игнорировать большие/маленькие" + +#: gitk:2077 gitk:4228 gitk:4332 gitk:6128 +msgid "Regexp" +msgstr "Регулярные выражения" + +#: gitk:2079 gitk:2080 gitk:4353 gitk:4383 gitk:4390 gitk:6256 gitk:6324 +msgid "All fields" +msgstr "Во всех полях" + +#: gitk:2080 gitk:4351 gitk:4383 gitk:6195 +msgid "Headline" +msgstr "Заголовок" + +#: gitk:2081 gitk:4351 gitk:6195 gitk:6324 gitk:6737 +msgid "Comments" +msgstr "Комментарии" + +#: gitk:2081 gitk:4351 gitk:4355 gitk:4390 gitk:6195 gitk:6672 gitk:7923 +#: gitk:7938 +msgid "Author" +msgstr "Автор" + +#: gitk:2081 gitk:4351 gitk:6195 gitk:6674 +msgid "Committer" +msgstr "Сохранивший состояние" + +#: gitk:2110 +msgid "Search" +msgstr "Найти" + +#: gitk:2117 +msgid "Diff" +msgstr "Сравнить" + +#: gitk:2119 +msgid "Old version" +msgstr "Старая версия" + +#: gitk:2121 +msgid "New version" +msgstr "Новая версия" + +#: gitk:2123 +msgid "Lines of context" +msgstr "Строк контекста" + +#: gitk:2133 +msgid "Ignore space change" +msgstr "Игнорировать пробелы" + +#: gitk:2191 +msgid "Patch" +msgstr "Патч" + +#: gitk:2193 +msgid "Tree" +msgstr "Файлы" + +#: gitk:2326 gitk:2339 +msgid "Diff this -> selected" +msgstr "Сравнить это состояние с выделеным" + +#: gitk:2327 gitk:2340 +msgid "Diff selected -> this" +msgstr "Сравнить выделеное с этим состоянием" + +#: gitk:2328 gitk:2341 +msgid "Make patch" +msgstr "Создать патч" + +#: gitk:2329 gitk:8136 +msgid "Create tag" +msgstr "Создать метку" + +#: gitk:2330 gitk:8239 +msgid "Write commit to file" +msgstr "Сохранить изменения в файл" + +#: gitk:2331 gitk:8296 +msgid "Create new branch" +msgstr "Создать ветвь" + +#: gitk:2332 +msgid "Cherry-pick this commit" +msgstr "Скопировать это состояние" + +#: gitk:2333 +msgid "Reset HEAD branch to here" +msgstr "Установить HEAD на это состояние" + +#: gitk:2347 +msgid "Check out this branch" +msgstr "Перейти на эту ветвь" + +#: gitk:2348 +msgid "Remove this branch" +msgstr "Удалить эту ветвь" + +#: gitk:2355 +msgid "Highlight this too" +msgstr "Подсветить этот тоже" + +#: gitk:2356 +msgid "Highlight this only" +msgstr "Подсветить только этот" + +#: gitk:2357 +msgid "External diff" +msgstr "Программа сравнения" + +#: gitk:2358 +msgid "Blame parent commit" +msgstr "Аннотировать родительское состояние" + +#: gitk:2365 +msgid "Show origin of this line" +msgstr "Показать источник этой строки" + +#: gitk:2366 +msgid "Run git gui blame on this line" +msgstr "Запустить git gui blame для этой строки" + +#: gitk:2611 +msgid "" +"\n" +"Gitk - a commit viewer for git\n" +"\n" +"Copyright © 2005-2008 Paul Mackerras\n" +"\n" +"Use and redistribute under the terms of the GNU General Public License" +msgstr "" +"\n" +"Gitk - программа просмотра истории репозиториев Git\n" +"\n" +"Copyright (c) 2005-2008 Paul Mackerras\n" +"\n" +"Использование и распространение согласно условиям GNU General Public License" + +#: gitk:2619 gitk:2681 gitk:8661 +msgid "Close" +msgstr "Закрыть" + +#: gitk:2638 +msgid "Gitk key bindings" +msgstr "Назначения клавиатуры в Gitk" + +#: gitk:2641 +msgid "Gitk key bindings:" +msgstr "Назначения клавиатуры в Gitk:" + +#: gitk:2643 +#, tcl-format +msgid "<%s-Q>\t\tQuit" +msgstr "<%s-Q>\t\tЗавершить" + +#: gitk:2644 +msgid "<Home>\t\tMove to first commit" +msgstr "<Home>\t\tПерейти к первому состоянию" + +#: gitk:2645 +msgid "<End>\t\tMove to last commit" +msgstr "<End>\t\tПерейти к последнему состоянию" + +#: gitk:2646 +msgid "<Up>, p, i\tMove up one commit" +msgstr "<Up>, p, i\tПерейти к следующему состоянию" + +#: gitk:2647 +msgid "<Down>, n, k\tMove down one commit" +msgstr "<Down>, n, k\tПерейти к предыдущему состоянию" + +#: gitk:2648 +msgid "<Left>, z, j\tGo back in history list" +msgstr "<Left>, z, j\tПоказать ранее посещённое состояние" + +#: gitk:2649 +msgid "<Right>, x, l\tGo forward in history list" +msgstr "<Right>, x, l\tПоказать следующее посещённое состояние" + +#: gitk:2650 +msgid "<PageUp>\tMove up one page in commit list" +msgstr "<PageUp>\tПерейти на страницу выше в списке состояний" + +#: gitk:2651 +msgid "<PageDown>\tMove down one page in commit list" +msgstr "<PageDown>\tПерейти на страницу ниже в списке состояний" + +#: gitk:2652 +#, tcl-format +msgid "<%s-Home>\tScroll to top of commit list" +msgstr "<%s-Home>\tПоказать начало списка состояний" + +#: gitk:2653 +#, tcl-format +msgid "<%s-End>\tScroll to bottom of commit list" +msgstr "<%s-End>\tПоказать конец списка состояний" + +#: gitk:2654 +#, tcl-format +msgid "<%s-Up>\tScroll commit list up one line" +msgstr "<%s-Up>\tПровернуть список состояний вверх" + +#: gitk:2655 +#, tcl-format +msgid "<%s-Down>\tScroll commit list down one line" +msgstr "<%s-Down>\tПровернуть список состояний вниз" + +#: gitk:2656 +#, tcl-format +msgid "<%s-PageUp>\tScroll commit list up one page" +msgstr "<%s-PageUp>\tПровернуть список состояний на страницу вверх" + +#: gitk:2657 +#, tcl-format +msgid "<%s-PageDown>\tScroll commit list down one page" +msgstr "<%s-PageDown>\tПровернуть список состояний на страницу вниз" + +#: gitk:2658 +msgid "<Shift-Up>\tFind backwards (upwards, later commits)" +msgstr "" +"<Shift-Up>\tПоиск в обратном порядке (вверх, среди новых состояний)" + +#: gitk:2659 +msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)" +msgstr "<Shift-Down>\tПоиск (вниз, среди старых состояний)" + +#: gitk:2660 +msgid "<Delete>, b\tScroll diff view up one page" +msgstr "<Delete>, b\tПрокрутить список изменений на страницу выше" + +#: gitk:2661 +msgid "<Backspace>\tScroll diff view up one page" +msgstr "<Backspace>\tПрокрутить список изменений на страницу выше" + +#: gitk:2662 +msgid "<Space>\t\tScroll diff view down one page" +msgstr "<Leertaste>\t\tПрокрутить список изменений на страницу ниже" + +#: gitk:2663 +msgid "u\t\tScroll diff view up 18 lines" +msgstr "u\t\tПрокрутить список изменений на 18 строк вверх" + +#: gitk:2664 +msgid "d\t\tScroll diff view down 18 lines" +msgstr "d\t\tПрокрутить список изменений на 18 строк вниз" + +#: gitk:2665 +#, tcl-format +msgid "<%s-F>\t\tFind" +msgstr "<%s-F>\t\tПоиск" + +#: gitk:2666 +#, tcl-format +msgid "<%s-G>\t\tMove to next find hit" +msgstr "<%s-G>\t\tПерейти к следующему найденому состоянию" + +#: gitk:2667 +msgid "<Return>\tMove to next find hit" +msgstr "<Return>\tПерейти к следующему найденому состоянию" + +#: gitk:2668 +msgid "/\t\tFocus the search box" +msgstr "/\t\tПерейти к полю поиска" + +#: gitk:2669 +msgid "?\t\tMove to previous find hit" +msgstr "?\t\tПерейти к предыдущему найденому состоянию" + +#: gitk:2670 +msgid "f\t\tScroll diff view to next file" +msgstr "f\t\tПрокрутить список изменений к следующему файлу" + +#: gitk:2671 +#, tcl-format +msgid "<%s-S>\t\tSearch for next hit in diff view" +msgstr "<%s-S>\t\tПродолжить поиск в списке изменений" + +#: gitk:2672 +#, tcl-format +msgid "<%s-R>\t\tSearch for previous hit in diff view" +msgstr "<%s-R>\t\tПерейти к предыдущему найденому тексту в списке изменений" + +#: gitk:2673 +#, tcl-format +msgid "<%s-KP+>\tIncrease font size" +msgstr "<%s-KP+>\tУвеличить размер шрифта" + +#: gitk:2674 +#, tcl-format +msgid "<%s-plus>\tIncrease font size" +msgstr "<%s-plus>\tУвеличить размер шрифта" + +#: gitk:2675 +#, tcl-format +msgid "<%s-KP->\tDecrease font size" +msgstr "<%s-KP->\tУменьшить размер шрифта" + +#: gitk:2676 +#, tcl-format +msgid "<%s-minus>\tDecrease font size" +msgstr "<%s-minus>\tУменьшить размер шрифта" + +#: gitk:2677 +msgid "<F5>\t\tUpdate" +msgstr "<F5>\t\tОбновить" + +#: gitk:3132 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Ошибка получения \"%s\" из %s:" + +#: gitk:3189 gitk:3198 +#, tcl-format +msgid "Error creating temporary directory %s:" +msgstr "Ошибка создания временного каталога %s:" + +#: gitk:3211 +msgid "command failed:" +msgstr "ошибка выполнения команды:" + +#: gitk:3357 +msgid "No such commit" +msgstr "Состояние не найдено" + +#: gitk:3371 +msgid "git gui blame: command failed:" +msgstr "git gui blame: ошибка выполнения команды:" + +#: gitk:3402 +#, tcl-format +msgid "Couldn't read merge head: %s" +msgstr "Ошибка чтения MERGE_HEAD: %s" + +#: gitk:3410 +#, tcl-format +msgid "Error reading index: %s" +msgstr "Ошибка чтения индекса: %s" + +#: gitk:3435 +#, tcl-format +msgid "Couldn't start git blame: %s" +msgstr "Ошибка запуска git blame: %s" + +#: gitk:3438 gitk:6163 +msgid "Searching" +msgstr "Поиск" + +#: gitk:3470 +#, tcl-format +msgid "Error running git blame: %s" +msgstr "Ошибка выполнения git blame: %s" + +#: gitk:3498 +#, tcl-format +msgid "That line comes from commit %s, which is not in this view" +msgstr "" +"Эта строка принадлежит состоянию %s, которое не показано в этом " +"представлении" + +#: gitk:3512 +msgid "External diff viewer failed:" +msgstr "Ошибка выполнения программы сравнения:" + +#: gitk:3630 +msgid "Gitk view definition" +msgstr "Gitk определение представлений" + +#: gitk:3634 +msgid "Remember this view" +msgstr "Запомнить представление" + +#: gitk:3635 +msgid "Commits to include (arguments to git log):" +msgstr "Включить состояния (аргументы для git-log):" + +#: gitk:3636 +msgid "Use all refs" +msgstr "Использовать все ветви" + +#: gitk:3637 +msgid "Strictly sort by date" +msgstr "Строгая сортировка по дате" + +#: gitk:3638 +msgid "Mark branch sides" +msgstr "Отметить стороны ветвей" + +#: gitk:3639 +msgid "Since date:" +msgstr "С даты:" + +#: gitk:3640 +msgid "Until date:" +msgstr "По дату:" + +#: gitk:3641 +msgid "Max count:" +msgstr "Макс. количество:" + +#: gitk:3642 +msgid "Skip:" +msgstr "Пропустить:" + +#: gitk:3643 +msgid "Limit to first parent" +msgstr "Ограничить первым предком" + +#: gitk:3644 +msgid "Command to generate more commits to include:" +msgstr "Дополнительная команда для списка состояний:" + +#: gitk:3753 +msgid "Name" +msgstr "Имя" + +#: gitk:3801 +msgid "Enter files and directories to include, one per line:" +msgstr "Файлы и каталоги для ограничения истории, по одному на строку:" + +#: gitk:3815 +msgid "Apply (F5)" +msgstr "Применить (F5)" + +#: gitk:3853 +msgid "Error in commit selection arguments:" +msgstr "Ошибка в параметрах выбора состояний:" + +#: gitk:3906 gitk:3958 gitk:4403 gitk:4417 gitk:5675 gitk:10867 gitk:10868 +msgid "None" +msgstr "Ни одного" + +#: gitk:4351 gitk:6195 gitk:7925 gitk:7940 +msgid "Date" +msgstr "Дата" + +#: gitk:4351 gitk:6195 +msgid "CDate" +msgstr "Дата ввода" + +#: gitk:4500 gitk:4505 +msgid "Descendant" +msgstr "Порождённое" + +#: gitk:4501 +msgid "Not descendant" +msgstr "Не порождённое" + +#: gitk:4508 gitk:4513 +msgid "Ancestor" +msgstr "Предок" + +#: gitk:4509 +msgid "Not ancestor" +msgstr "Не предок" + +#: gitk:4799 +msgid "Local changes checked in to index but not committed" +msgstr "Изменения зарегистрированные в индексе, но не сохранённые" + +#: gitk:4835 +msgid "Local uncommitted changes, not checked in to index" +msgstr "Изменения в рабочем каталоге, не зарегистрированные в индексе" + +#: gitk:6676 +msgid "Tags:" +msgstr "Таги:" + +#: gitk:6693 gitk:6699 gitk:7918 +msgid "Parent" +msgstr "Предок" + +#: gitk:6704 +msgid "Child" +msgstr "Потомок" + +#: gitk:6713 +msgid "Branch" +msgstr "Ветвь" + +#: gitk:6716 +msgid "Follows" +msgstr "Следует за" + +#: gitk:6719 +msgid "Precedes" +msgstr "Предшествует" + +#: gitk:7212 +#, tcl-format +msgid "Error getting diffs: %s" +msgstr "Ошибка получения изменений: %s" + +#: gitk:7751 +msgid "Goto:" +msgstr "Перейти к:" + +#: gitk:7753 +msgid "SHA1 ID:" +msgstr "SHA1 ID:" + +#: gitk:7772 +#, tcl-format +msgid "Short SHA1 id %s is ambiguous" +msgstr "Сокращённый SHA1 идентификатор %s неоднозначен" + +#: gitk:7784 +#, tcl-format +msgid "SHA1 id %s is not known" +msgstr "SHA1 идентификатор %s не найден" + +#: gitk:7786 +#, tcl-format +msgid "Tag/Head %s is not known" +msgstr "Метка или ветвь %s не найдена" + +#: gitk:7928 +msgid "Children" +msgstr "Потомки" + +#: gitk:7985 +#, tcl-format +msgid "Reset %s branch to here" +msgstr "Установить ветвь %s на это состояние" + +#: gitk:7987 +msgid "Detached head: can't reset" +msgstr "Состояние не принадлежит ни одной ветви, переход невозможен" + +#: gitk:8019 +msgid "Top" +msgstr "Верх" + +#: gitk:8020 +msgid "From" +msgstr "От" + +#: gitk:8025 +msgid "To" +msgstr "До" + +#: gitk:8049 +msgid "Generate patch" +msgstr "Создать патч" + +#: gitk:8051 +msgid "From:" +msgstr "От:" + +#: gitk:8060 +msgid "To:" +msgstr "До:" + +#: gitk:8069 +msgid "Reverse" +msgstr "В обратном порядке" + +#: gitk:8071 gitk:8253 +msgid "Output file:" +msgstr "Файл для сохранения:" + +#: gitk:8077 +msgid "Generate" +msgstr "Создать" + +#: gitk:8115 +msgid "Error creating patch:" +msgstr "Ошибка создания патча:" + +#: gitk:8138 gitk:8241 gitk:8298 +msgid "ID:" +msgstr "ID:" + +#: gitk:8147 +msgid "Tag name:" +msgstr "Имя метки:" + +#: gitk:8151 gitk:8307 +msgid "Create" +msgstr "Создать" + +#: gitk:8168 +msgid "No tag name specified" +msgstr "Не задано имя метки" + +#: gitk:8172 +#, tcl-format +msgid "Tag \"%s\" already exists" +msgstr "Метка \"%s\" уже существует" + +#: gitk:8178 +msgid "Error creating tag:" +msgstr "Ошибка создания метки:" + +#: gitk:8250 +msgid "Command:" +msgstr "Команда:" + +#: gitk:8258 +msgid "Write" +msgstr "Запись" + +#: gitk:8276 +msgid "Error writing commit:" +msgstr "Ошибка сохранения состояния:" + +#: gitk:8303 +msgid "Name:" +msgstr "Имя:" + +#: gitk:8326 +msgid "Please specify a name for the new branch" +msgstr "Укажите имя для новой ветви" + +#: gitk:8331 +#, tcl-format +msgid "Branch '%s' already exists. Overwrite?" +msgstr "Ветвь '%s' уже существует. Переписать?" + +#: gitk:8397 +#, tcl-format +msgid "Commit %s is already included in branch %s -- really re-apply it?" +msgstr "" +"Состояние %s уже принадлежит ветви %s. Продолжить операцию?" + +#: gitk:8402 +msgid "Cherry-picking" +msgstr "Копирование изменений" + +#: gitk:8411 +#, tcl-format +msgid "" +"Cherry-pick failed because of local changes to file '%s'.\n" +"Please commit, reset or stash your changes and try again." +msgstr "" +"Копирование невозможно из-за изменений в файле '%s'.\n" +"Сохраните или отмените изменения и повторите операцию." + +#: gitk:8417 +msgid "" +"Cherry-pick failed because of merge conflict.\n" +"Do you wish to run git citool to resolve it?" +msgstr "" +"Копирование изменений невозможно из-за незавершённой операции " +"слияния.\nЗапустить git citool для завершения этой операции?" + +#: gitk:8433 +msgid "No changes committed" +msgstr "Изменения не сохранены" + +#: gitk:8459 +msgid "Confirm reset" +msgstr "Подтвердите операцию перехода" + +#: gitk:8461 +#, tcl-format +msgid "Reset branch %s to %s?" +msgstr "Установить ветвь %s на состояние %s?" + +#: gitk:8465 +msgid "Reset type:" +msgstr "Тип операции перехода:" + +#: gitk:8469 +msgid "Soft: Leave working tree and index untouched" +msgstr "Лёгкий: оставить рабочий каталог и индекс неизменными" + +#: gitk:8472 +msgid "Mixed: Leave working tree untouched, reset index" +msgstr "" +"Смешаный: оставить рабочий каталог неизменным, установить индекс" + +#: gitk:8475 +msgid "" +"Hard: Reset working tree and index\n" +"(discard ALL local changes)" +msgstr "" +"Жесткий: переписать индекс и рабочий каталог\n" +"(все изменения в рабочем каталоги будут потеряны)" + +#: gitk:8492 +msgid "Resetting" +msgstr "Установка" + +#: gitk:8549 +msgid "Checking out" +msgstr "Переход" + +#: gitk:8602 +msgid "Cannot delete the currently checked-out branch" +msgstr "Активная ветвь не может быть удалена" + +#: gitk:8608 +#, tcl-format +msgid "" +"The commits on branch %s aren't on any other branch.\n" +"Really delete branch %s?" +msgstr "" +"Состояния ветви %s больше не принадлежат никакой другой ветви.\n" +"Действительно удалить ветвь %s?" + +#: gitk:8639 +#, tcl-format +msgid "Tags and heads: %s" +msgstr "Метки и ветви: %s" + +#: gitk:8654 +msgid "Filter" +msgstr "Фильтровать" + +#: gitk:8949 +msgid "" +"Error reading commit topology information; branch and preceding/following " +"tag information will be incomplete." +msgstr "" +"Ошибка чтения истории проекта; информация о ветвях и состояниях " +"вокруг меток (до/после) может быть неполной." + +#: gitk:9935 +msgid "Tag" +msgstr "Метка" + +#: gitk:9935 +msgid "Id" +msgstr "Id" + +#: gitk:9983 +msgid "Gitk font chooser" +msgstr "Шрифт Gitk" + +#: gitk:10000 +msgid "B" +msgstr "Ж" + +#: gitk:10003 +msgid "I" +msgstr "К" + +#: gitk:10098 +msgid "Gitk preferences" +msgstr "Настройки Gitk" + +#: gitk:10100 +msgid "Commit list display options" +msgstr "Параметры показа списка состояний" + +#: gitk:10103 +msgid "Maximum graph width (lines)" +msgstr "Макс. ширина графа (строк)" + +#: gitk:10107 +#, tcl-format +msgid "Maximum graph width (% of pane)" +msgstr "Макс. ширина графа (% ширины панели)" + +#: gitk:10111 +msgid "Show local changes" +msgstr "Показывать изменения в рабочем каталоге" + +#: gitk:10114 +msgid "Auto-select SHA1" +msgstr "Выделить SHA1" + +#: gitk:10118 +msgid "Diff display options" +msgstr "Параметры показа изменений" + +#: gitk:10120 +msgid "Tab spacing" +msgstr "Ширина табуляции" + +#: gitk:10123 +msgid "Display nearby tags" +msgstr "Показывать близкие метки" + +#: gitk:10126 +msgid "Limit diffs to listed paths" +msgstr "Ограничить показ изменений выбраными файлами" + +#: gitk:10129 +msgid "Support per-file encodings" +msgstr "Поддержка кодировок в отдельных файлах" + +#: gitk:10135 +msgid "External diff tool" +msgstr "Программа для показа изменений" + +#: gitk:10137 +msgid "Choose..." +msgstr "Выберите..." + +#: gitk:10142 +msgid "Colors: press to choose" +msgstr "Цвета: нажмите для выбора" + +#: gitk:10145 +msgid "Background" +msgstr "Фон" + +#: gitk:10146 gitk:10176 +msgid "background" +msgstr "фон" + +#: gitk:10149 +msgid "Foreground" +msgstr "Передний план" + +#: gitk:10150 +msgid "foreground" +msgstr "передний план" + +#: gitk:10153 +msgid "Diff: old lines" +msgstr "Изменения: старый текст" + +#: gitk:10154 +msgid "diff old lines" +msgstr "старый текст изменения" + +#: gitk:10158 +msgid "Diff: new lines" +msgstr "Изменения: новый текст" + +#: gitk:10159 +msgid "diff new lines" +msgstr "новый текст изменения" + +#: gitk:10163 +msgid "Diff: hunk header" +msgstr "Изменения: заголовок блока" + +#: gitk:10165 +msgid "diff hunk header" +msgstr "заголовок блока изменений" + +#: gitk:10169 +msgid "Marked line bg" +msgstr "Фон выбраной строки" + +#: gitk:10171 +msgid "marked line background" +msgstr "фон выбраной строки" + +#: gitk:10175 +msgid "Select bg" +msgstr "Выберите фон" + +#: gitk:10179 +msgid "Fonts: press to choose" +msgstr "Шрифт: нажмите для выбора" + +#: gitk:10181 +msgid "Main font" +msgstr "Основной шрифт" + +#: gitk:10182 +msgid "Diff display font" +msgstr "Шрифт показа изменений" + +#: gitk:10183 +msgid "User interface font" +msgstr "Шрифт интерфейса" + +#: gitk:10210 +#, tcl-format +msgid "Gitk: choose color for %s" +msgstr "Gitk: выберите цвет для %s" + +#: gitk:10656 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"К сожалению gitk не может работать с этой версий Tcl/Tk.\n" +"Требуется как минимум Tcl/Tk 8.4." + +#: gitk:10773 +msgid "Cannot find a git repository here." +msgstr "Git-репозитарий не найден в текущем каталоге." + +#: gitk:10777 +#, tcl-format +msgid "Cannot find the git directory \"%s\"." +msgstr "Git-репозитарий \"%s\" не найден." + +#: gitk:10824 +#, tcl-format +msgid "Ambiguous argument '%s': both revision and filename" +msgstr "Неоднозначный аргумент '%s': существует как версия и имя файла" + +#: gitk:10836 +msgid "Bad arguments to gitk:" +msgstr "Неправильные аргументы для gitk:" + +#: gitk:10896 +msgid "Command line" +msgstr "Командная строка" + |