diff --git a/.gitignore b/.gitignore index 2f203cf95..71c2c75ed 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ desktop.ini # User additions /zzz_backup +/arm9/source/language.inl diff --git a/Makefile b/Makefile index 7ff49e5aa..a38055627 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,10 @@ ifeq ($(NTRBOOT),1) VRAM_SCRIPTS := resources/gm9/scripts endif +# Definitions for translation files +SOURCE_JSON := resources/languages/source.json +LANGUAGE_INL := arm9/source/language.inl + ifeq ($(OS),Windows_NT) ifeq ($(TERM),cygwin) PY3 := py -3 # Windows / CMD/PowerShell @@ -51,7 +55,7 @@ clean: @set -e; for elf in $(ELF); do \ $(MAKE) --no-print-directory -C $$(dirname $$elf) clean; \ done - @rm -rf $(OUTDIR) $(RELDIR) $(FIRM) $(FIRMD) $(VRAM_TAR) + @rm -rf $(OUTDIR) $(RELDIR) $(FIRM) $(FIRMD) $(VRAM_TAR) $(LANGUAGE_INL) unmarked_readme: .FORCE @$(PY3) utils/unmark.py -f README.md data/README_internal.md @@ -85,11 +89,15 @@ $(VRAM_TAR): $(SPLASH) $(OVERRIDE_FONT) $(VRAM_DATA) $(VRAM_SCRIPTS) @echo "Creating $@" @$(PY3) utils/add2tar.py $(VRAM_FLAGS) $(VRAM_TAR) $(shell find $^ -type f) +$(LANGUAGE_INL): $(SOURCE_JSON) + @echo "Creating $@" + @$(PY3) utils/transcp.py $< $@ + %.elf: .FORCE @echo "Building $@" @$(MAKE) --no-print-directory -C $(@D) -arm9/arm9.elf: $(VRAM_TAR) +arm9/arm9.elf: $(VRAM_TAR) $(LANGUAGE_INL) firm: $(ELF) @mkdir -p $(call dirname,"$(FIRM)") $(call dirname,"$(FIRMD)") diff --git a/arm9/source/language.inl b/arm9/source/language.inl deleted file mode 100644 index 547f10b2c..000000000 --- a/arm9/source/language.inl +++ /dev/null @@ -1,809 +0,0 @@ -// This is to be incremented every time the order changes -// New strings added to the end will not cause issues -#define TRANSLATION_VER 1 - -STRING(DATE_TIME_FORMAT, "%1$s%2$02lX-%3$02lX-%4$02lX %5$02lX:%6$02lX") -STRING(DECIMAL_SEPARATOR, ".") -STRING(THOUSAND_SEPARATOR, ",") -STRING(FIRM_TOO_BIG, "FIRM too big, can't boot") -STRING(PATH_DO_NOT_BOOT_UNTRUSTED, "%s (%dkB)\nWarning: Do not boot FIRMs\nfrom untrusted sources.\n \nBoot FIRM?") -STRING(NOT_BOOTABLE_FIRM, "Not a bootable FIRM.") -STRING(FIRM_ENCRYPTED, "FIRM is encrypted.\n \nDecrypt before boot?") -STRING(MAKE_COPY_AT_OUT_TEMP_FIRM, "Make a copy at %s/temp.firm") -STRING(TRY_BOOT_ANYWAYS, "Try to boot anyways") -STRING(WARNING_BOOT_UNSUPPORTED_LOCATION, "Warning: Trying to boot from an\nunsupported location.") -STRING(ROOT, "[root]") -STRING(LOADING, "LOADING...") -STRING(PANE_N, "PANE #%lu") -STRING(CURRENT, "CURRENT") -STRING(DIR, "(dir)") -STRING(SD_FAT, "(SD FAT)") -STRING(RAMDRIVE_FAT, "(RAMdrive FAT)") -STRING(GAME_VIRTUAL, "(Game Virtual)") -STRING(SYSNAND_FAT, "(SysNAND FAT)") -STRING(SYSNAND_VIRTUAL, "(SysNAND Virtual)") -STRING(EMUNAND_FAT, "(EmuNAND FAT)") -STRING(EMUNAND_VIRTUAL, "(EmuNAND Virtual)") -STRING(IMAGE_FAT, "(Image FAT)") -STRING(XORPAD_VIRTUAL, "(XORpad Virtual)") -STRING(MEMORY_VIRTUAL, "(Memory Virtual)") -STRING(ALIAS_FAT, "(Alias FAT)") -STRING(GAMECART_VIRTUAL, "(Gamecart Virtual)") -STRING(VRAM_VIRTUAL, "(VRAM Virtual)") -STRING(SEARCH, "(Search)") -STRING(TITLEMANAGER_VIRTUAL, "(TitleManager Virtual)") -STRING(LAB_SDCARD, "SDCARD") -STRING(LAB_SYSNAND_CTRNAND, "SYSNAND CTRNAND") -STRING(LAB_SYSNAND_TWLN, "SYSNAND TWLN") -STRING(LAB_SYSNAND_TWLP, "SYSNAND TWLP") -STRING(LAB_SYSNAND_SD, "SYSNAND SD") -STRING(LAB_SYSNAND_VIRTUAL, "SYSNAND VIRTUAL") -STRING(LAB_EMUNAND_CTRNAND, "EMUNAND CTRNAND") -STRING(LAB_EMUNAND_TWLN, "EMUNAND TWLN") -STRING(LAB_EMUNAND_TWLP, "EMUNAND TWLP") -STRING(LAB_EMUNAND_SD, "EMUNAND SD") -STRING(LAB_EMUNAND_VIRTUAL, "EMUNAND VIRTUAL") -STRING(LAB_IMGNAND_CTRNAND, "IMGNAND CTRNAND") -STRING(LAB_IMGNAND_TWLN, "IMGNAND TWLN") -STRING(LAB_IMGNAND_TWLP, "IMGNAND TWLP") -STRING(LAB_IMGNAND_VIRTUAL, "IMGNAND VIRTUAL") -STRING(LAB_GAMECART, "GAMECART") -STRING(LAB_GAME_IMAGE, "GAME IMAGE") -STRING(LAB_AESKEYDB_IMAGE, "AESKEYDB IMAGE") -STRING(LAB_BDRI_IMAGE, "BDRI IMAGE") -STRING(LAB_DISA_DIFF_IMAGE, "DISA/DIFF IMAGE") -STRING(LAB_MEMORY_VIRTUAL, "MEMORY VIRTUAL") -STRING(LAB_VRAM_VIRTUAL, "VRAM VIRTUAL") -STRING(LAB_TITLE_MANAGER, "TITLE MANAGER") -STRING(LAB_LAST_SEARCH, "LAST SEARCH") -STRING(LAB_FAT_IMAGE, "FAT IMAGE") -STRING(LAB_BONUS_DRIVE, "BONUS DRIVE") -STRING(LAB_RAMDRIVE, "RAMDRIVE") -STRING(LAB_NOLABEL, "NOLABEL") -STRING(N_BYTE, "%s Byte") -STRING(BYTE, " Byte") -STRING(KB, " kB") -STRING(MB, " MB") -STRING(GB, " GB") -STRING(CLIPBOARD, "[CLIPBOARD]") -STRING(PLUS_N_MORE, "+ %lu more") -STRING(MARK_DELETE_COPY, "L - MARK files (use with ↑↓→←)\nX - DELETE / [+R] RENAME file(s)\nY - COPY files / [+R] CREATE entry\n") -STRING(MARK_DELETE_PASTE, "L - MARK files (use with ↑↓→←)\nX - DELETE / [+R] RENAME file(s)\nY - PASTE files / [+R] CREATE entry\n") -STRING(RELOCK_WRITE_PERMISSION, "R+Y - Relock write permissions\n") -STRING(UNMOUNT_IMAGE, "R+X - Unmount image\n") -STRING(UNMOUNT_SD, "R+B - Unmount SD card\n") -STRING(REMOUNT_SD, "R+B - Remount SD card\n") -STRING(DIRECTORY_OPTIONS, "R+A - Directory options\n") -STRING(DRIVE_OPTIONS, "R+A - Drive options\n") -STRING(MAKE_SCREENSHOT, "R+L - Make a Screenshot\n") -STRING(PREV_NEXT_PANE, "R+←→ - Switch to prev/next pane\n") -STRING(CLEAR_CLIPBOARD, "SELECT - Clear Clipboard\n") -STRING(RESTORE_CLIPBOARD, "SELECT - Restore Clipboard\n") -STRING(REBOOT_POWEROFF_HOME, "START - Reboot / [+R] Poweroff\nHOME button for HOME menu") -STRING(NO_EMUNAND, "No EmuNAND") -STRING(REDNAND_SIZE_MIN, "RedNAND size (min)") -STRING(GW_EMUNAND_SIZE_FULL, "GW EmuNAND size (full)") -STRING(MULTINAND_SIZE_2X, "MultiNAND size (2x)") -STRING(MULTINAND_SIZE_3X, "MultiNAND size (3x)") -STRING(MULTINAND_SIZE_4X, "MultiNAND size (4x)") -STRING(USER_INPUT, "User input...") -STRING(AUTO, "Auto") -STRING(16KB_CLUSTERS, "16KB Clusters") -STRING(32KB_CLUSTERS, "32KB Clusters") -STRING(64KB_CLUSTERS, "64KB Clusters") -STRING(SD_NOT_DETECTED, "Error: SD card not detected.") -STRING(FORMAT_SD_CHOOSE_EMUNAND, "Format SD card (%lluMB)?\nChoose EmuNAND size:") -STRING(SD_SIZE_IS_ENTER_EMUNAND_SIZE, "SD card size is %lluMB.\nEnter EmuNAND size (MB) below:") -STRING(FORMAT_SD_CHOOSE_CLUSTER, "Format SD card (%lluMB)?\nChoose cluster size:") -STRING(FORMAT_SD_ENTER_LABEL, "Format SD card (%lluMB)?\nEnter label:") -STRING(FORMAT_SD_FAILED, "Format SD: failed!") -STRING(REDNAND_TYPE, "RedNAND type") -STRING(REDNAND_TYPE_MULTI, "RedNAND type (multi)") -STRING(REDNAND_TYPE_SINGLE, "RedNAND type (single)") -STRING(GW_EMUNAND_TYPE, "GW EmuNAND type") -STRING(DONT_SET_UP, "Don't set up") -STRING(CHOOSE_EMUNAND_TYPE, "Choose EmuNAND type to set up:") -STRING(CLONE_SYSNAND_TO_REDNAND, "Clone SysNAND to RedNAND?") -STRING(CLONING_SYSNAND_TO_EMUNAND_FAILED, "Cloning SysNAND to EmuNAND: failed!") -STRING(PRESS_A_TO_CONTINUE, "Press to continue") -STRING(HEXEDITOR_CONTROLS, "Hexeditor Controls:\n \n↑↓→←(+R) - Scroll\nR+Y - Switch view\nX - Search / goto...\nA - Enter edit mode\nA+↑↓→← - Edit value\nB - Exit\n") -STRING(NOT_FOUND, "Not found!") -STRING(GO_TO_OFFSET, "Go to offset") -STRING(SEARCH_FOR_STRING, "Search for string") -STRING(SEARCH_FOR_DATA, "Search for data") -STRING(CURRENT_OFFSET_SELECT_ACTION, "Current offset: %08lX\nSelect action:") -STRING(CURRENT_OFFSET_ENTER_NEW, "Current offset: %08lX\nEnter new offset below.") -STRING(ENTER_SEARCH_REPEAT_SEARCH, "Enter search string below.\n(R+X to repeat search)") -STRING(MADE_EDITS_SAVE_CHANGES, "You made edits in %lu place(s).\nWrite changes to file?") -STRING(FAILED_WRITING_TO_FILE, "Failed writing to file!") -STRING(CALCULATING_SHA_FAILED, "Calculating SHA-%s: failed!") -STRING(SHA_VERIFICATION_PASSED, "\nSHA verification: passed!") -STRING(SHA_VERIFICATION_FAILED, "\nSHA verification: failed") -STRING(IDENTICAL_WITH_PREVIOUS, "\n \nIdentical with previous file:\n") -STRING(WRITE_SHA_FILE, "\n \nWrite .SHA file?") -STRING(WRITE_SHA1_FILE, "\n \nWrite .SHA1 file?") -STRING(CALCULATING_CMAC_FAILED, "Calculating CMAC: failed!") -STRING(CMAC_VERIFICATION_PASSED, "CMAC verification: passed!") -STRING(CMAC_VERIFICATION_FAILED, "CMAC verification: failed!") -STRING(FIX_CMAC_IN_FILE, "\n \nFix CMAC in file?") -STRING(FIXING_CMAC_FAILED, "Fixing CMAC: failed!") -STRING(COPY_ALL_SELECTED_ITEMS, "Copy all %lu selected items?") -STRING(FAILED_COPYING_ITEM, "Failed copying item") -STRING(ITEMS_COPIED_TO_OUT, "%lu items copied to %s") -STRING(PATH_COPIED_TO_OUT, "%s\nCopied to %s") -STRING(CART_INIT_FAILED, "Cart init failed!") -STRING(CART_DETECTED_SIZE_INPUT_BELOW, "Cart: %s\nDetected size: %s\n \nInput dump size below.") -STRING(NDS_CART_DECRYPT_SECURE_AREA, "Cart: %s\nNDS cart detected\nDecrypt the secure area?") -STRING(FAILED_DUMPING_CART, "%s\nFailed dumping cart") -STRING(PATH_DUMPED_TO_OUT, "%s\nDumped to %s") -STRING(CREATED, "created") -STRING(MODIFIED, "modified") -STRING(ANALYZING_DRIVE, "Analyzing drive, please wait...") -STRING(ANALYZING_DIR, "Analyzing dir, please wait...") -STRING(N_FILES_N_SUBDIRS_TOTAL_SIZE_FREE_USED_TOTAL, "%lu files & %lu subdirs\n%s total size\n \nspace free: %s\nspace used: %s\nspace total: %s") -STRING(N_FILES_N_SUBDIRS_TOTAL_SIZE, "%lu files & %lu subdirs\n%s total size") -STRING(FILESIZE_X, "filesize: %s") -STRING(READONLY_HIDDEN_SYSTEM_ARCHIVE_VIRTUAL, " \n[%c] %sread-only [%c] %shidden\n[%c] %ssystem [%c] %sarchive\n[%c] %svirtual\n%s") -STRING(UDRL_CHANGE_ATTRIBUTES, " \n(↑↓→← to change attributes)\n") -STRING(A_TO_CONTINUE, "( to continue)") -STRING(A_APPLY_B_CANCEL, "( to apply, to cancel)") -STRING(A_YES_B_NO, "( yes, no)") -STRING(A_SELECT_B_CANCEL, "( select, cancel)") -STRING(HOLD_B_TO_CANCEL, "(hold B to cancel)") -STRING(FAILED_TO_SET_ATTRIBUTES, "Failed to set attributes!") -STRING(NAND_IMAGE_OPTIONS, "NAND image options...") -STRING(CTRNAND_OPTIONS, "CTRNAND options...") -STRING(MOUNT_FAT_IMAGE, "Mount as FAT image") -STRING(CIA_IMAGE_OPTIONS, "CIA image options...") -STRING(NCSD_IMAGE_OPTIONS, "NCSD image options...") -STRING(NCCH_IMAGE_OPTIONS, "NCCH image options...") -STRING(MOUNT_AS_EXEFS_IMAGE, "Mount as EXEFS image") -STRING(MOUNT_AS_ROMFS_IMAGE, "Mount as ROMFS image") -STRING(TMD_FILE_OPTIONS, "TMD file options...") -STRING(TMD_CDN_OPTIONS, "TMD/CDN options...") -STRING(TMD_TWL_OPTIONS, "TMD/TWL options...") -STRING(MANAGE_TITLE, "Manage Title...") -STRING(BOSS_FILE_OPTIONS, "BOSS file options...") -STRING(DECRYPT_NUS_CDN_FILE, "Decrypt NUS/CDN file") -STRING(SHOW_SMDH_TITLE_INFO, "Show SMDH title info") -STRING(NDS_IMAGE_OPTIONS, "NDS image options...") -STRING(GBA_IMAGE_OPTIONS, "GBA image options...") -STRING(TICKET_OPTIONS, "Ticket options...") -STRING(TAD_IMAGE_OPTIONS, "TAD image options...") -STRING(SHOW_3DSX_TITLE_INFO, "Show 3DSX title info") -STRING(FIRM_IMAGE_OPTIONS, "FIRM image options...") -STRING(AGBSAVE_OPTIONS, "AGBSAVE options...") -STRING(DUMP_GBA_VC_SAVE, "Dump GBA VC save") -STRING(TICKET_DB_OPTIONS, "Ticket.db options...") -STRING(MOUNT_AS_DIFF_IMAGE, "Mount as DIFF image") -STRING(MOUNT_AS_DISA_IAMGE, "Mount as DISA image") -STRING(INSTALL_CIFINISH_BIN, "Install cifinish.bin") -STRING(TITLEKEY_OPTIONS, "Titlekey options...") -STRING(AESKEYDB_OPTIONS, "AESkeydb options...") -STRING(BUILD_X, "Build %s") -STRING(NCCHINFO_OPTIONS, "NCCHinfo options...") -STRING(EXECUTE_GM9_SCRIPT, "Execute GM9 script") -STRING(FONT_OPTIONS, "Font options...") -STRING(LANGUAGE_OPTIONS, "Language options...") -STRING(VIEW_PNG_FILE, "View PNG file") -STRING(REBUILD_NCSD_HEADER, "Rebuild NCSD header") -STRING(SHOW_IN_HEXEDITOR, "Show in Hexeditor") -STRING(CALCULATE_SHA256, "Calculate SHA-256") -STRING(CALCULATE_SHA1, "Calculate SHA-1") -STRING(SHOW_FILE_INFO, "Show file info") -STRING(SHOW_IN_TEXTVIEWER, "Show in Textviewer") -STRING(CALCULATE_CMAC, "Calculate CMAC") -STRING(COPY_TO_OUT, "Copy to %s") -STRING(DUMP_TO_OUT, "Dump to %s") -STRING(INJECT_DATA_AT_OFFSET, "Inject data @offset") -STRING(OPEN_THIS_FOLDER, "Open this folder") -STRING(OPEN_CONTAINING_FOLDER, "Open containing folder") -STRING(OPEN_TITLE_FOLDER, "Open title folder") -STRING(PATH_N_FILES_SELECTED, "%s\n(%lu files selected)") -STRING(CHECK_CURRENT_CMAC_ONLY, "Check current CMAC only") -STRING(VERIFY_CMAC_FOR_ALL, "Verify CMAC for all") -STRING(FIX_CMAC_FOR_ALL, "Fix CMAC for all") -STRING(N_N_N_FILES_OK_FIXED_TOTAL_N_OF_N_HAVE_NO_CMAC, "%lu/%lu/%lu files ok/fixed/total\n%lu/%lu have no CMAC") -STRING(N_OF_N_FILES_VERIFIED_N_OF_N_FILES_FIXED, "%lu/%lu files verified ok\n%lu/%lu files fixed") -STRING(N_OF_N_FILES_VERIFIED_N_OF_N_HAVE_NO_CMAC, "%lu/%lu files verified ok\n%lu/%lu have no CMAC") -STRING(N_OF_N_FILES_VERIFIED, "%lu/%lu files verified ok") -STRING(INJECT_DATA_FROM_SPECIFY_OFFSET_BELOW, "Inject data from %s?\nSpecify offset below.") -STRING(FAILED_INJECTING_PATH, "Failed injecting %s") -STRING(MOUNT_CXI_NDS_TO_DRIVE, "Mount CXI/NDS to drive") -STRING(MOUNT_IMAGE_TO_DRIVE, "Mount image to drive") -STRING(RESTORE_SYSNAND_SAFE, "Restore SysNAND (safe)") -STRING(UPDATE_EMBEDDED_BACKUP, "Update embedded backup") -STRING(SHOW_TITLE_INFO, "Show title info") -STRING(DECRYPT_FILE, "Decrypt file (...)") -STRING(DECRYPT_FILE_OUT, "Decrypt file (%s)") -STRING(ENCRYPT_FILE, "Encrypt file (...)") -STRING(ENCRYPT_FILE_OUT, "Encrypt file (%s)") -STRING(BUILD_CIA_FROM_FILE, "Build CIA from file") -STRING(BUILD_CIA_STANDARD, "Build CIA (standard)") -STRING(BUILD_CIA_LEGIT, "Build CIA (legit)") -STRING(DUMP_CXI_NDS_FILE, "Dump CXI/NDS file") -STRING(INSTALL_GAME_IMAGE, "Install game image") -STRING(INSTALL_TICKET, "Install ticket") -STRING(DUMP_TICKET_FILE, "Dump ticket file") -STRING(UNINSTALL_TITLE, "Uninstall title") -STRING(VERIFY_FILE, "Verify file") -STRING(TRANSFER_IMAGE_TO_CTRNAND, "Transfer image to CTRNAND") -STRING(INJECT_TO_H_AND_S, "Inject to H&S") -STRING(TRIM_FILE, "Trim file") -STRING(RENAME_FILE, "Rename file") -STRING(BUILD_XORPADS_SD, "Build XORpads (SD output)") -STRING(BUILD_XORPADS_INPLACE, "Build XORpads (inplace)") -STRING(EXTRACT_X, "Extract %s") -STRING(INIT_X, "Init %s") -STRING(INSTALL_X, "Install %s") -STRING(INSTALL_FIRM, "Install FIRM") -STRING(BOOT_FIRM, "Boot FIRM") -STRING(SET_AS_ACTIVE_FONT, "Set as active font") -STRING(SET_AS_ACTIVE_LANGUAGE, "Set as active language") -STRING(DUMP_BA_VC_SAVE, "Dump GBA VC save") -STRING(INJECT_GBA_VC_SAVE, "Inject GBA VC save") -STRING(SET_AS_DEFAULT, "Set as default") -STRING(MOUNTING_IMAGE_FAILED, "Mounting image: failed") -STRING(PATH_MOUNTED_AS_DRIVE_ENTER_PATH_NOW, "%s\nMounted as drive %s\nEnter path now?") -STRING(DECRYPT_TO_OUT, "Decrypt to %s") -STRING(DECRYPT_INPLACE, "Decrypt inplace") -STRING(TRY_TO_DECRYPT_ALL_N_SELECTED_FILES, "Try to decrypt all %lu selected files?") -STRING(TRYING_TO_DECRYPT_N_FILES, "Trying to decrypt %lu files...") -STRING(DECRYPTION_FAILED_CONTINUE, "Decryption failed\n \nContinue?") -STRING(N_OF_N_FILES_DECRYPTED_N_OF_N_NOT_ENCRYPTED_N_OF_N_NOT_SAME_TYPE, "%lu/%lu files decrypted ok\n%lu/%lu not encrypted\n%lu/%lu not of same type") -STRING(N_OF_N_FILES_DECRYPTED, "%lu/%lu files decrypted ok") -STRING(N_FILES_WRITTEN_TO_OUT, "%lu files written to %s") -STRING(FILE_NOT_ENCRYPTED, "File is not encrypted") -STRING(DECRYPTION_SUCCESS, "Decryption success") -STRING(DECRYPTION_FAILED, "Decryption failed") -STRING(PATH_DECRYPTED_TO_OUT, "%s\nDecrypted to %s") -STRING(ENCRYPT_TO_OUT, "Encrypt to %s") -STRING(ENCRYPT_INPLACE, "Encrypt inplace") -STRING(TRY_TO_ENCRYPT_N_SELECTED_FILES, "Try to encrypt all %lu selected files?") -STRING(TRYING_TO_ENCRYPT_N_FILES, "Trying to encrypt %lu files...") -STRING(ENCRYPTION_FAILED_CONTINUE, "Encryption failed\n \nContinue?") -STRING(N_OF_N_FILES_ENCRYPTED_N_OF_N_NOT_SAME_TYPE, "%lu/%lu files encrypted ok\n%lu/%lu not of same type") -STRING(N_OF_N_FILES_ENCRYPTED, "%lu/%lu files encrypted ok") -STRING(ENCRYPTION_SUCCESS, "Encryption success") -STRING(ENCRYPTION_FAILED, "Encryption failed") -STRING(PATH_ENCRYPTED_TO_OUT, "%s\nEncrypted to %s") -STRING(TRY_TO_PROCESS_N_SELECTED_FILES, "Try to process all %lu selected files?") -STRING(PATH_BUILD_TYPE_FAILED_CONTINUE, "%s\nBuild %s failed\n \nContinue?") -STRING(N_OF_N_TYPES_BUILT_N_OF_N_NOT_SAME_TYPE, "%lu/%lu %ss built ok\n%lu/%lu not of same type") -STRING(N_OF_N_TYPES_BUILT, "%lu/%lu %ss built ok") -STRING(N_FILES_FAILED_CONVERTION_VERIFICATION_RECOMMENDED, "%lu file(s) failed conversion.\nVerification is recommended.") -STRING(PATH_TYPE_BUILT_TO_OUT, "%s\n%s built to %s") -STRING(PATH_TYPE_BUILD_FAILED, "%s\n%s build failed") -STRING(FILE_FAILED_CONVERSION_VERIFY_NOW, "file failed conversion.\n \nVerify now?") -STRING(VERIFICATION_SUCCESS, "Verification success") -STRING(VERIFICATION_FAILED, "Verification failed") -STRING(CONTENT_IS_MISSING, "Content is missing") -STRING(INSTALL_TO_SYSNAND, "Install to SysNAND") -STRING(INSTALL_TO_EMUNAND, "Install to EmuNAND") -STRING(TRY_TO_INSTALL_N_SELECTED_FILES, "Try to install all %lu selected files?") -STRING(TRYING_TO_INSTALL_N_FILES, "Trying to install %lu files...") -STRING(INSTALL_FAILED_CONTINUE, "Install failed\n \nContinue?") -STRING(N_OF_N_FILES_INSTALLED_N_OF_N_NOT_SAME_TYPE, "%lu/%lu files installed ok\n%lu/%lu not of same type") -STRING(N_OF_N_FILES_INSTALLED, "%lu/%lu files installed ok") -STRING(INSTALL_SUCCESS, "Install success") -STRING(INSTALL_FAILED, "Install failed") -STRING(FILE_FAILED_INSTALL_VERIFY_NOW, "file failed install.\n \nVerify now?") -STRING(KEEP_TICKET_AND_SAVEGAME, "Keep ticket & savegame") -STRING(UNINSTALL_EVERYTHING, "Uninstall everything") -STRING(ABORT_UNINSTALL, "Abort uninstall") -STRING(UNINSTALL_N_SELECTED_TITLES, "Uninstall %lu selected titles?") -STRING(UNINSTALL_SELECTED_TITLE, "Uninstall selected title?") -STRING(N_OF_N_TITLES_UNINSTALLED, "%lu/%lu titles uninstalled") -STRING(UNINSTALLING_PLEASE_WAIT, "Uninstalling, please wait...") -STRING(UNINSTALL_FAILED, "Uninstall failed!") -STRING(TRY_TO_VERIFY_N_SELECTED_FILES, "Try to verify all %lu selected files?") -STRING(VERIFICATION_FAILED_CONTINUE, "Verification failed\n \nContinue?") -STRING(N_OF_N_FILES_VERIFIED_N_OF_N_NOT_SAME_TYPE, "%lu/%lu files verified ok\n%lu/%lu not of same type") -STRING(VERIFYING_FILE_PLEASE_WAIT, "Verifying file, please wait...") -STRING(NAND_VALIDATION_SUCCESS, "NAND validation success") -STRING(NAND_VALIDATION_FAILED, "NAND validation failed") -STRING(DUMP_FOR_N_SELECTED_FILES, "Dump for all %lu selected files?") -STRING(N_OF_N_LEGIT_TICKETS_DUMPED_ATTEMPT_DUMP_ALL, "%lu/%lu legit tickets dumped.\n \nAttempt to dump all tickets?") -STRING(N_OF_N_TICKETS_DUMPED_TO_OUT, "%lu/%lu tickets dumped to %s") -STRING(PATH_TICKET_DUMPED_TO_OUT, "%s\nTicket dumped to %s") -STRING(LEGIT_TICKET_NOT_FOUND_DUMP_ANYWAYS, "%s\nLegit ticket not found.\n \nDump anyways?") -STRING(DUMP_TICKET_FAILED, "Dump ticket failed!") -STRING(BUILDING_X, "Building %s...") -STRING(BUILDING_X_SYSNAND, "Building %s (SysNAND)...") -STRING(BUILDING_X_EMUNAND, "Building %s (EmuNAND)...") -STRING(PATH_N_OF_N_FILES_PROCESSED_N_OF_N_FILES_IGNORED, "%s\n%lu/%lu files processed\n%lu/%lu files ignored") -STRING(PATH_N_OF_N_FILES_PROCESSED, "%s\n%lu/%lu files processed") -STRING(BUILD_DATABASE_SUCCESS, "Build database success.") -STRING(BUILD_DATABASE_FAILED, "Build database failed.") -STRING(TRY_TO_TRIM_N_SELECTED_FILES, "Try to trim all %lu selected files?") -STRING(TRIMMING_FAILED_CONTINUE, "Trimming failed\n \nContinue?") -STRING(N_OF_N_FILES_TRIMMED_N_OF_N_NOT_OF_SAME_TYPE_X_SAVED, "%lu/%lu files trimmed ok\n%lu/%lu not of same type\n%s saved") -STRING(N_OF_N_FILES_TRIMMED_X_SAVED, "%lu/%lu files trimmed ok\n%s saved") -STRING(FILE_CANT_BE_TRIMMED, "File can't be trimmed.") -STRING(FILE_ALREADY_TRIMMED, "File is already trimmed.") -STRING(PATH_CURRENT_SIZE_TRIMMED_SIZE_DIFFERENCE_TRIM_FILE, "%s\nCurrent size: %s\nTrimmed size: %s\nDifference: %s\n \nTrim this file?") -STRING(TRIMMING_FAILED, "Trimming failed.") -STRING(PATH_TRIMMED_BY_X, "%s\nTrimmed by %s.") -STRING(TRY_TO_RENAME_N_SELECTED_FILES, "Try to rename all %lu selected files?") -STRING(N_OF_N_RENAMED, "%lu/%lu renamed ok") -STRING(COULD_NOT_RENAME_TO_GOOD_NAME, "Could not rename to good name") -STRING(SYSNAND_H_AND_S_INJECT, "SysNAND H&S inject") -STRING(EMUNAND_H_AND_S_INJECT, "EmuNAND H&S inject") -STRING(H_AND_S_INJECT_SUCCESS, "H&S inject success") -STRING(H_AND_S_INJECT_FAILURE, "H&S inject failure") -STRING(TRY_EXTRACT_ALL_N_SELECTED_FILES, "Try to extract all %lu selected files?") -STRING(N_OF_N_FILES_EXTRACTED_N_OF_N_NOT_SAME_TYPE, "%lu/%lu files extracted ok\n%lu/%lu not of same type") -STRING(N_OF_N_FILES_EXTRACTED, "%lu/%lu files extracted ok") -STRING(EXTRACTING_DOT_CODE, "Extracting .code, please wait...") -STRING(PATH_EXT_EXTRACTED_TO_OUT, "%s\n%s extracted to %s") -STRING(DOT_CODE_EXTRACT_FAILED, ".code extract failed") -STRING(TRANSFER_TO_SYSNAND, "Transfer to SysNAND") -STRING(TRANSFER_TO_EMUNAND, "Transfer to EmuNAND") -STRING(CTRNAND_TRANSFER_SUCCESS, "CTRNAND transfer success") -STRING(CTRNAND_TRANSFER_FAILED, "CTRNAND transfer failed") -STRING(NO_VALID_DESTINATION_FOUND, "No valid destination found") -STRING(NAND_RESTORE_SUCCESS, "NAND restore success") -STRING(NAND_RESTORE_FAILED, "NAND restore failed") -STRING(REBUILD_NCSD_SUCCESS, "Rebuild NCSD success") -STRING(REBUILD_NCSD_FAILED, "Rebuild NCSD failed") -STRING(PATH_NCCHINFO_PADGEN_SUCCESS, "%s\nNCCHinfo padgen success%cOutput dir: %s") -STRING(PATH_NCCHINFO_PADGEN_FAILED, "%s\nNCCHinfo padgen failed%c%0.0s") -STRING(UPDATING_EMBEDDED_BACKUP, "Updating embedded backup...") -STRING(BACKUP_UPDATE_NOT_REQUIRED, "Backup update: not required") -STRING(BACKUP_UPDATE_COMPLETED, "Backup update: completed") -STRING(BACKUP_UPDATE_FAILED, "Backup update: failed!") -STRING(WARNING_KEYS_NOT_VERIFIED_CONTINUE_AT_YOUR_OWN_RISK, "Warning: Keys are not verified.\nContinue on your own risk?") -STRING(AESKEYDB_INIT_SUCCESS, "AESkeydb init success") -STRING(AESKEYDB_INIT_FAILED, "AESkeydb init failed") -STRING(AESKEYDB_INSTALL_SUCCESS, "AESkeydb install success") -STRING(AESKEYDB_INSTALL_FAILED, "AESkeydb install failed") -STRING(INSTALL_TO_FIRM0, "Install to FIRM0") -STRING(INSTALL_TO_FIRM1, "Install to FIRM1") -STRING(INSTALL_TO_BOTH, "Install to both") -STRING(PATH_N_KB_INSTALL_TO_SYSNAND, "%s (%dkB)\nInstall to SysNAND?") -STRING(PATH_N_KB_INSTALL_SUCCESS, "%s (%dkB)\nInstall success") -STRING(PATH_N_KB_INSTALL_FAILED, "%s (%dkB)\nInstall failed") -STRING(WARNING_DO_NOT_RUN_UNTRUSTED_SCRIPTS, "Warning: Do not run scripts\nfrom untrusted sources.\n \nExecute script?") -STRING(SCRIPT_EXECUTE_SUCCESS, "Script execute success") -STRING(SCRIPT_EXECUTE_FAILURE, "Script execute failure") -STRING(ERROR_CANNOT_VIEW_FILE, "Error: Cannot view file\n(Hint: maybe it's too big)") -STRING(SAVEGAME_DUMPED_TO_OUT, "Savegame dumped to %s.") -STRING(SAVEGAME_DUMP_FAILED, "Savegame dump failed!") -STRING(GBA_SAVEGAME_MUST_BE_IN_CLIPBOARD, "GBA VC savegame has to\nbe in the clipboard.") -STRING(SAVEGAME_INJECT_SUCCESS, "Savegame inject success.") -STRING(SAVEGAME_INJECT_FAILED, "Savegame inject failed!") -STRING(FONT_WILL_BE_ACTIVE_ON_NEXT_BOOT, "Font will be active on next boot") -STRING(LANGUAGE_WILL_BE_ACTIVE_ON_NEXT_BOOT, "Language will be active on next boot") -STRING(HOME_MORE_MENU_SELECT_ACTION, "HOME more... menu.\nSelect action:") -STRING(SD_FORMAT_MENU, "SD format menu") -STRING(BONUS_DRIVE_MENU, "Bonus drive setup") -STRING(SWITCH_EMUNAND, "Switch EmuNAND") -STRING(BUILD_SUPPORT_FILES, "Build support files") -STRING(RESTORE_H_AND_S, "Restore H&S") -STRING(SET_RTC_DATE_TIME, "Set RTC date&time") -STRING(CONFGURE_BRIGHTNESS, "Configure brightness") -STRING(CALIBRATE_TOUCHSCREEN, "Calibrate touchscreen") -STRING(SYSTEM_INFO, "System info") -STRING(SHOW_README, "Show ReadMe") -STRING(INITIALIZING_SD_FAILED_RETRY, "Initializing SD card failed! Retry?") -STRING(SETUP_FAILED, "Setup failed!") -STRING(CURRENT_EMUNAND_OFFSET_IS_N_SWITCH_TO_NEXT, "Current EmuNAND offset is %06lX.\nSwitch to next offset?") -STRING(BUILT_IN_OUT_STATUSES, "Built in %s:\n \n%-18.18s %s\n%-18.18s %s\n%-18.18s %s") -STRING(OK_SYS_EMU, "OK (Sys&Emu)") -STRING(OK_SYS, "OK (Sys)") -STRING(FAILED, "Failed") -STRING(RESTORE_H_AND_S_EMUNAND, "Restore H&S (EmuNAND)") -STRING(RESTORE_H_AND_S_SYSNAND, "Restore H&S (SysNAND)") -STRING(TITLE_SET_RTC_DATE_TIME, "Set RTC date&time:") -STRING(NEW_RTC_DATE_TIME_IS_TIME, "New RTC date&time is:\n%s\n \nHint: HOMEMENU time needs\nmanual adjustment after\nsetting the RTC.") -STRING(TOUCHSCREEN_CALIBRATION_SUCCESS, "Touchscreen calibration success!") -STRING(TOUCHSCREEN_CALIBRATION_FAILED, "Touchscreen calibration failed!") -STRING(GODMODE9_README_TOC, "GodMode9 ReadMe Table of Contents") -STRING(ESSENTIAL_BACKUP_NOT_FOUND_CREATE_NOW, "Essential files backup not found.\nCreate one now?") -STRING(BACKUP_EMBEDDED_WRITTEN_TO_OUT, "Backup embedded in SysNAND\nand written to %s.") -STRING(RTC_DATE_TIME_SEEMS_TO_BE_WRONG_SET_NOW, "RTC date&time seems to be\nwrong. Set it now?") -STRING(RESUME_GODMODE9, "Resume GodMode9") -STRING(RESUME_BOOTLOADER, "Resume bootloader") -STRING(SELECT_PAYLOAD, "Select payload...") -STRING(SELECT_SCRIPT, "Select script...") -STRING(POWEROFF_SYSTEM, "Poweroff system") -STRING(REBOOT_SYSTEM, "Reboot system") -STRING(FLAVOR_BOOTLOADER_SELECT_OPTION, "%s bootloader menu.\nSelect action:") -STRING(BOOTLOADER_PAYLOADS_MENU_SELECT_PAYLOAD, "Bootloader payloads menu.\nSelect payload:") -STRING(BOOTLOADER_SCRIPTS_MENU_SELECT_SCRIPT, "Bootloader scripts menu.\nSelect script:") -STRING(NO_BOOTABLE_FIRM_FOUND_RESUMING_GODMODE9, "No bootable FIRM found.\nNow resuming GodMode9...") -STRING(OUT_OF_MEMORY, "Out of memory.") -STRING(INVALID_DIRECTORY_OBJECT, "Invalid directory object") -STRING(INVALID_ROOT_DIRECTORY, "Invalid root directory.") -STRING(WRITE_PERMISSIONS_WERE_CHANGED_RELOCK, "Write permissions were changed.\nRelock them?") -STRING(OPEN_TITLE_MANAGER, "Open title manager") -STRING(SEARCH_FOR_FILES, "Search for files...") -STRING(FIX_CMACS_FOR_DRIVE, "Fix CMACs for drive") -STRING(SHOW_DIRECTORY_INFO, "Show directory info") -STRING(SHOW_DRIVE_INFO, "Show drive info") -STRING(FAILED_SETTING_UP_TITLE_MANAGER, "Failed setting up title manager!") -STRING(SEARCH_FILE_ENTER_SEARCH_BELOW, "Search %s?\nEnter search below.") -STRING(FOUND_N_RESULTS, "Found %lu results.") -STRING(FIX_CMACS_FOR_DRIVE_FINISHED, "Fix CMACs for drive finished.") -STRING(FAILED_TO_ANALYZE_DRIVE, "Failed to analyze drive\n") -STRING(FAILED_TO_ANALYZE_DIR, "Failed to analyze dir\n") -STRING(NOT_ALLOWED_IN_VIRTUAL_PATH, "Not allowed in virtual path") -STRING(DELETE_N_PATHS, "Delete %lu path(s)?") -STRING(DELETING_FILES_PLEASE_WAIT, "Deleting files, please wait...") -STRING(FAILED_DELETING_N_OF_N_PATHS, "Failed deleting %lu/%lu path(s)") -STRING(DELETE_FILE, "Delete \"%s\"?") -STRING(FAILED_DELETING_PATH, "Failed deleting:\n%s") -STRING(NOT_ALLOWED_IN_SEARCH_DRIVE, "Not allowed in search drive") -STRING(NOT_ALLOWED_IN_VIRTUAL_GAME_PATH, "Not allowed in virtual game path") -STRING(NOT_ALLOWED_IN_XORPAD_DRIVE, "Not allowed in XORpad drive") -STRING(NOT_ALLOWED_IN_GAMECART_DRIVE, "Not allowed in gamecart drive") -STRING(NOT_ALLOWED_IN_ALIAS_PATH, "Not allowed in alias path") -STRING(COPY_PATHS, "Copy path(s)") -STRING(MOVE_PATHS, "Move path(s)") -STRING(PASTE_FILE_HERE, "Paste \"%s\" here?") -STRING(PASTE_N_PATHS_HERE, "Paste %lu paths here?") -STRING(FAILED_COPYING_PATH_PROCESS_REMAINING, "Failed copying path:\n%s\nProcess remaining?") -STRING(FAILED_COPYING_PATH, "Failed copying path:\n%s") -STRING(FAILED_MOVING_PATH_PROCESS_REMAINING, "Failed moving path:\n%s\nProcess remaining?") -STRING(FAILED_MOVING_PATH, "Failed moving path:\n%s") -STRING(RENAME_FILE_ENTER_NEW_NAME_BELOW, "Rename %s?\nEnter new name below.") -STRING(FAILED_RENAMING_PATH, "Failed renaming path:\n%s") -STRING(CREATE_A_NEW_ENTRY_HERE_SELECT_TYPE, "Create a new entry here?\nSelect type.") -STRING(CREATE_A_FOLDER, "Create a folder") -STRING(CREATE_A_DUMMY_FILE, "Create a dummy file") -STRING(CREATE_NEW_FOLDER_HERE_ENTER_NAME_BELOW, "Create a new folder here?\nEnter name below.") -STRING(CREATE_NEW_FILE_HERE_ENTER_NAME_BELOW, "Create a new file here?\nEnter name below.") -STRING(CREATE_NEW_FILE_HERE_ENTER_SIZE_BELOW, "Create a new %s here?\nEnter file size below.") -STRING(FAILED_CREATING_FOLDER_PATH, "Failed creating folder:\n%s") -STRING(FAILED_CREATING_FILE_PATH, "Failed creating file:\n%s") -STRING(TITLE_MANAGER, "Title manager") -STRING(BRICK_MY_3DS, "Brick my 3DS") -STRING(LANGUAGE, "Language...") -STRING(SCRIPTS, "Scripts...") -STRING(PAYLOADS, "Payloads...") -STRING(MORE, "More...") -STRING(BRACKET_MORE, "[more...]") -STRING(HOME_BUTTON_PRESSED_SELECT_ACTION, "HOME button pressed.\nSelect action:") -STRING(POWER_BUTTON_PRESSED_SELECT_ACTION, "POWER button pressed.\nSelect action:") -STRING(1_DRIVE_NAND_TWL, "[1:] NAND / TWL") -STRING(4_DRIVE_NAND_TWL, "[4:] NAND / TWL") -STRING(A_DRIVE_SD_CARD, "[A:] SD CARD") -STRING(B_DRIVE_SD_CARD, "[B:] SD CARD") -STRING(TITLE_MANAGER_MENU_SELECT_TITLES_SOURCE, "Title manager menu.\nSelect titles source:") -STRING(LANGUAGES_DIRECTORY_NOT_FOUND, "Languages directory not found.\n(default path: 0:/gm9/%s)") -STRING(SCRIPTS_DIRECTORY_NOT_FOUND, "Scripts directory not found.\n(default path: 0:/gm9/%s)") -STRING(HOME_LANGUAGE_MENU_SELECT_LANGUAGE, "HOME language... menu.\nSelect language:") -STRING(HOME_SCRIPTS_MENU_SELECT_SCRIPT, "HOME scripts... menu.\nSelect script:") -STRING(PAYLOADS_DIRECTORY_NOT_FOUND, "Payloads directory not found.\n(default path: 0:/gm9/%s)") -STRING(HOME_PAYLOADS_MENU_SELECT_PAYLOAD, "HOME payloads... menu.\nSelect payload:") -STRING(UNEXPECTED_SD_CARD_REMOVAL_TO_PREVENT_DATA_LOSS_UNMOUNT_BEFORE_EJECT, "!Unexpected SD card removal!\n \nTo prevent data loss, unmount\nbefore ejecting the SD card.") -STRING(FLAVOR_SCRIPTS_MENU_SELECT_SCRIPT, "%s scripts menu.\nSelect script:") -STRING(COMPILED_AS_SCRIPT_AUTORUNNER_BUT_NO_SCRIPT_DERP, "Compiled as script autorunner\nbut no script provided.\n \nDerp!") -STRING(KEYBOARD_CONTROLS_DETAILS, "Keyboard Controls:\n \n←/→ - Move cursor\nR - Caps / Capslock\nX - Delete char\nY - Insert char\nA - Submit\nB - Cancel\n \nSELECT switches to\nclassic prompt") -STRING(TOUCH_CROSSHAIRS_TO_CALIBRATE_TOUCHSCREEN_USE_STYLUS, "Touch the red crosshairs to\ncalibrate your touchscreen.\n \nUse the stylus for best\nresults!") -STRING(INVALID, "INVALID") -STRING(TO_PROCEED_ENTER_THIS, "To proceed, enter this:") -STRING(TO_PROCEED_HOLD_X, "To proceed, hold :") -STRING(N_MORE, " [%d more]") -STRING(CANCEL, "cancel") -STRING(R_FAST_SCROLL_L_CLEAR_DATA, "R - (↑↓) fast scroll\nL - clear data") -STRING(X_REMOVE_CHAR_Y_INSERT_CHAR, "X - remove char\nY - insert char") -STRING(ETA_N_MIN_N_SEC, "ETA %02llum%02llus") -STRING(BRIGHTNESS_CONTROLS, "[←] Decrease brightness\n[→] Increase brightness\n \n[X] Use volume slider control\n[A] Set current brightness\n[B] Cancel") -STRING(SEARCHING_PLEASE_WAIT, "Searching, please wait...") -STRING(RENAME_TO_GOOD_NAME, "Rename to good name?") -STRING(SD_WRITE_PROTECTED_CANT_CONTINUE, "SD card is write protected!\nCan't continue.") -STRING(SYSNAND_LVL_N, "SysNAND (lvl%lu)") -STRING(EMUNAND_LVL_N, "EmuNAND (lvl%lu)") -STRING(GAME_IMAGES, "game images") -STRING(GAMECART_SAVES, "gamecart saves") -STRING(IMAGES, "images") -STRING(MEMORY_AREAS, "memory areas") -STRING(SD_SYSTEM_DATA, "SD system data") -STRING(SD_CARD, "SD card") -STRING(RAM_DRIVE, "RAM drive") -STRING(WRITING_TO_DRIVE_IS_LOCKED_UNLOCK_NOW, "Writing to %s is locked!\nUnlock it now?") -STRING(UNLOCK_WRITE_FOR_DRIVE_NOT_ALLOWED, "Unlock write permission for\n%s is not allowed.") -STRING(ENABLE_BASE_WRITE, "You want to enable base\nwriting permissions.") -STRING(ENABLE_SD_WRITE, "You want to enable SD card\nwriting permissions.") -STRING(ENABLE_IMAGE_WRITE, "You want to enable image\nwriting permissions.") -STRING(ENABLE_RAM_DRIVE_WRITE, "You want to enable RAM drive\nwriting permissions.") -STRING(ENABLE_EMUNAND_0_WRITE, "You want to enable EmuNAND\nlvl0 writing permissions.") -STRING(ENABLE_SYSNAND_0_WRITE, "You want to enable SysNAND\nlvl0 writing permissions.") -STRING(ENABLE_EMUNAND_1_WRITE, "You want to enable EmuNAND\nlvl1 writing permissions.\n \nThis enables you to modify\nrecoverable system data,\nuser data & savegames.") -STRING(ENABLE_SYSNAND_1_WRITE, "You want to enable SysNAND\nlvl1 writing permissions.\n \nThis enables you to modify\nsystem data, installations,\nuser data & savegames.") -STRING(ENABLE_GAMECART_SAVE_WRITE, "You want to enable gamecart\nsave writing permissions.") -STRING(ENABLE_SYSNAND_2_WRITE, "!Better be careful!\n \nYou want to enable SysNAND\nlvl2 writing permissions.\n \nThis enables you to modify\nirrecoverable system data!") -STRING(ENABLE_MEMORY_WRITE, "!Better be careful!\n \nYou want to enable memory\nwriting permissions.\n \nWriting to certain areas may\nlead to unexpected results.") -STRING(ENABLE_SD_DATA_WRITE, "!THIS IS NOT RECOMMENDED!\n \nYou want to enable SD data\nwriting permissions.\n \nEverything here is encrypted.\nIt is recommended to use the\nA:/B: drives for modification\nof installations, user data &\nsavegames instead.") -STRING(ENABLE_SYSNAND_3_WRITE, "!THIS IS YOUR ONLY WARNING!\n \nYou want to enable SysNAND\nlvl3 writing permissions.\n \nThis enables you to OVERWRITE\nyour bootloader installation,\nessential system files and/or\nBRICK your console!") -STRING(UNLOCK_WRITE_NOT_ALLOWED, "Unlock write permission is not allowed.") -STRING(CANT_UNLOCK_WRITE_TRY_GODMODE9, "Can't unlock write permission.\nTry GodMode9 instead!") -STRING(ERROR_SD_TOO_SMALL, "Error: SD card is too small") -STRING(WARNING_PROCEEDING_WILL_FORMAT_SD_DELETE_ALL_DATA, "!WARNING!\n \nProceeding will format this SD.\nThis will irreversibly delete\nALL data on it.") -STRING(FORMAT_BONUS_DRIVE_DELETE_ALL_DATA, "Format the bonus drive?\nThis will irreversibly delete\nALL data on it.") -STRING(FORMATTING_SD_PLEASE_WAIT, "Formatting SD, please wait...") -STRING(FORMATTING_DRIVE_PLEASE_WAIT, "Formatting drive, please wait...") -STRING(ERROR_SD_CARD_IO_FAILURE, "Error: SD card i/o failure") -STRING(FILE_IS_MOUNTED_UNMOUNT_TO_UNLOCK, "File is currently mounted.\nUnmount to unlock?") -STRING(ERROR_CANT_INJECT_FILE_INTO_ITSELF, "Error: Can't inject file into itself") -STRING(OPERATION_WOULD_WRITE_BEYOND_EOF, "Operation would write beyond end of file") -STRING(NOT_ENOUGH_DATA_IN_FILE, "Not enough data in file") -STRING(CANCEL_IS_NOT_ALLOWED_HERE, "Cancel is not allowed here") -STRING(B_DETECTED_CANCEL, "B button detected. Cancel?") -STRING(ERROR_CANNOT_APPEND_FOLDER, "Error: Cannot append a folder") -STRING(ERROR_OVERWRITING_FILE_WITH_DIR, "Error: Overwriting file with dir") -STRING(ERROR_OVERWRITING_DIR_WITH_FILE, "Error: Overwriting dir with file") -STRING(ERROR_CANNOT_OPEN_DESTINATION_FILE, "Error: Cannot open destination file") -STRING(ERROR_NOT_ENOUGH_SPACE_AVAILABLE, "Error: Not enough space available") -STRING(ERROR_ONLY_FAT_FILES_CAN_BE_MOVED, "Error: Only FAT files can be moved") -STRING(ERROR_DESTINATION_IS_PART_OF_ORIGIN, "Error: Destination is part of origin") -STRING(ERROR_DESTINATION_EQUALS_ORIGIN_CHOOSE_ANOTHER_NAME, "Destination equals origin\nChoose another name?") -STRING(CHOOSE_NEW_NAME, "Choose new name") -STRING(OVERWRITE_FILES, "Overwrite file(s)") -STRING(SKIP_FILES, "Skip file(s)") -STRING(OVERWRITE_ALL, "Overwrite all") -STRING(SKIP_ALL, "Skip all") -STRING(DESTINATION_ALREADY_EXISTS, "Destination already exists:\n%s") -STRING(CHOOSE_NEW_DESTINATION_NAME, "Choose new destination name") -STRING(COPY_OPERATION_IS_NOT_ALLOWED, "Copy operation is not allowed") -STRING(DESTINATION_EQUALS_ORIGIN, "Destination equals origin") -STRING(ENTRY_NOT_FOUND_PATH_INJECT_INTO_PATH_INSTEAD, "Entry not found: %s\nInject into %s instead?") -STRING(FILE_SMALLER_THAN_SPACE_SIZES_CONTINUE, "File smaller than available space:\n%s (%s)\n%s (%s)\nContinue?") -STRING(NO_USABLE_ENTRIES_FOUND, "No usable entries found.") -STRING(BEAT_NO_ERROR, "No error") -STRING(BEAT_END_OF_ACTION_LIST, "End of action list") -STRING(BEAT_ABORTED_BY_USER, "Aborted by user") -STRING(BEAT_FAILED_TO_READ_WRITE_FILE, "Failed to read/write file") -STRING(BEAT_ATTEMPTED_TO_WRITE_BEYOND_EOF, "Attempted to write beyond end of file") -STRING(BEAT_INVALID_PATCH_FILE, "Invalid patch file") -STRING(BEAT_INVALID_INPUT_FILE, "Invalid input file") -STRING(BEAT_OUTPUT_FILE_CHECKSUM_MISMATCH, "Output file checksum mismatch") -STRING(BEAT_FILE_CHECKSUM_FAILED, "File checksum failed") -STRING(BEAT_EXPECTED_MORE_PATCH_DATA, "Expected more patch data") -STRING(BEAT_OUT_OF_MEMORY, "Out of memory") -STRING(BEAT_UNKNOWN_ERROR, "Unknown error") -STRING(FAILED_TO_INITIALIZE_BPM_FILE, "Failed to initialize BPM file:\n%s") -STRING(FAILED_TO_INITIALIZE_BPS_FILE, "Failed to initialize BPS file:\n%s") -STRING(PATCH_SUCCESSFULLY_APPLIED, "Patch successfully applied") -STRING(PATCHING_ABORTED_BY_USER, "Patching aborted by user") -STRING(FAILED_TO_RUN_PATCH, "Failed to run patch:\n%s") -STRING(DECOMPRESSING_DOT_CODE, "Decompressing .code...") -STRING(DECOMPRESSING_DOT_CODE_B_DETECTED_CANCEL, "Decompressing .code...\nB button detected. Cancel?") -STRING(COMPRESSING_DOT_CODE, "Compressing .code...") -STRING(COMPRESSING_DOT_CODE_B_DETECTED_CANCEL, "Compressing .code...\nB button detected. Cancel?") -STRING(PATCH_MOST_LIKELY_NOT_FOR_THIS_FILE, "The patch is most likely not intended for this file.") -STRING(YOU_MOST_LIKELY_APPLIED_PATCH_ON_OUTPUT, "You most likely applied the patch on the output file.") -STRING(PATCH_TECHNICALLY_VALID_BUT_SEEMS_SCRAMBLED, "The patch is technically valid,\nbut seems scrambled or malformed.") -STRING(PATCH_IS_INVALID, "The patch is invalid.") -STRING(FILES_BIGGER_THAN_16MB_IPS_DOESNT_SUPPORT_THAT, "One or both files are bigger than 16MB.\nThe IPS format doesn't support that.") -STRING(REQUESTED_FILE_PATH_WAS_INVALID, "The requested file path was invalid.") -STRING(PATCHING_CANCELED, "Patching canceled.") -STRING(NOT_ENOUGH_MEMORY, "Not enough memory.") -STRING(REGION_AMERICAS, "Americas") -STRING(REGION_AUSTRALIA, "Australia") -STRING(REGION_BRAZIL, "Brazil") -STRING(REGION_CHINA, "China") -STRING(REGION_EUROPE, "Europe") -STRING(REGION_FRANCE, "France") -STRING(REGION_GERMANY, "Germany") -STRING(REGION_ITALY, "Italy") -STRING(REGION_JAPAN, "Japan") -STRING(REGION_KOREA, "Korea") -STRING(REGION_SPAIN, "Spain") -STRING(REGION_TAIWAN, "Taiwan") -STRING(REGION_UNKNOWN, "Unknown") -STRING(REGION_UNITED_KINGDOM, "United Kingdom") -STRING(REGION_MIDDLE_EAST, "Middle East") -STRING(GENERATING_QR_CODE, "Generating QR code...") -STRING(REINITIALIZING_SD_CARD, "Reinitializing SD card...") -STRING(DUMPING_STATE_TO_SD_CARD, "Dumping state to SD card...") -STRING(PRESS_POWER_TO_TURN_OFF, "Press POWER to turn off") -STRING(CLEANING_UP_TITLES_PLEASE_WAIT, "Cleaning up titles, please wait...") -STRING(ERROR_NOT_NCCH_FILE, "Error: Not an NCCH file") -STRING(ERROR_FILE_IS_TOO_SMALL, "Error: File is too small") -STRING(ATTEMPT_FIX_THIS_TIME, "Attempt fix this time") -STRING(ATTEMPT_FIX_ALWAYS, "Attempt fix always") -STRING(ABORT_VERIFICATION, "Abort verification") -STRING(ERROR_BAD_CRYPTO_FLAGS, "Error: Bad crypto flags") -STRING(ERROR_BAD_EXEFS_HEADER, "Error: Bad ExeFS header") -STRING(ERROR_MISSING_EXTHEADER, "Error: Missing ExtHeader") -STRING(ERROR_CRYPTO_NOT_SET_UP, "Error: Crypto not set up") -STRING(PATH_NCCH_VERIFICATION_FAILED_INFO, "%s\nNCCH verification failed:\nExtHdr/ExeFS/RomFS: %s/%s/%s") -STRING(OK, "ok") -STRING(FAIL, "fail") -STRING(ERROR_NOT_NCSD_FILE, "Error: Not an NCSD file") -STRING(PATH_CONTENT_N_SIZE_AT_OFFSET_VERIFICATION_FAILED, "%s\nContent%lu (%08lX@%08lX):\nVerification failed") -STRING(ERROR_PROBABLY_NOT_CIA_FILE, "Error: Probably not a CIA file") -STRING(ERROR_TMD_PROBABLY_CORRUPTED, "Error: TMD probably corrupted") -STRING(PATH_ID_N_SIZE_AT_OFFSET_VERIFICATION_FAILED, "%s\nID %08lX (%08llX@%08llX)\nVerification failed") -STRING(ERROR_CDN_TITLEKEY_NOT_FOUND, "Error: CDN titlekey not found") -STRING(DLC_CONTENT_IS_MISSING_IGNORE_ALL_AND_CONTINUE, "DLC content is missing\n \nIgnore all and continue?") -STRING(PATH_SECTION_N_HASH_MISMATCH, "%s\nSection %lu hash mismatch") -STRING(ARM9_ENTRYPOINT_IS_MISSING, "ARM9 entrypoint is missing") -STRING(WARNING_ARM11_ENTRYPOINT_IS_MISSING, "Warning: ARM11 entrypoint is missing") -STRING(ERROR_NOT_A_BOSS_FILE, "Error: Not a BOSS file") -STRING(BOSS_PAYLOAD_HASH_MISMATCH_TRY_TO_FIX_IT, "BOSS payload hash mismatch.\n \nTry to fix it?") -STRING(GENERIC_TICKET_PIRATE_LEGIT, "Generic ticket (\"pirate legit\")") -STRING(PERSONALIZED_TICKET_LEGIT, "Personalized ticket (legit)") -STRING(ID_N_LEGIT_TICKET_IS_PERSONALIZED_USING_THIS_NOT_RECOMMENDED_CHOOSE_DEFAULT_ACTION, "ID %016llX\nLegit ticket is personalized.\nUsing this is not recommended.\nChoose default action:") -STRING(ID_N_TITLEKEY_NOT_FOUND, "ID %016llX\nTitlekey not found.") -STRING(ID_N_TMD_IN_TAD_NOT_LEGIT, "ID %016llX\nTMD in TAD is not legit.") -STRING(ID_N_TMD_NOT_LEGIT, "ID %016llX\nTMD is not legit.") -STRING(ID_N_DOT_N_STATUS, "ID %016llX.%08lX\n%s") -STRING(CONTENT_IS_CORRUPT, "Content is corrupt") -STRING(INSERT_CONTENT_FAILED, "Insert content failed") -STRING(INSTALL_CONTENT_FAILED, "Install content failed") -STRING(INSTALL_ERROR_THIS_SYSTEM_IS_MISSING_DB_FILES_MAYBE_SD_MISSING_OR_UNINITIALIZED, "Install error:\nThis system is missing one or\nmore .db files.\n \nMaybe the SD card is missing\nor uninitialized?") -STRING(INSTALL_ERROR_THIS_SYSTEM_IS_MISSING_TICKET_DB, "Install error:\nThis system is missing the\nticket.db file.") -STRING(SKIPPED_TITLE_0004008C000CBD00_NEEDS_SPECIAL_COMPILE_FLAGS, "Skipped title:\nTitle with id 0004008C000CBD00\nneeds special compiler flags.") -STRING(ERROR_FAKE_SIGNED_TICKET_ONLY_VALID_SIGNED_TICKETS_CAN_BE_INSTALLED, "Error: Fake-signed ticket\n \nOnly valid signed tickets can\nbe installed to the system.") -STRING(PATH_ERROR_UNKNOWN_CID_N_THIS_TICKET_DOES_NOT_BELONG_TO_THIS_3DS, "%s\nError: Unknown cid %08lX\n \nThis ticket does not belong to\nthis 3DS console.") -STRING(INSTALLING_TICKET, "Installing ticket...") -STRING(POSSIBLY_BROKEN, "Possibly Broken") -STRING(PERSONAL_LEGIT, "Personal Legit") -STRING(PERSONAL_LEGIT_DLC, "Personal Legit DLC") -STRING(PERSONAL_PIRATE_LEGIT, "Personal Pirate Legit") -STRING(PERSONAL_PIRATE_LEGIT_DLC, "Personal Pirate Legit DLC") -STRING(PERSONAL_CUSTOM, "Personal Custom") -STRING(PERSONAL_CUSTOM_DLC, "Personal Custom DLC") -STRING(UNIVERSAL_LEGIT, "Universal Legit") -STRING(UNIVERSAL_LEGIT_DLC, "Universal Legit DLC") -STRING(UNIVERSAL_PIRATE_LEGIT, "Universal Pirate Legit") -STRING(UNIVERSAL_PIRATE_LEGIT_DLC, "Universal Pirate Legit DLC") -STRING(UNIVERSAL_CUSTOM, "Universal Custom") -STRING(UNIVERSAL_CUSTOM_DLC, "Universal Custom DLC") -STRING(CONTENTS_IN_CIA_FOUND_TOTAL, "Contents in CIA: %lu/%lu") -STRING(CONTENTS_IN_CIA_TOTAL, "Contents in TMD: %lu") -STRING(CONSOLE_ID_N, "Console ID: %08lX\n") -STRING(SHOW_GAME_INFO_DETAILS, "%s\n%s %s Title\n \nTitle ID: %016llX\nTitle version: %lu.%lu.%lu\nContents size: %s\n%s\n%s \nTicket/TMD: %s/%s\nVerification: %s") -STRING(STATE_LEGIT, "legit") -STRING(STATE_ILLEGIT, "illegit") -STRING(STATE_UNKNOWN, "unknown") -STRING(STATE_INVALID, "invalid") -STRING(STATE_PENDING_PROCEED_WITH_VERIFICATION, "pending\n \nProceed with verification?") -STRING(STATE_PASSED, "passed") -STRING(STATE_FAILED, "failed") -STRING(OUTPUT_FILE_ALREADY_EXISTS_UPDATE_THIS, "Output file already exists.\nUpdate this?") -STRING(DSI_ENHANCED, "DSi Enhanced") -STRING(DSI_EXCLUSIVE, "DSi Exclusive") -STRING(FIXING_CMACS_PLEASE_WAIT, "Fixing CMACs, please wait...") -STRING(NCSD_HEADER_IS_NOT_VALID, "NCSD header is not valid") -STRING(NAND_DUMP_MISSING_DATA, "NAND dump missing data") -STRING(ERROR_CTR_MBR_IS_CORRUPT, "Error: CTR MBR is corrupt") -STRING(ERROR_TWL_MBR_IS_CORRUPT, "Error: TWL MBR is corrupt") -STRING(PATH_ERROR_CTR_PARTITION_N_IS_CORRUPT, "%s\nError: CTR partition%lu is corrupt") -STRING(PATH_ERROR_TWL_PARTITION_N_IS_CORRUPT, "%s\nError: TWL partition%lu is corrupt") -STRING(NO_VALID_FIRM_FOUND, "No valid FIRM found") -STRING(ERROR_NAND_DUMP_IS_CORRUPT_STILL_CONTINUE, "Error: NAND dump is corrupt.\nStill continue?") -STRING(ERROR_SYSTEM_IS_LOCKED, "Error: System is locked.") -STRING(ESSENTIAL_FILES_BACKUP_IS_REQUIRED_CREATE_ONE_NOW, "Essential files backup is required.\nCreate one now?") -STRING(WARNING_PROCEEDING_WILL_OVERWRITE_SYSNAND_WITH_DUMP, "!WARNING!\n \nProceeding will overwrite the\nSysNAND with the provided dump.\n \n(B9S/A9LH will be left intact.)") -STRING(IMAGE_NCSD_CORRUPT_OR_CUSTOMIZED_SAFE_RESTORE_NOT_POSSIBLE, "Image NCSD corrupt or customized,\nsafe restore is not possible!") -STRING(WARNING_NCSD_DIFFERS_BETWEEN_IMAGE_AND_LOCAL_ELEVATED_WRITE_PERMISSIONS_REQUIRED, "!WARNING!\n \nNCSD differs between image and local,\nelevated write permissions required\n \nProceed on your own risk?") -STRING(NOT_AN_INSTALLABLE_FIRM, "Not a installable FIRM.") -STRING(FIRM_LOAD_VERIFY_ERROR, "FIRM load/verify error.") -STRING(PATH_FIRM_N_NOT_FOUND_OR_TOO_SMALL, "%s\nFIRM%lu not found or too small.") -STRING(SECTOR_0X96_CRYPTO_FAIL, "Sector 0x96 crypto fail.") -STRING(SECTOR_0X96_CORRUPTED_PROVIDE_SECRET_SECTOR_BIN_TO_FIX, "Sector 0x96 is corrupted.\n \nProvide \"secret_sector.bin\"\nto fix sector 0x96.") -STRING(SECTOR_0X96_CORRUPTED_FIX_DURING_INSTALLATION, "Sector 0x96 is corrupted.\n \nFix sector 0x96 during\nthe installation?") -STRING(WARNING_PROCEEDING_WILL_INSTALL_FIRM_TO_SYSNAND_AND_INJECT_SIGHAX_UNSUPPORTED_FIRM_WILL_BRICK, "!WARNING!\n \nProceeding will install the\nprovided FIRM to the SysNAND\nand inject sighax.\n \nInstalling an unsupported FIRM\nwill BRICK your console!") -STRING(INSTALLING_FIRM_PLEASE_WAIT, "Installing FIRM, please wait...") -STRING(THIS_IS_BAD_FAILED_WRITING_SECTOR_0X96_TRY_FIX_BEFORE_REBOOT, "!THIS IS BAD!\n \nFailed writing sector 0x96.\nTry to fix before reboot!") -STRING(THIS_IS_BAD_FAILED_WRITING_FIRM_N_TRY_FIX_BEFORE_REBOOT, "!THIS IS BAD!\n \nFailed writing FIRM%lu.\nTry to fix before reboot!") -STRING(CHECKING_INSTALLATION_PLEASE_WAIT, "Checking installation, please wait...") -STRING(THIS_IS_BAD_FAILED_VERIFYING_SECTOR_0X96_TRY_FIX_BEFORE_REBOOT, "!THIS IS BAD!\n \nFailed verifying sector 0x96.\nTry to fix before reboot!") -STRING(THIS_IS_BAD_FAILED_VERIFYING_FIRM_N_TRY_FIX_BEFORE_REBOOT, "!THIS IS BAD!\n \nFailed verifying FIRM%lu.\nTry to fix before reboot!") -STRING(PERFECT_KEYDB_IS_ALREADY_INSTALLED, "Perfect %s is already installed!") -STRING(PATH_NOT_PERFECT_KEYDB_IMAGE_CANNOT_INSTALL_TO_NAND, "%s\nNot a perfect %s image.\nCannot install to NAND!") -STRING(PATH_FAILED_WRITING_KEYDB_TO_NAND, "%s\nFailed writing %s to NAND!") -STRING(USE_L_R_TO_SAVE, "(use L+R to save)") -STRING(EASTER_NOT_FOUND, "(%s not found)") -STRING(BUILDING_TO_OUT_ARG, "Building to %s:\n%s ...") -STRING(EJECT_SD_CARD, "Eject SD card...") -STRING(INSERT_SD_CARD, "Insert SD card...") -STRING(SCRIPTERR_UNKNOWN_CMD, "unknown cmd") -STRING(SCRIPTERR_BAD_NUMBER_OF_ARGS, "bad # of args") -STRING(SCRIPTERR_UNRECOGNIZED_FLAGS, "unrecognized flags") -STRING(SCRIPTERR_ILLEGAL_FLAG, "illegal flag") -STRING(SCRIPTERR_UNRESOLVED_QUOTES, "unresolved quotes") -STRING(SCRIPTERR_TOO_MANY_ARGUMENTS, "too many arguments") -STRING(SCRIPTERR_ARGUMENT_EXPAND_FAILED, "argument expand failed") -STRING(SCRIPTERR_QUOTE_NOT_AN_ERROR, "'not' an error") -STRING(SCRIPTERR_SYNTAX_ERROR_AFTER_IF, "syntax error after 'if'") -STRING(SCRIPTERR_ELIF_WITHOUT_IF, "'elif' without 'if'") -STRING(SCRIPTERR_SYNTAX_ERROR_AFTER_ELIF, "syntax error after 'elif'") -STRING(SCRIPTERR_ELSE_WITHOUT_IF, "'else' without 'if'") -STRING(SCRIPTERR_END_WITHOUT_IF, "'end' without 'if'") -STRING(SCRIPTERR_FOR_INSIDE_FOR, "'for' inside 'for'") -STRING(SCRIPTERR_DIR_NOT_FOUND, "dir not found") -STRING(SCRIPTERR_FOR_WITHOUT_NEXT, "'for' without 'next'") -STRING(SCRIPTERR_NEXT_WITHOUT_FOR, "'next' without 'for'") -STRING(SCRIPTERR_FORPATH_ERROR, "forpath error") -STRING(SCRIPTERR_LABEL_NOT_FOUND, "label not found") -STRING(SCRIPTERR_USER_ABORT, "user abort") -STRING(SCRIPTERR_KEY_NOT_PRESSED, "key not pressed") -STRING(SCRIPTERR_OUT_OF_MEMORY, "out of memory") -STRING(SCRIPTERR_VAR_FAIL, "var fail") -STRING(SCRIPTERR_FORBIDDEN_DRIVE, "forbidden drive") -STRING(SCRIPTERR_INVALID_PATH, "invalid path") -STRING(SCRIPTERR_FILESELECT_ABORT, "fileselect abort") -STRING(SCRIPTERR_DIRSELECT_ABORT, "dirselect abort") -STRING(SCRIPTERR_SET_FAIL, "set fail") -STRING(SCRIPTERR_CHAR_NOT_FOUND, "char not found") -STRING(SCRIPTERR_ARGV_2_IS_NOT_CHAR, "argv[2] is not a char") -STRING(SCRIPTERR_ARGV_2_MUST_BE_2_CHARS, "argv[2] must be 2 chars") -STRING(SCRIPTERR_ARG_MATCH, "arg match") -STRING(SCRIPTERR_NO_ARG_MATCH, "no arg match") -STRING(SCRIPTERR_PERMISSION_FAIL, "permission fail") -STRING(SCRIPTERR_COPY_FAIL, "copy fail") -STRING(SCRIPTERR_MOVE_FAIL, "move fail") -STRING(SCRIPTERR_INJECT_FAIL, "inject fail") -STRING(SCRIPTERR_FILLBYTE_FAIL, "fillbyte fail") -STRING(SCRIPTERR_FILL_FAIL, "fill fail") -STRING(SCRIPTERR_BAD_FILESIZE, "bad filesize") -STRING(SCRIPTERR_CREATE_DUMMY_FILE, "create dummy fail") -STRING(SCRIPTERR_REMOVE_FAIL, "remove fail") -STRING(SCRIPTERR_MAKEDIR_FAIL, "makedir fail") -STRING(SCRIPTERR_MOUNT_FAIL, "mount fail") -STRING(SCRIPTERR_FIND_FAIL, "find fail") -STRING(SCRIPTERR_FINDNOT_FAIL, "findnot fail") -STRING(SCRIPTERR_NO_SIZE_GIVEN, "no size given") -STRING(SCRIPTERR_SIZE_TOO_BIG, "size too big") -STRING(SCRIPTERR_READ_FAIL, "read fail") -STRING(SCRIPTERR_CONVERSION_FAIL, "conversion fail") -STRING(SCRIPTERR_INVALID_DATA, "invalid data") -STRING(SCRIPTERR_WRITE_FAIL, "write fail") -STRING(SCRIPTERR_SHA_ARG0_FAIL, "sha arg0 fail") -STRING(SCRIPTERR_SHA_ARG1_FAIL, "sha arg1 fail") -STRING(SCRIPTERR_SHA_DOES_NOT_MATCH, "sha does not match") -STRING(SCRIPTERR_SHA_WRITE_FAIL, "sha write fail") -STRING(SCRIPTERR_FILE_WRITE_FAIL, "file write fail") -STRING(SCRIPTERR_FIXCMAC_FAILED, "fixcmac failed") -STRING(SCRIPTERR_VERIFICATION_FAILED, "verification failed") -STRING(SCRIPTERR_DECRYPT_FAILED, "decrypt failed") -STRING(SCRIPTERR_ENCRYPT_FAILED, "encrypt failed") -STRING(SCRIPTERR_BUILD_CIA_FAILED, "build CIA failed") -STRING(SCRIPTERR_INSTALL_GAME_FAILED, "install game failed") -STRING(SCRIPTERR_DOES_NOT_CONTAIN_DOT_CODE, "does not contain .code") -STRING(SCRIPTERR_EXTRACT_DOT_CODE_FAILED, "extract .code failed") -STRING(SCRIPTERR_COMPRESS_DOT_CODE_FAILED, "compress .code failed") -STRING(SCRIPTERR_BUILD_FAILED, "build failed") -STRING(SCRIPTERR_UNKNOWN_FILE, "unknown file") -STRING(SCRIPTERR_APPLY_IPS_FAILD, "apply IPS failed") -STRING(SCRIPTERR_APPLY_BPS_FAILED, "apply BPS failed") -STRING(SCRIPTERR_APPLY_BPM_FAILED, "apply BPM failed") -STRING(SCRIPTERR_TEXTVIEWER_FAILED, "textviewer failed") -STRING(SCRIPTERR_BAD_DUMPSIZE, "bad dumpsize") -STRING(SCRIPTERR_CART_INIT_FAIL, "cart init fail") -STRING(SCRIPTERR_CART_DUMP_FAILED, "cart dump failed") -STRING(SCRIPTERR_NOT_A_DIR, "not a dir") -STRING(SCRIPTERR_FILE_NOT_FOUND, "file not found") -STRING(SCRIPTERR_NOT_A_BOOTABLE_FIRM, "not a bootable firm") -STRING(SCRIPTERR_SD_NOT_MOUNTED, "SD not mounted") -STRING(SCRIPTERR_UNKNOWN_ERROR, "unknown error") -STRING(SCRIPTERR_COMMAND_SUCCESS, "command success") -STRING(SCRIPTERR_CONTROL_FLOW_ERROR, "control flow error") -STRING(SCRIPTERR_UNCLOSED_CONDITIONAL, "unclosed conditional") -STRING(SCRIPTERR_ERROR_MESSAGE_FAIL, "error message fail") -STRING(ERROR_INVALID_TEXT_DATA, "Error: Invalid text data") -STRING(TEXTVIEWER_CONTROLS_DETAILS, "Textviewer Controls:\n \n↑↓→←(+R) - Scroll\nR+Y - Toggle wordwrap\nR+X - Goto line #\nB - Exit\n") -STRING(CURRENT_LINE_N_ENTER_NEW_LINE_BELOW, "Current line: %i\nEnter new line below.") -STRING(PREVIEW_DISABLED, "(preview disabled)") -STRING(PATH_LINE_N_ERR_LINE, "%s\nline %lu: %s\n%s") -STRING(END_OF_SCRIPT_UNRESOLVED_IF, "end of script: unresolved 'if'") -STRING(END_OF_SCRIPT_UNRESOLVED_FOR, "end of script: unresolved 'for'") -STRING(SYSINFO_MODEL, "Model: %s (%s)\r\n") -STRING(SYSINFO_SERIAL, "Serial: %s\r\n") -STRING(SYSINFO_REGION_SYSTEM, "Region (system): %s\r\n") -STRING(SYSINFO_REGION_SALES, "Region (sales): %s\r\n") -STRING(SYSINFO_SOC_MANUFACTURING_DATE, "SoC manufacturing date: %s\r\n") -STRING(SYSINFO_SYSTEM_ASSEMBLY_DATE, "System assembly date: %s\r\n") -STRING(SYSINFO_ORIGINAL_FIRMWARE, "Original firmware: %s\r\n") -STRING(SYSINFO_FRIENDCODE_SEED, "Friendcode seed: %s\r\n") -STRING(SYSINFO_SD_KEYY, "SD keyY: %s\r\n") -STRING(SYSINFO_NAND_CID, "NAND CID: %s\r\n") -STRING(SYSINFO_SD_CID, "SD CID: %s\r\n") -STRING(SYSINFO_SYSTEM_ID0, "System ID0: %s\r\n") -STRING(SYSINFO_SYSTEM_ID1, "System ID1: %s\r\n") -STRING(SORTING_TICKETS_PLEASE_WAIT, "Sorting tickets, please wait ...") diff --git a/utils/transcp.py b/utils/transcp.py new file mode 100755 index 000000000..001a39946 --- /dev/null +++ b/utils/transcp.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +from argparse import ArgumentParser, FileType +import json + +# This is to be incremented every time the order changes +# New strings added to the end will not cause issues +TRANSLATION_VER = 1 + +# This is the language name key in the JSON, which is to be deleted +LANGUAGE_NAME = "GM9_LANGUAGE" + +parser = ArgumentParser(description="Creates the language.inl file from source.json") +parser.add_argument("source", type=FileType("r"), help="source.json") +parser.add_argument("inl", type=FileType("w"), help="language.inl") +args = parser.parse_args() + +# Load the JSON and remove the language name +source = json.load(args.source) +del source[LANGUAGE_NAME] + +# Create the header file +args.inl.write("#define TRANSLATION_VER %d\n\n" % TRANSLATION_VER) +for key in source: + # Escape \r, \n, and quotes + val = source[key].replace("\r", "\\r").replace("\n", "\\n").replace('"', '\\"') + args.inl.write('STRING(%s, "%s")\n' % (key, val))