New Russo Translation
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci/woodpecker/pr/woodpecker Pipeline was successful Details

This commit is contained in:
MichaelYick 2024-04-03 02:37:52 -05:00
parent d4c32e117c
commit c12a1c7cbf
84 changed files with 9389 additions and 9464 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 B

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,305 +1,311 @@
# Don't remove init offset as that breaks translations for some reason
init 999 python:
#don't do a halo infinite moment
#hard code the header & footer
#then iterate the list_credits
list_og_credits = {
_('Coded By:'): [
'/dev/non',
"[[Untitled] Anon",
'Schizodev Anon',
'Starmanon',
'Nutbuster Anon',
'Inhumanon',
'Spigot the Bear Anon'
],
_('Written by:'): [
'AVGN Anon',
'Coomer Anon',
'/trash/ Anon',
'FreemAnon',
'Ccp Anon',
'Kokichi Anon',
'Alex Anon',
'Punished Anon',
'Finn Anon'
],
_('Story by:'): [
'AVGN Anon',
'Coomer Anon',
'Alex Anon',
'Singularity Anon',
'Tombstone Anon'
],
_('Production Designer'): [
'Alex Anon'
],
_('Artwork by:'): [
'Alex Anon',
'Mormon Anon',
'Ccp Anon',
'Aome Anon',
'/trash/ Anon',
'Skeleton Anon',
'eyeh Xinnix Anon',
'Brit Anon',
'Dark-N-Wolf Anon',
'Hotel Anon',
'Multi Anon',
'Ionanon'
],
_('Additional Artwork by:'): [
_('Backup Anon 1'),
_('Backup Anon 2'),
_('Backup Anon 3'),
_('Backup Anon 4'),
_('Backup Anon 5'),
_('Backup Anon 6'),
],
_("\"Love theme\" by:"): [
_('Only Person In The Team With A\nPortfolio/Experience Anon'),
],
_('Music By'): [
'Shampoo Anon',
'Melo Anon'
],
_('Egg Hunt Contest\nWinner:'): [
'Olivia Anon'
],
_('Character Design\nContest Winner:'): [
'Mono Anon',
],
_('Special Thanks:'): [
'Commission Anon',
]
}
# The difference between adding in the special thanks and not I have found is about 480px, just to note down.
# group translators by language, not by role
list_translator_credits = {
_('Translators (Spanish):'): [
'Queso2033 Anon',
'TheShadowTrAnon'
],
_('Proofreaders (Spanish):'): [
'ElBan Anón',
'GMAnon'
],
_('Asset help (Spanish):'): [
'Arkiangelo Anon'
],
_('Translators (Russian):'): [
'2ch.hk_fur Anon',
'rutracker Anon'
],
_('Proofreaders (Russian):'): [
'rutracker Anon'
],
_('Asset help (Russian):'): [
'rutracker Anon'
]
}
textlist = []
alignargs = {'xalign': 0.5, 'yalign': 0.5, 'text_align': 0.5}
#sizes in px
SIZE_SNOT_GAMES = 68*3+10
SIZE_TITLE = 32*3+10
SIZE_ENTRY = 22*3+10
SIZE_TL = 22*2+10
SIZE_ENDER = 52*3+10
#there is line_spacing but don't usei t
textlist.append(Text(_("Snoot Game"), size=SIZE_SNOT_GAMES, **alignargs))
textlist.append(Null(1, 16*1))
textlist.append(Text(_("By CaveManon"), size=SIZE_TITLE, **alignargs))
textlist.append(Null(1, 16*18))
textlist.append(Text(_("developed in Ren'py"), size=SIZE_ENTRY, **alignargs))
textlist.append(Null(1, 16*12))
for key, arr in list_og_credits.items():
textlist.append(Text(key, size=SIZE_TITLE, **alignargs))
textlist.append(Null(1, 16*6))
concatstr = ""
for item in arr:
concatstr += __(item) + '\n'
textlist.append(Text(concatstr, size=SIZE_ENTRY, **alignargs))
textlist.append(Null(1, 16*2))
#smaller font and gridonate for translators
TL_WIDTH = 2
TL_HEIGHT = (len(list_translator_credits)+1)//2
tgrid = []
for key, arr in list_translator_credits.items():
vb = []
vb.append(Text(key, size=SIZE_ENTRY, **alignargs))
vb.append(Null(1, 16*6))
concatstr = ""
for item in arr:
concatstr += item + '\n'
vb.append(Text(concatstr, size=SIZE_TL, **alignargs))
vb.append(Null(1, 16*2))
vb = VBox(*vb)
tgrid.append(vb)
for x in range(len(tgrid), TL_WIDTH*TL_HEIGHT):
tgrid.append(Null())
pass
tgrid = Grid(TL_WIDTH, TL_HEIGHT, *tgrid)
textlist.append(tgrid)
textlist.append(Null(1, 16*12)) #check
textlist.append(Text(_("T H E E N D"), size=SIZE_ENDER, **alignargs))
textlist.append(Null(1, 16*4))
textlist.append(Text(_("Snoot game started development\n on June 19, 2020"), size=SIZE_ENTRY, **alignargs))
credits_hbox = Fixed(VBox(*textlist, xalign=0.5), xalign=0.5)
renpy.image('credits_hbox', credits_hbox)
#
label test_credits:
scene black
stop ambient
#play music '<loop 12.809525>audio/abloop.wav'
"test"
window auto hide
pause 0.5
show c_credits_text:
crop (0, 0, 1920, 670)
pause 1.1
show c_credits_text:
crop None
pause 2.75
show credits_base at Pan((0, -1080),(0, 8100), 65) behind c_credits_text:
subpixel True
show c_credits_text at Pan((0, 0),(0, 12155), 65):
crop None
subpixel True
#pause 50
#queue music "audio/abend.wav" noloop
pause
scene black with Dissolve(3)
# Credits definitions moved here so everything that needs to be changed is is one place.
# Anytime the credits changes to include more translators, you're just going to have to guess what the correct
# value to offset everything is again. Mainly concerning values that control the panning destination of credits text,
# and the height of the credits text itself
# My recommendation is to imagine a square on top of the "T" in "THE END"
# The square is as long as one of those characters, and the top of the square should touch the top of the screen
# when the credits stop scrolling
# Someone please come up with an exact formula pls
#too much lore above; make it look good within reason
# Remember, ending sketch is always +550 of when the Pan stops
image credits_coverup:
"black"
crop (0, 0, 1920, 1080)
image b_credits_text = Composite(
(1920, 13235),
(0, 390), "credits_hbox",
(0, 12705), "b_sketch"
)
image c_credits_text = Composite(
(1920, 13235),
(0, 390), "credits_hbox",
(0, 12705), "c_sketch"
)
image d_credits_text = Composite(
(1920, 13235),
(0, 390), "credits_hbox",
(0, 12705), "d_sketch"
)
label lending:
call get_ending from _call_get_ending_4
if _return == 4:
pause 0.5
show snootgame_big with dissolve: # Renpy not allowing you to grab images from the gui folder is serious bullshit
subpixel True
xalign 0.5
yalign 0.5
linear 6 zoom 1.2
pause 1.75
show d_credits_text with dissolve:
subpixel True
crop (0, 670, 1920, 1080)
ypos 670
xalign 0.5
linear 3 zoom 1.1
pause 2
hide d_credits_text
hide snootgame_big
with dissolve
show credits_base at Pan((0, -1080),(0, 8100), 65):
subpixel True
show d_credits_text at Pan((0, 0),(0, 12155), 65):
subpixel True
show credits_coverup at Pan((0, 0),(0, 12155), 65):
subpixel True
pause 50
queue music 'audio/OST/amberlight brillance live end.ogg'
queue music "<silence 1.0>" loop
elif _return == 3:
play music "audio/OST/Dino Destiny Reader.ogg"
pause 0.5
show c_credits_text:
crop (0, 0, 1920, 670)
pause 1.1
show c_credits_text:
crop None
pause 2.75
show credits_base at Pan((0, -1080),(0, 8100), 65) behind c_credits_text:
subpixel True
show c_credits_text at Pan((0, 0),(0, 12155), 65):
crop None
subpixel True
else:
play music "audio/OST/Dino Destiny Reader.ogg"
pause 0.5
show b_credits_text:
crop (0, 0, 1920, 670)
pause 1.1
show b_credits_text:
crop None
pause 2.75
show credits_base at Pan((0, -1080),(0, 8100), 65) behind b_credits_text:
subpixel True
show b_credits_text at Pan((0, 0),(0, 12155), 65):
crop None
subpixel True
pause
stop music fadeout 5
scene black with Dissolve(3)
pause 2
if tradwife:
scene c10 with Dissolve(1.5)
pause 20
scene black with Dissolve(2)
pause 1
elif anonscore >= 4 and fangscore >= 4:
scene golden ending with Dissolve(1.5)
pause 20
scene black with Dissolve(2)
pause 1
return
# Don't remove init offset as that breaks translations for some reason
init 999 python:
#don't do a halo infinite moment
#hard code the header & footer
#then iterate the list_credits
list_og_credits = {
_('Coded By:'): [
'/dev/non',
"[[Untitled] Anon",
'Schizodev Anon',
'Starmanon',
'Nutbuster Anon',
'Inhumanon',
'Spigot the Bear Anon'
],
_('Written by:'): [
'AVGN Anon',
'Coomer Anon',
'/trash/ Anon',
'FreemAnon',
'Ccp Anon',
'Kokichi Anon',
'Alex Anon',
'Punished Anon',
'Finn Anon'
],
_('Story by:'): [
'AVGN Anon',
'Coomer Anon',
'Alex Anon',
'Singularity Anon',
'Tombstone Anon'
],
_('Production Designer'): [
'Alex Anon'
],
_('Artwork by:'): [
'Alex Anon',
'Mormon Anon',
'Ccp Anon',
'Aome Anon',
'/trash/ Anon',
'Skeleton Anon',
'eyeh Xinnix Anon',
'Brit Anon',
'Dark-N-Wolf Anon',
'Hotel Anon',
'Multi Anon',
'Ionanon'
],
_('Additional Artwork by:'): [
_('Backup Anon 1'),
_('Backup Anon 2'),
_('Backup Anon 3'),
_('Backup Anon 4'),
_('Backup Anon 5'),
_('Backup Anon 6'),
],
_("\"Love theme\" by:"): [
_('Only Person In The Team With A\nPortfolio/Experience Anon'),
],
_('Music By'): [
'Shampoo Anon',
'Melo Anon'
],
_('Egg Hunt Contest\nWinner:'): [
'Olivia Anon'
],
_('Character Design\nContest Winner:'): [
'Mono Anon',
],
_('Special Thanks:'): [
'Commission Anon',
]
}
# The difference between adding in the special thanks and not I have found is about 480px, just to note down.
list_translator_credits = {
_('Translators (Spanish):'): [
'Queso2033 Anon',
'TheShadowTrAnon'
],
_('Translators (Russian):'): [
'Gexahord',
'strelook21',
'YtkaGen',
'DatFeelFrog',
'CMDR Andrea Dornan'
],
_('Proofreaders (Spanish):'): [
'ElBan Anón',
'GMAnon'
],
_('Proofreaders (Russian):'): [
'Gexahord',
'strelook21',
'YtkaGen',
'DatFeelFrog'
],
_('Asset help (Spanish):'): [
'Arkiangelo Anon'
],
_('Asset help (Russian):'): [
'Gexahord',
'YtkaGen',
'2ch Anon'
]
}
textlist = []
alignargs = {'xalign': 0.5, 'yalign': 0.5, 'text_align': 0.5}
#sizes in px
SIZE_SNOT_GAMES = 68*3+10
SIZE_TITLE = 32*3+10
SIZE_ENTRY = 22*3+10
SIZE_TL = 22*2+10
SIZE_ENDER = 52*3+10
#there is line_spacing but don't usei t
textlist.append(Text(_("Snoot Game"), size=SIZE_SNOT_GAMES, **alignargs))
textlist.append(Null(1, 16*1))
textlist.append(Text(_("By CaveManon"), size=SIZE_TITLE, **alignargs))
textlist.append(Null(1, 16*18))
textlist.append(Text(_("developed in Ren'py"), size=SIZE_ENTRY, **alignargs))
textlist.append(Null(1, 16*12))
for key, arr in list_og_credits.items():
textlist.append(Text(key, size=SIZE_TITLE, **alignargs))
textlist.append(Null(1, 16*6))
concatstr = ""
for item in arr:
concatstr += __(item) + '\n'
textlist.append(Text(concatstr, size=SIZE_ENTRY, **alignargs))
textlist.append(Null(1, 16*2))
#smaller font and gridonate for translators
TL_WIDTH = 2
TL_HEIGHT = (len(list_translator_credits)+1)//2
tgrid = []
for key, arr in list_translator_credits.items():
vb = []
vb.append(Text(key, size=SIZE_ENTRY, **alignargs))
vb.append(Null(1, 16*6))
concatstr = ""
for item in arr:
concatstr += item + '\n'
vb.append(Text(concatstr, size=SIZE_TL, **alignargs))
vb.append(Null(1, 16*2))
vb = VBox(*vb)
tgrid.append(vb)
for x in range(len(tgrid), TL_WIDTH*TL_HEIGHT):
tgrid.append(Null())
pass
tgrid = Grid(TL_WIDTH, TL_HEIGHT, *tgrid)
textlist.append(tgrid)
textlist.append(Null(1, 16*12)) #check
textlist.append(Text(_("T H E E N D"), size=SIZE_ENDER, **alignargs))
textlist.append(Null(1, 16*4))
textlist.append(Text(_("Snoot game started development\n on June 19, 2020"), size=SIZE_ENTRY, **alignargs))
credits_hbox = Fixed(VBox(*textlist, xalign=0.5), xalign=0.5)
renpy.image('credits_hbox', credits_hbox)
#
label test_credits:
scene black
stop ambient
#play music '<loop 12.809525>audio/abloop.wav'
"test"
window auto hide
pause 0.5
show c_credits_text:
crop (0, 0, 1920, 670)
pause 1.1
show c_credits_text:
crop None
pause 2.75
show credits_base at Pan((0, -1080),(0, 8100), 65) behind c_credits_text:
subpixel True
show c_credits_text at Pan((0, 0),(0, 12155), 65):
crop None
subpixel True
#pause 50
#queue music "audio/abend.wav" noloop
pause
scene black with Dissolve(3)
# Credits definitions moved here so everything that needs to be changed is is one place.
# Anytime the credits changes to include more translators, you're just going to have to guess what the correct
# value to offset everything is again. Mainly concerning values that control the panning destination of credits text,
# and the height of the credits text itself
# My recommendation is to imagine a square on top of the "T" in "THE END"
# The square is as long as one of those characters, and the top of the square should touch the top of the screen
# when the credits stop scrolling
# Someone please come up with an exact formula pls
# Remember, ending sketch is always +550 of when the Pan stops
image credits_coverup:
"black"
crop (0, 0, 1920, 1080)
image b_credits_text = Composite(
(1920, 13235),
(0, 390), "credits_hbox",
(0, 12705), "b_sketch"
)
image c_credits_text = Composite(
(1920, 13235),
(0, 390), "credits_hbox",
(0, 12705), "c_sketch"
)
image d_credits_text = Composite(
(1920, 13235),
(0, 390), "credits_hbox",
(0, 12705), "d_sketch"
)
label lending:
call get_ending from _call_get_ending_4
if _return == 4:
pause 0.5
show snootgame_big with dissolve: # Renpy not allowing you to grab images from the gui folder is serious bullshit
subpixel True
xalign 0.5
yalign 0.5
linear 6 zoom 1.2
pause 1.75
show d_credits_text with dissolve:
subpixel True
crop (0, 670, 1920, 1080)
ypos 670
xalign 0.5
linear 3 zoom 1.1
pause 2
hide d_credits_text
hide snootgame_big
with dissolve
show credits_base at Pan((0, -1080),(0, 8100), 65):
subpixel True
show d_credits_text at Pan((0, 0),(0, 12155), 65):
subpixel True
show credits_coverup at Pan((0, 0),(0, 12155), 65):
subpixel True
pause 50
queue music 'audio/OST/amberlight brillance live end.ogg'
queue music "<silence 1.0>" loop
elif _return == 3:
play music "audio/OST/Dino Destiny Reader.ogg"
pause 0.5
show c_credits_text:
crop (0, 0, 1920, 670)
pause 1.1
show c_credits_text:
crop None
pause 2.75
show credits_base at Pan((0, -1080),(0, 8100), 65) behind c_credits_text:
subpixel True
show c_credits_text at Pan((0, 0),(0, 12155), 65):
crop None
subpixel True
else:
play music "audio/OST/Dino Destiny Reader.ogg"
pause 0.5
show b_credits_text:
crop (0, 0, 1920, 670)
pause 1.1
show b_credits_text:
crop None
pause 2.75
show credits_base at Pan((0, -1080),(0, 8100), 65) behind b_credits_text:
subpixel True
show b_credits_text at Pan((0, 0),(0, 12155), 65):
crop None
subpixel True
pause
stop music fadeout 5
scene black with Dissolve(3)
pause 2
if tradwife:
scene c10 with Dissolve(1.5)
pause 20
scene black with Dissolve(2)
pause 1
elif anonscore >= 4 and fangscore >= 4:
scene golden ending with Dissolve(1.5)
pause 20
scene black with Dissolve(2)
pause 1
return

