Implemented NLS in progman.
diff --git a/programs/progman/string.c b/programs/progman/string.c
index e359810..ea0a8dc 100644
--- a/programs/progman/string.c
+++ b/programs/progman/string.c
@@ -2,6 +2,7 @@
* Program Manager
*
* Copyright 1996 Ulrich Schmid
+ * Copyright 2002 Sylvain Petreolle
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -29,97 +30,35 @@
CHAR STRING_PROGRAM_WIN_CLASS_NAME[] = "PMProgram";
/* Resource names */
-/* Xx will be overwritten with En, ... */
CHAR STRING_ACCEL[] = "ACCEL";
-CHAR STRING_MENU_Xx[] = "MENU_Xx";
-CHAR STRING_NEW_Xx[] = "DIALOG_NEW_Xx";
-CHAR STRING_OPEN_Xx[] = "DIALOG_OPEN_Xx";
-CHAR STRING_MOVE_Xx[] = "DIALOG_MOVE_Xx";
-CHAR STRING_COPY_Xx[] = "DIALOG_COPY_Xx";
-CHAR STRING_DELETE_Xx[] = "DIALOG_DELETE_Xx";
-CHAR STRING_GROUP_Xx[] = "DIALOG_GROUP_Xx";
-CHAR STRING_PROGRAM_Xx[] = "DIALOG_PROGRAM_Xx";
-CHAR STRING_SYMBOL_Xx[] = "DIALOG_SYMBOL_Xx";
-CHAR STRING_EXECUTE_Xx[] = "DIALOG_EXECUTE_Xx";
+CHAR STRING_MENU[] = "MENU";
+CHAR STRING_NEW[] = "DIALOG_NEW";
+CHAR STRING_OPEN[] = "DIALOG_OPEN";
+CHAR STRING_MOVE[] = "DIALOG_MOVE";
+CHAR STRING_COPY[] = "DIALOG_COPY";
+CHAR STRING_DELETE[] = "DIALOG_DELETE";
+CHAR STRING_GROUP[] = "DIALOG_GROUP";
+CHAR STRING_PROGRAM[] = "DIALOG_PROGRAM";
+CHAR STRING_SYMBOL[] = "DIALOG_SYMBOL";
+CHAR STRING_EXECUTE[] = "DIALOG_EXECUTE";
-static BOOL STRING_LoadStringOtherLanguage(UINT num, UINT ids, LPSTR str, UINT len)
+
+VOID STRING_LoadMenus(VOID)
{
- ids -= Globals.wStringTableOffset;
- ids += num * 0x100;
- return(LoadString(Globals.hInstance, ids, str, len));
-};
-
-VOID STRING_SelectLanguageByName(LPCSTR lang)
-{
- INT i;
- CHAR newlang[3];
-
- for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
- if (STRING_LoadStringOtherLanguage(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)) &&
- !lstrcmp(lang, newlang))
- {
- STRING_SelectLanguageByNumber(i);
- return;
- }
-
- /* Fallback */
- for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
- if (STRING_LoadStringOtherLanguage(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)))
- {
- STRING_SelectLanguageByNumber(i);
- return;
- }
-
- MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK);
- PostQuitMessage(1);
-}
-
-VOID STRING_SelectLanguageByNumber(UINT num)
-{
- INT i;
- CHAR lang[3];
CHAR caption[MAX_STRING_LEN];
- CHAR item[MAX_STRING_LEN];
HMENU hMainMenu;
- /* Select string table */
- Globals.wStringTableOffset = num * 0x100;
-
- /* Get Language id */
- LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang));
- Globals.lpszLanguage = lang;
-
/* Set frame caption */
LoadString(Globals.hInstance, IDS_PROGRAM_MANAGER, caption, sizeof(caption));
SetWindowText(Globals.hMainWnd, caption);
- /* Change Resource names */
- lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, lang, 3);
- lstrcpyn(STRING_NEW_Xx + sizeof(STRING_NEW_Xx) - 3, lang, 3);
- lstrcpyn(STRING_OPEN_Xx + sizeof(STRING_OPEN_Xx) - 3, lang, 3);
- lstrcpyn(STRING_MOVE_Xx + sizeof(STRING_MOVE_Xx) - 3, lang, 3);
- lstrcpyn(STRING_COPY_Xx + sizeof(STRING_COPY_Xx) - 3, lang, 3);
- lstrcpyn(STRING_DELETE_Xx + sizeof(STRING_DELETE_Xx) - 3, lang, 3);
- lstrcpyn(STRING_GROUP_Xx + sizeof(STRING_GROUP_Xx) - 3, lang, 3);
- lstrcpyn(STRING_PROGRAM_Xx + sizeof(STRING_PROGRAM_Xx) - 3, lang, 3);
- lstrcpyn(STRING_SYMBOL_Xx + sizeof(STRING_SYMBOL_Xx) - 3, lang, 3);
- lstrcpyn(STRING_EXECUTE_Xx + sizeof(STRING_EXECUTE_Xx) - 3, lang, 3);
-
/* Create menu */
- hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
+ hMainMenu = LoadMenu(Globals.hInstance, MAKEINTRESOURCE(MAIN_MENU));
Globals.hFileMenu = GetSubMenu(hMainMenu, 0);
Globals.hOptionMenu = GetSubMenu(hMainMenu, 1);
Globals.hWindowsMenu = GetSubMenu(hMainMenu, 2);
Globals.hLanguageMenu = GetSubMenu(hMainMenu, 3);
- /* Remove dummy item */
- RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION);
- /* Add language items */
- for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
- if (STRING_LoadStringOtherLanguage(i, IDS_LANGUAGE_MENU_ITEM, item, sizeof(item)))
- AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND,
- PM_FIRST_LANGUAGE + i, item);
-
if (Globals.hMDIWnd)
SendMessage(Globals.hMDIWnd, WM_MDISETMENU,
(WPARAM) hMainMenu,