https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f20bdf19946947b37254c…
commit f20bdf19946947b37254c05fb4c814af3324a17b
Author:     Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Fri May 18 19:47:52 2018 +0900
Commit:     Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito(a)reactos.org>
CommitDate: Fri May 18 12:47:52 2018 +0200
    [SHELL32] Add 'Create New Extension' IDD_NEWEXTENSION dialog (#544)
    A 'Create New Extension' dialog is implemented, which enables the user to add
a new file extension.
    CORE-12906
---
 dll/win32/shell32/dialogs/folder_options.cpp | 345 ++++++++++++++++++++++++++-
 dll/win32/shell32/lang/bg-BG.rc              |  21 ++
 dll/win32/shell32/lang/ca-ES.rc              |  21 ++
 dll/win32/shell32/lang/cs-CZ.rc              |  21 ++
 dll/win32/shell32/lang/da-DK.rc              |  21 ++
 dll/win32/shell32/lang/de-DE.rc              |  21 ++
 dll/win32/shell32/lang/el-GR.rc              |  21 ++
 dll/win32/shell32/lang/en-GB.rc              |  21 ++
 dll/win32/shell32/lang/en-US.rc              |  21 ++
 dll/win32/shell32/lang/es-ES.rc              |  21 ++
 dll/win32/shell32/lang/et-EE.rc              |  21 ++
 dll/win32/shell32/lang/fi-FI.rc              |  21 ++
 dll/win32/shell32/lang/fr-FR.rc              |  21 ++
 dll/win32/shell32/lang/he-IL.rc              |  21 ++
 dll/win32/shell32/lang/hu-HU.rc              |  21 ++
 dll/win32/shell32/lang/it-IT.rc              |  21 ++
 dll/win32/shell32/lang/ja-JP.rc              |  21 ++
 dll/win32/shell32/lang/ko-KR.rc              |  21 ++
 dll/win32/shell32/lang/nl-NL.rc              |  21 ++
 dll/win32/shell32/lang/no-NO.rc              |  21 ++
 dll/win32/shell32/lang/pl-PL.rc              |  21 ++
 dll/win32/shell32/lang/pt-BR.rc              |  21 ++
 dll/win32/shell32/lang/pt-PT.rc              |  21 ++
 dll/win32/shell32/lang/ro-RO.rc              |  21 ++
 dll/win32/shell32/lang/ru-RU.rc              |  21 ++
 dll/win32/shell32/lang/sk-SK.rc              |  21 ++
 dll/win32/shell32/lang/sl-SI.rc              |  21 ++
 dll/win32/shell32/lang/sq-AL.rc              |  21 ++
 dll/win32/shell32/lang/sv-SE.rc              |  21 ++
 dll/win32/shell32/lang/tr-TR.rc              |  21 ++
 dll/win32/shell32/lang/uk-UA.rc              |  21 ++
 dll/win32/shell32/lang/zh-CN.rc              |  21 ++
 dll/win32/shell32/lang/zh-TW.rc              |  21 ++
 dll/win32/shell32/shresdef.h                 |  14 ++
 34 files changed, 1022 insertions(+), 9 deletions(-)
diff --git a/dll/win32/shell32/dialogs/folder_options.cpp
b/dll/win32/shell32/dialogs/folder_options.cpp
index 197b301395..12af778245 100644
--- a/dll/win32/shell32/dialogs/folder_options.cpp
+++ b/dll/win32/shell32/dialogs/folder_options.cpp
@@ -2,7 +2,7 @@
  *    Open With  Context Menu extension
  *
  * Copyright 2007 Johannes Anderwald <johannes.anderwald(a)reactos.org>
- * Copyright 2016-2017 Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
+ * Copyright 2016-2018 Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -1556,6 +1556,324 @@ FindSelectedItem(
     return NULL;
 }
+struct NEWEXT_DIALOG
+{
+    HWND hwndDlg;
+    HWND hwndLV;
+    RECT rcDlg;
+    BOOL bAdvanced;
+    INT dy;
+    WCHAR szExt[16];
+    WCHAR szFileType[64];
+};
+
+static VOID
+NewExtDlg_OnAdvanced(HWND hwndDlg, NEWEXT_DIALOG *pNewExt)
+{
+    // If "Advanced" button was clicked, then we shrink or expand the dialog.
+    WCHAR szText[64];
+    RECT rc, rc1, rc2;
+
+    GetWindowRect(hwndDlg, &rc);
+    rc.bottom = rc.top + (pNewExt->rcDlg.bottom - pNewExt->rcDlg.top);
+
+    GetWindowRect(GetDlgItem(hwndDlg, IDOK), &rc1);
+    MapWindowPoints(NULL, hwndDlg, (POINT *)&rc1, 2);
+
+    GetWindowRect(GetDlgItem(hwndDlg, IDCANCEL), &rc2);
+    MapWindowPoints(NULL, hwndDlg, (POINT *)&rc2, 2);
+
+    if (pNewExt->bAdvanced)
+    {
+        rc1.top += pNewExt->dy;
+        rc1.bottom += pNewExt->dy;
+
+        rc2.top += pNewExt->dy;
+        rc2.bottom += pNewExt->dy;
+
+        ShowWindow(GetDlgItem(hwndDlg, IDC_NEWEXT_ASSOC), SW_SHOWNOACTIVATE);
+        ShowWindow(GetDlgItem(hwndDlg, IDC_NEWEXT_COMBOBOX), SW_SHOWNOACTIVATE);
+
+        LoadStringW(shell32_hInstance, IDS_NEWEXT_ADVANCED_LEFT, szText,
_countof(szText));
+        SetDlgItemTextW(hwndDlg, IDC_NEWEXT_ADVANCED, szText);
+
+        SetFocus(GetDlgItem(hwndDlg, IDC_NEWEXT_COMBOBOX));
+    }
+    else
+    {
+        rc1.top -= pNewExt->dy;
+        rc1.bottom -= pNewExt->dy;
+
+        rc2.top -= pNewExt->dy;
+        rc2.bottom -= pNewExt->dy;
+
+        ShowWindow(GetDlgItem(hwndDlg, IDC_NEWEXT_ASSOC), SW_HIDE);
+        ShowWindow(GetDlgItem(hwndDlg, IDC_NEWEXT_COMBOBOX), SW_HIDE);
+
+        LoadStringW(shell32_hInstance, IDS_NEWEXT_ADVANCED_RIGHT, szText,
_countof(szText));
+        SetDlgItemTextW(hwndDlg, IDC_NEWEXT_ADVANCED, szText);
+
+        rc.bottom -= pNewExt->dy;
+
+        LoadStringW(shell32_hInstance, IDS_NEWEXT_NEW, szText, _countof(szText));
+        SetDlgItemTextW(hwndDlg, IDC_NEWEXT_COMBOBOX, szText);
+    }
+
+    HDWP hDWP = BeginDeferWindowPos(3);
+
+    if (hDWP)
+        DeferWindowPos(hDWP, GetDlgItem(hwndDlg, IDOK), NULL,
+                       rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,
+                       SWP_NOACTIVATE | SWP_NOZORDER);
+    if (hDWP)
+        DeferWindowPos(hDWP, GetDlgItem(hwndDlg, IDCANCEL), NULL,
+                       rc2.left, rc2.top, rc2.right - rc2.left, rc2.bottom - rc2.top,
+                       SWP_NOACTIVATE | SWP_NOZORDER);
+    if (hDWP)
+        DeferWindowPos(hDWP, hwndDlg, NULL,
+                       rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
+                       SWP_NOACTIVATE | SWP_NOZORDER);
+
+    if (hDWP)
+        EndDeferWindowPos(hDWP);
+}
+
+static BOOL
+NewExtDlg_OnInitDialog(HWND hwndDlg, NEWEXT_DIALOG *pNewExt)
+{
+    WCHAR szText[64];
+
+    pNewExt->hwndDlg = hwndDlg;
+    pNewExt->bAdvanced = FALSE;
+
+    GetWindowRect(hwndDlg, &pNewExt->rcDlg);
+
+    RECT rc1, rc2;
+    GetWindowRect(GetDlgItem(hwndDlg, IDC_NEWEXT_EDIT), &rc1);
+    GetWindowRect(GetDlgItem(hwndDlg, IDC_NEWEXT_COMBOBOX), &rc2);
+    pNewExt->dy = rc2.top - rc1.top;
+
+    LoadStringW(shell32_hInstance, IDS_NEWEXT_NEW, szText, _countof(szText));
+    SendDlgItemMessageW(hwndDlg, IDC_NEWEXT_COMBOBOX, CB_ADDSTRING, 0, (LPARAM)szText);
+    SendDlgItemMessageW(hwndDlg, IDC_NEWEXT_COMBOBOX, CB_SETCURSEL, 0, 0);
+
+    SendDlgItemMessageW(hwndDlg, IDC_NEWEXT_EDIT, EM_SETLIMITTEXT,
_countof(pNewExt->szExt) - 1, 0);
+
+    NewExtDlg_OnAdvanced(hwndDlg, pNewExt);
+
+    return TRUE;
+}
+
+static void
+StringTrimW(LPWSTR pszText)
+{
+    LPWSTR pch = pszText;
+    while (iswspace(*pch))
+        pch++;
+
+    LPWSTR pchFirst, pchLast;
+    pchFirst = pchLast = pch;
+    while (*pch && !iswspace(*pch))
+    {
+        ++pch;
+        pchLast = pch;
+    }
+
+    INT_PTR cch = pchLast - pchFirst;
+    MoveMemory(pszText, pchFirst, cch * sizeof(WCHAR));
+    pszText[cch] = 0;
+}
+
+static BOOL
+NewExtDlg_OnOK(HWND hwndDlg, NEWEXT_DIALOG *pNewExt)
+{
+    LV_FINDINFO find;
+    INT iItem;
+
+    GetDlgItemTextW(hwndDlg, IDC_NEWEXT_EDIT, pNewExt->szExt,
_countof(pNewExt->szExt));
+    StringTrimW(pNewExt->szExt);
+    CharUpperW(pNewExt->szExt);
+
+    GetDlgItemTextW(hwndDlg, IDC_NEWEXT_COMBOBOX, pNewExt->szFileType,
_countof(pNewExt->szFileType));
+    StringTrimW(pNewExt->szFileType);
+
+    if (pNewExt->szExt[0] == 0)
+    {
+        WCHAR szText[128], szTitle[128];
+        LoadStringW(shell32_hInstance, IDS_NEWEXT_SPECIFY_EXT, szText, _countof(szText));
+        szText[_countof(szText) - 1] = 0;
+        LoadStringW(shell32_hInstance, IDS_FILE_TYPES, szTitle, _countof(szTitle));
+        szTitle[_countof(szTitle) - 1] = 0;
+        MessageBoxW(hwndDlg, szText, szTitle, MB_ICONERROR);
+        return FALSE;
+    }
+
+    ZeroMemory(&find, sizeof(find));
+    find.flags = LVFI_STRING;
+    if (pNewExt->szExt[0] == L'.')
+    {
+        find.psz = &pNewExt->szExt[1];
+    }
+    else
+    {
+        find.psz = pNewExt->szExt;
+    }
+
+    iItem = ListView_FindItem(pNewExt->hwndLV, -1, &find);
+    if (iItem >= 0)
+    {
+        // already exists
+        WCHAR szText[256], szFormat[256], szTitle[64], szFileType[64];
+
+        // get file type
+        LV_ITEM item;
+        ZeroMemory(&item, sizeof(item));
+        item.mask = LVIF_TEXT;
+        item.pszText = szFileType;
+        item.cchTextMax = _countof(szFileType);
+        item.iItem = iItem;
+        item.iSubItem = 1;
+        ListView_GetItem(pNewExt->hwndLV, &item);
+
+        // get text
+        LoadStringW(shell32_hInstance, IDS_NEWEXT_ALREADY_ASSOC, szFormat,
_countof(szFormat));
+        szText[_countof(szFormat) - 1] = 0;
+        StringCchPrintfW(szText, _countof(szText), szFormat, find.psz, szFileType,
find.psz, szFileType);
+
+        // get title
+        LoadStringW(shell32_hInstance, IDS_NEWEXT_EXT_IN_USE, szTitle,
_countof(szTitle));
+        szTitle[_countof(szTitle) - 1] = 0;
+
+        if (MessageBoxW(hwndDlg, szText, szTitle, MB_ICONWARNING | MB_YESNO) == IDNO)
+        {
+            return FALSE;
+        }
+
+        // Delete the item
+        ListView_DeleteItem(pNewExt->hwndLV, iItem);
+    }
+
+    EndDialog(hwndDlg, IDOK);
+    return TRUE;
+}
+
+// IDD_NEWEXTENSION dialog
+INT_PTR
+CALLBACK
+NewExtensionDlgProc(
+    HWND hwndDlg,
+    UINT uMsg,
+    WPARAM wParam,
+    LPARAM lParam)
+{
+    static NEWEXT_DIALOG *s_pNewExt = NULL;
+
+    switch (uMsg)
+    {
+        case WM_INITDIALOG:
+            s_pNewExt = (NEWEXT_DIALOG *)lParam;
+            NewExtDlg_OnInitDialog(hwndDlg, s_pNewExt);
+            return TRUE;
+        case WM_COMMAND:
+            switch (LOWORD(wParam))
+            {
+                case IDOK:
+                    NewExtDlg_OnOK(hwndDlg, s_pNewExt);
+                    break;
+                case IDCANCEL:
+                    EndDialog(hwndDlg, IDCANCEL);
+                    break;
+                case IDC_NEWEXT_ADVANCED:
+                    s_pNewExt->bAdvanced = !s_pNewExt->bAdvanced;
+                    NewExtDlg_OnAdvanced(hwndDlg, s_pNewExt);
+                    break;
+            }
+            break;
+    }
+    return 0;
+}
+
+static BOOL
+FileTypesDlg_AddExt(HWND hwndDlg, LPCWSTR pszExt, LPCWSTR pszFileType)
+{
+    DWORD dwValue = 1;
+    HKEY hKey;
+    WCHAR szKey[13];    // max. "ft4294967295" + "\0"
+    LONG nResult;
+
+    // Search the next "ft%06u" key name
+    do
+    {
+        StringCchPrintfW(szKey, _countof(szKey), TEXT("ft%06u"), dwValue);
+
+        nResult = RegOpenKeyEx(HKEY_CLASSES_ROOT, szKey, 0, KEY_READ, &hKey);
+        if (nResult != ERROR_SUCCESS)
+            break;
+
+        RegCloseKey(hKey);
+        ++dwValue;
+    } while (dwValue != 0);
+
+    RegCloseKey(hKey);
+
+    if (dwValue == 0)
+        return FALSE;
+
+    // Create new "ft%06u" key
+    nResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, szKey, 0, NULL, 0, KEY_WRITE, NULL,
&hKey, NULL);
+    if (ERROR_SUCCESS != nResult)
+        return FALSE;
+
+    RegCloseKey(hKey);
+
+    // Create the ".ext" key
+    WCHAR szExt[16];
+    if (*pszExt == L'.')
+        ++pszExt;
+    StringCchPrintfW(szExt, _countof(szExt), TEXT(".%s"), pszExt);
+    CharLowerW(szExt);
+    nResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, szExt, 0, NULL, 0, KEY_WRITE, NULL,
&hKey, NULL);
+    CharUpperW(szExt);
+    if (ERROR_SUCCESS != nResult)
+        return FALSE;
+
+    // Set the default value of ".ext" to "ft%06u"
+    DWORD dwSize = (lstrlen(szKey) + 1) * sizeof(WCHAR);
+    RegSetValueExW(hKey, NULL, 0, REG_SZ, (BYTE *)szKey, dwSize);
+
+    RegCloseKey(hKey);
+
+    // Make up the file type name
+    WCHAR szFile[100], szFileFormat[100];
+    LoadStringW(shell32_hInstance, IDS_FILE_EXT_TYPE, szFileFormat,
_countof(szFileFormat));
+    szFile[_countof(szFileFormat) - 1] = 0;
+    StringCchPrintfW(szFile, _countof(szFile), szFileFormat, &szExt[1]);
+
+    // Insert an item to listview
+    HWND hListView = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
+    INT iItem = ListView_GetItemCount(hListView);
+    INT iItemCopy = iItem;
+    InsertFileType(hListView, szExt, &iItemCopy, szFile);
+
+    LV_ITEM item;
+    ZeroMemory(&item, sizeof(item));
+    item.mask = LVIF_STATE | LVIF_TEXT;
+    item.iItem = iItem;
+    item.state = LVIS_SELECTED | LVIS_FOCUSED;
+    item.stateMask = LVIS_SELECTED | LVIS_FOCUSED;
+    item.pszText = &szExt[1];
+    ListView_SetItem(hListView, &item);
+
+    item.pszText = szFile;
+    item.iSubItem = 1;
+    ListView_SetItem(hListView, &item);
+
+    ListView_EnsureVisible(hListView, iItem, FALSE);
+
+    return TRUE;
+}
+
+// IDD_FOLDER_OPTIONS_FILETYPES dialog
 INT_PTR
 CALLBACK
 FolderOptionsFileTypesDlg(
@@ -1569,6 +1887,7 @@ FolderOptionsFileTypesDlg(
     WCHAR Buffer[255], FormatBuffer[255];
     PFOLDER_FILE_TYPE_ENTRY pItem;
     OPENASINFO Info;
+    NEWEXT_DIALOG newext;
     switch(uMsg)
     {
@@ -1578,14 +1897,22 @@ FolderOptionsFileTypesDlg(
             /* Disable the Delete button if the listview is empty or
                the selected item should not be deleted by the user */
             if (pItem == NULL || (pItem->EditFlags & 0x00000010)) // FTA_NoRemove
-                EnableWindow(GetDlgItem(hwndDlg, 14002), FALSE);
+                EnableWindow(GetDlgItem(hwndDlg, IDC_FILETYPES_DELETE), FALSE);
             return TRUE;
         case WM_COMMAND:
             switch(LOWORD(wParam))
             {
-                case 14006:
-                    pItem = FindSelectedItem(GetDlgItem(hwndDlg, 14000));
+                case IDC_FILETYPES_NEW:
+                    newext.hwndLV = GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW);
+                    if (IDOK == DialogBoxParamW(shell32_hInstance,
MAKEINTRESOURCEW(IDD_NEWEXTENSION),
+                                                hwndDlg, NewExtensionDlgProc,
(LPARAM)&newext))
+                    {
+                        FileTypesDlg_AddExt(hwndDlg, newext.szExt, newext.szFileType);
+                    }
+                    break;
+                case IDC_FILETYPES_CHANGE:
+                    pItem = FindSelectedItem(GetDlgItem(hwndDlg,
IDC_FILETYPES_LISTVIEW));
                     if (pItem)
                     {
                         Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_REGISTER_EXT;
@@ -1623,7 +1950,7 @@ FolderOptionsFileTypesDlg(
                     /* format buffer */
                     swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1]);
                     /* update dialog */
-                    SetDlgItemTextW(hwndDlg, 14003, Buffer);
+                    SetDlgItemTextW(hwndDlg, IDC_FILETYPES_DETAILS_GROUPBOX, Buffer);
                     if (!LoadStringW(shell32_hInstance, IDS_FILE_DETAILSADV,
FormatBuffer, sizeof(FormatBuffer) / sizeof(WCHAR)))
                     {
@@ -1633,19 +1960,19 @@ FolderOptionsFileTypesDlg(
                     /* format buffer */
                     swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1],
&pItem->FileDescription[0], &pItem->FileDescription[0]);
                     /* update dialog */
-                    SetDlgItemTextW(hwndDlg, 14007, Buffer);
+                    SetDlgItemTextW(hwndDlg, IDC_FILETYPES_DESCRIPTION, Buffer);
                     /* Enable the Delete button */
                     if (pItem->EditFlags & 0x00000010) // FTA_NoRemove
-                        EnableWindow(GetDlgItem(hwndDlg, 14002), FALSE);
+                        EnableWindow(GetDlgItem(hwndDlg, IDC_FILETYPES_DELETE), FALSE);
                     else
-                        EnableWindow(GetDlgItem(hwndDlg, 14002), TRUE);
+                        EnableWindow(GetDlgItem(hwndDlg, IDC_FILETYPES_DELETE), TRUE);
                 }
             }
             else if (lppl->hdr.code == PSN_SETACTIVE)
             {
                 /* On page activation, set the focus to the listview */
-                SetFocus(GetDlgItem(hwndDlg, 14000));
+                SetFocus(GetDlgItem(hwndDlg, IDC_FILETYPES_LISTVIEW));
             }
             break;
     }
diff --git a/dll/win32/shell32/lang/bg-BG.rc b/dll/win32/shell32/lang/bg-BG.rc
index 7db93e7883..e1434cc693 100644
--- a/dll/win32/shell32/lang/bg-BG.rc
+++ b/dll/win32/shell32/lang/bg-BG.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/ca-ES.rc b/dll/win32/shell32/lang/ca-ES.rc
index 691928568e..5e132b5a23 100644
--- a/dll/win32/shell32/lang/ca-ES.rc
+++ b/dll/win32/shell32/lang/ca-ES.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/cs-CZ.rc b/dll/win32/shell32/lang/cs-CZ.rc
index 9928ef0947..88341dee0f 100644
--- a/dll/win32/shell32/lang/cs-CZ.rc
+++ b/dll/win32/shell32/lang/cs-CZ.rc
@@ -647,6 +647,20 @@ Určitě chcete otevřít tento soubor?", IDC_STATIC, 35, 5, 230, 60
     PUSHBUTTON "Ne", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -864,4 +878,11 @@ BEGIN
     IDS_MENU_EMPTY "(Prázdné)"
     IDS_OBJECTS "Položek: %d"
     IDS_OBJECTS_SELECTED "Položek vybráno: %d"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/da-DK.rc b/dll/win32/shell32/lang/da-DK.rc
index b243df2bf8..499a764aaf 100644
--- a/dll/win32/shell32/lang/da-DK.rc
+++ b/dll/win32/shell32/lang/da-DK.rc
@@ -647,6 +647,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -884,4 +898,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/de-DE.rc b/dll/win32/shell32/lang/de-DE.rc
index 962b0b99b9..7413b005ac 100644
--- a/dll/win32/shell32/lang/de-DE.rc
+++ b/dll/win32/shell32/lang/de-DE.rc
@@ -642,6 +642,20 @@ Sind Sie sicher, dass Sie diese Datei öffnen möchten?",
IDC_STATIC, 35, 5, 230
     PUSHBUTTON "&Nein", IDNO, 180, 60, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -879,4 +893,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Systemsteuerung unter Arbeitsplatz
einblenden"
     IDS_ADVANCED_SHOW_COMP_COLOR "Verschlüsselte oder komprimierte NTFS-Dateien
farbig anzeigen"
     IDS_ADVANCED_SHOW_INFO_TIP "Popupinformationen für Ordner- und Desktop-Elemente
anzeigen"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/el-GR.rc b/dll/win32/shell32/lang/el-GR.rc
index c3de8be186..b52405c547 100644
--- a/dll/win32/shell32/lang/el-GR.rc
+++ b/dll/win32/shell32/lang/el-GR.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/en-GB.rc b/dll/win32/shell32/lang/en-GB.rc
index 097e62f4f2..75807f8a95 100644
--- a/dll/win32/shell32/lang/en-GB.rc
+++ b/dll/win32/shell32/lang/en-GB.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/en-US.rc b/dll/win32/shell32/lang/en-US.rc
index 02be7b92eb..36620174d5 100644
--- a/dll/win32/shell32/lang/en-US.rc
+++ b/dll/win32/shell32/lang/en-US.rc
@@ -642,6 +642,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -879,4 +893,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/es-ES.rc b/dll/win32/shell32/lang/es-ES.rc
index 33f2a498b0..560c3bc11d 100644
--- a/dll/win32/shell32/lang/es-ES.rc
+++ b/dll/win32/shell32/lang/es-ES.rc
@@ -643,6 +643,20 @@ sistema o comprometer su correcto funcionamiento.\n\n\
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -880,4 +894,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/et-EE.rc b/dll/win32/shell32/lang/et-EE.rc
index 9f8150ae25..d7e7f5f7da 100644
--- a/dll/win32/shell32/lang/et-EE.rc
+++ b/dll/win32/shell32/lang/et-EE.rc
@@ -649,6 +649,20 @@ Kas oled kindel et soovid seda faili avada?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "Ei", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -886,4 +900,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Näita juhtpaneeli kaustas Minu
aruvti"
     IDS_ADVANCED_SHOW_COMP_COLOR "Näita krüptitud või tihendatud NTFS-faile
värvilisena"
     IDS_ADVANCED_SHOW_INFO_TIP "Näita kausta- ja töölauaüksuste
hüpikkirjeldusi"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/fi-FI.rc b/dll/win32/shell32/lang/fi-FI.rc
index 438b40d125..9c047596fb 100644
--- a/dll/win32/shell32/lang/fi-FI.rc
+++ b/dll/win32/shell32/lang/fi-FI.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/fr-FR.rc b/dll/win32/shell32/lang/fr-FR.rc
index 6ca34ecaa0..94934f332a 100644
--- a/dll/win32/shell32/lang/fr-FR.rc
+++ b/dll/win32/shell32/lang/fr-FR.rc
@@ -641,6 +641,20 @@ système ou le rendre moins fonctionnel.\n\n\
     PUSHBUTTON "Non", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/he-IL.rc b/dll/win32/shell32/lang/he-IL.rc
index 925493cd51..21adbdaca7 100644
--- a/dll/win32/shell32/lang/he-IL.rc
+++ b/dll/win32/shell32/lang/he-IL.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/hu-HU.rc b/dll/win32/shell32/lang/hu-HU.rc
index 7f4caf3157..8cfc2a4fda 100644
--- a/dll/win32/shell32/lang/hu-HU.rc
+++ b/dll/win32/shell32/lang/hu-HU.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/it-IT.rc b/dll/win32/shell32/lang/it-IT.rc
index 3ab099b0be..a676af71b6 100644
--- a/dll/win32/shell32/lang/it-IT.rc
+++ b/dll/win32/shell32/lang/it-IT.rc
@@ -641,6 +641,20 @@ Si desidera comunque aprire questo file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/ja-JP.rc b/dll/win32/shell32/lang/ja-JP.rc
index 3c585185a4..afc51ab142 100644
--- a/dll/win32/shell32/lang/ja-JP.rc
+++ b/dll/win32/shell32/lang/ja-JP.rc
@@ -638,6 +638,20 @@ BEGIN
     PUSHBUTTON "いいえ", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 9, "MS UI Gothic"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -875,4 +889,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "マイ コンピュータでコントロール パネルを表示する"
     IDS_ADVANCED_SHOW_COMP_COLOR "暗号化または圧縮されたNTFSファイルを色付きで表示する"
     IDS_ADVANCED_SHOW_INFO_TIP "フォルダとデスクトップの項目にポップアップ式の説明を表示する"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/ko-KR.rc b/dll/win32/shell32/lang/ko-KR.rc
index 5a9674803c..19a06e0183 100644
--- a/dll/win32/shell32/lang/ko-KR.rc
+++ b/dll/win32/shell32/lang/ko-KR.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 9, "굴림"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/nl-NL.rc b/dll/win32/shell32/lang/nl-NL.rc
index 97e947a882..ba0280cd18 100644
--- a/dll/win32/shell32/lang/nl-NL.rc
+++ b/dll/win32/shell32/lang/nl-NL.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/no-NO.rc b/dll/win32/shell32/lang/no-NO.rc
index be60be5f1d..9a06724890 100644
--- a/dll/win32/shell32/lang/no-NO.rc
+++ b/dll/win32/shell32/lang/no-NO.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/pl-PL.rc b/dll/win32/shell32/lang/pl-PL.rc
index fb62f92282..67951958e3 100644
--- a/dll/win32/shell32/lang/pl-PL.rc
+++ b/dll/win32/shell32/lang/pl-PL.rc
@@ -646,6 +646,20 @@ Czy na pewno chcesz otworzyć ten plik?", IDC_STATIC, 35, 5, 230,
60
     PUSHBUTTON "Nie", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -883,4 +897,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Pokaż Panel sterowania w oknie Mój
komputer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Pokaż zaszyfrowane lub skompresowane pliki NTFS w
kolorze"
     IDS_ADVANCED_SHOW_INFO_TIP "Pokaż podręczny opis elementów folderów i
pulpitu"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/pt-BR.rc b/dll/win32/shell32/lang/pt-BR.rc
index abbdc292f6..e7da10ffee 100644
--- a/dll/win32/shell32/lang/pt-BR.rc
+++ b/dll/win32/shell32/lang/pt-BR.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/pt-PT.rc b/dll/win32/shell32/lang/pt-PT.rc
index 978dc1b95c..f0df0caf9d 100644
--- a/dll/win32/shell32/lang/pt-PT.rc
+++ b/dll/win32/shell32/lang/pt-PT.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/ro-RO.rc b/dll/win32/shell32/lang/ro-RO.rc
index 3880417de2..213d1c654e 100644
--- a/dll/win32/shell32/lang/ro-RO.rc
+++ b/dll/win32/shell32/lang/ro-RO.rc
@@ -643,6 +643,20 @@ Sigur doriți să deschideți acest fișier?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "N&u", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -880,4 +894,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Afișează Panoul de control în
Calculatorul meu"
     IDS_ADVANCED_SHOW_COMP_COLOR "Afișează în culori fișierele NTFS criptate sau
comprimate"
     IDS_ADVANCED_SHOW_INFO_TIP "Permite descriere prin indicii pentru dosare și
elemente de birou"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/ru-RU.rc b/dll/win32/shell32/lang/ru-RU.rc
index 9fe7bb3a3a..9999c34582 100644
--- a/dll/win32/shell32/lang/ru-RU.rc
+++ b/dll/win32/shell32/lang/ru-RU.rc
@@ -643,6 +643,20 @@ BEGIN
     PUSHBUTTON "Нет", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -880,4 +894,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Показать ""Панель
управления"" в ""Мой компьютер"""
     IDS_ADVANCED_SHOW_COMP_COLOR "Отображать сжатые или зашифрованные файлы NTFS
другим цветом"
     IDS_ADVANCED_SHOW_INFO_TIP "Отображать описание для папок и элементов рабочего
стола"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/sk-SK.rc b/dll/win32/shell32/lang/sk-SK.rc
index c4dbe9172e..e43686755c 100644
--- a/dll/win32/shell32/lang/sk-SK.rc
+++ b/dll/win32/shell32/lang/sk-SK.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/sl-SI.rc b/dll/win32/shell32/lang/sl-SI.rc
index 9520ab1ec1..b31654d02e 100644
--- a/dll/win32/shell32/lang/sl-SI.rc
+++ b/dll/win32/shell32/lang/sl-SI.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/sq-AL.rc b/dll/win32/shell32/lang/sq-AL.rc
index fced8feca2..0b24962ea8 100644
--- a/dll/win32/shell32/lang/sq-AL.rc
+++ b/dll/win32/shell32/lang/sq-AL.rc
@@ -645,6 +645,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -882,4 +896,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/sv-SE.rc b/dll/win32/shell32/lang/sv-SE.rc
index 9484e95687..1ffa90923f 100644
--- a/dll/win32/shell32/lang/sv-SE.rc
+++ b/dll/win32/shell32/lang/sv-SE.rc
@@ -641,6 +641,20 @@ system eller påverka funktionaliteten.\n\n\
     PUSHBUTTON "Nej", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/tr-TR.rc b/dll/win32/shell32/lang/tr-TR.rc
index eceecef021..8bfc5be38f 100644
--- a/dll/win32/shell32/lang/tr-TR.rc
+++ b/dll/win32/shell32/lang/tr-TR.rc
@@ -643,6 +643,20 @@ Bu kütüğü açmak istediğinizden emin misiniz?", IDC_STATIC, 35,
5, 230, 60
     PUSHBUTTON "Hayır", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -880,4 +894,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Bilgisayarım'da Denetim
Masası'nı göster"
     IDS_ADVANCED_SHOW_COMP_COLOR "Şifrelenmiş veyâ sıkıştırılmış NTFS kütüklerini
renkli göster"
     IDS_ADVANCED_SHOW_INFO_TIP "Dizin ve masaüstü ögeleri için açılan tanım
göster"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/uk-UA.rc b/dll/win32/shell32/lang/uk-UA.rc
index 01763d8758..e821dde925 100644
--- a/dll/win32/shell32/lang/uk-UA.rc
+++ b/dll/win32/shell32/lang/uk-UA.rc
@@ -641,6 +641,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -878,4 +892,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/zh-CN.rc b/dll/win32/shell32/lang/zh-CN.rc
index 7671975ae5..e51e1b01e2 100644
--- a/dll/win32/shell32/lang/zh-CN.rc
+++ b/dll/win32/shell32/lang/zh-CN.rc
@@ -649,6 +649,20 @@ BEGIN
     PUSHBUTTON "否", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 9, "宋体"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -888,4 +902,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "在我的电脑中显示控制面板"
     IDS_ADVANCED_SHOW_COMP_COLOR "用彩色显示加密或压缩的 NTFS 文件"
     IDS_ADVANCED_SHOW_INFO_TIP "鼠标指向文件夹和桌面项时显示提示信息"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/lang/zh-TW.rc b/dll/win32/shell32/lang/zh-TW.rc
index b0ee067e9d..e0bb30c924 100644
--- a/dll/win32/shell32/lang/zh-TW.rc
+++ b/dll/win32/shell32/lang/zh-TW.rc
@@ -649,6 +649,20 @@ Are you sure you want to open this file?", IDC_STATIC, 35, 5,
230, 60
     PUSHBUTTON "No", IDNO, 180, 55, 50, 14
 END
+IDD_NEWEXTENSION DIALOGEX 0, 0, 260, 75
+CAPTION "Create New Extension"
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 9, "新細明體"
+BEGIN
+    LTEXT "&File Extension:", -1, 10, 10, 85, 14
+    EDITTEXT IDC_NEWEXT_EDIT, 105, 8, 60, 14
+    PUSHBUTTON "<< Ad&vanced", IDC_NEWEXT_ADVANCED, 185, 8, 65, 15
+    LTEXT "&Associated File Type:", IDC_NEWEXT_ASSOC, 10, 34, 85, 14
+    COMBOBOX IDC_NEWEXT_COMBOBOX, 105, 32, 145, 120, CBS_AUTOHSCROLL | CBS_DROPDOWNLIST |
WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    DEFPUSHBUTTON "OK", IDOK, 125, 55, 60, 14
+    PUSHBUTTON "Cancel", IDCANCEL, 190, 55, 60, 14
+END
+
 STRINGTABLE
 BEGIN
     /* columns in the shellview */
@@ -886,4 +900,11 @@ BEGIN
     IDS_ADVANCED_CONTROL_PANEL_IN_MY_COMPUTER "Show Control Panel in My
Computer"
     IDS_ADVANCED_SHOW_COMP_COLOR "Show encrypted or compressed NTFS files in
color"
     IDS_ADVANCED_SHOW_INFO_TIP "Show pop-up description for folder and desktop
items"
+
+    IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
+    IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
+    IDS_NEWEXT_NEW "<New>"
+    IDS_NEWEXT_SPECIFY_EXT "You must specify an extension."
+    IDS_NEWEXT_ALREADY_ASSOC "Extension %s is already associated with File Type %s.
Do you want to un-associate %s with %s and create a new File Type for it?"
+    IDS_NEWEXT_EXT_IN_USE "Extension is in use"
 END
diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h
index 7bbd3b262f..decbc120fc 100644
--- a/dll/win32/shell32/shresdef.h
+++ b/dll/win32/shell32/shresdef.h
@@ -259,6 +259,13 @@
 #define IDS_ADVANCED_SHOW_COMP_COLOR                30512
 #define IDS_ADVANCED_SHOW_INFO_TIP                  30502
+#define IDS_NEWEXT_ADVANCED_LEFT                    30515
+#define IDS_NEWEXT_ADVANCED_RIGHT                   30516
+#define IDS_NEWEXT_NEW                              30518
+#define IDS_NEWEXT_SPECIFY_EXT                      30519
+#define IDS_NEWEXT_ALREADY_ASSOC                    30520
+#define IDS_NEWEXT_EXT_IN_USE                       30521
+
 /* Dialogs */
 /* Run dialog */
@@ -348,12 +355,19 @@
 #define IDC_FILETYPES_DESCRIPTION           14007
 #define IDC_FILETYPES_ADVANCED              14008
+/* Control IDs for IDD_NEWEXTENSION dialog */
+#define IDC_NEWEXT_EDIT                     14001
+#define IDC_NEWEXT_ADVANCED                 14002
+#define IDC_NEWEXT_COMBOBOX                 14003
+#define IDC_NEWEXT_ASSOC                    14004
+
 /* Other dialogs */
 #define IDD_RUN_AS       23
 #define IDD_OPEN_WITH    24
 #define IDD_FORMAT_DRIVE 25
 #define IDD_CHECK_DISK   26
 #define IDD_NOOPEN       27
+#define IDD_NEWEXTENSION      28
 /* Not used dialogs */
 #define IDD_SHUTDOWN             29