cb28d2b611
uiselectsave is a Save/Load/Delete slot picker built on save/save.h's SAVE_SLOT_COUNT: a scrolling list of framed uisaveslot_t rows (slot number + file name, or an "Empty Slot" placeholder), navigated via the same uimenu_t/focus-stack convention as every other menu. Load and Delete modes add a trailing action row (switch to delete / cancel) fixed below the scrollable area. Selecting a slot in Delete mode routes through uiConfirmOpen before actually blanking the slot via saveSlotInit + saveDeviceSlotWrite. uiScrollingEnsureVisible in uiscrolling.c is now a real implementation instead of the earlier placeholder. Main menu collapses New Game/Load Game into a single Start Game entry that opens uiselectsave in Load mode; backing out reopens the main menu via uiselectsave's result callback. Also fixes a real reentrancy bug in uiFocusPop: it invoked the popped item's closed callback before decrementing UI_FOCUS.count, so a push triggered from within that callback (e.g. reopening the main menu once select-save reports no result) landed one slot past the true stack top and got silently dropped, stranding the new item outside navigation. Count is now decremented first. Adds a uikeyboard placeholder widget, registered in uielementlist with no behavior yet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
240 lines
5.4 KiB
Plaintext
240 lines
5.4 KiB
Plaintext
msgid ""
|
|
msgstr ""
|
|
"Project-Id-Version: ExampleApp 1.0\n"
|
|
"Language: en\n"
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : (n<7 ? 2 : 3));\n"
|
|
|
|
# Initial Scene
|
|
msgid "initial.checking_save.title"
|
|
msgstr "Checking for save data"
|
|
|
|
msgid "initial.checking_save.message"
|
|
msgstr "Please wait..."
|
|
|
|
msgid "initial.no_device.title"
|
|
msgstr "No Save Device Found"
|
|
|
|
msgid "initial.no_device.message"
|
|
msgstr "Could not find a save device, ensure it is connected and try again. You can continue, but progress will not be saved."
|
|
|
|
msgid "initial.no_device.retry"
|
|
msgstr "Try again"
|
|
|
|
msgid "initial.no_device.continue"
|
|
msgstr "Continue without saving"
|
|
|
|
|
|
# Main Menu Scene
|
|
msgid "main_menu.start_game"
|
|
msgstr "Start Game"
|
|
|
|
msgid "main_menu.options"
|
|
msgstr "Options"
|
|
|
|
msgid "main_menu.quit"
|
|
msgstr "Quit Game"
|
|
|
|
msgid "main_menu.quit_confirm"
|
|
msgstr "Are you sure you want to quit?"
|
|
|
|
|
|
# Select Save Screen
|
|
msgid "ui.select_save.title"
|
|
msgstr "Select Save"
|
|
|
|
msgid "ui.select_save.empty"
|
|
msgstr "Empty Slot"
|
|
|
|
msgid "ui.select_save.slot_format"
|
|
msgstr "%s Lv.%d %s"
|
|
|
|
msgid "ui.select_save.delete_mode"
|
|
msgstr "Delete a Save"
|
|
|
|
msgid "ui.select_save.delete_confirm"
|
|
msgstr "Are you sure you want to delete this save?"
|
|
|
|
msgid "ui.save_slot.number_format"
|
|
msgstr "Slot %d"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#: ui/menu.c:10
|
|
msgid "ui.title"
|
|
msgstr ""
|
|
"Welcome"
|
|
|
|
msgid "save.linux.mkdirp_failed"
|
|
msgstr "Failed to create save directory, check the disk is not full or write-protected."
|
|
|
|
#: src/dusk/ui/frame/settings/uisettings.c
|
|
msgid "ui.settings.tabs.general"
|
|
msgstr "General"
|
|
|
|
#: src/dusk/ui/frame/settings/uisettings.c
|
|
msgid "ui.settings.tabs.input"
|
|
msgstr "Input"
|
|
|
|
#: src/dusk/ui/frame/settings/uisettings.c
|
|
msgid "ui.settings.tabs.display"
|
|
msgstr "Display"
|
|
|
|
#: src/dusk/ui/frame/settings/uisettings.c
|
|
msgid "ui.settings.tabs.audio"
|
|
msgstr "Audio"
|
|
|
|
msgid "ui.settings.input.deadzone"
|
|
msgstr "Deadzone"
|
|
|
|
#: src/dusk/ui/frame/settings/uisettingsgeneral.c
|
|
msgid "ui.settings.general.language"
|
|
msgstr "Language"
|
|
|
|
msgid "ui.settings.general.language_detail"
|
|
msgstr "Takes effect after restarting the application."
|
|
|
|
#: src/dusk/ui/frame/settings/uisettings.c
|
|
msgid "ui.settings.apply"
|
|
msgstr "Apply"
|
|
|
|
#: src/dusk/ui/frame/uiconfirm.c
|
|
msgid "ui.confirm.discard_changes"
|
|
msgstr "Discard unsaved changes?"
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.characters"
|
|
msgstr "Characters"
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.items"
|
|
msgstr "Items"
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.settings"
|
|
msgstr "Settings"
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save"
|
|
msgstr "Save"
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save_success"
|
|
msgstr "Game saved."
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save_cancelled"
|
|
msgstr "Save cancelled."
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save_unavailable"
|
|
msgstr "Can't save - no save device found."
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save_temporary"
|
|
msgstr "This session is temporary - no save device was found, so saving is disabled."
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save_create_confirm"
|
|
msgstr "No save data found. Create a new save?"
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save_failed_format"
|
|
msgstr "Save failed: %s"
|
|
|
|
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
msgid "ui.game_menu.save_check_failed_format"
|
|
msgstr "Can't save: %s"
|
|
|
|
#: src/dusk/ui/frame/initial/uiinitialnocard.c
|
|
msgid "ui.initial.no_card.message"
|
|
msgstr "No save device found. You can continue, but\nprogress will not be saved."
|
|
|
|
#: src/dusk/ui/frame/initial/uiinitialnocard.c
|
|
msgid "ui.initial.no_card.retry"
|
|
msgstr "Retry"
|
|
|
|
#: src/dusk/ui/frame/initial/uiinitialnocard.c
|
|
msgid "ui.initial.no_card.continue"
|
|
msgstr "Continue Anyway"
|
|
|
|
#: src/dusk/ui/frame/initial/uiinitialcreatesave.c
|
|
msgid "ui.initial.create_save.message"
|
|
msgstr "No save data found. Create a new save?"
|
|
|
|
#: src/dusk/ui/frame/initial/uiinitialcreatesave.c
|
|
msgid "ui.initial.create_save.yes"
|
|
msgstr "Yes"
|
|
|
|
#: src/dusk/ui/frame/initial/uiinitialcreatesave.c
|
|
msgid "ui.initial.create_save.no"
|
|
msgstr "No"
|
|
|
|
#: src/dusk/ui/frame/uiconfirm.c
|
|
msgid "ui.confirm.confirm"
|
|
msgstr "Confirm"
|
|
|
|
#: src/dusk/ui/frame/uiconfirm.c
|
|
msgid "ui.confirm.cancel"
|
|
msgstr "Cancel"
|
|
|
|
#: src/dusk/ui/frame/battle/uibattlemenu.c
|
|
msgid "ui.battle.menu.attack"
|
|
msgstr "Attack"
|
|
|
|
#: src/dusk/ui/frame/battle/uibattlemenu.c
|
|
msgid "ui.battle.menu.flee"
|
|
msgstr "Flee"
|
|
|
|
#: src/dusk/ui/frame/battle/uibattlemenu.c
|
|
msgid "ui.battle.menu.target_format"
|
|
msgstr "Enemy %u (%u/%u HP)"
|
|
|
|
#: src/dusk/ui/frame/battle/uibattlehud.c
|
|
msgid "ui.battle.hud.hp_format"
|
|
msgstr "HP %u/%u"
|
|
|
|
#: src/dusk/ui/frame/battle/uibattlehud.c
|
|
msgid "ui.battle.hud.mp_format"
|
|
msgstr "MP %u/%u"
|
|
|
|
#: src/dusk/ui/frame/settings/uisettingsaudio.c
|
|
msgid "ui.settings.audio.placeholder"
|
|
msgstr "No audio settings yet"
|
|
|
|
#: src/dusk/ui/frame/settings/uisettingsdisplay.c
|
|
msgid "ui.settings.display.placeholder"
|
|
msgstr "No display settings yet"
|
|
|
|
#: src/dusk/ui/frame/settings/uisettingsinput.c
|
|
msgid "ui.settings.input.placeholder"
|
|
msgstr "No input settings yet"
|
|
|
|
#: src/dusk/ui/frame/backpack/uibackpack.c
|
|
msgid "ui.backpack.category_format"
|
|
msgstr "Category %u"
|
|
|
|
#: src/dusk/ui/overlay/uiloading.c
|
|
msgid "ui.loading.text"
|
|
msgstr "loading"
|
|
|
|
#: src/dusk/ui/overlay/uiautosave.c
|
|
msgid "ui.autosave.saving"
|
|
msgstr "SAVING"
|
|
|
|
msgid "item.potion.name"
|
|
msgstr "Potion"
|
|
|
|
msgid "item.potato.name"
|
|
msgstr "Potato"
|
|
|
|
msgid "item.apple.name"
|
|
msgstr "Apple" |