Translation Boot Menu

This commit is contained in:
Nutbuster 2022-10-21 20:51:52 +11:00
parent e74d634799
commit ab34f00ae0
10 changed files with 1237 additions and 39 deletions

BIN
game/gui/flag/Spain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
game/gui/flag/USofA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -13,6 +13,7 @@
## The _() surrounding the string marks it as eligible for translation.
define config.name = _("SnootGame")
#define config.cache_surfaces = True
## Determines if the title given above is shown on the main menu screen. Set

View File

@ -1,6 +1,17 @@
###Updater Python stuff###
init -1 python:
#idk non-functional dummies for uisounds hackery
#coming soon
def onclick_audio(flag, _audioflag=False):
audio_filename=["audio/ui/uiOptionOn.wav", "audio/ui/uiOptionOff.wav"]
if _audioflag:
audio_filename=["audio/ui/uiOptionOff.wav", "audio/ui/uiOptionOn.wav"]
renpy.play(audio_filename[int(bool(flag))])
init python:
###Updater Python stuff###
if renpy.variant("pc"): #Don't run this on mobile, not supported
if persistent.updateresult is None:
persistent.updateresult = "No new version is available"
@ -18,15 +29,6 @@ init python:
else:
persistent.updateresult = pendingVersion
#idk non-functional dummies for uisounds hackery
#coming soon
def onclick_audio(flag, _audioflag=False):
audio_filename=["audio/ui/uiOptionOn.wav", "audio/ui/uiOptionOff.wav"]
if _audioflag:
audio_filename=["audio/ui/uiOptionOff.wav", "audio/ui/uiOptionOn.wav"]
renpy.play(audio_filename[int(bool(flag))])
def ToggleAutoUpdate():
onclick_audio(persistent.autoup)
persistent.autoup = not persistent.autoup
@ -543,7 +545,7 @@ screen main_menu():
[ "Extras", ShowMenu("extras") ], \
[ "Quit", Quit(confirm=not main_menu) ]
] )
on "show" action renpy.start_predict_screen("cg_gallery")
#on "show" action renpy.start_predict_screen("cg_gallery")
style main_menu_frame is empty
style main_menu_vbox is vbox
@ -1265,7 +1267,7 @@ screen extrasnavigation():
[ "About", ShowMenu("about") ],
[ "Updates", ShowMenu("updates") ],
[ "Gallery", ShowMenu("cg_gallery_0") ],
[ "Mods", ShowMenu("mod_menu") ],
[ "Mods", ShowMenu("circleBar") ],
[ "Return", ShowMenu("main_menu") ]
] )
@ -1738,7 +1740,7 @@ style pref_vbox:
#redefine function
screen quick_button(filename, label, function):
variant "small mobile"
variant "mobile"
button:
xmaximum 124
ymaximum 124
@ -1748,7 +1750,7 @@ screen quick_button(filename, label, function):
text label xalign 0.5 yalign 0.5 size 42 style "quick_button_text"
screen quick_menu():
variant "small mobile"
variant "mobile"
zorder 100
if quick_menu:
hbox:
@ -1765,7 +1767,7 @@ screen quick_menu():
] )
screen extrasnavigation(): #Updates are removed (not even supported by Ren'Py)
variant "small mobile"
variant "mobile"
vbox:
xpos 1940
yalign 0.03
@ -1787,73 +1789,73 @@ screen extrasnavigation(): #Updates are removed (not even supported by Ren'Py)
] )
style radio_button:
variant "small mobile"
variant "mobile"
foreground "gui/phone/button/radio_[prefix_]foreground.png"
style check_button:
variant "small mobile"
variant "mobile"
foreground "gui/phone/button/check_[prefix_]foreground.png"
style nvl_window:
variant "small mobile"
variant "mobile"
background "gui/phone/nvl.png"
style game_menu_outer_frame:
variant "small mobile"
variant "mobile"
background "gui/phone/overlay/game_menu.png"
style game_menu_navigation_frame:
variant "small mobile"
variant "mobile"
xsize 510
style game_menu_content_frame:
variant "small mobile"
variant "mobile"
top_margin 0
style pref_vbox:
variant "small mobile"
variant "mobile"
xsize 600
style bar:
variant "small mobile"
variant "mobile"
ysize gui.bar_size
left_bar Frame("gui/phone/bar/left.png", gui.bar_borders, tile=gui.bar_tile)
right_bar Frame("gui/phone/bar/right.png", gui.bar_borders, tile=gui.bar_tile)
style vbar:
variant "small mobile"
variant "mobile"
xsize gui.bar_size
top_bar Frame("gui/phone/bar/top.png", gui.vbar_borders, tile=gui.bar_tile)
bottom_bar Frame("gui/phone/bar/bottom.png", gui.vbar_borders, tile=gui.bar_tile)
style scrollbar:
variant "small mobile"
variant "mobile"
ysize gui.scrollbar_size
base_bar Frame("gui/phone/scrollbar/horizontal_[prefix_]bar.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
thumb Frame("gui/phone/scrollbar/horizontal_[prefix_]thumb.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
style vscrollbar:
variant "small mobile"
variant "mobile"
xsize gui.scrollbar_size
base_bar Frame("gui/phone/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
thumb Frame("gui/phone/scrollbar/vertical_[prefix_]thumb.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
style slider:
variant "small mobile"
variant "mobile"
ysize gui.slider_size
base_bar Frame("gui/phone/slider/horizontal_[prefix_]bar.png", gui.slider_borders, tile=gui.slider_tile)
thumb "gui/phone/slider/horizontal_[prefix_]thumb.png"
style vslider:
variant "small mobile"
variant "mobile"
xsize gui.slider_size
base_bar Frame("gui/phone/slider/vertical_[prefix_]bar.png", gui.vslider_borders, tile=gui.slider_tile)
thumb "gui/phone/slider/vertical_[prefix_]thumb.png"
style slider_pref_vbox:
variant "small mobile"
variant "mobile"
xsize None
style slider_pref_slider:
variant "small mobile"
variant "mobile"
xsize 900

View File

@ -16,16 +16,16 @@ label splashscreen:
def save_thumb(src_image, name, ext):
final = CACHE_PATH+"thmb_"+name+'.'+ext
data = src_image.load() #Returns a pygame surface
if (os.path.exists(final)):
pass
else:
data = src_image.load() #Returns a pygame surface
pygame.image.save(data, final) #Saves the image to file
#print('O', final)
#save_thumb(NOT_UNLOCKED_COVER,"default","jpg")
thread_arr = []
g_thread_arr = []
path_testing = []
for x in (gallery_dic.items()):
key = x[0]
@ -36,7 +36,7 @@ label splashscreen:
pass
else:
for c in CG_PATHS:
print(c, os.path.basename(c['path']))
#print(c, os.path.basename(c['path']))
if (c['name'] == key):
final_dir = os.path.join(CACHE_PATH, "thmb_"+os.path.normpath(c['path']))
if (os.path.exists(final_dir)):
@ -47,20 +47,16 @@ label splashscreen:
path_testing.append(key)
for y in value:
print(y['cg'])
#print(y['cg'])
if type(y['cg']) is Movie:
pass
else:
#save_thumb(y['cg'], y['fn'], y['ext'])
t = threading.Thread(target=save_thumb, args=(y['cg'], y['fn'], y['ext']))
thread_arr.append(t)
g_thread_arr.append(t)
t.start()
pass
for th in thread_arr:
th.join()
#renpy.load_image(y['cg'])
print('HELLO')
if persistent.autoup:
python:
@ -70,4 +66,13 @@ label splashscreen:
stop sound
if (persistent.languaged_up is None):
call screen translator_popup
else:
python:
for th in g_thread_arr:
th.join()
return

198
game/src/translation.rpy Normal file
View File

@ -0,0 +1,198 @@
init offset = -1
init python:
list_langs_buttons = [
['gui/flag/USofA.png', 'English', Language(None)],
['gui/flag/spain.png', 'Español', Language('test')]
]
class LangCave: #todo: think of a better name
FPS = 1/60 #todo: fetch the actual target render framerate
GRID_ROWS_COLS_TUPLE = (2, 1)
lang_buttons = []
final_displayable = None
on_disable_interactable = False
LARGE_SIZE = (320, 240)
LARGE_SPACING = 80
SMALL_SIZE = (LARGE_SIZE[0]/2, LARGE_SIZE[1]/2)
SMALL_SPACING = LARGE_SPACING/2
class LangButton(renpy.Displayable):
def __init__(self, v, w, h, *childs, **kwargs):
super(LangCave.LangButton, self).__init__(**kwargs)
self.childs = []
for ch in childs:
child = renpy.displayable(ch)
self.childs.append(child)
self.width = w
self.height = h
self.value = v
self.hover = True #not/! breaks everything in renpy
self.selected = False
def render(self, width, height, st, at):
root_render = renpy.Render(self.width, self.height) #overall size i think
args = {}
if (self.hover):
args = {'matrixcolor': TintMatrix("#AAA")}
for ch in self.childs: #draw every child
t = Transform(child=ch, **args)
child_render = renpy.render(t, self.width, self.height, st, at)
root_render.blit(child_render, (0, 0))
return root_render
def event(self, ev, ex, ey, st): #getting clicked on
global LangCave
oldhover = self.hover
if ((ex > 0 and ey > 0) and (ex < self.width and ey < self.height)):
self.hover = False
if (renpy.map_event(ev, 'mouseup_1')): #1026
onclick_audio(True)
self.value() #todo: change to function, as value doesn't make sense
if LangCave.on_disable_interactable:
renpy.end_interaction(0)
LangCave.on_disable_interactable = False
recreate_lang_buttons_roulette_style(SMALL_SIZE) #mostly going to happen
else:
self.hover = True
pass
if self.hover == oldhover: #refresh on change
renpy.redraw(self, 0)
def visit(self):
return self.childs
@staticmethod
def render():
global LangButton
pass
@staticmethod
def render_langcave(st, at):
global LangCave
return LangCave.final_displayable, LangCave.FPS
pass
@staticmethod
def procreate_lang_buttons(size, spacing):
"""
size: tuple
"""
global LangCave
LangCave.lang_buttons.clear()
for llb in list_langs_buttons:
tfi = Transform(Image(llb[0]), xysize=size, fit='contain', yalign=0.5)
solid = Solid((22,22,22), xysize=size)
_button = Fixed(solid, tfi, xysize=size)
button = LangCave.LangButton(llb[2], *size, _button)
LangCave.on_disable_interactable = True
text = Text(llb[1], outlines=[(2, "#000", 0, 0)], xalign=0.5)
final = VBox(text, button, style_prefix="navigation")
#LangCave.lang_buttons.append(LangCave.LangButton(llb[2], *size, tfi))
LangCave.lang_buttons.append(final)
LangCave.final_displayable = Grid(*LangCave.GRID_ROWS_COLS_TUPLE, *LangCave.lang_buttons, spacing=spacing)
pass
@staticmethod
def recreate_lang_buttons_roulette_style(size, spacing):
global LangCave
LangCave.lang_buttons.clear()
for llb in list_langs_buttons:
tfi = Transform(Image(llb[0]), xsize=size[0], ysize=size[1], fit='contain', yalign=0.5)
solid = Solid((22,22,22), xysize=(size))
_button = Fixed(solid, tfi, xysize=(size))
text = Text(llb[1], outlines=[(2, "#000", 0, 0)], xalign=0.5)
penultimate = HBox(text, _button, style_prefix="navigation")
button = LangCave.LangButton(llb[2], *size, _button)
#final = VBox(text, button, style_prefix="navigation")
#LangCave.lang_buttons.append(LangCave.LangButton(llb[2], *size, tfi))
LangCave.lang_buttons.append(button)
LangCave.final_displayable = Vbox(*LangCave.lang_buttons, spacing=spacing)
pass
#if
LangCave.procreate_lang_buttons(LangCave.LARGE_SIZE, LangCave.LARGE_SPACING)
#else
#recreate_lang_buttons_roulette_style(SMALL_SIZE) #mostly going to happen
screen lang_buttons(filename_label_functions):
for f_l_f in filename_label_functions:
use lang_button(f_l_f[0], f_l_f[1], f_l_f[2])
screen lang_button(filename, label, function):
button:
xsize 360
ysize 240
action [function, Return()]
activate_sound "audio/ui/uiClick.wav"
#hovered Transform(matrixcolor=TintMatrix('#fff'))
fixed:
xsize 360
ysize 240
#xfit True
#yfit True
#fit_first 'height'
add "#222" xsize 360 ysize 240
add Transform(Image(filename), xsize=360, fit='contain', yalign=0.5)
text label xalign 0.5 yalign 0.0 xanchor 0.5 size 22 style "quick_button_text"
screen _translator_popup:
tag menu
add gui.main_menu_background
#add gui.game_menu_background
vbox:
style_prefix "navigation"
hbox:
label _("Choose Your Language")
grid 2 1: #hardcoded for now
spacing 20
use lang_buttons(list_langs_buttons)
screen translator_popup:
tag menu
frame:
#background gui.main_menu_background
background Transform(gui.main_menu_background, matrixcolor=TintMatrix('#555'))
padding (120, 40)
vbox:
style_prefix "navigation"
hbox:
label _("Choose Your Language")
hbox:
add Null(80, 40)
add DynamicDisplayable(LangCave.render_langcave)
screen translator_roulette:
label _("Language")
vbox:
add DynamicDisplayable(LangCave.render_langcave)

984
game/tl/test/common.rpy Normal file
View File

@ -0,0 +1,984 @@
# TODO: Translation updated at 2022-10-21 13:48
translate test strings:
# renpy/common/00accessibility.rpy:28
old "Self-voicing disabled."
new "Self-voicing disabled."
# renpy/common/00accessibility.rpy:29
old "Clipboard voicing enabled. "
new "Clipboard voicing enabled. "
# renpy/common/00accessibility.rpy:30
old "Self-voicing enabled. "
new "Self-voicing enabled. "
# renpy/common/00accessibility.rpy:32
old "bar"
new "bar"
# renpy/common/00accessibility.rpy:33
old "selected"
new "selected"
# renpy/common/00accessibility.rpy:34
old "viewport"
new "viewport"
# renpy/common/00accessibility.rpy:35
old "horizontal scroll"
new "horizontal scroll"
# renpy/common/00accessibility.rpy:36
old "vertical scroll"
new "vertical scroll"
# renpy/common/00accessibility.rpy:37
old "activate"
new "activate"
# renpy/common/00accessibility.rpy:38
old "deactivate"
new "deactivate"
# renpy/common/00accessibility.rpy:39
old "increase"
new "increase"
# renpy/common/00accessibility.rpy:40
old "decrease"
new "decrease"
# renpy/common/00accessibility.rpy:138
old "Font Override"
new "Font Override"
# renpy/common/00accessibility.rpy:142
old "Default"
new "Default"
# renpy/common/00accessibility.rpy:146
old "DejaVu Sans"
new "DejaVu Sans"
# renpy/common/00accessibility.rpy:150
old "Opendyslexic"
new "Opendyslexic"
# renpy/common/00accessibility.rpy:156
old "Text Size Scaling"
new "Text Size Scaling"
# renpy/common/00accessibility.rpy:168
old "Line Spacing Scaling"
new "Line Spacing Scaling"
# renpy/common/00accessibility.rpy:180
old "High Contrast Text"
new "High Contrast Text"
# renpy/common/00accessibility.rpy:182
old "Enable"
new "Enable"
# renpy/common/00accessibility.rpy:193
old "Self-Voicing"
new "Self-Voicing"
# renpy/common/00accessibility.rpy:197
old "Off"
new "Off"
# renpy/common/00accessibility.rpy:201
old "Text-to-speech"
new "Text-to-speech"
# renpy/common/00accessibility.rpy:205
old "Clipboard"
new "Clipboard"
# renpy/common/00accessibility.rpy:209
old "Debug"
new "Debug"
# renpy/common/00accessibility.rpy:215
old "Self-Voicing Volume Drop"
new "Self-Voicing Volume Drop"
# renpy/common/00accessibility.rpy:224
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
new "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
# renpy/common/00action_file.rpy:26
old "{#weekday}Monday"
new "{#weekday}Monday"
# renpy/common/00action_file.rpy:26
old "{#weekday}Tuesday"
new "{#weekday}Tuesday"
# renpy/common/00action_file.rpy:26
old "{#weekday}Wednesday"
new "{#weekday}Wednesday"
# renpy/common/00action_file.rpy:26
old "{#weekday}Thursday"
new "{#weekday}Thursday"
# renpy/common/00action_file.rpy:26
old "{#weekday}Friday"
new "{#weekday}Friday"
# renpy/common/00action_file.rpy:26
old "{#weekday}Saturday"
new "{#weekday}Saturday"
# renpy/common/00action_file.rpy:26
old "{#weekday}Sunday"
new "{#weekday}Sunday"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Mon"
new "{#weekday_short}Mon"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Tue"
new "{#weekday_short}Tue"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Wed"
new "{#weekday_short}Wed"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Thu"
new "{#weekday_short}Thu"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Fri"
new "{#weekday_short}Fri"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Sat"
new "{#weekday_short}Sat"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Sun"
new "{#weekday_short}Sun"
# renpy/common/00action_file.rpy:47
old "{#month}January"
new "{#month}January"
# renpy/common/00action_file.rpy:47
old "{#month}February"
new "{#month}February"
# renpy/common/00action_file.rpy:47
old "{#month}March"
new "{#month}March"
# renpy/common/00action_file.rpy:47
old "{#month}April"
new "{#month}April"
# renpy/common/00action_file.rpy:47
old "{#month}May"
new "{#month}May"
# renpy/common/00action_file.rpy:47
old "{#month}June"
new "{#month}June"
# renpy/common/00action_file.rpy:47
old "{#month}July"
new "{#month}July"
# renpy/common/00action_file.rpy:47
old "{#month}August"
new "{#month}August"
# renpy/common/00action_file.rpy:47
old "{#month}September"
new "{#month}September"
# renpy/common/00action_file.rpy:47
old "{#month}October"
new "{#month}October"
# renpy/common/00action_file.rpy:47
old "{#month}November"
new "{#month}November"
# renpy/common/00action_file.rpy:47
old "{#month}December"
new "{#month}December"
# renpy/common/00action_file.rpy:63
old "{#month_short}Jan"
new "{#month_short}Jan"
# renpy/common/00action_file.rpy:63
old "{#month_short}Feb"
new "{#month_short}Feb"
# renpy/common/00action_file.rpy:63
old "{#month_short}Mar"
new "{#month_short}Mar"
# renpy/common/00action_file.rpy:63
old "{#month_short}Apr"
new "{#month_short}Apr"
# renpy/common/00action_file.rpy:63
old "{#month_short}May"
new "{#month_short}May"
# renpy/common/00action_file.rpy:63
old "{#month_short}Jun"
new "{#month_short}Jun"
# renpy/common/00action_file.rpy:63
old "{#month_short}Jul"
new "{#month_short}Jul"
# renpy/common/00action_file.rpy:63
old "{#month_short}Aug"
new "{#month_short}Aug"
# renpy/common/00action_file.rpy:63
old "{#month_short}Sep"
new "{#month_short}Sep"
# renpy/common/00action_file.rpy:63
old "{#month_short}Oct"
new "{#month_short}Oct"
# renpy/common/00action_file.rpy:63
old "{#month_short}Nov"
new "{#month_short}Nov"
# renpy/common/00action_file.rpy:63
old "{#month_short}Dec"
new "{#month_short}Dec"
# renpy/common/00action_file.rpy:250
old "%b %d, %H:%M"
new "%b %d, %H:%M"
# renpy/common/00action_file.rpy:364
old "Save slot %s: [text]"
new "Save slot %s: [text]"
# renpy/common/00action_file.rpy:445
old "Load slot %s: [text]"
new "Load slot %s: [text]"
# renpy/common/00action_file.rpy:498
old "Delete slot [text]"
new "Delete slot [text]"
# renpy/common/00action_file.rpy:577
old "File page auto"
new "File page auto"
# renpy/common/00action_file.rpy:579
old "File page quick"
new "File page quick"
# renpy/common/00action_file.rpy:581
old "File page [text]"
new "File page [text]"
# renpy/common/00action_file.rpy:780
old "Next file page."
new "Next file page."
# renpy/common/00action_file.rpy:852
old "Previous file page."
new "Previous file page."
# renpy/common/00action_file.rpy:913
old "Quick save complete."
new "Quick save complete."
# renpy/common/00action_file.rpy:931
old "Quick save."
new "Quick save."
# renpy/common/00action_file.rpy:950
old "Quick load."
new "Quick load."
# renpy/common/00action_other.rpy:381
old "Language [text]"
new "Language [text]"
# renpy/common/00action_other.rpy:703
old "Open [text] directory."
new "Open [text] directory."
# renpy/common/00director.rpy:708
old "The interactive director is not enabled here."
new "The interactive director is not enabled here."
# renpy/common/00director.rpy:1481
old "⬆"
new "⬆"
# renpy/common/00director.rpy:1487
old "⬇"
new "⬇"
# renpy/common/00director.rpy:1551
old "Done"
new "Done"
# renpy/common/00director.rpy:1561
old "(statement)"
new "(statement)"
# renpy/common/00director.rpy:1562
old "(tag)"
new "(tag)"
# renpy/common/00director.rpy:1563
old "(attributes)"
new "(attributes)"
# renpy/common/00director.rpy:1564
old "(transform)"
new "(transform)"
# renpy/common/00director.rpy:1589
old "(transition)"
new "(transition)"
# renpy/common/00director.rpy:1601
old "(channel)"
new "(channel)"
# renpy/common/00director.rpy:1602
old "(filename)"
new "(filename)"
# renpy/common/00director.rpy:1631
old "Change"
new "Change"
# renpy/common/00director.rpy:1633
old "Add"
new "Add"
# renpy/common/00director.rpy:1636
old "Cancel"
new "Cancel"
# renpy/common/00director.rpy:1639
old "Remove"
new "Remove"
# renpy/common/00director.rpy:1674
old "Statement:"
new "Statement:"
# renpy/common/00director.rpy:1695
old "Tag:"
new "Tag:"
# renpy/common/00director.rpy:1711
old "Attributes:"
new "Attributes:"
# renpy/common/00director.rpy:1729
old "Transforms:"
new "Transforms:"
# renpy/common/00director.rpy:1748
old "Behind:"
new "Behind:"
# renpy/common/00director.rpy:1767
old "Transition:"
new "Transition:"
# renpy/common/00director.rpy:1785
old "Channel:"
new "Channel:"
# renpy/common/00director.rpy:1803
old "Audio Filename:"
new "Audio Filename:"
# renpy/common/00gui.rpy:445
old "Are you sure?"
new "Are you sure?"
# renpy/common/00gui.rpy:446
old "Are you sure you want to delete this save?"
new "Are you sure you want to delete this save?"
# renpy/common/00gui.rpy:447
old "Are you sure you want to overwrite your save?"
new "Are you sure you want to overwrite your save?"
# renpy/common/00gui.rpy:448
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Loading will lose unsaved progress.\nAre you sure you want to do this?"
# renpy/common/00gui.rpy:449
old "Are you sure you want to quit?"
new "Are you sure you want to quit?"
# renpy/common/00gui.rpy:450
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
# renpy/common/00gui.rpy:451
old "Are you sure you want to end the replay?"
new "Are you sure you want to end the replay?"
# renpy/common/00gui.rpy:452
old "Are you sure you want to begin skipping?"
new "Are you sure you want to begin skipping?"
# renpy/common/00gui.rpy:453
old "Are you sure you want to skip to the next choice?"
new "Are you sure you want to skip to the next choice?"
# renpy/common/00gui.rpy:454
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "Are you sure you want to skip unseen dialogue to the next choice?"
# renpy/common/00keymap.rpy:310
old "Failed to save screenshot as %s."
new "Failed to save screenshot as %s."
# renpy/common/00keymap.rpy:322
old "Saved screenshot as %s."
new "Saved screenshot as %s."
# renpy/common/00library.rpy:230
old "Skip Mode"
new "Skip Mode"
# renpy/common/00library.rpy:316
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 "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}."
# renpy/common/00preferences.rpy:259
old "display"
new "display"
# renpy/common/00preferences.rpy:271
old "transitions"
new "transitions"
# renpy/common/00preferences.rpy:280
old "skip transitions"
new "skip transitions"
# renpy/common/00preferences.rpy:282
old "video sprites"
new "video sprites"
# renpy/common/00preferences.rpy:291
old "show empty window"
new "show empty window"
# renpy/common/00preferences.rpy:300
old "text speed"
new "text speed"
# renpy/common/00preferences.rpy:308
old "joystick"
new "joystick"
# renpy/common/00preferences.rpy:308
old "joystick..."
new "joystick..."
# renpy/common/00preferences.rpy:315
old "skip"
new "skip"
# renpy/common/00preferences.rpy:318
old "skip unseen [text]"
new "skip unseen [text]"
# renpy/common/00preferences.rpy:323
old "skip unseen text"
new "skip unseen text"
# renpy/common/00preferences.rpy:325
old "begin skipping"
new "begin skipping"
# renpy/common/00preferences.rpy:329
old "after choices"
new "after choices"
# renpy/common/00preferences.rpy:336
old "skip after choices"
new "skip after choices"
# renpy/common/00preferences.rpy:338
old "auto-forward time"
new "auto-forward time"
# renpy/common/00preferences.rpy:352
old "auto-forward"
new "auto-forward"
# renpy/common/00preferences.rpy:359
old "Auto forward"
new "Auto forward"
# renpy/common/00preferences.rpy:362
old "auto-forward after click"
new "auto-forward after click"
# renpy/common/00preferences.rpy:371
old "automatic move"
new "automatic move"
# renpy/common/00preferences.rpy:380
old "wait for voice"
new "wait for voice"
# renpy/common/00preferences.rpy:389
old "voice sustain"
new "voice sustain"
# renpy/common/00preferences.rpy:398
old "self voicing"
new "self voicing"
# renpy/common/00preferences.rpy:407
old "self voicing volume drop"
new "self voicing volume drop"
# renpy/common/00preferences.rpy:415
old "clipboard voicing"
new "clipboard voicing"
# renpy/common/00preferences.rpy:424
old "debug voicing"
new "debug voicing"
# renpy/common/00preferences.rpy:433
old "emphasize audio"
new "emphasize audio"
# renpy/common/00preferences.rpy:442
old "rollback side"
new "rollback side"
# renpy/common/00preferences.rpy:452
old "gl powersave"
new "gl powersave"
# renpy/common/00preferences.rpy:458
old "gl framerate"
new "gl framerate"
# renpy/common/00preferences.rpy:461
old "gl tearing"
new "gl tearing"
# renpy/common/00preferences.rpy:464
old "font transform"
new "font transform"
# renpy/common/00preferences.rpy:467
old "font size"
new "font size"
# renpy/common/00preferences.rpy:475
old "font line spacing"
new "font line spacing"
# renpy/common/00preferences.rpy:483
old "system cursor"
new "system cursor"
# renpy/common/00preferences.rpy:492
old "renderer menu"
new "renderer menu"
# renpy/common/00preferences.rpy:495
old "accessibility menu"
new "accessibility menu"
# renpy/common/00preferences.rpy:498
old "high contrast text"
new "high contrast text"
# renpy/common/00preferences.rpy:507
old "audio when minimized"
new "audio when minimized"
# renpy/common/00preferences.rpy:527
old "main volume"
new "main volume"
# renpy/common/00preferences.rpy:528
old "music volume"
new "music volume"
# renpy/common/00preferences.rpy:529
old "sound volume"
new "sound volume"
# renpy/common/00preferences.rpy:530
old "voice volume"
new "voice volume"
# renpy/common/00preferences.rpy:531
old "mute main"
new "mute main"
# renpy/common/00preferences.rpy:532
old "mute music"
new "mute music"
# renpy/common/00preferences.rpy:533
old "mute sound"
new "mute sound"
# renpy/common/00preferences.rpy:534
old "mute voice"
new "mute voice"
# renpy/common/00preferences.rpy:535
old "mute all"
new "mute all"
# renpy/common/00preferences.rpy:616
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "Clipboard voicing enabled. Press 'shift+C' to disable."
# renpy/common/00preferences.rpy:618
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
# renpy/common/00preferences.rpy:620
old "Self-voicing enabled. Press 'v' to disable."
new "Self-voicing enabled. Press 'v' to disable."
# renpy/common/00iap.rpy:219
old "Contacting App Store\nPlease Wait..."
new "Contacting App Store\nPlease Wait..."
# renpy/common/00updater.rpy:419
old "The Ren'Py Updater is not supported on mobile devices."
new "The Ren'Py Updater is not supported on mobile devices."
# renpy/common/00updater.rpy:548
old "An error is being simulated."
new "An error is being simulated."
# renpy/common/00updater.rpy:738
old "Either this project does not support updating, or the update status file was deleted."
new "Either this project does not support updating, or the update status file was deleted."
# renpy/common/00updater.rpy:752
old "This account does not have permission to perform an update."
new "This account does not have permission to perform an update."
# renpy/common/00updater.rpy:755
old "This account does not have permission to write the update log."
new "This account does not have permission to write the update log."
# renpy/common/00updater.rpy:783
old "Could not verify update signature."
new "Could not verify update signature."
# renpy/common/00updater.rpy:1084
old "The update file was not downloaded."
new "The update file was not downloaded."
# renpy/common/00updater.rpy:1102
old "The update file does not have the correct digest - it may have been corrupted."
new "The update file does not have the correct digest - it may have been corrupted."
# renpy/common/00updater.rpy:1252
old "While unpacking {}, unknown type {}."
new "While unpacking {}, unknown type {}."
# renpy/common/00updater.rpy:1624
old "Updater"
new "Updater"
# renpy/common/00updater.rpy:1631
old "An error has occured:"
new "An error has occured:"
# renpy/common/00updater.rpy:1633
old "Checking for updates."
new "Checking for updates."
# renpy/common/00updater.rpy:1635
old "This program is up to date."
new "This program is up to date."
# renpy/common/00updater.rpy:1637
old "[u.version] is available. Do you want to install it?"
new "[u.version] is available. Do you want to install it?"
# renpy/common/00updater.rpy:1639
old "Preparing to download the updates."
new "Preparing to download the updates."
# renpy/common/00updater.rpy:1641
old "Downloading the updates."
new "Downloading the updates."
# renpy/common/00updater.rpy:1643
old "Unpacking the updates."
new "Unpacking the updates."
# renpy/common/00updater.rpy:1645
old "Finishing up."
new "Finishing up."
# renpy/common/00updater.rpy:1647
old "The updates have been installed. The program will restart."
new "The updates have been installed. The program will restart."
# renpy/common/00updater.rpy:1649
old "The updates have been installed."
new "The updates have been installed."
# renpy/common/00updater.rpy:1651
old "The updates were cancelled."
new "The updates were cancelled."
# renpy/common/00updater.rpy:1666
old "Proceed"
new "Proceed"
# renpy/common/00gallery.rpy:627
old "Image [index] of [count] locked."
new "Image [index] of [count] locked."
# renpy/common/00gallery.rpy:647
old "prev"
new "prev"
# renpy/common/00gallery.rpy:648
old "next"
new "next"
# renpy/common/00gallery.rpy:649
old "slideshow"
new "slideshow"
# renpy/common/00gallery.rpy:650
old "return"
new "return"
# renpy/common/00gltest.rpy:89
old "Renderer"
new "Renderer"
# renpy/common/00gltest.rpy:93
old "Automatically Choose"
new "Automatically Choose"
# renpy/common/00gltest.rpy:100
old "Force GL Renderer"
new "Force GL Renderer"
# renpy/common/00gltest.rpy:105
old "Force ANGLE Renderer"
new "Force ANGLE Renderer"
# renpy/common/00gltest.rpy:110
old "Force GLES Renderer"
new "Force GLES Renderer"
# renpy/common/00gltest.rpy:116
old "Force GL2 Renderer"
new "Force GL2 Renderer"
# renpy/common/00gltest.rpy:121
old "Force ANGLE2 Renderer"
new "Force ANGLE2 Renderer"
# renpy/common/00gltest.rpy:126
old "Force GLES2 Renderer"
new "Force GLES2 Renderer"
# renpy/common/00gltest.rpy:136
old "Enable (No Blocklist)"
new "Enable (No Blocklist)"
# renpy/common/00gltest.rpy:159
old "Powersave"
new "Powersave"
# renpy/common/00gltest.rpy:173
old "Framerate"
new "Framerate"
# renpy/common/00gltest.rpy:177
old "Screen"
new "Screen"
# renpy/common/00gltest.rpy:181
old "60"
new "60"
# renpy/common/00gltest.rpy:185
old "30"
new "30"
# renpy/common/00gltest.rpy:191
old "Tearing"
new "Tearing"
# renpy/common/00gltest.rpy:207
old "Changes will take effect the next time this program is run."
new "Changes will take effect the next time this program is run."
# renpy/common/00gltest.rpy:214
old "Quit"
new "Quit"
# renpy/common/00gltest.rpy:242
old "Performance Warning"
new "Performance Warning"
# renpy/common/00gltest.rpy:247
old "This computer is using software rendering."
new "This computer is using software rendering."
# renpy/common/00gltest.rpy:249
old "This game requires use of GL2 that can't be initialised."
new "This game requires use of GL2 that can't be initialised."
# renpy/common/00gltest.rpy:251
old "This computer has a problem displaying graphics: [problem]."
new "This computer has a problem displaying graphics: [problem]."
# renpy/common/00gltest.rpy:255
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
new "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
# renpy/common/00gltest.rpy:259
old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer."
new "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer."
# renpy/common/00gltest.rpy:264
old "More details on how to fix this can be found in the {a=[url]}documentation{/a}."
new "More details on how to fix this can be found in the {a=[url]}documentation{/a}."
# renpy/common/00gltest.rpy:269
old "Continue, Show this warning again"
new "Continue, Show this warning again"
# renpy/common/00gltest.rpy:273
old "Continue, Don't show warning again"
new "Continue, Don't show warning again"
# renpy/common/00gltest.rpy:281
old "Change render options"
new "Change render options"
# renpy/common/00gamepad.rpy:32
old "Select Gamepad to Calibrate"
new "Select Gamepad to Calibrate"
# renpy/common/00gamepad.rpy:35
old "No Gamepads Available"
new "No Gamepads Available"
# renpy/common/00gamepad.rpy:54
old "Calibrating [name] ([i]/[total])"
new "Calibrating [name] ([i]/[total])"
# renpy/common/00gamepad.rpy:58
old "Press or move the '[control!s]' [kind]."
new "Press or move the '[control!s]' [kind]."
# renpy/common/00gamepad.rpy:68
old "Skip (A)"
new "Skip (A)"
# renpy/common/00gamepad.rpy:71
old "Back (B)"
new "Back (B)"
# renpy/common/_errorhandling.rpym:555
old "Open"
new "Open"
# renpy/common/_errorhandling.rpym:557
old "Opens the traceback.txt file in a text editor."
new "Opens the traceback.txt file in a text editor."
# renpy/common/_errorhandling.rpym:559
old "Copy BBCode"
new "Copy BBCode"
# renpy/common/_errorhandling.rpym:561
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
# renpy/common/_errorhandling.rpym:563
old "Copy Markdown"
new "Copy Markdown"
# renpy/common/_errorhandling.rpym:565
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
new "Copies the traceback.txt file to the clipboard as Markdown for Discord."
# renpy/common/_errorhandling.rpym:594
old "An exception has occurred."
new "An exception has occurred."
# renpy/common/_errorhandling.rpym:617
old "Rollback"
new "Rollback"
# renpy/common/_errorhandling.rpym:619
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
# renpy/common/_errorhandling.rpym:622
old "Ignore"
new "Ignore"
# renpy/common/_errorhandling.rpym:626
old "Ignores the exception, allowing you to continue."
new "Ignores the exception, allowing you to continue."
# renpy/common/_errorhandling.rpym:628
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Ignores the exception, allowing you to continue. This often leads to additional errors."
# renpy/common/_errorhandling.rpym:632
old "Reload"
new "Reload"
# renpy/common/_errorhandling.rpym:634
old "Reloads the game from disk, saving and restoring game state if possible."
new "Reloads the game from disk, saving and restoring game state if possible."
# renpy/common/_errorhandling.rpym:637
old "Console"
new "Console"
# renpy/common/_errorhandling.rpym:639
old "Opens a console to allow debugging the problem."
new "Opens a console to allow debugging the problem."
# renpy/common/_errorhandling.rpym:652
old "Quits the game."
new "Quits the game."
# renpy/common/_errorhandling.rpym:673
old "Parsing the script failed."
new "Parsing the script failed."

8
game/tl/test/options.rpy Normal file
View File

@ -0,0 +1,8 @@
# TODO: Translation updated at 2022-10-21 13:48
translate test strings:
# game/options.rpy:15
old "SnootGame"
new "SnootGame"