mirror of https://github.com/pbatard/rufus.git
[localization] use embedded localization file
* Use an unique name and delete on exit * Also add a bunch of message IDs
This commit is contained in:
parent
79c16c0d14
commit
fed14a42f4
|
@ -1,73 +0,0 @@
|
|||
# This file should be saved as UTF-8 no-BOM
|
||||
l "Chinese (Simplified)" 0x0804, 0x1004, 0x0404, 0x0c04, 0x1404
|
||||
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 IDC_BADBLOCKS "检查设备的坏块:"
|
||||
t IDC_QUICKFORMAT "快速格式化"
|
||||
t IDC_BOOT "创建一个可启动的磁盘使用:"
|
||||
r IDC_BOOT +10,0
|
||||
t IDC_SET_ICON "创建扩展标签和图标文件"
|
||||
m IDC_ADVANCED -24,0
|
||||
m IDC_NBPASSES 8,0
|
||||
m IDC_BOOTTYPE 8,0
|
||||
m IDC_SELECT_ISO 6,0
|
||||
t IDC_ABOUT "关于..."
|
||||
t IDC_LOG "日志"
|
||||
m IDC_LOG -5,0
|
||||
r IDC_LOG +5,0
|
||||
t IDCANCEL "关闭"
|
||||
t IDC_START "开始"
|
||||
t IDC_ADVANCED_GROUP "高级选项"
|
||||
t IDC_ENABLE_FIXED_DISKS "列表固定(非flash)或USB磁盘分区"
|
||||
t IDC_EXTRA_PARTITION "添加修复旧的BIOS(额外的分区,校准等等)"
|
||||
t IDC_RUFUS_MBR "使用 Rufus MBR BIOS ID:"
|
||||
|
||||
p IDD_ABOUTBOX
|
||||
t IDD_ABOUTBOX "关于 Rufus"
|
||||
t IDC_ABOUT_LICENSE "许可证"
|
||||
t IDC_ABOUT_UPDATES "更新"
|
||||
t IDOK "确定"
|
||||
|
||||
p IDD_ISO_EXTRACT
|
||||
t IDD_ISO_EXTRACT "复制ISO文件..."
|
||||
t IDC_ISO_FILENAME "打开ISO映像 - 请稍候..."
|
||||
t IDC_ISO_ABORT "取消"
|
||||
|
||||
p IDD_LICENSE
|
||||
t IDD_LICENSE "Rufus 许可证"
|
||||
t IDOK "取消"
|
||||
|
||||
p IDD_NOTIFICATION
|
||||
t IDC_MORE_INFO "更多信息"
|
||||
t IDYES "是"
|
||||
t IDNO "否"
|
||||
|
||||
p IDD_LOG
|
||||
t IDD_LOG "日志"
|
||||
t IDC_LOG_CLEAR "清除日志"
|
||||
t IDC_LOG_SAVE "保存日志"
|
||||
t IDCANCEL "关闭日志"
|
||||
|
||||
p IDD_LICENSE
|
||||
t IDOK "取消"
|
||||
|
||||
p IDD_UPDATE_POLICY
|
||||
t IDD_UPDATE_POLICY "更新方案和设置"
|
||||
t IDS_UPDATE_SETTINGS_TXT "设置"
|
||||
t IDS_UPDATE_FREQUENCY_TXT "检查更新:"
|
||||
t IDS_INCLUDE_BETAS_TXT "包括测试版本:"
|
||||
t IDC_CHECK_NOW "立即检查"
|
||||
t IDCANCEL "取消"
|
||||
|
||||
p 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 IDC_DOWNLOAD "下载"
|
||||
t IDCANCEL "取消"
|
|
@ -1,8 +1,17 @@
|
|||
# This file should be saved as UTF-8, no-BOM
|
||||
|
||||
################################################################################
|
||||
l "English" 0x0409, 0x0809, 0x0c09, 0x1009, 0x1409, 0x1809, 0x1c09, 0x2009, 0x2409, 0x2809, 0x2c09, 0x3009, 0x3409, 0x3809, 0x3c09, 0x4009, 0x4409, 0x4809
|
||||
s IDD_MESSAGES
|
||||
t MSG_001 "WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
|
||||
t MSG_001 "Other instance detected"
|
||||
t MSG_002 "Another Rufus application is running.\n"
|
||||
"Please close the first application before running another one."
|
||||
t MSG_003 "WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
|
||||
"To continue with this operation, click OK. To quit click CANCEL."
|
||||
t MSG_004 "Rufus update policy"
|
||||
t MSG_005 "Do you want to allow Rufus to check for application updates online?"
|
||||
|
||||
################################################################################
|
||||
l "French" 0x040c, 0x080c, 0x0c0c, 0x100c, 0x140c, 0x180c, 0x1c0c, 0x200c, 0x240c, 0x280c, 0x2c0c, 0x300c, 0x340c, 0x380c, 0xe40c
|
||||
s IDD_DIALOG
|
||||
t IDS_FORMATOPTIONS_TXT "Options de Formattage "
|
||||
|
@ -18,9 +27,15 @@ t IDC_SET_ICON "Ajouter un label étendu et une icône"
|
|||
m IDC_ADVANCED +36 0
|
||||
|
||||
s IDD_MESSAGES
|
||||
t MSG_001 "ATTENTION: TOUTES LES DONNEES SUR LE VOLUME '%s' VONT ETRE EFFACEES.\n"
|
||||
t MSG_001 "Autre instance detectée"
|
||||
t MSG_002 "Une autre instance de Rufus est en cours d'exécution.\n"
|
||||
"Veuillez fermer la première instance avant d'en lancer une seconde."
|
||||
t MSG_003 "ATTENTION: TOUTES LES DONNEES SUR LE VOLUME '%s' VONT ETRE EFFACEES.\n"
|
||||
"Pour continuer cette operation, cliquez sur OK.\nPour quitter cliquez sur ANNULER."
|
||||
t MSG_004 "Mises à jour"
|
||||
t MSG_005 "Voulez-vous authoriser Rufus à chercher des mises à jour en ligne?"
|
||||
|
||||
################################################################################
|
||||
l "Chinese (Traditional)" 0x0404, 0x0804, 0x0c04, 0x1004, 0x1404
|
||||
s IDD_DIALOG
|
||||
t IDS_DEVICE_TXT "设备"
|
||||
|
@ -94,3 +109,12 @@ t IDS_NEW_VERSION_NOTES_TXT "发行说明"
|
|||
t IDS_NEW_VERSION_DOWNLOAD_TXT "下载"
|
||||
t IDC_DOWNLOAD "下载"
|
||||
t IDCANCEL "取消"
|
||||
|
||||
s 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."
|
||||
t MSG_003 "WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
|
||||
"To continue with this operation, click OK. To quit click CANCEL."
|
||||
t MSG_004 "更新方案和设置"
|
||||
t MSG_005 "你要允許此應用程序檢查更新?"
|
|
@ -99,6 +99,104 @@ const loc_control_id control_id[] = {
|
|||
LOC_CTRL(IDS_NEW_VERSION_NOTES_TXT),
|
||||
LOC_CTRL(MSG_000),
|
||||
LOC_CTRL(MSG_001),
|
||||
LOC_CTRL(MSG_002),
|
||||
LOC_CTRL(MSG_003),
|
||||
LOC_CTRL(MSG_004),
|
||||
LOC_CTRL(MSG_005),
|
||||
LOC_CTRL(MSG_006),
|
||||
LOC_CTRL(MSG_007),
|
||||
LOC_CTRL(MSG_008),
|
||||
LOC_CTRL(MSG_009),
|
||||
LOC_CTRL(MSG_010),
|
||||
LOC_CTRL(MSG_011),
|
||||
LOC_CTRL(MSG_012),
|
||||
LOC_CTRL(MSG_013),
|
||||
LOC_CTRL(MSG_014),
|
||||
LOC_CTRL(MSG_015),
|
||||
LOC_CTRL(MSG_016),
|
||||
LOC_CTRL(MSG_017),
|
||||
LOC_CTRL(MSG_018),
|
||||
LOC_CTRL(MSG_019),
|
||||
LOC_CTRL(MSG_020),
|
||||
LOC_CTRL(MSG_021),
|
||||
LOC_CTRL(MSG_022),
|
||||
LOC_CTRL(MSG_023),
|
||||
LOC_CTRL(MSG_024),
|
||||
LOC_CTRL(MSG_025),
|
||||
LOC_CTRL(MSG_026),
|
||||
LOC_CTRL(MSG_027),
|
||||
LOC_CTRL(MSG_028),
|
||||
LOC_CTRL(MSG_029),
|
||||
LOC_CTRL(MSG_030),
|
||||
LOC_CTRL(MSG_031),
|
||||
LOC_CTRL(MSG_032),
|
||||
LOC_CTRL(MSG_033),
|
||||
LOC_CTRL(MSG_034),
|
||||
LOC_CTRL(MSG_035),
|
||||
LOC_CTRL(MSG_036),
|
||||
LOC_CTRL(MSG_037),
|
||||
LOC_CTRL(MSG_038),
|
||||
LOC_CTRL(MSG_039),
|
||||
LOC_CTRL(MSG_040),
|
||||
LOC_CTRL(MSG_041),
|
||||
LOC_CTRL(MSG_042),
|
||||
LOC_CTRL(MSG_043),
|
||||
LOC_CTRL(MSG_044),
|
||||
LOC_CTRL(MSG_045),
|
||||
LOC_CTRL(MSG_046),
|
||||
LOC_CTRL(MSG_047),
|
||||
LOC_CTRL(MSG_048),
|
||||
LOC_CTRL(MSG_049),
|
||||
LOC_CTRL(MSG_050),
|
||||
LOC_CTRL(MSG_051),
|
||||
LOC_CTRL(MSG_052),
|
||||
LOC_CTRL(MSG_053),
|
||||
LOC_CTRL(MSG_054),
|
||||
LOC_CTRL(MSG_055),
|
||||
LOC_CTRL(MSG_056),
|
||||
LOC_CTRL(MSG_057),
|
||||
LOC_CTRL(MSG_058),
|
||||
LOC_CTRL(MSG_059),
|
||||
LOC_CTRL(MSG_060),
|
||||
LOC_CTRL(MSG_061),
|
||||
LOC_CTRL(MSG_062),
|
||||
LOC_CTRL(MSG_063),
|
||||
LOC_CTRL(MSG_064),
|
||||
LOC_CTRL(MSG_065),
|
||||
LOC_CTRL(MSG_066),
|
||||
LOC_CTRL(MSG_067),
|
||||
LOC_CTRL(MSG_068),
|
||||
LOC_CTRL(MSG_069),
|
||||
LOC_CTRL(MSG_070),
|
||||
LOC_CTRL(MSG_071),
|
||||
LOC_CTRL(MSG_072),
|
||||
LOC_CTRL(MSG_073),
|
||||
LOC_CTRL(MSG_074),
|
||||
LOC_CTRL(MSG_075),
|
||||
LOC_CTRL(MSG_076),
|
||||
LOC_CTRL(MSG_077),
|
||||
LOC_CTRL(MSG_078),
|
||||
LOC_CTRL(MSG_079),
|
||||
LOC_CTRL(MSG_080),
|
||||
LOC_CTRL(MSG_081),
|
||||
LOC_CTRL(MSG_082),
|
||||
LOC_CTRL(MSG_083),
|
||||
LOC_CTRL(MSG_084),
|
||||
LOC_CTRL(MSG_085),
|
||||
LOC_CTRL(MSG_086),
|
||||
LOC_CTRL(MSG_087),
|
||||
LOC_CTRL(MSG_088),
|
||||
LOC_CTRL(MSG_089),
|
||||
LOC_CTRL(MSG_090),
|
||||
LOC_CTRL(MSG_091),
|
||||
LOC_CTRL(MSG_092),
|
||||
LOC_CTRL(MSG_093),
|
||||
LOC_CTRL(MSG_094),
|
||||
LOC_CTRL(MSG_095),
|
||||
LOC_CTRL(MSG_096),
|
||||
LOC_CTRL(MSG_097),
|
||||
LOC_CTRL(MSG_098),
|
||||
LOC_CTRL(MSG_099),
|
||||
LOC_CTRL(IDOK),
|
||||
LOC_CTRL(IDCANCEL),
|
||||
LOC_CTRL(IDABORT),
|
||||
|
|
|
@ -369,6 +369,24 @@ static __inline DWORD GetTempPathU(DWORD nBufferLength, char* lpBuffer)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static __inline DWORD GetTempFileNameU(char* lpPathName, char* lpPrefixString, UINT uUnique, char* lpTempFileName)
|
||||
{
|
||||
DWORD ret = 0, err = ERROR_INVALID_DATA;
|
||||
wconvert(lpPathName);
|
||||
wconvert(lpPrefixString);
|
||||
walloc(lpTempFileName, MAX_PATH);
|
||||
ret =GetTempFileNameW(wlpPathName, wlpPrefixString, uUnique, wlpTempFileName);
|
||||
err = GetLastError();
|
||||
if ((ret != 0) && ((ret = wchar_to_utf8_no_alloc(wlpTempFileName, lpTempFileName, MAX_PATH)) == 0)) {
|
||||
err = GetLastError();
|
||||
}
|
||||
wfree(lpTempFileName);
|
||||
wfree(lpPrefixString);
|
||||
wfree(lpPathName);
|
||||
SetLastError(err);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __inline DWORD GetModuleFileNameU(HMODULE hModule, char* lpFilename, DWORD nSize)
|
||||
{
|
||||
DWORD ret = 0, err = ERROR_INVALID_DATA;
|
||||
|
|
100
src/resource.h
100
src/resource.h
|
@ -110,6 +110,104 @@
|
|||
#define IDS_NEW_VERSION_NOTES_TXT 2011
|
||||
#define MSG_000 3000
|
||||
#define MSG_001 3001
|
||||
#define MSG_002 3002
|
||||
#define MSG_003 3003
|
||||
#define MSG_004 3004
|
||||
#define MSG_005 3005
|
||||
#define MSG_006 3006
|
||||
#define MSG_007 3007
|
||||
#define MSG_008 3008
|
||||
#define MSG_009 3009
|
||||
#define MSG_010 3010
|
||||
#define MSG_011 3011
|
||||
#define MSG_012 3012
|
||||
#define MSG_013 3013
|
||||
#define MSG_014 3014
|
||||
#define MSG_015 3015
|
||||
#define MSG_016 3016
|
||||
#define MSG_017 3017
|
||||
#define MSG_018 3018
|
||||
#define MSG_019 3019
|
||||
#define MSG_020 3020
|
||||
#define MSG_021 3021
|
||||
#define MSG_022 3022
|
||||
#define MSG_023 3023
|
||||
#define MSG_024 3024
|
||||
#define MSG_025 3025
|
||||
#define MSG_026 3026
|
||||
#define MSG_027 3027
|
||||
#define MSG_028 3028
|
||||
#define MSG_029 3029
|
||||
#define MSG_030 3030
|
||||
#define MSG_031 3031
|
||||
#define MSG_032 3032
|
||||
#define MSG_033 3033
|
||||
#define MSG_034 3034
|
||||
#define MSG_035 3035
|
||||
#define MSG_036 3036
|
||||
#define MSG_037 3037
|
||||
#define MSG_038 3038
|
||||
#define MSG_039 3039
|
||||
#define MSG_040 3040
|
||||
#define MSG_041 3041
|
||||
#define MSG_042 3042
|
||||
#define MSG_043 3043
|
||||
#define MSG_044 3044
|
||||
#define MSG_045 3045
|
||||
#define MSG_046 3046
|
||||
#define MSG_047 3047
|
||||
#define MSG_048 3048
|
||||
#define MSG_049 3049
|
||||
#define MSG_050 3050
|
||||
#define MSG_051 3051
|
||||
#define MSG_052 3052
|
||||
#define MSG_053 3053
|
||||
#define MSG_054 3054
|
||||
#define MSG_055 3055
|
||||
#define MSG_056 3056
|
||||
#define MSG_057 3057
|
||||
#define MSG_058 3058
|
||||
#define MSG_059 3059
|
||||
#define MSG_060 3060
|
||||
#define MSG_061 3061
|
||||
#define MSG_062 3062
|
||||
#define MSG_063 3063
|
||||
#define MSG_064 3064
|
||||
#define MSG_065 3065
|
||||
#define MSG_066 3066
|
||||
#define MSG_067 3067
|
||||
#define MSG_068 3068
|
||||
#define MSG_069 3069
|
||||
#define MSG_070 3070
|
||||
#define MSG_071 3071
|
||||
#define MSG_072 3072
|
||||
#define MSG_073 3073
|
||||
#define MSG_074 3074
|
||||
#define MSG_075 3075
|
||||
#define MSG_076 3076
|
||||
#define MSG_077 3077
|
||||
#define MSG_078 3078
|
||||
#define MSG_079 3079
|
||||
#define MSG_080 3080
|
||||
#define MSG_081 3081
|
||||
#define MSG_082 3082
|
||||
#define MSG_083 3083
|
||||
#define MSG_084 3084
|
||||
#define MSG_085 3085
|
||||
#define MSG_086 3086
|
||||
#define MSG_087 3087
|
||||
#define MSG_088 3088
|
||||
#define MSG_089 3089
|
||||
#define MSG_090 3090
|
||||
#define MSG_091 3091
|
||||
#define MSG_092 3092
|
||||
#define MSG_093 3093
|
||||
#define MSG_094 3094
|
||||
#define MSG_095 3095
|
||||
#define MSG_096 3096
|
||||
#define MSG_097 3097
|
||||
#define MSG_098 3098
|
||||
#define MSG_099 3099
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
|
@ -119,6 +217,6 @@
|
|||
#define _APS_NEXT_RESOURCE_VALUE 404
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1071
|
||||
#define _APS_NEXT_SYMED_VALUE 3000
|
||||
#define _APS_NEXT_SYMED_VALUE 4000
|
||||
#endif
|
||||
#endif
|
||||
|
|
77
src/rufus.c
77
src/rufus.c
|
@ -102,6 +102,7 @@ static BOOL log_displayed = FALSE;
|
|||
static BOOL iso_provided = FALSE;
|
||||
extern BOOL force_large_fat32;
|
||||
static int selection_default;
|
||||
static loc_cmd* selected_locale = NULL;
|
||||
char msgbox[1024], msgbox_title[32];
|
||||
|
||||
/*
|
||||
|
@ -1461,7 +1462,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
char tmp[128];
|
||||
static UINT uBootChecked = BST_CHECKED, uQFChecked;
|
||||
static BOOL first_log_display = TRUE, user_changed_label = FALSE;
|
||||
loc_cmd* selected_locale;
|
||||
|
||||
switch (message) {
|
||||
|
||||
|
@ -1594,17 +1594,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
break;
|
||||
#ifdef RUFUS_TEST
|
||||
case IDC_TEST:
|
||||
if ( (!get_supported_locales("rufus.loc"))
|
||||
// || ((selected_locale = get_locale_from_lcid(GetUserDefaultLCID())) == NULL) ) {
|
||||
|| ((selected_locale = get_locale_from_name("French")) == NULL) ) {
|
||||
uprintf("FATAL: Could not get a default locale!\n");
|
||||
MessageBoxU(NULL, "Default locale is missing - the application will now exit",
|
||||
"Localization failure", MB_ICONSTOP);
|
||||
break;
|
||||
}
|
||||
uprintf("Will use locale '%s'\n", selected_locale->txt[0]);
|
||||
get_loc_data_file("rufus.loc", (long)selected_locale->num[0], (long)selected_locale->num[1]);
|
||||
apply_localization(IDD_DIALOG, hDlg);
|
||||
break;
|
||||
#endif
|
||||
case IDC_ADVANCED:
|
||||
|
@ -1786,7 +1775,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
break;
|
||||
}
|
||||
GetWindowTextU(hDeviceList, tmp, ARRAYSIZE(tmp));
|
||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_001, tmp),
|
||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_003, tmp),
|
||||
APPLICATION_NAME, MB_OKCANCEL|MB_ICONWARNING) == IDCANCEL) {
|
||||
format_op_in_progress = FALSE;
|
||||
break;
|
||||
|
@ -1925,10 +1914,13 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
const char* old_wait_option = "/W";
|
||||
int i, opt, option_index = 0, argc = 0, si = 0;
|
||||
BOOL attached_console = FALSE;
|
||||
BYTE* loc_data;
|
||||
DWORD loc_size, Size;
|
||||
char tmp_path[MAX_PATH], loc_file[MAX_PATH] = "";
|
||||
char** argv = NULL;
|
||||
wchar_t **wenv, **wargv;
|
||||
PF_DECL(__wgetmainargs);
|
||||
HANDLE mutex = NULL;
|
||||
HANDLE mutex = NULL, hFile = NULL;
|
||||
HWND hDlg = NULL;
|
||||
MSG msg;
|
||||
int wait_for_mutex = 0;
|
||||
|
@ -1938,18 +1930,34 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
{"wait", required_argument, NULL, 'w'},
|
||||
{0, 0, NULL, 0}
|
||||
};
|
||||
#ifndef RUFUS_TEST
|
||||
const char* loc_name = "rufus.loc";
|
||||
BYTE* loc_data;
|
||||
char loc_path[MAX_PATH];
|
||||
DWORD loc_size, Size;
|
||||
HANDLE hFile = NULL;
|
||||
#endif
|
||||
|
||||
uprintf("*** " APPLICATION_NAME " init ***\n");
|
||||
|
||||
// Init localization
|
||||
init_localization();
|
||||
loc_data = (BYTE*)GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_LC_RUFUS_LOC), _RT_RCDATA, "rufus.loc", &loc_size, FALSE);
|
||||
GetTempPathU(sizeof(tmp_path), tmp_path);
|
||||
GetTempFileNameU(tmp_path, APPLICATION_NAME, 0, loc_file);
|
||||
|
||||
hFile = CreateFileU(loc_file, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
|
||||
NULL, CREATE_ALWAYS, 0, 0);
|
||||
if ((hFile == INVALID_HANDLE_VALUE)|| (!WriteFile(hFile, loc_data, loc_size, &Size, 0)) || (loc_size != Size)) {
|
||||
safe_closehandle(hFile);
|
||||
uprintf("localization: unable to extract '%s': %s.\n", loc_file, WindowsErrorString());
|
||||
} else {
|
||||
safe_closehandle(hFile);
|
||||
uprintf("localization: extracted data to '%s'\n", loc_file);
|
||||
if ( (!get_supported_locales(loc_file))
|
||||
// || ((selected_locale = get_locale_from_lcid(GetUserDefaultLCID())) == NULL) ) {
|
||||
|| ((selected_locale = get_locale_from_name("French")) == NULL) ) {
|
||||
uprintf("FATAL: Could not access default locale!\n");
|
||||
MessageBoxU(NULL, "The default locale data is missing. This application will now exit.",
|
||||
"Fatal error", MB_ICONSTOP);
|
||||
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]);
|
||||
}
|
||||
|
||||
// Reattach the console, if we were started from commandline
|
||||
if (AttachConsole(ATTACH_PARENT_PROCESS) != 0) {
|
||||
|
@ -2010,9 +2018,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
mutex = CreateMutexA(NULL, TRUE, "Global/" APPLICATION_NAME);
|
||||
}
|
||||
if ((mutex == NULL) || (GetLastError() == ERROR_ALREADY_EXISTS)) {
|
||||
MessageBoxU(NULL, "Another " APPLICATION_NAME " application is running.\n"
|
||||
"Please close the first application before running another one.",
|
||||
"Other instance detected", MB_ICONSTOP);
|
||||
MessageBoxU(NULL, lmprintf(MSG_002), lmprintf(MSG_001), MB_ICONSTOP);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -2037,27 +2043,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
// 0x9e disables removable and fixed drive notifications
|
||||
SetLGP(FALSE, &existing_key, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", "NoDriveTypeAutorun", 0x9e);
|
||||
|
||||
#ifndef RUFUS_TEST
|
||||
// Extract the embedded localization data into the user's temp dir
|
||||
loc_data = (BYTE*)GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_LC_RUFUS_LOC), _RT_RCDATA, loc_name, &loc_size, FALSE);
|
||||
GetTempPathU(sizeof(loc_path), loc_path);
|
||||
safe_strcat(loc_path, sizeof(loc_name), loc_name);
|
||||
|
||||
// TODO: make sure we fail if we can't extract the file as we'll miss all the messages
|
||||
|
||||
// Force Chinese localization from embedded rufus.loc file
|
||||
// TODO: REMOVE ME!
|
||||
hFile = CreateFileU(loc_path, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
|
||||
NULL, CREATE_ALWAYS, 0, 0);
|
||||
if ((hFile == INVALID_HANDLE_VALUE)|| (!WriteFile(hFile, loc_data, loc_size, &Size, 0)) || (loc_size != Size)) {
|
||||
uprintf("Unable to create file '%s': %s.\n", loc_path, WindowsErrorString());
|
||||
} else {
|
||||
uprintf("Successfully extracted '%s'\n", loc_path);
|
||||
get_loc_data_file(loc_path);
|
||||
}
|
||||
safe_closehandle(hFile);
|
||||
#endif
|
||||
|
||||
// Create the main Window
|
||||
hDlg = CreateDialogW(hInstance, MAKEINTRESOURCEW(IDD_DIALOG), NULL, MainCallback);
|
||||
if (hDlg == NULL) {
|
||||
|
@ -2127,6 +2112,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
}
|
||||
|
||||
out:
|
||||
if (loc_file[0] != 0)
|
||||
DeleteFileU(loc_file);
|
||||
DestroyAllTooltips();
|
||||
exit_localization();
|
||||
safe_free(iso_path);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
#include <windows.h>
|
||||
#include <winioctl.h> // for DISK_GEOMETRY
|
||||
#include <malloc.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
|
@ -29,7 +30,7 @@
|
|||
/* Program options */
|
||||
#define RUFUS_DEBUG // print debug info to Debug facility
|
||||
/* Features not ready for prime time and that may *DESTROY* your data - USE AT YOUR OWN RISKS! */
|
||||
#define RUFUS_TEST
|
||||
// #define RUFUS_TEST
|
||||
|
||||
#define APPLICATION_NAME "Rufus"
|
||||
#define COMPANY_NAME "Akeo Consulting"
|
||||
|
|
|
@ -184,7 +184,7 @@ END
|
|||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"IDR_LC_RUFUS_LOC RCDATA ""../res/locale/rufus.loc""\r\n"
|
||||
"IDR_LC_RUFUS_LOC RCDATA ""../res/localization/rufus.loc""\r\n"
|
||||
"IDR_SL_LDLINUX_V4_BSS RCDATA ""../res/syslinux/ldlinux_v4.bss""\r\n"
|
||||
"IDR_SL_LDLINUX_V4_SYS RCDATA ""../res/syslinux/ldlinux_v4.sys""\r\n"
|
||||
"IDR_SL_LDLINUX_V5_BSS RCDATA ""../res/syslinux/ldlinux_v5.bss""\r\n"
|
||||
|
@ -333,7 +333,7 @@ IDI_DOWN ICON "../res/down.ico"
|
|||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
IDR_LC_RUFUS_LOC RCDATA "../res/locale/rufus.loc"
|
||||
IDR_LC_RUFUS_LOC RCDATA "../res/localization/rufus.loc"
|
||||
IDR_SL_LDLINUX_V4_BSS RCDATA "../res/syslinux/ldlinux_v4.bss"
|
||||
IDR_SL_LDLINUX_V4_SYS RCDATA "../res/syslinux/ldlinux_v4.sys"
|
||||
IDR_SL_LDLINUX_V5_BSS RCDATA "../res/syslinux/ldlinux_v5.bss"
|
||||
|
|
|
@ -1065,8 +1065,7 @@ BOOL SetUpdateCheck(void)
|
|||
uprintf("Short name used - Disabling initial update policy prompt\n");
|
||||
enable_updates = TRUE;
|
||||
} else {
|
||||
enable_updates = Notification(MSG_QUESTION, &more_info, APPLICATION_NAME " update policy",
|
||||
"Do you want to allow " APPLICATION_NAME " to check for application updates?\n");
|
||||
enable_updates = Notification(MSG_QUESTION, &more_info, lmprintf(MSG_004), lmprintf(MSG_005));
|
||||
}
|
||||
if (!enable_updates) {
|
||||
WriteRegistryKey32(REGKEY_HKCU, REGKEY_UPDATE_INTERVAL, -1);
|
||||
|
|
Loading…
Reference in New Issue