mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[localization] getting there...
* more French * [s]ection -> [g]group, [r]esize -> re[s]ize * fix resizing of dialog windows to include borders * MSG_5xx -> MSG 2xx * Fix a non UTF-8 fetch * Fix line number offset due to section use
This commit is contained in:
parent
cb60cdc805
commit
be6135d2d7
19 changed files with 1051 additions and 645 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
################################################################################
|
||||
l "English" 0x0409, 0x0809, 0x0c09, 0x1009, 0x1409, 0x1809, 0x1c09, 0x2009, 0x2409, 0x2809, 0x2c09, 0x3009, 0x3409, 0x3809, 0x3c09, 0x4009, 0x4409, 0x4809
|
||||
s IDD_MESSAGES
|
||||
g IDD_MESSAGES
|
||||
t MSG_001 "Other instance detected"
|
||||
t MSG_002 "Another Rufus application is running.\n"
|
||||
"Please close the first application before running another one."
|
||||
|
@ -54,140 +54,304 @@ t MSG_040 "Download"
|
|||
t MSG_041 "Operation cancelled by the user"
|
||||
t MSG_042 "Error"
|
||||
t MSG_043 "Error: %s"
|
||||
t MSG_044 "File download"
|
||||
t MSG_045 "USB Storage Device (Generic)"
|
||||
t MSG_046 "%s (Disk %d)"
|
||||
t MSG_047 "%s (%c:)"
|
||||
t MSG_048 "Rufus - Flushing buffers"
|
||||
t MSG_049 "Rufus - Cancellation"
|
||||
|
||||
# Error messages
|
||||
t MSG_050 "Success."
|
||||
t MSG_051 "Undetermined error while formatting."
|
||||
t MSG_052 "Cannot use the selected file system for this media."
|
||||
t MSG_053 "Access to the device is denied."
|
||||
t MSG_054 "Media is write protected."
|
||||
t MSG_055 "The device is in use by another process. "
|
||||
"Please close any other process that may be accessing the device."
|
||||
t MSG_056 "Quick format is not available for this device."
|
||||
t MSG_057 "The volume label is invalid."
|
||||
t MSG_058 "The device handle is invalid."
|
||||
t MSG_059 "The selected cluster size is not valid for this device."
|
||||
t MSG_060 "The volume size is invalid."
|
||||
t MSG_061 "Please insert a media in drive."
|
||||
t MSG_062 "An unsupported command was received."
|
||||
t MSG_063 "Memory allocation error."
|
||||
t MSG_064 "Read error."
|
||||
t MSG_065 "Write error."
|
||||
t MSG_066 "Installation failure"
|
||||
t MSG_067 "Could not open media. It may be in use by another process. "
|
||||
"Please re-plug the media and try again."
|
||||
t MSG_068 "Error while partitioning drive."
|
||||
t MSG_069 "Could not copy files to target drive."
|
||||
t MSG_070 "Cancelled by user."
|
||||
t MSG_071 "Unable to create formatting thread."
|
||||
t MSG_072 "Bad blocks check didn't complete."
|
||||
t MSG_073 "ISO image scan failure."
|
||||
t MSG_074 "ISO image extraction failure."
|
||||
t MSG_075 "Unable to remount volume."
|
||||
t MSG_076 "Unable to patch/setup files for boot."
|
||||
t MSG_077 "Unable to assign a drive letter."
|
||||
t MSG_078 "Can't mount GUID volume."
|
||||
|
||||
t MSG_080 "Rufus detected that Windows is still flushing its internal buffers onto the USB device.\n\n"
|
||||
"Depending on the speed of your USB device, this operation may take a long time to complete, "
|
||||
"especially for large files.\n\nWe recommend that you let Windows finish, to avoid corruption. "
|
||||
"But if you grow tired of waiting, you can just unplug the device..."
|
||||
t MSG_081 "Unsupported ISO"
|
||||
t MSG_082 "This version of Rufus only supports bootable ISOs based on bootmgr/WinPE, isolinux or EFI.\n"
|
||||
"This ISO doesn't appear to use either..."
|
||||
t MSG_083 "Replace %s?"
|
||||
t MSG_084 "This ISO image seems to use an obsolete version of '%s'.\n"
|
||||
"Boot menus may not may not display properly because of this.\n\n"
|
||||
"A newer version can be downloaded by Rufus to fix this issue:\n"
|
||||
"- Choose 'Yes' to connect to the internet and download the file\n"
|
||||
"- Choose 'No' to leave the existing ISO file unmodified\n"
|
||||
"If you don't know what to do, you should select 'Yes'.\n\n"
|
||||
"Note: The new file will be downloaded in the current directory and once a "
|
||||
"'%s' exists there, it will be reused automatically."
|
||||
t MSG_085 "Downloading %s"
|
||||
t MSG_086 "No ISO image selected"
|
||||
# The content between the quotes below (\"Create a bootable disk\") should match
|
||||
# the beginning of the IDC_BOOT text
|
||||
t MSG_087 "Please click on the disc button to select a bootable ISO, "
|
||||
"or uncheck the \"Create a bootable disk...\" checkbox."
|
||||
t MSG_088 "ISO too big"
|
||||
t MSG_089 "This ISO image is too big for the selected target."
|
||||
t MSG_090 "Unsupported ISO"
|
||||
t MSG_091 "When using UEFI Target Type, only EFI bootable ISO images are supported. "
|
||||
"Please select an EFI bootable ISO or set the Target Type to BIOS."
|
||||
t MSG_092 "Unsupported filesystem"
|
||||
t MSG_093 "When using UEFI Target Type, only FAT/FAT32 is supported. "
|
||||
"Please select FAT/FAT32 as the File system or set the Target Type to BIOS."
|
||||
t MSG_094 "Non UEFI compatible ISO"
|
||||
t MSG_095 "This ISO image contains a file larger than 4 GB and cannot be used to create an EFI bootable USB.\n"
|
||||
"This is a limitation of UEFI/FAT32, not Rufus."
|
||||
t MSG_096 "Only FAT/FAT32 is supported for this type of ISO. Please select FAT/FAT32 as the File system."
|
||||
t MSG_097 "Only 'bootmgr' or 'WinPE' based ISO images can currently be used with NTFS."
|
||||
t MSG_098 "FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI."
|
||||
t MSG_099 "Filesystem limitation"
|
||||
t MSG_100 "This iso image contains a file larger than 4GB file, which is more than the "
|
||||
"maximum size allowed for a FAT or FAT32 file system."
|
||||
t MSG_101 "Missing WIM support"
|
||||
t MSG_102 "Your platform cannot extract files from WIM archives. WIM extraction "
|
||||
"is required to create EFI bootable Windows 7 and Windows Vista USB drives. You can fix that "
|
||||
"by installing a recent version of 7-Zip.\nDo you want to visit the 7-zip download page?"
|
||||
t MSG_103 "Download %s?"
|
||||
t MSG_104 "Syslinux v5.0 or later requires a '%s' file to be installed.\n"
|
||||
"Because this file is more than 100 KB in size, and always present on Syslinux v5+ ISO images, "
|
||||
"it is not embedded in Rufus.\n\nRufus can download the missing file for you:\n"
|
||||
"- Select 'Yes' to connect to the internet and download the file\n"
|
||||
"- Select 'No' if you want to manually copy this file on the drive later\n\n"
|
||||
"Note: The file will be downloaded in the current directory and once a "
|
||||
"'%s' exists there, it will be reused automatically.\n"
|
||||
t MSG_105 "Cancelling may leave the device in an UNUSABLE state.\n"
|
||||
"If you are sure you want to cancel, click YES. Otherwise, click NO."
|
||||
t MSG_106 "Please select folder"
|
||||
t MSG_107 "All files"
|
||||
t MSG_108 "Rufus log"
|
||||
t MSG_109 "0x%02X (Disk %d)"
|
||||
|
||||
# Tootips
|
||||
# Partition Scheme and Target Type
|
||||
t MSG_150 "Usually the safest choice. If you have an UEFI computer and want to install "
|
||||
"an OS in EFI mode however, you should select one of the options below"
|
||||
t MSG_151 "Use this if you want to install an OS in EFI mode, but need to access "
|
||||
"the USB content from Windows XP"
|
||||
t MSG_152 "The preferred option to install an OS in EFI mode and when "
|
||||
"USB access is not required for Windows XP"
|
||||
t MSG_153 "Test pattern: 0x%02X"
|
||||
t MSG_154 "Test pattern: 0x%02X, 0x%02X"
|
||||
t MSG_155 "Test pattern: 0x%02X, 0x%02X, 0x%02X"
|
||||
t MSG_156 "Test pattern: 0x%02X, 0x%02X, 0x%02X, 0x%02X"
|
||||
t MSG_157 "Sets the target filesystem"
|
||||
t MSG_158 "Minimum size that a block of data will occupy in the filesystem"
|
||||
t MSG_159 "Use this field to set the drive label\nInternational characters are accepted"
|
||||
t MSG_160 "Toggle advanced options"
|
||||
t MSG_161 "Check the device for bad blocks using a test pattern"
|
||||
t MSG_162 "Uncheck this box to use the \"slow\" format method"
|
||||
t MSG_163 "Check this box to make the USB drive bootable"
|
||||
t MSG_164 "Method that will be used to make the drive bootable"
|
||||
t MSG_165 "Click to select an ISO..."
|
||||
t MSG_166 "Check this box to allow the display of international labels "
|
||||
"and set a device icon (creates an autorun.inf)"
|
||||
t MSG_167 "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
|
||||
t MSG_168 "Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
|
||||
"This should only be necessary if you install Windows XP and have more than one disk"
|
||||
t MSG_169 "Create an extra hidden partition and try to align partitions boundaries.\n"
|
||||
"This can improve boot detection for older BIOSes"
|
||||
t MSG_170 "Enable detection for disks not normally detected by Rufus. USE AT YOUR OWN RISKS!!!"
|
||||
t MSG_171 "Start the formatting operation.\nThis will DESTROY any data on the target!"
|
||||
t MSG_172 "Licensing information and credits"
|
||||
t MSG_173 "Click to select..."
|
||||
# The following will appear in the about dialog
|
||||
t MSG_174 "Rufus - The Reliable USB Formatting Utility"
|
||||
t MSG_175 "Version %d.%d.%d (Build %d)"
|
||||
t MSG_176 ""
|
||||
t MSG_177 "Report bugs or request enhancements at:"
|
||||
t MSG_178 "Additional Copyrights:"
|
||||
t MSG_179 "Update Policy:"
|
||||
t MSG_180 "If you choose to allow this program to check for application updates, "
|
||||
"you agree that the following information may be collected on our server(s):"
|
||||
t MSG_181 "Your operating system's architecture and version"
|
||||
t MSG_182 "The version of the application you use"
|
||||
t MSG_183 "Your IP address"
|
||||
t MSG_184 "For the purpose of generating private usage statistics, we may keep the information collected, "
|
||||
"\\b for at most a year\\b0 . However, we will not willingly disclose any of this individual data to third parties."
|
||||
t MSG_185 "Update Process:"
|
||||
t MSG_186 "Rufus does not install or run background services, therefore update checks are performed only when the main application is running.\\line\n"
|
||||
"Internet access is of course required when checking for updates."
|
||||
|
||||
# Status messages - these messages will appear on the status bar
|
||||
t MSG_501 "Cancelling - Please wait..."
|
||||
t MSG_502 "Scanning ISO image..."
|
||||
t MSG_503 "Failed to scan ISO image"
|
||||
t MSG_201 "Cancelling - Please wait..."
|
||||
t MSG_202 "Scanning ISO image..."
|
||||
t MSG_203 "Failed to scan ISO image"
|
||||
# Parameter: the name of an obsolete Syslinux .c32 module. eg: "Obsolete vesamenu.c32 detected"
|
||||
t MSG_504 "Obsolete %s detected"
|
||||
t MSG_204 "Obsolete %s detected"
|
||||
# Display the name of the ISO selected. eg: "Using ISO: en_win7_x64_sp1.iso"
|
||||
t MSG_505 "Using ISO: %s"
|
||||
t MSG_205 "Using ISO: %s"
|
||||
# Typically "Missing ldlinux.c32 file"
|
||||
t MSG_506 "Missing %s file"
|
||||
t MSG_206 "Missing %s file"
|
||||
# Same message, once for singular and plural ("1 device found", "2 devices found")
|
||||
t MSG_508 "%d device found"
|
||||
t MSG_509 "%d devices found"
|
||||
t MSG_510 "DONE."
|
||||
t MSG_511 "Cancelled."
|
||||
t MSG_512 "FAILED."
|
||||
t MSG_208 "%d device found"
|
||||
t MSG_209 "%d devices found"
|
||||
t MSG_210 "DONE."
|
||||
t MSG_211 "Cancelled."
|
||||
t MSG_212 "FAILED."
|
||||
# Used when a new update has been downloaded and lauched
|
||||
t MSG_513 "Launching new application..."
|
||||
t MSG_514 "Failed to launch new application"
|
||||
t MSG_213 "Launching new application..."
|
||||
t MSG_214 "Failed to launch new application"
|
||||
# Open/Save file
|
||||
t MSG_515 "Opened %s"
|
||||
t MSG_516 "Saved %s"
|
||||
t MSG_215 "Opened %s"
|
||||
t MSG_216 "Saved %s"
|
||||
# Formatting status (make sure you use a double % to print the percent sign)
|
||||
t MSG_517 "Formatting: %d%% completed"
|
||||
t MSG_518 "Creating file system: Task %d/%d completed"
|
||||
t MSG_519 "NTFS Fixup: %d%% completed"
|
||||
t MSG_521 "Setting Label (This may take while)..."
|
||||
t MSG_217 "Formatting: %d%% completed"
|
||||
t MSG_218 "Creating file system: Task %d/%d completed"
|
||||
t MSG_219 "NTFS Fixup: %d%% completed"
|
||||
t MSG_221 "Setting Label (This may take while)..."
|
||||
# Parameter: the file system. eg. "Formatting (NTFS)..."
|
||||
t MSG_522 "Formatting (%s)..."
|
||||
t MSG_523 "NTFS Fixup (Checkdisk)..."
|
||||
t MSG_524 "Clearing MBR/PBR/GPT structures..."
|
||||
t MSG_525 "Requesting disk access..."
|
||||
t MSG_526 "Analyzing existing boot records..."
|
||||
t MSG_527 "Closing existing volume..."
|
||||
t MSG_528 "Writing master boot record..."
|
||||
t MSG_529 "Writing partition boot record..."
|
||||
t MSG_530 "Copying DOS files..."
|
||||
t MSG_531 "Copying ISO files..."
|
||||
t MSG_532 "Win7 EFI boot setup (this may take a while)..."
|
||||
t MSG_533 "Finalizing, please wait..."
|
||||
t MSG_222 "Formatting (%s)..."
|
||||
t MSG_223 "NTFS Fixup (Checkdisk)..."
|
||||
t MSG_224 "Clearing MBR/PBR/GPT structures..."
|
||||
t MSG_225 "Requesting disk access..."
|
||||
t MSG_226 "Analyzing existing boot records..."
|
||||
t MSG_227 "Closing existing volume..."
|
||||
t MSG_228 "Writing master boot record..."
|
||||
t MSG_229 "Writing partition boot record..."
|
||||
t MSG_230 "Copying DOS files..."
|
||||
t MSG_231 "Copying ISO files..."
|
||||
t MSG_232 "Win7 EFI boot setup (this may take a while)..."
|
||||
t MSG_233 "Finalizing, please wait..."
|
||||
# Takes the Syslinux version as paramete. eg. "Installing Syslinux v5..."
|
||||
t MSG_534 "Installing Syslinux v%d..."
|
||||
t MSG_234 "Installing Syslinux v%d..."
|
||||
# Bad blocks status. eg: "Bad Blocks: PASS 1/2 - 12.34% (0/0/1 errors)"
|
||||
t MSG_535 "Bad Blocks: PASS %d/%d - %0.2f%% (%d/%d/%d errors)"
|
||||
t MSG_536 "Bad Blocks: Testing with random pattern"
|
||||
t MSG_537 "Bad Blocks: Testing with pattern 0x%02X"
|
||||
t MSG_235 "Bad Blocks: PASS %d/%d - %0.2f%% (%d/%d/%d errors)"
|
||||
t MSG_236 "Bad Blocks: Testing with random pattern"
|
||||
t MSG_237 "Bad Blocks: Testing with pattern 0x%02X"
|
||||
# eg. "Partitioning (MBR)..."
|
||||
t MSG_538 "Partitioning (%s)..."
|
||||
t MSG_539 "Deleting partitions..."
|
||||
t MSG_540 "Downloading %s: Connecting..."
|
||||
t MSG_541 "Downloading: %0.1f%%"
|
||||
t MSG_542 "Failed to download file."
|
||||
t MSG_543 "Checking for Rufus updates..."
|
||||
t MSG_544 "Updates: Unable to connect to the internet"
|
||||
t MSG_545 "Updates: Unable to acces version data"
|
||||
t MSG_546 "A new version of Rufus is available!"
|
||||
t MSG_547 "No new version of Rufus was found"
|
||||
t MSG_548 "Application registry keys successfully deleted"
|
||||
t MSG_549 "Failed to delete application registry keys"
|
||||
t MSG_238 "Partitioning (%s)..."
|
||||
t MSG_239 "Deleting partitions..."
|
||||
t MSG_240 "Downloading %s: Connecting..."
|
||||
t MSG_241 "Downloading: %0.1f%%"
|
||||
t MSG_242 "Failed to download file."
|
||||
t MSG_243 "Checking for Rufus updates..."
|
||||
t MSG_244 "Updates: Unable to connect to the internet"
|
||||
t MSG_245 "Updates: Unable to acces version data"
|
||||
t MSG_246 "A new version of Rufus is available!"
|
||||
t MSG_247 "No new version of Rufus was found"
|
||||
t MSG_248 "Application registry keys successfully deleted"
|
||||
t MSG_249 "Failed to delete application registry keys"
|
||||
# eg. "Fixed disk detection enabled" "ISO size check disabled"
|
||||
t MSG_550 "%s enabled"
|
||||
t MSG_551 "%s disabled"
|
||||
t MSG_552 "Size checks"
|
||||
t MSG_553 "Fixed disks detection"
|
||||
t MSG_554 "Force large FAT32 formatting"
|
||||
t MSG_555 "NoDriveTypeAutorun will be deleted on exit"
|
||||
t MSG_556 "Fake drive detection"
|
||||
t MSG_250 "%s enabled"
|
||||
t MSG_251 "%s disabled"
|
||||
t MSG_252 "Size checks"
|
||||
t MSG_253 "Fixed disks detection"
|
||||
t MSG_254 "Force large FAT32 formatting"
|
||||
t MSG_255 "NoDriveTypeAutorun will be deleted on exit"
|
||||
t MSG_256 "Fake drive detection"
|
||||
|
||||
################################################################################
|
||||
l "French" 0x040c, 0x080c, 0x0c0c, 0x100c, 0x140c, 0x180c, 0x1c0c, 0x200c, 0x240c, 0x280c, 0x2c0c, 0x300c, 0x340c, 0x380c, 0xe40c
|
||||
s IDD_DIALOG
|
||||
g IDD_DIALOG
|
||||
t IDS_DEVICE_TXT "Periphérique"
|
||||
t IDS_PARTITION_TYPE_TXT "Type de partition et système de destination"
|
||||
t IDS_FILESYSTEM_TXT "Système de fichier"
|
||||
t IDS_FILESYSTEM_TXT "Système de fichiers"
|
||||
t IDS_CLUSTERSIZE_TXT "Taille de clusters"
|
||||
t IDS_LABEL_TXT "Nouveau label"
|
||||
t IDS_FORMATOPTIONS_TXT "Options de Formattage "
|
||||
t IDS_FORMAT_OPTIONS_GRP "Options de Formattage "
|
||||
t IDC_BADBLOCKS "Vérification de mauvais blocs:"
|
||||
s IDC_BADBLOCKS +10,0
|
||||
m IDC_NBPASSES +5,0
|
||||
t IDC_QUICKFORMAT "Formattage rapide"
|
||||
t IDC_BOOT "Disque de démarrage avec:"
|
||||
t IDC_BOOT "Disque de démarrage utilisant:"
|
||||
s IDC_BOOT +5,0
|
||||
m IDC_BOOTTYPE +5,0
|
||||
m IDC_SELECT_ISO +3,0
|
||||
t IDC_SET_ICON "Ajouter un label étendu et une icône"
|
||||
m IDC_ADVANCED +36 0
|
||||
m IDC_ADVANCED +36,0
|
||||
t IDC_ABOUT "A propos..."
|
||||
t IDCANCEL "Fermer"
|
||||
t IDC_START "Démarrer"
|
||||
t IDC_ADVANCED_GROUP "Options avancées"
|
||||
t IDS_ADVANCED_OPTIONS_GRP "Options avancées"
|
||||
t IDC_ENABLE_FIXED_DISKS "Lister les disques fixes ou non partitionés"
|
||||
t IDC_EXTRA_PARTITION "Options de compatibilité avec anciens BIOS"
|
||||
t IDC_RUFUS_MBR "Rufus MBR avec ID BIOS:"
|
||||
t IDC_RUFUS_MBR "Ajout du MBR Rufus, ID BIOS:"
|
||||
m IDC_DISK_ID +5,0
|
||||
s IDC_DISK_ID -2,0
|
||||
|
||||
s IDD_ABOUTBOX
|
||||
g IDD_ABOUTBOX
|
||||
t IDD_ABOUTBOX "A propos de Rufus"
|
||||
t IDC_ABOUT_LICENSE "License"
|
||||
t IDC_ABOUT_UPDATES "Mises à jour"
|
||||
|
||||
s IDD_LICENSE
|
||||
g IDD_LICENSE
|
||||
t IDD_LICENSE "License Rufus"
|
||||
|
||||
s IDD_NOTIFICATION
|
||||
g IDD_NOTIFICATION
|
||||
t IDC_MORE_INFO "Plus d'info..."
|
||||
t IDYES "Oui"
|
||||
t IDNO "Non"
|
||||
|
||||
s IDD_LOG
|
||||
g IDD_LOG
|
||||
t IDC_LOG_CLEAR "Effacer"
|
||||
t IDC_LOG_SAVE "Enregistrer"
|
||||
t IDCANCEL "Fermer"
|
||||
|
||||
s IDD_UPDATE_POLICY
|
||||
g IDD_UPDATE_POLICY
|
||||
s IDD_UPDATE_POLICY +30,0
|
||||
t IDD_UPDATE_POLICY "Paramètres de mises à jour"
|
||||
t IDS_UPDATE_SETTINGS_TXT "Options"
|
||||
t IDS_UPDATE_FREQUENCY_TXT "Tests de mise à jour"
|
||||
s IDC_POLICY +30,0
|
||||
t IDS_UPDATE_SETTINGS_GRP "Options"
|
||||
s IDS_UPDATE_SETTINGS_GRP +20,0
|
||||
t IDS_UPDATE_FREQUENCY_TXT "Recherche mises à jour:"
|
||||
s IDS_UPDATE_FREQUENCY_TXT -3,0
|
||||
t IDS_INCLUDE_BETAS_TXT "Inclure les bétas:"
|
||||
m IDC_UPDATE_FREQUENCY -3,0
|
||||
m IDC_INCLUDE_BETAS -3,0
|
||||
s IDC_UPDATE_FREQUENCY +25,0
|
||||
m IDS_CHECK_NOW_GRP 20,0
|
||||
s IDS_CHECK_NOW_GRP +10,0
|
||||
t IDC_CHECK_NOW "Chercher maintenant"
|
||||
m IDC_CHECK_NOW -10,0
|
||||
r IDC_CHECK_NOW +20,0
|
||||
m IDC_CHECK_NOW 9,0
|
||||
s IDC_CHECK_NOW +31,0
|
||||
t IDCANCEL "Fermer"
|
||||
m IDCANCEL 9,0
|
||||
|
||||
s IDD_NEW_VERSION
|
||||
t IDD_NEW_VERSION "Recherche de mise à jour Rufus"
|
||||
g IDD_NEW_VERSION
|
||||
t IDD_NEW_VERSION "Mise à jour de Rufus"
|
||||
t IDS_NEW_VERSION_AVAIL_TXT "Une nouvelle version est disponible. Veuillez télécharger la nouvelle version !"
|
||||
t IDC_WEBSITE "Cliquez ici pour aller sur le site de Rufus"
|
||||
t IDS_NEW_VERSION_NOTES_TXT "Notes pour cette version"
|
||||
t IDS_NEW_VERSION_DOWNLOAD_TXT "Télécharger"
|
||||
t IDS_NEW_VERSION_NOTES_GRP "Notes relatives à cette version"
|
||||
t IDS_NEW_VERSION_DOWNLOAD_GRP "Téléchargement"
|
||||
t IDC_DOWNLOAD ""Télécharger""
|
||||
t IDCANCEL "Fermer"
|
||||
|
||||
s IDD_ISO_EXTRACT
|
||||
g IDD_ISO_EXTRACT
|
||||
t IDD_ISO_EXTRACT "Copie des fichier ISO..."
|
||||
t IDC_ISO_FILENAME "Ouverture de l'image - veuillez patienter..."
|
||||
t IDC_ISO_ABORT "Annuler"
|
||||
|
||||
s IDD_MESSAGES
|
||||
g IDD_MESSAGES
|
||||
# éèêàç
|
||||
t MSG_001 "Autre instance detectée"
|
||||
t MSG_002 "Une autre instance de Rufus est en cours d'exécution.\n"
|
||||
|
@ -205,10 +369,10 @@ t MSG_011 "Vérification complète: %u bloc(s) défectueux détecté(s)\n"
|
|||
" %d erreur(s) de lecture\n %d erreur(s) d'écriture\n %d erreur(s) de corruption\n"
|
||||
t MSG_012 "%s\nUn rapport plus détaillé peut être obtenu à:\n%s"
|
||||
t MSG_013 "Jamais"
|
||||
t MSG_014 "Quotidien"
|
||||
t MSG_014 "Quotidienne"
|
||||
t MSG_015 "Hebdomadaire"
|
||||
t MSG_016 "Mensuel"
|
||||
t MSG_017 "Personalisé"
|
||||
t MSG_016 "Mensuelle"
|
||||
t MSG_017 "Personalisée"
|
||||
t MSG_018 "Votre version: %d.%d.%d (Build %d)"
|
||||
t MSG_019 "Dernière version: %d.%d.%d (Build %d)"
|
||||
t MSG_020 "octets"
|
||||
|
@ -235,76 +399,225 @@ t MSG_040 "Télécharger"
|
|||
t MSG_041 "Operation annulée par l'utilisateur"
|
||||
t MSG_042 "Erreur"
|
||||
t MSG_043 "Erreur: %s"
|
||||
t MSG_044 "Téléchargement de fichier"
|
||||
t MSG_045 "Pérpih. de stockage USB (Générique)"
|
||||
t MSG_046 "%s (Disque %d)"
|
||||
t MSG_047 "%s (%c:)"
|
||||
t MSG_048 "Rufus - Flush de la mémoire tampon"
|
||||
t MSG_049 "Rufus - Annulation"
|
||||
|
||||
# Error messages
|
||||
t MSG_050 "Opération réussie."
|
||||
t MSG_051 "Erreur indéterminéee lors du formatage."
|
||||
t MSG_052 "Ce système de fichiers ne peut pas être utilisé ici."
|
||||
t MSG_053 "L'accès au périphérique est refusé."
|
||||
t MSG_054 "Le périphérique est protegé en écriture."
|
||||
t MSG_055 "Le périphérique est en cours d'utilisation par une autre application. "
|
||||
"Veuillez fermer toute autre application succeptible d'accéder au périphérique."
|
||||
t MSG_056 "Le formatage rapide n'est pas disponible pour ce périphérique."
|
||||
t MSG_057 "Le nom de volume est invalide."
|
||||
t MSG_058 "Le handle de périphérique est invalide."
|
||||
t MSG_059 "Cette taille de cluster n'est pas appliquable ici."
|
||||
t MSG_060 "La taille du volume est invalide."
|
||||
t MSG_061 "Veuillez insérer un média dans le lecteur."
|
||||
t MSG_062 "Commande non supportée."
|
||||
t MSG_063 "Erreur d'allocation mémoire."
|
||||
t MSG_064 "Erreur de lecture."
|
||||
t MSG_065 "Erreur d'écriture."
|
||||
t MSG_066 "L'installation a échoué"
|
||||
t MSG_067 "Impossible d'accéder au média. Il peut être en cours d'utilisation par une autre application. "
|
||||
"Essayer de déconnecter le média et essayez à nouveau."
|
||||
t MSG_068 "Erreur de partitionement."
|
||||
t MSG_069 "Impossible de copier les fichiers sur le périphérique de detination."
|
||||
t MSG_070 "Opération annulée par l'utilisateur."
|
||||
t MSG_071 "Impossible de créer le thread de formattage."
|
||||
t MSG_072 "La vérification de blocs défectueux a été interrompue."
|
||||
t MSG_073 "Echec d'analyse de l'image ISO."
|
||||
t MSG_074 "Echec d'extraction de l'image ISO."
|
||||
t MSG_075 "Echec lors du remontage du volume."
|
||||
t MSG_076 "Echec de modification des fichiers de démarrage."
|
||||
t MSG_077 "Echec d'assignation d'une lettre de volume."
|
||||
t MSG_078 "Impossible de monter le volume GUID."
|
||||
|
||||
# éèêàçâûô
|
||||
t MSG_080 "Rufus a detecté que Windows est en train de finir de vider la mémoire tampon.\n\n"
|
||||
"En fonction de la vitesse de votre périphérique, cette opération peut prendre beaucoup de temps, "
|
||||
"surtout s'il s'agit d'un fichier volumineux.\n\nNous recommandons d'attendre que Windows "
|
||||
"complète cette opération, afin d'éviter la corruption du périphérique. Mais si jamais cela prend "
|
||||
"trop de temps, vous pouvez toujours essayer de déconnecter le média..."
|
||||
t MSG_081 "Image ISO non supportée"
|
||||
t MSG_082 "Cette version de Rufus supporte seulement les ISOs démarrables qui utilisent bootmgr/WinPE, isolinux ou EFI.\n"
|
||||
"Cette image ISO ne semble pas utiliser une de ces options..."
|
||||
t MSG_083 "Remplacer %s?"
|
||||
t MSG_084 "Cette image ISO utilise une version obsolète du fichier '%s'.\n"
|
||||
"A cause de cela, les menus de démarrage peuvent de pas fonctionner.\n\n"
|
||||
"Une nouvelle version du fichier peut être téléchargée par Rufus pour addresser ce problème:\n"
|
||||
"- Choisissez 'Oui' pour télécharger le fichier depuis Internet\n"
|
||||
"- Choisissez 'Non' pour garder le fichier de l'image ISO\n"
|
||||
"Si vous ne savez pas quoi faire, sélectionnez 'Oui'.\n\n"
|
||||
"Note: Le nouveau fichier est téléchargé dans le répertoire courrant. Une fois qu'un fichier"
|
||||
"'%s' existe à cet endroit, il sera réutilisé automatiquement."
|
||||
t MSG_085 "Téléchargement de %s"
|
||||
t MSG_086 "Aucune image ISO sélectionnée"
|
||||
t MSG_087 "Veuillez cliquer sur le bouton avec un disque pour choisir une image ISO démarrable "
|
||||
"ou décochez l'option \"Disque de démarrage...\"."
|
||||
t MSG_088 "Image ISO trop large"
|
||||
t MSG_089 "Cette ISO image est trop large pour le périphérique sélectionné."
|
||||
t MSG_090 "Image ISO on supportée"
|
||||
t MSG_091 "Quand UEFI est séelectionné, seules les images ISO basées sur EFI sont supportées. "
|
||||
"Veuillez sélectionner une image ISO démarrable avec EFI ou sélectionner BIOS pour le système de destination."
|
||||
t MSG_092 "Système de fichiers non supporté"
|
||||
t MSG_093 "Quand UEFI est séelectionné, seul le système de fichiers FAT/FAT32 est supporté. "
|
||||
"Veuillez sélectionner FAT/FAT32 comme système de fichiers ou sélectionner BIOS pour le système de destination."
|
||||
t MSG_094 "Image ISO incompatible avec UEFI"
|
||||
t MSG_095 "Cette image ISO contient un fichier de plus de 4 Go et ne peut pas être utilisée pour créer un USB démarrable par UEFI.\n"
|
||||
"Ceci est une limitation de UEFI/FAT32, pas de Rufus."
|
||||
t MSG_096 "Seul FAT/FAT32 est supporté avec ce type d'image ISO. Veuillez sélectionner FAT/FAT32 pour le système de fichiers."
|
||||
t MSG_097 "Seules les images ISO utilisant 'bootmgr' ou 'WinPE' peuvent être utilisées avec NTFS."
|
||||
t MSG_098 "FAT/FAT32 peut seulement être utilisé pour les images ISO utilisant 'isolinux' ou lorsque que le système de destination est UEFI."
|
||||
t MSG_099 "Limitation du système de fichiers"
|
||||
t MSG_100 "Cette image ISO contient un fichier de plus de 4 Go, ce qui est plus que la taille maximum "
|
||||
"supportée par le système de fichiers FAT ou FAT32."
|
||||
t MSG_101 "Support pour archives WIM non disponible"
|
||||
t MSG_102 "Votre plateforme ne peut pas extraire les fichiers depuis les archives WIM. L'extraction de données WIM "
|
||||
"est nécéssaire pour créer des médias USB démarrable avec EFI pour Windows 7/8 ou Windows Vista. Vous pouvez addresser "
|
||||
"ce problème en téléchargeant une version récente de l'utilitaire 7-Zip.\nVoulez-vous visiter la page de téléchargements de 7-zip?"
|
||||
t MSG_103 "Télécharger %s?"
|
||||
t MSG_104 "Syslinux v5.0 ou plus récent requiert l'installtion d'un fichier '%s'.\n"
|
||||
"Puisque ce fichier fait plus de 100 Ko et est toujours présent sur les images ISO à base de Syslinux v5+, "
|
||||
"il n'est pas inclus dans l'application.\n\nRufus peut télécharger ce fichier pour vous:\n"
|
||||
"- Choisissez 'Oui' pour télécharger le fichier depuis Internet\n"
|
||||
"- Choisissez 'Non' si vous compter copier ce fichier manuellement\n"
|
||||
"Note: Ce fichier est téléchargé dans le répertoire courrant. Une fois qu'un fichier"
|
||||
"'%s' existe à cet endroit, il sera réutilisé automatiquement."
|
||||
t MSG_105 "Annuler peut laisser le périphérique dans un état inutilisable.\n"
|
||||
"Si vous êtes sûr de vouloir annuler, sélectionnez OUI. Sinon, sélectionnez NON."
|
||||
t MSG_106 "Sélection de répertoire"
|
||||
t MSG_107 "Tous les fichiers"
|
||||
t MSG_108 "Log Rufus"
|
||||
t MSG_109 "0x%02X (disque %d)"
|
||||
|
||||
# Tootips
|
||||
t MSG_150 "Choix le plus sûr. Si toutefois vous possédez un ordinateur à base de UEFI et voulez installer "
|
||||
"un Système d’exploitation en mode EFI, vous devriez plutôt sélectionner l’une des options ci-dessous"
|
||||
t MSG_151 "Utilisez cette options si vous comptez installer un Système d’exploitation en mode EFI "
|
||||
"et avez aussi besoin d’accéder au contenu du média sous Windows XP"
|
||||
t MSG_152 "Option préférée pour installer un Système d’exploitation en mode EFI, "
|
||||
"quand l’accès au média depuis Windows XP n’est pas nécessaire"
|
||||
t MSG_153 "Motif de test: 0x%02X"
|
||||
t MSG_154 "Motif de test: 0x%02X, 0x%02X"
|
||||
t MSG_155 "Motif de test: 0x%02X, 0x%02X, 0x%02X"
|
||||
t MSG_156 "Motif de test: 0x%02X, 0x%02X, 0x%02X, 0x%02X"
|
||||
t MSG_157 "Sélectionne le système de fichiers"
|
||||
t MSG_158 "La taille minimum qu’un bloc de données occupera sur le système de fichiers"
|
||||
t MSG_159 "Utilisez ce champ pour mettre à jour le nom du volume\n"
|
||||
"Les caractères étendus et les accents sont acceptés "
|
||||
t MSG_160 "Affiche/Cache les options avancées "
|
||||
t MSG_161 "Détecte la présence de blocs défectueux en utilisant un motif de test"
|
||||
t MSG_162 "Décochez cette case pour utiliser la méthode de formatage \"lente\" "
|
||||
t MSG_163 "Cochez cette case pour rendre le périphérique démarrable"
|
||||
t MSG_164 "Méthode à utiliser pour rendre le périphérique démarrable "
|
||||
t MSG_165 "Cliquez ici pour sélectionner une image ISO..."
|
||||
t MSG_166 "Cochez cette case pour permettre l’affichage des caractères étendus/internationaux "
|
||||
"et ajouter une icône (créé un fichier autorun.inf)"
|
||||
t MSG_167 "Installe un MBR permettant la sélection du périphérique de démarrage. Peut aussi "
|
||||
"camoufler l’ID de disque pour le BIOS "
|
||||
t MSG_168 "Camoufle le premier disque USB démarrable (généralement 0x80) sous une ID différente.\n"
|
||||
"Changez cette option si vous installez Windows XP avec plus d’un disque dur"
|
||||
t MSG_169 "Créé une petite partition supplémentaire et essaye d’aligner les partitions.\n"
|
||||
"Peut améliorer la détection USB pour les vieux BIOS"
|
||||
t MSG_170 "Active la détection de disque non normalement listés par Rufus. UTILISEZ A VOS PROPRES RISQUES !!! "
|
||||
t MSG_171 "Lance le formatage. DETRUIT toutes les données existantes sur la cible !"
|
||||
t MSG_172 "Licence d’utilisation et remerciements"
|
||||
t MSG_173 "Cliquez pour sélectionner..."
|
||||
t MSG_174 "Rufus - The Reliable USB Formatting Utility"
|
||||
t MSG_175 "Version %d.%d.%d (Build %d)"
|
||||
t MSG_176 "Traduction Française: Pete Batard"
|
||||
t MSG_177 "Soumettre un bug ou une demande d'amélioration à:"
|
||||
t MSG_178 "Copyrights supplémentaires:"
|
||||
t MSG_179 "Politique de mises à jour:"
|
||||
t MSG_180 "Si vous autorisez ce programme à chercher les mises à jour, vous acceptez "
|
||||
"que les informations suivantes peuvent être collectées sur nos serveurs:"
|
||||
t MSG_181 "L’architecture de votre système d’exploitation ainsi que sa version"
|
||||
t MSG_182 "La version de l’application que vous utilisez"
|
||||
t MSG_183 "Votre adresse IP"
|
||||
t MSG_184 "Afin de générer des statistiques d’utilisation privées, il se peut que nous gardions "
|
||||
"les informations ainsi obtenues \\b au plus un an\\b0 . A moins d’y être contraint par la loi, "
|
||||
"nous nous engageons aussi à ne pas diffuser ces informations à de tierce parties."
|
||||
t MSG_185 "Processus de mise à jour:"
|
||||
t MSG_186 "Aucun service ou tâche de fond ne sont installés ou lancés par Rufus. Cela veut dire que les "
|
||||
"test de mises à jour interviennent seulement lorsque l’application principale s'exécute.\\line\n"
|
||||
"Bien entendu, un accès à internet est requis pour vérifier la disponibilité des mises à jour."
|
||||
|
||||
# Status messages
|
||||
t MSG_501 "Annulation - Veuillez patienter..."
|
||||
t MSG_502 "Analyse de l'image ISO..."
|
||||
t MSG_503 "Echec d'analyse de l'image ISO"
|
||||
t MSG_504 "Fichier %s obsolète detecté"
|
||||
t MSG_505 "ISO utilisée: %s"
|
||||
t MSG_506 "Fichier %s manquant"
|
||||
t MSG_508 "%d périphérique détecté"
|
||||
t MSG_509 "%d périphériques détectés"
|
||||
t MSG_510 "Opération terminée."
|
||||
t MSG_511 "Opération annulée."
|
||||
t MSG_512 "ECHEC."
|
||||
t MSG_513 "Lancement de la nouvelle application..."
|
||||
t MSG_514 "Echec de lancement de l'application"
|
||||
t MSG_515 "%s ouvert"
|
||||
t MSG_516 "%s sauvegardé"
|
||||
t MSG_517 "Formatage: %d%% complet"
|
||||
t MSG_518 "Création du système: Tache %d/%d complète"
|
||||
t MSG_519 "Finalisation NTFS: %d%% complète"
|
||||
t MSG_521 "Ecriture du label (peut prendre du temps)..."
|
||||
t MSG_522 "Formatage (%s)..."
|
||||
t MSG_523 "Finalisation NTFS (Checkdisk)..."
|
||||
t MSG_524 "Effacement des structures MBR/PBR/GPT..."
|
||||
t MSG_525 "Requête d'accès disque..."
|
||||
t MSG_526 "Analyse des structures de boot existantes..."
|
||||
t MSG_527 "Fermeture des volumes existants..."
|
||||
t MSG_528 "Ecriture du MBR..."
|
||||
t MSG_529 "Ecriture du PBR..."
|
||||
t MSG_530 "Copie des fichiers DOS..."
|
||||
t MSG_531 "Copie des fichiers ISO..."
|
||||
t MSG_532 "Ecriture boot Win7 EFI (peut prendre du temps)..."
|
||||
t MSG_533 "Finalisation, veuillez patienter..."
|
||||
t MSG_534 "Installation de Syslinux v%d..."
|
||||
t MSG_535 "Défauts: PASSE %d/%d - %0.2f%% (%d/%d/%d erreurs)"
|
||||
t MSG_536 "Défauts: Test avec motif aléatoire"
|
||||
t MSG_537 "Défauts: Test avec motif 0x%02X"
|
||||
t MSG_538 "Partitionage (%s)..."
|
||||
t MSG_539 "Effaçement des partitions..."
|
||||
t MSG_540 "Télechargement de %s: Connection..."
|
||||
t MSG_541 "Télechargement: %0.1f%%"
|
||||
t MSG_542 "Echec de télechargement du fichier"
|
||||
t MSG_543 "Recherche des mises à jour..."
|
||||
t MSG_544 "MAJ: Impossible de se connecter"
|
||||
t MSG_545 "MAJ: Pas d'accès aux données de mises à jour"
|
||||
t MSG_546 "Une nouvelle version de Rufus est disponible !"
|
||||
t MSG_547 "Pas de mise à jour"
|
||||
t MSG_548 "Clés registres supprimées"
|
||||
t MSG_549 "Echec de suppression des clés registres"
|
||||
t MSG_550 "%s activé"
|
||||
t MSG_551 "%s désactivé"
|
||||
t MSG_552 "Tests de dépassement de taille"
|
||||
t MSG_553 "Détection de disques fixes"
|
||||
t MSG_554 "Force 'large FAT32'"
|
||||
t MSG_555 "NoDriveTypeAutorun sera effacé en sortie"
|
||||
t MSG_556 "Test de contrefaçons"
|
||||
t MSG_201 "Annulation - Veuillez patienter..."
|
||||
t MSG_202 "Analyse de l'image ISO..."
|
||||
t MSG_203 "Echec d'analyse de l'image ISO"
|
||||
t MSG_204 "Fichier %s obsolète detecté"
|
||||
t MSG_205 "ISO utilisée: %s"
|
||||
t MSG_206 "Fichier %s manquant"
|
||||
t MSG_208 "%d périphérique détecté"
|
||||
t MSG_209 "%d périphériques détectés"
|
||||
t MSG_210 "Opération terminée."
|
||||
t MSG_211 "Opération annulée."
|
||||
t MSG_212 "ECHEC."
|
||||
t MSG_213 "Lancement de la nouvelle application..."
|
||||
t MSG_214 "Echec de lancement de l'application"
|
||||
t MSG_215 "%s ouvert"
|
||||
t MSG_216 "%s sauvegardé"
|
||||
t MSG_217 "Formatage: %d%% complet"
|
||||
t MSG_218 "Création du système de fichiers: Tâche %d/%d complète"
|
||||
t MSG_219 "Finalisation NTFS: %d%% complète"
|
||||
t MSG_221 "Ecriture du label (peut prendre du temps)..."
|
||||
t MSG_222 "Formatage (%s)..."
|
||||
t MSG_223 "Finalisation NTFS (Checkdisk)..."
|
||||
t MSG_224 "Effacement des structures MBR/PBR/GPT..."
|
||||
t MSG_225 "Requête d'accès disque..."
|
||||
t MSG_226 "Analyse des structures de boot existantes..."
|
||||
t MSG_227 "Fermeture des volumes existants..."
|
||||
t MSG_228 "Ecriture du MBR..."
|
||||
t MSG_229 "Ecriture du PBR..."
|
||||
t MSG_230 "Copie des fichiers DOS..."
|
||||
t MSG_231 "Copie des fichiers ISO..."
|
||||
t MSG_232 "Ecriture boot Win7 EFI (peut prendre du temps)..."
|
||||
t MSG_233 "Finalisation, veuillez patienter..."
|
||||
t MSG_234 "Installation de Syslinux v%d..."
|
||||
t MSG_235 "Défauts: PASSE %d/%d - %0.2f%% (%d/%d/%d erreurs)"
|
||||
t MSG_236 "Défauts: Test avec motif aléatoire"
|
||||
t MSG_237 "Défauts: Test avec motif 0x%02X"
|
||||
t MSG_238 "Partitionage (%s)..."
|
||||
t MSG_239 "Effaçement des partitions..."
|
||||
t MSG_240 "Télechargement de %s: Connection..."
|
||||
t MSG_241 "Télechargement: %0.1f%%"
|
||||
t MSG_242 "Echec de télechargement du fichier"
|
||||
t MSG_243 "Recherche des mises à jour..."
|
||||
t MSG_244 "MAJ: Impossible de se connecter"
|
||||
t MSG_245 "MAJ: Pas d'accès aux données de mises à jour"
|
||||
t MSG_246 "Une nouvelle version de Rufus est disponible !"
|
||||
t MSG_247 "Pas de mise à jour"
|
||||
t MSG_248 "Clés de registre supprimées"
|
||||
t MSG_249 "Echec de suppression des clés registres"
|
||||
t MSG_250 "%s activé"
|
||||
t MSG_251 "%s désactivé"
|
||||
t MSG_252 "Tests de dépassement de taille"
|
||||
t MSG_253 "Détection de disques fixes"
|
||||
t MSG_254 "Force 'large FAT32'"
|
||||
t MSG_255 "NoDriveTypeAutorun sera effacé en sortie"
|
||||
t MSG_256 "Test de contrefaçons"
|
||||
|
||||
################################################################################
|
||||
l "Chinese (Traditional)" 0x0404, 0x0804, 0x0c04, 0x1004, 0x1404
|
||||
s IDD_DIALOG
|
||||
g IDD_DIALOG
|
||||
t IDS_DEVICE_TXT "设备"
|
||||
t IDS_PARTITION_TYPE_TXT "分区计划和目标系统类型"
|
||||
t IDS_FILESYSTEM_TXT "文件系统"
|
||||
t IDS_CLUSTERSIZE_TXT "簇的大小"
|
||||
t IDS_LABEL_TXT "新卷标"
|
||||
t IDS_FORMATOPTIONS_TXT "格式选项 "
|
||||
t IDS_FORMAT_OPTIONS_GRP "格式选项 "
|
||||
t IDC_BADBLOCKS "检查设备的坏块:"
|
||||
t IDC_QUICKFORMAT "快速格式化"
|
||||
t IDC_BOOT "创建一个可启动的磁盘使用:"
|
||||
r IDC_BOOT +10,0
|
||||
s IDC_BOOT +10,0
|
||||
t IDC_SET_ICON "创建扩展标签和图标文件"
|
||||
m IDC_ADVANCED -24,0
|
||||
m IDC_NBPASSES 8,0
|
||||
|
@ -313,61 +626,61 @@ m IDC_SELECT_ISO 6,0
|
|||
t IDC_ABOUT "关于..."
|
||||
t IDC_LOG "日志"
|
||||
m IDC_LOG -5,0
|
||||
r IDC_LOG +5,0
|
||||
s IDC_LOG +5,0
|
||||
t IDCANCEL "关闭"
|
||||
t IDC_START "开始"
|
||||
t IDC_ADVANCED_GROUP "高级选项"
|
||||
t IDS_ADVANCED_OPTIONS_GRP "高级选项"
|
||||
t IDC_ENABLE_FIXED_DISKS "列表固定(非flash)或USB磁盘分区"
|
||||
t IDC_EXTRA_PARTITION "添加修复旧的BIOS(额外的分区,校准等等)"
|
||||
t IDC_RUFUS_MBR "使用 Rufus MBR BIOS ID:"
|
||||
|
||||
s IDD_ABOUTBOX
|
||||
g IDD_ABOUTBOX
|
||||
t IDD_ABOUTBOX "关于 Rufus"
|
||||
t IDC_ABOUT_LICENSE "许可证"
|
||||
t IDC_ABOUT_UPDATES "更新"
|
||||
t IDOK "确定"
|
||||
|
||||
s IDD_LICENSE
|
||||
g IDD_LICENSE
|
||||
t IDD_LICENSE "Rufus 许可证"
|
||||
t IDOK "取消"
|
||||
|
||||
s IDD_NOTIFICATION
|
||||
g IDD_NOTIFICATION
|
||||
t IDC_MORE_INFO "更多信息"
|
||||
t IDYES "是"
|
||||
t IDNO "否"
|
||||
|
||||
s IDD_LOG
|
||||
g IDD_LOG
|
||||
t IDD_LOG "日志"
|
||||
t IDC_LOG_CLEAR "清除日志"
|
||||
t IDC_LOG_SAVE "保存日志"
|
||||
t IDCANCEL "关闭日志"
|
||||
|
||||
s IDD_LICENSE
|
||||
g IDD_LICENSE
|
||||
t IDOK "取消"
|
||||
|
||||
s IDD_UPDATE_POLICY
|
||||
g IDD_UPDATE_POLICY
|
||||
t IDD_UPDATE_POLICY "更新方案和设置"
|
||||
t IDS_UPDATE_SETTINGS_TXT "设置"
|
||||
t IDS_UPDATE_SETTINGS_GRP "设置"
|
||||
t IDS_UPDATE_FREQUENCY_TXT "检查更新:"
|
||||
t IDS_INCLUDE_BETAS_TXT "包括测试版本:"
|
||||
t IDC_CHECK_NOW "立即检查"
|
||||
t IDCANCEL "取消"
|
||||
|
||||
s IDD_NEW_VERSION
|
||||
g IDD_NEW_VERSION
|
||||
t IDD_NEW_VERSION "检查更新 - Rufus"
|
||||
t IDS_NEW_VERSION_AVAIL_TXT "更新的版本可用。请下载最新版本!"
|
||||
t IDC_WEBSITE "点击这里进入网站"
|
||||
t IDS_NEW_VERSION_NOTES_TXT "发行说明"
|
||||
t IDS_NEW_VERSION_DOWNLOAD_TXT "下载"
|
||||
t IDS_NEW_VERSION_NOTES_GRP "发行说明"
|
||||
t IDS_NEW_VERSION_DOWNLOAD_GRP "下载"
|
||||
t IDC_DOWNLOAD "下载"
|
||||
t IDCANCEL "取消"
|
||||
|
||||
s IDD_ISO_EXTRACT
|
||||
g IDD_ISO_EXTRACT
|
||||
t IDD_ISO_EXTRACT "复制ISO文件..."
|
||||
t IDC_ISO_FILENAME "打开ISO映像 - 请稍候..."
|
||||
t IDC_ISO_ABORT "取消"
|
||||
|
||||
s IDD_MESSAGES
|
||||
g IDD_MESSAGES
|
||||
t MSG_004 "更新方案和设置"
|
||||
t MSG_005 "你要允許此應用程序檢查更新?"
|
||||
t MSG_006 "关闭"
|
||||
|
|
|
@ -328,7 +328,7 @@ static void print_status(void)
|
|||
percent = calc_percent((unsigned long) currently_testing,
|
||||
(unsigned long) num_blocks);
|
||||
percent = (percent/2.0f) + ((cur_op==OP_READ)? 50.0f : 0.0f);
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_535,
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_235,
|
||||
cur_pattern, nr_pattern,
|
||||
percent,
|
||||
num_read_errors,
|
||||
|
@ -359,7 +359,7 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern,
|
|||
for (ptr = buffer; ptr < buffer + n; ptr++) {
|
||||
(*ptr) = rand() % (1 << (8 * sizeof(char)));
|
||||
}
|
||||
PrintStatus(3500, FALSE, lmprintf(MSG_536));
|
||||
PrintStatus(3500, FALSE, lmprintf(MSG_236));
|
||||
} else {
|
||||
bpattern[0] = 0;
|
||||
for (i = 0; i < sizeof(bpattern); i++) {
|
||||
|
@ -376,7 +376,7 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern,
|
|||
else
|
||||
i--;
|
||||
}
|
||||
PrintStatus(3500, FALSE, lmprintf(MSG_537, bpattern[i]));
|
||||
PrintStatus(3500, FALSE, lmprintf(MSG_237, bpattern[i]));
|
||||
cur_pattern++;
|
||||
}
|
||||
}
|
||||
|
@ -429,7 +429,7 @@ static unsigned int test_rw(HANDLE hDrive, blk_t last_block, size_t block_size,
|
|||
size_t blocks_at_once, int nb_passes)
|
||||
{
|
||||
unsigned char *buffer = NULL, *read_buffer;
|
||||
const unsigned int pattern[] = {0xaa, 0x55, 0xff, 0x00};
|
||||
const unsigned int pattern[] = BADBLOCK_PATTERNS;
|
||||
int i, pat_idx;
|
||||
unsigned int bb_count = 0;
|
||||
blk_t got, tryout, recover_block = ~0, *blk_id;
|
||||
|
|
|
@ -626,7 +626,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
|||
DWORD size;
|
||||
LONGLONG size_in_sectors;
|
||||
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_538, PartitionTypeName[partition_style]));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_238, PartitionTypeName[partition_style]));
|
||||
|
||||
if ((partition_style == PARTITION_STYLE_GPT) || (!IsChecked(IDC_EXTRA_PARTITION))) {
|
||||
// Go with the MS 1 MB wastage at the beginning...
|
||||
|
@ -773,7 +773,7 @@ BOOL DeletePartitions(HANDLE hDrive)
|
|||
DWORD size;
|
||||
CREATE_DISK CreateDisk = {PARTITION_STYLE_RAW, {{0}}};
|
||||
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_539));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_239));
|
||||
|
||||
size = sizeof(CreateDisk);
|
||||
r = DeviceIoControl(hDrive, IOCTL_DISK_CREATE_DISK,
|
||||
|
|
42
src/format.c
42
src/format.c
|
@ -68,16 +68,16 @@ static BOOLEAN __stdcall FormatExCallback(FILE_SYSTEM_CALLBACK_COMMAND Command,
|
|||
switch(Command) {
|
||||
case FCC_PROGRESS:
|
||||
percent = (DWORD*)pData;
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_517, *percent));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_217, *percent));
|
||||
UpdateProgress(OP_FORMAT, 1.0f * (*percent));
|
||||
break;
|
||||
case FCC_STRUCTURE_PROGRESS: // No progress on quick format
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_518, ++task_number, nb_steps[fs_index]));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_218, ++task_number, nb_steps[fs_index]));
|
||||
format_percent += 100.0f / (1.0f * nb_steps[fs_index]);
|
||||
UpdateProgress(OP_CREATE_FS, format_percent);
|
||||
break;
|
||||
case FCC_DONE:
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_518, nb_steps[fs_index], nb_steps[fs_index]));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_218, nb_steps[fs_index], nb_steps[fs_index]));
|
||||
UpdateProgress(OP_CREATE_FS, 100.0f);
|
||||
if(*(BOOLEAN*)pData == FALSE) {
|
||||
uprintf("Error while formatting.\n");
|
||||
|
@ -152,7 +152,7 @@ static BOOLEAN __stdcall ChkdskCallback(FILE_SYSTEM_CALLBACK_COMMAND Command, DW
|
|||
case FCC_PROGRESS:
|
||||
case FCC_CHECKDISK_PROGRESS:
|
||||
percent = (DWORD*)pData;
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_519, *percent));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_219, *percent));
|
||||
break;
|
||||
case FCC_DONE:
|
||||
if(*(BOOLEAN*)pData == FALSE) {
|
||||
|
@ -366,7 +366,7 @@ static BOOL FormatFAT32(DWORD DriveIndex)
|
|||
ULONGLONG FatNeeded, ClusterCount;
|
||||
|
||||
// TODO: use another lmsg for Large FAT32
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_522, "Large FAT32"));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_222, "Large FAT32"));
|
||||
VolumeId = GetVolumeID();
|
||||
|
||||
// Open the drive and lock it
|
||||
|
@ -551,7 +551,7 @@ static BOOL FormatFAT32(DWORD DriveIndex)
|
|||
format_percent = 0.0f;
|
||||
for (i=0; i<(SystemAreaSize+BurstSize-1); i+=BurstSize) {
|
||||
format_percent = (100.0f*i)/(1.0f*(SystemAreaSize+BurstSize));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_517, (int)format_percent));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_217, (int)format_percent));
|
||||
UpdateProgress(OP_FORMAT, format_percent);
|
||||
if (IS_ERROR(FormatStatus)) goto out; // For cancellation
|
||||
if (write_sectors(hLogicalVolume, BytesPerSect, i, BurstSize, pZeroSect) != (BytesPerSect*BurstSize)) {
|
||||
|
@ -577,7 +577,7 @@ static BOOL FormatFAT32(DWORD DriveIndex)
|
|||
// Set the FAT32 volume label
|
||||
GetWindowTextW(hLabel, wLabel, ARRAYSIZE(wLabel));
|
||||
ToValidLabel(wLabel, TRUE);
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_521));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_221));
|
||||
// Handle must be closed for SetVolumeLabel to work
|
||||
safe_closehandle(hLogicalVolume);
|
||||
VolumeName = GetLogicalName(DriveIndex, TRUE, TRUE);
|
||||
|
@ -611,13 +611,13 @@ static BOOL FormatDrive(DWORD DriveIndex)
|
|||
char FSType[32];
|
||||
char *locale, *VolumeName = NULL;
|
||||
WCHAR* wVolumeName = NULL;
|
||||
WCHAR wFSType[32];
|
||||
WCHAR wFSType[64];
|
||||
WCHAR wLabel[64];
|
||||
ULONG ulClusterSize;
|
||||
size_t i;
|
||||
|
||||
GetWindowTextA(hFileSystem, FSType, ARRAYSIZE(FSType));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_522, FSType));
|
||||
GetWindowTextU(hFileSystem, FSType, ARRAYSIZE(FSType));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_222, FSType));
|
||||
VolumeName = GetLogicalName(DriveIndex, FALSE, TRUE);
|
||||
wVolumeName = utf8_to_wchar(VolumeName);
|
||||
if (wVolumeName == NULL) {
|
||||
|
@ -679,7 +679,7 @@ static BOOL CheckDisk(char DriveLetter)
|
|||
size_t i;
|
||||
|
||||
wDriveRoot[0] = (WCHAR)DriveLetter;
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_523));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_223));
|
||||
|
||||
PF_INIT_OR_OUT(Chkdsk, fmifs);
|
||||
|
||||
|
@ -771,7 +771,7 @@ static BOOL ClearMBRGPT(HANDLE hPhysicalDrive, LONGLONG DiskSize, DWORD SectorSi
|
|||
uint64_t i, last_sector = DiskSize/SectorSize;
|
||||
unsigned char* pBuf = (unsigned char*) calloc(SectorSize, 1);
|
||||
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_524));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_224));
|
||||
if (pBuf == NULL) {
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_ENOUGH_MEMORY;
|
||||
goto out;
|
||||
|
@ -1173,7 +1173,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
pt = GETPARTTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_525));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_225));
|
||||
hPhysicalDrive = GetPhysicalHandle(DriveIndex, TRUE, TRUE);
|
||||
if (hPhysicalDrive == INVALID_HANDLE_VALUE) {
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_OPEN_FAILED;
|
||||
|
@ -1210,7 +1210,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
}
|
||||
CHECK_FOR_USER_CANCEL;
|
||||
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_526));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_226));
|
||||
AnalyzeMBR(hPhysicalDrive);
|
||||
if ((hLogicalVolume != NULL) && (hLogicalVolume != INVALID_HANDLE_VALUE)) {
|
||||
AnalyzePBR(hLogicalVolume);
|
||||
|
@ -1282,7 +1282,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
}
|
||||
// Close the (unmounted) volume before formatting
|
||||
if ((hLogicalVolume != NULL) && (hLogicalVolume != INVALID_HANDLE_VALUE)) {
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_527));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_227));
|
||||
if (!CloseHandle(hLogicalVolume)) {
|
||||
uprintf("Could not close volume: %s\n", WindowsErrorString());
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_ACCESS_DENIED;
|
||||
|
@ -1329,7 +1329,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
|
||||
// Thanks to Microsoft, we must fix the MBR AFTER the drive has been formatted
|
||||
if (pt == PARTITION_STYLE_MBR) {
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_528));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_228));
|
||||
if (!WriteMBR(hPhysicalDrive)) {
|
||||
if (!IS_ERROR(FormatStatus))
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||
|
@ -1376,7 +1376,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
}
|
||||
// NB: if you unmount the logical volume here, XP will report error:
|
||||
// [0x00000456] The media in the drive may have changed
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_529));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_229));
|
||||
if (!WritePBR(hLogicalVolume)) {
|
||||
if (!IS_ERROR(FormatStatus))
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||
|
@ -1405,7 +1405,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
if (IsChecked(IDC_BOOT)) {
|
||||
if ((dt == DT_WINME) || (dt == DT_FREEDOS)) {
|
||||
UpdateProgress(OP_DOS, -1.0f);
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_530));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_230));
|
||||
if (!ExtractDOS(drive_name)) {
|
||||
if (!IS_ERROR(FormatStatus))
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY;
|
||||
|
@ -1414,7 +1414,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
} else if (dt == DT_ISO) {
|
||||
if (iso_path != NULL) {
|
||||
UpdateProgress(OP_DOS, 0.0f);
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_531));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_231));
|
||||
drive_name[2] = 0;
|
||||
if (!ExtractISO(iso_path, drive_name, FALSE)) {
|
||||
if (!IS_ERROR(FormatStatus))
|
||||
|
@ -1423,7 +1423,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
}
|
||||
if ((bt == BT_UEFI) && (!iso_report.has_efi) && (iso_report.has_win7_efi)) {
|
||||
// TODO: (v1.3.4) check ISO with EFI only
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_532));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_232));
|
||||
wim_image[0] = drive_name[0];
|
||||
efi_dst[0] = drive_name[0];
|
||||
efi_dst[sizeof(efi_dst) - sizeof("\\bootx64.efi")] = 0;
|
||||
|
@ -1446,7 +1446,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
}
|
||||
}
|
||||
UpdateProgress(OP_FINALIZE, -1.0f);
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_533));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_233));
|
||||
if (IsChecked(IDC_SET_ICON))
|
||||
SetAutorun(drive_name);
|
||||
// Issue another complete remount before we exit, to ensure we're clean
|
||||
|
|
|
@ -432,14 +432,14 @@ BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
|
|||
// String array of all isolinux/syslinux locations
|
||||
StrArrayCreate(&config_path, 8);
|
||||
// Change the Window title and static text
|
||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_502));
|
||||
SetWindowTextU(hISOFileName, lmprintf(MSG_502));
|
||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_202));
|
||||
SetWindowTextU(hISOFileName, lmprintf(MSG_202));
|
||||
// Change progress style to marquee for scanning
|
||||
SetWindowLong(hISOProgressBar, GWL_STYLE, progress_style | PBS_MARQUEE);
|
||||
SendMessage(hISOProgressBar, PBM_SETMARQUEE, TRUE, 0);
|
||||
} else {
|
||||
uprintf("Extracting files...\n");
|
||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_531));
|
||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_231));
|
||||
if (total_blocks == 0) {
|
||||
uprintf("Error: ISO has not been properly scanned.\n");
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_ISO_SCAN);
|
||||
|
|
|
@ -19,16 +19,17 @@
|
|||
|
||||
const char* about_blurb_format =
|
||||
"{\\rtf1\\ansi\n"
|
||||
"{\\b\\fs20Rufus - The Reliable USB Formatting Utility}\\line\n"
|
||||
"\\fs18Version %d.%d.%d (Build %d)\\line\n"
|
||||
"{\\b\\fs20%s}\\line\n"
|
||||
"\\fs18%s\\line\n"
|
||||
"\\line\n"
|
||||
"Copyright © 2011-2013 Pete Batard / Akeo\\line\n"
|
||||
RUFUS_URL "\\line\n"
|
||||
"%s\\line\n"
|
||||
"\\line\n"
|
||||
"Report bugs or request enhancements at:\\line\n"
|
||||
"%s\\line\n"
|
||||
"https://github.com/pbatard/rufus/issues\\line\n"
|
||||
"\\line\n"
|
||||
"{\\b\\fs18Additional Copyrights:}}";
|
||||
"{\\b\\fs18 %s}}";
|
||||
|
||||
const char* additional_copyrights =
|
||||
"{\\rtf1\\ansi\n"
|
||||
|
@ -90,17 +91,15 @@ const char* additional_copyrights =
|
|||
|
||||
const char* update_policy =
|
||||
"{\\rtf1\\ansi{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}{\\f1\\fnil\\fcharset2 Symbol;}}\n"
|
||||
"\\fs16\\b Update Policy:\\b0\\line\n"
|
||||
"If you choose to allow this program to check for application updates, you agree that the following information may be collected on our server(s):\\par\n"
|
||||
"\\pard{\\pntext\\f1\\'B7\\tab}{\\*\\pn\\pnlvlblt\\pnf2\\pnindent0{\\pntxtb\\'B7}}\\fi-150\\li220 Your operating system's architecture and version\\par\n"
|
||||
"{\\pntext\\f1\\'B7\\tab}The version of the application you use\\par\n"
|
||||
"{\\pntext\\f1\\'B7\\tab}Your IP address\\line\\pard\n"
|
||||
"\\fs16\\b %s\\b0\\line\n"
|
||||
"%s:\\par\n"
|
||||
"\\pard{\\pntext\\f1\\'B7\\tab}{\\*\\pn\\pnlvlblt\\pnf2\\pnindent0{\\pntxtb\\'B7}}\\fi-150\\li220 %s\\par\n"
|
||||
"{\\pntext\\f1\\'B7\\tab}%s\\par\n"
|
||||
"{\\pntext\\f1\\'B7\\tab}%s\\line\\pard\n"
|
||||
"\\line\n"
|
||||
"For the purpose of generating private usage statistics, we may keep the information collected, \n"
|
||||
"\\b for at most a year\\b0 . However, we will not willingly disclose any of this individual data to third parties.\\line\n\\line\n"
|
||||
"\\b Update Process:\\b0\\line\n"
|
||||
APPLICATION_NAME " does not install or run background services, therefore update checks are performed only when the main application is running.\\line\n"
|
||||
"Internet access is of course required when checking for updates.\\line\n"
|
||||
"%s\\line\n\\line\n"
|
||||
"\\b %s\\b0\\line\n"
|
||||
"%s\\line\n"
|
||||
"}";
|
||||
|
||||
const char* gplv3 =
|
||||
|
|
|
@ -53,11 +53,11 @@ const loc_parse parse_cmd[9] = {
|
|||
// Translate the text control associated with an ID
|
||||
{ 't', LC_TEXT, "cs" }, // t IDC_CONTROL "Translation"
|
||||
// Set the section/dialog to which the next commands should apply
|
||||
{ 's', LC_SECTION, "c" }, // p IDD_DIALOG
|
||||
{ 'g', LC_GROUP, "c" }, // g IDD_DIALOG
|
||||
// Resize a dialog (dx dy pixel increment)
|
||||
{ 'r', LC_RESIZE, "cii" }, // t IDC_CONTROL +10 +10
|
||||
{ 's', LC_SIZE, "cii" }, // s IDC_CONTROL +10 +10
|
||||
// Move a dialog (dx dy pixed displacement)
|
||||
{ 'm', LC_MOVE, "cii" }, // t IDC_CONTROL -5 0
|
||||
{ 'm', LC_MOVE, "cii" }, // m IDC_CONTROL -5 0
|
||||
// Set the font to use for the text controls that follow
|
||||
// Use f "Default" 0 to reset the font
|
||||
{ 'f', LC_FONT, "si" }, // f "MS Dialog" 10
|
||||
|
@ -164,12 +164,12 @@ BOOL dispatch_loc_cmd(loc_cmd* lcmd)
|
|||
// NB: For commands that take an ID, ctrl_id is always a valid index at this stage
|
||||
case LC_TEXT:
|
||||
case LC_MOVE:
|
||||
case LC_RESIZE:
|
||||
case LC_SIZE:
|
||||
add_dialog_command(dlg_index, lcmd);
|
||||
break;
|
||||
case LC_SECTION:
|
||||
case LC_GROUP:
|
||||
if ((lcmd->ctrl_id-IDD_DIALOG) > ARRAYSIZE(loc_dlg)) {
|
||||
luprintf("'%s' is not a section ID\n", lcmd->txt[0]);
|
||||
luprintf("'%s' is not a group ID\n", lcmd->txt[0]);
|
||||
goto err;
|
||||
}
|
||||
dlg_index = lcmd->ctrl_id - IDD_DIALOG;
|
||||
|
@ -203,7 +203,6 @@ void apply_localization(int dlg_id, HWND hDlg)
|
|||
LONG_PTR style;
|
||||
BOOL left_to_right = FALSE;
|
||||
|
||||
|
||||
if ((dlg_id >= id_start) && (dlg_id < id_end)) {
|
||||
// If we have a valid dialog_id, just process that one dialog
|
||||
id_start = dlg_id;
|
||||
|
@ -257,7 +256,7 @@ void apply_localization(int dlg_id, HWND hDlg)
|
|||
ResizeMoveCtrl(hDlg, hCtrl, lcmd->num[0], lcmd->num[1], 0, 0);
|
||||
}
|
||||
break;
|
||||
case LC_RESIZE:
|
||||
case LC_SIZE:
|
||||
if (hCtrl != NULL) {
|
||||
ResizeMoveCtrl(hDlg, hCtrl, 0, 0, lcmd->num[0], lcmd->num[1]);
|
||||
}
|
||||
|
@ -287,12 +286,11 @@ void reset_localization(int dlg_id)
|
|||
char* lmprintf(int msg_id, ...)
|
||||
{
|
||||
static int buf_id = 0;
|
||||
static char buf[4][2048];
|
||||
static char buf[LOC_MESSAGE_NB][LOC_MESSAGE_SIZE];
|
||||
char *format = NULL;
|
||||
va_list args;
|
||||
loc_cmd* lcmd;
|
||||
|
||||
buf_id %= 4;
|
||||
buf_id %= LOC_MESSAGE_NB;
|
||||
buf[buf_id][0] = 0;
|
||||
list_for_each_entry(lcmd, &loc_dlg[IDD_MESSAGES-IDD_DIALOG].list, loc_cmd, list) {
|
||||
if ((lcmd->command == LC_TEXT) && (lcmd->ctrl_id == msg_id) && (lcmd->txt[1] != NULL)) {
|
||||
|
@ -301,12 +299,13 @@ char* lmprintf(int msg_id, ...)
|
|||
}
|
||||
|
||||
if (format == NULL) {
|
||||
safe_sprintf(buf[buf_id], 2047, "MSG_%03d UNTRANSLATED", msg_id - MSG_000);
|
||||
// TODO: fallback to English!
|
||||
safe_sprintf(buf[buf_id], LOC_MESSAGE_SIZE-1, "MSG_%03d UNTRANSLATED", msg_id - MSG_000);
|
||||
} else {
|
||||
va_start(args, msg_id);
|
||||
safe_vsnprintf(buf[buf_id], 2047, format, args);
|
||||
safe_vsnprintf(buf[buf_id], LOC_MESSAGE_SIZE-1, format, args);
|
||||
va_end(args);
|
||||
buf[buf_id][2047] = '\0';
|
||||
buf[buf_id][LOC_MESSAGE_SIZE-1] = '\0';
|
||||
}
|
||||
return buf[buf_id++];
|
||||
}
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
// Number of concurrent localization messages. Must be a power of 2.
|
||||
#define LOC_MESSAGE_NB 8
|
||||
#define LOC_MESSAGE_SIZE 2048
|
||||
|
||||
// TODO: display control name on mouseover
|
||||
// Link to http://www.resedit.net/
|
||||
|
||||
|
@ -98,9 +102,9 @@ static __inline void list_del(struct list_head *entry)
|
|||
// Commands that take a control ID *MUST* be at the top
|
||||
// The last command with a control ID *MUST* be LC_TEXT
|
||||
enum loc_command_type {
|
||||
LC_SECTION,
|
||||
LC_GROUP,
|
||||
LC_MOVE,
|
||||
LC_RESIZE,
|
||||
LC_SIZE,
|
||||
LC_TEXT, // Delimits commands that take a Control ID and commands that don't
|
||||
LC_VERSION,
|
||||
LC_LOCALE,
|
||||
|
@ -140,7 +144,7 @@ typedef struct loc_dlg_list_struct {
|
|||
extern const loc_parse parse_cmd[9];
|
||||
extern struct list_head locale_list;
|
||||
int loc_line_nr;
|
||||
char loc_filename[32];
|
||||
char loc_filename[MAX_PATH];
|
||||
|
||||
void free_loc_cmd(loc_cmd* lcmd);
|
||||
BOOL dispatch_loc_cmd(loc_cmd* lcmd);
|
||||
|
@ -151,7 +155,7 @@ void reset_localization(int dlg_id);
|
|||
void free_dialog_list(void);
|
||||
char* lmprintf(int msg_id, ...);
|
||||
BOOL get_supported_locales(const char* filename);
|
||||
char* get_loc_data_file(const char* filename, long offset, long end_offset);
|
||||
char* get_loc_data_file(const char* filename, long offset, long end_offset, int start_line);
|
||||
void free_locale_list(void);
|
||||
loc_cmd* get_locale_from_lcid(int lcid);
|
||||
loc_cmd* get_locale_from_name(char* locale_name);
|
||||
|
|
|
@ -39,7 +39,7 @@ const loc_control_id control_id[] = {
|
|||
LOC_CTRL(IDC_DEVICE),
|
||||
LOC_CTRL(IDC_FILESYSTEM),
|
||||
LOC_CTRL(IDC_START),
|
||||
LOC_CTRL(IDC_PARTITION_SCHEME),
|
||||
LOC_CTRL(IDC_PARTITION_TYPE),
|
||||
LOC_CTRL(IDC_CLUSTERSIZE),
|
||||
LOC_CTRL(IDC_STATUS),
|
||||
LOC_CTRL(IDC_ABOUT),
|
||||
|
@ -69,7 +69,7 @@ const loc_control_id control_id[] = {
|
|||
LOC_CTRL(IDC_NOTIFICATION_TEXT),
|
||||
LOC_CTRL(IDC_NOTIFICATION_LINE),
|
||||
LOC_CTRL(IDC_ADVANCED),
|
||||
LOC_CTRL(IDC_ADVANCED_GROUP),
|
||||
LOC_CTRL(IDS_ADVANCED_OPTIONS_GRP),
|
||||
LOC_CTRL(IDC_LOG),
|
||||
LOC_CTRL(IDC_LOG_EDIT),
|
||||
LOC_CTRL(IDC_LOG_SAVE),
|
||||
|
@ -90,13 +90,14 @@ const loc_control_id control_id[] = {
|
|||
LOC_CTRL(IDS_FILESYSTEM_TXT),
|
||||
LOC_CTRL(IDS_CLUSTERSIZE_TXT),
|
||||
LOC_CTRL(IDS_LABEL_TXT),
|
||||
LOC_CTRL(IDS_FORMATOPTIONS_TXT),
|
||||
LOC_CTRL(IDS_UPDATE_SETTINGS_TXT),
|
||||
LOC_CTRL(IDS_FORMAT_OPTIONS_GRP),
|
||||
LOC_CTRL(IDS_UPDATE_SETTINGS_GRP),
|
||||
LOC_CTRL(IDS_UPDATE_FREQUENCY_TXT),
|
||||
LOC_CTRL(IDS_INCLUDE_BETAS_TXT),
|
||||
LOC_CTRL(IDS_NEW_VERSION_AVAIL_TXT),
|
||||
LOC_CTRL(IDS_NEW_VERSION_DOWNLOAD_TXT),
|
||||
LOC_CTRL(IDS_NEW_VERSION_NOTES_TXT),
|
||||
LOC_CTRL(IDS_NEW_VERSION_DOWNLOAD_GRP),
|
||||
LOC_CTRL(IDS_NEW_VERSION_NOTES_GRP),
|
||||
LOC_CTRL(IDS_CHECK_NOW_GRP),
|
||||
LOC_CTRL(MSG_000),
|
||||
LOC_CTRL(MSG_001),
|
||||
LOC_CTRL(MSG_002),
|
||||
|
@ -197,106 +198,165 @@ const loc_control_id control_id[] = {
|
|||
LOC_CTRL(MSG_097),
|
||||
LOC_CTRL(MSG_098),
|
||||
LOC_CTRL(MSG_099),
|
||||
LOC_CTRL(MSG_500),
|
||||
LOC_CTRL(MSG_501),
|
||||
LOC_CTRL(MSG_502),
|
||||
LOC_CTRL(MSG_503),
|
||||
LOC_CTRL(MSG_504),
|
||||
LOC_CTRL(MSG_505),
|
||||
LOC_CTRL(MSG_506),
|
||||
LOC_CTRL(MSG_507),
|
||||
LOC_CTRL(MSG_508),
|
||||
LOC_CTRL(MSG_509),
|
||||
LOC_CTRL(MSG_510),
|
||||
LOC_CTRL(MSG_511),
|
||||
LOC_CTRL(MSG_512),
|
||||
LOC_CTRL(MSG_513),
|
||||
LOC_CTRL(MSG_514),
|
||||
LOC_CTRL(MSG_515),
|
||||
LOC_CTRL(MSG_516),
|
||||
LOC_CTRL(MSG_517),
|
||||
LOC_CTRL(MSG_518),
|
||||
LOC_CTRL(MSG_519),
|
||||
LOC_CTRL(MSG_520),
|
||||
LOC_CTRL(MSG_521),
|
||||
LOC_CTRL(MSG_522),
|
||||
LOC_CTRL(MSG_523),
|
||||
LOC_CTRL(MSG_524),
|
||||
LOC_CTRL(MSG_525),
|
||||
LOC_CTRL(MSG_526),
|
||||
LOC_CTRL(MSG_527),
|
||||
LOC_CTRL(MSG_528),
|
||||
LOC_CTRL(MSG_529),
|
||||
LOC_CTRL(MSG_530),
|
||||
LOC_CTRL(MSG_531),
|
||||
LOC_CTRL(MSG_532),
|
||||
LOC_CTRL(MSG_533),
|
||||
LOC_CTRL(MSG_534),
|
||||
LOC_CTRL(MSG_535),
|
||||
LOC_CTRL(MSG_536),
|
||||
LOC_CTRL(MSG_537),
|
||||
LOC_CTRL(MSG_538),
|
||||
LOC_CTRL(MSG_539),
|
||||
LOC_CTRL(MSG_540),
|
||||
LOC_CTRL(MSG_541),
|
||||
LOC_CTRL(MSG_542),
|
||||
LOC_CTRL(MSG_543),
|
||||
LOC_CTRL(MSG_544),
|
||||
LOC_CTRL(MSG_545),
|
||||
LOC_CTRL(MSG_546),
|
||||
LOC_CTRL(MSG_547),
|
||||
LOC_CTRL(MSG_548),
|
||||
LOC_CTRL(MSG_549),
|
||||
LOC_CTRL(MSG_550),
|
||||
LOC_CTRL(MSG_551),
|
||||
LOC_CTRL(MSG_552),
|
||||
LOC_CTRL(MSG_553),
|
||||
LOC_CTRL(MSG_554),
|
||||
LOC_CTRL(MSG_555),
|
||||
LOC_CTRL(MSG_556),
|
||||
LOC_CTRL(MSG_557),
|
||||
LOC_CTRL(MSG_558),
|
||||
LOC_CTRL(MSG_559),
|
||||
LOC_CTRL(MSG_560),
|
||||
LOC_CTRL(MSG_561),
|
||||
LOC_CTRL(MSG_562),
|
||||
LOC_CTRL(MSG_563),
|
||||
LOC_CTRL(MSG_564),
|
||||
LOC_CTRL(MSG_565),
|
||||
LOC_CTRL(MSG_566),
|
||||
LOC_CTRL(MSG_567),
|
||||
LOC_CTRL(MSG_568),
|
||||
LOC_CTRL(MSG_569),
|
||||
LOC_CTRL(MSG_570),
|
||||
LOC_CTRL(MSG_571),
|
||||
LOC_CTRL(MSG_572),
|
||||
LOC_CTRL(MSG_573),
|
||||
LOC_CTRL(MSG_574),
|
||||
LOC_CTRL(MSG_575),
|
||||
LOC_CTRL(MSG_576),
|
||||
LOC_CTRL(MSG_577),
|
||||
LOC_CTRL(MSG_578),
|
||||
LOC_CTRL(MSG_579),
|
||||
LOC_CTRL(MSG_580),
|
||||
LOC_CTRL(MSG_581),
|
||||
LOC_CTRL(MSG_582),
|
||||
LOC_CTRL(MSG_583),
|
||||
LOC_CTRL(MSG_584),
|
||||
LOC_CTRL(MSG_585),
|
||||
LOC_CTRL(MSG_586),
|
||||
LOC_CTRL(MSG_587),
|
||||
LOC_CTRL(MSG_588),
|
||||
LOC_CTRL(MSG_589),
|
||||
LOC_CTRL(MSG_590),
|
||||
LOC_CTRL(MSG_591),
|
||||
LOC_CTRL(MSG_592),
|
||||
LOC_CTRL(MSG_593),
|
||||
LOC_CTRL(MSG_594),
|
||||
LOC_CTRL(MSG_595),
|
||||
LOC_CTRL(MSG_596),
|
||||
LOC_CTRL(MSG_597),
|
||||
LOC_CTRL(MSG_598),
|
||||
LOC_CTRL(MSG_599),
|
||||
LOC_CTRL(MSG_100),
|
||||
LOC_CTRL(MSG_101),
|
||||
LOC_CTRL(MSG_102),
|
||||
LOC_CTRL(MSG_103),
|
||||
LOC_CTRL(MSG_104),
|
||||
LOC_CTRL(MSG_105),
|
||||
LOC_CTRL(MSG_106),
|
||||
LOC_CTRL(MSG_107),
|
||||
LOC_CTRL(MSG_108),
|
||||
LOC_CTRL(MSG_109),
|
||||
LOC_CTRL(MSG_110),
|
||||
LOC_CTRL(MSG_111),
|
||||
LOC_CTRL(MSG_112),
|
||||
LOC_CTRL(MSG_113),
|
||||
LOC_CTRL(MSG_114),
|
||||
LOC_CTRL(MSG_115),
|
||||
LOC_CTRL(MSG_116),
|
||||
LOC_CTRL(MSG_117),
|
||||
LOC_CTRL(MSG_118),
|
||||
LOC_CTRL(MSG_119),
|
||||
LOC_CTRL(MSG_120),
|
||||
LOC_CTRL(MSG_121),
|
||||
LOC_CTRL(MSG_122),
|
||||
LOC_CTRL(MSG_123),
|
||||
LOC_CTRL(MSG_124),
|
||||
LOC_CTRL(MSG_125),
|
||||
LOC_CTRL(MSG_126),
|
||||
LOC_CTRL(MSG_127),
|
||||
LOC_CTRL(MSG_128),
|
||||
LOC_CTRL(MSG_129),
|
||||
LOC_CTRL(MSG_130),
|
||||
LOC_CTRL(MSG_131),
|
||||
LOC_CTRL(MSG_132),
|
||||
LOC_CTRL(MSG_133),
|
||||
LOC_CTRL(MSG_134),
|
||||
LOC_CTRL(MSG_135),
|
||||
LOC_CTRL(MSG_136),
|
||||
LOC_CTRL(MSG_137),
|
||||
LOC_CTRL(MSG_138),
|
||||
LOC_CTRL(MSG_139),
|
||||
LOC_CTRL(MSG_140),
|
||||
LOC_CTRL(MSG_141),
|
||||
LOC_CTRL(MSG_142),
|
||||
LOC_CTRL(MSG_143),
|
||||
LOC_CTRL(MSG_144),
|
||||
LOC_CTRL(MSG_145),
|
||||
LOC_CTRL(MSG_146),
|
||||
LOC_CTRL(MSG_147),
|
||||
LOC_CTRL(MSG_148),
|
||||
LOC_CTRL(MSG_149),
|
||||
LOC_CTRL(MSG_150),
|
||||
LOC_CTRL(MSG_151),
|
||||
LOC_CTRL(MSG_152),
|
||||
LOC_CTRL(MSG_153),
|
||||
LOC_CTRL(MSG_154),
|
||||
LOC_CTRL(MSG_155),
|
||||
LOC_CTRL(MSG_156),
|
||||
LOC_CTRL(MSG_157),
|
||||
LOC_CTRL(MSG_158),
|
||||
LOC_CTRL(MSG_159),
|
||||
LOC_CTRL(MSG_160),
|
||||
LOC_CTRL(MSG_161),
|
||||
LOC_CTRL(MSG_162),
|
||||
LOC_CTRL(MSG_163),
|
||||
LOC_CTRL(MSG_164),
|
||||
LOC_CTRL(MSG_165),
|
||||
LOC_CTRL(MSG_166),
|
||||
LOC_CTRL(MSG_167),
|
||||
LOC_CTRL(MSG_168),
|
||||
LOC_CTRL(MSG_169),
|
||||
LOC_CTRL(MSG_170),
|
||||
LOC_CTRL(MSG_171),
|
||||
LOC_CTRL(MSG_172),
|
||||
LOC_CTRL(MSG_173),
|
||||
LOC_CTRL(MSG_174),
|
||||
LOC_CTRL(MSG_175),
|
||||
LOC_CTRL(MSG_176),
|
||||
LOC_CTRL(MSG_177),
|
||||
LOC_CTRL(MSG_178),
|
||||
LOC_CTRL(MSG_179),
|
||||
LOC_CTRL(MSG_180),
|
||||
LOC_CTRL(MSG_181),
|
||||
LOC_CTRL(MSG_182),
|
||||
LOC_CTRL(MSG_183),
|
||||
LOC_CTRL(MSG_184),
|
||||
LOC_CTRL(MSG_185),
|
||||
LOC_CTRL(MSG_186),
|
||||
LOC_CTRL(MSG_187),
|
||||
LOC_CTRL(MSG_188),
|
||||
LOC_CTRL(MSG_189),
|
||||
LOC_CTRL(MSG_190),
|
||||
LOC_CTRL(MSG_191),
|
||||
LOC_CTRL(MSG_192),
|
||||
LOC_CTRL(MSG_193),
|
||||
LOC_CTRL(MSG_194),
|
||||
LOC_CTRL(MSG_195),
|
||||
LOC_CTRL(MSG_196),
|
||||
LOC_CTRL(MSG_197),
|
||||
LOC_CTRL(MSG_198),
|
||||
LOC_CTRL(MSG_199),
|
||||
LOC_CTRL(MSG_200),
|
||||
LOC_CTRL(MSG_201),
|
||||
LOC_CTRL(MSG_202),
|
||||
LOC_CTRL(MSG_203),
|
||||
LOC_CTRL(MSG_204),
|
||||
LOC_CTRL(MSG_205),
|
||||
LOC_CTRL(MSG_206),
|
||||
LOC_CTRL(MSG_207),
|
||||
LOC_CTRL(MSG_208),
|
||||
LOC_CTRL(MSG_209),
|
||||
LOC_CTRL(MSG_210),
|
||||
LOC_CTRL(MSG_211),
|
||||
LOC_CTRL(MSG_212),
|
||||
LOC_CTRL(MSG_213),
|
||||
LOC_CTRL(MSG_214),
|
||||
LOC_CTRL(MSG_215),
|
||||
LOC_CTRL(MSG_216),
|
||||
LOC_CTRL(MSG_217),
|
||||
LOC_CTRL(MSG_218),
|
||||
LOC_CTRL(MSG_219),
|
||||
LOC_CTRL(MSG_220),
|
||||
LOC_CTRL(MSG_221),
|
||||
LOC_CTRL(MSG_222),
|
||||
LOC_CTRL(MSG_223),
|
||||
LOC_CTRL(MSG_224),
|
||||
LOC_CTRL(MSG_225),
|
||||
LOC_CTRL(MSG_226),
|
||||
LOC_CTRL(MSG_227),
|
||||
LOC_CTRL(MSG_228),
|
||||
LOC_CTRL(MSG_229),
|
||||
LOC_CTRL(MSG_230),
|
||||
LOC_CTRL(MSG_231),
|
||||
LOC_CTRL(MSG_232),
|
||||
LOC_CTRL(MSG_233),
|
||||
LOC_CTRL(MSG_234),
|
||||
LOC_CTRL(MSG_235),
|
||||
LOC_CTRL(MSG_236),
|
||||
LOC_CTRL(MSG_237),
|
||||
LOC_CTRL(MSG_238),
|
||||
LOC_CTRL(MSG_239),
|
||||
LOC_CTRL(MSG_240),
|
||||
LOC_CTRL(MSG_241),
|
||||
LOC_CTRL(MSG_242),
|
||||
LOC_CTRL(MSG_243),
|
||||
LOC_CTRL(MSG_244),
|
||||
LOC_CTRL(MSG_245),
|
||||
LOC_CTRL(MSG_246),
|
||||
LOC_CTRL(MSG_247),
|
||||
LOC_CTRL(MSG_248),
|
||||
LOC_CTRL(MSG_249),
|
||||
LOC_CTRL(MSG_250),
|
||||
LOC_CTRL(MSG_251),
|
||||
LOC_CTRL(MSG_252),
|
||||
LOC_CTRL(MSG_253),
|
||||
LOC_CTRL(MSG_254),
|
||||
LOC_CTRL(MSG_255),
|
||||
LOC_CTRL(MSG_256),
|
||||
LOC_CTRL(MSG_257),
|
||||
LOC_CTRL(MSG_258),
|
||||
LOC_CTRL(IDOK),
|
||||
LOC_CTRL(IDCANCEL),
|
||||
LOC_CTRL(IDABORT),
|
||||
|
|
17
src/net.c
17
src/net.c
|
@ -90,6 +90,7 @@ const char* WinInetErrorString(void)
|
|||
if ((error_code < INTERNET_ERROR_BASE) || (error_code > INTERNET_ERROR_LAST))
|
||||
return WindowsErrorString();
|
||||
|
||||
// TODO: These should be localized on an ad-hoc basis
|
||||
switch(error_code) {
|
||||
case ERROR_INTERNET_OUT_OF_HANDLES:
|
||||
return "No more handles could be generated at this time.";
|
||||
|
@ -264,7 +265,7 @@ BOOL DownloadFile(const char* url, const char* file, HWND hProgressDialog)
|
|||
SendMessage(hProgressDialog, UM_ISO_INIT, 0, 0);
|
||||
}
|
||||
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_540, file));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_240, file));
|
||||
uprintf("Downloading %s from %s\n", file, url);
|
||||
|
||||
if (!InternetCrackUrlA(url, (DWORD)safe_strlen(url), 0, &UrlParts)) {
|
||||
|
@ -341,7 +342,7 @@ BOOL DownloadFile(const char* url, const char* file, HWND hProgressDialog)
|
|||
break;
|
||||
dwSize += dwDownloaded;
|
||||
SendMessage(hProgressBar, PBM_SETPOS, (WPARAM)(MAX_PROGRESS*((1.0f*dwSize)/(1.0f*dwTotalSize))), 0);
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_541, (100.0f*dwSize)/(1.0f*dwTotalSize)));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_241, (100.0f*dwSize)/(1.0f*dwTotalSize)));
|
||||
if (fwrite(buf, 1, dwDownloaded, fd) != dwDownloaded) {
|
||||
uprintf("Error writing file '%s': %s\n", file, WinInetErrorString());
|
||||
goto out;
|
||||
|
@ -363,10 +364,10 @@ out:
|
|||
if (fd != NULL) fclose(fd);
|
||||
if (!r) {
|
||||
_unlink(file);
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_542));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_242));
|
||||
SetLastError(error_code);
|
||||
MessageBoxU(hMainDialog, IS_ERROR(FormatStatus)?StrError(FormatStatus):WinInetErrorString(),
|
||||
"File download", MB_OK|MB_ICONERROR);
|
||||
lmprintf(MSG_044), MB_OK|MB_ICONERROR);
|
||||
}
|
||||
if (hRequest) InternetCloseHandle(hRequest);
|
||||
if (hConnection) InternetCloseHandle(hConnection);
|
||||
|
@ -457,7 +458,7 @@ static DWORD WINAPI CheckForUpdatesThread(LPVOID param)
|
|||
}
|
||||
}
|
||||
|
||||
PrintStatus(3000, TRUE, lmprintf(MSG_543));
|
||||
PrintStatus(3000, TRUE, lmprintf(MSG_243));
|
||||
status++; // 1
|
||||
|
||||
if (!GetVersionExA(&os_version)) {
|
||||
|
@ -601,14 +602,14 @@ out:
|
|||
if (hSession) InternetCloseHandle(hSession);
|
||||
switch(status) {
|
||||
case 1:
|
||||
PrintStatus(3000, TRUE, lmprintf(MSG_544));
|
||||
PrintStatus(3000, TRUE, lmprintf(MSG_244));
|
||||
break;
|
||||
case 2:
|
||||
PrintStatus(3000, TRUE, lmprintf(MSG_545));
|
||||
PrintStatus(3000, TRUE, lmprintf(MSG_245));
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
PrintStatus(3000, FALSE, lmprintf(found_new_version?MSG_546:MSG_547));
|
||||
PrintStatus(3000, FALSE, lmprintf(found_new_version?MSG_246:MSG_247));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
31
src/parser.c
31
src/parser.c
|
@ -173,7 +173,7 @@ static void get_loc_data_line(char* line)
|
|||
if (t == '#') // Comment
|
||||
return;
|
||||
if ((t == 0) || ((line[i] != space[0]) && (line[i] != space[1]))) {
|
||||
luprint("syntax error");
|
||||
luprintf("syntax error: '%s'", line);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -226,7 +226,6 @@ BOOL get_supported_locales(const char* filename)
|
|||
i = strspn(line, space);
|
||||
if (line[i] != 'l')
|
||||
continue;
|
||||
// uprintf("Found potential start of loc at line %d\n", loc_line_nr);
|
||||
// line[i] is not NUL so i+1 is safe to access
|
||||
lcmd = get_loc_cmd(line[i], &line[i+1]);
|
||||
if ((lcmd == NULL) || (lcmd->command != LC_LOCALE)) {
|
||||
|
@ -236,10 +235,8 @@ BOOL get_supported_locales(const char* filename)
|
|||
// we use num[0] and num[1] as block delimiter index for this locale in the file
|
||||
if (last_lcmd != NULL) {
|
||||
last_lcmd->num[1] = (int32_t)end_of_block;
|
||||
// uprintf("ended locale block at offset %d\n", last_lcmd->num[1]);
|
||||
}
|
||||
lcmd->num[0] = (int32_t)ftell(fd);
|
||||
// uprintf("started locale block for '%s' at offset %d\n", lcmd->txt[0], lcmd->num[0]);
|
||||
// Add our locale command to the locale list
|
||||
list_add_tail(&lcmd->list, &locale_list);
|
||||
uprintf("localization: found locale '%s'\n", lcmd->txt[0]);
|
||||
|
@ -247,7 +244,6 @@ BOOL get_supported_locales(const char* filename)
|
|||
} while (1);
|
||||
if (last_lcmd != NULL)
|
||||
last_lcmd->num[1] = (int32_t)ftell(fd);
|
||||
// uprintf("ended locale block at offset %d\n", last_lcmd->num[1]);
|
||||
r = !list_empty(&locale_list);
|
||||
if (r == FALSE)
|
||||
uprintf("localization: '%s' contains no locale sections\n", filename);
|
||||
|
@ -262,7 +258,7 @@ out:
|
|||
/*
|
||||
* Parse a locale section in a localization file (UTF-8, no BOM)
|
||||
*/
|
||||
char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
||||
char* get_loc_data_file(const char* filename, long offset, long end_offset, int start_line)
|
||||
{
|
||||
wchar_t *wfilename = NULL;
|
||||
size_t bufsize = 1024;
|
||||
|
@ -277,7 +273,7 @@ char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
|||
return NULL;
|
||||
|
||||
free_dialog_list();
|
||||
loc_line_nr = 0;
|
||||
loc_line_nr = start_line;
|
||||
safe_strcpy(loc_filename, sizeof(loc_filename), filename);
|
||||
wfilename = utf8_to_wchar(filename);
|
||||
if (wfilename == NULL) {
|
||||
|
@ -299,10 +295,6 @@ char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
|||
fseek(fd, offset, SEEK_SET);
|
||||
|
||||
do { // custom readline handling for string collation, realloc, line numbers, etc.
|
||||
if (offset++ > end_offset) {
|
||||
// uprintf("found end of section at offset %d\n", end_offset);
|
||||
goto out;
|
||||
}
|
||||
c = getc(fd);
|
||||
switch(c) {
|
||||
case EOF:
|
||||
|
@ -311,10 +303,6 @@ char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
|||
loc_line_nr += line_nr_incr;
|
||||
get_loc_data_line(buf);
|
||||
goto out;
|
||||
case '\\':
|
||||
if (!escape_sequence)
|
||||
escape_sequence = TRUE;
|
||||
break;
|
||||
case '\r':
|
||||
case '\n':
|
||||
if (escape_sequence) {
|
||||
|
@ -351,6 +339,12 @@ char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
|||
buf[i++] = (char)c;
|
||||
}
|
||||
break;
|
||||
case '\\':
|
||||
if (!escape_sequence) {
|
||||
escape_sequence = TRUE;
|
||||
break;
|
||||
}
|
||||
// fall through on escape sequence
|
||||
default:
|
||||
if (escape_sequence) {
|
||||
switch (c) {
|
||||
|
@ -362,6 +356,9 @@ char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
|||
buf[i++] = '\\';
|
||||
buf[i++] = '"';
|
||||
break;
|
||||
case '\\':
|
||||
buf[i++] = '\\';
|
||||
break;
|
||||
default: // ignore any other escape sequence
|
||||
break;
|
||||
}
|
||||
|
@ -383,6 +380,8 @@ char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
|||
}
|
||||
break;
|
||||
}
|
||||
if (ftell(fd) > end_offset)
|
||||
goto out;
|
||||
// Have at least 2 chars extra, for \r\n sequences
|
||||
if (i >= bufsize-2) {
|
||||
bufsize *= 2;
|
||||
|
@ -399,8 +398,6 @@ char* get_loc_data_file(const char* filename, long offset, long end_offset)
|
|||
} while(1);
|
||||
|
||||
out:
|
||||
// TODO: do we really need this here?
|
||||
// apply_localization(-1, NULL);
|
||||
if (fd != NULL)
|
||||
fclose(fd);
|
||||
safe_free(wfilename);
|
||||
|
|
272
src/resource.h
272
src/resource.h
|
@ -50,7 +50,7 @@
|
|||
#define IDC_DEVICE 1001
|
||||
#define IDC_FILESYSTEM 1002
|
||||
#define IDC_START 1003
|
||||
#define IDC_PARTITION_SCHEME 1004
|
||||
#define IDC_PARTITION_TYPE 1004
|
||||
#define IDC_CLUSTERSIZE 1005
|
||||
#define IDC_STATUS 1006
|
||||
#define IDC_ABOUT 1007
|
||||
|
@ -80,7 +80,7 @@
|
|||
#define IDC_NOTIFICATION_TEXT 1041
|
||||
#define IDC_NOTIFICATION_LINE 1042
|
||||
#define IDC_ADVANCED 1043
|
||||
#define IDC_ADVANCED_GROUP 1044
|
||||
#define IDS_ADVANCED_OPTIONS_GRP 1044
|
||||
#define IDC_LOG 1045
|
||||
#define IDC_LOG_EDIT 1050
|
||||
#define IDC_LOG_SAVE 1051
|
||||
|
@ -101,13 +101,14 @@
|
|||
#define IDS_FILESYSTEM_TXT 2002
|
||||
#define IDS_CLUSTERSIZE_TXT 2003
|
||||
#define IDS_LABEL_TXT 2004
|
||||
#define IDS_FORMATOPTIONS_TXT 2005
|
||||
#define IDS_UPDATE_SETTINGS_TXT 2006
|
||||
#define IDS_FORMAT_OPTIONS_GRP 2005
|
||||
#define IDS_UPDATE_SETTINGS_GRP 2006
|
||||
#define IDS_UPDATE_FREQUENCY_TXT 2007
|
||||
#define IDS_INCLUDE_BETAS_TXT 2008
|
||||
#define IDS_NEW_VERSION_AVAIL_TXT 2009
|
||||
#define IDS_NEW_VERSION_DOWNLOAD_TXT 2010
|
||||
#define IDS_NEW_VERSION_NOTES_TXT 2011
|
||||
#define IDS_NEW_VERSION_DOWNLOAD_GRP 2010
|
||||
#define IDS_NEW_VERSION_NOTES_GRP 2011
|
||||
#define IDS_CHECK_NOW_GRP 2012
|
||||
#define MSG_000 3000
|
||||
#define MSG_001 3001
|
||||
#define MSG_002 3002
|
||||
|
@ -208,106 +209,165 @@
|
|||
#define MSG_097 3097
|
||||
#define MSG_098 3098
|
||||
#define MSG_099 3099
|
||||
#define MSG_500 3500
|
||||
#define MSG_501 3501
|
||||
#define MSG_502 3502
|
||||
#define MSG_503 3503
|
||||
#define MSG_504 3504
|
||||
#define MSG_505 3505
|
||||
#define MSG_506 3506
|
||||
#define MSG_507 3507
|
||||
#define MSG_508 3508
|
||||
#define MSG_509 3509
|
||||
#define MSG_510 3510
|
||||
#define MSG_511 3511
|
||||
#define MSG_512 3512
|
||||
#define MSG_513 3513
|
||||
#define MSG_514 3514
|
||||
#define MSG_515 3515
|
||||
#define MSG_516 3516
|
||||
#define MSG_517 3517
|
||||
#define MSG_518 3518
|
||||
#define MSG_519 3519
|
||||
#define MSG_520 3520
|
||||
#define MSG_521 3521
|
||||
#define MSG_522 3522
|
||||
#define MSG_523 3523
|
||||
#define MSG_524 3524
|
||||
#define MSG_525 3525
|
||||
#define MSG_526 3526
|
||||
#define MSG_527 3527
|
||||
#define MSG_528 3528
|
||||
#define MSG_529 3529
|
||||
#define MSG_530 3530
|
||||
#define MSG_531 3531
|
||||
#define MSG_532 3532
|
||||
#define MSG_533 3533
|
||||
#define MSG_534 3534
|
||||
#define MSG_535 3535
|
||||
#define MSG_536 3536
|
||||
#define MSG_537 3537
|
||||
#define MSG_538 3538
|
||||
#define MSG_539 3539
|
||||
#define MSG_540 3540
|
||||
#define MSG_541 3541
|
||||
#define MSG_542 3542
|
||||
#define MSG_543 3543
|
||||
#define MSG_544 3544
|
||||
#define MSG_545 3545
|
||||
#define MSG_546 3546
|
||||
#define MSG_547 3547
|
||||
#define MSG_548 3548
|
||||
#define MSG_549 3549
|
||||
#define MSG_550 3550
|
||||
#define MSG_551 3551
|
||||
#define MSG_552 3552
|
||||
#define MSG_553 3553
|
||||
#define MSG_554 3554
|
||||
#define MSG_555 3555
|
||||
#define MSG_556 3556
|
||||
#define MSG_557 3557
|
||||
#define MSG_558 3558
|
||||
#define MSG_559 3559
|
||||
#define MSG_560 3560
|
||||
#define MSG_561 3561
|
||||
#define MSG_562 3562
|
||||
#define MSG_563 3563
|
||||
#define MSG_564 3564
|
||||
#define MSG_565 3565
|
||||
#define MSG_566 3566
|
||||
#define MSG_567 3567
|
||||
#define MSG_568 3568
|
||||
#define MSG_569 3569
|
||||
#define MSG_570 3570
|
||||
#define MSG_571 3571
|
||||
#define MSG_572 3572
|
||||
#define MSG_573 3573
|
||||
#define MSG_574 3574
|
||||
#define MSG_575 3575
|
||||
#define MSG_576 3576
|
||||
#define MSG_577 3577
|
||||
#define MSG_578 3578
|
||||
#define MSG_579 3579
|
||||
#define MSG_580 3580
|
||||
#define MSG_581 3581
|
||||
#define MSG_582 3582
|
||||
#define MSG_583 3583
|
||||
#define MSG_584 3584
|
||||
#define MSG_585 3585
|
||||
#define MSG_586 3586
|
||||
#define MSG_587 3587
|
||||
#define MSG_588 3588
|
||||
#define MSG_589 3589
|
||||
#define MSG_590 3590
|
||||
#define MSG_591 3591
|
||||
#define MSG_592 3592
|
||||
#define MSG_593 3593
|
||||
#define MSG_594 3594
|
||||
#define MSG_595 3595
|
||||
#define MSG_596 3596
|
||||
#define MSG_597 3597
|
||||
#define MSG_598 3598
|
||||
#define MSG_599 3599
|
||||
#define MSG_100 3100
|
||||
#define MSG_101 3101
|
||||
#define MSG_102 3102
|
||||
#define MSG_103 3103
|
||||
#define MSG_104 3104
|
||||
#define MSG_105 3105
|
||||
#define MSG_106 3106
|
||||
#define MSG_107 3107
|
||||
#define MSG_108 3108
|
||||
#define MSG_109 3109
|
||||
#define MSG_110 3110
|
||||
#define MSG_111 3111
|
||||
#define MSG_112 3112
|
||||
#define MSG_113 3113
|
||||
#define MSG_114 3114
|
||||
#define MSG_115 3115
|
||||
#define MSG_116 3116
|
||||
#define MSG_117 3117
|
||||
#define MSG_118 3118
|
||||
#define MSG_119 3119
|
||||
#define MSG_120 3120
|
||||
#define MSG_121 3121
|
||||
#define MSG_122 3122
|
||||
#define MSG_123 3123
|
||||
#define MSG_124 3124
|
||||
#define MSG_125 3125
|
||||
#define MSG_126 3126
|
||||
#define MSG_127 3127
|
||||
#define MSG_128 3128
|
||||
#define MSG_129 3129
|
||||
#define MSG_130 3130
|
||||
#define MSG_131 3131
|
||||
#define MSG_132 3132
|
||||
#define MSG_133 3133
|
||||
#define MSG_134 3134
|
||||
#define MSG_135 3135
|
||||
#define MSG_136 3136
|
||||
#define MSG_137 3137
|
||||
#define MSG_138 3138
|
||||
#define MSG_139 3139
|
||||
#define MSG_140 3140
|
||||
#define MSG_141 3141
|
||||
#define MSG_142 3142
|
||||
#define MSG_143 3143
|
||||
#define MSG_144 3144
|
||||
#define MSG_145 3145
|
||||
#define MSG_146 3146
|
||||
#define MSG_147 3147
|
||||
#define MSG_148 3148
|
||||
#define MSG_149 3149
|
||||
#define MSG_150 3150
|
||||
#define MSG_151 3151
|
||||
#define MSG_152 3152
|
||||
#define MSG_153 3153
|
||||
#define MSG_154 3154
|
||||
#define MSG_155 3155
|
||||
#define MSG_156 3156
|
||||
#define MSG_157 3157
|
||||
#define MSG_158 3158
|
||||
#define MSG_159 3159
|
||||
#define MSG_160 3160
|
||||
#define MSG_161 3161
|
||||
#define MSG_162 3162
|
||||
#define MSG_163 3163
|
||||
#define MSG_164 3164
|
||||
#define MSG_165 3165
|
||||
#define MSG_166 3166
|
||||
#define MSG_167 3167
|
||||
#define MSG_168 3168
|
||||
#define MSG_169 3169
|
||||
#define MSG_170 3170
|
||||
#define MSG_171 3171
|
||||
#define MSG_172 3172
|
||||
#define MSG_173 3173
|
||||
#define MSG_174 3174
|
||||
#define MSG_175 3175
|
||||
#define MSG_176 3176
|
||||
#define MSG_177 3177
|
||||
#define MSG_178 3178
|
||||
#define MSG_179 3179
|
||||
#define MSG_180 3180
|
||||
#define MSG_181 3181
|
||||
#define MSG_182 3182
|
||||
#define MSG_183 3183
|
||||
#define MSG_184 3184
|
||||
#define MSG_185 3185
|
||||
#define MSG_186 3186
|
||||
#define MSG_187 3187
|
||||
#define MSG_188 3188
|
||||
#define MSG_189 3189
|
||||
#define MSG_190 3190
|
||||
#define MSG_191 3191
|
||||
#define MSG_192 3192
|
||||
#define MSG_193 3193
|
||||
#define MSG_194 3194
|
||||
#define MSG_195 3195
|
||||
#define MSG_196 3196
|
||||
#define MSG_197 3197
|
||||
#define MSG_198 3198
|
||||
#define MSG_199 3199
|
||||
#define MSG_200 3200
|
||||
#define MSG_201 3201
|
||||
#define MSG_202 3202
|
||||
#define MSG_203 3203
|
||||
#define MSG_204 3204
|
||||
#define MSG_205 3205
|
||||
#define MSG_206 3206
|
||||
#define MSG_207 3207
|
||||
#define MSG_208 3208
|
||||
#define MSG_209 3209
|
||||
#define MSG_210 3210
|
||||
#define MSG_211 3211
|
||||
#define MSG_212 3212
|
||||
#define MSG_213 3213
|
||||
#define MSG_214 3214
|
||||
#define MSG_215 3215
|
||||
#define MSG_216 3216
|
||||
#define MSG_217 3217
|
||||
#define MSG_218 3218
|
||||
#define MSG_219 3219
|
||||
#define MSG_220 3220
|
||||
#define MSG_221 3221
|
||||
#define MSG_222 3222
|
||||
#define MSG_223 3223
|
||||
#define MSG_224 3224
|
||||
#define MSG_225 3225
|
||||
#define MSG_226 3226
|
||||
#define MSG_227 3227
|
||||
#define MSG_228 3228
|
||||
#define MSG_229 3229
|
||||
#define MSG_230 3230
|
||||
#define MSG_231 3231
|
||||
#define MSG_232 3232
|
||||
#define MSG_233 3233
|
||||
#define MSG_234 3234
|
||||
#define MSG_235 3235
|
||||
#define MSG_236 3236
|
||||
#define MSG_237 3237
|
||||
#define MSG_238 3238
|
||||
#define MSG_239 3239
|
||||
#define MSG_240 3240
|
||||
#define MSG_241 3241
|
||||
#define MSG_242 3242
|
||||
#define MSG_243 3243
|
||||
#define MSG_244 3244
|
||||
#define MSG_245 3245
|
||||
#define MSG_246 3246
|
||||
#define MSG_247 3247
|
||||
#define MSG_248 3248
|
||||
#define MSG_249 3249
|
||||
#define MSG_250 3250
|
||||
#define MSG_251 3251
|
||||
#define MSG_252 3252
|
||||
#define MSG_253 3253
|
||||
#define MSG_254 3254
|
||||
#define MSG_255 3255
|
||||
#define MSG_256 3256
|
||||
#define MSG_257 3257
|
||||
#define MSG_258 3258
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
|
|
218
src/rufus.c
218
src/rufus.c
|
@ -89,7 +89,6 @@ struct {
|
|||
const char* FileSystemLabel[FS_MAX] = { "FAT", "FAT32", "NTFS", "UDF", "exFAT" };
|
||||
// Number of steps for each FS for FCC_STRUCTURE_PROGRESS
|
||||
const int nb_steps[FS_MAX] = { 5, 5, 12, 1, 10 };
|
||||
static const char* BiosTypeLabel[BT_MAX] = { "BIOS", "UEFI" };
|
||||
static const char* PartitionTypeLabel[2] = { "MBR", "GPT" };
|
||||
static BOOL existing_key = FALSE; // For LGP set/restore
|
||||
static BOOL size_check = TRUE;
|
||||
|
@ -492,15 +491,12 @@ static void SetPartitionSchemeTooltip(void)
|
|||
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||
pt = GETPARTTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||
if (bt == BT_BIOS) {
|
||||
CreateTooltip(hPartitionScheme, "Usually the safest choice. If you have an UEFI computer and want to install "
|
||||
"an OS in EFI mode however, you should select one of the options below", 15000);
|
||||
CreateTooltip(hPartitionScheme, lmprintf(MSG_150), 15000);
|
||||
} else {
|
||||
if (pt == PARTITION_STYLE_MBR) {
|
||||
CreateTooltip(hPartitionScheme, "Use this if you want to install an OS in EFI mode, but need to access "
|
||||
"the USB content from Windows XP", 15000);
|
||||
CreateTooltip(hPartitionScheme, lmprintf(MSG_151), 15000);
|
||||
} else {
|
||||
CreateTooltip(hPartitionScheme, "The preferred option to install an OS in EFI mode and when "
|
||||
"USB access is not required for Windows XP", 15000);
|
||||
CreateTooltip(hPartitionScheme, lmprintf(MSG_152), 15000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -604,9 +600,8 @@ static BOOL GetUSBDevices(DWORD devnum)
|
|||
LONG maxwidth = 0;
|
||||
RECT rect;
|
||||
char drive_letter;
|
||||
char *label, entry[MAX_PATH], buffer[MAX_PATH];
|
||||
char *label, *entry, buffer[MAX_PATH];
|
||||
const char* usbstor_name = "USBSTOR";
|
||||
const char* generic_friendly_name = "USB Storage Device (Generic)";
|
||||
GUID _GUID_DEVINTERFACE_DISK = // only known to some...
|
||||
{ 0x53f56307L, 0xb6bf, 0x11d0, {0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b} };
|
||||
|
||||
|
@ -637,7 +632,7 @@ static BOOL GetUSBDevices(DWORD devnum)
|
|||
&datatype, (LPBYTE)buffer, sizeof(buffer), &size)) {
|
||||
uprintf("SetupDiGetDeviceRegistryProperty (Friendly Name) failed: %s\n", WindowsErrorString());
|
||||
// We can afford a failure on this call - just replace the name
|
||||
safe_strcpy(buffer, sizeof(buffer), generic_friendly_name);
|
||||
safe_strcpy(buffer, sizeof(buffer), lmprintf(MSG_045));
|
||||
}
|
||||
uprintf("Found device '%s'\n", buffer);
|
||||
|
||||
|
@ -704,7 +699,7 @@ static BOOL GetUSBDevices(DWORD devnum)
|
|||
StrArrayAdd(&DriveLabel, label);
|
||||
// Drive letter ' ' is returned for drives that don't have a volume assigned yet
|
||||
if (drive_letter == ' ') {
|
||||
safe_sprintf(entry, sizeof(entry), "%s (Disk %d)", label, device_number.DeviceNumber);
|
||||
entry = lmprintf(MSG_046, label, device_number.DeviceNumber);
|
||||
} else {
|
||||
if (drive_letter == app_dir[0]) {
|
||||
uprintf("Removing %c: from the list: This is the disk from which " APPLICATION_NAME " is running!\n", drive_letter);
|
||||
|
@ -712,7 +707,7 @@ static BOOL GetUSBDevices(DWORD devnum)
|
|||
safe_free(devint_detail_data);
|
||||
break;
|
||||
}
|
||||
safe_sprintf(entry, sizeof(entry), "%s (%c:)", label, drive_letter);
|
||||
entry = lmprintf(MSG_047, label, drive_letter);
|
||||
}
|
||||
IGNORE_RETVAL(ComboBox_SetItemData(hDeviceList, ComboBox_AddStringU(hDeviceList, entry),
|
||||
device_number.DeviceNumber + DRIVE_INDEX_MIN));
|
||||
|
@ -870,7 +865,7 @@ void UpdateProgress(int op, float percent)
|
|||
static void EnableControls(BOOL bEnable)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hMainDialog, IDC_DEVICE), bEnable);
|
||||
EnableWindow(GetDlgItem(hMainDialog, IDC_PARTITION_SCHEME), bEnable);
|
||||
EnableWindow(GetDlgItem(hMainDialog, IDC_PARTITION_TYPE), bEnable);
|
||||
EnableWindow(GetDlgItem(hMainDialog, IDC_FILESYSTEM), bEnable);
|
||||
EnableWindow(GetDlgItem(hMainDialog, IDC_CLUSTERSIZE), bEnable);
|
||||
EnableWindow(GetDlgItem(hMainDialog, IDC_LABEL), bEnable);
|
||||
|
@ -928,7 +923,7 @@ BOOL CALLBACK LogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
log_size = GetDlgItemTextU(hDlg, IDC_LOG_EDIT, log_buffer, log_size);
|
||||
if (log_size != 0) {
|
||||
log_size--; // remove NUL terminator
|
||||
filepath = FileDialog(TRUE, app_dir, "rufus.log", "log", "Rufus log");
|
||||
filepath = FileDialog(TRUE, app_dir, "rufus.log", "log", lmprintf(MSG_108));
|
||||
if (filepath != NULL) {
|
||||
FileIO(TRUE, filepath, &log_buffer, &log_size);
|
||||
}
|
||||
|
@ -982,14 +977,7 @@ static void CALLBACK BlockingTimer(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD
|
|||
// A write or close operation hasn't made any progress since our last check
|
||||
user_notified = TRUE;
|
||||
uprintf("Blocking I/O operation detected\n");
|
||||
MessageBoxU(hMainDialog,
|
||||
APPLICATION_NAME " detected that Windows is still flushing its internal buffers\n"
|
||||
"onto the USB device.\n\n"
|
||||
"Depending on the speed of your USB device, this operation may\n"
|
||||
"take a long time to complete, especially for large files.\n\n"
|
||||
"We recommend that you let Windows finish, to avoid corruption.\n"
|
||||
"But if you grow tired of waiting, you can just unplug the device...",
|
||||
RUFUS_BLOCKING_IO_TITLE, MB_OK|MB_ICONINFORMATION);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_080), lmprintf(MSG_048), MB_OK|MB_ICONINFORMATION);
|
||||
} else {
|
||||
last_iso_blocking_status = iso_blocking_status;
|
||||
}
|
||||
|
@ -1022,7 +1010,7 @@ BOOL CALLBACK ISOProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
switch (LOWORD(wParam)) {
|
||||
case IDC_ISO_ABORT:
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED;
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_501));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_201));
|
||||
uprintf("Cancelling (from ISO proc.)\n");
|
||||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), FALSE);
|
||||
if (format_thid != NULL)
|
||||
|
@ -1050,10 +1038,10 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
|||
|
||||
if (iso_path == NULL)
|
||||
goto out;
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_502));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_202));
|
||||
if (!ExtractISO(iso_path, "", TRUE)) {
|
||||
SendMessage(hISOProgressDlg, UM_ISO_EXIT, 0, 0);
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_503));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_203));
|
||||
safe_free(iso_path);
|
||||
goto out;
|
||||
}
|
||||
|
@ -1068,9 +1056,7 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
|||
}
|
||||
}
|
||||
if ((!iso_report.has_bootmgr) && (!iso_report.has_isolinux) && (!IS_WINPE(iso_report.winpe)) && (!iso_report.has_efi)) {
|
||||
MessageBoxU(hMainDialog, "This version of " APPLICATION_NAME " only supports bootable ISOs\n"
|
||||
"based on bootmgr/WinPE, isolinux or EFI.\n"
|
||||
"This ISO doesn't appear to use either...", "Unsupported ISO", MB_OK|MB_ICONINFORMATION);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION);
|
||||
safe_free(iso_path);
|
||||
SetMBRProps();
|
||||
} else if (!iso_report.has_syslinux_v5) { // This check is for Syslinux v4.x or earlier
|
||||
|
@ -1084,18 +1070,10 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
|||
fclose(fd);
|
||||
use_own_c32[i] = TRUE;
|
||||
} else {
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_504, old_c32_name[i]));
|
||||
safe_sprintf(msgbox, sizeof(msgbox), "This ISO image seems to use an obsolete version of '%s'.\n"
|
||||
"Boot menus may not may not display properly because of this.\n\n"
|
||||
"A newer version can be downloaded by " APPLICATION_NAME " to fix this issue:\n"
|
||||
"- Choose 'Yes' to connect to the internet and download the file\n"
|
||||
"- Choose 'No' to leave the existing ISO file unmodified\n"
|
||||
"If you don't know what to do, you should select 'Yes'.\n\n"
|
||||
"Note: The new file will be downloaded in the current directory and once a "
|
||||
"'%s' exists there, it will be reused automatically.\n", old_c32_name[i], old_c32_name[i]);
|
||||
safe_sprintf(msgbox_title, sizeof(msgbox_title), "Replace %s?", old_c32_name[i]);
|
||||
if (MessageBoxU(hMainDialog, msgbox, msgbox_title, MB_YESNO|MB_ICONWARNING) == IDYES) {
|
||||
SetWindowTextU(hISOProgressDlg, "Downloading file");
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_204, old_c32_name[i]));
|
||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_084, old_c32_name[i], old_c32_name[i]),
|
||||
lmprintf(MSG_083, old_c32_name[i]), MB_YESNO|MB_ICONWARNING) == IDYES) {
|
||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, old_c32_name[i]));
|
||||
SetWindowTextU(hISOFileName, new_c32_url[i]);
|
||||
if (DownloadFile(new_c32_url[i], old_c32_name[i], hISOProgressDlg))
|
||||
use_own_c32[i] = TRUE;
|
||||
|
@ -1109,7 +1087,7 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
|||
SetFSFromISO();
|
||||
SetMBRProps();
|
||||
for (i=(int)safe_strlen(iso_path); (i>0)&&(iso_path[i]!='\\'); i--);
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_505, &iso_path[i+1]));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_205, &iso_path[i+1]));
|
||||
// Some Linux distros, such as Arch Linux, require the USB drive to have
|
||||
// a specific label => copy the one we got from the ISO image
|
||||
if (iso_report.label[0] != 0) {
|
||||
|
@ -1134,10 +1112,9 @@ void MoveCtrlY(HWND hDlg, int nID, float vertical_shift) {
|
|||
|
||||
void SetPassesTooltip(void)
|
||||
{
|
||||
char passes_tooltip[32];
|
||||
safe_strcpy(passes_tooltip, sizeof(passes_tooltip), "Pattern: 0x55, 0xAA, 0xFF, 0x00");
|
||||
passes_tooltip[13 + ComboBox_GetCurSel(hNBPasses)*6] = 0;
|
||||
CreateTooltip(hNBPasses, passes_tooltip, -1);
|
||||
const unsigned char pattern[] = BADBLOCK_PATTERNS;
|
||||
CreateTooltip(hNBPasses, lmprintf(MSG_153 + ComboBox_GetCurSel(hNBPasses),
|
||||
pattern[0], pattern[1], pattern[2], pattern[3]), -1);
|
||||
}
|
||||
|
||||
// Toggle "advanced" mode
|
||||
|
@ -1190,7 +1167,7 @@ void ToggleAdvanced(void)
|
|||
ShowWindow(GetDlgItem(hMainDialog, IDC_EXTRA_PARTITION), toggle);
|
||||
ShowWindow(GetDlgItem(hMainDialog, IDC_RUFUS_MBR), toggle);
|
||||
ShowWindow(GetDlgItem(hMainDialog, IDC_DISK_ID), toggle);
|
||||
ShowWindow(GetDlgItem(hMainDialog, IDC_ADVANCED_GROUP), toggle);
|
||||
ShowWindow(GetDlgItem(hMainDialog, IDS_ADVANCED_OPTIONS_GRP), toggle);
|
||||
|
||||
// Toggle the up/down icon
|
||||
SendMessage(GetDlgItem(hMainDialog, IDC_ADVANCED), BCM_SETIMAGELIST, 0, (LPARAM)(advanced_mode?&bi_up:&bi_down));
|
||||
|
@ -1200,89 +1177,67 @@ static BOOL BootCheck(void)
|
|||
{
|
||||
int fs, bt, dt, r;
|
||||
FILE* fd;
|
||||
const char* ldlinux_c32 = "ldlinux.c32";
|
||||
const char* ldlinux_name = "ldlinux.c32";
|
||||
|
||||
dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
||||
if (dt == DT_ISO) {
|
||||
if (iso_path == NULL) {
|
||||
MessageBoxU(hMainDialog, "Please click on the disc button to select a bootable ISO,\n"
|
||||
"or uncheck the \"Create a bootable disk...\" checkbox.",
|
||||
"No ISO image selected", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_087), lmprintf(MSG_086), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
}
|
||||
if ((size_check) && (iso_report.projected_size > (uint64_t)SelectedDrive.DiskSize)) {
|
||||
MessageBoxU(hMainDialog, "This ISO image is too big "
|
||||
"for the selected target.", "ISO image too big", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_089), lmprintf(MSG_088), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
}
|
||||
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
||||
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||
if (bt == BT_UEFI) {
|
||||
if (!IS_EFI(iso_report)) {
|
||||
MessageBoxU(hMainDialog, "When using UEFI Target Type, only EFI bootable ISO images are supported. "
|
||||
"Please select an EFI bootable ISO or set the Target Type to BIOS.", "Unsupported ISO", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_091), lmprintf(MSG_090), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
} else if (fs > FS_FAT32) {
|
||||
MessageBoxU(hMainDialog, "When using UEFI Target Type, only FAT/FAT32 is supported. "
|
||||
"Please select FAT/FAT32 as the File system or set the Target Type to BIOS.", "Unsupported filesystem", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_093), lmprintf(MSG_092), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
} else if (iso_report.has_4GB_file) {
|
||||
// Who the heck decided that using FAT32 for UEFI boot was a great idea?!?
|
||||
MessageBoxU(hMainDialog, "This ISO image contains a file larger than 4 GB and cannot be used to create an EFI bootable USB.\r\n"
|
||||
"This is a limitation from UEFI/FAT32, not from " APPLICATION_NAME ".",
|
||||
"Non UEFI compatible ISO", MB_OK|MB_ICONINFORMATION);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_095), lmprintf(MSG_094), MB_OK|MB_ICONINFORMATION);
|
||||
return FALSE;
|
||||
}
|
||||
} else if ((fs == FS_NTFS) && (!iso_report.has_bootmgr) && (!IS_WINPE(iso_report.winpe))) {
|
||||
if (iso_report.has_isolinux) {
|
||||
MessageBoxU(hMainDialog, "Only FAT/FAT32 is supported for this type of ISO. "
|
||||
"Please select FAT/FAT32 as the File system.", "Unsupported filesystem", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_096), lmprintf(MSG_092), MB_OK|MB_ICONERROR);
|
||||
} else {
|
||||
MessageBoxU(hMainDialog, "Only 'bootmgr' or 'WinPE' based ISO "
|
||||
"images can currently be used with NTFS.", "Unsupported ISO", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_097), lmprintf(MSG_090), MB_OK|MB_ICONERROR);
|
||||
}
|
||||
return FALSE;
|
||||
} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (!iso_report.has_isolinux)) {
|
||||
MessageBoxU(hMainDialog, "FAT/FAT32 can only be used for isolinux based ISO images "
|
||||
"or when the Target Type is UEFI.", "Unsupported ISO", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (iso_report.has_4GB_file)) {
|
||||
MessageBoxU(hMainDialog, "This iso image contains a file larger than 4GB file, which is more than the "
|
||||
"maximum size allowed for a FAT or FAT32 file system.", "Filesystem limitation", MB_OK|MB_ICONERROR);
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_100), lmprintf(MSG_099), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
}
|
||||
if ((bt == BT_UEFI) && (iso_report.has_win7_efi) && (!WimExtractCheck())) {
|
||||
if (MessageBoxU(hMainDialog, "Your platform cannot extract files from WIM archives. WIM extraction "
|
||||
"is required to create EFI bootable Windows 7 and Windows Vista USB drives. You can fix that "
|
||||
"by installing a recent version of 7-Zip.\r\nDo you want to visit the 7-zip download page?",
|
||||
"Missing WIM support", MB_YESNO|MB_ICONERROR) == IDYES)
|
||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_102), lmprintf(MSG_101), MB_YESNO|MB_ICONERROR) == IDYES)
|
||||
ShellExecuteA(hMainDialog, "open", SEVENZIP_URL, NULL, NULL, SW_SHOWNORMAL);
|
||||
return FALSE;
|
||||
}
|
||||
} else if (dt == DT_SYSLINUX_V5) {
|
||||
_chdirU(app_dir);
|
||||
fd = fopen(ldlinux_c32, "rb");
|
||||
fd = fopen(ldlinux_name, "rb");
|
||||
if (fd != NULL) {
|
||||
uprintf("Will reuse '%s' for Syslinux v5\n", ldlinux_c32);
|
||||
uprintf("Will reuse '%s' for Syslinux v5\n", ldlinux_name);
|
||||
fclose(fd);
|
||||
} else {
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_506, ldlinux_c32));
|
||||
safe_sprintf(msgbox, sizeof(msgbox), "Syslinux v5.0 or later requires a '%s' file to be installed.\n"
|
||||
"Because this file is more than 100 KB in size, and always present on Syslinux v5+ ISO images, "
|
||||
"it is not embedded in " APPLICATION_NAME ".\n\n"
|
||||
APPLICATION_NAME " can download the missing file for you:\n"
|
||||
"- Select 'Yes' to connect to the internet and download the file\n"
|
||||
"- Select 'No' if you want to manually copy this file on the drive later\n\n"
|
||||
"Note: The file will be downloaded in the current directory and once a "
|
||||
"'%s' exists there, it will be reused automatically.\n", ldlinux_c32, ldlinux_c32);
|
||||
safe_sprintf(msgbox_title, sizeof(msgbox_title), "Download %s?", ldlinux_c32);
|
||||
r = MessageBoxU(hMainDialog, msgbox, msgbox_title, MB_YESNOCANCEL|MB_ICONWARNING);
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_206, ldlinux_name));
|
||||
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, ldlinux_name, ldlinux_name),
|
||||
lmprintf(MSG_103, ldlinux_name), MB_YESNOCANCEL|MB_ICONWARNING);
|
||||
if (r == IDCANCEL)
|
||||
return FALSE;
|
||||
if (r == IDYES) {
|
||||
SetWindowTextU(hISOProgressDlg, "Downloading file...");
|
||||
SetWindowTextU(hISOFileName, ldlinux_c32);
|
||||
DownloadFile(LDLINUX_C32_URL, ldlinux_c32, hISOProgressDlg);
|
||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, ldlinux_name));
|
||||
SetWindowTextU(hISOFileName, LDLINUX_C32_URL);
|
||||
DownloadFile(LDLINUX_C32_URL, ldlinux_name, hISOProgressDlg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1306,7 +1261,7 @@ void InitDialog(HWND hDlg)
|
|||
// Quite a burden to carry around as parameters
|
||||
hMainDialog = hDlg;
|
||||
hDeviceList = GetDlgItem(hDlg, IDC_DEVICE);
|
||||
hPartitionScheme = GetDlgItem(hDlg, IDC_PARTITION_SCHEME);
|
||||
hPartitionScheme = GetDlgItem(hDlg, IDC_PARTITION_TYPE);
|
||||
hFileSystem = GetDlgItem(hDlg, IDC_FILESYSTEM);
|
||||
hClusterSize = GetDlgItem(hDlg, IDC_CLUSTERSIZE);
|
||||
hLabel = GetDlgItem(hDlg, IDC_LABEL);
|
||||
|
@ -1381,10 +1336,9 @@ void InitDialog(HWND hDlg)
|
|||
IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, lmprintf(MSG_036)), DT_ISO));
|
||||
IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, selection_default));
|
||||
// Fill up the MBR masqueraded disk IDs ("8 disks should be enough for anybody")
|
||||
IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, "0x80 (default)"), 0x80));
|
||||
IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, lmprintf(MSG_030, "0x80")), 0x80));
|
||||
for (i=1; i<=7; i++) {
|
||||
sprintf(tmp, "0x%02x (%d%s disk)", 0x80+i, i+1, (i==1)?"nd":((i==2)?"rd":"th"));
|
||||
IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, tmp), 0x80+i));
|
||||
IGNORE_RETVAL(ComboBox_SetItemData(hDiskID, ComboBox_AddStringU(hDiskID, lmprintf(MSG_109, 0x80+i, i+1)), 0x80+i));
|
||||
}
|
||||
IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, 0));
|
||||
|
||||
|
@ -1428,26 +1382,23 @@ void InitDialog(HWND hDlg)
|
|||
SendMessage(GetDlgItem(hDlg, IDC_ADVANCED), BCM_SETIMAGELIST, 0, (LPARAM)&bi_down);
|
||||
|
||||
// Set the various tooltips
|
||||
CreateTooltip(hFileSystem, "Sets the target filesystem", -1);
|
||||
CreateTooltip(hClusterSize, "Minimum size that each data block occupies", -1);
|
||||
CreateTooltip(hLabel, "Use this field to set the drive label\nInternational characters are accepted", -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_ADVANCED), "Toggle advanced options", -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_BADBLOCKS), "Test the device for bad blocks using a byte pattern", -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_QUICKFORMAT), "Unchek this box to use the \"slow\" format method", -1);
|
||||
CreateTooltip(hBoot, "Check this box to make the USB drive bootable", -1);
|
||||
CreateTooltip(hBootType, "Boot method", -1);
|
||||
CreateTooltip(hSelectISO, "Click to select an ISO...", -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_SET_ICON), "Check this box to allow the display of international labels "
|
||||
"and set a device icon (creates an autorun.inf)", 10000);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_RUFUS_MBR), "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID", 10000);
|
||||
CreateTooltip(hDiskID, "Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
|
||||
"This should only be necessary for XP installation" , 10000);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_EXTRA_PARTITION), "Create an extra hidden partition and try to align partitions boundaries.\n"
|
||||
"This can improve boot detection for older BIOSes", -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_ENABLE_FIXED_DISKS), "Enable detection for disks not normally detected by " APPLICATION_NAME ". "
|
||||
"USE AT YOUR OWN RISKS!!!", -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_START), "Start the formatting operation.\nThis will DESTROY any data on the target!", -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_ABOUT), "Licensing information and credits", -1);
|
||||
CreateTooltip(hFileSystem, lmprintf(MSG_157), -1);
|
||||
CreateTooltip(hClusterSize, lmprintf(MSG_158), -1);
|
||||
CreateTooltip(hLabel, lmprintf(MSG_159), -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_ADVANCED), lmprintf(MSG_160), -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_BADBLOCKS), lmprintf(MSG_161), -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_QUICKFORMAT), lmprintf(MSG_162), -1);
|
||||
CreateTooltip(hBoot, lmprintf(MSG_163), -1);
|
||||
CreateTooltip(hBootType, lmprintf(MSG_164), -1);
|
||||
CreateTooltip(hSelectISO, lmprintf(MSG_165), -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_SET_ICON), lmprintf(MSG_166), 10000);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_RUFUS_MBR), lmprintf(MSG_167), 10000);
|
||||
CreateTooltip(hDiskID, lmprintf(MSG_168), 10000);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_EXTRA_PARTITION), lmprintf(MSG_169), -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_ENABLE_FIXED_DISKS), lmprintf(MSG_170), -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_START), lmprintf(MSG_171), -1);
|
||||
CreateTooltip(GetDlgItem(hDlg, IDC_ABOUT), lmprintf(MSG_172), -1);
|
||||
// TODO: add new tooltips
|
||||
|
||||
ToggleAdvanced(); // We start in advanced mode => go to basic mode
|
||||
|
||||
|
@ -1460,7 +1411,7 @@ void InitDialog(HWND hDlg)
|
|||
|
||||
static void PrintStatus2000(const char* str, BOOL val)
|
||||
{
|
||||
PrintStatus(2000, FALSE, (lmprintf((val)?MSG_550:MSG_551, str)));
|
||||
PrintStatus(2000, FALSE, (lmprintf((val)?MSG_250:MSG_251, str)));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1550,13 +1501,12 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), FALSE);
|
||||
EnableWindow(GetDlgItem(hDlg, IDCANCEL), FALSE);
|
||||
if (format_thid != NULL) {
|
||||
if (MessageBoxU(hMainDialog, "Cancelling may leave the device in an UNUSABLE state.\r\n"
|
||||
"If you are sure you want to cancel, click YES. Otherwise, click NO.",
|
||||
RUFUS_CANCELBOX_TITLE, MB_YESNO|MB_ICONWARNING) == IDYES) {
|
||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_105), lmprintf(MSG_049),
|
||||
MB_YESNO|MB_ICONWARNING) == IDYES) {
|
||||
// Operation may have completed in the meantime
|
||||
if (format_thid != NULL) {
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED;
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_501));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_201));
|
||||
uprintf("Cancelling (from main app)\n");
|
||||
// Start a timer to detect blocking operations during ISO file extraction
|
||||
if (iso_blocking_status >= 0) {
|
||||
|
@ -1624,7 +1574,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
if (HIWORD(wParam) != CBN_SELCHANGE)
|
||||
break;
|
||||
nb_devices = ComboBox_GetCount(hDeviceList);
|
||||
PrintStatus(0, TRUE, lmprintf((nb_devices==1)?MSG_508:MSG_509, nb_devices));
|
||||
PrintStatus(0, TRUE, lmprintf((nb_devices==1)?MSG_208:MSG_209, nb_devices));
|
||||
PopulateProperties(ComboBox_GetCurSel(hDeviceList));
|
||||
SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE<<16) | IDC_FILESYSTEM,
|
||||
ComboBox_GetCurSel(hFileSystem));
|
||||
|
@ -1634,7 +1584,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
break;
|
||||
SetPassesTooltip();
|
||||
break;
|
||||
case IDC_PARTITION_SCHEME:
|
||||
case IDC_PARTITION_TYPE:
|
||||
if (HIWORD(wParam) != CBN_SELCHANGE)
|
||||
break;
|
||||
SetPartitionSchemeTooltip();
|
||||
|
@ -1748,7 +1698,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
safe_free(iso_path);
|
||||
iso_path = FileDialog(FALSE, NULL, "*.iso", "iso", lmprintf(MSG_036));
|
||||
if (iso_path == NULL) {
|
||||
CreateTooltip(hSelectISO, "Click to select...", -1);
|
||||
CreateTooltip(hSelectISO, lmprintf(MSG_173), -1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1767,7 +1717,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
case IDC_ENABLE_FIXED_DISKS:
|
||||
if ((HIWORD(wParam)) == BN_CLICKED) {
|
||||
enable_fixed_disks = !enable_fixed_disks;
|
||||
PrintStatus2000(lmprintf(MSG_553), enable_fixed_disks);
|
||||
PrintStatus2000(lmprintf(MSG_253), enable_fixed_disks);
|
||||
GetUSBDevices(0);
|
||||
}
|
||||
break;
|
||||
|
@ -1846,9 +1796,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
// Stop the timer
|
||||
KillTimer(hMainDialog, TID_APP_TIMER);
|
||||
// Close the cancel MessageBox and Blocking notification if active
|
||||
// TODO: if we allow localization to change the title of these Windows, we'll have to update this
|
||||
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), RUFUS_CANCELBOX_TITLE), WM_COMMAND, IDNO, 0);
|
||||
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), RUFUS_BLOCKING_IO_TITLE), WM_COMMAND, IDYES, 0);
|
||||
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), lmprintf(MSG_049)), WM_COMMAND, IDNO, 0);
|
||||
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), lmprintf(MSG_049)), WM_COMMAND, IDYES, 0);
|
||||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), TRUE);
|
||||
EnableWindow(GetDlgItem(hMainDialog, IDCANCEL), TRUE);
|
||||
EnableControls(TRUE);
|
||||
|
@ -1860,16 +1809,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
SendMessage(hProgress, PBM_SETPOS, (MAX_PROGRESS+1), 0);
|
||||
SendMessage(hProgress, PBM_SETRANGE, 0, (MAX_PROGRESS<<16) & 0xFFFF0000);
|
||||
SetTaskbarProgressState(TASKBAR_NOPROGRESS);
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_510));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_210));
|
||||
} else if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) {
|
||||
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_PAUSED, 0);
|
||||
SetTaskbarProgressState(TASKBAR_PAUSED);
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_511));
|
||||
Notification(MSG_INFO, NULL, lmprintf(MSG_511), lmprintf(MSG_041));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_211));
|
||||
Notification(MSG_INFO, NULL, lmprintf(MSG_211), lmprintf(MSG_041));
|
||||
} else {
|
||||
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_ERROR, 0);
|
||||
SetTaskbarProgressState(TASKBAR_ERROR);
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_512));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_212));
|
||||
Notification(MSG_ERROR, NULL, lmprintf(MSG_042), lmprintf(MSG_043), StrError(FormatStatus));
|
||||
}
|
||||
FormatStatus = 0;
|
||||
|
@ -1962,6 +1911,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
} else {
|
||||
safe_closehandle(hFile);
|
||||
uprintf("localization: extracted data to '%s'\n", loc_file);
|
||||
// TODO: Add a control for "X translation by Y"
|
||||
if ( (!get_supported_locales(loc_file))
|
||||
// || ((selected_locale = get_locale_from_lcid(GetUserDefaultLCID())) == NULL) ) {
|
||||
|| ((selected_locale = get_locale_from_name("French")) == NULL) ) {
|
||||
|
@ -1971,7 +1921,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
goto out;
|
||||
}
|
||||
uprintf("localization: using locale '%s'\n", selected_locale->txt[0]);
|
||||
get_loc_data_file(loc_file, (long)selected_locale->num[0], (long)selected_locale->num[1]);
|
||||
get_loc_data_file(loc_file, (long)selected_locale->num[0], (long)selected_locale->num[1], selected_locale->line_nr);
|
||||
}
|
||||
|
||||
// Reattach the console, if we were started from commandline
|
||||
|
@ -2076,7 +2026,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
// the target USB drive. If this is enabled, the size check is disabled.
|
||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'S')) {
|
||||
size_check = !size_check;
|
||||
PrintStatus2000(lmprintf(MSG_552), size_check);
|
||||
PrintStatus2000(lmprintf(MSG_252), size_check);
|
||||
GetUSBDevices(0);
|
||||
continue;
|
||||
}
|
||||
|
@ -2086,20 +2036,20 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
// drive instead of an USB key. If this is enabled, Rufus will allow fixed disk formatting.
|
||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'F')) {
|
||||
enable_fixed_disks = !enable_fixed_disks;
|
||||
PrintStatus2000(lmprintf(MSG_553), enable_fixed_disks);
|
||||
PrintStatus2000(lmprintf(MSG_253), enable_fixed_disks);
|
||||
GetUSBDevices(0);
|
||||
continue;
|
||||
}
|
||||
// Alt-L => Force Large FAT32 format to be used on < 32 GB drives
|
||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'L')) {
|
||||
force_large_fat32 = !force_large_fat32;
|
||||
PrintStatus2000(lmprintf(MSG_554), force_large_fat32);
|
||||
PrintStatus2000(lmprintf(MSG_254), force_large_fat32);
|
||||
continue;
|
||||
}
|
||||
// Alt-D => Delete the NoDriveTypeAutorun key on exit (useful if the app crashed)
|
||||
// This key is used to disable Windows popup messages when an USB drive is plugged in.
|
||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) {
|
||||
PrintStatus(2000, FALSE, lmprintf(MSG_555));
|
||||
PrintStatus(2000, FALSE, lmprintf(MSG_255));
|
||||
existing_key = FALSE;
|
||||
continue;
|
||||
}
|
||||
|
@ -2110,12 +2060,12 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
// it back during the bad block check.
|
||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'K')) {
|
||||
detect_fakes = !detect_fakes;
|
||||
PrintStatus2000(lmprintf(MSG_556), detect_fakes);
|
||||
PrintStatus2000(lmprintf(MSG_256), detect_fakes);
|
||||
continue;
|
||||
}
|
||||
// Alt-R => Remove all the registry keys created by Rufus
|
||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'R')) {
|
||||
PrintStatus(2000, FALSE, lmprintf(DeleteRegistryKey(REGKEY_HKCU, COMPANY_NAME "\\" APPLICATION_NAME)?MSG_548:MSG_549));
|
||||
PrintStatus(2000, FALSE, lmprintf(DeleteRegistryKey(REGKEY_HKCU, COMPANY_NAME "\\" APPLICATION_NAME)?MSG_248:MSG_249));
|
||||
// Also try to delete the upper key (company name) if it's empty (don't care about the result)
|
||||
DeleteRegistryKey(REGKEY_HKCU, COMPANY_NAME);
|
||||
continue;
|
||||
|
|
|
@ -35,14 +35,12 @@
|
|||
#define APPLICATION_NAME "Rufus"
|
||||
#define COMPANY_NAME "Akeo Consulting"
|
||||
#define STR_NO_LABEL "NO_LABEL"
|
||||
#define RUFUS_CANCELBOX_TITLE APPLICATION_NAME " - Cancellation"
|
||||
#define RUFUS_BLOCKING_IO_TITLE APPLICATION_NAME " - Flushing buffers"
|
||||
#define DRIVE_ACCESS_TIMEOUT 15000 // How long we should retry drive access (in ms)
|
||||
#define DRIVE_ACCESS_RETRIES 60 // How many times we should retry
|
||||
#define DRIVE_INDEX_MIN 0x00000080
|
||||
#define DRIVE_INDEX_MAX 0x000000C0
|
||||
#define MAX_DRIVES (DRIVE_INDEX_MAX - DRIVE_INDEX_MIN)
|
||||
#define MAX_TOOLTIPS 32
|
||||
#define MAX_TOOLTIPS 128
|
||||
#define MAX_SIZE_SUFFIXES 6 // bytes, KB, MB, GB, TB, PB
|
||||
#define MAX_CLUSTER_SIZES 18
|
||||
#define MAX_PROGRESS (0xFFFF-1) // leave room for 1 more for insta-progress workaround
|
||||
|
@ -53,6 +51,7 @@
|
|||
#define MBR_UEFI_MARKER 0x49464555 // 'U', 'E', 'F', 'I', as a 32 bit little endian longword
|
||||
#define PROPOSEDLABEL_TOLERANCE 0.10
|
||||
#define FS_DEFAULT FS_FAT32
|
||||
#define BADBLOCK_PATTERNS {0xaa, 0x55, 0xff, 0x00}
|
||||
#define LARGE_FAT32_SIZE (32*1073741824LL) // Size at which we need to use fat32format
|
||||
#define MAX_FAT32_SIZE 1.0f // Threshold above which we disable FAT32 formatting (in TB)
|
||||
#define WHITE RGB(255,255,255)
|
||||
|
|
14
src/rufus.rc
14
src/rufus.rc
|
@ -42,11 +42,11 @@ BEGIN
|
|||
LTEXT "Device",IDS_DEVICE_TXT,9,6,186,8
|
||||
COMBOBOX IDC_FILESYSTEM,8,75,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "File system",IDS_FILESYSTEM_TXT,9,64,186,10
|
||||
COMBOBOX IDC_PARTITION_SCHEME,8,46,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_PARTITION_TYPE,8,46,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Partition scheme and target system type",IDS_PARTITION_TYPE_TXT,9,35,186,8
|
||||
COMBOBOX IDC_CLUSTERSIZE,8,104,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Cluster size",IDS_CLUSTERSIZE_TXT,9,93,186,10
|
||||
GROUPBOX "Format Options ",IDS_FORMATOPTIONS_TXT,7,149,192,66
|
||||
GROUPBOX "Format Options ",IDS_FORMAT_OPTIONS_GRP,7,149,192,66
|
||||
LTEXT "New volume label",IDS_LABEL_TXT,9,121,186,10
|
||||
EDITTEXT IDC_LABEL,7,131,190,13,ES_AUTOHSCROLL
|
||||
CONTROL "Check device for bad blocks:",IDC_BADBLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,101,10
|
||||
|
@ -60,7 +60,7 @@ BEGIN
|
|||
PUSHBUTTON "...",IDC_SELECT_ISO,171,182,22,14,BS_ICON
|
||||
CONTROL "Use Rufus MBR with BIOS ID:",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,106,10
|
||||
PUSHBUTTON "",IDC_ADVANCED,63,148,14,10,BS_TOP | BS_FLAT
|
||||
GROUPBOX "Advanced Options",IDC_ADVANCED_GROUP,7,210,192,54
|
||||
GROUPBOX "Advanced Options",IDS_ADVANCED_OPTIONS_GRP,7,210,192,54
|
||||
COMBOBOX IDC_DISK_ID,119,246,73,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Add fixes for old BIOSes (extra partition, align, etc.)",IDC_EXTRA_PARTITION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,181,10
|
||||
|
@ -137,9 +137,9 @@ BEGIN
|
|||
LTEXT "Check for updates:",IDS_UPDATE_FREQUENCY_TXT,52,157,80,11
|
||||
LTEXT "Include beta versions:",IDS_INCLUDE_BETAS_TXT,52,173,80,11
|
||||
COMBOBOX IDC_INCLUDE_BETAS,133,171,36,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "Settings",IDS_UPDATE_SETTINGS_TXT,45,145,161,46
|
||||
GROUPBOX "Settings",IDS_UPDATE_SETTINGS_GRP,45,145,161,46
|
||||
PUSHBUTTON "Check Now",IDC_CHECK_NOW,221,154,50,14
|
||||
GROUPBOX "",IDC_STATIC,210,145,71,46
|
||||
GROUPBOX "",IDS_CHECK_NOW_GRP,210,145,71,46
|
||||
END
|
||||
|
||||
IDD_NEW_VERSION DIALOGEX 0, 0, 384, 268
|
||||
|
@ -151,12 +151,12 @@ BEGIN
|
|||
CONTROL "",IDC_RELEASE_NOTES,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,15,77,352,88,WS_EX_STATICEDGE
|
||||
DEFPUSHBUTTON "Download",IDC_DOWNLOAD,293,211,74,14,WS_GROUP
|
||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,15,212,270,11
|
||||
GROUPBOX "Release Notes",IDS_NEW_VERSION_NOTES_TXT,8,63,367,111
|
||||
GROUPBOX "Release Notes",IDS_NEW_VERSION_NOTES_GRP,8,63,367,111
|
||||
LTEXT "A newer version is available. Please download the latest version!",IDS_NEW_VERSION_AVAIL_TXT,10,32,229,8
|
||||
LTEXT "[...]",IDC_YOUR_VERSION,10,8,124,8
|
||||
LTEXT "[...]",IDC_LATEST_VERSION,10,19,129,8
|
||||
LTEXT " Click here to go to the website",IDC_WEBSITE,138,49,108,9,SS_NOTIFY
|
||||
GROUPBOX "Download",IDS_NEW_VERSION_DOWNLOAD_TXT,8,177,367,58
|
||||
GROUPBOX "Download",IDS_NEW_VERSION_DOWNLOAD_GRP,8,177,367,58
|
||||
EDITTEXT IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY
|
||||
END
|
||||
|
||||
|
|
|
@ -234,7 +234,7 @@ BOOL FileIO(BOOL save, char* path, char** buffer, DWORD* size)
|
|||
goto out;
|
||||
}
|
||||
|
||||
PrintStatus(0, TRUE, save?lmprintf(MSG_516, path):lmprintf(MSG_515, path));
|
||||
PrintStatus(0, TRUE, save?lmprintf(MSG_216, path):lmprintf(MSG_215, path));
|
||||
ret = TRUE;
|
||||
|
||||
out:
|
||||
|
|
61
src/stdio.c
61
src/stdio.c
|
@ -194,11 +194,10 @@ char* SizeToHumanReadable(LARGE_INTEGER size)
|
|||
return str_size;
|
||||
}
|
||||
|
||||
// TODO: all of these need to be translated
|
||||
const char* StrError(DWORD error_code)
|
||||
{
|
||||
if ( (!IS_ERROR(error_code)) || (SCODE_CODE(error_code) == ERROR_SUCCESS)) {
|
||||
return "Success";
|
||||
return lmprintf(MSG_044);
|
||||
}
|
||||
if (SCODE_FACILITY(error_code) != FACILITY_STORAGE) {
|
||||
uprintf("StrError: non storage - %08X (%X)\n", error_code, SCODE_FACILITY(error_code));
|
||||
|
@ -207,63 +206,61 @@ const char* StrError(DWORD error_code)
|
|||
}
|
||||
switch (SCODE_CODE(error_code)) {
|
||||
case ERROR_GEN_FAILURE:
|
||||
return "Undetermined error while formatting.";
|
||||
return lmprintf(MSG_051);
|
||||
case ERROR_INCOMPATIBLE_FS:
|
||||
return "Cannot use the selected file system for this media.";
|
||||
return lmprintf(MSG_052);
|
||||
case ERROR_ACCESS_DENIED:
|
||||
return "Access to the device is denied.";
|
||||
return lmprintf(MSG_053);
|
||||
case ERROR_WRITE_PROTECT:
|
||||
return "Media is write protected.";
|
||||
return lmprintf(MSG_054);
|
||||
case ERROR_DEVICE_IN_USE:
|
||||
return "The device is in use by another process. "
|
||||
"Please close any other process that may be accessing the device.";
|
||||
return lmprintf(MSG_055);
|
||||
case ERROR_CANT_QUICK_FORMAT:
|
||||
return "Quick format is not available for this device.";
|
||||
return lmprintf(MSG_056);
|
||||
case ERROR_LABEL_TOO_LONG:
|
||||
return "The volume label is invalid.";
|
||||
return lmprintf(MSG_057);
|
||||
case ERROR_INVALID_HANDLE:
|
||||
return "The device handle is invalid.";
|
||||
return lmprintf(MSG_058);
|
||||
case ERROR_INVALID_CLUSTER_SIZE:
|
||||
return "The selected cluster size is not valid for this device.";
|
||||
return lmprintf(MSG_059);
|
||||
case ERROR_INVALID_VOLUME_SIZE:
|
||||
return "The volume size is invalid.";
|
||||
return lmprintf(MSG_060);
|
||||
case ERROR_NO_MEDIA_IN_DRIVE:
|
||||
return "Please insert a media in drive.";
|
||||
return lmprintf(MSG_061);
|
||||
case ERROR_NOT_SUPPORTED:
|
||||
return "An unsupported command was received.";
|
||||
return lmprintf(MSG_062);
|
||||
case ERROR_NOT_ENOUGH_MEMORY:
|
||||
return "Memory allocation error.";
|
||||
return lmprintf(MSG_063);
|
||||
case ERROR_READ_FAULT:
|
||||
return "Read error.";
|
||||
return lmprintf(MSG_064);
|
||||
case ERROR_WRITE_FAULT:
|
||||
return "Write error.";
|
||||
return lmprintf(MSG_065);
|
||||
case ERROR_INSTALL_FAILURE:
|
||||
return "Installation failure";
|
||||
return lmprintf(MSG_066);
|
||||
case ERROR_OPEN_FAILED:
|
||||
return "Could not open media. It may be in use by another process. "
|
||||
"Please re-plug the media and try again.";
|
||||
return lmprintf(MSG_067);
|
||||
case ERROR_PARTITION_FAILURE:
|
||||
return "Error while partitioning drive.";
|
||||
return lmprintf(MSG_068);
|
||||
case ERROR_CANNOT_COPY:
|
||||
return "Could not copy files to target drive.";
|
||||
return lmprintf(MSG_069);
|
||||
case ERROR_CANCELLED:
|
||||
return "Cancelled by user.";
|
||||
return lmprintf(MSG_070);
|
||||
case ERROR_CANT_START_THREAD:
|
||||
return "Unable to create formatting thread.";
|
||||
return lmprintf(MSG_071);
|
||||
case ERROR_BADBLOCKS_FAILURE:
|
||||
return "Bad blocks check didn't complete.";
|
||||
return lmprintf(MSG_072);
|
||||
case ERROR_ISO_SCAN:
|
||||
return "ISO image scan failure.";
|
||||
return lmprintf(MSG_073);
|
||||
case ERROR_ISO_EXTRACT:
|
||||
return "ISO image extraction failure.";
|
||||
return lmprintf(MSG_074);
|
||||
case ERROR_CANT_REMOUNT_VOLUME:
|
||||
return "Unable to remount volume.";
|
||||
return lmprintf(MSG_075);
|
||||
case ERROR_CANT_PATCH:
|
||||
return "Unable to patch/setup files for boot.";
|
||||
return lmprintf(MSG_076);
|
||||
case ERROR_CANT_ASSIGN_LETTER:
|
||||
return "Unable to assign a drive letter.";
|
||||
return lmprintf(MSG_077);
|
||||
case ERROR_CANT_MOUNT_VOLUME:
|
||||
return "Can't mount GUID volume.";
|
||||
return lmprintf(MSG_078);
|
||||
default:
|
||||
uprintf("Unknown error: %08X\n", error_code);
|
||||
SetLastError(error_code);
|
||||
|
|
61
src/stdlg.c
61
src/stdlg.c
|
@ -224,7 +224,7 @@ fallback:
|
|||
INIT_XP_SHELL32;
|
||||
memset(&bi, 0, sizeof(BROWSEINFOW));
|
||||
bi.hwndOwner = hMainDialog;
|
||||
bi.lpszTitle = L"Please select the installation folder:";
|
||||
bi.lpszTitle = utf8_to_wchar(lmprintf(MSG_106));
|
||||
bi.lpfn = BrowseInfoCallback;
|
||||
// BIF_NONEWFOLDERBUTTON = 0x00000200 is unknown on MinGW
|
||||
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS |
|
||||
|
@ -233,6 +233,7 @@ fallback:
|
|||
if (pidl != NULL) {
|
||||
CoTaskMemFree(pidl);
|
||||
}
|
||||
safe_free(bi.lpszTitle);
|
||||
dialog_showing--;
|
||||
}
|
||||
|
||||
|
@ -246,7 +247,7 @@ char* FileDialog(BOOL save, char* path, char* filename, char* ext, char* ext_des
|
|||
DWORD tmp;
|
||||
OPENFILENAMEA ofn;
|
||||
char selected_name[MAX_PATH];
|
||||
char* ext_string = NULL;
|
||||
char *ext_string = NULL, *all_files = NULL;
|
||||
size_t i, ext_strlen;
|
||||
BOOL r;
|
||||
char* filepath = NULL;
|
||||
|
@ -261,6 +262,7 @@ char* FileDialog(BOOL save, char* path, char* filename, char* ext, char* ext_des
|
|||
IShellItem *si_path = NULL; // Automatically freed
|
||||
|
||||
dialog_showing++;
|
||||
memset(filter_spec, 0, sizeof(filter_spec));
|
||||
INIT_VISTA_SHELL32;
|
||||
if (IS_VISTA_SHELL32_AVAILABLE) {
|
||||
// Setup the file extension filter table
|
||||
|
@ -271,7 +273,7 @@ char* FileDialog(BOOL save, char* path, char* filename, char* ext, char* ext_des
|
|||
safe_free(ext_filter);
|
||||
filter_spec[0].pszName = utf8_to_wchar(ext_desc);
|
||||
filter_spec[1].pszSpec = L"*.*";
|
||||
filter_spec[1].pszName = L"All files";
|
||||
filter_spec[1].pszName = utf8_to_wchar(lmprintf(MSG_107));
|
||||
}
|
||||
|
||||
hr = CoCreateInstance(save?&CLSID_FileSaveDialog:&CLSID_FileOpenDialog, NULL, CLSCTX_INPROC,
|
||||
|
@ -307,6 +309,7 @@ char* FileDialog(BOOL save, char* path, char* filename, char* ext, char* ext_des
|
|||
safe_free(wfilename);
|
||||
safe_free(filter_spec[0].pszSpec);
|
||||
safe_free(filter_spec[0].pszName);
|
||||
safe_free(filter_spec[1].pszName);
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Obtain the result of the user's interaction with the dialog.
|
||||
|
@ -345,11 +348,12 @@ fallback:
|
|||
ofn.lpstrFile = selected_name;
|
||||
ofn.nMaxFile = MAX_PATH;
|
||||
// Set the file extension filters
|
||||
ext_strlen = safe_strlen(ext_desc) + 2*safe_strlen(ext) + sizeof(" (*.)\0*.\0All Files (*.*)\0*.*\0\0");
|
||||
all_files = lmprintf(MSG_107);
|
||||
ext_strlen = safe_strlen(ext_desc) + 2*safe_strlen(ext) + sizeof(" (*.)\0*.\0 (*.*)\0*.*\0\0") + safe_strlen(all_files);
|
||||
ext_string = (char*)malloc(ext_strlen);
|
||||
if (ext_string == NULL)
|
||||
return NULL;
|
||||
safe_sprintf(ext_string, ext_strlen, "%s (*.%s)\r*.%s\rAll Files (*.*)\r*.*\r\0", ext_desc, ext, ext);
|
||||
safe_sprintf(ext_string, ext_strlen, "%s (*.%s)\r*.%s\r%s (*.*)\r*.*\r\0", ext_desc, ext, ext, all_files);
|
||||
// Microsoft could really have picked a better delimiter!
|
||||
for (i=0; i<ext_strlen; i++) {
|
||||
if (ext_string[i] == '\r') {
|
||||
|
@ -371,7 +375,7 @@ fallback:
|
|||
} else {
|
||||
tmp = CommDlgExtendedError();
|
||||
if (tmp != 0) {
|
||||
uprintf("Could not selected file for %s. Error %X\n", save?"save":"open", tmp);
|
||||
uprintf("Could not select file for %s. Error %X\n", save?"save":"open", tmp);
|
||||
}
|
||||
}
|
||||
safe_free(ext_string);
|
||||
|
@ -437,22 +441,40 @@ void CenterDialog(HWND hDlg)
|
|||
MoveWindow(hDlg, Point.x, Point.y, nWidth, nHeight, FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Change the position and/or size of a control belonging to a specific dialog
|
||||
*/
|
||||
// http://stackoverflow.com/questions/431470/window-border-width-and-height-in-win32-how-do-i-get-it
|
||||
SIZE GetBorderSize(HWND hDlg)
|
||||
{
|
||||
RECT rect = {0, 0, 0, 0};
|
||||
SIZE size = {0, 0};
|
||||
WINDOWINFO wi;
|
||||
wi.cbSize = sizeof(WINDOWINFO);
|
||||
|
||||
GetWindowInfo(hDlg, &wi);
|
||||
|
||||
AdjustWindowRectEx(&rect, wi.dwStyle, FALSE, wi.dwExStyle);
|
||||
size.cx = rect.right - rect.left;
|
||||
size.cy = rect.bottom - rect.top;
|
||||
return size;
|
||||
}
|
||||
|
||||
void ResizeMoveCtrl(HWND hDlg, HWND hCtrl, int dx, int dy, int dw, int dh)
|
||||
{
|
||||
RECT rect;
|
||||
POINT point;
|
||||
SIZE border = {0, 0};
|
||||
|
||||
GetWindowRect(hCtrl, &rect);
|
||||
point.x = rect.left;
|
||||
point.y = rect.top;
|
||||
ScreenToClient(hDlg, &point);
|
||||
GetClientRect(hCtrl, &rect);
|
||||
|
||||
// If we're dealing with a dialog, we must take the border into account
|
||||
if (hCtrl == hDlg)
|
||||
border = GetBorderSize(hDlg);
|
||||
MoveWindow(hCtrl, point.x + (int)(fScale*(float)dx), point.y + (int)(fScale*(float)dy),
|
||||
(rect.right - rect.left) + (int)(fScale*(float)dw),
|
||||
(rect.bottom - rect.top) + (int)(fScale*(float)dh), TRUE);
|
||||
(rect.right - rect.left) + (int)(fScale*(float)dw + border.cx),
|
||||
(rect.bottom - rect.top) + border.cy, TRUE);
|
||||
InvalidateRect(hCtrl, NULL, TRUE);
|
||||
}
|
||||
|
||||
|
@ -486,7 +508,7 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
|
|||
{
|
||||
int i;
|
||||
const int edit_id[2] = {IDC_ABOUT_BLURB, IDC_ABOUT_COPYRIGHTS};
|
||||
char about_blurb[1024];
|
||||
char about_blurb[2048];
|
||||
const char* edit_text[2] = {about_blurb, additional_copyrights};
|
||||
HWND hEdit[2];
|
||||
TEXTRANGEW tr;
|
||||
|
@ -501,8 +523,9 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
|
|||
CenterDialog(hDlg);
|
||||
if (reg_commcheck)
|
||||
ShowWindow(GetDlgItem(hDlg, IDC_ABOUT_UPDATES), SW_SHOW);
|
||||
safe_sprintf(about_blurb, sizeof(about_blurb), about_blurb_format,
|
||||
rufus_version[0], rufus_version[1], rufus_version[2], rufus_version[3]);
|
||||
safe_sprintf(about_blurb, sizeof(about_blurb), about_blurb_format, lmprintf(MSG_174),
|
||||
lmprintf(MSG_175, rufus_version[0], rufus_version[1], rufus_version[2], rufus_version[3]),
|
||||
lmprintf(MSG_176), lmprintf(MSG_177), lmprintf(MSG_178));
|
||||
for (i=0; i<ARRAYSIZE(hEdit); i++) {
|
||||
hEdit[i] = GetDlgItem(hDlg, edit_id[i]);
|
||||
SendMessage(hEdit[i], EM_AUTOURLDETECT, 1, 0);
|
||||
|
@ -964,6 +987,7 @@ INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM l
|
|||
HWND hPolicy;
|
||||
static HWND hFrequency, hBeta;
|
||||
int32_t freq;
|
||||
char update_policy_text[4096];
|
||||
|
||||
switch (message) {
|
||||
case WM_INITDIALOG:
|
||||
|
@ -1003,7 +1027,10 @@ INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM l
|
|||
IGNORE_RETVAL(ComboBox_SetCurSel(hBeta, GetRegistryKeyBool(REGKEY_HKCU, REGKEY_INCLUDE_BETAS)?0:1));
|
||||
hPolicy = GetDlgItem(hDlg, IDC_POLICY);
|
||||
SendMessage(hPolicy, EM_AUTOURLDETECT, 1, 0);
|
||||
SendMessageA(hPolicy, EM_SETTEXTEX, (WPARAM)&friggin_microsoft_unicode_amateurs, (LPARAM)update_policy);
|
||||
safe_sprintf(update_policy_text, sizeof(update_policy_text), update_policy, lmprintf(MSG_179),
|
||||
lmprintf(MSG_180), lmprintf(MSG_181), lmprintf(MSG_182), lmprintf(MSG_183), lmprintf(MSG_184),
|
||||
lmprintf(MSG_185), lmprintf(MSG_186));
|
||||
SendMessageA(hPolicy, EM_SETTEXTEX, (WPARAM)&friggin_microsoft_unicode_amateurs, (LPARAM)update_policy_text);
|
||||
SendMessage(hPolicy, EM_SETSEL, -1, -1);
|
||||
SendMessage(hPolicy, EM_SETEVENTMASK, 0, ENM_LINK);
|
||||
SendMessageA(hPolicy, EM_SETBKGNDCOLOR, 0, (LPARAM)GetSysColor(COLOR_BTNFACE));
|
||||
|
@ -1191,10 +1218,10 @@ INT_PTR CALLBACK NewVersionCallback(HWND hDlg, UINT message, WPARAM wParam, LPAR
|
|||
memset(&pi, 0, sizeof(pi));
|
||||
si.cb = sizeof(si);
|
||||
if (!CreateProcessU(NULL, tmp, NULL, NULL, FALSE, 0, NULL, filepath, &si, &pi)) {
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_514));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_214));
|
||||
uprintf("Failed to launch new application: %s\n", WindowsErrorString());
|
||||
} else {
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_513));
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_213));
|
||||
PostMessage(hDlg, WM_COMMAND, (WPARAM)IDCLOSE, 0);
|
||||
PostMessage(hMainDialog, WM_CLOSE, 0, 0);
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter)
|
|||
int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
||||
BOOL use_v5 = (dt == DT_SYSLINUX_V5) || ((dt == DT_ISO) && (iso_report.has_syslinux_v5));
|
||||
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_534, use_v5?5:4));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_234, use_v5?5:4));
|
||||
|
||||
ldlinux_path[0] = drive_letter;
|
||||
|
||||
|
|
Loading…
Reference in a new issue