View File

@ -1,130 +1,130 @@
init offset = -1
screen OkPrompt(message, go_menu):
modal True
zorder 200
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _(message):
style "confirm_prompt"
xalign 0.5
hbox:
xalign 0.5
spacing 100
textbutton _("OK") activate_sound "audio/ui/uiClick.wav" action If(go_menu, true=MainMenu(False,False), false=Hide())
default persistent.seenWarning = []
init python:
from math import ceil
notice = _("NOTICE: Please keep in mind this is a fan translation, and as such it may not be completely accurate to the original intent of any written lines.")
languages = [
{'image': 'gui/flag/USofA.png', 'name': 'English', 'value': None },
{'image': 'gui/flag/Mexico.png', 'name': 'Español', 'value': 'es'},
{'image': 'gui/flag/Rus.png', 'name': 'Русский', 'value': 'ru'}
]
#This was done so it would work with whatever amount of languages you wanted, I tried it with up to 200 and it worked nicely.
maxItems = len(languages)
maxRows = ceil(maxItems/4)
if maxItems > 4:
maxItems = 4*maxRows
init:
transform renpysdumb: # Needed to scale down the imagebuttons.
zoom 0.5
transform icon: #For the preferences screen
truecenter
zoom 0.1
transform glowie(img):
img
easein_cubic 0.30 matrixcolor TintMatrix(Color((255, 255, 255)))
transform darkie(img):
img
easeout_cubic 0.30 matrixcolor TintMatrix(Color((255/2, 255/2, 255/2)))
screen lang_sel():
tag menu
frame:
background Transform(gui.main_menu_background, matrixcolor=TintMatrix('#222'))
padding (120, 40)
vbox:
style_prefix "navigation"
vbox:
label _("Choose Your Language") text_size 80
add Null(0, 40)
vpgrid:
if maxItems <= 4:
cols maxItems
rows 1
else:
cols 4
rows maxRows
#spacing 30
draggable True
mousewheel True
if maxRows > 3:
scrollbars "vertical"
for i in range(maxItems):
fixed:
xsize 400
ysize 300
vbox:
if i<len(languages):
text languages[i]["name"] at top
add Null(0,10)
imagebutton:
idle darkie(languages[i]["image"])
hover glowie(languages[i]["image"])
action If(languages[i]["value"] in persistent.seenWarning or languages[i]["value"] == None,
true = [Language(languages[i]["value"]), MainMenu(False,False)],
# Important to change the language before calling notice. Otherwise it will be in english.
false = [Language(languages[i]["value"]), AddToSet(set=persistent.seenWarning, value=languages[i]["value"]), Show(screen="OkPrompt", message=notice, go_menu=True)]
)
at renpysdumb # Scales the imagebutton down. No, you can't just specify the zoom here. It has to be a defined transform.
else:
# Renpy seethes if a vpgrid doesn't have the exact maximum amount of items for some reason.
add Null(0,0)
at truecenter
screen lang_button(lang):
hbox:
spacing 15
textbutton lang["name"]:
activate_sound "audio/ui/uiRollover.wav"
action If(lang["value"] in persistent.seenWarning or lang["value"] == None,
true = [Language(lang["value"])],
false = [Language(lang["value"]), AddToSet(set=persistent.seenWarning, value=lang["value"]), Show(screen="OkPrompt", message=notice, go_menu=False)]
)
if _preferences.language == lang["value"]:
add glowie(lang["image"]) at icon
else:
add darkie(lang["image"]) at icon
init offset = -1
screen OkPrompt(message, go_menu):
modal True
zorder 200
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _(message):
style "confirm_prompt"
xalign 0.5
hbox:
xalign 0.5
spacing 100
textbutton _("OK") activate_sound "audio/ui/uiClick.wav" action If(go_menu, true=MainMenu(False,False), false=Hide())
default persistent.seenWarning = []
init python:
from math import ceil
notice = _("NOTICE: Please keep in mind this is a fan translation, and as such it may not be completely accurate to the original intent of any written lines.")
languages = [
{'image': 'gui/flag/USofA.png', 'name': 'English', 'value': None },
{'image': 'gui/flag/Mexico.png', 'name': 'Español', 'value': 'es'},
{'image': 'gui/flag/Rus.png', 'name': 'Русский', 'value': 'ru'}
]
#This was done so it would work with whatever amount of languages you wanted, I tried it with up to 200 and it worked nicely.
maxItems = len(languages)
maxRows = ceil(maxItems/4)
if maxItems > 4:
maxItems = 4*maxRows
init:
transform renpysdumb: # Needed to scale down the imagebuttons.
zoom 0.5
transform icon: #For the preferences screen
truecenter
zoom 0.1
transform glowie(img):
img
easein_cubic 0.30 matrixcolor TintMatrix(Color((255, 255, 255)))
transform darkie(img):
img
easeout_cubic 0.30 matrixcolor TintMatrix(Color((255/2, 255/2, 255/2)))
screen lang_sel():
tag menu
frame:
background Transform(gui.main_menu_background, matrixcolor=TintMatrix('#222'))
padding (120, 40)
vbox:
style_prefix "navigation"
vbox:
label _("Choose Your Language") text_size 80
add Null(0, 40)
vpgrid:
if maxItems <= 4:
cols maxItems
rows 1
else:
cols 4
rows maxRows
#spacing 30
draggable True
mousewheel True
if maxRows > 3:
scrollbars "vertical"
for i in range(maxItems):
fixed:
xsize 400
ysize 300
vbox:
if i<len(languages):
text languages[i]["name"] at top
add Null(0,10)
imagebutton:
idle darkie(languages[i]["image"])
hover glowie(languages[i]["image"])
action If(languages[i]["value"] in persistent.seenWarning or languages[i]["value"] == None,
true = [Language(languages[i]["value"]), MainMenu(False,False)],
# Important to change the language before calling notice. Otherwise it will be in english.
false = [Language(languages[i]["value"]), AddToSet(set=persistent.seenWarning, value=languages[i]["value"]), Show(screen="OkPrompt", message=notice, go_menu=True)]
)
at renpysdumb # Scales the imagebutton down. No, you can't just specify the zoom here. It has to be a defined transform.
else:
# Renpy seethes if a vpgrid doesn't have the exact maximum amount of items for some reason.
add Null(0,0)
at truecenter
screen lang_button(lang):
hbox:
spacing 15
textbutton lang["name"]:
activate_sound "audio/ui/uiRollover.wav"
action If(lang["value"] in persistent.seenWarning or lang["value"] == None,
true = [Language(lang["value"])],
false = [Language(lang["value"]), AddToSet(set=persistent.seenWarning, value=lang["value"]), Show(screen="OkPrompt", message=notice, go_menu=False)]
)
if _preferences.language == lang["value"]:
add glowie(lang["image"]) at icon
else:
add darkie(lang["image"]) at icon

