diff --git a/base/applications/rapps/CMakeLists.txt b/base/applications/rapps/CMakeLists.txt index 82ade46cc7a..cdbb6f97dcf 100644 --- a/base/applications/rapps/CMakeLists.txt +++ b/base/applications/rapps/CMakeLists.txt @@ -35,7 +35,7 @@ list(APPEND SOURCE add_definitions( -DUSE_CERT_PINNING -D_ATL_NO_EXCEPTIONS) - + file(GLOB_RECURSE rapps_rc_deps res/*.*) add_rc_deps(rapps.rc ${rapps_rc_deps}) add_executable(rapps ${SOURCE} rapps.rc) diff --git a/base/applications/rapps/aboutdlg.cpp b/base/applications/rapps/aboutdlg.cpp index 4e57924bebc..0758009b943 100644 --- a/base/applications/rapps/aboutdlg.cpp +++ b/base/applications/rapps/aboutdlg.cpp @@ -10,7 +10,8 @@ static INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { - if (Msg == WM_COMMAND && LOWORD(wParam) == IDOK) + if ((Msg == WM_COMMAND) && + (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)) { return EndDialog(hDlg, LOWORD(wParam)); } diff --git a/base/applications/rapps/available.cpp b/base/applications/rapps/available.cpp index 6fa51ad8201..04e5005e5a3 100644 --- a/base/applications/rapps/available.cpp +++ b/base/applications/rapps/available.cpp @@ -19,12 +19,9 @@ // CAvailableApplicationInfo CAvailableApplicationInfo::CAvailableApplicationInfo(const ATL::CStringW& sFileNameParam) - : m_IsInstalled(FALSE), m_HasLanguageInfo(FALSE), m_HasInstalledVersion(FALSE), m_Parser(sFileNameParam) + : m_IsSelected(FALSE), m_LicenseType(LICENSE_NONE), m_sFileName(sFileNameParam), + m_IsInstalled(FALSE), m_HasLanguageInfo(FALSE), m_HasInstalledVersion(FALSE) { - m_LicenseType = LICENSE_NONE; - - m_sFileName = sFileNameParam; - RetrieveGeneralInfo(); } @@ -39,11 +36,14 @@ VOID CAvailableApplicationInfo::RefreshAppInfo() // Lazily load general info from the file VOID CAvailableApplicationInfo::RetrieveGeneralInfo() { - m_Category = m_Parser.GetInt(L"Category"); + m_Parser = new CConfigParser(m_sFileName); + + m_Category = m_Parser->GetInt(L"Category"); if (!GetString(L"Name", m_szName) || !GetString(L"URLDownload", m_szUrlDownload)) { + delete m_Parser; return; } @@ -64,6 +64,8 @@ VOID CAvailableApplicationInfo::RetrieveGeneralInfo() { RetrieveInstalledVersion(); } + + delete m_Parser; } VOID CAvailableApplicationInfo::RetrieveInstalledStatus() @@ -87,7 +89,7 @@ VOID CAvailableApplicationInfo::RetrieveLanguages() ATL::CStringW szBuffer; // TODO: Get multiline parameter - if (!m_Parser.GetString(L"Languages", szBuffer)) + if (!m_Parser->GetString(L"Languages", szBuffer)) { m_HasLanguageInfo = FALSE; return; @@ -126,7 +128,7 @@ VOID CAvailableApplicationInfo::RetrieveLanguages() VOID CAvailableApplicationInfo::RetrieveLicenseType() { - INT IntBuffer = m_Parser.GetInt(L"LicenseType"); + INT IntBuffer = m_Parser->GetInt(L"LicenseType"); if (IsLicenseType(IntBuffer)) { @@ -195,46 +197,33 @@ VOID CAvailableApplicationInfo::SetLastWriteTime(FILETIME* ftTime) inline BOOL CAvailableApplicationInfo::GetString(LPCWSTR lpKeyName, ATL::CStringW& ReturnedString) { - if (!m_Parser.GetString(lpKeyName, ReturnedString)) + if (!m_Parser->GetString(lpKeyName, ReturnedString)) { ReturnedString.Empty(); return FALSE; } return TRUE; } -// CAvailableApplicationInfo +// CAvailableApplicationInfo + +// AvailableStrings +AvailableStrings::AvailableStrings() +{ + //FIXME: maybe provide a fallback? + if (GetStorageDirectory(szPath)) + { + szAppsPath = szPath + L"\\rapps\\"; + szCabPath = szPath + L"\\rappmgr.cab"; + szSearchPath = szAppsPath + L"*.txt"; + } +} +// AvailableStrings // CAvailableApps -ATL::CStringW CAvailableApps::m_szPath; -ATL::CStringW CAvailableApps::m_szCabPath; -ATL::CStringW CAvailableApps::m_szAppsPath; -ATL::CStringW CAvailableApps::m_szSearchPath; - -BOOL CAvailableApps::InitializeStaticStrings() -{ - - if (!m_szPath.IsEmpty()) - { - // strings are filled - return TRUE; - } - - //FIXME: maybe provide a fallback? - if (GetStorageDirectory(m_szPath)) - { - m_szAppsPath = m_szPath + L"\\rapps\\"; - m_szCabPath = m_szPath + L"\\rappmgr.cab"; - m_szSearchPath = m_szAppsPath + L"*.txt"; - return TRUE; - } - - return FALSE; -} +AvailableStrings CAvailableApps::m_Strings; CAvailableApps::CAvailableApps() { - //set all paths - InitializeStaticStrings(); } VOID CAvailableApps::FreeCachedEntries() @@ -256,26 +245,21 @@ VOID CAvailableApps::DeleteCurrentAppsDB() HANDLE hFind = INVALID_HANDLE_VALUE; WIN32_FIND_DATAW FindFileData; - if (!InitializeStaticStrings()) - { - return; - } - - hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData); + hFind = FindFirstFileW(m_Strings.szSearchPath.GetString(), &FindFileData); if (hFind != INVALID_HANDLE_VALUE) { ATL::CStringW szTmp; do { - szTmp = m_szAppsPath + FindFileData.cFileName; + szTmp = m_Strings.szAppsPath + FindFileData.cFileName; DeleteFileW(szTmp.GetString()); } while (FindNextFileW(hFind, &FindFileData) != 0); FindClose(hFind); } - RemoveDirectoryW(m_szAppsPath); - RemoveDirectoryW(m_szPath); + RemoveDirectoryW(m_Strings.szAppsPath); + RemoveDirectoryW(m_Strings.szPath); } BOOL CAvailableApps::UpdateAppsDB() @@ -283,18 +267,13 @@ BOOL CAvailableApps::UpdateAppsDB() HANDLE hFind = INVALID_HANDLE_VALUE; WIN32_FIND_DATAW FindFileData; - if (!InitializeStaticStrings()) - { - return FALSE; - } - - if (!CreateDirectoryW(m_szPath.GetString(), NULL) && GetLastError() != ERROR_ALREADY_EXISTS) + if (!CreateDirectoryW(m_Strings.szPath, NULL) && GetLastError() != ERROR_ALREADY_EXISTS) { return FALSE; } //if there are some files in the db folder - we're good - hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData); + hFind = FindFirstFileW(m_Strings.szSearchPath, &FindFileData); if (hFind != INVALID_HANDLE_VALUE) { FindClose(hFind); @@ -303,12 +282,12 @@ BOOL CAvailableApps::UpdateAppsDB() CDownloadManager::DownloadApplicationsDB(APPLICATION_DATABASE_URL); - if (!ExtractFilesFromCab(m_szCabPath, m_szAppsPath)) + if (!ExtractFilesFromCab(m_Strings.szCabPath, m_Strings.szAppsPath)) { return FALSE; } - DeleteFileW(m_szCabPath.GetString()); + DeleteFileW(m_Strings.szCabPath); return TRUE; } @@ -325,7 +304,7 @@ BOOL CAvailableApps::Enum(INT EnumType, AVAILENUMPROC lpEnumProc) HANDLE hFind = INVALID_HANDLE_VALUE; WIN32_FIND_DATAW FindFileData; - hFind = FindFirstFileW(m_szSearchPath.GetString(), &FindFileData); + hFind = FindFirstFileW(m_Strings.szSearchPath.GetString(), &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { @@ -373,17 +352,15 @@ BOOL CAvailableApps::Enum(INT EnumType, AVAILENUMPROC lpEnumProc) m_InfoList.AddTail(Info); skip_if_cached: - if (Info->m_Category == FALSE) - continue; - - if (EnumType != Info->m_Category && EnumType != ENUM_ALL_AVAILABLE) - continue; - - Info->RefreshAppInfo(); - - if (lpEnumProc) - lpEnumProc(static_cast(Info), m_szAppsPath.GetString()); + if (EnumType == Info->m_Category + || EnumType == ENUM_ALL_AVAILABLE + || (EnumType == ENUM_CAT_SELECTED && Info->m_IsSelected)) + { + Info->RefreshAppInfo(); + if (lpEnumProc) + lpEnumProc(Info, m_Strings.szAppsPath.GetString()); + } } while (FindNextFileW(hFind, &FindFileData) != 0); FindClose(hFind); @@ -411,15 +388,32 @@ CAvailableApplicationInfo* CAvailableApps::FindInfo(const ATL::CStringW& szAppNa return NULL; } -ATL::CSimpleArray CAvailableApps::FindInfoList(const ATL::CSimpleArray &arrAppsNames) const +ATL::CSimpleArray CAvailableApps::FindInfoList(const ATL::CSimpleArray &arrAppsNames) const { - ATL::CSimpleArray result; + ATL::CSimpleArray result; for (INT i = 0; i < arrAppsNames.GetSize(); ++i) { CAvailableApplicationInfo* Info = FindInfo(arrAppsNames[i]); if (Info) { - result.Add(Info); + result.Add(*Info); + } + } + return result; +} + +ATL::CSimpleArray CAvailableApps::GetSelected() const +{ + ATL::CSimpleArray result; + POSITION CurrentListPosition = m_InfoList.GetHeadPosition(); + CAvailableApplicationInfo* Info; + + while (CurrentListPosition != NULL) + { + Info = m_InfoList.GetNext(CurrentListPosition); + if (Info->m_IsSelected) + { + result.Add(*Info); } } return result; @@ -427,31 +421,16 @@ ATL::CSimpleArray CAvailableApps::FindInfoList(const const ATL::CStringW& CAvailableApps::GetFolderPath() const { - return m_szPath; + return m_Strings.szPath; } const ATL::CStringW& CAvailableApps::GetAppPath() const { - return m_szAppsPath; + return m_Strings.szAppsPath; } const ATL::CStringW& CAvailableApps::GetCabPath() const { - return m_szCabPath; -} - -LPCWSTR CAvailableApps::GetFolderPathString() const -{ - return m_szPath.GetString(); -} - -LPCWSTR CAvailableApps::GetAppPathString() const -{ - return m_szPath.GetString(); -} - -LPCWSTR CAvailableApps::GetCabPathString() const -{ - return m_szPath.GetString(); + return m_Strings.szCabPath; } // CAvailableApps diff --git a/base/applications/rapps/gui.cpp b/base/applications/rapps/gui.cpp index 368836d7c6b..ed2c3b82649 100644 --- a/base/applications/rapps/gui.cpp +++ b/base/applications/rapps/gui.cpp @@ -145,7 +145,6 @@ class CAvailableAppView szLoadedAInfoText.LoadStringW(IDS_AINFO_LANGUAGES); - //TODO: replace those hardcoded strings if (Info->HasNativeLanguage()) { szLoadedTextAvailability.LoadStringW(IDS_LANGUAGE_AVAILABLE_TRANSLATION); @@ -389,14 +388,17 @@ class CAppsListView : }; BOOL bHasAllChecked; - BOOL bAscending; + BOOL bIsAscending; BOOL bHasCheckboxes; + INT nLastHeaderID; + public: CAppsListView() : bHasAllChecked(FALSE), - bAscending(TRUE), - bHasCheckboxes(FALSE) + bIsAscending(TRUE), + bHasCheckboxes(FALSE), + nLastHeaderID(-1) { } @@ -416,11 +418,40 @@ public: VOID ColumnClick(LPNMLISTVIEW pnmv) { - SortContext ctx = {this, pnmv->iSubItem}; + HWND hHeader; + HDITEMW hColumn; + INT nHeaderID = pnmv->iSubItem; + if ((GetWindowLongPtr(GWL_STYLE) & ~LVS_NOSORTHEADER) == 0) + return; + + hHeader = (HWND) SendMessage(LVM_GETHEADER, 0, 0); + ZeroMemory(&hColumn, sizeof(hColumn)); + + /* If the sorting column changed, remove the sorting style from the old column */ + if ((nLastHeaderID != -1) && (nLastHeaderID != nHeaderID)) + { + hColumn.mask = HDI_FORMAT; + Header_GetItem(hHeader, nLastHeaderID, &hColumn); + hColumn.fmt &= ~(HDF_SORTUP | HDF_SORTDOWN); + Header_SetItem(hHeader, nLastHeaderID, &hColumn); + } + + /* Set the sorting style to the new column */ + hColumn.mask = HDI_FORMAT; + Header_GetItem(hHeader, nHeaderID, &hColumn); + + hColumn.fmt &= (bIsAscending ? ~HDF_SORTDOWN : ~HDF_SORTUP); + hColumn.fmt |= (bIsAscending ? HDF_SORTUP : HDF_SORTDOWN); + Header_SetItem(hHeader, nHeaderID, &hColumn); + + /* Sort the list, using the current values of nHeaderID and bIsAscending */ + SortContext ctx = {this, nHeaderID}; SortItems(s_CompareFunc, &ctx); - bAscending = !bAscending; + /* Save new values */ + nLastHeaderID = nHeaderID; + bIsAscending = !bIsAscending; } PVOID GetLParam(INT Index) @@ -508,12 +539,7 @@ public: GetItemText(Index, iSubItem, Item2.GetBuffer(MAX_STR_LEN), MAX_STR_LEN); Item2.ReleaseBuffer(); - if (bAscending) - return Item2 == Item1; - else - return Item1 == Item2; - - return 0; + return bIsAscending ? Item1.Compare(Item2) : Item2.Compare(Item1); } HWND Create(HWND hwndParent) @@ -542,6 +568,30 @@ public: if (bHasCheckboxes) { SetItemState(item, INDEXTOSTATEIMAGEMASK((fCheck) ? 2 : 1), LVIS_STATEIMAGEMASK); + SetSelected(item, fCheck); + } + } + + VOID SetSelected(INT item, BOOL value) + { + if (item < 0) + { + for (INT i = 0; i >= 0; i = GetNextItem(i, LVNI_ALL)) + { + CAvailableApplicationInfo* pAppInfo = (CAvailableApplicationInfo*) GetItemData(i); + if (pAppInfo) + { + pAppInfo->m_IsSelected = value; + } + } + } + else + { + CAvailableApplicationInfo* pAppInfo = (CAvailableApplicationInfo*) GetItemData(item); + if (pAppInfo) + { + pAppInfo->m_IsSelected = value; + } } } @@ -554,20 +604,20 @@ public: } } - ATL::CSimpleArray GetCheckedItems() + ATL::CSimpleArray GetCheckedItems() { if (!bHasCheckboxes) { - return ATL::CSimpleArray(); + return ATL::CSimpleArray(); } - ATL::CSimpleArray list; + ATL::CSimpleArray list; for (INT i = 0; i >= 0; i = GetNextItem(i, LVNI_ALL)) { if (GetCheckState(i) != FALSE) { CAvailableApplicationInfo* pAppInfo = (CAvailableApplicationInfo*) GetItemData(i); - list.Add(pAppInfo); + list.Add(*pAppInfo); } } return list; @@ -645,7 +695,7 @@ public: const INT m_Width; const INT m_Height; - CSearchBar() : m_Width(200), m_Height(22) + CSearchBar() : m_Width(200), m_Height(22) { } @@ -729,33 +779,35 @@ private: VOID InitCategoriesList() { - HTREEITEM hRootItem1, hRootItem2; + HTREEITEM hRootItemInstalled, hRootItemAvailable; - hRootItem1 = AddCategory(TVI_ROOT, IDS_INSTALLED, IDI_CATEGORY); - AddCategory(hRootItem1, IDS_APPLICATIONS, IDI_APPS); - AddCategory(hRootItem1, IDS_UPDATES, IDI_APPUPD); + hRootItemInstalled = AddCategory(TVI_ROOT, IDS_INSTALLED, IDI_CATEGORY); + AddCategory(hRootItemInstalled, IDS_APPLICATIONS, IDI_APPS); + AddCategory(hRootItemInstalled, IDS_UPDATES, IDI_APPUPD); - hRootItem2 = AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY); - AddCategory(hRootItem2, IDS_CAT_AUDIO, IDI_CAT_AUDIO); - AddCategory(hRootItem2, IDS_CAT_VIDEO, IDI_CAT_VIDEO); - AddCategory(hRootItem2, IDS_CAT_GRAPHICS, IDI_CAT_GRAPHICS); - AddCategory(hRootItem2, IDS_CAT_GAMES, IDI_CAT_GAMES); - AddCategory(hRootItem2, IDS_CAT_INTERNET, IDI_CAT_INTERNET); - AddCategory(hRootItem2, IDS_CAT_OFFICE, IDI_CAT_OFFICE); - AddCategory(hRootItem2, IDS_CAT_DEVEL, IDI_CAT_DEVEL); - AddCategory(hRootItem2, IDS_CAT_EDU, IDI_CAT_EDU); - AddCategory(hRootItem2, IDS_CAT_ENGINEER, IDI_CAT_ENGINEER); - AddCategory(hRootItem2, IDS_CAT_FINANCE, IDI_CAT_FINANCE); - AddCategory(hRootItem2, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE); - AddCategory(hRootItem2, IDS_CAT_TOOLS, IDI_CAT_TOOLS); - AddCategory(hRootItem2, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS); - AddCategory(hRootItem2, IDS_CAT_LIBS, IDI_CAT_LIBS); - AddCategory(hRootItem2, IDS_CAT_OTHER, IDI_CAT_OTHER); + AddCategory(TVI_ROOT, IDS_SELECTEDFORINST, IDI_SELECTEDFORINST); + + hRootItemAvailable = AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY); + AddCategory(hRootItemAvailable, IDS_CAT_AUDIO, IDI_CAT_AUDIO); + AddCategory(hRootItemAvailable, IDS_CAT_VIDEO, IDI_CAT_VIDEO); + AddCategory(hRootItemAvailable, IDS_CAT_GRAPHICS, IDI_CAT_GRAPHICS); + AddCategory(hRootItemAvailable, IDS_CAT_GAMES, IDI_CAT_GAMES); + AddCategory(hRootItemAvailable, IDS_CAT_INTERNET, IDI_CAT_INTERNET); + AddCategory(hRootItemAvailable, IDS_CAT_OFFICE, IDI_CAT_OFFICE); + AddCategory(hRootItemAvailable, IDS_CAT_DEVEL, IDI_CAT_DEVEL); + AddCategory(hRootItemAvailable, IDS_CAT_EDU, IDI_CAT_EDU); + AddCategory(hRootItemAvailable, IDS_CAT_ENGINEER, IDI_CAT_ENGINEER); + AddCategory(hRootItemAvailable, IDS_CAT_FINANCE, IDI_CAT_FINANCE); + AddCategory(hRootItemAvailable, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE); + AddCategory(hRootItemAvailable, IDS_CAT_TOOLS, IDI_CAT_TOOLS); + AddCategory(hRootItemAvailable, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS); + AddCategory(hRootItemAvailable, IDS_CAT_LIBS, IDI_CAT_LIBS); + AddCategory(hRootItemAvailable, IDS_CAT_OTHER, IDI_CAT_OTHER); m_TreeView->SetImageList(); - m_TreeView->Expand(hRootItem1, TVE_EXPAND); - m_TreeView->Expand(hRootItem2, TVE_EXPAND); - m_TreeView->SelectItem(hRootItem1); + m_TreeView->Expand(hRootItemInstalled, TVE_EXPAND); + m_TreeView->Expand(hRootItemAvailable, TVE_EXPAND); + m_TreeView->SelectItem(hRootItemAvailable); } BOOL CreateStatusBar() @@ -914,6 +966,8 @@ private: VOID OnSize(HWND hwnd, WPARAM wParam, LPARAM lParam) { + if (wParam == SIZE_MINIMIZED) + return; /* Size status bar */ m_StatusBar->SendMessage(WM_SIZE, 0, 0); @@ -1081,6 +1135,10 @@ private: case IDS_CAT_VIDEO: UpdateApplicationsList(ENUM_CAT_VIDEO); break; + + case IDS_SELECTEDFORINST: + UpdateApplicationsList(ENUM_CAT_SELECTED); + break; } } @@ -1153,7 +1211,7 @@ private: /* Check if the item is checked */ if ((pnic->uNewState & LVIS_STATEIMAGEMASK) && !bUpdating) { - BOOL checked = ListView_GetCheckState(pnic->hdr.hwndFrom, pnic->iItem); + BOOL checked = m_ListView->GetCheckState(pnic->iItem); /* FIXME: HAX! - preventing decremention below zero as a safeguard for ReactOS In ReactOS this action is triggered whenever user changes *selection*, but should be only when *checkbox* state toggled @@ -1165,6 +1223,10 @@ private: : ((nSelectedApps > 0) ? -1 : 0); + + /* Update item's selection status */ + m_ListView->SetSelected(pnic->iItem, checked); + UpdateStatusBarText(); } } @@ -1399,7 +1461,7 @@ private: { if (nSelectedApps > 0) { - CDownloadManager::DownloadListOfApplications(m_ListView->GetCheckedItems()); + CDownloadManager::DownloadListOfApplications(m_AvailableApps.GetSelected()); UpdateApplicationsList(-1); } else if (CDownloadManager::DownloadApplication(m_ListView->GetSelectedData())) @@ -1541,6 +1603,7 @@ private: ListView_SetItemText(hListView, Index, 1, const_cast(Info->m_szVersion.GetString())); ListView_SetItemText(hListView, Index, 2, const_cast(Info->m_szDesc.GetString())); + ListView_SetCheckState(hListView, Index, Info->m_IsSelected); return TRUE; } @@ -1565,7 +1628,6 @@ private: bUpdating = TRUE; m_ListView->SetRedraw(FALSE); - nSelectedApps = 0; if (EnumType < 0) { EnumType = SelectedEnumType; @@ -1580,7 +1642,7 @@ private: m_ListView->DeleteAllItems(); - // Create new ImageList + // Create new ImageList hImageListView = ImageList_Create(LISTVIEW_ICON_SIZE, LISTVIEW_ICON_SIZE, GetSystemColorDepth() | ILC_MASK, diff --git a/base/applications/rapps/include/available.h b/base/applications/rapps/include/available.h index aa1aebda378..782f960be89 100644 --- a/base/applications/rapps/include/available.h +++ b/base/applications/rapps/include/available.h @@ -1,7 +1,7 @@ #pragma once #include -#include +#include #include #include @@ -25,6 +25,7 @@ inline BOOL IsLicenseType(INT x) struct CAvailableApplicationInfo { INT m_Category; + BOOL m_IsSelected; LicenseType m_LicenseType; ATL::CStringW m_szName; ATL::CStringW m_szRegName; @@ -45,6 +46,7 @@ struct CAvailableApplicationInfo ATL::CStringW m_szSHA1; ATL::CStringW m_szInstalledVersion; + // Create an object from file CAvailableApplicationInfo(const ATL::CStringW& sFileNameParam); // Load all info from the file @@ -63,7 +65,7 @@ private: BOOL m_IsInstalled; BOOL m_HasLanguageInfo; BOOL m_HasInstalledVersion; - CConfigParser m_Parser; + CConfigParser* m_Parser; inline BOOL GetString(LPCWSTR lpKeyName, ATL::CStringW& ReturnedString); @@ -78,15 +80,19 @@ private: typedef BOOL(CALLBACK *AVAILENUMPROC)(CAvailableApplicationInfo *Info, LPCWSTR szFolderPath); +struct AvailableStrings +{ + ATL::CStringW szPath; + ATL::CStringW szCabPath; + ATL::CStringW szAppsPath; + ATL::CStringW szSearchPath; + + AvailableStrings(); +}; + class CAvailableApps { - static ATL::CStringW m_szPath; - static ATL::CStringW m_szCabPath; - static ATL::CStringW m_szAppsPath; - static ATL::CStringW m_szSearchPath; - - static BOOL InitializeStaticStrings(); - + static AvailableStrings m_Strings; ATL::CAtlList m_InfoList; public: @@ -100,12 +106,10 @@ public: BOOL Enum(INT EnumType, AVAILENUMPROC lpEnumProc); CAvailableApplicationInfo* FindInfo(const ATL::CStringW& szAppName) const; - ATL::CSimpleArray FindInfoList(const ATL::CSimpleArray &arrAppsNames) const; + ATL::CSimpleArray FindInfoList(const ATL::CSimpleArray &arrAppsNames) const; + ATL::CSimpleArray GetSelected() const; const ATL::CStringW& GetFolderPath() const; const ATL::CStringW& GetAppPath() const; const ATL::CStringW& GetCabPath() const; - LPCWSTR GetFolderPathString() const; - LPCWSTR GetAppPathString() const; - LPCWSTR GetCabPathString() const; }; diff --git a/base/applications/rapps/include/crichedit.h b/base/applications/rapps/include/crichedit.h index ca6eaee2558..3b34fde3f46 100644 --- a/base/applications/rapps/include/crichedit.h +++ b/base/applications/rapps/include/crichedit.h @@ -22,7 +22,7 @@ class CRichEdit : if ((dwEffects == CFM_LINK) && !PathIsURLW(lpszText)) { // if text is not an URL, no styling is used - SetRangeFormatting(Len, Len + InsertedTextLen, 0); + SetRangeFormatting(Len, Len + InsertedTextLen, 0); } else { diff --git a/base/applications/rapps/include/defines.h b/base/applications/rapps/include/defines.h index 7934e96b23a..921391c5c79 100644 --- a/base/applications/rapps/include/defines.h +++ b/base/applications/rapps/include/defines.h @@ -23,13 +23,13 @@ #include #include #include -#include +#include #include #include "resource.h" #include "winmain.h" -#define APPLICATION_DATABASE_URL L"https://svn.reactos.org/packages/rappmgr.cab" +#define APPLICATION_DATABASE_URL L"https://rapps.reactos.org/rappmgr.cab" #define MAX_STR_LEN 256 enum AppsCategories @@ -50,13 +50,14 @@ enum AppsCategories ENUM_CAT_DRIVERS, ENUM_CAT_LIBS, ENUM_CAT_OTHER, + ENUM_CAT_SELECTED, ENUM_ALL_INSTALLED, ENUM_INSTALLED_APPLICATIONS = 31, ENUM_UPDATES = 32, ENUM_INSTALLED_MIN = ENUM_ALL_INSTALLED, ENUM_INSTALLED_MAX = ENUM_UPDATES, ENUM_AVAILABLE_MIN = ENUM_ALL_AVAILABLE, - ENUM_AVAILABLE_MAX = ENUM_CAT_OTHER, + ENUM_AVAILABLE_MAX = ENUM_CAT_SELECTED, }; inline BOOL IsAvailableEnum(INT x) diff --git a/base/applications/rapps/include/dialogs.h b/base/applications/rapps/include/dialogs.h index 51efdc8b7fc..69e07640869 100644 --- a/base/applications/rapps/include/dialogs.h +++ b/base/applications/rapps/include/dialogs.h @@ -15,6 +15,7 @@ class CDownloadManager static CDowloadingAppsListView DownloadsListView; static VOID Download(const DownloadInfo& DLInfo, BOOL bIsModal = FALSE); + static VOID SetProgressMarquee(HWND Item, BOOL Enable); public: static INT_PTR CALLBACK DownloadDlgProc(HWND Dlg, UINT uMsg, WPARAM wParam, LPARAM lParam); @@ -26,7 +27,7 @@ public: DWORD_PTR dwRefData); static DWORD WINAPI ThreadFunc(LPVOID Context); - static BOOL DownloadListOfApplications(const ATL::CSimpleArray& AppsList, BOOL bIsModal = FALSE); + static BOOL DownloadListOfApplications(const ATL::CSimpleArray& AppsList, BOOL bIsModal = FALSE); static BOOL DownloadApplication(CAvailableApplicationInfo* pAppInfo, BOOL bIsModal = FALSE); static VOID DownloadApplicationsDB(LPCWSTR lpUrl); static VOID LaunchDownloadDialog(BOOL); diff --git a/base/applications/rapps/include/resource.h b/base/applications/rapps/include/resource.h index 9dd6764a477..9f4c4b15dec 100644 --- a/base/applications/rapps/include/resource.h +++ b/base/applications/rapps/include/resource.h @@ -13,6 +13,7 @@ #define IDI_CATEGORY 19 #define IDI_UPDATE_DB 20 #define IDI_CHECK_ALL 21 +#define IDI_SELECTEDFORINST 22 /* Icons for categories */ #define IDI_CAT_AUDIO 50 @@ -100,7 +101,7 @@ #define IDS_UNABLE_TO_REMOVE 118 #define IDS_UNABLE_TO_DOWNLOAD 119 #define IDS_UNABLE_TO_DOWNLOAD2 120 -#define IDS_CERT_DOES_NOT_MATCH 121 +#define IDS_UNABLE_TO_QUERY_CERT 121 #define IDS_INTEG_CHECK_TITLE 122 #define IDS_INTEG_CHECK_FAIL 123 #define IDS_INTERRUPTED_DOWNLOAD 124 @@ -108,6 +109,8 @@ #define IDS_SELECT_ALL 126 #define IDS_INSTALL_SELECTED 127 #define IDS_UNABLE_TO_INSTALL 128 +#define IDS_SELECTEDFORINST 129 +#define IDS_MISMATCH_CERT_INFO 130 /* Tooltips */ #define IDS_TOOLTIP_INSTALL 200 @@ -171,7 +174,7 @@ #define IDS_CAT_VIDEO 714 /* App installation status */ -#define IDS_STATUS_INSTALLED 800 +#define IDS_STATUS_INSTALLED 800 #define IDS_STATUS_NOTINSTALLED 801 #define IDS_STATUS_DOWNLOADED 802 #define IDS_STATUS_UPDATE_AVAILABLE 803 diff --git a/base/applications/rapps/include/winmain.h b/base/applications/rapps/include/winmain.h index 50a12e84137..bee3b964927 100644 --- a/base/applications/rapps/include/winmain.h +++ b/base/applications/rapps/include/winmain.h @@ -31,5 +31,5 @@ extern SETTINGS_INFO SettingsInfo; VOID SaveSettings(HWND hwnd); VOID FillDefaultSettings(PSETTINGS_INFO pSettingsInfo); -// integrity.cpp +// integrity.cpp BOOL VerifyInteg(LPCWSTR lpSHA1Hash, LPCWSTR lpFileName); diff --git a/base/applications/rapps/integrity.cpp b/base/applications/rapps/integrity.cpp index d0fda8af90e..10e022c90d2 100644 --- a/base/applications/rapps/integrity.cpp +++ b/base/applications/rapps/integrity.cpp @@ -6,15 +6,11 @@ * COPYRIGHT: Copyright Ismael Ferreras Morezuelas (swyterzone+ros@gmail.com) * Copyright Mark Jansen */ + #include "rapps.h" #include -BOOL VerifyInteg(const ATL::CStringW &SHA1Hash, const ATL::CStringW &FileName) -{ - return VerifyInteg(SHA1Hash.GetString(), FileName.GetString()); -} - BOOL VerifyInteg(LPCWSTR lpSHA1Hash, LPCWSTR lpFileName) { BOOL ret = FALSE; diff --git a/base/applications/rapps/lang/bg-BG.rc b/base/applications/rapps/lang/bg-BG.rc index 661d9e01e5c..3fbb5f420b5 100644 --- a/base/applications/rapps/lang/bg-BG.rc +++ b/base/applications/rapps/lang/bg-BG.rc @@ -78,7 +78,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Подразбирано", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "Добре", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "Добре", IDOK, 116, 195, 60, 14 PUSHBUTTON "Отказ", IDCANCEL, 181, 195, 60, 14 END @@ -87,16 +87,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Слагане на приложение" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "Слагане от оптичен носител", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Сваляне и слагане", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "Добре", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "Добре", IDOK, 86, 78, 60, 14 PUSHBUTTON "Отказ", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Сваляне %ls..." +CAPTION "Сваляне %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -109,9 +109,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "За" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Управителят за приложожения на РеактОС\nВъзпроизводствени права (C) 2009\nДмитрий Чапъйшев (dmitry@reactos.org)", IDC_STATIC, 48, 7, 150, 39 - PUSHBUTTON "Затваряне", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Управителят за приложожения на РеактОС\nВъзпроизводствени права (C) 2009\nДмитрий Чапъйшев (dmitry@reactos.org)", IDC_STATIC, 48, 7, 150, 39 + DEFPUSHBUTTON "Затваряне", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -207,13 +207,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Премахването на данните за приложението от регистъра е невъзможно!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -248,5 +250,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/cs-CZ.rc b/base/applications/rapps/lang/cs-CZ.rc index 056f8383c41..21eef64d9ac 100644 --- a/base/applications/rapps/lang/cs-CZ.rc +++ b/base/applications/rapps/lang/cs-CZ.rc @@ -69,7 +69,7 @@ BEGIN GROUPBOX "Stahování", -1, 4, 65, 240, 51 LTEXT "Složka se staženými soubory:", -1, 16, 75, 100, 9 EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP | ES_AUTOHSCROLL - PUSHBUTTON "&Procházet...", IDC_CHOOSE, 187, 85, 50, 14 + PUSHBUTTON "&Procházet…", IDC_CHOOSE, 187, 85, 50, 14 AUTOCHECKBOX "&Smazat instalátor programu po dokončení instalace", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12 GROUPBOX "Proxy", -1, 4, 116, 240, 76 CONTROL "Systémové nastavení proxy", IDC_PROXY_DEFAULT, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 15, 130, 210, 10 @@ -79,7 +79,7 @@ BEGIN LTEXT "Nepoužívat pro", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Výchozí", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Storno", IDCANCEL, 181, 195, 60, 14 END @@ -88,16 +88,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Instalace programu" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Instalovat z média (CD nebo DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Stáhnout a instalovat", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Storno", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Stahování %ls..." +CAPTION "Stahování %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -110,9 +110,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "O programu" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Správce aplikací\nCopyright (C) 2009\nDmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Zavřít", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Správce aplikací\nCopyright (C) 2009\nDmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Zavřít", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -188,7 +188,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS Správce aplikací" - IDS_SEARCH_TEXT "Hledat..." + IDS_SEARCH_TEXT "Hledat…" IDS_INSTALL "Instalovat" IDS_UNINSTALL "Odinstalovat" IDS_MODIFY "Změnit" @@ -208,13 +208,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Nepodařilo se odstranit data programu z registru!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -249,5 +251,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/de-DE.rc b/base/applications/rapps/lang/de-DE.rc index 654f449b53c..749f3eb64ba 100644 --- a/base/applications/rapps/lang/de-DE.rc +++ b/base/applications/rapps/lang/de-DE.rc @@ -74,7 +74,7 @@ BEGIN LTEXT "Kein Proxy", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Vorgabe", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Abbrechen", IDCANCEL, 181, 195, 60, 14 END @@ -83,16 +83,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Programminstallation" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Installation von einem Datenträger (CD oder DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "Herunterla&den und installieren", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Abbrechen", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Herunterladen %ls..." +CAPTION "Download von %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -105,9 +105,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Über" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS-Anwendungsmanager\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Schließen", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS-Anwendungsmanager\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Schließen", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -152,13 +152,13 @@ END STRINGTABLE BEGIN IDS_AINFO_VERSION "\nVersion: " - IDS_AINFO_AVAILABLEVERSION "\nAvailable Version: " + IDS_AINFO_AVAILABLEVERSION "\nVerfügbare Version: " IDS_AINFO_DESCRIPTION "\nBeschreibung: " IDS_AINFO_SIZE "\nGröße: " IDS_AINFO_URLSITE "\nHomepage: " IDS_AINFO_LICENSE "\nLizenz: " IDS_AINFO_URLDOWNLOAD "\nHerunterladen: " - IDS_AINFO_LANGUAGES "\nLanguages: " + IDS_AINFO_LANGUAGES "\nSprachen: " END STRINGTABLE @@ -183,11 +183,11 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS-Anwendungsmanager" - IDS_SEARCH_TEXT "Suche..." + IDS_SEARCH_TEXT "Suche…" IDS_INSTALL "Installieren" IDS_UNINSTALL "Deinstallieren" IDS_MODIFY "Ändern" - IDS_APPS_COUNT "Anzahl der Anwendungen: %d; Selected: %d" + IDS_APPS_COUNT "Anzahl der Anwendungen: %d, ausgewählt: %d" IDS_WELCOME_TITLE "Willkommen im ReactOS-Anwendungsmanager!\n\n" IDS_WELCOME_TEXT "Wählen Sie links eine Kategorie und dann eine Anwendung um sie zu installieren oder zu deinstallieren.\nReactOS-Webseite: " IDS_WELCOME_URL "http://www.reactos.org" @@ -202,26 +202,28 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD "Paket konnte nicht geladen werden! Addresse wurde nicht gefunden!" IDS_UNABLE_TO_DOWNLOAD2 "Paket konnte nicht geladen werden! Prüfen Sie Ihre Internetverbindung!" IDS_UNABLE_TO_REMOVE "Konnte die Daten nicht aus der Registry löschen!" - IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "Überprüfung des SSL-Zertifikats fehlgeschlagen." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." - IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." - IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." - IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." - IDS_SELECT_ALL "Select/Deselect All" - IDS_INSTALL_SELECTED "Install Selected" + IDS_UNABLE_TO_INSTALL "Paket konnte nicht installiert werden!" + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Integritätsprüfung…" + IDS_INTEG_CHECK_FAIL "Das Paket hat die Integritätsprüfung nicht bestanden. Mögliche Ursachen sind Übertragungsfehler, Datenbankfehler oder Manipulation durch einen Angreifer. Sie sollten die Software nicht ausführen." + IDS_INTERRUPTED_DOWNLOAD "Übertragung unterbrochen. Prüfen Sie Ihre Internetverbindung!" + IDS_UNABLE_TO_WRITE "Schreibfehler. Prüfen Sie die Kapazität des Datenträgers!" + IDS_SELECT_ALL "Alle/Keine" + IDS_INSTALL_SELECTED "Ausgewählte Installieren" + IDS_SELECTEDFORINST "Zur Installation ausgewählt" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE BEGIN - IDS_STATUS_INSTALLED "Installed" - IDS_STATUS_NOTINSTALLED "Not installed" - IDS_STATUS_DOWNLOADED "Downloaded" - IDS_STATUS_UPDATE_AVAILABLE "Update available" - IDS_STATUS_DOWNLOADING "Downloading…" - IDS_STATUS_INSTALLING "Installing…" - IDS_STATUS_WAITING "Waiting to install…" - IDS_STATUS_FINISHED "Finished" + IDS_STATUS_INSTALLED "Installiert" + IDS_STATUS_NOTINSTALLED "Nicht installiert" + IDS_STATUS_DOWNLOADED "Heruntergeladen" + IDS_STATUS_UPDATE_AVAILABLE "Aktualisierung verfügbar" + IDS_STATUS_DOWNLOADING "Lädt herunter…" + IDS_STATUS_INSTALLING "Installiert…" + IDS_STATUS_WAITING "Installation anstehend…" + IDS_STATUS_FINISHED "Abgeschlossen" END STRINGTABLE @@ -233,16 +235,16 @@ END STRINGTABLE BEGIN - IDS_LANGUAGE_AVAILABLE_TRANSLATION "Supports your language" - IDS_LANGUAGE_NO_TRANSLATION "Supports other languages" - IDS_LANGUAGE_ENGLISH_TRANSLATION "Supports English" - IDS_LANGUAGE_SINGLE "Single language" - IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d more)" - IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d available)" + IDS_LANGUAGE_AVAILABLE_TRANSLATION "deutsch" + IDS_LANGUAGE_NO_TRANSLATION "anderssprachig" + IDS_LANGUAGE_ENGLISH_TRANSLATION "englisch" + IDS_LANGUAGE_SINGLE "einsprachig" + IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d mehr)" + IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d verfügbar)" END STRINGTABLE BEGIN - IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DISP "Anwendungsdatenbank" + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Datenbank-Aktualisierung…" END diff --git a/base/applications/rapps/lang/en-US.rc b/base/applications/rapps/lang/en-US.rc index a9e9937b327..50f2ab1e953 100644 --- a/base/applications/rapps/lang/en-US.rc +++ b/base/applications/rapps/lang/en-US.rc @@ -74,7 +74,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Cancel", IDCANCEL, 181, 195, 60, 14 END @@ -83,16 +83,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Program installation" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 220 -STYLE DS_SHELLFONT | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION | WS_VISIBLE -CAPTION "Downloading %ls..." +STYLE DS_SHELLFONT | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION | WS_VISIBLE +CAPTION "Downloading %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -105,9 +105,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "About" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Close", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Close", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -183,7 +183,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS Applications Manager" - IDS_SEARCH_TEXT "Search..." + IDS_SEARCH_TEXT "Search…" IDS_INSTALL "Install" IDS_UNINSTALL "Uninstall" IDS_MODIFY "Modify" @@ -203,13 +203,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the registry!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -244,5 +246,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/es-ES.rc b/base/applications/rapps/lang/es-ES.rc index 39f38a95a8b..1a2e5e0b7b2 100644 --- a/base/applications/rapps/lang/es-ES.rc +++ b/base/applications/rapps/lang/es-ES.rc @@ -77,7 +77,7 @@ BEGIN LTEXT "Sin proxy para:", -1, 125, 154, 50, 8, SS_RIGHT EDITTEXT IDC_NO_PROXY_FOR, 177, 153, 61, 14, ES_AUTOHSCROLL PUSHBUTTON "Por defecto", IDC_DEFAULT_SETTINGS, 8, 180, 60, 14 - PUSHBUTTON "Aceptar", IDOK, 116, 180, 60, 14 + DEFPUSHBUTTON "Aceptar", IDOK, 116, 180, 60, 14 PUSHBUTTON "Cancelar", IDCANCEL, 181, 180, 60, 14 END @@ -86,16 +86,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Instalar programas" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Instalar desde un disco (CD o DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Descargar e instalar", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "Aceptar", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "Aceptar", IDOK, 86, 78, 60, 14 PUSHBUTTON "Cancelar", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Descargando %ls..." +CAPTION "Descargando %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -108,9 +108,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Acerca de" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Administrador de aplicaciones de ReactOS\nCopyright (C) 2009\nCreado por Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Cerrar", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Administrador de aplicaciones de ReactOS\nCopyright (C) 2009\nCreado por Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Cerrar", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -186,7 +186,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "Administrador de aplicaciones de ReactOS" - IDS_SEARCH_TEXT "Buscar..." + IDS_SEARCH_TEXT "Buscar…" IDS_INSTALL "Instalar" IDS_UNINSTALL "Desinstalar" IDS_MODIFY "Modificar" @@ -206,13 +206,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "No se pudieron borrar del Registro los datos de instalación del programa." IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "Ha fallado la comprobación del certificado SSL." - IDS_INTEG_CHECK_TITLE "Verificando integridad del paquete..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verificando integridad del paquete…" IDS_INTEG_CHECK_FAIL "El paquete no ha pasado la comprobación de integridad, puede haber sido alterado o estar corrupto. No se recomienda ejecutarlo." IDS_INTERRUPTED_DOWNLOAD "Se ha interrumpido la descarga por un error de red. Comprueba la conexión a Internet." IDS_UNABLE_TO_WRITE "No se ha podido escribir en el disco duro, es posible que no quede espacio libre." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -247,5 +249,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/fr-FR.rc b/base/applications/rapps/lang/fr-FR.rc index 54103a21902..6ed35f58365 100644 --- a/base/applications/rapps/lang/fr-FR.rc +++ b/base/applications/rapps/lang/fr-FR.rc @@ -74,7 +74,7 @@ BEGIN LTEXT "Pas de proxy pour", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Par défaut", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "Accepter", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "Accepter", IDOK, 116, 195, 60, 14 PUSHBUTTON "Annuler", IDCANCEL, 181, 195, 60, 14 END @@ -83,16 +83,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Installation de programme" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Installer à partir d'un disque (CD ou DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Télécharger et installer", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "Accepter", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "Accepter", IDOK, 86, 78, 60, 14 PUSHBUTTON "Annuler", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Téléchargement %ls..." +CAPTION "Téléchargement %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -105,9 +105,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "À propos" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\npar Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Fermer", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\npar Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Fermer", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -183,7 +183,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS Applications Manager" - IDS_SEARCH_TEXT "Chercher..." + IDS_SEARCH_TEXT "Chercher…" IDS_INSTALL "Installer" IDS_UNINSTALL "Désinstaller" IDS_MODIFY "Modifier" @@ -203,13 +203,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Impossible de télécharger le paquet : vérifiez votre connexion à Internet !" IDS_UNABLE_TO_REMOVE "Impossible de supprimer du registre les données du programme !" IDS_UNABLE_TO_INSTALL "Impossible d'ouvrir l'installeur !" - IDS_CERT_DOES_NOT_MATCH "La vérification du certificat SSL a échoué." - IDS_INTEG_CHECK_TITLE "Vérification de l'intégrité du paquet..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Vérification de l'intégrité du paquet…" IDS_INTEG_CHECK_FAIL "Le contrôle d'intégrité du paquet a échoué, il se peut qu'il ait été corrompu ou altéré au cours du téléchargement. L'exécution du programme n'est pas recommandée." IDS_INTERRUPTED_DOWNLOAD "Le téléchargement a été interrompu. Vérifiez votre connexion à Internet." IDS_UNABLE_TO_WRITE "Impossible d'écrire sur le disque. Votre disque pourrait être plein." IDS_SELECT_ALL "Sélectionner/Désélectionner tout" - IDS_INSTALL_SELECTED "Installer les sélectionnés" + IDS_INSTALL_SELECTED "Installer la sélection" + IDS_SELECTEDFORINST "Sélectionnées pour installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -237,12 +239,12 @@ BEGIN IDS_LANGUAGE_NO_TRANSLATION "Supporte d'autres langues" IDS_LANGUAGE_ENGLISH_TRANSLATION "Supporte l'Anglais" IDS_LANGUAGE_SINGLE "Langue unique" - IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d more)" - IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d available)" + IDS_LANGUAGE_MORE_PLACEHOLDER " (+ %d de plus)" + IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+ %d disponibles)" END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Base de données d'applications" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Mise à jour de la base de données..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Mise à jour de la base de données…" END diff --git a/base/applications/rapps/lang/he-IL.rc b/base/applications/rapps/lang/he-IL.rc index 15bf32f29b1..6eb11e73b1d 100644 --- a/base/applications/rapps/lang/he-IL.rc +++ b/base/applications/rapps/lang/he-IL.rc @@ -20,7 +20,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "רענון\tF5", ID_REFRESH MENUITEM SEPARATOR - MENUITEM "Update Da&tabase\tCtrl+F5", ID_RESETDB + MENUITEM "עדכון מסד נתונים\tCtrl+F5", ID_RESETDB END POPUP "עזרה" BEGIN @@ -50,12 +50,13 @@ BEGIN MENUITEM SEPARATOR MENUITEM "רענן\tF5", ID_REFRESH MENUITEM SEPARATOR - MENUITEM "Update Da&tabase\tCtrl+F5", ID_RESETDB + MENUITEM "עדכון מסד נתונים\tCtrl+F5", ID_RESETDB END END IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 215 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_LAYOUTRTL CAPTION "הגדרות" FONT 8, "MS Shell Dlg" BEGIN @@ -68,33 +69,35 @@ BEGIN EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP | ES_AUTOHSCROLL PUSHBUTTON "בחר", IDC_CHOOSE, 187, 85, 50, 14 AUTOCHECKBOX "מחק את קובץ ההתקנה לאחר סיום ההתקנה", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12 - GROUPBOX "Proxy", -1, 4, 116, 240, 76 - CONTROL "System proxy settings", IDC_PROXY_DEFAULT, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 15, 130, 210, 10 - CONTROL "Direct (No proxy)", IDC_NO_PROXY, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 15, 145, 210, 10 - CONTROL "Proxy", IDC_USE_PROXY, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 15, 160, 74, 10 + GROUPBOX "שרת פרוקסי", -1, 4, 116, 240, 76 + CONTROL "הגדרות פרוקסי של המערכת", IDC_PROXY_DEFAULT, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 15, 130, 210, 10 + CONTROL "חיבור ישיר(ללא פרוקסי)", IDC_NO_PROXY, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 15, 145, 210, 10 + CONTROL "פרוקסי", IDC_USE_PROXY, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 15, 160, 74, 10 EDITTEXT IDC_PROXY_SERVER, 90, 160, 147, 12, ES_AUTOHSCROLL | WS_DISABLED - LTEXT "No proxy for", -1, 27, 175, 64, 10 + LTEXT "ללא פרוקסי עבור:", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "ברירת מחדל", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "אישור", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "אישור", IDOK, 116, 195, 60, 14 PUSHBUTTON "ביטול", IDCANCEL, 181, 195, 60, 14 END IDD_INSTALL_DIALOG DIALOGEX 0, 0, 216, 97 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_LAYOUTRTL CAPTION "התקנת תכנית" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "התקן מתוך דיסק (CD או DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "הורד והתקן", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "אישור", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "אישור", IDOK, 86, 78, 60, 14 PUSHBUTTON "ביטול", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "הורדה %ls..." +EXSTYLE WS_EX_LAYOUTRTL +CAPTION "הורדה %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -104,12 +107,13 @@ END IDD_ABOUT_DIALOG DIALOGEX 22, 16, 190, 66 STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +EXSTYLE WS_EX_LAYOUTRTL CAPTION "אודות" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "סגירה", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "סגירה", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -119,7 +123,7 @@ BEGIN IDS_TOOLTIP_MODIFY "שינוי" IDS_TOOLTIP_SETTINGS "הגדרות" IDS_TOOLTIP_REFRESH "רענון" - IDS_TOOLTIP_UPDATE_DB "Update Database" + IDS_TOOLTIP_UPDATE_DB "עדכון מסד נתונים" IDS_TOOLTIP_EXIT "יציאה" END @@ -154,13 +158,13 @@ END STRINGTABLE BEGIN IDS_AINFO_VERSION "\nגרסה: " - IDS_AINFO_AVAILABLEVERSION "\nAvailable Version: " + IDS_AINFO_AVAILABLEVERSION "\nגרסה זמינה: " IDS_AINFO_DESCRIPTION "\nתיאור: " IDS_AINFO_SIZE "\nגודל: " IDS_AINFO_URLSITE "\nדף בית: " IDS_AINFO_LICENSE "\nרישיון: " IDS_AINFO_URLDOWNLOAD "\nהורד: " - IDS_AINFO_LANGUAGES "\nLanguages: " + IDS_AINFO_LANGUAGES "\nשפות: " END STRINGTABLE @@ -185,7 +189,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "מנהל היישומים של ReactOS" - IDS_SEARCH_TEXT "חפש..." + IDS_SEARCH_TEXT "חפש…" IDS_INSTALL "התקנה" IDS_UNINSTALL "הסרה" IDS_MODIFY "שינוי" @@ -205,30 +209,32 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the registry!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE BEGIN - IDS_STATUS_INSTALLED "Installed" - IDS_STATUS_NOTINSTALLED "Not installed" - IDS_STATUS_DOWNLOADED "Downloaded" - IDS_STATUS_UPDATE_AVAILABLE "Update available" - IDS_STATUS_DOWNLOADING "Downloading…" - IDS_STATUS_INSTALLING "Installing…" - IDS_STATUS_WAITING "Waiting to install…" - IDS_STATUS_FINISHED "Finished" + IDS_STATUS_INSTALLED "מותקן" + IDS_STATUS_NOTINSTALLED "לא מותקן" + IDS_STATUS_DOWNLOADED "הורד" + IDS_STATUS_UPDATE_AVAILABLE "עדכון זמין" + IDS_STATUS_DOWNLOADING "מוריד..." + IDS_STATUS_INSTALLING "מתקין..." + IDS_STATUS_WAITING "מחכה להתקנה..." + IDS_STATUS_FINISHED "הסתיים" END STRINGTABLE BEGIN - IDS_LICENSE_OPENSOURCE "Open Source" + IDS_LICENSE_OPENSOURCE "קוד פתוח" IDS_LICENSE_FREEWARE "Freeware" IDS_LICENSE_TRIAL "Trial/Demo" END @@ -246,5 +252,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/it-IT.rc b/base/applications/rapps/lang/it-IT.rc index 8832b1938a1..69f58d715a9 100644 --- a/base/applications/rapps/lang/it-IT.rc +++ b/base/applications/rapps/lang/it-IT.rc @@ -74,7 +74,7 @@ BEGIN LTEXT "Ignora proxy per:", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Predefiniti", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Annulla", IDCANCEL, 181, 195, 60, 14 END @@ -83,16 +83,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Installazione" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Installa da un disco (CD o DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Scarica e installa", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Annulla", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Scaricamento in corso %ls..." +CAPTION "Scaricamento in corso %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -105,9 +105,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Informazioni" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Gestione applicazioni di ReactOS \nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Chiudi", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Gestione applicazioni di ReactOS \nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Chiudi", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -152,13 +152,13 @@ END STRINGTABLE BEGIN IDS_AINFO_VERSION "\nVersione: " - IDS_AINFO_AVAILABLEVERSION "\nAvailable Version: " + IDS_AINFO_AVAILABLEVERSION "\nVersione Disponibile: " IDS_AINFO_DESCRIPTION "\nDescrizione: " IDS_AINFO_SIZE "\nDimensione: " - IDS_AINFO_URLSITE "\nHome Page: " + IDS_AINFO_URLSITE "\nPagina Iniziale: " IDS_AINFO_LICENSE "\nLicenza: " IDS_AINFO_URLDOWNLOAD "\nScaricare: " - IDS_AINFO_LANGUAGES "\nLanguages: " + IDS_AINFO_LANGUAGES "\nLingue: " END STRINGTABLE @@ -183,11 +183,11 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS Gestione applicazioni" - IDS_SEARCH_TEXT "Cerca..." + IDS_SEARCH_TEXT "Cerca…" IDS_INSTALL "Installa" IDS_UNINSTALL "Rimuovi" IDS_MODIFY "Modifica" - IDS_APPS_COUNT "Numero applicazioni: %d; Selected: %d" + IDS_APPS_COUNT "Numero applicazioni: %d; Selezionate: %d" IDS_WELCOME_TITLE "Benvenuto!\n\n" IDS_WELCOME_TEXT "Scegliere una categoria a sinistra, poi scegliere una applicazione da installare o disinstallare.\nReactOS Web Site: " IDS_WELCOME_URL "http://www.reactos.org" @@ -200,28 +200,30 @@ BEGIN IDS_APP_REG_REMOVE "Sicuro di voler cancellare dal registro i dati sui programmi installati?" IDS_INFORMATION "Informazioni" IDS_UNABLE_TO_DOWNLOAD "Impossibile scaricare il pacchetto! Indirizzo non trovato!" - IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" + IDS_UNABLE_TO_DOWNLOAD2 "Impossibile scaricare il pacchetto! Controlla la tua connessione internet!" IDS_UNABLE_TO_REMOVE "Impossibile cancellare i dati dal registro!" - IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "Verifica del certificato SSL fallita." - IDS_INTEG_CHECK_TITLE "Verifica integrit pacchetto..." - IDS_INTEG_CHECK_FAIL "Il pacchetto non ha superato il controllo di integrit, potrebbe essere stato danneggiato o manomesso durante lo scaricamento. L'esecuzione del software non raccomandata." - IDS_INTERRUPTED_DOWNLOAD "Lo scaricamento stato interrotto. Verificare la connessione a Internet." + IDS_UNABLE_TO_INSTALL "Impossibile aprire l'installer!" + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifica integrità pacchetto…" + IDS_INTEG_CHECK_FAIL "Il pacchetto non ha superato il controllo di integrità, potrebbe essere stato danneggiato o manomesso durante lo scaricamento. L'esecuzione del software non è raccomandata." + IDS_INTERRUPTED_DOWNLOAD "Lo scaricamento è stato interrotto. Verificare la connessione a Internet." IDS_UNABLE_TO_WRITE "Impossibile scrivere su disco: lo spazio libero potrebbe essere esaurito." - IDS_SELECT_ALL "Select/Deselect All" - IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECT_ALL "Seleziona/Deseleziona Tutte" + IDS_INSTALL_SELECTED "Installa le selezionate" + IDS_SELECTEDFORINST "Selezionate per l'installazione" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE BEGIN - IDS_STATUS_INSTALLED "Installed" - IDS_STATUS_NOTINSTALLED "Not installed" - IDS_STATUS_DOWNLOADED "Downloaded" - IDS_STATUS_UPDATE_AVAILABLE "Update available" - IDS_STATUS_DOWNLOADING "Downloading" - IDS_STATUS_INSTALLING "Installing" - IDS_STATUS_WAITING "Waiting to install" - IDS_STATUS_FINISHED "Finished" + IDS_STATUS_INSTALLED "Installato" + IDS_STATUS_NOTINSTALLED "Non installato" + IDS_STATUS_DOWNLOADED "Scaricato" + IDS_STATUS_UPDATE_AVAILABLE "Aggiornamento disponibile" + IDS_STATUS_DOWNLOADING "Scaricamento…" + IDS_STATUS_INSTALLING "Installazione…" + IDS_STATUS_WAITING "In attesa di installare…" + IDS_STATUS_FINISHED "Finito" END STRINGTABLE @@ -233,16 +235,16 @@ END STRINGTABLE BEGIN - IDS_LANGUAGE_AVAILABLE_TRANSLATION "Supports your language" - IDS_LANGUAGE_NO_TRANSLATION "Supports other languages" - IDS_LANGUAGE_ENGLISH_TRANSLATION "Supports English" - IDS_LANGUAGE_SINGLE "Single language" - IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d more)" - IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d available)" + IDS_LANGUAGE_AVAILABLE_TRANSLATION "Supporta la tua lingua" + IDS_LANGUAGE_NO_TRANSLATION "Supporta le altre lingue" + IDS_LANGUAGE_ENGLISH_TRANSLATION "Supporta l'Inglese" + IDS_LANGUAGE_SINGLE "Lingua singola" + IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d più)" + IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d disponibile)" END STRINGTABLE BEGIN - IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DISP "Applicazioni Database" + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aggiornamento Database…" END diff --git a/base/applications/rapps/lang/ja-JP.rc b/base/applications/rapps/lang/ja-JP.rc index 6575e9dd4d8..227e07f5e02 100644 --- a/base/applications/rapps/lang/ja-JP.rc +++ b/base/applications/rapps/lang/ja-JP.rc @@ -74,7 +74,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "デフォルト", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "キャンセル", IDCANCEL, 181, 195, 60, 14 END @@ -83,16 +83,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "プログラムのインストール" FONT 9, "MS UI Gothic" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "ディスクからインストール (CD や DVD)(&I)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "ダウンロードしてインストール(&D)", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "キャンセル", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "ダウンロード %ls..." +CAPTION "ダウンロード %ls…" FONT 9, "MS UI Gothic" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -105,9 +105,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "バージョン情報" FONT 9, "MS UI Gothic" BEGIN - LTEXT "ReactOS アプリケーション マネージャ\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "閉じる", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS アプリケーション マネージャ\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "閉じる", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -183,7 +183,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS アプリケーション マネージャ" - IDS_SEARCH_TEXT "検索..." + IDS_SEARCH_TEXT "検索…" IDS_INSTALL "インストール" IDS_UNINSTALL "アンインストール" IDS_MODIFY "変更" @@ -203,13 +203,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "レジストリからこのプログラムに関するデータを削除できません!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -244,5 +246,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/no-NO.rc b/base/applications/rapps/lang/no-NO.rc index d12e1d2783e..c2d7a4835e1 100644 --- a/base/applications/rapps/lang/no-NO.rc +++ b/base/applications/rapps/lang/no-NO.rc @@ -74,7 +74,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Cancel", IDCANCEL, 181, 195, 60, 14 END @@ -83,16 +83,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Program installation" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Lastet ned %ls..." +CAPTION "Lastet ned %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -105,9 +105,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Om" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Programbehandler\nEnerett (C) 2009\nav Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Lukk", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Programbehandler\nEnerett (C) 2009\nav Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Lukk", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -182,7 +182,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS programbehandler" - IDS_SEARCH_TEXT "Søk..." + IDS_SEARCH_TEXT "Søk…" IDS_INSTALL "Installere" IDS_UNINSTALL "Avinstallere" IDS_MODIFY "Endre" @@ -202,13 +202,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the registry!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -243,5 +245,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/pl-PL.rc b/base/applications/rapps/lang/pl-PL.rc index 0007f476db6..54549b05899 100644 --- a/base/applications/rapps/lang/pl-PL.rc +++ b/base/applications/rapps/lang/pl-PL.rc @@ -82,7 +82,7 @@ BEGIN LTEXT "Bez proxy dla", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Domyślne", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Anuluj", IDCANCEL, 181, 195, 60, 14 END @@ -91,16 +91,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Instalacja programu" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Zainstaluj z dysku (CD lub DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Pobierz i zainstaluj", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Anuluj", IDCANCEL, 150, 78, 60, 14 END -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 +IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 220 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Pobierz %ls..." +CAPTION "Pobierz %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -113,9 +113,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "O programie" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Menedżer aplikacji ReactOS\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Zamknij", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Menedżer aplikacji ReactOS\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Zamknij", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -160,13 +160,13 @@ END STRINGTABLE BEGIN IDS_AINFO_VERSION "\nWersja: " - IDS_AINFO_AVAILABLEVERSION "\nAvailable Version: " + IDS_AINFO_AVAILABLEVERSION "\nDostępna wersja: " IDS_AINFO_DESCRIPTION "\nOpis: " IDS_AINFO_SIZE "\nRozmiar: " IDS_AINFO_URLSITE "\nStrona: " IDS_AINFO_LICENSE "\nLicencja: " IDS_AINFO_URLDOWNLOAD "\nPobieranie: " - IDS_AINFO_LANGUAGES "\nLanguages: " + IDS_AINFO_LANGUAGES "\nJęzyki: " END STRINGTABLE @@ -191,7 +191,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "Menedżer aplikacji ReactOS" - IDS_SEARCH_TEXT "Szukaj..." + IDS_SEARCH_TEXT "Szukaj…" IDS_INSTALL "Instaluj" IDS_UNINSTALL "Odinstaluj" IDS_MODIFY "Modyfikuj" @@ -211,13 +211,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Nie można pobrać pakietu! Sprawdź połączenie z siecią!" IDS_UNABLE_TO_REMOVE "Nie można było usunąć wpisu z rejestru!" IDS_UNABLE_TO_INSTALL "Nie można uruchomić instalatora!" - IDS_CERT_DOES_NOT_MATCH "Weryfikacja certyfikatu SSL nieudana." - IDS_INTEG_CHECK_TITLE "Weryfikowanie integralności pakietu..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Weryfikowanie integralności pakietu…" IDS_INTEG_CHECK_FAIL "Pakiet nie przeszedł kontroli integralności, mógł zostać uszkodzony lub naruszony podczas pobierania. Uruchamianie tego programu nie jest zalecane." IDS_INTERRUPTED_DOWNLOAD "Pobieranie zostało przerwane. Sprawdź połączenie z siecią" IDS_UNABLE_TO_WRITE "Nie można zapisać na dysku. Dysk może być pełny." IDS_SELECT_ALL "Zaznacz/Odznacz Wszystko" IDS_INSTALL_SELECTED "Instaluj Zaznaczone" + IDS_SELECTEDFORINST "Wybrane do instalacji" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -227,7 +229,7 @@ BEGIN IDS_STATUS_DOWNLOADED "Pobrane" IDS_STATUS_UPDATE_AVAILABLE "Dostępna aktualizacja" IDS_STATUS_DOWNLOADING "Pobieranie…" - IDS_STATUS_INSTALLING "Instalowanie……" + IDS_STATUS_INSTALLING "Instalowanie…" IDS_STATUS_WAITING "Oczekiwanie na instalację…" IDS_STATUS_FINISHED "Gotowe" END @@ -251,6 +253,6 @@ END STRINGTABLE BEGIN - IDS_DL_DIALOG_DB_DISP "Baza Programów" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aktualizowanie bazy Programów..." + IDS_DL_DIALOG_DB_DISP "Baza programów" + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aktualizowanie bazy programów…" END diff --git a/base/applications/rapps/lang/pt-BR.rc b/base/applications/rapps/lang/pt-BR.rc index 7388606c08c..f4f1ffde91b 100644 --- a/base/applications/rapps/lang/pt-BR.rc +++ b/base/applications/rapps/lang/pt-BR.rc @@ -76,7 +76,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Padrão", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Cancelar", IDCANCEL, 181, 195, 60, 14 END @@ -85,16 +85,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Instalação do programa" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Instalar com uma mídia (CD ou DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Baixar e instalar", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Cancelar", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Download %ls..." +CAPTION "Download %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -107,9 +107,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Sobre" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Central de Aplicativos ReactOS\nCopyright (C) 2009\npor Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Fechar", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Central de Aplicativos ReactOS\nCopyright (C) 2009\npor Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Fechar", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -185,7 +185,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "Central de Aplicativos ReactOS" - IDS_SEARCH_TEXT "Procurar..." + IDS_SEARCH_TEXT "Procurar…" IDS_INSTALL "Instalar" IDS_UNINSTALL "Desinstalar" IDS_MODIFY "Modificar" @@ -205,13 +205,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Não foi possível remover as informações do programa do registro!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -246,5 +248,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/ro-RO.rc b/base/applications/rapps/lang/ro-RO.rc index f040a66e57b..0bb9498618e 100644 --- a/base/applications/rapps/lang/ro-RO.rc +++ b/base/applications/rapps/lang/ro-RO.rc @@ -1,4 +1,11 @@ -/* Ștefan Fulea (stefan dot fulea at mail dot md) */ +/* + * PROJECT: ReactOS Applications Manager (RAPPS) + * FILE: base/applications/rapps/lang/ro-RO.rc + * PURPOSE: Romanian Translation for RAPPS + * TRANSLATORS: + * Ștefan Fulea (stefan dot fulea at mail dot md) + * Bișoc George (fraizeraust99@gmail.com) + */ LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL @@ -76,7 +83,7 @@ BEGIN LTEXT "excepție pentru", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "I&mplicite", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "Con&firmă", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "Con&firmă", IDOK, 116, 195, 60, 14 PUSHBUTTON "A&nulează", IDCANCEL, 181, 195, 60, 14 END @@ -85,16 +92,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Instalare aplicație" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "Instalea&ză de pe un disc (CD sau DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Descarcă și instalează", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "Con&firmă", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "Con&firmă", IDOK, 86, 78, 60, 14 PUSHBUTTON "A&nulează", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "În curs de descărcare %ls..." +CAPTION "În curs de descărcare %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -107,9 +114,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Despre gestionarul de programe" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Gestionar de programe ReactOS\nDrept de autor (C) 2009\nde către Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Î&nchide", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Gestionar de programe ReactOS\nDrept de autor (C) 2009\nde către Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Î&nchide", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -154,13 +161,13 @@ END STRINGTABLE BEGIN IDS_AINFO_VERSION "\nVersiune: " - IDS_AINFO_AVAILABLEVERSION "\nAvailable Version: " + IDS_AINFO_AVAILABLEVERSION "\nVersiune disponibilă: " IDS_AINFO_DESCRIPTION "\nDescriere: " IDS_AINFO_SIZE "\nDimensiune: " IDS_AINFO_URLSITE "\nAdresă web: " IDS_AINFO_LICENSE "\nLicență: " IDS_AINFO_URLDOWNLOAD "\nURL fișier: " - IDS_AINFO_LANGUAGES "\nLanguages: " + IDS_AINFO_LANGUAGES "\nLimbi: " END STRINGTABLE @@ -189,7 +196,7 @@ BEGIN IDS_INSTALL "Instalează" IDS_UNINSTALL "Dezinstalează" IDS_MODIFY "Modifică" - IDS_APPS_COUNT "Numărul de programe: %d; Selected: %d" + IDS_APPS_COUNT "Numărul de programe: %d; Selectate: %d" IDS_WELCOME_TITLE "Bun venit la gestionarul de programe ReactOS!\n\n" IDS_WELCOME_TEXT "Alegeți o categorie din stânga, apoi alegeți o aplicație pentru a o instala sau dezinstala.\nArdesa web ReactOS: " IDS_WELCOME_URL "http://www.reactos.org" @@ -204,47 +211,49 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD "Pachetul nu poate fi descărcat! Adresa nu este găsită!" IDS_UNABLE_TO_DOWNLOAD2 "Pachetul nu poate fi descărcat! Verificați conexiunea de Internet!" IDS_UNABLE_TO_REMOVE "Datele de registru pentru acest program nu au putut fi eliminate!" - IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "Verificarea certificatului SSL a eșuat." + IDS_UNABLE_TO_INSTALL "Programul de instalare nu poate fi executat!" + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" IDS_INTEG_CHECK_TITLE "Integritatea pachetului în verificare…" IDS_INTEG_CHECK_FAIL "Pachetul nu a trecut de verificarea de integritate. Utilizarea programului nu este recomandată." IDS_INTERRUPTED_DOWNLOAD "Descărcarea a fost întreruptă. Verificați conexiunea la Internet." - IDS_UNABLE_TO_WRITE "Eșec la scriea pe disc. Una din cauze poate fi atingerea limitei de capacitate." - IDS_SELECT_ALL "Select/Deselect All" - IDS_INSTALL_SELECTED "Install Selected" + IDS_UNABLE_TO_WRITE "Eșec la scrierea pe disc. Una din cauze poate fi atingerea limitei de capacitate." + IDS_SELECT_ALL "Selectează/Deselectează Toate" + IDS_INSTALL_SELECTED "Instalează selecționate" + IDS_SELECTEDFORINST "Selectate pentru instalare" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE BEGIN - IDS_STATUS_INSTALLED "Installed" - IDS_STATUS_NOTINSTALLED "Not installed" - IDS_STATUS_DOWNLOADED "Downloaded" - IDS_STATUS_UPDATE_AVAILABLE "Update available" - IDS_STATUS_DOWNLOADING "Downloading…" - IDS_STATUS_INSTALLING "Installing…" - IDS_STATUS_WAITING "Waiting to install…" - IDS_STATUS_FINISHED "Finished" + IDS_STATUS_INSTALLED "Instalat" + IDS_STATUS_NOTINSTALLED "Nu instalat" + IDS_STATUS_DOWNLOADED "Descărcat" + IDS_STATUS_UPDATE_AVAILABLE "Actualizare disponibilă" + IDS_STATUS_DOWNLOADING "Descărcare…" + IDS_STATUS_INSTALLING "Instalare…" + IDS_STATUS_WAITING "În fază de instalare…" + IDS_STATUS_FINISHED "Terminat" END STRINGTABLE BEGIN - IDS_LICENSE_OPENSOURCE "Open Source" + IDS_LICENSE_OPENSOURCE "Sursă Deschisă" IDS_LICENSE_FREEWARE "Freeware" IDS_LICENSE_TRIAL "Trial/Demo" END STRINGTABLE BEGIN - IDS_LANGUAGE_AVAILABLE_TRANSLATION "Supports your language" - IDS_LANGUAGE_NO_TRANSLATION "Supports other languages" - IDS_LANGUAGE_ENGLISH_TRANSLATION "Supports English" - IDS_LANGUAGE_SINGLE "Single language" - IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d more)" - IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d available)" + IDS_LANGUAGE_AVAILABLE_TRANSLATION "Suportă limba respectivă" + IDS_LANGUAGE_NO_TRANSLATION "Suportă alte limbi" + IDS_LANGUAGE_ENGLISH_TRANSLATION "Suportă limba Engleză" + IDS_LANGUAGE_SINGLE "Singura Limbă" + IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d mult)" + IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d disponibil)" END STRINGTABLE BEGIN - IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DISP "Aplicații baza de date" + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizare baza de date…" END diff --git a/base/applications/rapps/lang/ru-RU.rc b/base/applications/rapps/lang/ru-RU.rc index 0f0d6f2eebe..9a631a39d3b 100644 --- a/base/applications/rapps/lang/ru-RU.rc +++ b/base/applications/rapps/lang/ru-RU.rc @@ -74,7 +74,7 @@ BEGIN LTEXT "Исключения", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "По умолчанию", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Отмена", IDCANCEL, 181, 195, 60, 14 END @@ -83,16 +83,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Установка программы" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Установить с диска", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Скачать и установить", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Отмена", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 220 STYLE DS_SHELLFONT | DS_CENTER | WS_POPUPWINDOW | WS_SYSMENU | WS_VISIBLE -CAPTION "Загрузка %ls..." +CAPTION "Загрузка %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -105,9 +105,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "О программе" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Менеджер приложений ReactOS\nАвторские права (C) 2009\nДмитрий Чапышев (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Закрыть", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Менеджер приложений ReactOS\nАвторские права (C) 2009\nДмитрий Чапышев (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Закрыть", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -183,7 +183,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "Менеджер приложений ReactOS" - IDS_SEARCH_TEXT "Поиск..." + IDS_SEARCH_TEXT "Поиск…" IDS_INSTALL "Установить" IDS_UNINSTALL "Удалить" IDS_MODIFY "Изменить" @@ -203,13 +203,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Не удалось скачать приложение! Проверьте подключение к сети Интернет!" IDS_UNABLE_TO_REMOVE "Не удалось удалить данные о программе из реестра!" IDS_UNABLE_TO_INSTALL "Не удалось завершить установку!" - IDS_CERT_DOES_NOT_MATCH "Ошибка проверки SSL сертификата." - IDS_INTEG_CHECK_TITLE "Проверка целостности приложения..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Проверка целостности приложения…" IDS_INTEG_CHECK_FAIL "Приложение не прошло проверку целостности, возможно оно было повреждено или подменено. Запуск приложения не рекомендуется." IDS_INTERRUPTED_DOWNLOAD "Загрузка была прервана. Проверьте подключение к сети Интернет." IDS_UNABLE_TO_WRITE "Не удалось записать данные на диск. Возможно, недостаточно свободного места на диске." IDS_SELECT_ALL "Выбрать все" IDS_INSTALL_SELECTED "Установить выбранное" + IDS_SELECTEDFORINST "Выбрано для установки" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -219,7 +221,7 @@ BEGIN IDS_STATUS_DOWNLOADED "Загружено" IDS_STATUS_UPDATE_AVAILABLE "Есть обновления" IDS_STATUS_DOWNLOADING "Загружается…" - IDS_STATUS_INSTALLING "Установка..." + IDS_STATUS_INSTALLING "Установка…" IDS_STATUS_WAITING "Ожидание установки…" IDS_STATUS_FINISHED "Завершено" END @@ -244,5 +246,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "База данных приложений" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Обновление базы данных..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Обновление базы данных…" END diff --git a/base/applications/rapps/lang/sk-SK.rc b/base/applications/rapps/lang/sk-SK.rc index 150150e4b07..4eaa41a38b8 100644 --- a/base/applications/rapps/lang/sk-SK.rc +++ b/base/applications/rapps/lang/sk-SK.rc @@ -79,7 +79,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Predvolené", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Zrušiť", IDCANCEL, 181, 195, 60, 14 END @@ -88,16 +88,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Inštalácia programu" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Inštalovať z disku (CD alebo DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Stiahnuť a inštalovať", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Zrušiť", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Sťahujem %ls..." // Stiahnuť ??? +CAPTION "Sťahujem %ls…" // Stiahnuť ??? FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -110,9 +110,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Čo je Manažér aplikácií systému ReactOS" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Manažér aplikácií systému ReactOS\nAutorské práva (C) 2009\nod Dmitry Chapyshev (dmitry@reactos.org)\nPreklad: Mário Kačmár (kario@szm.sk)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Zavrieť", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Manažér aplikácií systému ReactOS\nAutorské práva (C) 2009\nod Dmitry Chapyshev (dmitry@reactos.org)\nPreklad: Mário Kačmár (kario@szm.sk)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Zavrieť", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -188,7 +188,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "Manažér aplikácií systému ReactOS" - IDS_SEARCH_TEXT "Hľadať..." + IDS_SEARCH_TEXT "Hľadať…" IDS_INSTALL "Inštalovať" IDS_UNINSTALL "Odinštalovať" IDS_MODIFY "Zmeniť" @@ -208,13 +208,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Nie je možné odstrániť z registrov údaje o programe!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -249,5 +251,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/sq-AL.rc b/base/applications/rapps/lang/sq-AL.rc index 80de1144bc8..8e2e338d18a 100644 --- a/base/applications/rapps/lang/sq-AL.rc +++ b/base/applications/rapps/lang/sq-AL.rc @@ -78,7 +78,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Parazgjedhur", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Anulo", IDCANCEL, 181, 195, 60, 14 END @@ -87,16 +87,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Instalimi i Programeve" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Instalo nga nje disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "Shkarko dhe instalo", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Anulo", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Shkarko %ls..." +CAPTION "Shkarko %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -109,9 +109,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Rreth" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\nnga Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Close", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Applications Manager\nCopyright (C) 2009\nnga Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Close", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -187,7 +187,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS Applications Manager" - IDS_SEARCH_TEXT "Kerko..." + IDS_SEARCH_TEXT "Kerko…" IDS_INSTALL "Instalo" IDS_UNINSTALL "Uninstall" IDS_MODIFY "Modifiko" @@ -207,13 +207,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "E pamundur te fshihen informacionet e programit nga regjistri!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -248,5 +250,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/sv-SE.rc b/base/applications/rapps/lang/sv-SE.rc index c321420a018..56f06fe7e64 100644 --- a/base/applications/rapps/lang/sv-SE.rc +++ b/base/applications/rapps/lang/sv-SE.rc @@ -81,7 +81,7 @@ BEGIN LTEXT "No proxy for", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Standard", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Avbryt", IDCANCEL, 181, 195, 60, 14 END @@ -90,16 +90,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Programinstallation" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Installera från disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Ladda ner och installera", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Avbryt", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "Ladda ner %ls..." +CAPTION "Ladda ner %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -112,9 +112,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Om" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Programhanterare\nCopyright (C) 2009\nav Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Stäng", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Programhanterare\nCopyright (C) 2009\nav Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Stäng", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -190,7 +190,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS programhanterare" - IDS_SEARCH_TEXT "Sök..." + IDS_SEARCH_TEXT "Sök…" IDS_INSTALL "Installera" IDS_UNINSTALL "Avinstallera" IDS_MODIFY "Ändra" @@ -210,13 +210,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "Det gick ej att ta bort programmets data från registret!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Verifying package integrity…" IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -251,5 +253,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/tr-TR.rc b/base/applications/rapps/lang/tr-TR.rc index a50b1cf8cf3..a46e0a98e0a 100644 --- a/base/applications/rapps/lang/tr-TR.rc +++ b/base/applications/rapps/lang/tr-TR.rc @@ -1,4 +1,4 @@ -/* TRANSLATOR: 2013-2016 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */ +/* TRANSLATOR: 2013-2016 Erdem Ersoy (eersoy93) (erdemersoy [at] erdemersoy [dot] net) */ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT @@ -6,7 +6,7 @@ IDR_MAINMENU MENU BEGIN POPUP "&Kütük" BEGIN - MENUITEM "&Ayarlar...", ID_SETTINGS + MENUITEM "&Ayarlar…", ID_SETTINGS MENUITEM SEPARATOR MENUITEM "&Çıkış", ID_EXIT END @@ -76,7 +76,7 @@ BEGIN LTEXT "Şunun İçin Vekil Sunucu Yok", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Ön Tanımlılar", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "Tamam", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "Tamam", IDOK, 116, 195, 60, 14 PUSHBUTTON "İptal", IDCANCEL, 181, 195, 60, 14 END @@ -85,16 +85,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "İzlence Kurulumu" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Bir Diskten (CD'den veyâ DVD'den) Kur", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&İndir ve Kur", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "Tamam", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "Tamam", IDOK, 86, 78, 60, 14 PUSHBUTTON "İptal", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "İndiriliyor %ls..." +CAPTION "İndiriliyor %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -107,9 +107,9 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Üzerine" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "ReactOS Uygulama Yöneticisi\nTelif Hakkı: 2009\nDmitry Chapyshev (dmitry@reactos.org) ile.", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Tamam", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS Uygulama Yöneticisi\nTelif Hakkı: 2009\nDmitry Chapyshev (dmitry@reactos.org) ile.", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Tamam", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -205,13 +205,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Paket indirilemez! Umûmî Ağ bağlantınızı yoklayınız!" IDS_UNABLE_TO_REMOVE "İzlencenin girişi değer defterinden silinemiyor." IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL onay belgesi doğrulaması başarısız." - IDS_INTEG_CHECK_TITLE "Paket bütünlüğü doğrulanıyor..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Paket bütünlüğü doğrulanıyor…" IDS_INTEG_CHECK_FAIL "Paket bütünlük denetimini geçmedi, bozulmuş veyâ indirme esnâsında oynanmış olabilir. Yazılımı çalıştırmak önerilmez." IDS_INTERRUPTED_DOWNLOAD "İndirme kesildi. Umûmî Ağ bağlantınızı denetleyiniz." IDS_UNABLE_TO_WRITE "Diske yazılamıyor. Disk dolu olabilir." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -246,5 +248,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/lang/uk-UA.rc b/base/applications/rapps/lang/uk-UA.rc index c9320c4f0ee..08788f7e8b8 100644 --- a/base/applications/rapps/lang/uk-UA.rc +++ b/base/applications/rapps/lang/uk-UA.rc @@ -82,7 +82,7 @@ BEGIN LTEXT "Виключення", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Стандартно", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "OK", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 116, 195, 60, 14 PUSHBUTTON "Скасувати", IDCANCEL, 181, 195, 60, 14 END @@ -91,16 +91,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS CAPTION "Встановлення програми" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "&Встановити з диску", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "&Завантажити та встановити", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "OK", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "OK", IDOK, 86, 78, 60, 14 PUSHBUTTON "Скасувати", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 220 STYLE DS_SHELLFONT | DS_CENTER | WS_POPUPWINDOW | WS_SYSMENU | WS_VISIBLE -CAPTION "Завантаження %ls..." +CAPTION "Завантаження %ls…" FONT 8, "MS Shell Dlg" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 @@ -110,12 +110,12 @@ END IDD_ABOUT_DIALOG DIALOGEX 22, 16, 190, 66 STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME -CAPTION "Про програму..." +CAPTION "Про програму…" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Менеджер додатків ReactOS\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "Закрити", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "Менеджер додатків ReactOS\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "Закрити", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -191,7 +191,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "Менеджер додатків ReactOS" - IDS_SEARCH_TEXT "Пошук..." + IDS_SEARCH_TEXT "Пошук…" IDS_INSTALL "Встановити" IDS_UNINSTALL "Видалити" IDS_MODIFY "Змінити" @@ -211,13 +211,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Неможливо завантажити додаток! Перевірте підключення до мережі Інтернет!" IDS_UNABLE_TO_REMOVE "Не вдалося видалити дані про програму з реєстру!" IDS_UNABLE_TO_INSTALL "Не вдалося завершити інсталювання!" - IDS_CERT_DOES_NOT_MATCH "Помилка перевіки сертифікату SSL." - IDS_INTEG_CHECK_TITLE "Перевірка цілістності додатку..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "Перевірка цілістності додатку…" IDS_INTEG_CHECK_FAIL "Додаток не пройшов перевірку цілістності, його молги пошкодити чи замінити. Запуск додатку не рекомендується." IDS_INTERRUPTED_DOWNLOAD "Завантаження перервано. Перевірте підключення до мережі Інтернет." IDS_UNABLE_TO_WRITE "Записк на диск неможливий. Можливо, на диску недостатньо містця." IDS_SELECT_ALL "Вибрати все" IDS_INSTALL_SELECTED "Встановити обране" + IDS_SELECTEDFORINST "Обрані для встановлення" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -228,7 +230,7 @@ BEGIN IDS_STATUS_UPDATE_AVAILABLE "Є оновлення" IDS_STATUS_DOWNLOADING "Завантажується…" IDS_STATUS_INSTALLING "Встановлюється…" - IDS_STATUS_WAITING "Очікування завантаження..." + IDS_STATUS_WAITING "Очікування завантаження…" IDS_STATUS_FINISHED "Завершено" END @@ -252,5 +254,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Список програм" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Оновлення списку програм..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Оновлення списку програм…" END diff --git a/base/applications/rapps/lang/zh-CN.rc b/base/applications/rapps/lang/zh-CN.rc index 620e9a1c4b0..e7431800c39 100644 --- a/base/applications/rapps/lang/zh-CN.rc +++ b/base/applications/rapps/lang/zh-CN.rc @@ -1,5 +1,5 @@ /* Translated by Song Fuchang (0xfc) */ - +/* Imporved by Li Keqing */ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED IDR_MAINMENU MENU @@ -57,9 +57,9 @@ END IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 215 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "设置" -FONT 9, "MS Shell Dlg" +FONT 9, "宋体" BEGIN - GROUPBOX "普通", -1, 4, 2, 240, 61 + GROUPBOX "常规", -1, 4, 2, 240, 61 AUTOCHECKBOX "保存窗口位置(&S)", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12 AUTOCHECKBOX "启动时更新可获得的程序列表(&U)", IDC_UPDATE_AVLIST, 15, 29, 222, 12 AUTOCHECKBOX "将程序的安装和卸载记录到日志(&L)", IDC_LOG_ENABLED, 15, 46, 219, 12 @@ -76,26 +76,26 @@ BEGIN LTEXT "没有代理", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "缺省", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "确定", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "确定", IDOK, 116, 195, 60, 14 PUSHBUTTON "取消", IDCANCEL, 181, 195, 60, 14 END IDD_INSTALL_DIALOG DIALOGEX 0, 0, 216, 97 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "安装程序" -FONT 9, "MS Shell Dlg" +CAPTION "程序安装" +FONT 9, "宋体" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 - AUTORADIOBUTTON "从存储设备安装 (CD 或 DVD)(&I)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 + AUTORADIOBUTTON "从磁盘安装 (CD 或 DVD)(&I)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "下载并安装(&D)", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "确定", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "确定", IDOK, 86, 78, 60, 14 PUSHBUTTON "取消", IDCANCEL, 150, 78, 60, 14 END -IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 +IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 220 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "正在下载 %ls..." -FONT 9, "MS Shell Dlg" +CAPTION "正在下载 %ls…" +FONT 9, "宋体" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 EDITTEXT IDC_DOWNLOAD_STATUS, 10, 28, 200, 22, ES_CENTER | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_DISABLED | NOT WS_BORDER @@ -105,11 +105,11 @@ END IDD_ABOUT_DIALOG DIALOGEX 22, 16, 190, 66 STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "关于" -FONT 9, "MS Shell Dlg" +FONT 9, "宋体" BEGIN - LTEXT "ReactOS 程序管理器 版权所有 (C) 2009\n作者 Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "关闭", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS 程序管理器 版权所有 (C) 2009\n作者 Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "关闭", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -154,13 +154,13 @@ END STRINGTABLE BEGIN IDS_AINFO_VERSION "\n版本:" - IDS_AINFO_AVAILABLEVERSION "\nAvailable Version: " + IDS_AINFO_AVAILABLEVERSION "\n可用版本: " IDS_AINFO_DESCRIPTION "\n描述:" IDS_AINFO_SIZE "\n大小:" IDS_AINFO_URLSITE "\n主页:" IDS_AINFO_LICENSE "\n协议:" IDS_AINFO_URLDOWNLOAD "\n下载:" - IDS_AINFO_LANGUAGES "\nLanguages: " + IDS_AINFO_LANGUAGES "\n语言: " END STRINGTABLE @@ -185,12 +185,12 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS 程序管理器" - IDS_SEARCH_TEXT "搜索..." + IDS_SEARCH_TEXT "搜索…" IDS_INSTALL "安装" IDS_UNINSTALL "卸载" IDS_MODIFY "修改" - IDS_APPS_COUNT "程序个数:%d; Selected: %d" - IDS_WELCOME_TITLE "欢迎来到 ReactOS 程序管理器!\n\n" + IDS_APPS_COUNT "程序数量:%d;已选:%d" + IDS_WELCOME_TITLE "欢迎使用 ReactOS 程序管理器!\n\n" IDS_WELCOME_TEXT "从左栏选择一个类别,然后选择要安装或卸载的程序。\nReactOS 网站:" IDS_WELCOME_URL "http://www.reactos.org" IDS_INSTALLED "已安装" @@ -198,53 +198,55 @@ BEGIN IDS_UPDATES "更新" IDS_APPLICATIONS "应用程序" IDS_CHOOSE_FOLDER_TEXT "请选择用来保存下载文件的文件夹:" - IDS_CHOOSE_FOLDER_ERROR "您选择的文件夹不存在。创建吗?" + IDS_CHOOSE_FOLDER_ERROR "您选择的文件夹不存在。是否创建?" IDS_APP_REG_REMOVE "您确定要从注册表删除该程序的数据吗?" IDS_INFORMATION "信息" - IDS_UNABLE_TO_DOWNLOAD "无法下载该软件包 !找不到网络的地址 !" - IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" + IDS_UNABLE_TO_DOWNLOAD "无法下载该软件包!找不到网络的地址!" + IDS_UNABLE_TO_DOWNLOAD2 "无法下载该软件包!请检查网络连接!" IDS_UNABLE_TO_REMOVE "无法从注册表删除该程序的数据!" - IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL certificate verification failed." - IDS_INTEG_CHECK_TITLE "Verifying package integrity..." - IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended." - IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." - IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." - IDS_SELECT_ALL "Select/Deselect All" - IDS_INSTALL_SELECTED "Install Selected" + IDS_UNABLE_TO_INSTALL "无法打开安装程序!" + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "正在验证包完整性…" + IDS_INTEG_CHECK_FAIL "这个包没有通过完整性验证,它可能在下载过程中损坏或被人为篡改了。不推荐运行这个程序。" + IDS_INTERRUPTED_DOWNLOAD "下载中断。请检查网络连接。" + IDS_UNABLE_TO_WRITE "无法写入磁盘。磁盘可能已满。" + IDS_SELECT_ALL "全选/全反选" + IDS_INSTALL_SELECTED "安装已选中的" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE BEGIN - IDS_STATUS_INSTALLED "Installed" - IDS_STATUS_NOTINSTALLED "Not installed" - IDS_STATUS_DOWNLOADED "Downloaded" - IDS_STATUS_UPDATE_AVAILABLE "Update available" - IDS_STATUS_DOWNLOADING "Downloading…" - IDS_STATUS_INSTALLING "Installing…" - IDS_STATUS_WAITING "Waiting to install…" - IDS_STATUS_FINISHED "Finished" + IDS_STATUS_INSTALLED "已安装" + IDS_STATUS_NOTINSTALLED "未安装" + IDS_STATUS_DOWNLOADED "下载" + IDS_STATUS_UPDATE_AVAILABLE "可用更新" + IDS_STATUS_DOWNLOADING "正在下载…" + IDS_STATUS_INSTALLING "正在安装…" + IDS_STATUS_WAITING "正在等待安装…" + IDS_STATUS_FINISHED "完成" END STRINGTABLE BEGIN - IDS_LICENSE_OPENSOURCE "Open Source" - IDS_LICENSE_FREEWARE "Freeware" - IDS_LICENSE_TRIAL "Trial/Demo" + IDS_LICENSE_OPENSOURCE "开源软件" + IDS_LICENSE_FREEWARE "免费软件" + IDS_LICENSE_TRIAL "试用版/演示版" END STRINGTABLE BEGIN - IDS_LANGUAGE_AVAILABLE_TRANSLATION "Supports your language" - IDS_LANGUAGE_NO_TRANSLATION "Supports other languages" - IDS_LANGUAGE_ENGLISH_TRANSLATION "Supports English" - IDS_LANGUAGE_SINGLE "Single language" - IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d more)" - IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d available)" + IDS_LANGUAGE_AVAILABLE_TRANSLATION "支持您的语言" + IDS_LANGUAGE_NO_TRANSLATION "支持其他语言" + IDS_LANGUAGE_ENGLISH_TRANSLATION "支持英语" + IDS_LANGUAGE_SINGLE "单语言" + IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d 及更多)" + IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d 可用)" END STRINGTABLE BEGIN - IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DISP "应用程序数据库" + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "正在更新数据库…" END diff --git a/base/applications/rapps/lang/zh-TW.rc b/base/applications/rapps/lang/zh-TW.rc index 9cf91aff939..fa7ef740266 100644 --- a/base/applications/rapps/lang/zh-TW.rc +++ b/base/applications/rapps/lang/zh-TW.rc @@ -57,7 +57,7 @@ END IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 215 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "設定" -FONT 9, "MS Shell Dlg" +FONT 9, "新細明體" BEGIN GROUPBOX "普通", -1, 4, 2, 240, 61 AUTOCHECKBOX "儲存視窗位置(&S)", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12 @@ -76,26 +76,26 @@ BEGIN LTEXT "沒有代理", -1, 27, 175, 64, 10 EDITTEXT IDC_NO_PROXY_FOR, 90, 175, 147, 12, ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "預設", IDC_DEFAULT_SETTINGS, 8, 195, 60, 14 - PUSHBUTTON "確定", IDOK, 116, 195, 60, 14 + DEFPUSHBUTTON "確定", IDOK, 116, 195, 60, 14 PUSHBUTTON "取消", IDCANCEL, 181, 195, 60, 14 END IDD_INSTALL_DIALOG DIALOGEX 0, 0, 216, 97 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "安裝程式" -FONT 9, "MS Shell Dlg" +FONT 9, "新細明體" BEGIN - LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35 + LTEXT "…", IDC_INSTALL_TEXT, 4, 5, 209, 35 AUTORADIOBUTTON "從存儲裝置安裝 (CD 或 DVD)(&I)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP AUTORADIOBUTTON "下載並安裝(&D)", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP - PUSHBUTTON "確定", IDOK, 86, 78, 60, 14 + DEFPUSHBUTTON "確定", IDOK, 86, 78, 60, 14 PUSHBUTTON "取消", IDCANCEL, 150, 78, 60, 14 END IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 220, 72 STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE -CAPTION "正在下載 %ls..." -FONT 9, "MS Shell Dlg" +CAPTION "正在下載 %ls…" +FONT 9, "新細明體" BEGIN CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12 EDITTEXT IDC_DOWNLOAD_STATUS, 10, 28, 200, 22, ES_CENTER | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_DISABLED | NOT WS_BORDER @@ -105,11 +105,11 @@ END IDD_ABOUT_DIALOG DIALOGEX 22, 16, 190, 66 STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "關於" -FONT 9, "MS Shell Dlg" +FONT 9, "新細明體" BEGIN - LTEXT "ReactOS 程式管理器 版權所有 (C) 2009\n作者 Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 - PUSHBUTTON "關閉", IDOK, 133, 46, 50, 14 ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30 + LTEXT "ReactOS 程式管理器 版權所有 (C) 2009\n作者 Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39 + DEFPUSHBUTTON "關閉", IDOK, 133, 46, 50, 14 END STRINGTABLE @@ -185,7 +185,7 @@ END STRINGTABLE BEGIN IDS_APPTITLE "ReactOS 程式管理器" - IDS_SEARCH_TEXT "搜索..." + IDS_SEARCH_TEXT "搜索…" IDS_INSTALL "安裝" IDS_UNINSTALL "解除安裝" IDS_MODIFY "修改" @@ -205,13 +205,15 @@ BEGIN IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!" IDS_UNABLE_TO_REMOVE "無法從登錄檔刪除該程式的資料!" IDS_UNABLE_TO_INSTALL "Unable to open installer!" - IDS_CERT_DOES_NOT_MATCH "SSL 憑證驗證失敗。" - IDS_INTEG_CHECK_TITLE "驗證套裝軟體的完整性..." + IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?" + IDS_INTEG_CHECK_TITLE "驗證套裝軟體的完整性…" IDS_INTEG_CHECK_FAIL "包沒有通過完整性檢查,它可能已損壞,或者在下載過程中篡改。建議您不要運行該軟體。" IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet." IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity." IDS_SELECT_ALL "Select/Deselect All" IDS_INSTALL_SELECTED "Install Selected" + IDS_SELECTEDFORINST "Selected for installation" + IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?" END STRINGTABLE @@ -246,5 +248,5 @@ END STRINGTABLE BEGIN IDS_DL_DIALOG_DB_DISP "Applications Database" - IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database..." + IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…" END diff --git a/base/applications/rapps/loaddlg.cpp b/base/applications/rapps/loaddlg.cpp index 6ef55b42c35..fe9ec04dece 100644 --- a/base/applications/rapps/loaddlg.cpp +++ b/base/applications/rapps/loaddlg.cpp @@ -47,8 +47,8 @@ #include "misc.h" #ifdef USE_CERT_PINNING -#define CERT_ISSUER_INFO "BE\r\nGlobalSign nv-sa\r\nGlobalSign Domain Validation CA - SHA256 - G2" -#define CERT_SUBJECT_INFO "Domain Control Validated\r\n*.reactos.org" +#define CERT_ISSUER_INFO "US\r\nLet's Encrypt\r\nLet's Encrypt Authority X3" +#define CERT_SUBJECT_INFO "rapps.reactos.org" #endif enum DownloadStatus @@ -146,25 +146,44 @@ public: LONG r; Item = GetDlgItem(m_hDialog, IDC_DOWNLOAD_PROGRESS); - if (Item && ulProgressMax) + if (Item) { WCHAR szProgress[100]; - WCHAR szProgressMax[100]; - UINT uiPercentage = ((ULONGLONG) ulProgress * 100) / ulProgressMax; - - /* send the current progress to the progress bar */ - SendMessageW(Item, PBM_SETPOS, uiPercentage, 0); /* format the bits and bytes into pretty and accessible units... */ StrFormatByteSizeW(ulProgress, szProgress, _countof(szProgress)); - StrFormatByteSizeW(ulProgressMax, szProgressMax, _countof(szProgressMax)); - /* ...and post all of it to our subclassed progress bar text subroutine */ + /* use our subclassed progress bar text subroutine */ ATL::CStringW m_ProgressText; - m_ProgressText.Format(L"%u%% \x2014 %ls / %ls", - uiPercentage, - szProgress, - szProgressMax); + + if (ulProgressMax) + { + /* total size is known */ + WCHAR szProgressMax[100]; + UINT uiPercentage = ((ULONGLONG) ulProgress * 100) / ulProgressMax; + + /* send the current progress to the progress bar */ + SendMessageW(Item, PBM_SETPOS, uiPercentage, 0); + + /* format total download size */ + StrFormatByteSizeW(ulProgressMax, szProgressMax, _countof(szProgressMax)); + + /* generate the text on progress bar */ + m_ProgressText.Format(L"%u%% \x2014 %ls / %ls", + uiPercentage, + szProgress, + szProgressMax); + } + else + { + /* send the current progress to the progress bar */ + SendMessageW(Item, PBM_SETPOS, 0, 0); + + /* total size is not known, display only current size */ + m_ProgressText.Format(L"%ls...", + szProgress); + } + /* and finally display it */ SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) m_ProgressText.GetString()); } @@ -312,61 +331,52 @@ HRESULT WINAPI CDownloadDialog_Constructor(HWND Dlg, BOOL *pbCancelled, REFIID r } #ifdef USE_CERT_PINNING -static BOOL CertIsValid(HINTERNET hInternet, LPWSTR lpszHostName) -{ - HINTERNET hConnect; - HINTERNET hRequest; - DWORD certInfoLength; - BOOL Ret = FALSE; - INTERNET_CERTIFICATE_INFOW certInfo; +typedef CHeapPtr CLocalPtr; - hConnect = InternetConnectW(hInternet, lpszHostName, INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, INTERNET_FLAG_SECURE, 0); - if (hConnect) +static BOOL CertGetSubjectAndIssuer(HINTERNET hFile, CLocalPtr& subjectInfo, CLocalPtr& issuerInfo) +{ + DWORD certInfoLength; + INTERNET_CERTIFICATE_INFOA certInfo; + DWORD size, flags; + + size = sizeof(flags); + if (!InternetQueryOptionA(hFile, INTERNET_OPTION_SECURITY_FLAGS, &flags, &size)) { - hRequest = HttpOpenRequestW(hConnect, L"HEAD", NULL, NULL, NULL, NULL, INTERNET_FLAG_SECURE, 0); - if (hRequest != NULL) - { - Ret = HttpSendRequestW(hRequest, L"", 0, NULL, 0); - if (Ret) - { - certInfoLength = sizeof(certInfo); - Ret = InternetQueryOptionW(hRequest, - INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, - &certInfo, - &certInfoLength); - if (Ret) - { - if (certInfo.lpszEncryptionAlgName) - LocalFree(certInfo.lpszEncryptionAlgName); - if (certInfo.lpszIssuerInfo) - { - if (strcmp((LPSTR) certInfo.lpszIssuerInfo, CERT_ISSUER_INFO) != 0) - Ret = FALSE; - LocalFree(certInfo.lpszIssuerInfo); - } - if (certInfo.lpszProtocolName) - LocalFree(certInfo.lpszProtocolName); - if (certInfo.lpszSignatureAlgName) - LocalFree(certInfo.lpszSignatureAlgName); - if (certInfo.lpszSubjectInfo) - { - if (strcmp((LPSTR) certInfo.lpszSubjectInfo, CERT_SUBJECT_INFO) != 0) - Ret = FALSE; - LocalFree(certInfo.lpszSubjectInfo); - } - } - } - InternetCloseHandle(hRequest); - } - InternetCloseHandle(hConnect); + return FALSE; } - return Ret; + + if (!flags & SECURITY_FLAG_SECURE) + { + return FALSE; + } + + /* Despite what the header indicates, the implementation of INTERNET_CERTIFICATE_INFO is not Unicode-aware. */ + certInfoLength = sizeof(certInfo); + if (!InternetQueryOptionA(hFile, + INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, + &certInfo, + &certInfoLength)) + { + return FALSE; + } + + subjectInfo.Attach(certInfo.lpszSubjectInfo); + issuerInfo.Attach(certInfo.lpszIssuerInfo); + + if (certInfo.lpszProtocolName) + LocalFree(certInfo.lpszProtocolName); + if (certInfo.lpszSignatureAlgName) + LocalFree(certInfo.lpszSignatureAlgName); + if (certInfo.lpszEncryptionAlgName) + LocalFree(certInfo.lpszEncryptionAlgName); + + return certInfo.lpszSubjectInfo && certInfo.lpszIssuerInfo; } #endif inline VOID MessageBox_LoadString(HWND hMainWnd, INT StringID) { - ATL::CString szMsgText; + ATL::CStringW szMsgText; if (szMsgText.LoadStringW(StringID)) { MessageBoxW(hMainWnd, szMsgText.GetString(), NULL, MB_OK | MB_ICONERROR); @@ -393,6 +403,7 @@ INT_PTR CALLBACK CDownloadManager::DownloadDlgProc(HWND Dlg, UINT uMsg, WPARAM w case WM_INITDIALOG: { HICON hIconSm, hIconBg; + ATL::CStringW szTempCaption; hIconBg = (HICON) GetClassLongW(hMainWnd, GCLP_HICON); hIconSm = (HICON) GetClassLongW(hMainWnd, GCLP_HICONSM); @@ -408,7 +419,7 @@ INT_PTR CALLBACK CDownloadManager::DownloadDlgProc(HWND Dlg, UINT uMsg, WPARAM w if (Item) { // initialize the default values for our nifty progress bar - // and subclass it so that it learns to print a status text + // and subclass it so that it learns to print a status text SendMessageW(Item, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); SendMessageW(Item, PBM_SETPOS, 0, 0); @@ -423,10 +434,15 @@ INT_PTR CALLBACK CDownloadManager::DownloadDlgProc(HWND Dlg, UINT uMsg, WPARAM w } DownloadsListView.LoadList(AppsToInstallList); - ShowWindow(Dlg, SW_SHOW); - // Get a dlg string for later use - GetWindowTextW(Dlg, szCaption, MAX_PATH); + GetWindowTextW(Dlg, szCaption, _countof(szCaption)); + + // Hide a placeholder from displaying + szTempCaption = szCaption; + szTempCaption.Replace(L"%ls", L""); + SetWindowText(Dlg, szTempCaption.GetString()); + + ShowWindow(Dlg, SW_SHOW); // Start download process DownloadParam *param = new DownloadParam(Dlg, AppsToInstallList, szCaption); @@ -541,6 +557,21 @@ LRESULT CALLBACK CDownloadManager::DownloadProgressProc(HWND hWnd, } } +VOID CDownloadManager::SetProgressMarquee(HWND Item, BOOL Enable) +{ + if (!Item) + return; + + DWORD style = GetWindowLongPtr(Item, GWL_STYLE); + if (!style) + return; + + if (!SetWindowLongPtr(Item, GWL_STYLE, (Enable ? style | PBS_MARQUEE : style & ~PBS_MARQUEE))) + return; + + SendMessageW(Item, PBM_SETMARQUEE, Enable, 0); +} + DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) { CComPtr dl; @@ -572,6 +603,8 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) LPCWSTR szCaption = static_cast(param)->szCaption; ATL::CStringW szNewCaption; + const DWORD dwUrlConnectFlags = INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION; + if (InfoArray.GetSize() <= 0) { MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD); @@ -580,6 +613,40 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) for (iAppId = 0; iAppId < InfoArray.GetSize(); ++iAppId) { + // Reset progress bar + Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS); + if (Item) + { + SetProgressMarquee(Item, FALSE); + SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) L""); + SendMessageW(Item, PBM_SETPOS, 0, 0); + } + + // is this URL an update package for RAPPS? if so store it in a different place + if (InfoArray[iAppId].szUrl == APPLICATION_DATABASE_URL) + { + bCab = TRUE; + if (!GetStorageDirectory(Path)) + goto end; + } + else + { + bCab = FALSE; + Path = SettingsInfo.szDownloadDir; + } + + // Change caption to show the currently downloaded app + if (!bCab) + { + szNewCaption.Format(szCaption, InfoArray[iAppId].szName.GetString()); + } + else + { + szNewCaption.LoadStringW(IDS_DL_DIALOG_DB_DOWNLOAD_DISP); + } + + SetWindowTextW(hDlg, szNewCaption.GetString()); + // build the path for the download p = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'/'); q = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'?'); @@ -596,18 +663,6 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) if (q && q > p && (q - p) > 0) filenameLength -= wcslen(q - 1) * sizeof(WCHAR); - // is this URL an update package for RAPPS? if so store it in a different place - if (InfoArray[iAppId].szUrl == APPLICATION_DATABASE_URL) - { - bCab = TRUE; - if (!GetStorageDirectory(Path)) - goto end; - } - else - { - Path = SettingsInfo.szDownloadDir; - } - // is the path valid? can we access it? if (GetFileAttributesW(Path.GetString()) == INVALID_FILE_ATTRIBUTES) { @@ -626,25 +681,6 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) goto run; } - // Reset progress bar - Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS); - if (Item) - { - SendMessageW(Item, PBM_SETPOS, 0, 0); - } - - // Change caption to show the currently downloaded app - if (!bCab) - { - szNewCaption.Format(szCaption, InfoArray[iAppId].szName.GetString()); - } - else - { - szNewCaption.LoadStringW(IDS_DL_DIALOG_DB_DOWNLOAD_DISP); - } - - SetWindowTextW(hDlg, szNewCaption.GetString()); - // Add the download URL SetDlgItemTextW(hDlg, IDC_DOWNLOAD_STATUS, InfoArray[iAppId].szUrl.GetString()); @@ -661,39 +697,20 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) switch (SettingsInfo.Proxy) { case 0: // preconfig + default: hOpen = InternetOpenW(lpszAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); break; - case 1: // direct (no proxy) + case 1: // direct (no proxy) hOpen = InternetOpenW(lpszAgent, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); break; case 2: // use proxy hOpen = InternetOpenW(lpszAgent, INTERNET_OPEN_TYPE_PROXY, SettingsInfo.szProxyServer, SettingsInfo.szNoProxyFor, 0); break; - default: // preconfig - hOpen = InternetOpenW(lpszAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); - break; } if (!hOpen) goto end; - hFile = InternetOpenUrlW(hOpen, InfoArray[iAppId].szUrl.GetString(), NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION, 0); - - if (!hFile) - { - MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD2); - goto end; - } - - if (!HttpQueryInfoW(hFile, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwStatusLen, NULL)) - goto end; - - if (dwStatus != HTTP_STATUS_OK) - { - MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD); - goto end; - } - dwStatusLen = sizeof(dwStatus); memset(&urlComponents, 0, sizeof(urlComponents)); @@ -708,26 +725,90 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) if (!InternetCrackUrlW(InfoArray[iAppId].szUrl, urlLength + 1, ICU_DECODE | ICU_ESCAPE, &urlComponents)) goto end; + dwContentLen = 0; + if (urlComponents.nScheme == INTERNET_SCHEME_HTTP || urlComponents.nScheme == INTERNET_SCHEME_HTTPS) - HttpQueryInfoW(hFile, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &dwContentLen, &dwStatus, 0); + { + hFile = InternetOpenUrlW(hOpen, InfoArray[iAppId].szUrl.GetString(), NULL, 0, + dwUrlConnectFlags, + 0); + if (!hFile) + { + MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD2); + goto end; + } + + // query connection + if (!HttpQueryInfoW(hFile, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwStatusLen, NULL)) + goto end; + + if (dwStatus != HTTP_STATUS_OK) + { + MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD); + goto end; + } + + // query content length + HttpQueryInfoW(hFile, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &dwContentLen, &dwStatusLen, NULL); + } if (urlComponents.nScheme == INTERNET_SCHEME_FTP) + { + // force passive mode on FTP + hFile = InternetOpenUrlW(hOpen, InfoArray[iAppId].szUrl.GetString(), NULL, 0, + dwUrlConnectFlags | INTERNET_FLAG_PASSIVE, + 0); + if (!hFile) + { + MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD2); + goto end; + } + dwContentLen = FtpGetFileSize(hFile, &dwStatus); + } + + if (!dwContentLen) + { + // content-length is not known, enable marquee mode + SetProgressMarquee(Item, TRUE); + } + + free(urlComponents.lpszScheme); + free(urlComponents.lpszHostName); #ifdef USE_CERT_PINNING // are we using HTTPS to download the RAPPS update package? check if the certificate is original if ((urlComponents.nScheme == INTERNET_SCHEME_HTTPS) && - (wcscmp(InfoArray[iAppId].szUrl, APPLICATION_DATABASE_URL) == 0) && - (!CertIsValid(hOpen, urlComponents.lpszHostName))) + (wcscmp(InfoArray[iAppId].szUrl, APPLICATION_DATABASE_URL) == 0)) { - MessageBox_LoadString(hMainWnd, IDS_CERT_DOES_NOT_MATCH); - goto end; + CLocalPtr subjectName, issuerName; + CStringW szMsgText; + bool bAskQuestion = false; + if (!CertGetSubjectAndIssuer(hFile, subjectName, issuerName)) + { + szMsgText.LoadStringW(IDS_UNABLE_TO_QUERY_CERT); + bAskQuestion = true; + } + else + { + if (strcmp(subjectName, CERT_SUBJECT_INFO) || + strcmp(issuerName, CERT_ISSUER_INFO)) + { + szMsgText.Format(IDS_MISMATCH_CERT_INFO, (char*)subjectName, (const char*)issuerName); + bAskQuestion = true; + } + } + + if (bAskQuestion) + { + if (MessageBoxW(hMainWnd, szMsgText.GetString(), NULL, MB_YESNO | MB_ICONERROR) != IDYES) + { + goto end; + } + } } #endif - free(urlComponents.lpszScheme); - free(urlComponents.lpszHostName); - hOut = CreateFileW(Path.GetString(), GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL); if (hOut == INVALID_HANDLE_VALUE) @@ -758,6 +839,15 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param) if (bCancelled) goto end; + if (!dwContentLen) + { + // set progress bar to 100% + SetProgressMarquee(Item, FALSE); + + dwContentLen = dwCurrentBytesRead; + dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString()); + } + /* if this thing isn't a RAPPS update and it has a SHA-1 checksum verify its integrity by using the native advapi32.A_SHA1 functions */ if (!bCab && InfoArray[iAppId].szSHA1[0] != 0) @@ -798,7 +888,13 @@ run: if (ShellExecuteExW(&shExInfo)) { + //reflect installation progress in the titlebar + //TODO: make a separate string with a placeholder to include app name? + ATL::CStringW szMsgText = LoadStatusString(DLSTATUS_INSTALLING); + SetWindowTextW(hDlg, szMsgText.GetString()); + DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_INSTALLING); + //TODO: issue an install operation separately so that the apps could be downloaded in the background WaitForSingleObject(shExInfo.hProcess, INFINITE); CloseHandle(shExInfo.hProcess); @@ -830,20 +926,15 @@ end: return 0; } -BOOL CDownloadManager::DownloadListOfApplications(const ATL::CSimpleArray& AppsList, BOOL bIsModal) +BOOL CDownloadManager::DownloadListOfApplications(const ATL::CSimpleArray& AppsList, BOOL bIsModal) { if (AppsList.GetSize() == 0) - { return FALSE; - } // Initialize shared variables for (INT i = 0; i < AppsList.GetSize(); ++i) { - if (AppsList[i]) - { - AppsToInstallList.Add(*(AppsList[i])); - } + AppsToInstallList.Add(AppsList[i]); // implicit conversion to DownloadInfo } // Create a dialog and issue a download process diff --git a/base/applications/rapps/misc.cpp b/base/applications/rapps/misc.cpp index b1c2938b6ba..1a527317afa 100644 --- a/base/applications/rapps/misc.cpp +++ b/base/applications/rapps/misc.cpp @@ -215,7 +215,7 @@ BOOL ExtractFilesFromCab(LPCWSTR lpCabName, LPCWSTR lpOutputPath) SESSION Dest; HRESULT Result; fnExtract pfnExtract; - + hCabinetDll = LoadLibraryW(L"cabinet.dll"); if (hCabinetDll) { @@ -225,7 +225,7 @@ BOOL ExtractFilesFromCab(LPCWSTR lpCabName, LPCWSTR lpOutputPath) ZeroMemory(&Dest, sizeof(Dest)); WideCharToMultiByte(CP_ACP, 0, lpOutputPath, -1, Dest.Destination, MAX_PATH, NULL, NULL); - WideCharToMultiByte(CP_ACP, 0, lpCabName, -1, szCabName, MAX_PATH, NULL, NULL); + WideCharToMultiByte(CP_ACP, 0, lpCabName, -1, szCabName, _countof(szCabName), NULL, NULL); Dest.Operation = EXTRACT_FILLFILELIST; Result = pfnExtract(&Dest, szCabName); diff --git a/base/applications/rapps/rapps.rc b/base/applications/rapps/rapps.rc index d200e179be3..4d4c796c2e7 100644 --- a/base/applications/rapps/rapps.rc +++ b/base/applications/rapps/rapps.rc @@ -40,6 +40,7 @@ IDI_CAT_OTHER ICON "res/cats/other.ico" IDI_CAT_SCIENCE ICON "res/cats/science.ico" IDI_CAT_TOOLS ICON "res/cats/tools.ico" IDI_CAT_VIDEO ICON "res/cats/video.ico" +IDI_SELECTEDFORINST ICON "res/select.ico" /* Accelerators -- key bindings */ HOTKEYS ACCELERATORS diff --git a/base/applications/rapps/splitter.cpp b/base/applications/rapps/splitter.cpp index edf44cea4b9..d1f1bb00803 100644 --- a/base/applications/rapps/splitter.cpp +++ b/base/applications/rapps/splitter.cpp @@ -147,7 +147,6 @@ CreateHSplitBar(HWND hwnd) hInst, NULL); - if (hHSplitter == NULL) { /* TODO: Show error message */ @@ -288,7 +287,6 @@ CreateVSplitBar(HWND hwnd) hInst, NULL); - if (!hVSplitter) { /* TODO: Show error message */ diff --git a/base/applications/rapps/unattended.cpp b/base/applications/rapps/unattended.cpp index 328dbb5dc97..06f8537999b 100644 --- a/base/applications/rapps/unattended.cpp +++ b/base/applications/rapps/unattended.cpp @@ -30,9 +30,9 @@ BOOL UseCmdParameters(LPWSTR lpCmdLine) for (INT i = 1; i < argc; ++i) { arrNames.Add(argv[i]); - } - } - else + } + } + else if (!StrCmpW(argv[0], CMD_KEY_SETUP)) { HINF InfHandle = SetupOpenInfFileW(argv[1], NULL, INF_STYLE_WIN4, NULL); @@ -47,7 +47,7 @@ BOOL UseCmdParameters(LPWSTR lpCmdLine) WCHAR szName[MAX_PATH]; do { - if (SetupGetStringFieldW(&Context, 1, szName, MAX_PATH, NULL)) + if (SetupGetStringFieldW(&Context, 1, szName, _countof(szName), NULL)) { arrNames.Add(szName); } @@ -64,12 +64,12 @@ BOOL UseCmdParameters(LPWSTR lpCmdLine) apps.UpdateAppsDB(); apps.Enum(ENUM_ALL_AVAILABLE, NULL); - ATL::CSimpleArray arrAppInfo = apps.FindInfoList(arrNames); + ATL::CSimpleArray arrAppInfo = apps.FindInfoList(arrNames); if (arrAppInfo.GetSize() > 0) { CDownloadManager::DownloadListOfApplications(arrAppInfo, TRUE); return TRUE; } - + return FALSE; } diff --git a/sdk/lib/atl/atlbase.h b/sdk/lib/atl/atlbase.h index 21d6d252b50..d327aadf4d8 100644 --- a/sdk/lib/atl/atlbase.h +++ b/sdk/lib/atl/atlbase.h @@ -190,15 +190,18 @@ struct _ATL_REGMAP_ENTRY LPCOLESTR szData; }; -HRESULT __stdcall AtlWinModuleInit(_ATL_WIN_MODULE *pWinModule); -HRESULT __stdcall AtlWinModuleTerm(_ATL_WIN_MODULE *pWinModule, HINSTANCE hInst); -HRESULT __stdcall AtlInternalQueryInterface(void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject); -void __stdcall AtlWinModuleAddCreateWndData(_ATL_WIN_MODULE *pWinModule, _AtlCreateWndData *pData, void *pObject); -void *__stdcall AtlWinModuleExtractCreateWndData(_ATL_WIN_MODULE *pWinModule); -HRESULT __stdcall AtlComModuleGetClassObject(_ATL_COM_MODULE *pComModule, REFCLSID rclsid, REFIID riid, LPVOID *ppv); +HRESULT WINAPI AtlWinModuleInit(_ATL_WIN_MODULE *pWinModule); +HRESULT WINAPI AtlWinModuleTerm(_ATL_WIN_MODULE *pWinModule, HINSTANCE hInst); +HRESULT WINAPI AtlInternalQueryInterface(void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject); +void WINAPI AtlWinModuleAddCreateWndData(_ATL_WIN_MODULE *pWinModule, _AtlCreateWndData *pData, void *pObject); +void *WINAPI AtlWinModuleExtractCreateWndData(_ATL_WIN_MODULE *pWinModule); +HRESULT WINAPI AtlComModuleGetClassObject(_ATL_COM_MODULE *pComModule, REFCLSID rclsid, REFIID riid, LPVOID *ppv); -HRESULT __stdcall AtlComModuleRegisterServer(_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid); -HRESULT __stdcall AtlComModuleUnregisterServer(_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid); +HRESULT WINAPI AtlComModuleRegisterServer(_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid); +HRESULT WINAPI AtlComModuleUnregisterServer(_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid); + +HRESULT WINAPI AtlComModuleRegisterClassObjects(_ATL_COM_MODULE *module, DWORD context, DWORD flags); +HRESULT WINAPI AtlComModuleRevokeClassObjects(_ATL_COM_MODULE *module); template @@ -662,6 +665,127 @@ public: } }; + +template +class CAtlExeModuleT : public CAtlModuleT +{ +public: + DWORD m_dwMainThreadID; + //DWORD m_dwTimeOut; + //DWORD m_dwPause; + //bool m_bDelayShutdown; + + CAtlExeModuleT() + :m_dwMainThreadID(::GetCurrentThreadId()) + { + } + + ~CAtlExeModuleT() + { + } + + int WinMain(int nShowCmd) + { + HRESULT hr = T::InitializeCom(); + if (FAILED(hr)) + return hr; + + T* pThis = static_cast(this); + + LPCTSTR lpCommandLine = GetCommandLine(); + if (pThis->ParseCommandLine(lpCommandLine, &hr)) + { + hr = pThis->Run(nShowCmd); + } + + T::UninitializeCom(); + return hr; + } + + + HRESULT Run(int nShowCmd = SW_HIDE) + { + HRESULT hr = S_OK; + + T* pThis = static_cast(this); + hr = pThis->PreMessageLoop(nShowCmd); + + if (hr == S_OK) + { + pThis->RunMessageLoop(); + hr = pThis->PostMessageLoop(); + } + + return hr; + } + + LONG Lock() + { + return CoAddRefServerProcess(); + } + + LONG Unlock() + { + LONG lRet = CoReleaseServerProcess(); + if (lRet == 0) + { + ::PostThreadMessage(m_dwMainThreadID, WM_QUIT, 0, 0); + } + return lRet; + } + + bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) + { + // unimplemented! + return true; + } + + HRESULT PreMessageLoop(int nShowCmd) + { + T* pThis = static_cast(this); + return pThis->RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE); + } + + void RunMessageLoop() + { + MSG msg; + while (GetMessage(&msg, 0, 0, 0) > 0) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + + HRESULT PostMessageLoop() + { + T* pThis = static_cast(this); + return pThis->RevokeClassObjects(); + } + + HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) + { + return AtlComModuleRegisterClassObjects(&_AtlComModule, dwClsContext, dwFlags); + } + + HRESULT RevokeClassObjects() + { + return AtlComModuleRevokeClassObjects(&_AtlComModule); + } + + static HRESULT InitializeCom() + { + return ::CoInitializeEx(NULL, COINIT_MULTITHREADED); + } + + static void UninitializeCom() + { + ::CoUninitialize(); + } + +}; + + + class CComModule : public CAtlModuleT { public: @@ -1421,10 +1545,11 @@ inline HRESULT __stdcall AtlInternalQueryInterface(void *pThis, const _ATL_INTMA else { hResult = pEntries[i].pFunc(pThis, iid, ppvObject, 0); - if (hResult == S_OK || (FAILED(hResult) && pEntries[i].piid != NULL)) + if (hResult == S_OK) return hResult; + if (FAILED(hResult) && pEntries[i].piid != NULL) + break; } - break; } i++; } @@ -1685,6 +1810,55 @@ inline HRESULT WINAPI AtlComModuleUnregisterServer(_ATL_COM_MODULE *mod, BOOL bU } +// Adapted from dll/win32/atl/atl.c +inline HRESULT WINAPI AtlComModuleRegisterClassObjects(_ATL_COM_MODULE *module, DWORD context, DWORD flags) +{ + _ATL_OBJMAP_ENTRY **iter; + IUnknown* unk = NULL; + HRESULT hr; + + if (!module) + return E_INVALIDARG; + + for (iter = module->m_ppAutoObjMapFirst; iter < module->m_ppAutoObjMapLast; iter++) + { + if (!(*iter)->pfnGetClassObject) + continue; + + hr = (*iter)->pfnGetClassObject((void*)(*iter)->pfnCreateInstance, IID_IUnknown, (void**)&unk); + if (FAILED(hr)) + return hr; + + hr = CoRegisterClassObject(*(*iter)->pclsid, unk, context, flags, &(*iter)->dwRegister); + unk->Release(); + if (FAILED(hr)) + return hr; + } + + return S_OK; +} + + +// Adapted from dll/win32/atl/atl.c +inline HRESULT WINAPI AtlComModuleRevokeClassObjects(_ATL_COM_MODULE *module) +{ + _ATL_OBJMAP_ENTRY **iter; + HRESULT hr; + + if (!module) + return E_INVALIDARG; + + for (iter = module->m_ppAutoObjMapFirst; iter < module->m_ppAutoObjMapLast; iter++) + { + hr = CoRevokeClassObject((*iter)->dwRegister); + if (FAILED(hr)) + return hr; + } + + return S_OK; +} + + }; // namespace ATL #ifndef _ATL_NO_AUTOMATIC_NAMESPACE diff --git a/sdk/lib/atl/atlcomcli.h b/sdk/lib/atl/atlcomcli.h index 9c19e3371c4..20151dba9f6 100644 --- a/sdk/lib/atl/atlcomcli.h +++ b/sdk/lib/atl/atlcomcli.h @@ -301,6 +301,12 @@ public: return *this; } + void Attach(BSTR bstr) + { + ::SysFreeString(m_str); + m_str = bstr; + } + BSTR Detach() { BSTR str = m_str; diff --git a/sdk/lib/atl/atlwin.h b/sdk/lib/atl/atlwin.h index 3f68348a4ee..b21087012f5 100644 --- a/sdk/lib/atl/atlwin.h +++ b/sdk/lib/atl/atlwin.h @@ -20,7 +20,7 @@ #pragma once -#ifdef __GNUC__ +#if defined(__GNUC__) || defined(__clang__) #define GCCU(x) x __attribute__((unused)) #define Unused(x) #else @@ -575,6 +575,17 @@ public: return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount); } +#ifdef __ATLSTR_H__ + UINT GetDlgItemText(int nID, CSimpleString& string) + { + HWND item = GetDlgItem(nID); + int len = ::GetWindowTextLength(item); + len = GetDlgItemText(nID, string.GetBuffer(len+1), len+1); + string.ReleaseBuffer(len); + return len; + } +#endif + BOOL GetDlgItemText(int nID, BSTR& bstrText) const { ATLASSERT(::IsWindow(m_hWnd)); @@ -1800,6 +1811,15 @@ public: return TRUE; \ } +#define COMMAND_CODE_HANDLER(code, func) \ + if (uMsg == WM_COMMAND && code == HIWORD(wParam)) \ + { \ + bHandled = TRUE; \ + lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \ + if (bHandled) \ + return TRUE; \ + } + #define COMMAND_RANGE_HANDLER(idFirst, idLast, func) \ if (uMsg == WM_COMMAND && LOWORD(wParam) >= idFirst && LOWORD(wParam) <= idLast) \ { \ diff --git a/sdk/lib/atl/cstringt.h b/sdk/lib/atl/cstringt.h index b758514ba4f..5d278c5a0ad 100644 --- a/sdk/lib/atl/cstringt.h +++ b/sdk/lib/atl/cstringt.h @@ -143,6 +143,12 @@ public: return ::vswprintf(pszDest, pszFormat, args); } + static BSTR __cdecl AllocSysString( + _In_z_ LPCWSTR pszSource, + _In_ int nLength) + { + return ::SysAllocStringLen(pszSource, nLength); + } }; @@ -269,6 +275,19 @@ public: return ::vsprintf(pszDest, pszFormat, args); } + static BSTR __cdecl AllocSysString( + _In_z_ LPCSTR pszSource, + _In_ int nLength) + { + int nLen = ChTraitsCRT::GetBaseTypeLength(pszSource, nLength); + BSTR bstr = ::SysAllocStringLen(NULL, nLen); + if (bstr) + { + ChTraitsCRT::ConvertToBaseType(bstr, nLen, pszSource, nLength); + } + return bstr; + } + }; @@ -797,8 +816,14 @@ public: } + BSTR AllocSysString() const + { + return StringTraits::AllocSysString(CThisSimpleString::GetString(), CThisSimpleString::GetLength()); + } + + }; } //namespace ATL -#endif \ No newline at end of file +#endif