[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:
Pete Batard 2013-08-03 02:37:25 +01:00
parent cb60cdc805
commit be6135d2d7
19 changed files with 1051 additions and 645 deletions

View File

@ -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 dexploitation en mode EFI, vous devriez plutôt sélectionner lune des options ci-dessous"
t MSG_151 "Utilisez cette options si vous comptez installer un Système dexploitation en mode EFI "
"et avez aussi besoin daccéder au contenu du média sous Windows XP"
t MSG_152 "Option préférée pour installer un Système dexploitation en mode EFI, "
"quand laccès au média depuis Windows XP nest 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 quun 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 laffichage 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 lID 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 dun disque dur"
t MSG_169 "Créé une petite partition supplémentaire et essaye daligner 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 dutilisation 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 "Larchitecture de votre système dexploitation ainsi que sa version"
t MSG_182 "La version de lapplication que vous utilisez"
t MSG_183 "Votre adresse IP"
t MSG_184 "Afin de générer des statistiques dutilisation privées, il se peut que nous gardions "
"les informations ainsi obtenues \\b au plus un an\\b0 . A moins dy ê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 lapplication 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 "关闭"

View File

@ -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;

View File

@ -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,

View File

@ -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

View File

@ -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);

View File

@ -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 =

View File

@ -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++];
}

View File

@ -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);

View File

@ -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),

View File

@ -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;
}

View File

@ -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);

View File

@ -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
//

View File

@ -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;

View File

@ -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)

View File

@ -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

View File

@ -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:

View File

@ -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);

View File

@ -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);
}

View File

@ -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;