diff --git a/MusicPlayer2/AboutDlg.cpp b/MusicPlayer2/AboutDlg.cpp
index 5c402de80..f2ab53104 100644
--- a/MusicPlayer2/AboutDlg.cpp
+++ b/MusicPlayer2/AboutDlg.cpp
@@ -37,15 +37,20 @@ bool CAboutDlg::InitializeControls()
temp += L" (Debug)";
#endif
+ wstring time_str, hash_str;
+ CCommon::GetLastCompileTime(time_str, hash_str);
+ if (!hash_str.empty())
+ temp += L" (" + hash_str + L")";
+
SetDlgItemTextW(IDC_STATIC_VERSION, temp.c_str());
temp = L"Copyright (C) 2017-" COPY_RIGHT_YEAR L" By ZhongYang\r\n";
- temp += theApp.m_str_table.LoadTextFormat(L"TXT_ABOUTBOX_LAST_BUILD_DATE", { CCommon::GetLastCompileTime() });
+ temp += theApp.m_str_table.LoadTextFormat(L"TXT_ABOUTBOX_LAST_BUILD_DATE", { time_str });
SetDlgItemTextW(IDC_STATIC_COPYRIGHT, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_ABOUTBOX_THIRD_PARTY_LIB");
SetDlgItemTextW(IDC_STATIC_THIRD_PARTY_LIB, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_ABOUTBOX_OTHER_SOFTWARE");
SetDlgItemTextW(IDC_STATIC_OTHER_SOFTWARE, temp.c_str());
- temp = L"" + theApp.m_str_table.LoadText(L"TXT_ABOUTBOX_CONTRACT_AUTHOR") + L"";
+ temp = L"" + theApp.m_str_table.LoadText(L"TXT_ABOUTBOX_CONTACT_AUTHOR") + L"";
SetDlgItemTextW(IDC_SYSLINK1, temp.c_str());
temp = L"" + theApp.m_str_table.LoadText(L"TXT_ABOUTBOX_CHECK_UPDATE") + L"";
SetDlgItemTextW(IDC_SYSLINK2, temp.c_str());
@@ -104,7 +109,7 @@ BOOL CAboutDlg::OnInitDialog()
SetBackgroundColor(GetSysColor(COLOR_WINDOW));
m_tool_tip.Create(this);
- m_tool_tip.AddTool(GetDlgItem(IDC_SYSLINK1), (theApp.m_str_table.LoadText(L"TIP_ABOUTBOX_SEND_EMAIL_TO_ATHOUR") + L"\r\nmailto:zhongyang219@hotmail.com").c_str());
+ m_tool_tip.AddTool(GetDlgItem(IDC_SYSLINK1), (theApp.m_str_table.LoadText(L"TIP_ABOUTBOX_SEND_EMAIL_TO_AUTHOR") + L"\r\nmailto:zhongyang219@hotmail.com").c_str());
m_tool_tip.AddTool(GetDlgItem(IDC_GITHUB_SYSLINK), (theApp.m_str_table.LoadText(L"TIP_ABOUTBOX_GOTO_GITHUB") + L"\r\nhttps://github.com/zhongyang219/MusicPlayer2").c_str());
m_tool_tip.AddTool(GetDlgItem(IDC_SYSLINK_BASS), L"http://www.un4seen.com/bass.html");
m_tool_tip.AddTool(GetDlgItem(IDC_SYSLINK_TAGLIB), L"http://taglib.org/");
diff --git a/MusicPlayer2/CPlayerUIBase.cpp b/MusicPlayer2/CPlayerUIBase.cpp
index a6b94caa7..396388913 100644
--- a/MusicPlayer2/CPlayerUIBase.cpp
+++ b/MusicPlayer2/CPlayerUIBase.cpp
@@ -1327,7 +1327,7 @@ void CPlayerUIBase::SetRepeatModeToolTipText()
auto repeat_mode = CPlayer::GetInstance().GetRepeatMode();
switch (repeat_mode)
{
- case RM_PLAY_ORDER: mode_str = theApp.m_str_table.LoadText(L"UI_TIP_REPEAT_OREDE");break;
+ case RM_PLAY_ORDER: mode_str = theApp.m_str_table.LoadText(L"UI_TIP_REPEAT_ORDER");break;
case RM_PLAY_SHUFFLE: mode_str = theApp.m_str_table.LoadText(L"UI_TIP_REPEAT_SHUFFLE"); break;
case RM_PLAY_RANDOM: mode_str = theApp.m_str_table.LoadText(L"UI_TIP_REPEAT_RANDOM"); break;
case RM_LOOP_PLAYLIST: mode_str = theApp.m_str_table.LoadText(L"UI_TIP_REPEAT_PLAYLIST"); break;
@@ -1342,7 +1342,7 @@ void CPlayerUIBase::SetSongInfoToolTipText()
{
const SongInfo& songInfo = CPlayer::GetInstance().GetCurrentSongInfo();
- m_info_tip = theApp.m_str_table.LoadText(L"UI_TIP_BTN_PROPETRY") + GetCmdShortcutKeyForTooltips(ID_SONG_INFO).GetString() + L"\r\n";
+ m_info_tip = theApp.m_str_table.LoadText(L"UI_TIP_BTN_PROPERTY") + GetCmdShortcutKeyForTooltips(ID_SONG_INFO).GetString() + L"\r\n";
m_info_tip += theApp.m_str_table.LoadText(L"TXT_TITLE") + L": " + songInfo.GetTitle() + L"\r\n";
m_info_tip += theApp.m_str_table.LoadText(L"TXT_ARTIST") + L": " + songInfo.GetArtist() + L"\r\n";
m_info_tip += theApp.m_str_table.LoadText(L"TXT_ALBUM") + L": " + songInfo.GetAlbum();
diff --git a/MusicPlayer2/CSelectPlaylist.cpp b/MusicPlayer2/CSelectPlaylist.cpp
index 7b9974531..ad20139ba 100644
--- a/MusicPlayer2/CSelectPlaylist.cpp
+++ b/MusicPlayer2/CSelectPlaylist.cpp
@@ -529,7 +529,7 @@ void CSelectPlaylistDlg::OnRenamePlaylist()
wstring new_path = CCommon::FileRename(sel_playlist_path, new_playlist_name); //播放列表后命名后的路径
if (new_path.empty())
{
- const wstring& info = theApp.m_str_table.LoadText(L"MSG_PLAYLIST_REMANE_FAILED");
+ const wstring& info = theApp.m_str_table.LoadText(L"MSG_PLAYLIST_RENANE_FAILED");
MessageBox(info.c_str(), NULL, MB_ICONWARNING | MB_OK);
return;
}
@@ -780,8 +780,8 @@ void CSelectPlaylistDlg::OnPlaylistFixPathError()
{
if (LeftSelectValid())
{
- const wstring& inquary_info = theApp.m_str_table.LoadText(L"MSG_PLAYLIST_FIX_ERROR_PATH_INQUARY");
- if (MessageBox(inquary_info.c_str(), NULL, MB_ICONQUESTION | MB_YESNO) == IDYES)
+ const wstring& inquiry_info = theApp.m_str_table.LoadText(L"MSG_PLAYLIST_FIX_ERROR_PATH_INQUIRY");
+ if (MessageBox(inquiry_info.c_str(), NULL, MB_ICONQUESTION | MB_YESNO) == IDYES)
{
PlaylistInfo playlist_info{ GetSelectedPlaylist() };
CMusicPlayerCmdHelper helper;
diff --git a/MusicPlayer2/Common.cpp b/MusicPlayer2/Common.cpp
index 46af108fc..26262423c 100644
--- a/MusicPlayer2/Common.cpp
+++ b/MusicPlayer2/Common.cpp
@@ -1844,18 +1844,13 @@ POINT CCommon::CalculateWindowMoveOffset(CRect& check_rect, vector& scree
return mov;
}
-wstring CCommon::GetLastCompileTime()
+void CCommon::GetLastCompileTime(wstring& time_str, wstring& hash_str)
{
wstring compile_time = GetTextResource(IDR_COMPILE_TIME, CodeType::ANSI);
size_t pos = compile_time.find(L"\r\n");
- while (pos != wstring::npos)
- {
- compile_time.replace(pos, 2, L"");
- pos = compile_time.find(L"\r\n");
- }
- if (!compile_time.empty())
- compile_time.pop_back();
- return compile_time;
+ time_str = compile_time.substr(0, pos);
+ if (compile_time.size() > pos + 10) // 如果hash存在
+ hash_str = compile_time.substr(pos + 2, 8); // 截取hash前8位
}
unsigned __int64 CCommon::GetCurTimeElapse()
diff --git a/MusicPlayer2/Common.h b/MusicPlayer2/Common.h
index 68bc07f27..12bca17b7 100644
--- a/MusicPlayer2/Common.h
+++ b/MusicPlayer2/Common.h
@@ -434,7 +434,7 @@ class CCommon
static POINT CalculateWindowMoveOffset(CRect& check_rect, vector& screen_rects);
//从资源文件读取上次编译时间
- static wstring GetLastCompileTime();
+ static void GetLastCompileTime(wstring& time_str, wstring& hash_str);
static unsigned __int64 GetCurTimeElapse();
diff --git a/MusicPlayer2/DataSettingsDlg.cpp b/MusicPlayer2/DataSettingsDlg.cpp
index ce055f5aa..e14005845 100644
--- a/MusicPlayer2/DataSettingsDlg.cpp
+++ b/MusicPlayer2/DataSettingsDlg.cpp
@@ -59,8 +59,8 @@ bool CDataSettingsDlg::InitializeControls()
SetDlgItemTextW(IDC_MINIMIZE_TO_NOTIFY_RADIO, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_OPT_DATA_CLOSE_MAIN_WINDOW_EXIT");
SetDlgItemTextW(IDC_EXIT_PROGRAM_RADIO, temp.c_str());
- temp = theApp.m_str_table.LoadText(L"TXT_OPT_DATA_AUTO_DL_SETTING");
- SetDlgItemTextW(IDC_TXT_OPT_DATA_AUTO_DL_SETTING_STATIC, temp.c_str());
+ temp = theApp.m_str_table.LoadText(L"TXT_OPT_DATA_DL_SETTING");
+ SetDlgItemTextW(IDC_TXT_OPT_DATA_DL_SETTING_STATIC, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_OPT_DATA_AUTO_DL_LYRIC");
SetDlgItemTextW(IDC_LYRIC_AUTO_DOWNLOAD_CHECK, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_SEL");
@@ -70,9 +70,9 @@ bool CDataSettingsDlg::InitializeControls()
temp = theApp.m_str_table.LoadText(L"TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_LYRIC_DIR");
SetDlgItemTextW(IDC_SAVE_TO_LYRIC_FOLDER, temp.c_str());
- SetDlgControlText(IDC_DOWN_LOAD_LYRIC_TRANSLATION_FORMAT_STATIC, L"TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT");
- SetDlgControlText(IDC_LYRIC_AND_TRANSLATION_IN_SAME_LINE_RADIO, L"TXT_OPT_DATA_DL_LYRIC_AND_TRANSLATION_IN_SAME_LINE");
- SetDlgControlText(IDC_LYRIC_AND_TRANSLATION_IN_DIFFERENT_LINE_RADIO, L"TXT_OPT_DATA_DL_LYRIC_AND_TRANSLATION_IN_DIFFERENT_LINE");
+ SetDlgControlText(IDC_DOWN_LOAD_LYRIC_TRANSLATION_FORMAT_STATIC, L"TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_SEL");
+ SetDlgControlText(IDC_LYRIC_AND_TRANSLATION_IN_SAME_LINE_RADIO, L"TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_SAME_LINE");
+ SetDlgControlText(IDC_LYRIC_AND_TRANSLATION_IN_DIFFERENT_LINE_RADIO, L"TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_DIFFERENT_LINE");
temp = theApp.m_str_table.LoadText(L"TXT_OPT_DATA_AUTO_DL_COVER");
SetDlgItemTextW(IDC_COVER_AUTO_DOWNLOAD_CHECK, temp.c_str());
@@ -240,7 +240,7 @@ BOOL CDataSettingsDlg::OnInitDialog()
m_toolTip.SetMaxTipWidth(theApp.DPI(300));
m_toolTip.AddTool(GetDlgItem(IDC_DOWNLOAD_WHEN_TAG_FULL_CHECK), theApp.m_str_table.LoadText(L"TIP_OPT_DATA_AUTO_DL_ONLY_WHEN_TAG_FULL").c_str());
//m_toolTip.AddTool(GetDlgItem(IDC_SF2_PATH_EDIT), _T("需要额外的音色库才能播放 MIDI 音乐。"));
- m_toolTip.AddTool(GetDlgItem(IDC_MIDI_USE_INNER_LYRIC_CHECK), theApp.m_str_table.LoadText(L"TIP_OPT_DATA_MIDI_INNER_LYRIC_FIRSR").c_str());
+ m_toolTip.AddTool(GetDlgItem(IDC_MIDI_USE_INNER_LYRIC_CHECK), theApp.m_str_table.LoadText(L"TIP_OPT_DATA_MIDI_INNER_LYRIC_FIRST").c_str());
m_toolTip.AddTool(GetDlgItem(IDC_SAVE_TO_APPDATA_RADIO), theApp.m_appdata_dir.c_str());
m_toolTip.AddTool(GetDlgItem(IDC_SAVE_TO_PROGRAM_DIR_RADIO), theApp.m_module_dir.c_str());
diff --git a/MusicPlayer2/FormatConvertDlg.cpp b/MusicPlayer2/FormatConvertDlg.cpp
index e37912945..20fdfcafa 100644
--- a/MusicPlayer2/FormatConvertDlg.cpp
+++ b/MusicPlayer2/FormatConvertDlg.cpp
@@ -566,7 +566,7 @@ void CFormatConvertDlg::SetProgressInfo(int progress)
{
wstring info;
if (progress >= 100)
- info = theApp.m_str_table.LoadText(L"TXT_FORMAT_CONVERT_PROGRESS_INFO_COMPLEATE");
+ info = theApp.m_str_table.LoadText(L"TXT_FORMAT_CONVERT_PROGRESS_INFO_COMPLETE");
else
info = theApp.m_str_table.LoadTextFormat(L"TXT_FORMAT_CONVERT_PROGRESS_INFO", { progress });
SetDlgItemText(IDC_PROGRESS_TEXT, info.c_str());
@@ -675,11 +675,11 @@ afx_msg LRESULT CFormatConvertDlg::OnConvertProgress(WPARAM wParam, LPARAM lPara
}
else if (percent == 101)
{
- status_str = theApp.m_str_table.LoadText(L"TXT_FORMAT_CONVERT_STAUS_COMPLEATE");
+ status_str = theApp.m_str_table.LoadText(L"TXT_FORMAT_CONVERT_STAUS_COMPLETE");
}
else if (percent == 102)
{
- status_str = theApp.m_str_table.LoadText(L"TXT_FORMAT_CONVERT_STAUS_SKIPED");
+ status_str = theApp.m_str_table.LoadText(L"TXT_FORMAT_CONVERT_STAUS_SKIPPED");
}
else
{
diff --git a/MusicPlayer2/LyricBatchDownloadDlg.cpp b/MusicPlayer2/LyricBatchDownloadDlg.cpp
index 477233f2e..4e0435e06 100644
--- a/MusicPlayer2/LyricBatchDownloadDlg.cpp
+++ b/MusicPlayer2/LyricBatchDownloadDlg.cpp
@@ -315,7 +315,7 @@ UINT CLyricBatchDownloadDlg::ThreadFunc(LPVOID lpParam)
bool lyric_exist = CCommon::FileExist(lyric_path) || (!pInfo->playlist->at(i).lyric_file.empty());
if (pInfo->skip_exist && lyric_exist) //如果设置了跳过已存在歌词的曲目,并且歌词已经存在,则跳过它
{
- pInfo->list_ctrl->SetItemText(i, 4, theApp.m_str_table.LoadText(L"TXT_LYRIC_BDL_STATUS_SKIPED").c_str());
+ pInfo->list_ctrl->SetItemText(i, 4, theApp.m_str_table.LoadText(L"TXT_LYRIC_BDL_STATUS_SKIPPED").c_str());
continue;
}
@@ -407,11 +407,11 @@ UINT CLyricBatchDownloadDlg::ThreadFunc(LPVOID lpParam)
if (char_cannot_convert)
pInfo->list_ctrl->SetItemText(i, 4, theApp.m_str_table.LoadText(L"TXT_LYRIC_BDL_STATUS_ENCODE_WARNING").c_str()); //char_cannot_convert为true,则说明有无法转换的Unicode字符
else
- pInfo->list_ctrl->SetItemText(i, 4, theApp.m_str_table.LoadText(L"TXT_LYRIC_BDL_STATUS_SUCCESSED").c_str());
+ pInfo->list_ctrl->SetItemText(i, 4, theApp.m_str_table.LoadText(L"TXT_LYRIC_BDL_STATUS_SUCCEEDED").c_str());
}
else
{
- pInfo->list_ctrl->SetItemText(i, 4, theApp.m_str_table.LoadText(L"TXT_LYRIC_BDL_STATUS_SUCCESSED").c_str());
+ pInfo->list_ctrl->SetItemText(i, 4, theApp.m_str_table.LoadText(L"TXT_LYRIC_BDL_STATUS_SUCCEEDED").c_str());
}
if (pInfo->download_translate)
diff --git a/MusicPlayer2/LyricDownloadDlg.cpp b/MusicPlayer2/LyricDownloadDlg.cpp
index b598d0699..7defb7d9e 100644
--- a/MusicPlayer2/LyricDownloadDlg.cpp
+++ b/MusicPlayer2/LyricDownloadDlg.cpp
@@ -602,7 +602,7 @@ afx_msg LRESULT CLyricDownloadDlg::OnDownloadComplate(WPARAM wParam, LPARAM lPar
wstring saved_path = GetSavedPath();
if (CCommon::FileExist(saved_path))
{
- const wstring& info = theApp.m_str_table.LoadText(L"MSG_LYRIC_OVERWRITE_INQUARY");
+ const wstring& info = theApp.m_str_table.LoadText(L"MSG_LYRIC_OVERWRITE_INQUIRY");
if (MessageBox(info.c_str(), NULL, MB_ICONWARNING | MB_OKCANCEL) == IDCANCEL)
return 0;
}
diff --git a/MusicPlayer2/MediaLibSettingDlg.cpp b/MusicPlayer2/MediaLibSettingDlg.cpp
index b2c2814b1..ab890bfc9 100644
--- a/MusicPlayer2/MediaLibSettingDlg.cpp
+++ b/MusicPlayer2/MediaLibSettingDlg.cpp
@@ -101,7 +101,7 @@ bool CMediaLibSettingDlg::InitializeControls()
SetDlgItemTextW(IDC_FOLDER_EXPLORE_CHECK, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_OPT_MEDIA_LIB_PLAYLIST_OPT");
SetDlgItemTextW(IDC_TXT_OPT_MEDIA_LIB_PLAYLIST_OPT_STATIC, temp.c_str());
- temp = theApp.m_str_table.LoadText(L"TXT_OPT_MEDIA_LIB_DISABLE_DRAGE_SORT");
+ temp = theApp.m_str_table.LoadText(L"TXT_OPT_MEDIA_LIB_DISABLE_DRAG_SORT");
SetDlgItemTextW(IDC_DISABLE_DRAGE_SORT_CHECK, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_OPT_MEDIA_LIB_INS_BEGIN");
SetDlgItemTextW(IDC_INSERT_BEGIN_CHECK, temp.c_str());
@@ -503,7 +503,7 @@ void CMediaLibSettingDlg::OnBnClickedClearRecentPlayedListBtn()
// TODO: 在此添加控件通知处理程序代码
//清除歌曲的上次播放时间
- const wstring& info = theApp.m_str_table.LoadText(L"MSG_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR_INQUARY");
+ const wstring& info = theApp.m_str_table.LoadText(L"MSG_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR_INQUIRY");
if (MessageBox(info.c_str(), NULL, MB_ICONINFORMATION | MB_YESNO) == IDYES)
{
CSongDataManager::GetInstance().ClearLastPlayedTime();
diff --git a/MusicPlayer2/MediaLibTabDlg.cpp b/MusicPlayer2/MediaLibTabDlg.cpp
index f251a20c6..3c34d8543 100644
--- a/MusicPlayer2/MediaLibTabDlg.cpp
+++ b/MusicPlayer2/MediaLibTabDlg.cpp
@@ -89,7 +89,7 @@ void CMediaLibTabDlg::OnOK()
CMediaClassifier::ClassificationType type = GetClassificationType();
if (type != CMediaClassifier::CT_NONE)
{
- ok = CPlayer::GetInstance().SetMediaLibPlaylist(type, GetClassificationItemName(), GetItemSelected());
+ ok = CPlayer::GetInstance().SetMediaLibPlaylist(type, GetClassificationItemName(), GetItemSelected(), true, true);
}
else
{
diff --git a/MusicPlayer2/MusicPlayer2.cpp b/MusicPlayer2/MusicPlayer2.cpp
index f954f2bcf..914705707 100644
--- a/MusicPlayer2/MusicPlayer2.cpp
+++ b/MusicPlayer2/MusicPlayer2.cpp
@@ -205,7 +205,7 @@ BOOL CMusicPlayerApp::InitInstance()
LoadConfig();
m_str_table.Init(m_local_dir + L"language\\", m_general_setting_data.language_);
CCommon::SetThreadLanguageList(m_str_table.GetLanguageTag());
- const wstring& info = theApp.m_str_table.LoadText(L"MSG_APP_RUNING_INFO");
+ const wstring& info = theApp.m_str_table.LoadText(L"MSG_APP_RUNNING_INFO");
AfxMessageBox(info.c_str(), MB_ICONINFORMATION | MB_OK);
}
return FALSE; //退出当前程序
diff --git a/MusicPlayer2/MusicPlayer2.rc b/MusicPlayer2/MusicPlayer2.rc
index 60c275ca8..ded8674af 100644
--- a/MusicPlayer2/MusicPlayer2.rc
+++ b/MusicPlayer2/MusicPlayer2.rc
@@ -811,7 +811,7 @@ BEGIN
CONTROL "Minimize to notification area",IDC_MINIMIZE_TO_NOTIFY_RADIO,
"Button",BS_AUTORADIOBUTTON | WS_GROUP,157,74,173,8
CONTROL "Exit the program",IDC_EXIT_PROGRAM_RADIO,"Button",BS_AUTORADIOBUTTON,157,86,173,8
- GROUPBOX "Automatic Download Settings",IDC_TXT_OPT_DATA_AUTO_DL_SETTING_STATIC,7,103,330,121
+ GROUPBOX "Automatic Download Settings",IDC_TXT_OPT_DATA_DL_SETTING_STATIC,7,103,330,121
CONTROL "Automatically download when lyric is not exist",IDC_LYRIC_AUTO_DOWNLOAD_CHECK,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,114,316,8
LTEXT "Automatically Download Lyrics Save Location:",IDC_TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_SEL_STATIC,14,125,316,8
@@ -827,10 +827,10 @@ BEGIN
CONTROL "Automatically download when album cover is not exist",IDC_COVER_AUTO_DOWNLOAD_CHECK,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,179,316,8
LTEXT "Automatically Download Album Cover Save Location:",IDC_TXT_OPT_DATA_AUTO_DL_COVER_SAVE_SEL_STATIC,14,189,316,8
- CONTROL "Save to the same directory as the song",IDC_SAVE_TO_SONG_FOLDER3,
- "Button",BS_AUTORADIOBUTTON | WS_GROUP,150,200,180,8
CONTROL "Save to album cover directory",IDC_SAVE_TO_ALBUM_FOLDER3,
"Button",BS_AUTORADIOBUTTON,21,200,119,8
+ CONTROL "Save to the same directory as the song",IDC_SAVE_TO_SONG_FOLDER3,
+ "Button",BS_AUTORADIOBUTTON | WS_GROUP,150,200,180,8
CONTROL "Download automatically only when the song information is complete",IDC_DOWNLOAD_WHEN_TAG_FULL_CHECK,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,211,316,8
GROUPBOX "MIDI Setting",IDC_TXT_OPT_DATA_MIDI_SETTING_STATIC,7,229,330,39
@@ -2268,8 +2268,8 @@ BEGIN
0, 0, 100, 0,
0, 0, 100, 0,
0, 0, 100, 0,
- 44, 0, 56, 0,
0, 0, 44, 0,
+ 44, 0, 56, 0,
0, 0, 100, 0,
0, 0, 100, 0,
0, 0, 100, 0,
diff --git a/MusicPlayer2/MusicPlayerCmdHelper.cpp b/MusicPlayer2/MusicPlayerCmdHelper.cpp
index 7305ec823..6b0a9c80f 100644
--- a/MusicPlayer2/MusicPlayerCmdHelper.cpp
+++ b/MusicPlayer2/MusicPlayerCmdHelper.cpp
@@ -204,7 +204,7 @@ bool CMusicPlayerCmdHelper::DeleteSongsFromDisk(const std::vector& fil
if (theApp.m_media_lib_setting_data.disable_delete_from_disk)
return false;
- wstring info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SEL_AUDIO_FILE_INQUARY", { files.size() });
+ wstring info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SEL_AUDIO_FILE_INQUIRY", { files.size() });
if (GetOwner()->MessageBox(info.c_str(), NULL, MB_ICONWARNING | MB_OKCANCEL) != IDOK)
return false;
@@ -742,7 +742,7 @@ void CMusicPlayerCmdHelper::OnRecentItemSelected(const CRecentFolderAndPlaylist:
{
if (item->medialib_info != nullptr)
{
- if (!CPlayer::GetInstance().SetMediaLibPlaylist(item->medialib_info->medialib_type, item->medialib_info->path, -1, false))
+ if (!CPlayer::GetInstance().SetMediaLibPlaylist(item->medialib_info->medialib_type, item->medialib_info->path))
{
const wstring& info = theApp.m_str_table.LoadText(L"MSG_WAIT_AND_RETRY");
AfxMessageBox(info.c_str(), NULL, MB_ICONINFORMATION | MB_OK);
diff --git a/MusicPlayer2/MusicPlayerDlg.cpp b/MusicPlayer2/MusicPlayerDlg.cpp
index 27e59a0c5..807c0711c 100644
--- a/MusicPlayer2/MusicPlayerDlg.cpp
+++ b/MusicPlayer2/MusicPlayerDlg.cpp
@@ -1124,7 +1124,7 @@ void CMusicPlayerDlg::FirstRunCreateShortcut()
//如果目录下没有recent_path和song_data文件,就判断为是第一次运行程序,提示用户是否创建桌面快捷方式
if (!CCommon::FileExist(theApp.m_song_data_path) && !CCommon::FileExist(theApp.m_recent_path_dat_path))
{
- const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUARY_FIRST");
+ const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUIRY_FIRST");
if (MessageBox(create_info.c_str(), NULL, MB_ICONQUESTION | MB_YESNO) == IDYES)
{
if (CCommon::CreateFileShortcut(theApp.m_desktop_path.c_str(), NULL, _T("MusicPlayer2.lnk")))
@@ -3588,7 +3588,7 @@ void CMusicPlayerDlg::OnDeleteFromDisk()
if (m_item_selected < 0 || m_item_selected >= CPlayer::GetInstance().GetSongNum())
return;
- wstring info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SEL_AUDIO_FILE_INQUARY", { m_items_selected.size() });
+ wstring info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SEL_AUDIO_FILE_INQUIRY", { m_items_selected.size() });
if (MessageBoxW(info.c_str(), NULL, MB_ICONWARNING | MB_OKCANCEL) != IDOK) return;
// 以下操作可能涉及MusicControl,先取得锁
if (!CPlayer::GetInstance().GetPlayStatusMutex().try_lock_for(std::chrono::milliseconds(1000))) return;
@@ -4575,7 +4575,7 @@ void CMusicPlayerDlg::OnDeleteAlbumCover()
if (is_inner_cover)
delete_info = theApp.m_str_table.LoadText(L"MSG_DELETE_INNER_COVER_INQUERY");
else
- delete_info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SINGLE_FILE_INQUARY", { CPlayer::GetInstance().GetAlbumCoverPath() });
+ delete_info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SINGLE_FILE_INQUIRY", { CPlayer::GetInstance().GetAlbumCoverPath() });
if (MessageBox(delete_info.c_str(), NULL, MB_ICONQUESTION | MB_OKCANCEL) == IDOK)
{
bool result{ false };
@@ -5052,7 +5052,7 @@ void CMusicPlayerDlg::OnCreatePlayShortcut()
{
// TODO: 在此添加命令处理程序代码
- const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUARY_PLAY_CONTROL");
+ const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUIRY_PLAY_CONTROL");
if (MessageBox(create_info.c_str(), NULL, MB_ICONQUESTION | MB_OKCANCEL) == IDOK)
{
bool success = true;
@@ -5833,7 +5833,7 @@ void CMusicPlayerDlg::OnSaveAsNewPlaylist()
void CMusicPlayerDlg::OnCreateDesktopShortcut()
{
- const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUARY_DESKTOP");
+ const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUIRY_DESKTOP");
if (MessageBox(create_info.c_str(), NULL, MB_ICONQUESTION | MB_YESNO) == IDYES)
{
if (CCommon::CreateFileShortcut(theApp.m_desktop_path.c_str(), NULL, _T("MusicPlayer2.lnk")))
@@ -5852,7 +5852,7 @@ void CMusicPlayerDlg::OnCreateDesktopShortcut()
void CMusicPlayerDlg::OnCreateMiniModeShortCut()
{
- const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUARY_MINIMODE");
+ const wstring& create_info = theApp.m_str_table.LoadText(L"MSG_SHORTCUT_INQUIRY_MINIMODE");
if (MessageBox(create_info.c_str(), NULL, MB_ICONQUESTION | MB_YESNO) == IDYES)
{
wstring file_name = theApp.m_str_table.LoadText(L"UI_TIP_BTN_MINIMODE") + L".lnk";
@@ -5891,7 +5891,7 @@ void CMusicPlayerDlg::OnDeleteCurrentFromDisk()
wstring file_path = song.file_path;
if (file_path.empty() || song.is_cue || COSUPlayerHelper::IsOsuFile(file_path))
return;
- wstring info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SINGLE_FILE_INQUARY", { file_path });
+ wstring info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SINGLE_FILE_INQUIRY", { file_path });
if (MessageBox(info.c_str(), NULL, MB_ICONWARNING | MB_OKCANCEL) != IDOK)
return;
if (!CPlayer::GetInstance().GetPlayStatusMutex().try_lock_for(std::chrono::milliseconds(1000))) return;
@@ -6454,8 +6454,8 @@ void CMusicPlayerDlg::OnPlayAsNext() {
void CMusicPlayerDlg::OnPlaylistFixPathError()
{
- const wstring& inquary_info = theApp.m_str_table.LoadText(L"MSG_PLAYLIST_FIX_ERROR_PATH_INQUARY");
- if (MessageBox(inquary_info.c_str(), NULL, MB_ICONQUESTION | MB_YESNO) == IDYES)
+ const wstring& inquiry_info = theApp.m_str_table.LoadText(L"MSG_PLAYLIST_FIX_ERROR_PATH_INQUIRY");
+ if (MessageBox(inquiry_info.c_str(), NULL, MB_ICONQUESTION | MB_YESNO) == IDYES)
{
CMusicPlayerCmdHelper helper(this);
int fixed_count = helper.FixPlaylistPathError(CPlayer::GetInstance().GetPlaylistPath());
diff --git a/MusicPlayer2/PlaySettingsDlg.cpp b/MusicPlayer2/PlaySettingsDlg.cpp
index 1e8257d8f..8ebaa339a 100644
--- a/MusicPlayer2/PlaySettingsDlg.cpp
+++ b/MusicPlayer2/PlaySettingsDlg.cpp
@@ -128,7 +128,7 @@ bool CPlaySettingsDlg::InitializeControls()
SetDlgItemTextW(IDC_SOUND_FADE_CHECK, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_OPT_PLAY_CONTINUE_WHEN_SWITCH_PLAYLIST");
SetDlgItemTextW(IDC_CONTINUE_WHEN_SWITCH_PLAYLIST_CHECK, temp.c_str());
- temp = theApp.m_str_table.LoadText(L"TXT_OPT_PLAY_USE_MEDIA_TRANS_CONTORL");
+ temp = theApp.m_str_table.LoadText(L"TXT_OPT_PLAY_USE_MEDIA_TRANS_CONTROL");
SetDlgItemTextW(IDC_USE_MEDIA_TRANS_CONTORL_CHECK, temp.c_str());
temp = theApp.m_str_table.LoadText(L"TXT_OPT_PLAY_CORE");
SetDlgItemTextW(IDC_TXT_OPT_PLAY_CORE_STATIC, temp.c_str());
diff --git a/MusicPlayer2/Player.cpp b/MusicPlayer2/Player.cpp
index c1439c34d..7caf9f508 100644
--- a/MusicPlayer2/Player.cpp
+++ b/MusicPlayer2/Player.cpp
@@ -119,7 +119,7 @@ void CPlayer::Create()
else if (m_playlist_mode == PM_MEDIA_LIB)
{
auto playlist_info = CMediaLibPlaylistMgr::Instance().GetCurrentPlaylistInfo();
- SetMediaLibPlaylist(playlist_info.medialib_type, playlist_info.path, -1, theApp.m_play_setting_data.auto_play_when_start);
+ SetMediaLibPlaylist(playlist_info.medialib_type, playlist_info.path);
}
else
{
@@ -1172,9 +1172,9 @@ bool CPlayer::OpenASongInFolderMode(const SongInfo& song, bool play)
return true;
}
-bool CPlayer::SetMediaLibPlaylist(CMediaClassifier::ClassificationType type, const std::wstring& name, int play_index, bool play)
+bool CPlayer::SetMediaLibPlaylist(CMediaClassifier::ClassificationType type, const std::wstring& name, int play_index, bool play, bool force)
{
- if (!BeforeIniPlayList(true))
+ if (!BeforeIniPlayList(!force))
return false;
m_path.clear();
diff --git a/MusicPlayer2/Player.h b/MusicPlayer2/Player.h
index 8524198b4..dfc7f8c52 100644
--- a/MusicPlayer2/Player.h
+++ b/MusicPlayer2/Player.h
@@ -325,8 +325,9 @@ class CPlayer
bool OpenASongInFolderMode(const SongInfo& song, bool play = false);
//切换到媒体库模式
- //play_index为-1表示按上次播放的曲目播放,如果为大于等于0的值,则视为播放指定曲目,并从头播放
- bool SetMediaLibPlaylist(CMediaClassifier::ClassificationType type, const std::wstring& name, int play_index = -1, bool play = true);
+ //play_index为-1表示按上次播放状态还原(默认为0),如果为大于等于0的值,则视为从头播放指定曲目; play用来设置是否立即播放
+ //force为false时列表初始化完成后会尝试执行切换播放列表时继续播放
+ bool SetMediaLibPlaylist(CMediaClassifier::ClassificationType type, const std::wstring& name, int play_index = -1, bool play = false, bool force = false);
// 向当前播放列表添加文件,仅在播放列表模式可用,返回成功添加的数量(拒绝重复曲目)
// 由于cue解析问题,请在判断需要“添加歌曲”而不是“添加文件”时尽量使用CPlayer::AddSongs代替此方法而不是使用path构建SongInfo
diff --git a/MusicPlayer2/PropertyAlbumCoverDlg.cpp b/MusicPlayer2/PropertyAlbumCoverDlg.cpp
index 331c4f0f4..e2240ef0f 100644
--- a/MusicPlayer2/PropertyAlbumCoverDlg.cpp
+++ b/MusicPlayer2/PropertyAlbumCoverDlg.cpp
@@ -524,8 +524,8 @@ void CPropertyAlbumCoverDlg::OnBnClickedDeleteButton()
// TODO: 在此添加控件通知处理程序代码
if (IsShowOutAlbumCover() && !m_batch_edit)
{
- wstring inquary_info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SINGLE_FILE_INQUARY", { m_out_img_path });
- if (MessageBox(inquary_info.c_str(), NULL, MB_ICONQUESTION | MB_OKCANCEL) == IDOK)
+ wstring inquiry_info = theApp.m_str_table.LoadTextFormat(L"MSG_DELETE_SINGLE_FILE_INQUIRY", { m_out_img_path });
+ if (MessageBox(inquiry_info.c_str(), NULL, MB_ICONQUESTION | MB_OKCANCEL) == IDOK)
{
if (CommonDialogMgr::DeleteAFile(theApp.m_pMainWnd->GetSafeHwnd(), m_out_img_path) != 0)
{
diff --git a/MusicPlayer2/SetPathDlg.cpp b/MusicPlayer2/SetPathDlg.cpp
index 5009da4e1..77585af7d 100644
--- a/MusicPlayer2/SetPathDlg.cpp
+++ b/MusicPlayer2/SetPathDlg.cpp
@@ -140,7 +140,7 @@ void CSetPathDlg::SetListRowData(int index, const PathInfo & path_info)
m_path_list.SetItemText(index, 2, path_info.path.c_str());
if (path_info.contain_sub_folder)
- m_path_list.SetItemText(index, 3, theApp.m_str_table.LoadText(L"TXT_LIB_PAHT_IS_CONTAIN_SUB_FOLDER_YES").c_str());
+ m_path_list.SetItemText(index, 3, theApp.m_str_table.LoadText(L"TXT_LIB_PATH_IS_CONTAIN_SUB_FOLDER_YES").c_str());
else
m_path_list.SetItemText(index, 3, _T(""));
@@ -230,7 +230,7 @@ BOOL CSetPathDlg::OnInitDialog()
m_path_list.InsertColumn(0, theApp.m_str_table.LoadText(L"TXT_SERIAL_NUMBER").c_str(), LVCFMT_LEFT, width[0]);
m_path_list.InsertColumn(1, theApp.m_str_table.LoadText(L"TXT_FOLDER").c_str(), LVCFMT_LEFT, width[1]);
m_path_list.InsertColumn(2, theApp.m_str_table.LoadText(L"TXT_PATH").c_str(), LVCFMT_LEFT, width[2]);
- m_path_list.InsertColumn(3, theApp.m_str_table.LoadText(L"TXT_LIB_PAHT_IS_CONTAIN_SUB_FOLDER").c_str(), LVCFMT_LEFT, width[3]);
+ m_path_list.InsertColumn(3, theApp.m_str_table.LoadText(L"TXT_LIB_PATH_IS_CONTAIN_SUB_FOLDER").c_str(), LVCFMT_LEFT, width[3]);
m_path_list.InsertColumn(4, theApp.m_str_table.LoadText(L"TXT_LAST_PLAYED_TRACK").c_str(), LVCFMT_LEFT, width[4]);
m_path_list.InsertColumn(5, theApp.m_str_table.LoadText(L"TXT_NUM_OF_TRACK").c_str(), LVCFMT_LEFT, width[5]);
m_path_list.InsertColumn(6, theApp.m_str_table.LoadText(L"TXT_TOTAL_LENGTH").c_str(), LVCFMT_LEFT, width[6]);
@@ -398,8 +398,8 @@ void CSetPathDlg::OnBrowsePath()
void CSetPathDlg::OnClearInvalidPath()
{
// TODO: 在此添加命令处理程序代码
- const wstring& inquary_info = theApp.m_str_table.LoadText(L"MSG_LIB_PATH_CLEAR_INQUARY");
- if (MessageBox(inquary_info.c_str(), NULL, MB_ICONQUESTION | MB_OKCANCEL) == IDCANCEL)
+ const wstring& inquiry_info = theApp.m_str_table.LoadText(L"MSG_LIB_PATH_CLEAR_INQUIRY");
+ if (MessageBox(inquiry_info.c_str(), NULL, MB_ICONQUESTION | MB_OKCANCEL) == IDCANCEL)
return;
int cleard_cnt = CMusicPlayerCmdHelper::CleanUpRecentFolders();
ShowPathList(); // 重新显示路径列表
diff --git a/MusicPlayer2/SupportedFormatDlg.cpp b/MusicPlayer2/SupportedFormatDlg.cpp
index f7c3d7961..b99fa165a 100644
--- a/MusicPlayer2/SupportedFormatDlg.cpp
+++ b/MusicPlayer2/SupportedFormatDlg.cpp
@@ -28,7 +28,7 @@ CString CSupportedFormatDlg::GetDialogName() const
bool CSupportedFormatDlg::InitializeControls()
{
- SetWindowTextW(theApp.m_str_table.LoadText(L"TITLE_SUPPORTTED_FORMAT").c_str());
+ SetWindowTextW(theApp.m_str_table.LoadText(L"TITLE_SUPPORTED_FORMAT").c_str());
// IDC_INFO_STATIC
// IDC_FORMAT_LIST
// IDOK
@@ -62,11 +62,11 @@ BOOL CSupportedFormatDlg::OnInitDialog()
SetIcon(IconMgr::IconType::IT_App, FALSE); // 设置小图标
if (theApp.m_play_setting_data.use_ffmpeg)
- SetDlgItemTextW(IDC_INFO_STATIC, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_CORE_INFO_FFMPEG").c_str());
+ SetDlgItemTextW(IDC_INFO_STATIC, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_CORE_INFO_FFMPEG").c_str());
else if (theApp.m_play_setting_data.use_mci)
- SetDlgItemTextW(IDC_INFO_STATIC, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_CORE_INFO_MCI").c_str());
+ SetDlgItemTextW(IDC_INFO_STATIC, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_CORE_INFO_MCI").c_str());
else
- SetDlgItemTextW(IDC_INFO_STATIC, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_CORE_INFO_BASS").c_str());
+ SetDlgItemTextW(IDC_INFO_STATIC, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_CORE_INFO_BASS").c_str());
//初始化列表
//m_format_list.SetColor(theApp.m_app_setting_data.theme_color);
@@ -82,16 +82,16 @@ BOOL CSupportedFormatDlg::OnInitDialog()
width1 = rect.Width() / 3;
width2 = rect.Width() - width1 - width0 - theApp.DPI(20) - 1;
- m_format_list.InsertColumn(0, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_PLUGIN_FILE_NAME").c_str(), LVCFMT_LEFT, width0);
- m_format_list.InsertColumn(1, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_PLUGIN_FORMAT_PROVIDED").c_str(), LVCFMT_LEFT, width1);
- m_format_list.InsertColumn(2, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_PLUGIN_FILE_EXTENSION").c_str(), LVCFMT_LEFT, width2);
+ m_format_list.InsertColumn(0, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_PLUGIN_FILE_NAME").c_str(), LVCFMT_LEFT, width0);
+ m_format_list.InsertColumn(1, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_PLUGIN_FORMAT_PROVIDED").c_str(), LVCFMT_LEFT, width1);
+ m_format_list.InsertColumn(2, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_PLUGIN_FILE_EXTENSION").c_str(), LVCFMT_LEFT, width2);
}
else
{
width0 = rect.Width() / 2;
width1 = rect.Width() - width0 - theApp.DPI(20) - 1;
- m_format_list.InsertColumn(0, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_PLUGIN_FORMAT_PROVIDED").c_str(), LVCFMT_LEFT, width0);
- m_format_list.InsertColumn(1, theApp.m_str_table.LoadText(L"TXT_SUPPORTTED_FORMAT_PLUGIN_FILE_EXTENSION").c_str(), LVCFMT_LEFT, width1);
+ m_format_list.InsertColumn(0, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_PLUGIN_FORMAT_PROVIDED").c_str(), LVCFMT_LEFT, width0);
+ m_format_list.InsertColumn(1, theApp.m_str_table.LoadText(L"TXT_SUPPORTED_FORMAT_PLUGIN_FILE_EXTENSION").c_str(), LVCFMT_LEFT, width1);
}
int index = 0;
diff --git a/MusicPlayer2/TagSelBaseDlg.cpp b/MusicPlayer2/TagSelBaseDlg.cpp
index 6ef17ef1d..ce736effd 100644
--- a/MusicPlayer2/TagSelBaseDlg.cpp
+++ b/MusicPlayer2/TagSelBaseDlg.cpp
@@ -380,7 +380,7 @@ void CTagSelBaseDlg::OnCbnSelchangeCombo1()
int cur_sel = m_format_combo.GetCurSel();
if (cur_sel == m_format_combo.GetCount() - 1)
{
- const wstring& info = theApp.m_str_table.LoadText(L"MSG_TAG_SEL_CLEAR_HISTORY_INQUARY");
+ const wstring& info = theApp.m_str_table.LoadText(L"MSG_TAG_SEL_CLEAR_HISTORY_INQUIRY");
if (MessageBox(info.c_str(), NULL, MB_ICONINFORMATION | MB_OKCANCEL) == IDOK)
{
m_default_formular = default_formular;
diff --git a/MusicPlayer2/crashtool.cpp b/MusicPlayer2/crashtool.cpp
index e427a7b65..730a130d2 100644
--- a/MusicPlayer2/crashtool.cpp
+++ b/MusicPlayer2/crashtool.cpp
@@ -56,9 +56,9 @@ class CCrashReport
// 显示错误信息对话框
// 之后应改用独立的对话框,不依赖CMessageDlg
CMessageDlg dlg(L"CrashDlg");
- dlg.SetWindowTitle(theApp.m_str_table.LoadText(L"TITLE_CRASH_REPOART"));
- dlg.SetInfoText(theApp.m_str_table.LoadText(L"TXT_CRASH_REPOART_ERROR_MESSAGE"));
- wstring info = theApp.m_str_table.LoadTextFormat(L"TXT_CRASH_REPOART_CRASH_INFO", { m_dumpFile, theApp.GetSystemInfoString() });
+ dlg.SetWindowTitle(theApp.m_str_table.LoadText(L"TITLE_CRASH_REPORT"));
+ dlg.SetInfoText(theApp.m_str_table.LoadText(L"TXT_CRASH_REPORT_ERROR_MESSAGE"));
+ wstring info = theApp.m_str_table.LoadTextFormat(L"TXT_CRASH_REPORT_CRASH_INFO", { m_dumpFile, theApp.GetSystemInfoString() });
dlg.SetMessageText(info);
//设置图标(此功能已从CMessageDlg移除)
diff --git a/MusicPlayer2/language/English.ini b/MusicPlayer2/language/English.ini
index b4c3864e2..9fbbeccdb 100644
--- a/MusicPlayer2/language/English.ini
+++ b/MusicPlayer2/language/English.ini
@@ -43,7 +43,7 @@ TXT_RECENT_PLAYED = "Recently played"
TXT_FOLDER_EXPLORE = "Folder explore"
# MessageBox
-MSG_APP_RUNING_INFO = "MusicPlayer2 is still running, please wait for the process to exit, or end the process through the task manager."
+MSG_APP_RUNNING_INFO = "MusicPlayer2 is still running, please wait for the process to exit, or end the process through the task manager."
MSG_WAIT_AND_RETRY = "Please wait and try again after the current operation is completed."
MSG_UNICODE_WARNING = "The content to be saved contains Unicode characters that will be lost if saved in ANSI format. If you want to keep these characters, select Save As UTF-8 format. Are you sure you want to save it?"
MSG_SERIALIZE_ERROR = "A serialization exception occurred while reading the data file \"<%1%>\", the exception type: Carchiveexception,m_cause = <%2%>. It may be caused by the corruption of data file or a version mismatch."
@@ -56,15 +56,15 @@ MSG_UPDATE_CHECK_ERROR = "Check for update failed and get the wrong information
MSG_UPDATE_AVLIABLE = "New version V<%1%> detected, do you want to go to update?"
MSG_UPDATE_AVLIABLE_2 = "New version V<%1%> detected, update content: \r\n<%2%>\r\ndo you want to go to update?"
MSG_UPDATE_ALREADY = "Already updated to the latest version."
-MSG_SHORTCUT_INQUARY_FIRST = "You may be running this program for the first time, do you want to create a shortcut to the program on the desktop?"
-MSG_SHORTCUT_INQUARY_DESKTOP = "Do you want to create a desktop shortcut?"
-MSG_SHORTCUT_INQUARY_MINIMODE = "This command will create a mini mode shortcut in the program directory. The player will always be launched in mini mode by this shortcut. Do you want to create a mini mode shortcut?"
-MSG_SHORTCUT_INQUARY_PLAY_CONTROL = "This command will create the playback control shortcuts in the directory where the program is located. When the player is running, you can control the playback of the music through these shortcuts. You can also pin them to the taskbar. Do you want to create the playback control shortcuts?"
+MSG_SHORTCUT_INQUIRY_FIRST = "You may be running this program for the first time, do you want to create a shortcut to the program on the desktop?"
+MSG_SHORTCUT_INQUIRY_DESKTOP = "Do you want to create a desktop shortcut?"
+MSG_SHORTCUT_INQUIRY_MINIMODE = "This command will create a mini mode shortcut in the program directory. The player will always be launched in mini mode by this shortcut. Do you want to create a mini mode shortcut?"
+MSG_SHORTCUT_INQUIRY_PLAY_CONTROL = "This command will create the playback control shortcuts in the directory where the program is located. When the player is running, you can control the playback of the music through these shortcuts. You can also pin them to the taskbar. Do you want to create the playback control shortcuts?"
MSG_SHORTCUT_CREATED = "A shortcut to the program has been created under the \"<%1%>\" path."
MSG_SHORTCUT_FAILED = "Shortcut create failed!"
-MSG_DELETE_SEL_AUDIO_FILE_INQUARY = "Are you sure you want to delete the selected <%1%> songs?"
+MSG_DELETE_SEL_AUDIO_FILE_INQUIRY = "Are you sure you want to delete the selected <%1%> songs?"
MSG_DELETE_INNER_COVER_INQUERY = "The current album cover is embedded in the audio file and cannot be restored after deletion. Are you sure you want to delete the embedded album cover?"
-MSG_DELETE_SINGLE_FILE_INQUARY = "Are you sure you want to delete the file \"<%1%>\"?"
+MSG_DELETE_SINGLE_FILE_INQUIRY = "Are you sure you want to delete the file \"<%1%>\"?"
MSG_DELETE_FILE_FAILED = "Unable to delete file!"
MSG_FILE_WRITE_FAILED = "Unable to write to file!"
MSG_COPY_CLIPBOARD_FAILED = "Copy to clipboard failed!"
@@ -80,9 +80,9 @@ MSG_PLAYLIST_NAME_EMPTY_WARNING = "The playlist name cannot be empty!"
MSG_FILE_NAME_INVALID_WARNING = "The following characters cannot be included in the name:\r\n\\\"/:*?<>|"
MSG_PLAYLIST_EXIST_WARNING = "Playlist \"<%1%>\" already exists!"
MSG_FILE_EXIST_IN_PLAYLIST = "The file(s) already exists in the playlist."
-MSG_PLAYLIST_REMANE_FAILED = "Playlist rename failed!"
+MSG_PLAYLIST_RENANE_FAILED = "Playlist rename failed!"
MSG_PLAYLIST_ADD_SONGS_FAILED = "Add failed, playlist \"<%1%>\" does not exist!"
-MSG_PLAYLIST_FIX_ERROR_PATH_INQUARY = "This feature will check for tracks that do not exist in the playlist and fix the incorrect path by looking for a match item in the media library. Do you want to fix the incorrect path in the playlist?"
+MSG_PLAYLIST_FIX_ERROR_PATH_INQUIRY = "This feature will check for tracks that do not exist in the playlist and fix the incorrect path by looking for a match item in the media library. Do you want to fix the incorrect path in the playlist?"
MSG_PLAYLIST_FIX_ERROR_PATH_COMPLETE = "Finished, <%1%> incorrect path(s) have been fixed."
MSG_HIDE_MENU_BAR_INFO = "Tip: After you hide the menu bar, you can right-click the window title bar, or click the main menu \"≡\" button on the top right, and select \"View\" - \"Show Menu Bar\" in the pop-up menu to re-display the menu bar. \r\n Click \"Cancel\" to no longer prompt."
MSG_CANNOT_FIND_ARTIST_WARNING = "Could not find artist <%1%> in the media library!"
@@ -96,7 +96,7 @@ MSG_NETWORK_DOWNLOAD_COMPLETE = "Download complete."
MSG_NETWORK_SEARCH_FAILED = "Search failed, please check your network connection!"
MSG_NETWORK_SEARCH_TIME_OUT = "Search Timeout!"
MSG_NETWORK_COVER_DOWNLOAD_FAILED = "Album cover download failed, please check your network connection!"
-MSG_LYRIC_OVERWRITE_INQUARY = "The lyrics file already exists, do you want to replace it?"
+MSG_LYRIC_OVERWRITE_INQUIRY = "The lyrics file already exists, do you want to replace it?"
MSG_LYRIC_DOWNLOAD_COMPLETE_SAVED = "Lyrics download completed, saved as \"<%1%>\"."
# error.log
@@ -120,7 +120,7 @@ UI_TIP_BTN_STOP = "Stop"
UI_TIP_BTN_MINIMODE = "Mini mode"
UI_TIP_BTN_MINIMODE_RTN = "Back to normal mode"
UI_TIP_BTN_PLAYLIST_SHOW_HIDE = "Show/hide playlist"
-UI_TIP_BTN_PROPETRY = "Song Info"
+UI_TIP_BTN_PROPERTY = "Song Info"
UI_TIP_BTN_LOCATE_TO_CURRENT = "Locate the track is playing"
UI_TIP_BTN_TRANSLATION = "Show lyric translation"
UI_TIP_BTN_SWITCH_UI = "Switch UI"
@@ -161,7 +161,7 @@ UI_TIP_BTN_DESKTOP_LYRIC_FORWARD = "Lyrics 0.5 Seconds in Advance"
UI_TIP_BTN_DESKTOP_LYRIC_DELAY = "Lyrics 0.5 Seconds Delayed"
UI_TIP_REPEAT_MODE = "Repeat mode"
-UI_TIP_REPEAT_OREDE = "Play in order"
+UI_TIP_REPEAT_ORDER = "Play in order"
UI_TIP_REPEAT_SHUFFLE = "Play shuffle"
UI_TIP_REPEAT_RANDOM = "Play random"
UI_TIP_REPEAT_PLAYLIST = "Loop playlist"
@@ -295,13 +295,13 @@ TXT_SAVE_AS_ANSI = "Save as ANSI format"
TXT_SAVE_AS_UTF8 = "Save as UTF8 format"
# filter / FilterHelper.cpp
-TXT_FILTER_ALL_FILES = "All file"
+TXT_FILTER_ALL_FILES = "All files"
TXT_FILTER_ALL_SUPPORTED_AUDIO_FORMAT = "All supported audio formats"
TXT_FILTER_LYRIC_FILE = "Lyric file"
TXT_FILTER_TXT_FILE = "Text file"
TXT_FILTER_SF2_FILE = "Sound font files"
-TXT_FILTER_CSV_FILE = "Csv Files"
-TXT_FILTER_ALL_SUPPORTED_PLAYLIST_FILE = "All surpported playlist files"
+TXT_FILTER_CSV_FILE = "CSV Files"
+TXT_FILTER_ALL_SUPPORTED_PLAYLIST_FILE = "All supported playlist files"
TXT_FILTER_PLAYLIST_FILE = "MusicPlayer2 playlist files"
TXT_FILTER_M3U_FILE = "m3u playlist files"
TXT_FILTER_M3U8_FILE = "m3u8 playlist files"
@@ -329,7 +329,7 @@ TXT_BROWSE_EDIT_EDIT = "Edit..."
TXT_BROWSE_EDIT_BROWSE = "Browse..."
# IDD_FIND_DIALOG
-TITLE_FIND = "Find File"
+TITLE_FIND = "Find Files"
TXT_FIND_KEY_WORD_INPUT = "Enter the keyword to find:"
TXT_FIND_FIND = "Find"
TXT_FIND_FIND_RANGE = "Find Range"
@@ -424,9 +424,9 @@ TXT_LYRIC_DL_ARTIST = "Artist:"
TXT_LYRIC_DL_INFO = "Search results: "
TXT_LYRIC_DL_INFO_SEARCHING = "Searching..."
TXT_LYRIC_DL_INFO_SEARCH_NO_SONG = "Search results: (No songs found)"
-TXT_LYRIC_DL_INFO_SEARCH_NO_MATCHED = "Search results: (Seems to no best match for this item)"
+TXT_LYRIC_DL_INFO_SEARCH_NO_MATCHED = "Search results: (Seems to no best matched for this item)"
TXT_LYRIC_DL_INFO_SEARCH_RELATED = "Search results: (Linked item: <%1%>)"
-TXT_LYRIC_DL_INFO_SEARCH_BEST_MATCHED = "Search results: (Best batched item: <%1%>)"
+TXT_LYRIC_DL_INFO_SEARCH_BEST_MATCHED = "Search results: (Best matched item: <%1%>)"
TXT_LYRIC_DL_UNLINK = "Cancel Link"
TXT_LYRIC_DL_OPT = "Download options"
TXT_LYRIC_DL_SEL_DL = "Download selected"
@@ -459,14 +459,14 @@ TXT_LYRIC_BDL_SAVE_DIR_SONG = "Save to the same directory as the song"
TXT_LYRIC_BDL_SONG_LIST = "Song list:"
TXT_LYRIC_BDL_STATUS = "State"
TXT_LYRIC_BDL_STATUS_DOWNLOADING = "Downloading..."
-TXT_LYRIC_BDL_STATUS_SKIPED = "Skipped"
+TXT_LYRIC_BDL_STATUS_SKIPPED = "Skipped"
TXT_LYRIC_BDL_STATUS_NETWORK_FAILED = "Network connection failed or timed out"
TXT_LYRIC_BDL_STATUS_CANNOT_FIND_THIS_SONG = "This song could not be found"
TXT_LYRIC_BDL_STATUS_NO_MATCHED_LYRIC = "No matched lyrics"
TXT_LYRIC_BDL_STATUS_DOWNLOAD_FAILED = "Lyrics download failed"
TXT_LYRIC_BDL_STATUS_SONG_NO_LYRIC = "The song has no lyrics"
TXT_LYRIC_BDL_STATUS_ENCODE_WARNING = "Successful, but there are Unicode characters in the lyrics that cannot be converted, it is recommended to save them in UTF-8 format"
-TXT_LYRIC_BDL_STATUS_SUCCESSED = "Succeed"
+TXT_LYRIC_BDL_STATUS_SUCCEEDED = "Succeed"
TXT_LYRIC_BDL_STATUS_FILE_WRITE_FAILED = "Unable to write to file"
TXT_LYRIC_BDL_INFO_DOWNLOADING_INFO = "Downloading, <%1%>% completed, please wait..."
TXT_LYRIC_BDL_INFO_COMPLETE = "Lyrics download complete."
@@ -496,13 +496,13 @@ TXT_REVERB_STRENGTH = "Reverb strength:"
TXT_REVERB_TIME = "Reverb time:"
# IDD_SUPPORT_FORMAT_DIALOG
-TITLE_SUPPORTTED_FORMAT = "Supported Formats"
-TXT_SUPPORTTED_FORMAT_CORE_INFO_BASS = "MusicPlayer2 supports multiple playback cores, the currently used playback core is BASS audio library.\r\n More audio format support depends on the bass engine plug-in (located in the \".\\Plugins\" directory)."
-TXT_SUPPORTTED_FORMAT_CORE_INFO_MCI = "MusicPlayer2 supports multiple playback cores, and the currently used playback core is MCI. Only supports mp3, wma, wav, mid format, if you need to support the playback of more audio formats, please switch to BASS or FFMPEG core."
-TXT_SUPPORTTED_FORMAT_CORE_INFO_FFMPEG = "MusicPlayer2 supports multiple playback cores. The currently used playback core is FFMPEG."
-TXT_SUPPORTTED_FORMAT_PLUGIN_FILE_NAME = "Plug-in file name"
-TXT_SUPPORTTED_FORMAT_PLUGIN_FORMAT_PROVIDED = "Format support provided"
-TXT_SUPPORTTED_FORMAT_PLUGIN_FILE_EXTENSION = "File extension"
+TITLE_SUPPORTED_FORMAT = "Supported Formats"
+TXT_SUPPORTED_FORMAT_CORE_INFO_BASS = "MusicPlayer2 supports multiple playback cores, the currently used playback core is BASS audio library.\r\n More audio format support depends on the bass engine plug-in (located in the \".\\Plugins\" directory)."
+TXT_SUPPORTED_FORMAT_CORE_INFO_MCI = "MusicPlayer2 supports multiple playback cores, and the currently used playback core is MCI. Only supports mp3, wma, wav, mid format, if you need to support the playback of more audio formats, please switch to BASS or FFMPEG core."
+TXT_SUPPORTED_FORMAT_CORE_INFO_FFMPEG = "MusicPlayer2 supports multiple playback cores. The currently used playback core is FFMPEG."
+TXT_SUPPORTED_FORMAT_PLUGIN_FILE_NAME = "Plug-in file name"
+TXT_SUPPORTED_FORMAT_PLUGIN_FORMAT_PROVIDED = "Format support provided"
+TXT_SUPPORTED_FORMAT_PLUGIN_FILE_EXTENSION = "File extension"
# IDD_FORMAT_CONVERT_DIALOG
TITLE_FORMAT_CONVERT = "Convert Format"
@@ -518,8 +518,8 @@ TXT_FORMAT_CONVERT_STAUS_ERROR_MIDI_NO_SF2 = "Error: No MIDI sound font"
TXT_FORMAT_CONVERT_STAUS_ERROR_NO_WMP9_OR_LATER = "Error: Failed to create the encoding channel, Windows Media Player 9 or later is not installed"
TXT_FORMAT_CONVERT_STAUS_ERROR_NO_SUPPORTED_ENCODER = "Error: Failed to create the encoding channel, The codec that supports the requested sampling format and bit rate could not be found"
TXT_FORMAT_CONVERT_STAUS_ERROR_OTHER = "Error code: <%1%>"
-TXT_FORMAT_CONVERT_STAUS_COMPLEATE = "Complete"
-TXT_FORMAT_CONVERT_STAUS_SKIPED = "Skipped"
+TXT_FORMAT_CONVERT_STAUS_COMPLETE = "Complete"
+TXT_FORMAT_CONVERT_STAUS_SKIPPED = "Skipped"
TXT_FORMAT_CONVERT_OPT = "Options"
TXT_FORMAT_CONVERT_CHANGE_FREQ = "Convert sampling frequency:"
TXT_FORMAT_CONVERT_COPY_TAG = "Write tag information"
@@ -533,7 +533,7 @@ TXT_FORMAT_CONVERT_FILE_EXIST_OVERWRITE = "Overwrite"
TXT_FORMAT_CONVERT_OUT_DIR = "Output directory:"
TXT_FORMAT_CONVERT_OUT_DIR_OPEN_WHEN_COMPLETE = "Open output directory after the conversion is complete"
TXT_FORMAT_CONVERT_PROGRESS_INFO = "<%1%>% completed, please wait..."
-TXT_FORMAT_CONVERT_PROGRESS_INFO_COMPLEATE = "Completed"
+TXT_FORMAT_CONVERT_PROGRESS_INFO_COMPLETE = "Completed"
TXT_FORMAT_CONVERT_START_CONVERT = "Start convert"
MSG_FORMAT_CONVERT_BASS_MIX_LOAD_ERROR = "BASSmix load failed, file \"<%1%>\" may be lost or corrupted!"
MSG_FORMAT_CONVERT_INIT_ERROR = "Encoder initialization failed!"
@@ -703,7 +703,7 @@ TXT_OPT_APC_SHOW_FPS = "Show fps"
TXT_OPT_APC_TITLE_BAR = "Title bar"
TXT_OPT_APC_USE_SYSTEM_TITLE_BAR = "Use system standard title bar"
-TXT_OPT_APC_TITLE_BAR_BTN_SEL = "Buttons displayed in the title bar(only available when \"Use system standard title bar\" is not checked):"
+TXT_OPT_APC_TITLE_BAR_BTN_SEL = "Buttons displayed in the title bar (only available when \"Use system standard title bar\" is not checked):"
TXT_OPT_APC_TITLE_BAR_BTN_SETTING = "Settings"
TXT_OPT_APC_TITLE_BAR_BTN_SKIN = "Switch UI"
TXT_OPT_APC_TITLE_BAR_BTN_MINI_MODE = "Mini mode"
@@ -741,15 +741,15 @@ TXT_OPT_DATA_DATA_FILE_DIR_OPEN = "Open configuration file directory"
TXT_OPT_DATA_CLOSE_MAIN_WINDOW = "Close Main Window"
TXT_OPT_DATA_CLOSE_MAIN_WINDOW_MINIMIZE_NOTIFY_AREA = "Minimize to notification area"
TXT_OPT_DATA_CLOSE_MAIN_WINDOW_EXIT = "Exit the program"
-TXT_OPT_DATA_AUTO_DL_SETTING = "Download Settings"
-TXT_OPT_DATA_AUTO_DL_LYRIC = "Automatically download when lyric is not exist"
+TXT_OPT_DATA_DL_SETTING = "Download Settings"
+TXT_OPT_DATA_AUTO_DL_LYRIC = "Automatically download when lyric does not exist"
TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_SEL = "Automatically Download Lyrics Save Location:"
TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_SONG_DIR = "Save to the same directory as the song"
TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_LYRIC_DIR = "Save to lyrics directory"
-TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT = "Download Lyrics Translation Format:"
-TXT_OPT_DATA_DL_LYRIC_AND_TRANSLATION_IN_SAME_LINE = "Lyric text and translation in the same line"
-TXT_OPT_DATA_DL_LYRIC_AND_TRANSLATION_IN_DIFFERENT_LINE = "Lyric text and translation in different lines with the same time tag"
-TXT_OPT_DATA_AUTO_DL_COVER = "Automatically download when album cover is not exist"
+TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_SEL = "Download Lyrics Translation Format:"
+TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_SAME_LINE = "Lyric text and translation in the same line"
+TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_DIFFERENT_LINE = "Lyric text and translation in different lines with the same time tag"
+TXT_OPT_DATA_AUTO_DL_COVER = "Automatically download when album cover does not exist"
TXT_OPT_DATA_AUTO_DL_COVER_SAVE_SEL = "Automatically Download Album Cover Save Location:"
TXT_OPT_DATA_AUTO_DL_COVER_SAVE_SONG_DIR = "Save to the same directory as the song"
TXT_OPT_DATA_AUTO_DL_COVER_SAVE_COVER_DIR = "Save to album cover directory"
@@ -757,7 +757,7 @@ TXT_OPT_DATA_AUTO_DL_ONLY_WHEN_TAG_FULL = "Download automatically only when the
TIP_OPT_DATA_AUTO_DL_ONLY_WHEN_TAG_FULL = "After checking this item, the lyrics and album covers are automatically downloaded only if neither the title nor the artist information of the song is empty."
TXT_OPT_DATA_MIDI_SETTING = "MIDI Setting"
TXT_OPT_DATA_MIDI_INNER_LYRIC_FIRST = "Display the inner lyric in MIDI music first"
-TIP_OPT_DATA_MIDI_INNER_LYRIC_FIRSR = "Some MIDI music contains lyrics, and when you check this item, it will give priority to displaying the lyrics embedded in MIDI music."
+TIP_OPT_DATA_MIDI_INNER_LYRIC_FIRST = "Some MIDI music contains lyrics, and when you check this item, it will give priority to displaying the lyrics embedded in MIDI music."
TXT_OPT_DATA_MIDI_SF2_PATH = "MIDI sound font path:"
MSG_OPT_DATA_LANGUAGE_CHANGE_INFO = "Please restart the application to apply the language setting."
MSG_OPT_DATA_CFG_DIR_CHANGED_INFO = "You have changed the location where the configuration and data files saved. It will take effect after restarted. You may need to transfer the configuration and data files to the new location manually."
@@ -773,7 +773,7 @@ TXT_OPT_PLAY_SHOW_TASKBAR_PLAY_STATE_ICON = "Show playing status icon in the tas
TXT_OPT_PLAY_SOUND_FADE = "Sound fade in and out effect"
TXT_OPT_PLAY_CONTINUE_WHEN_SWITCH_PLAYLIST = "Continue playing when switch playlist"
TIP_OPT_PLAY_CONTINUE_WHEN_SWITCH_PLAYLIST = "When this option is selected, if the playing track exists in the new playlist, the playing track will continue to be played after the playlist is switched."
-TXT_OPT_PLAY_USE_MEDIA_TRANS_CONTORL = "Use system media transport controls"
+TXT_OPT_PLAY_USE_MEDIA_TRANS_CONTROL = "Use system media transport controls"
TXT_OPT_PLAY_CORE = "Player Kernal"
TXT_OPT_PLAY_CORE_BASS = "BASS"
@@ -832,7 +832,7 @@ TXT_OPT_MEDIA_LIB_MEDIA_LIB_DIR_ADD = "Add..."
TXT_OPT_MEDIA_LIB_MEDIA_LIB_DIR_DEL = "Delete"
TXT_OPT_MEDIA_LIB_MEDIA_LIB_DISP_TAB = "Items Displayed in the Media Library"
TXT_OPT_MEDIA_LIB_PLAYLIST_OPT = "Playlist Options"
-TXT_OPT_MEDIA_LIB_DISABLE_DRAGE_SORT = "Disable drag-and-drop sorting of tracks in the playlist"
+TXT_OPT_MEDIA_LIB_DISABLE_DRAG_SORT = "Disable drag-and-drop sorting of tracks in the playlist"
TXT_OPT_MEDIA_LIB_INS_BEGIN = "Insert at the start of the playlist when adding songs, not at the end"
TXT_OPT_MEDIA_LIB_FLOAT_PLAYLIST_BY_DEFAULT = "Use floating playlist by default"
TXT_OPT_MEDIA_LIB_FLOAT_PLAYLIST_FOLLOW_MAIN_WND = "Floating playlist follows main window"
@@ -849,7 +849,7 @@ TXT_OPT_MEDIA_LIB_RECENT_PLAY_RANGE_LAST_MONTH = "Last month"
TXT_OPT_MEDIA_LIB_RECENT_PLAY_RANGE_LAST_HALF_YEAR = "Last six months"
TXT_OPT_MEDIA_LIB_RECENT_PLAY_RANGE_LAST_YEAR = "Last year"
TXT_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR = "Clear recently played tracks list..."
-MSG_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR_INQUARY = "Are you sure you want to clear the recently played tracks list?"
+MSG_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR_INQUIRY = "Are you sure you want to clear the recently played tracks list?"
TXT_OPT_MEDIA_LIB_CLEAN_MEDIA_LIB = "Clean up the Media library"
TXT_OPT_MEDIA_LIB_CURRENT_DATA_FILE_SIZE_BYTE = "Current data file size: <%1%> Bytes"
TXT_OPT_MEDIA_LIB_CURRENT_DATA_FILE_SIZE_KB = "Current data file size: <%2%> KB (<%1%> Bytes)"
@@ -881,7 +881,7 @@ TXT_OPT_LAST_FM_AUTO_UPLOAD_THRESHOLD = "Auto upload threshold:"
TITLE_OPT_HOT_KEY = "Global Shortcut Keys"
TXT_OPT_HOT_KEY_HOOK_SHORTCUT_KEY_ENABLE = "Enable global hot keys"
TXT_OPT_HOT_KEY_HOOK_MULTI_MEDIA_KEY_ENABLE = "Enable global multimedia keys"
-TIP_OPT_HOT_KEY_HOOK_MULTI_MEDIA_KEY = "When this option is checked, even if the program is running in the background, you can still control the playing of the music by the multimedia keys on your keyboard. It would be taken effect after the program is restarted."
+TIP_OPT_HOT_KEY_HOOK_MULTI_MEDIA_KEY = "When this option is checked, even if the program is running in the background, you can still control the playing of the music by the multimedia keys on your keyboard. It would be take effect after the program is restarted."
TXT_OPT_HOT_KEY_FUNCTION = "Function"
TXT_OPT_HOT_KEY_SHORTCUT_KEY = "Shortcut key"
TXT_OPT_HOT_KEY_PLAY_PAUSE = "Play/Pause"
@@ -907,9 +907,9 @@ TXT_LIB_PLAY_SEL = "Play Selected"
# IDD_SET_PATH_DIALOG
TXT_LIB_PATH_CURRENT_FOLDER = "Current folder:"
TXT_LIB_PATH_OPEN_NEW_FOLDER = "Open New Folder..."
-TXT_LIB_PAHT_IS_CONTAIN_SUB_FOLDER = "Include subfolders"
-TXT_LIB_PAHT_IS_CONTAIN_SUB_FOLDER_YES = "Yes"
-MSG_LIB_PATH_CLEAR_INQUARY = "Are you sure you want to clear the invalid folder in the list?"
+TXT_LIB_PATH_IS_CONTAIN_SUB_FOLDER = "Include subfolders"
+TXT_LIB_PATH_IS_CONTAIN_SUB_FOLDER_YES = "Yes"
+MSG_LIB_PATH_CLEAR_INQUIRY = "Are you sure you want to clear the invalid folder in the list?"
MSG_LIB_PATH_CLEAR_COMPLETE = "Complete, <%1%> invalid folder cleared."
# IDD_SELECT_PLAYLIST_DIALOG
TXT_LIB_PLAYLIST_NEW_PLAYLIST = "New Playlist..."
@@ -951,14 +951,14 @@ TITLE_ABOUTBOX = "About MusicPlayer2"
TXT_ABOUTBOX_LAST_BUILD_DATE = "Last compiled date: <%1%>"
TXT_ABOUTBOX_THIRD_PARTY_LIB = "The third-party libraries used in this project:"
TXT_ABOUTBOX_OTHER_SOFTWARE = "The author's other software:"
-TXT_ABOUTBOX_CONTRACT_AUTHOR = "Contract author"
-TXT_ABOUTBOX_CHECK_UPDATE = "Check for update"
+TXT_ABOUTBOX_CONTACT_AUTHOR = "Contact author"
+TXT_ABOUTBOX_CHECK_UPDATE = "Check for updates"
TXT_ABOUTBOX_GITHUB = "Github"
TXT_ABOUTBOX_LICENSE = "License"
TXT_ABOUTBOX_DONATE = "Donate"
TXT_ABOUTBOX_ACKNOWLEDGEMENT = "Acknowledgement"
-TIP_ABOUTBOX_SEND_EMAIL_TO_ATHOUR = "Send an e-mail to the author."
-TIP_ABOUTBOX_GOTO_GITHUB = "Go to the page on GitHub for this project."
+TIP_ABOUTBOX_SEND_EMAIL_TO_AUTHOR = "Send an e-mail to the author."
+TIP_ABOUTBOX_GOTO_GITHUB = "Go to the GitHub page for this project."
TIP_ABOUTBOX_TRAFFICMONITOR_DESCRIPTION = "TrafficMonitor: A powerful net speed monitoring software for Windows."
TIP_ABOUTBOX_SIMPLENOTEPAD_DESCRIPTION = "SimpleNotePad: A simple text editor for Windows."
@@ -972,7 +972,7 @@ TXT_DONATE_INFO = "If you think this software is helpful to you, you can scan th
# IDD_TAG_MODE_SELECT_DIALOG / CTagSelBaseDlg
TXT_TAG_SEL_CLEAR_HISTORY = "Clear history..."
-MSG_TAG_SEL_CLEAR_HISTORY_INQUARY = "Are you sure you want to clear the history?"
+MSG_TAG_SEL_CLEAR_HISTORY_INQUIRY = "Are you sure you want to clear the history?"
TXT_TAG_SEL_ORIGINAL = "Original:"
TXT_TAG_SEL_CLICK_BTN_SEL = "When click the button:"
TXT_TAG_SEL_CLICK_BTN_INS = "Insert"
@@ -989,14 +989,14 @@ TITLE_FILE_NAME_FORM = "Set file name template"
TXT_FILE_NAME_FORM_INFO = "Please choose or input file name template:"
# CMusicPlayerCmdHelper::OnViewArtist / CSelectItemDlg
-TITLE_SELECT_ARTIST = "Select artist"
+TITLE_SELECT_ARTIST = "Select Artist"
# CSelectPlaylistDlg::DoNewPlaylist / CMusicPlayerCmdHelper::OnAddToNewPlaylist / CInputDlg
-TITLE_NEW_PLAYLIST = "New Playlist"
+TITLE_NEW_PLAYLIST = "Create New Playlist"
TXT_NEW_PLAYLIST_INPUT_PLAYLIST_NAME = "Input the playlist name:"
# CSelectPlaylistDlg::OnRenamePlaylist / CInputDlg
-TITLE_RENAME_PLAYLIST = "Rename Playlist"
+TITLE_RENAME_PLAYLIST = "Rename Existing Playlist"
TXT_RENAME_PLAYLIST_INPUT_PLAYLIST_NAME = "Input the playlist name:"
# CMusicPlayerDlg::OnFileOpenUrl / CMusicPlayerDlg::OnPlaylistAddUrl / CInputDlg
@@ -1009,9 +1009,9 @@ MSG_INPUT_URL_INVALID_WARNING = "Please input the correct URL!"
TITLE_LYRIC_PREVIEW = "Lyric Preview"
# CCrashReport::ShowCrashInfo / CMessageDlg
-TITLE_CRASH_REPOART = "Error"
-TXT_CRASH_REPOART_ERROR_MESSAGE = "Error Message:"
-TXT_CRASH_REPOART_CRASH_INFO = "Sorry, the program has crashed. Please email this file \"<%1%>\" to zhongyang219@hotmail.com to help the author locate the problem. And add the following to the body of the message:\r\n<%2%>"
+TITLE_CRASH_REPORT = "Error"
+TXT_CRASH_REPORT_ERROR_MESSAGE = "Error Message:"
+TXT_CRASH_REPORT_CRASH_INFO = "Sorry, the program has crashed. Please email this file \"<%1%>\" to zhongyang219@hotmail.com to help the author locate the problem. And add the following to the body of the message:\r\n<%2%>"
# CAboutDlg::OnNMClickLicenseSyslink / CMessageDlg
TITLE_LICENSE = "License"
@@ -1212,7 +1212,7 @@ ID_ONLINE_HELP = "&Online Help"
ID_HELP_FAQ = "&FAQ"
ID_HELP_CUSTOM_UI = "Custom &UI"
ID_HELP_UPDATE_LOG = "Update &Log"
-ID_SUPPORTED_FORMAT = "Supproted &Format"
+ID_SUPPORTED_FORMAT = "Supported &Format"
ID_APP_ABOUT = "&About..."
[menu.PLAYLIST_TOOLBAR]
diff --git a/MusicPlayer2/language/Simplified_Chinese.ini b/MusicPlayer2/language/Simplified_Chinese.ini
index d4ef98d90..616180ce5 100644
--- a/MusicPlayer2/language/Simplified_Chinese.ini
+++ b/MusicPlayer2/language/Simplified_Chinese.ini
@@ -43,7 +43,7 @@ TXT_RECENT_PLAYED = "最近播放"
TXT_FOLDER_EXPLORE = "文件夹浏览"
# MessageBox
-MSG_APP_RUNING_INFO = "MusicPlayer2 还在进行,请等待进程退出,或者通过任务管理器结束进程。"
+MSG_APP_RUNNING_INFO = "MusicPlayer2 还在进行,请等待进程退出,或者通过任务管理器结束进程。"
MSG_WAIT_AND_RETRY = "请等待当前操作完成后重试。"
MSG_UNICODE_WARNING = "要保存的内容含有Unicode字符,如果以ANSI格式保存,这些字符将会丢失。如果要保留这些字符,请选择保存为UTF-8格式。确实要保存吗?"
MSG_SERIALIZE_ERROR = "读取数据文件“<%1%>”时发生了序列化异常,异常类型:CArchiveException,m_cause = <%2%>。可能是数据文件被损坏或版本不匹配造成的。"
@@ -56,15 +56,15 @@ MSG_UPDATE_CHECK_ERROR = "检查更新出错,从远程获取到了错误的信
MSG_UPDATE_AVLIABLE = "检测到新版本 V<%1%>,是否前往更新?"
MSG_UPDATE_AVLIABLE_2 = "检测到新版本 V<%1%>,更新内容:\r\n<%2%>\r\n是否前往更新?"
MSG_UPDATE_ALREADY = "当前已经是最新版本。"
-MSG_SHORTCUT_INQUARY_FIRST = "你可能是第一次运行此程序,是否要在桌面上创建程序的快捷方式?"
-MSG_SHORTCUT_INQUARY_DESKTOP = "确实要创建程序的桌面快捷方式吗?"
-MSG_SHORTCUT_INQUARY_MINIMODE = "此命令将会在程序所在目录下创建一个迷你模式的快捷方式,通过此快捷方式将总是以迷你模式启动播放器。要创建迷你模式快捷方式吗?"
-MSG_SHORTCUT_INQUARY_PLAY_CONTROL = "此命令将会在程序所在目录下创建播放控制快捷方式,当播放器正在运行时,你可以通过这些快捷方式来控制音乐的播放。你也可以将它们固定到任务栏。要创建播放控制快捷方式吗?"
+MSG_SHORTCUT_INQUIRY_FIRST = "你可能是第一次运行此程序,是否要在桌面上创建程序的快捷方式?"
+MSG_SHORTCUT_INQUIRY_DESKTOP = "确实要创建程序的桌面快捷方式吗?"
+MSG_SHORTCUT_INQUIRY_MINIMODE = "此命令将会在程序所在目录下创建一个迷你模式的快捷方式,通过此快捷方式将总是以迷你模式启动播放器。要创建迷你模式快捷方式吗?"
+MSG_SHORTCUT_INQUIRY_PLAY_CONTROL = "此命令将会在程序所在目录下创建播放控制快捷方式,当播放器正在运行时,你可以通过这些快捷方式来控制音乐的播放。你也可以将它们固定到任务栏。要创建播放控制快捷方式吗?"
MSG_SHORTCUT_CREATED = "已经在“<%1%>”路径下创建了程序的快捷方式。"
MSG_SHORTCUT_FAILED = "快捷方式创建失败!"
-MSG_DELETE_SEL_AUDIO_FILE_INQUARY = "确实要删除选中的 <%1%> 首歌曲吗?"
+MSG_DELETE_SEL_AUDIO_FILE_INQUIRY = "确实要删除选中的 <%1%> 首歌曲吗?"
MSG_DELETE_INNER_COVER_INQUERY = "当前专辑封面是内嵌在音频文件里的,删除后将不可恢复,确实要删除内嵌的专辑封面吗?"
-MSG_DELETE_SINGLE_FILE_INQUARY = "确实要删除文件“<%1%>”吗?"
+MSG_DELETE_SINGLE_FILE_INQUIRY = "确实要删除文件“<%1%>”吗?"
MSG_DELETE_FILE_FAILED = "无法删除文件!"
MSG_FILE_WRITE_FAILED = "无法写入文件!"
MSG_COPY_CLIPBOARD_FAILED = "复制到剪贴板失败!"
@@ -80,9 +80,9 @@ MSG_PLAYLIST_NAME_EMPTY_WARNING = "播放列表名称不能为空!"
MSG_FILE_NAME_INVALID_WARNING = "名称中不能包含以下字符:\r\n\\\"/:*?<>|"
MSG_PLAYLIST_EXIST_WARNING = "播放列表“<%1%>”已存在!"
MSG_FILE_EXIST_IN_PLAYLIST = "文件已存在于播放列表中。"
-MSG_PLAYLIST_REMANE_FAILED = "播放列表重命名失败!"
+MSG_PLAYLIST_RENANE_FAILED = "播放列表重命名失败!"
MSG_PLAYLIST_ADD_SONGS_FAILED = "添加失败,播放列表“<%1%>”不存在!"
-MSG_PLAYLIST_FIX_ERROR_PATH_INQUARY = "此功能将会检查播放列表中不存在的曲目,通过在媒体库中寻找匹配的曲目来修复错误的路径。需要修复播放列表中错误的路径吗?"
+MSG_PLAYLIST_FIX_ERROR_PATH_INQUIRY = "此功能将会检查播放列表中不存在的曲目,通过在媒体库中寻找匹配的曲目来修复错误的路径。需要修复播放列表中错误的路径吗?"
MSG_PLAYLIST_FIX_ERROR_PATH_COMPLETE = "完成,已修复<%1%>个错误的路径。"
MSG_HIDE_MENU_BAR_INFO = "提示:隐藏菜单栏后可以右击窗口标题栏,或者点击右上角的主菜单“≡”按钮,在弹出的菜单中选择“视图”——“显示菜单栏”以重新显示菜单栏。\r\n点击“取消”不再提示。"
MSG_CANNOT_FIND_ARTIST_WARNING = "无法在媒体库中找到艺术家 <%1%>!"
@@ -96,7 +96,7 @@ MSG_NETWORK_DOWNLOAD_COMPLETE = "下载完成。"
MSG_NETWORK_SEARCH_FAILED = "搜索失败,请检查你的网络连接!"
MSG_NETWORK_SEARCH_TIME_OUT = "搜索超时!"
MSG_NETWORK_COVER_DOWNLOAD_FAILED = "专辑封面下载失败,请检查你的网络连接!"
-MSG_LYRIC_OVERWRITE_INQUARY = "歌词文件已存在,要替换它吗?"
+MSG_LYRIC_OVERWRITE_INQUIRY = "歌词文件已存在,要替换它吗?"
MSG_LYRIC_DOWNLOAD_COMPLETE_SAVED = "歌词下载完成,保存为“<%1%>”。"
# error.log
@@ -120,7 +120,7 @@ UI_TIP_BTN_STOP = "停止"
UI_TIP_BTN_MINIMODE = "迷你模式"
UI_TIP_BTN_MINIMODE_RTN = "返回正常模式"
UI_TIP_BTN_PLAYLIST_SHOW_HIDE = "显示/隐藏播放列表"
-UI_TIP_BTN_PROPETRY = "曲目信息"
+UI_TIP_BTN_PROPERTY = "曲目信息"
UI_TIP_BTN_LOCATE_TO_CURRENT = "定位到正在播放曲目"
UI_TIP_BTN_TRANSLATION = "显示歌词翻译"
UI_TIP_BTN_SWITCH_UI = "切换界面"
@@ -161,7 +161,7 @@ UI_TIP_BTN_DESKTOP_LYRIC_FORWARD = "歌词提前0.5秒"
UI_TIP_BTN_DESKTOP_LYRIC_DELAY = "歌词延后0.5秒"
UI_TIP_REPEAT_MODE = "循环模式"
-UI_TIP_REPEAT_OREDE = "顺序播放"
+UI_TIP_REPEAT_ORDER = "顺序播放"
UI_TIP_REPEAT_SHUFFLE = "无序播放"
UI_TIP_REPEAT_RANDOM = "随机播放"
UI_TIP_REPEAT_PLAYLIST = "列表循环"
@@ -300,7 +300,7 @@ TXT_FILTER_ALL_SUPPORTED_AUDIO_FORMAT = "所有支持的音频格式"
TXT_FILTER_LYRIC_FILE = "歌词文件"
TXT_FILTER_TXT_FILE = "文本文件"
TXT_FILTER_SF2_FILE = "音色库文件"
-TXT_FILTER_CSV_FILE = "csv文件"
+TXT_FILTER_CSV_FILE = "CSV文件"
TXT_FILTER_ALL_SUPPORTED_PLAYLIST_FILE = "全部支持的播放列表文件"
TXT_FILTER_PLAYLIST_FILE = "MusicPlayer2播放列表文件"
TXT_FILTER_M3U_FILE = "m3u播放列表文件"
@@ -459,14 +459,14 @@ TXT_LYRIC_BDL_SAVE_DIR_SONG = "保存到歌曲所在目录"
TXT_LYRIC_BDL_SONG_LIST = "歌曲列表:"
TXT_LYRIC_BDL_STATUS = "状态"
TXT_LYRIC_BDL_STATUS_DOWNLOADING = "正在下载…"
-TXT_LYRIC_BDL_STATUS_SKIPED = "已跳过"
+TXT_LYRIC_BDL_STATUS_SKIPPED = "已跳过"
TXT_LYRIC_BDL_STATUS_NETWORK_FAILED = "网络连接失败或超时"
TXT_LYRIC_BDL_STATUS_CANNOT_FIND_THIS_SONG = "找不到此歌曲"
TXT_LYRIC_BDL_STATUS_NO_MATCHED_LYRIC = "没有匹配的歌词"
TXT_LYRIC_BDL_STATUS_DOWNLOAD_FAILED = "歌词下载失败"
TXT_LYRIC_BDL_STATUS_SONG_NO_LYRIC = "该歌曲没有歌词"
TXT_LYRIC_BDL_STATUS_ENCODE_WARNING = "成功,但是歌词中有无法转换的Unicode字符,建议保存为UTF-8格式"
-TXT_LYRIC_BDL_STATUS_SUCCESSED = "成功"
+TXT_LYRIC_BDL_STATUS_SUCCEEDED = "成功"
TXT_LYRIC_BDL_STATUS_FILE_WRITE_FAILED = "无法写入文件"
TXT_LYRIC_BDL_INFO_DOWNLOADING_INFO = "正在下载,已完成 <%1%>%,请稍候..."
TXT_LYRIC_BDL_INFO_COMPLETE = "歌词下载完成。"
@@ -496,13 +496,13 @@ TXT_REVERB_STRENGTH = "混响强度:"
TXT_REVERB_TIME = "混响时间:"
# IDD_SUPPORT_FORMAT_DIALOG
-TITLE_SUPPORTTED_FORMAT = "支持的格式"
-TXT_SUPPORTTED_FORMAT_CORE_INFO_BASS = "MusicPlayer2支持多种播放内核,当前使用的播放内核为BASS音频库。\r\n更多音频格式支持依赖于BASS引擎插件(位于 “.\\Plugins” 目录下)。"
-TXT_SUPPORTTED_FORMAT_CORE_INFO_MCI = "MusicPlayer2支持多种播放内核,当前使用的播放内核为MCI。仅支持mp3、wma、wav、mid格式,需要支持更多音频格式的播放,请切换到BASS或FFMPEG内核。"
-TXT_SUPPORTTED_FORMAT_CORE_INFO_FFMPEG = "MusicPlayer2支持多种播放内核,当前使用的播放内核为FFMPEG。"
-TXT_SUPPORTTED_FORMAT_PLUGIN_FILE_NAME = "插件文件名"
-TXT_SUPPORTTED_FORMAT_PLUGIN_FORMAT_PROVIDED = "提供的格式支持"
-TXT_SUPPORTTED_FORMAT_PLUGIN_FILE_EXTENSION = "文件的扩展名"
+TITLE_SUPPORTED_FORMAT = "支持的格式"
+TXT_SUPPORTED_FORMAT_CORE_INFO_BASS = "MusicPlayer2支持多种播放内核,当前使用的播放内核为BASS音频库。\r\n更多音频格式支持依赖于BASS引擎插件(位于 “.\\Plugins” 目录下)。"
+TXT_SUPPORTED_FORMAT_CORE_INFO_MCI = "MusicPlayer2支持多种播放内核,当前使用的播放内核为MCI。仅支持mp3、wma、wav、mid格式,需要支持更多音频格式的播放,请切换到BASS或FFMPEG内核。"
+TXT_SUPPORTED_FORMAT_CORE_INFO_FFMPEG = "MusicPlayer2支持多种播放内核,当前使用的播放内核为FFMPEG。"
+TXT_SUPPORTED_FORMAT_PLUGIN_FILE_NAME = "插件文件名"
+TXT_SUPPORTED_FORMAT_PLUGIN_FORMAT_PROVIDED = "提供的格式支持"
+TXT_SUPPORTED_FORMAT_PLUGIN_FILE_EXTENSION = "文件的扩展名"
# IDD_FORMAT_CONVERT_DIALOG
TITLE_FORMAT_CONVERT = "转换格式"
@@ -518,8 +518,8 @@ TXT_FORMAT_CONVERT_STAUS_ERROR_MIDI_NO_SF2 = "错误: 没有MIDI音色库"
TXT_FORMAT_CONVERT_STAUS_ERROR_NO_WMP9_OR_LATER = "错误: 编码通道创建失败,没有安装 Windows Media Player 9 或更高版本"
TXT_FORMAT_CONVERT_STAUS_ERROR_NO_SUPPORTED_ENCODER = "错误: 编码通道创建失败,无法找到可支持请求的采样格式和比特率的编解码器"
TXT_FORMAT_CONVERT_STAUS_ERROR_OTHER = "错误代码: <%1%>"
-TXT_FORMAT_CONVERT_STAUS_COMPLEATE = "完成"
-TXT_FORMAT_CONVERT_STAUS_SKIPED = "已跳过"
+TXT_FORMAT_CONVERT_STAUS_COMPLETE = "完成"
+TXT_FORMAT_CONVERT_STAUS_SKIPPED = "已跳过"
TXT_FORMAT_CONVERT_OPT = "选项"
TXT_FORMAT_CONVERT_CHANGE_FREQ = "转换采样频率:"
TXT_FORMAT_CONVERT_COPY_TAG = "写入标签信息"
@@ -533,7 +533,7 @@ TXT_FORMAT_CONVERT_FILE_EXIST_OVERWRITE = "覆盖"
TXT_FORMAT_CONVERT_OUT_DIR = "输出目录:"
TXT_FORMAT_CONVERT_OUT_DIR_OPEN_WHEN_COMPLETE = "转换完成后打开输出目录"
TXT_FORMAT_CONVERT_PROGRESS_INFO = "已完成 <%1%>%,请稍候……"
-TXT_FORMAT_CONVERT_PROGRESS_INFO_COMPLEATE = "已完成"
+TXT_FORMAT_CONVERT_PROGRESS_INFO_COMPLETE = "已完成"
TXT_FORMAT_CONVERT_START_CONVERT = "开始转换"
MSG_FORMAT_CONVERT_BASS_MIX_LOAD_ERROR = "BASSmix 加载失败,文件 “<%1%>” 可能丢失或已经损坏!"
MSG_FORMAT_CONVERT_INIT_ERROR = "编码器初始化失败!"
@@ -741,14 +741,14 @@ TXT_OPT_DATA_DATA_FILE_DIR_OPEN = "打开配置文件所在目录"
TXT_OPT_DATA_CLOSE_MAIN_WINDOW = "关闭主窗口"
TXT_OPT_DATA_CLOSE_MAIN_WINDOW_MINIMIZE_NOTIFY_AREA = "最小化到通知区"
TXT_OPT_DATA_CLOSE_MAIN_WINDOW_EXIT = "退出程序"
-TXT_OPT_DATA_AUTO_DL_SETTING = "下载设置"
+TXT_OPT_DATA_DL_SETTING = "下载设置"
TXT_OPT_DATA_AUTO_DL_LYRIC = "没有歌词时自动下载"
TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_SEL = "自动下载歌词保存位置:"
TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_SONG_DIR = "保存到歌曲所在目录"
TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_LYRIC_DIR = "保存到歌词文件夹"
-TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT = "下载歌词翻译格式:"
-TXT_OPT_DATA_DL_LYRIC_AND_TRANSLATION_IN_SAME_LINE = "原文和翻译在同一行歌词中"
-TXT_OPT_DATA_DL_LYRIC_AND_TRANSLATION_IN_DIFFERENT_LINE = "原文和翻译在两行相同时间标签的歌词中"
+TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_SEL = "下载歌词翻译格式:"
+TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_SAME_LINE = "原文和翻译在同一行歌词中"
+TXT_OPT_DATA_DL_LYRIC_TRANSLATION_FORMAT_DIFFERENT_LINE = "原文和翻译在两行相同时间标签的歌词中"
TXT_OPT_DATA_AUTO_DL_COVER = "没有专辑封面时自动下载"
TXT_OPT_DATA_AUTO_DL_COVER_SAVE_SEL = "自动下载封面保存位置:"
TXT_OPT_DATA_AUTO_DL_COVER_SAVE_SONG_DIR = "保存到歌曲所在目录"
@@ -757,7 +757,7 @@ TXT_OPT_DATA_AUTO_DL_ONLY_WHEN_TAG_FULL = "只有歌曲信息完整时才自动
TIP_OPT_DATA_AUTO_DL_ONLY_WHEN_TAG_FULL = "勾选此项后,只有当歌曲的“标题”和“艺术家”信息都不为空时,才自动下载歌词和专辑封面。"
TXT_OPT_DATA_MIDI_SETTING = "MIDI 设置"
TXT_OPT_DATA_MIDI_INNER_LYRIC_FIRST = "优先显示 MIDI 音乐内嵌的歌词"
-TIP_OPT_DATA_MIDI_INNER_LYRIC_FIRSR = "有些 MIDI 音乐包含歌词,勾选此项后,会优先显示 MIDI 音乐内嵌的歌词。"
+TIP_OPT_DATA_MIDI_INNER_LYRIC_FIRST = "有些 MIDI 音乐包含歌词,勾选此项后,会优先显示 MIDI 音乐内嵌的歌词。"
TXT_OPT_DATA_MIDI_SF2_PATH = "MIDI 音色库路径:"
MSG_OPT_DATA_LANGUAGE_CHANGE_INFO = "请重新启动程序使语言设置生效。"
MSG_OPT_DATA_CFG_DIR_CHANGED_INFO = "你更改了配置文件和数据文件的保存位置,重启后生效。你可能需要手动将配置文件和数据文件转移到新的位置。"
@@ -773,7 +773,7 @@ TXT_OPT_PLAY_SHOW_TASKBAR_PLAY_STATE_ICON = "在任务栏显示播放状态图
TXT_OPT_PLAY_SOUND_FADE = "声音淡入淡出效果"
TXT_OPT_PLAY_CONTINUE_WHEN_SWITCH_PLAYLIST = "切换播放列表时继续播放"
TIP_OPT_PLAY_CONTINUE_WHEN_SWITCH_PLAYLIST = "勾选此项后,在切换播放列表时,如果新的播放列表中存在正在播放的曲目,则在切换播放列表后继续播放当前播放的曲目。"
-TXT_OPT_PLAY_USE_MEDIA_TRANS_CONTORL = "使用系统媒体控件"
+TXT_OPT_PLAY_USE_MEDIA_TRANS_CONTROL = "使用系统媒体控件"
TXT_OPT_PLAY_CORE = "播放内核"
TXT_OPT_PLAY_CORE_BASS = "BASS"
@@ -832,7 +832,7 @@ TXT_OPT_MEDIA_LIB_MEDIA_LIB_DIR_ADD = "添加..."
TXT_OPT_MEDIA_LIB_MEDIA_LIB_DIR_DEL = "删除"
TXT_OPT_MEDIA_LIB_MEDIA_LIB_DISP_TAB = "在媒体库中显示的项目"
TXT_OPT_MEDIA_LIB_PLAYLIST_OPT = "播放列表选项"
-TXT_OPT_MEDIA_LIB_DISABLE_DRAGE_SORT = "禁用播放列表曲目拖放排序"
+TXT_OPT_MEDIA_LIB_DISABLE_DRAG_SORT = "禁用播放列表曲目拖放排序"
TXT_OPT_MEDIA_LIB_INS_BEGIN = "向播放列表中添加曲目时插入到开头而不是末尾"
TXT_OPT_MEDIA_LIB_FLOAT_PLAYLIST_BY_DEFAULT = "默认使用浮动播放列表"
TXT_OPT_MEDIA_LIB_FLOAT_PLAYLIST_FOLLOW_MAIN_WND = "浮动播放列表跟随主窗口"
@@ -849,7 +849,7 @@ TXT_OPT_MEDIA_LIB_RECENT_PLAY_RANGE_LAST_MONTH = "最近一个月"
TXT_OPT_MEDIA_LIB_RECENT_PLAY_RANGE_LAST_HALF_YEAR = "最近半年"
TXT_OPT_MEDIA_LIB_RECENT_PLAY_RANGE_LAST_YEAR = "最近一年"
TXT_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR = "清空最近播放曲目列表..."
-MSG_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR_INQUARY = "确实要清空最近播放曲目列表吗?"
+MSG_OPT_MEDIA_LIB_RECENT_PLAY_CLEAR_INQUIRY = "确实要清空最近播放曲目列表吗?"
TXT_OPT_MEDIA_LIB_CLEAN_MEDIA_LIB = "清理媒体库"
TXT_OPT_MEDIA_LIB_CURRENT_DATA_FILE_SIZE_BYTE = "当前数据文件大小: <%1%> 字节"
TXT_OPT_MEDIA_LIB_CURRENT_DATA_FILE_SIZE_KB = "当前数据文件大小: <%2%> KB (<%1%> 字节)"
@@ -907,9 +907,9 @@ TXT_LIB_PLAY_SEL = "播放选中"
# IDD_SET_PATH_DIALOG
TXT_LIB_PATH_CURRENT_FOLDER = "当前文件夹:"
TXT_LIB_PATH_OPEN_NEW_FOLDER = "打开新文件夹..."
-TXT_LIB_PAHT_IS_CONTAIN_SUB_FOLDER = "包含子文件夹"
-TXT_LIB_PAHT_IS_CONTAIN_SUB_FOLDER_YES = "是"
-MSG_LIB_PATH_CLEAR_INQUARY = "确实要清除列表中无效的文件夹吗?"
+TXT_LIB_PATH_IS_CONTAIN_SUB_FOLDER = "包含子文件夹"
+TXT_LIB_PATH_IS_CONTAIN_SUB_FOLDER_YES = "是"
+MSG_LIB_PATH_CLEAR_INQUIRY = "确实要清除列表中无效的文件夹吗?"
MSG_LIB_PATH_CLEAR_COMPLETE = "完成,清除了 <%1%> 个无效的文件夹。"
# IDD_SELECT_PLAYLIST_DIALOG
TXT_LIB_PLAYLIST_NEW_PLAYLIST = "新建播放列表..."
@@ -951,13 +951,13 @@ TITLE_ABOUTBOX = "关于 MusicPlayer2"
TXT_ABOUTBOX_LAST_BUILD_DATE = "最后编译日期: <%1%>"
TXT_ABOUTBOX_THIRD_PARTY_LIB = "本项目使用的第三方库:"
TXT_ABOUTBOX_OTHER_SOFTWARE = "作者的其他软件:"
-TXT_ABOUTBOX_CONTRACT_AUTHOR = "联系作者"
+TXT_ABOUTBOX_CONTACT_AUTHOR = "联系作者"
TXT_ABOUTBOX_CHECK_UPDATE = "检查更新"
TXT_ABOUTBOX_GITHUB = "Github"
TXT_ABOUTBOX_LICENSE = "开源协议"
TXT_ABOUTBOX_DONATE = "捐助"
TXT_ABOUTBOX_ACKNOWLEDGEMENT = "鸣谢"
-TIP_ABOUTBOX_SEND_EMAIL_TO_ATHOUR = "向作者发送电子邮件"
+TIP_ABOUTBOX_SEND_EMAIL_TO_AUTHOR = "向作者发送电子邮件"
TIP_ABOUTBOX_GOTO_GITHUB = "转到此项目在GitHub上的页面"
TIP_ABOUTBOX_TRAFFICMONITOR_DESCRIPTION = "TrafficMonitor: 功能强大的Windows网速监控软件"
TIP_ABOUTBOX_SIMPLENOTEPAD_DESCRIPTION = "SimpleNotePad: 简洁的 Windows 文本编辑器"
@@ -972,7 +972,7 @@ TXT_DONATE_INFO = "如果你觉得这个软件对你有帮助,你可以扫描
# IDD_TAG_MODE_SELECT_DIALOG / CTagSelBaseDlg
TXT_TAG_SEL_CLEAR_HISTORY = "清除历史记录..."
-MSG_TAG_SEL_CLEAR_HISTORY_INQUARY = "确实要清除历史记录吗?"
+MSG_TAG_SEL_CLEAR_HISTORY_INQUIRY = "确实要清除历史记录吗?"
TXT_TAG_SEL_ORIGINAL = "原文件名:"
TXT_TAG_SEL_CLICK_BTN_SEL = "点击按钮时:"
TXT_TAG_SEL_CLICK_BTN_INS = "插入"
@@ -1009,9 +1009,9 @@ MSG_INPUT_URL_INVALID_WARNING = "请输入正确的URL!"
TITLE_LYRIC_PREVIEW = "歌词预览"
# CCrashReport::ShowCrashInfo / CMessageDlg
-TITLE_CRASH_REPOART = "错误"
-TXT_CRASH_REPOART_ERROR_MESSAGE = "错误信息:"
-TXT_CRASH_REPOART_CRASH_INFO = "很抱歉,程序出现了错误,请将此文件 “<%1%>” 通过电子邮件发送到 zhongyang219@hotmail.com,以帮助作者确定问题所在。并将以下内容添加到邮件正文中:\r\n<%2%>"
+TITLE_CRASH_REPORT = "错误"
+TXT_CRASH_REPORT_ERROR_MESSAGE = "错误信息:"
+TXT_CRASH_REPORT_CRASH_INFO = "很抱歉,程序出现了错误,请将此文件 “<%1%>” 通过电子邮件发送到 zhongyang219@hotmail.com,以帮助作者确定问题所在。并将以下内容添加到邮件正文中:\r\n<%2%>"
# CAboutDlg::OnNMClickLicenseSyslink / CMessageDlg
TITLE_LICENSE = "开源协议"
diff --git a/MusicPlayer2/print_compile_time.bat b/MusicPlayer2/print_compile_time.bat
index 07d8094c8..8ad307492 100644
--- a/MusicPlayer2/print_compile_time.bat
+++ b/MusicPlayer2/print_compile_time.bat
@@ -1,4 +1,23 @@
-REM ǰںʱ䣬浽compile_time.txtļ
-del /F /Q compile_time.txt
-echo %date:~0,10% >> compile_time.txt
-echo %time:~0,8% >> compile_time.txt
\ No newline at end of file
+@echo off
+setlocal
+
+:: Get the local date and time
+for /f "tokens=2 delims==." %%i in ('wmic os get localdatetime /value') do set datetime=%%i
+:: Extract the parts (cmd is not case sensitive)
+set year=%datetime:~0,4%
+set month=%datetime:~4,2%
+set day=%datetime:~6,2%
+set hh=%datetime:~8,2%
+set mm=%datetime:~10,2%
+set ss=%datetime:~12,2%
+:: Formatted as yyyy-MM-dd HH:mm:ss
+set formatted_datetime=%year%-%month%-%day% %hh%:%mm%:%ss%
+:: Output to compile_time.txt file
+echo %formatted_datetime% > compile_time.txt
+
+:: Get the current Git commit hash (without showing error messages)
+for /f %%i in ('git rev-parse HEAD 2^>nul') do set commit_hash=%%i
+:: If the git command is executed successfully, the commit hash is appended to the compile_time.txt file.
+if not "%commit_hash%"=="" (echo %commit_hash% >> compile_time.txt)
+
+endlocal
diff --git a/MusicPlayer2/resource.h b/MusicPlayer2/resource.h
index 755624160..b523ce91e 100644
--- a/MusicPlayer2/resource.h
+++ b/MusicPlayer2/resource.h
@@ -616,7 +616,7 @@
#define IDC_TXT_OPT_DATA_LANGUAGE_SEL_STATIC 1256
#define IDC_TXT_OPT_DATA_DATA_FILE_CFG_STATIC 1257
#define IDC_TXT_OPT_DATA_CLOSE_MAIN_WINDOW_STATIC 1258
-#define IDC_TXT_OPT_DATA_AUTO_DL_SETTING_STATIC 1259
+#define IDC_TXT_OPT_DATA_DL_SETTING_STATIC 1259
#define IDC_TXT_OPT_DATA_AUTO_DL_LYRIC_SAVE_SEL_STATIC 1260
#define IDC_TXT_OPT_DATA_AUTO_DL_COVER_SAVE_SEL_STATIC 1261
#define IDC_TXT_OPT_DATA_MIDI_SETTING_STATIC 1262