From ab34f00ae0634ea872866820b468101f71735540 Mon Sep 17 00:00:00 2001 From: nutbuster Date: Fri, 21 Oct 2022 20:51:52 +1100 Subject: [PATCH] Translation Boot Menu --- game/gui/flag/Spain.png | Bin 0 -> 21731 bytes game/gui/flag/USofA.png | Bin 0 -> 10243 bytes game/gui/flag/placeholder_flag.png | Bin 0 -> 11154 bytes game/gui/flag/placeholder_flag2.png | Bin 0 -> 13195 bytes game/options.rpy | 1 + game/screens.rpy | 62 +- game/{bugout.rpy => src/splashscreen.rpy} | 23 +- game/src/translation.rpy | 198 +++++ game/tl/test/common.rpy | 984 ++++++++++++++++++++++ game/tl/test/options.rpy | 8 + 10 files changed, 1237 insertions(+), 39 deletions(-) create mode 100644 game/gui/flag/Spain.png create mode 100644 game/gui/flag/USofA.png create mode 100644 game/gui/flag/placeholder_flag.png create mode 100644 game/gui/flag/placeholder_flag2.png rename game/{bugout.rpy => src/splashscreen.rpy} (83%) create mode 100644 game/src/translation.rpy create mode 100644 game/tl/test/common.rpy create mode 100644 game/tl/test/options.rpy diff --git a/game/gui/flag/Spain.png b/game/gui/flag/Spain.png new file mode 100644 index 0000000000000000000000000000000000000000..e13a5a40dc61489c14d7d7dbb9bf1989a92db46a GIT binary patch literal 21731 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 literal 0 HcmV?d00001 diff --git a/game/gui/flag/placeholder_flag2.png b/game/gui/flag/placeholder_flag2.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee1372776c07cbe60093ee5a488aaec2ef64bab GIT binary patch literal 13195 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 literal 0 HcmV?d00001 diff --git a/game/options.rpy b/game/options.rpy index 49c87f4..4b2fae1 100644 --- a/game/options.rpy +++ b/game/options.rpy @@ -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 diff --git a/game/screens.rpy b/game/screens.rpy index 4b66660..0a42aec 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -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 diff --git a/game/bugout.rpy b/game/src/splashscreen.rpy similarity index 83% rename from game/bugout.rpy rename to game/src/splashscreen.rpy index 3b7f0ec..03da848 100644 --- a/game/bugout.rpy +++ b/game/src/splashscreen.rpy @@ -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 + diff --git a/game/src/translation.rpy b/game/src/translation.rpy new file mode 100644 index 0000000..43ce47f --- /dev/null +++ b/game/src/translation.rpy @@ -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) + diff --git a/game/tl/test/common.rpy b/game/tl/test/common.rpy new file mode 100644 index 0000000..938fa34 --- /dev/null +++ b/game/tl/test/common.rpy @@ -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." + diff --git a/game/tl/test/options.rpy b/game/tl/test/options.rpy new file mode 100644 index 0000000..e0feaac --- /dev/null +++ b/game/tl/test/options.rpy @@ -0,0 +1,8 @@ +# TODO: Translation updated at 2022-10-21 13:48 + +translate test strings: + + # game/options.rpy:15 + old "SnootGame" + new "SnootGame" +