View File

@ -1,5 +1,4 @@

translate ru strings:
translate ru strings:
# 00action_file.rpy:26
old "{#weekday}Monday"
@ -159,39 +158,39 @@ translate ru strings:
# 00action_file.rpy:353
old "Save slot %s: [text]"
new "Сохранение в слот %s: [text]"
new "Слот сохранения %s: [text]"
# 00action_file.rpy:434
old "Load slot %s: [text]"
new "Загрузка слота %s: [text]"
new "Слот загрузки %s: [text]"
# 00action_file.rpy:487
old "Delete slot [text]"
new "Удаление слота [text]"
new "Удалить слот [text]"
# 00action_file.rpy:569
old "File page auto"
new "Страница автосохранений"
new "Страница автосохранения"
# 00action_file.rpy:571
old "File page quick"
new "Страница быстрых сохранений"
new "Страница быстрого сохранения"
# 00action_file.rpy:573
old "File page [text]"
new "Страница файлов [text]"
new "Страница [text]"
# 00action_file.rpy:772
old "Next file page."
new "Следующая страница файлов."
new "Следующая страница."
# 00action_file.rpy:845
old "Previous file page."
new "Предыдущая страница файлов."
new "Предыдущая страница."
# 00action_file.rpy:906
old "Quick save complete."
new "Быстрое сохранение выполнено."
new "Быстрое сохранение завершено."
# 00action_file.rpy:924
old "Quick save."
@ -207,7 +206,7 @@ translate ru strings:
# 00director.rpy:708
old "The interactive director is not enabled here."
new "Интерактивный планировщик здесь не включен."
new "Инструмент интерактивного взаимодействия здесь не доступен."
# 00director.rpy:1481
old "⬆"
@ -219,11 +218,11 @@ translate ru strings:
# 00director.rpy:1551
old "Done"
new "Выполнено"
new "Готово"
# 00director.rpy:1561
old "(statement)"
new "(заявление)"
new "(определение)"
# 00director.rpy:1562
old "(tag)"
@ -247,7 +246,7 @@ translate ru strings:
# 00director.rpy:1602
old "(filename)"
new "(имяфайла)"
new "(файл)"
# 00director.rpy:1631
old "Change"
@ -259,7 +258,7 @@ translate ru strings:
# 00director.rpy:1636
old "Cancel"
new "Отмена"
new "Отменить"
# 00director.rpy:1639
old "Remove"
@ -267,7 +266,7 @@ translate ru strings:
# 00director.rpy:1674
old "Statement:"
new "Заявление:"
new "Определение:"
# 00director.rpy:1695
old "Tag:"
@ -295,7 +294,7 @@ translate ru strings:
# 00director.rpy:1803
old "Audio Filename:"
new "Имя Аудиофайла:"
new "Имя аудиофайла:"
# 00gui.rpy:370
old "Are you sure?"
@ -303,15 +302,15 @@ translate ru strings:
# 00gui.rpy:371
old "Are you sure you want to delete this save?"
new "Вы точно уверены, что хотите удалить это сохранение?"
new "Вы уверены, что хотите удалить это сохранение?"
# 00gui.rpy:372
old "Are you sure you want to overwrite your save?"
new "Вы уверены, что хотите перезаписать своё сохранение?"
new "Вы уверены, что хотите перезаписать сохранение?"
# 00gui.rpy:373
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "При загрузке будет потерян несохранённый прогресс.\nВы уверены, что хотите это сделать?"
new "Загрузка приведёт к потере несохранённого прогресса.\nВы уверены, что хотите продолжить?"
# 00gui.rpy:374
old "Are you sure you want to quit?"
@ -319,11 +318,11 @@ translate ru strings:
# 00gui.rpy:375
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Вы уверены, что хотите вернуться в главное меню?\nЭто приведёт к потере несохранённого прогресса."
new "Вы уверены, что хотите выйти в главное меню?\nЭто приведёт к потере несохранённого прогресса."
# 00gui.rpy:376
old "Are you sure you want to end the replay?"
new "Вы уверены, что хотите завершить воспроизведение?"
new "Вы уверены, что хотите остановить повтор?"
# 00gui.rpy:377
old "Are you sure you want to begin skipping?"
@ -331,15 +330,15 @@ translate ru strings:
# 00gui.rpy:378
old "Are you sure you want to skip to the next choice?"
new "Вы уверены, что хотите пропустить до следующего выбора?"
new "Вы уверены, что хотите перейти к следующему выбору?"
# 00gui.rpy:379
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "Вы уверены, что хотите пропустить непросмотренные диалоги до следующего выбора?"
new "Вы уверены, что хотите пропустить непрочтённые диалоги до следующего выбора?"
# 00keymap.rpy:258
old "Failed to save screenshot as %s."
new "Не удалось сохранить снимок экрана как %s."
new "Не удалось сохранить скриншот как %s."
# 00keymap.rpy:270
old "Saved screenshot as %s."
@ -347,23 +346,23 @@ translate ru strings:
# 00library.rpy:146
old "Self-voicing disabled."
new "Самоозвучивание отключено."
new "Озвучка текста отключена."
# 00library.rpy:147
old "Clipboard voicing enabled. "
new "'Преобразование буфера обмена в речь' включено. "
new "Буферная озвучка включена. "
# 00library.rpy:148
old "Self-voicing enabled. "
new "Самоозвучивание включено. "
new "Озвучка текста включена. "
# 00library.rpy:150
old "bar"
new "bar"
new "переменная"
# 00library.rpy:151
old "selected"
new "выбор"
new "выбрано"
# 00library.rpy:152
old "viewport"
@ -395,11 +394,11 @@ translate ru strings:
# 00library.rpy:193
old "Skip Mode"
new "Режим Пропуска"
new "Режим пропуска"
# 00library.rpy:279
old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
new "Данная программа содержит свободное программное обеспечение под рядом лицензий, включая MIT License и GNU Lesser General Public License. Полный список программ, включая ссылки на полные исходники, можно найти {a=https://www.renpy.org/l/license}здесь{/a}."
new "Эта программа содержит бесплатное программное обеспечение, заверенное лицензиями, включая MIT License и GNU Lesser General Public License. Полный список программного обеспечения, включая ссылки на исходный код, могут быть найдены {a=https://www.renpy.org/l/license}здесь{/a}."
# 00preferences.rpy:207
old "display"
@ -419,7 +418,7 @@ translate ru strings:
# 00preferences.rpy:239
old "show empty window"
new "показывать пустое окно"
new "показать пустое окно"
# 00preferences.rpy:248
old "text speed"
@ -439,11 +438,11 @@ translate ru strings:
# 00preferences.rpy:266
old "skip unseen [text]"
new "пропуск непросмотренного [text]"
new "пропуск непрочтённого [text]"
# 00preferences.rpy:271
old "skip unseen text"
new "непросмотренного текста"
new "непрочтённого текста"
# 00preferences.rpy:273
old "begin skipping"
@ -451,31 +450,31 @@ translate ru strings:
# 00preferences.rpy:277
old "after choices"
new "после выбора"
new "после выборов"
# 00preferences.rpy:284
old "skip after choices"
new "пропуск после выбора"
new "пропуск после выборов"
# 00preferences.rpy:286
old "auto-forward time"
new "время автоперемотки"
new "время до авто-пролистывания"
# 00preferences.rpy:300
old "auto-forward"
new "автоперемотка"
new "авто-пролистывание"
# 00preferences.rpy:307
old "Auto forward"
new "Автоперемотка"
new "Авто-пролистывание"
# 00preferences.rpy:310
old "auto-forward after click"
new "автоперемотка после клика"
new "авто-пролистывание после клика"
# 00preferences.rpy:319
old "automatic move"
new "автоперемещение"
new "автоматическое перемещение"
# 00preferences.rpy:328
old "wait for voice"
@ -483,19 +482,19 @@ translate ru strings:
# 00preferences.rpy:337
old "voice sustain"
new "устойчивость голоса"
new "голосовое сопровождение"
# 00preferences.rpy:346
old "self voicing"
new "самоозвучивание"
new "озвучка текста"
# 00preferences.rpy:355
old "clipboard voicing"
new "озвучивание буфера обмена"
new "буферная озвучка"
# 00preferences.rpy:364
old "debug voicing"
new "отладка озвучивания"
new "отладка озвучки"
# 00preferences.rpy:373
old "emphasize audio"
@ -503,19 +502,19 @@ translate ru strings:
# 00preferences.rpy:382
old "rollback side"
new "откат"
new "отмена действия"
# 00preferences.rpy:392
old "gl powersave"
new "gl энергосбережения"
new "gl энергосбережение"
# 00preferences.rpy:398
old "gl framerate"
new "gl частоты кадров."
new "gl частота кадров"
# 00preferences.rpy:401
old "gl tearing"
new "gl разрыва"
new "gl разрыв картинки"
# 00preferences.rpy:413
old "music volume"
@ -531,31 +530,31 @@ translate ru strings:
# 00preferences.rpy:416
old "mute music"
new "без музыки"
new "заглушить музыку"
# 00preferences.rpy:417
old "mute sound"
new "без звука"
new "заглушить звук"
# 00preferences.rpy:418
old "mute voice"
new "без голоса"
new "заглушить голос"
# 00preferences.rpy:419
old "mute all"
new "отключить все звуки"
new "заглушить всё"
# 00preferences.rpy:500
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "Включено озвучивание буфера обмена. Нажмите 'shift+C' для отключения."
new "Буферная озвучка включена. Нажмите 'shift+C' для отключения."
# 00preferences.rpy:502
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "Самоозвучивание говорит \"[renpy.display.tts.last]\". Нажмите 'alt+shift+V' для отключения."
new "Озвучка текста проговорит \"[renpy.display.tts.last]\". Нажмите 'alt+shift+V' для отключения."
# 00preferences.rpy:504
old "Self-voicing enabled. Press 'v' to disable."
new "Самоозвучивание включено. Нажмите 'v' для отключения."
new "Озвучка текста включена. Нажмите 'v' для отключения."
# _compat\gamemenu.rpym:198
old "Empty Slot."
@ -571,19 +570,19 @@ translate ru strings:
# _compat\preferences.rpym:428
old "Joystick Mapping"
new "Раскладка Джойстика"
new "Настройка джойстика"
# _developer\developer.rpym:38
old "Developer Menu"
new "Меню Разработчика"
new "Меню разработчика"
# _developer\developer.rpym:43
old "Interactive Director (D)"
new "Интерактивный Планировщик (D)"
new "Интерактивный планировщик (D)"
# _developer\developer.rpym:45
old "Reload Game (Shift+R)"
new "Перезапуск Игры (Shift+R)"
new "Перезапустить игру (Shift+R)"
# _developer\developer.rpym:47
old "Console (Shift+O)"
@ -591,31 +590,31 @@ translate ru strings:
# _developer\developer.rpym:49
old "Variable Viewer"
new "Просмотрщик Переменных"
new "Просмотр переменных"
# _developer\developer.rpym:51
old "Image Location Picker"
new "Селектор Положения Изображений"
new "Средство выбора местоположения изображений"
# _developer\developer.rpym:53
old "Filename List"
new "Список Имён Файлов"
new "Список имён файлов"
# _developer\developer.rpym:57
old "Show Image Load Log (F4)"
new "Показать Журнал Загрузки Изображений (F4)"
new "Показать журнал загрузки изображений (F4)"
# _developer\developer.rpym:60
old "Hide Image Load Log (F4)"
new "Скрыть Журнал Загрузки Изображений (F4)"
new "Скрыть журнал загрузки изображений (F4)"
# _developer\developer.rpym:63
old "Image Attributes"
new "Атрибуты Изображений"
new "Атрибуты изображения"
# _developer\developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes] (hidden)"
new "[name] [attributes] (скрыто)"
# _developer\developer.rpym:94
old "[name] [attributes]"
@ -623,11 +622,11 @@ translate ru strings:
# _developer\developer.rpym:143
old "Nothing to inspect."
new "Нечего Проверять."
new "Нечего проверять."
# _developer\developer.rpym:154
old "Hide deleted"
new "Скрыть удалённое"
new "Спрятать удалённое"
# _developer\developer.rpym:154
old "Show deleted"
@ -635,23 +634,23 @@ translate ru strings:
# _developer\developer.rpym:278
old "Return to the developer menu"
new "Возврат в меню разработчика"
new "Вернуться в меню разработчика"
# _developer\developer.rpym:438
old "Rectangle: %r"
new "Прямоугольник: %r"
new "Окно: %r"
# _developer\developer.rpym:443
old "Mouse position: %r"
new "Положение мыши: %r"
new "Позиция курсора: %r"
# _developer\developer.rpym:448
old "Right-click or escape to quit."
new "Правый-клик или escape для выхода."
new "Нажмите Escape или М2, чтобы выйти"
# _developer\developer.rpym:480
old "Rectangle copied to clipboard."
new "Прямоугольник скопирован в буфер обмена."
new "Окно скопировано в буфер обмена."
# _developer\developer.rpym:483
old "Position copied to clipboard."
@ -659,11 +658,11 @@ translate ru strings:
# _developer\developer.rpym:502
old "Type to filter: "
new "Тип фильтрации: "
new "Введите для фильтра: "
# _developer\developer.rpym:630
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "Текстура: [tex_count] ([tex_size_mb:.1f] MB)"
new "Текстуры: [tex_count] ([tex_size_mb:.1f] MB)"
# _developer\developer.rpym:634
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
@ -679,11 +678,11 @@ translate ru strings:
# _developer\developer.rpym:652
old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}"
new "\n{color=#cfc}✔ прогнозируемое изображение (хорошо){/color}\n{color=#fcc}✘ непрогнозируемое изображение (плохо){/color}\n{color=#fff}Перетащите для перемещения.{/color}"
new "\n{color=#cfc}✔ прогнозируемое изображение (хорошо){/color}\n{color=#fcc}✘ непрогнозируемое изображение (плохо){/color}\n{color=#fff}Нажмите и перетащите для перемещения.{/color}"
# _developer\inspector.rpym:38
old "Displayable Inspector"
new "Проверка Отображения"
new "Проверка отображения"
# _developer\inspector.rpym:61
old "Size"
@ -699,7 +698,7 @@ translate ru strings:
# _developer\inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "Проверка Стилей [displayable_name!q]"
new "Проверка стилей у [displayable_name!q]"
# _developer\inspector.rpym:139
old "displayable:"
@ -707,7 +706,7 @@ translate ru strings:
# _developer\inspector.rpym:145
old " (no properties affect the displayable)"
new " (никакие свойства не влияют на отображение)"
new " (нет свойств, влияющих на отображение)"
# _developer\inspector.rpym:147
old " (default properties omitted)"
@ -723,35 +722,35 @@ translate ru strings:
# _layout\classic_load_save.rpym:179
old "q"
new "б"
new "q"
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "Обращение в App Store\nПожалуйста, подождите..."
new "Подключаемся к App Store\nПожалуйста, подождите..."
# 00updater.rpy:375
old "The Ren'Py Updater is not supported on mobile devices."
new "Ren'Py Updater не поддерживается на мобильных устройствах."
new "Апдейтер Ren'Py не поддерживается на мобильных устройствах."
# 00updater.rpy:494
old "An error is being simulated."
new "Происходит симуляция ошибки."
new "Cимулируется ошибка."
# 00updater.rpy:678
old "Either this project does not support updating, or the update status file was deleted."
new "Либо данный проект не поддерживает обновление, либо файл состояния обновления был удалён."
new "Проект или не поддерживает обновлений, или файл статуса обновления был удалён."
# 00updater.rpy:692
old "This account does not have permission to perform an update."
new "У этой учётной записи нет разрешения на выполнение обновления."
new "Этот аккаунт не имеет прав на установку обновления."
# 00updater.rpy:695
old "This account does not have permission to write the update log."
new "У этой учетной записи нет прав на запись журнала обновлений."
new "Этот аккаунт не имеет прав на создание журнала обновления."
# 00updater.rpy:722
old "Could not verify update signature."
new "Не удалось проверить подпись обновления."
new "Не удалось подтвердить подпись обновления."
# 00updater.rpy:997
old "The update file was not downloaded."
@ -759,15 +758,15 @@ translate ru strings:
# 00updater.rpy:1015
old "The update file does not have the correct digest - it may have been corrupted."
new "Файл обновления не содержит правильного 'digest' - возможно, он повреждён."
new "В файле обновления отсутствует корректный дайджест возможно, он был повреждён."
# 00updater.rpy:1071
old "While unpacking {}, unknown type {}."
new "При распаковке {1}, неизвестный тип {0}."
new "При распаковке {}, неизвестный тип {}."
# 00updater.rpy:1439
old "Updater"
new "Модуль Обновления"
new "Апдейтер"
# 00updater.rpy:1446
old "An error has occured:"
@ -775,15 +774,15 @@ translate ru strings:
# 00updater.rpy:1448
old "Checking for updates."
new "Проверка наличия обновлений."
new "Проверка обновлений."
# 00updater.rpy:1450
old "This program is up to date."
new "Данная программа является актуальной."
new "Программа имеет актуальную версию."
# 00updater.rpy:1452
old "[u.version] is available. Do you want to install it?"
new "[u.version] доступен. Хотите ли Вы установить его?"
new "[u.version] доступна. Хотите установить?"
# 00updater.rpy:1454
old "Preparing to download the updates."
@ -799,11 +798,11 @@ translate ru strings:
# 00updater.rpy:1460
old "Finishing up."
new "Завершение."
new "Завершение процесса."
# 00updater.rpy:1462
old "The updates have been installed. The program will restart."
new "Обновления были установлены. Программа будет перезапущена."
new "Обновления были установлены. Необходимо перезапустить программу."
# 00updater.rpy:1464
old "The updates have been installed."
@ -815,7 +814,7 @@ translate ru strings:
# 00updater.rpy:1481
old "Proceed"
new "Продолжение"
new "Продолжить"
# 00gallery.rpy:585
old "Image [index] of [count] locked."
@ -839,23 +838,23 @@ translate ru strings:
# 00gltest.rpy:70
old "Renderer"
new "Рендер"
new "Рендеринг"
# 00gltest.rpy:74
old "Automatically Choose"
new "Автоматический Выбор"
new "Автоматический выбор"
# 00gltest.rpy:79
old "Force Angle/DirectX Renderer"
new "Принудительный 'Angle/DirectX Рендеринг'"
new "Принудительный Angle/DirectX рендеринг"
# 00gltest.rpy:83
old "Force OpenGL Renderer"
new "Принудительный OpenGL Рендеринг"
new "Принудительный OpenGL рендеринг"
# 00gltest.rpy:87
old "Force Software Renderer"
new "Принудительный Программный Рендеринг"
new "Принудительный программный рендеринг"
# 00gltest.rpy:93
old "NPOT"
@ -875,7 +874,7 @@ translate ru strings:
# 00gltest.rpy:145
old "Framerate"
new "Частота кадров."
new "Частота кадров"
# 00gltest.rpy:149
old "Screen"
@ -891,19 +890,19 @@ translate ru strings:
# 00gltest.rpy:163
old "Tearing"
new "Разрыв"
new "Разрыв картинки"
# 00gltest.rpy:179
old "Changes will take effect the next time this program is run."
new "Изменения вступят в силу при следующем запуске программы."
new "Изменения вступят в силу после перезапуска программы."
# 00gltest.rpy:213
old "Performance Warning"
new "Предупреждение о Производительности"
new "Падение производительности"
# 00gltest.rpy:218
old "This computer is using software rendering."
new "На этом компьютере используется программное обеспечение рендеринга."
new "Этот компьютер использует стандартный (программный) способ рендеринга."
# 00gltest.rpy:220
old "This computer is not using shaders."
@ -915,15 +914,15 @@ translate ru strings:
# 00gltest.rpy:224
old "This computer has a problem displaying graphics: [problem]."
new "На этом компьютере возникла проблема с отображением графики: [problem]."
new "У этого компьютера есть проблема с отображением графики: [problem]."
# 00gltest.rpy:229
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
new "Возможно, графические драйверы устарели или работают некорректно. Это может привести к медленному или некорректному отображению графики. Обновление DirectX может устранить эту проблему."
new "Графический драйвер устарел или работает некорректно. Это может привести к неправильному отображению картинки или понижению производительности. Обновление DirectX может устранить эту проблему."
# 00gltest.rpy:231
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
new "Графические драйверы могли устареть или работают некорректно. Это может привести к медленному или некорректному отображению графики."
new "Графический драйвер устарел или работает некорректно. Это может привести к неправильному отображению картинки или понижению производительности."
# 00gltest.rpy:236
old "Update DirectX"
@ -931,7 +930,7 @@ translate ru strings:
# 00gltest.rpy:242
old "Continue, Show this warning again"
new "Продолжить, показывая предупреждение снова"
new "Продолжить, показав предупреждение снова"
# 00gltest.rpy:246
old "Continue, Don't show warning again"
@ -943,15 +942,15 @@ translate ru strings:
# 00gltest.rpy:268
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
new "Веб-установка DirectX запущена. Она могла запуститься в свёрнутом виде на панели задач. Следуйте подсказкам для установки DirectX."
new "Установка DirectX запущена. Она могла запуститься в свёрнутом режиме на панели задач. Следуйте подсказкам на экране для установки DirectX."
# 00gltest.rpy:272
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
new "{b}Примечание:{/b} Веб-установка Microsoft DirectX по умолчанию устанавливает панель инструментов Bing. Если вы не хотите использовать эту панель, снимите соответствующий флажок."
new "{b}Примечание:{/b} Установка DirectX по умолчанию устанавливает панель инструментов Bing. Если вы не хотите устанавливать эту панель, снимите соответствующий флажок."
# 00gltest.rpy:276
old "When setup finishes, please click below to restart this program."
new "По окончании установки нажмите кнопку ниже, чтобы перезапустить программу."
new "После завершения установки нажмите кнопку ниже, чтобы перезапустить программу."
# 00gltest.rpy:278
old "Restart"
@ -959,11 +958,11 @@ translate ru strings:
# 00gamepad.rpy:32
old "Select Gamepad to Calibrate"
new "Выбор геймпада для калибровки"
new "Выберите геймпад для калибровки"
# 00gamepad.rpy:35
old "No Gamepads Available"
new "Геймпады Отсутствуют"
new "Геймпады не найдены"
# 00gamepad.rpy:54
old "Calibrating [name] ([i]/[total])"
@ -971,11 +970,11 @@ translate ru strings:
# 00gamepad.rpy:58
old "Press or move the [control!s] [kind]."
new "Нажмите или переместите: [control!s] [kind]."
new "Нажмите или сдвиньте [control!s]' [kind]."
# 00gamepad.rpy:66
old "Skip (A)"