#endif\r
#endif\r
\r
+#define INTERNATIONAL\r
+\r
+#ifdef INTERNATIONAL\r
+# define _(s) T_(s)\r
+# define N_(s) s\r
+#else\r
+# define _(s) s\r
+# define N_(s) s\r
+# define T_(s) s\r
+# define Translate(x, y)\r
+# define LoadLanguageFile(s)\r
+#endif\r
+\r
+#ifdef INTERNATIONAL\r
+\r
+Boolean barbaric; // flag indicating if translation is needed\r
+\r
+// list of item numbers used in each dialog (used to alter language at run time)\r
+\r
+#define ABOUTBOX -1 /* not sure why these are needed */\r
+#define ABOUTBOX2 -1\r
+\r
+int dialogItems[][40] = {\r
+{ ABOUTBOX, IDOK, 400 }, \r
+{ DLG_TimeControl, IDC_Babble, OPT_TCUseMoves, OPT_TCUseInc, OPT_TCUseFixed, \r
+ OPT_TCtext1, OPT_TCtext2, OPT_TCitext1, OPT_TCitext2, OPT_TCftext, GPB_Factors, IDC_Factor1, IDC_Factor2, IDOK, IDCANCEL }, \r
+{ DLG_LoadOptions, OPT_Autostep, OPT_AStext1, IDOK, IDCANCEL }, \r
+{ DLG_SaveOptions, OPT_Autosave, OPT_AVPrompt, OPT_AVToFile, OPT_AVBrowse,\r
+ 801, OPT_PGN, OPT_Old, OPT_OutOfBookInfo, IDOK, IDCANCEL }, \r
+{ 1536, 1090, IDC_Directories, 1089, 1091, IDOK, IDCANCEL, 1038, IDC_IndexNr, 1037 }, \r
+{ DLG_CommPort, IDOK, IDCANCEL, IDC_Port, IDC_Rate, IDC_Bits, IDC_Parity,\r
+ IDC_Stop, IDC_Flow, OPT_SerialHelp }, \r
+{ DLG_EditComment, IDOK, OPT_CancelComment, OPT_ClearComment, OPT_EditComment }, \r
+{ DLG_PromotionKing, PB_Chancellor, PB_Archbishop, PB_Queen, PB_Rook, \r
+ PB_Bishop, PB_Knight, PB_King, IDCANCEL, IDC_Yes, IDC_No, IDC_Centaur }, \r
+{ ABOUTBOX2, IDC_ChessBoard }, \r
+{ DLG_GameList, OPT_GameListLoad, OPT_GameListPrev, OPT_GameListNext, \r
+ OPT_GameListClose, IDC_GameListDoFilter }, \r
+{ DLG_EditTags, IDOK, OPT_TagsCancel, OPT_EditTags }, \r
+{ DLG_Error, IDOK }, \r
+{ DLG_Colorize, IDOK, IDCANCEL, OPT_ChooseColor, OPT_Bold, OPT_Italic,\r
+ OPT_Underline, OPT_Strikeout, OPT_Sample }, \r
+{ DLG_Question, IDOK, IDCANCEL, OPT_QuestionText }, \r
+{ DLG_Startup, IDC_Welcome, OPT_ChessEngine, OPT_ChessServer, OPT_View,\r
+ IDC_SPECIFY_ENG_STATIC, IDC_SPECIFY_SERVER_STATIC, OPT_AnyAdditional,\r
+ IDOK, IDCANCEL, IDM_HELPCONTENTS }, \r
+{ DLG_IndexNumber, IDC_Index }, \r
+{ DLG_TypeInMove, IDOK, IDCANCEL }, \r
+{ DLG_TypeInName, IDOK, IDCANCEL }, \r
+{ DLG_Sound, IDC_Event, OPT_NoSound, OPT_DefaultBeep, OPT_BuiltInSound,\r
+ OPT_WavFile, OPT_BrowseSound, OPT_DefaultSounds, IDOK, IDCANCEL, OPT_PlaySound }, \r
+{ DLG_GeneralOptions, IDOK, IDCANCEL, OPT_AlwaysOnTop, OPT_HighlightLastMove,\r
+ OPT_AlwaysQueen, OPT_PeriodicUpdates, OPT_AnimateDragging, OPT_PonderNextMove, OPT_AnimateMoving, OPT_PopupExitMessage, OPT_AutoFlag, OPT_PopupMoveErrors,\r
+ OPT_AutoFlipView, OPT_ShowButtonBar, OPT_AutoRaiseBoard, OPT_ShowCoordinates,\r
+ OPT_Blindfold, OPT_ShowThinking, OPT_HighlightDragging, OPT_TestLegality,\r
+ OPT_SaveExtPGN, OPT_HideThinkFromHuman, OPT_ExtraInfoInMoveHistory,\r
+ OPT_HighlightMoveArrow, OPT_AutoLogo }, \r
+{ DLG_IcsOptions, IDOK, IDCANCEL, OPT_AutoComment, OPT_AutoKibitz, OPT_AutoObserve,\r
+ OPT_GetMoveList, OPT_LocalLineEditing, OPT_QuietPlay, OPT_SeekGraph, OPT_AutoRefresh,\r
+ OPT_BgObserve, OPT_DualBoard, OPT_Premove, OPT_PremoveWhite, OPT_PremoveBlack,\r
+ OPT_SmartMove, OPT_IcsAlarm, IDC_Sec, OPT_ChooseShoutColor, OPT_ChooseSShoutColor,\r
+ OPT_ChooseChannel1Color, OPT_ChooseChannelColor, OPT_ChooseKibitzColor,\r
+ OPT_ChooseTellColor, OPT_ChooseChallengeColor, OPT_ChooseRequestColor,\r
+ OPT_ChooseSeekColor, OPT_ChooseNormalColor, OPT_ChooseBackgroundColor,\r
+ OPT_DefaultColors, OPT_DontColorize, IDC_Boxes, GPB_Colors, GPB_Premove,\r
+ GPB_General, GPB_Alarm }, \r
+{ DLG_BoardOptions, IDOK, IDCANCEL, OPT_SizeTiny, OPT_SizeTeeny, OPT_SizeDinky,\r
+ OPT_SizePetite, OPT_SizeSlim, OPT_SizeSmall, OPT_SizeMediocre, OPT_SizeMiddling,\r
+ OPT_SizeAverage, OPT_SizeModerate, OPT_SizeMedium, OPT_SizeBulky, OPT_SizeLarge,\r
+ OPT_SizeBig, OPT_SizeHuge, OPT_SizeGiant, OPT_SizeColossal, OPT_SizeTitanic,\r
+ OPT_ChooseLightSquareColor, OPT_ChooseDarkSquareColor, OPT_ChooseWhitePieceColor,\r
+ OPT_ChooseBlackPieceColor, OPT_ChooseHighlightSquareColor, OPT_ChoosePremoveHighlightColor,\r
+ OPT_Monochrome, OPT_AllWhite, OPT_UpsideDown, OPT_DefaultBoardColors, GPB_Colors,\r
+ IDC_Light, IDC_Dark, IDC_White, IDC_Black, IDC_High, IDC_PreHigh, GPB_Size }, \r
+{ DLG_NewVariant, IDOK, IDCANCEL, OPT_VariantNormal, OPT_VariantFRC, OPT_VariantWildcastle,\r
+ OPT_VariantNocastle, OPT_VariantLosers, OPT_VariantGiveaway, OPT_VariantSuicide,\r
+ OPT_Variant3Check, OPT_VariantTwoKings, OPT_VariantAtomic, OPT_VariantCrazyhouse,\r
+ OPT_VariantBughouse, OPT_VariantTwilight, OPT_VariantShogi, OPT_VariantSuper,\r
+ OPT_VariantKnightmate, OPT_VariantBerolina, OPT_VariantCylinder, OPT_VariantFairy,\r
+ OPT_VariantMakruk, OPT_VariantGothic, OPT_VariantCapablanca, OPT_VariantJanus,\r
+ OPT_VariantCRC, OPT_VariantFalcon, OPT_VariantCourier, OPT_VariantGreat,\r
+ OPT_VariantShatranj, OPT_VariantXiangqi, GPB_Variant, GPB_Board, IDC_Height,\r
+ IDC_Width, IDC_Hand, IDC_Pieces, IDC_Def }, \r
+{ DLG_Fonts, IDOK, IDCANCEL, OPT_ChooseClockFont, OPT_ChooseMessageFont,\r
+ OPT_ChooseCoordFont, OPT_ChooseTagFont, OPT_ChooseCommentsFont, OPT_ChooseConsoleFont, OPT_ChooseMoveHistoryFont, OPT_DefaultFonts,\r
+ OPT_ClockFont, OPT_MessageFont, OPT_CoordFont, OPT_EditTagsFont,\r
+ OPT_CommentsFont, OPT_MessageFont5, GPB_Current, GPB_All, OPT_MessageFont6 }, \r
+{ DLG_NewGameFRC, IDC_NFG_Label, IDC_NFG_Random, IDOK, IDCANCEL }, \r
+{ DLG_GameListOptions, IDC_GLT, IDC_GLT_Up, IDC_GLT_Down, IDC_GLT_Restore,\r
+ IDC_GLT_Default, IDOK, IDCANCEL, IDC_GLT_RestoreTo }, \r
+{ DLG_MoveHistory }, \r
+{ DLG_EvalGraph }, \r
+{ DLG_EngineOutput, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineLabel2, IDC_Engine2_NPS }, \r
+{ DLG_Chat, IDC_Partner, IDC_Clear, IDC_Send, }, \r
+{ DLG_EnginePlayOptions, IDC_EpPonder, IDC_EpShowThinking, IDC_EpHideThinkingHuman,\r
+ IDC_EpPeriodicUpdates, GPB_Adjudications, IDC_Draw, IDC_Moves, IDC_Threshold,\r
+ IDC_Centi, IDC_TestClaims, IDC_DetectMates, IDC_MaterialDraws, IDC_TrivialDraws,\r
+ GPB_Apply, IDC_Rule, IDC_Repeats, IDC_ScoreAbs1, IDC_ScoreAbs2, IDOK, IDCANCEL }, \r
+{ DLG_OptionsUCI, IDC_PolyDir, IDC_BrowseForPolyglotDir, IDC_Hash, IDC_Path,\r
+ IDC_BrowseForEGTB, IDC_Cache, IDC_UseBook, IDC_BrowseForBook, IDC_CPU, IDC_OwnBook1,\r
+ IDC_OwnBook2, IDC_Depth, IDC_Variation, IDC_DefGames, IDOK, IDCANCEL },\r
+{ 0 }\r
+};\r
+\r
+char languageBuf[40000], *foreign[1000], *english[1000];\r
+\r
+void\r
+LoadLanguageFile(char *name)\r
+{ //load the file with translations, and make a list of the strings to be translated, and their translations\r
+ FILE *f;\r
+ int i=0, j=0, n=0, k;\r
+ static char oldLanguage[MSG_SIZ];\r
+ if(!strcmp(name, oldLanguage)) return;\r
+ if(!name || name[0] == NULLCHAR) return;\r
+ if((f = fopen(name, "r")) == NULL) return;\r
+ while((k = fgetc(f)) != EOF) {\r
+ if(i >= sizeof(languageBuf)) { DisplayError("Language file too big", 0); return; }\r
+ languageBuf[i] = k;\r
+ if(k == '\n') {\r
+ if(languageBuf[n] == '"' && languageBuf[i-1] == '"') {\r
+ char *p;\r
+ if(p = strstr(languageBuf + n + 1, "\" === \"")) {\r
+ if(p > languageBuf+n+2 && p+8 < languageBuf+i) {\r
+ if(j >= sizeof(english)) { DisplayError("Too many translated strings", 0); return; }\r
+ english[j] = languageBuf + n + 1; *p = 0;\r
+ foreign[j++] = p + 7; languageBuf[i-1] = 0;\r
+if(appData.debugMode) fprintf(debugFP, "translation: replace '%s' by '%s'\n", english[j-1], foreign[j-1]);\r
+ }\r
+ }\r
+ }\r
+ n = i + 1;\r
+ } else if(i > 0 && languageBuf[i-1] == '\\') {\r
+ switch(k) {\r
+ case 'n': k = '\n'; break;\r
+ case 'r': k = '\r'; break;\r
+ case 't': k = '\t'; break;\r
+ }\r
+ languageBuf[--i] = k;\r
+ }\r
+ i++;\r
+ }\r
+ fclose(f);\r
+ barbaric = (j != 0);\r
+ if(barbaric) strcpy(oldLanguage, name); else oldLanguage[0] = NULLCHAR;\r
+}\r
+\r
+char *\r
+T_(char *s)\r
+{ // return the translation of the given string\r
+ // efficiency can be improved a lot...\r
+ int i=0;\r
+if(appData.debugMode) fprintf(debugFP, "T_(%s)\n", s);\r
+ if(!barbaric) return s;\r
+ if(!s) return ""; // sanity\r
+ while(english[i]) {\r
+ if(!strcmp(s, english[i])) return foreign[i];\r
+ i++;\r
+ }\r
+ return s;\r
+}\r
+\r
+void\r
+Translate(HANDLE hDlg, int dialogID)\r
+{ // translate all text items in the given dialog\r
+ int i=0, j, k;\r
+ char buf[MSG_SIZ], *s;\r
+//if(appData.debugMode) fprintf(debugFP, "Translate(%d)\n", dialogID);\r
+ if(!barbaric) return;\r
+ while(dialogItems[i][0] && dialogItems[i][0] != dialogID) i++; // find the dialog description\r
+ if(dialogItems[i][0] != dialogID) return; // unknown dialog, should not happen\r
+ GetWindowText( hDlg, buf, MSG_SIZ );\r
+ s = T_(buf);\r
+if(appData.debugMode) fprintf(debugFP, "WindowText '%s' -> '%s'\n", buf, s);\r
+ if(strcmp(buf, s)) SetWindowText(hDlg, s); // replace by translated string (if different)\r
+ for(j=1; k=dialogItems[i][j]; j++) { // translate all listed dialog items\r
+ GetDlgItemText(hDlg, k, buf, MSG_SIZ);\r
+ if(strlen(buf) == 0) continue;\r
+ s = T_(buf);\r
+ if(strcmp(buf, s)) SetDlgItemText(hDlg, k, s); // replace by translated string (if different)\r
+ }\r
+}\r
+\r
+void\r
+TranslateMenus()\r
+{\r
+ int i, j;\r
+ if(barbaric) {\r
+ HMENU mainMenu = GetMenu(hwndMain);\r
+ for (i=GetMenuItemCount(mainMenu)-1; i>=0; i--) {\r
+ HMENU subMenu = GetSubMenu(mainMenu, i);\r
+ for(j=GetMenuItemCount(subMenu)-1; j>=0; j--){\r
+ char buf[MSG_SIZ];\r
+ UINT k = GetMenuItemID(subMenu, j);\r
+ GetMenuString(subMenu, j, buf, MSG_SIZ, MF_BYPOSITION);\r
+ if(buf[0] == NULLCHAR) continue;\r
+//fprintf(debugFP, "menu(%d,%d) = %s (%08x, %08x) %d\n", i, j, buf, mainMenu, subMenu, k);\r
+ ModifyMenu(subMenu, j, MF_STRING|MF_BYPOSITION, \r
+ k, T_(buf));\r
+ }\r
+ }\r
+ \r
+ }\r
+}\r
+\r
+#endif\r
+\r
typedef struct {\r
char *name;\r
int squareSize;\r
int tinyLayout = 0, smallLayout = 0;\r
#define MENU_BAR_ITEMS 7\r
char *menuBarText[2][MENU_BAR_ITEMS+1] = {\r
- { "&File", "&Mode", "&Action", "&Step", "&Options", "&Help", NULL },\r
- { "&F", "&M", "&A", "&S", "&O", "&H", NULL },\r
+ { N_("&File"), N_("&Mode"), N_("&Action"), N_("&Step"), N_("&Options"), N_("&Help"), NULL },\r
+ { N_("&F"), N_("&M"), N_("&A"), N_("&S"), N_("&O"), N_("&H"), NULL },\r
};\r
\r
\r
MyTextAttribs textAttribs[(int)NColorClasses];\r
\r
MyColorizeAttribs colorizeAttribs[] = {\r
- { (COLORREF)0, 0, "Shout Text" },\r
- { (COLORREF)0, 0, "SShout/CShout" },\r
- { (COLORREF)0, 0, "Channel 1 Text" },\r
- { (COLORREF)0, 0, "Channel Text" },\r
- { (COLORREF)0, 0, "Kibitz Text" },\r
- { (COLORREF)0, 0, "Tell Text" },\r
- { (COLORREF)0, 0, "Challenge Text" },\r
- { (COLORREF)0, 0, "Request Text" },\r
- { (COLORREF)0, 0, "Seek Text" },\r
- { (COLORREF)0, 0, "Normal Text" },\r
- { (COLORREF)0, 0, "None" }\r
+ { (COLORREF)0, 0, N_("Shout Text") },\r
+ { (COLORREF)0, 0, N_("SShout/CShout") },\r
+ { (COLORREF)0, 0, N_("Channel 1 Text") },\r
+ { (COLORREF)0, 0, N_("Channel Text") },\r
+ { (COLORREF)0, 0, N_("Kibitz Text") },\r
+ { (COLORREF)0, 0, N_("Tell Text") },\r
+ { (COLORREF)0, 0, N_("Challenge Text") },\r
+ { (COLORREF)0, 0, N_("Request Text") },\r
+ { (COLORREF)0, 0, N_("Seek Text") },\r
+ { (COLORREF)0, 0, N_("Normal Text") },\r
+ { (COLORREF)0, 0, N_("None") }\r
};\r
\r
\r
setbuf(debugFP, NULL);\r
}\r
\r
+ LoadLanguageFile(appData.language);\r
+\r
InitBackEnd1();\r
\r
// InitEngineUCI( installDir, &first ); // [HGM] incorporated in InitBackEnd1()\r
}\r
\r
InitDrawingSizes(boardSize, 0);\r
+ TranslateMenus();\r
InitMenuChecks();\r
buttonCount = GetSystemMetrics(SM_CMOUSEBUTTONS);\r
\r
q = strchr(p, ':');\r
if (q) {\r
if (q - p >= sizeof(mfp->faceName))\r
- ExitArgError("Font name too long:", name);\r
+ ExitArgError(_("Font name too long:"), name);\r
memcpy(mfp->faceName, p, q - p);\r
mfp->faceName[q - p] = NULLCHAR;\r
p = q + 1;\r
while (*p && !isdigit(*p)) {\r
*q++ = *p++;\r
if (q - mfp->faceName >= sizeof(mfp->faceName))\r
- ExitArgError("Font name too long:", name);\r
+ ExitArgError(_("Font name too long:"), name);\r
}\r
while (q > mfp->faceName && q[-1] == ' ') q--;\r
*q = NULLCHAR;\r
}\r
- if (!*p) ExitArgError("Font point size missing:", name);\r
+ if (!*p) ExitArgError(_("Font point size missing:"), name);\r
mfp->pointSize = (float) atof(p);\r
mfp->bold = (strchr(p, 'b') != NULL);\r
mfp->italic = (strchr(p, 'i') != NULL);\r
&red, &green, &blue);\r
}\r
if (count != 3) {\r
- sprintf(buf, "Can't parse color name %s", name);\r
+ sprintf(buf, _("Can't parse color name %s"), name);\r
DisplayError(buf, 0);\r
return RGB(0, 0, 0);\r
}\r
}\r
bs++;\r
}\r
- ExitArgError("Unrecognized board size value", name);\r
+ ExitArgError(_("Unrecognized board size value"), name);\r
}\r
\r
void\r
{\r
FARPROC lpProc;\r
\r
+ LoadLanguageFile(appData.language);\r
lpProc = MakeProcInstance((FARPROC)StartupDialog, hInst);\r
DialogBox(hInst, MAKEINTRESOURCE(DLG_Startup), NULL, (DLGPROC)lpProc);\r
FreeProcInstance(lpProc);\r
LPPALETTEENTRY pe = &(pLogPal->palPalEntry[pLogPal->palNumEntries]);\r
\r
if (pLogPal->palNumEntries++ >= PALETTESIZE) {\r
- DisplayFatalError("Too many colors", 0, 1);\r
+ DisplayFatalError(_("Too many colors"), 0, 1);\r
pLogPal->palNumEntries--;\r
return;\r
}\r
\r
for (i=0; menuBarText[tinyLayout][i]; i++) {\r
ModifyMenu(hmenu, i, MF_STRING|MF_BYPOSITION|MF_POPUP, \r
- (UINT)GetSubMenu(hmenu, i), menuBarText[tinyLayout][i]);\r
+ (UINT)GetSubMenu(hmenu, i), T_(menuBarText[tinyLayout][i]));\r
}\r
DrawMenuBar(hwndMain);\r
}\r
/* Get text area sizes */\r
hdc = GetDC(hwndMain);\r
if (appData.clockMode) {\r
- sprintf(buf, "White: %s", TimeString(23*60*60*1000L));\r
+ sprintf(buf, _("White: %s"), TimeString(23*60*60*1000L));\r
} else {\r
- sprintf(buf, "White");\r
+ sprintf(buf, _("White"));\r
}\r
oldFont = SelectObject(hdc, font[boardSize][CLOCK_FONT]->hf);\r
GetTextExtentPoint(hdc, buf, strlen(buf), &clockSize);\r
SelectObject(hdc, font[boardSize][MESSAGE_FONT]->hf);\r
- str = "We only care about the height here";\r
+ str = _("We only care about the height here");\r
GetTextExtentPoint(hdc, str, strlen(str), &messageSize);\r
SelectObject(hdc, oldFont);\r
ReleaseDC(hwndMain, hdc);\r
} DropEnable;\r
\r
DropEnable dropEnables[] = {\r
- { 'P', DP_Pawn, "Pawn" },\r
- { 'N', DP_Knight, "Knight" },\r
- { 'B', DP_Bishop, "Bishop" },\r
- { 'R', DP_Rook, "Rook" },\r
- { 'Q', DP_Queen, "Queen" },\r
+ { 'P', DP_Pawn, N_("Pawn") },\r
+ { 'N', DP_Knight, N_("Knight") },\r
+ { 'B', DP_Bishop, N_("Bishop") },\r
+ { 'R', DP_Rook, N_("Rook") },\r
+ { 'Q', DP_Queen, N_("Queen") },\r
};\r
\r
VOID\r
dropEnables[i].piece);\r
count = 0;\r
while (p && *p++ == dropEnables[i].piece) count++;\r
- sprintf(item, "%s %d", dropEnables[i].name, count);\r
+ sprintf(item, "%s %d", T_(dropEnables[i].name), count);\r
enable = count > 0 || !appData.testLegality\r
/*!!temp:*/ || (gameInfo.variant == VariantCrazyhouse\r
&& !appData.icsActive);\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_PromotionKing);\r
ShowWindow(GetDlgItem(hDlg, PB_King), \r
(!appData.testLegality || gameInfo.variant == VariantSuicide ||\r
gameInfo.variant == VariantGiveaway || gameInfo.variant == VariantSuper ) ?\r
if (number == 0) {\r
int error = GameListBuild(f);\r
if (error) {\r
- DisplayError("Cannot build game list", error);\r
+ DisplayError(_("Cannot build game list"), error);\r
} else if (!ListEmpty(&gameList) &&\r
((ListGame *) gameList.tailPred)->number > 1) {\r
GameListPopUp(f, fileTitle);\r
break;\r
\r
case IDM_LoadGame:\r
- LoadGameDialog(hwnd, "Load Game from File");\r
+ LoadGameDialog(hwnd, _("Load Game from File"));\r
break;\r
\r
case IDM_LoadNextGame:\r
f = OpenFileDialog(hwnd, "rb", "",\r
appData.oldSaveStyle ? "pos" : "fen",\r
POSITION_FILT,\r
- "Load Position from File", &number, fileTitle, NULL);\r
+ _("Load Position from File"), &number, fileTitle, NULL);\r
if (f != NULL) {\r
LoadPosition(f, number, fileTitle);\r
}\r
f = OpenFileDialog(hwnd, "a", defName,\r
appData.oldSaveStyle ? "gam" : "pgn",\r
GAME_FILT,\r
- "Save Game to File", NULL, fileTitle, NULL);\r
+ _("Save Game to File"), NULL, fileTitle, NULL);\r
if (f != NULL) {\r
SaveGame(f, 0, "");\r
}\r
f = OpenFileDialog(hwnd, "a", defName,\r
appData.oldSaveStyle ? "pos" : "fen",\r
POSITION_FILT,\r
- "Save Position to File", NULL, fileTitle, NULL);\r
+ _("Save Position to File"), NULL, fileTitle, NULL);\r
if (f != NULL) {\r
SavePosition(f, 0, "");\r
}\r
\r
case IDM_AnalysisMode:\r
if (!first.analysisSupport) {\r
- sprintf(buf, "%s does not support analysis", first.tidy);\r
+ sprintf(buf, _("%s does not support analysis"), first.tidy);\r
DisplayError(buf, 0);\r
} else {\r
SAY("analyzing current position");\r
case IDM_AnalyzeFile:\r
if (!first.analysisSupport) {\r
char buf[MSG_SIZ];\r
- sprintf(buf, "%s does not support analysis", first.tidy);\r
+ sprintf(buf, _("%s does not support analysis"), first.tidy);\r
DisplayError(buf, 0);\r
} else {\r
if (!appData.showThinking) ToggleShowThinking();\r
AnalyzeFileEvent();\r
- LoadGameDialog(hwnd, "Analyze Game from File");\r
+ LoadGameDialog(hwnd, _("Analyze Game from File"));\r
AnalysisPeriodicEvent(1);\r
}\r
break;\r
if (!MyHelp (hwnd, "winboard.hlp", HELP_KEY,(DWORD)(LPSTR)"CONTENTS") &&\r
!HtmlHelp(hwnd, "winboard.chm", 0, 0) ) {\r
MessageBox (GetFocus(),\r
- "Unable to activate help",\r
+ _("Unable to activate help"),\r
szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);\r
}\r
break;\r
if (!MyHelp (hwnd, "winboard.hlp", HELP_PARTIALKEY, (DWORD)(LPSTR)"") &&\r
!HtmlHelp(hwnd, "winboard.chm", 0, 0) ) {\r
MessageBox (GetFocus(),\r
- "Unable to activate help",\r
+ _("Unable to activate help"),\r
szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);\r
}\r
break;\r
case IDM_HELPHELP:\r
if(!WinHelp(hwnd, (LPSTR)NULL, HELP_HELPONHELP, 0)) {\r
MessageBox (GetFocus(),\r
- "Unable to activate help",\r
+ _("Unable to activate help"),\r
szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);\r
}\r
break;\r
break;\r
\r
case IDM_DirectCommand1:\r
- AskQuestionEvent("Direct Command",\r
- "Send to chess program:", "", "1");\r
+ AskQuestionEvent(_("Direct Command"),\r
+ _("Send to chess program:"), "", "1");\r
break;\r
case IDM_DirectCommand2:\r
- AskQuestionEvent("Direct Command",\r
- "Send to second chess program:", "", "2");\r
+ AskQuestionEvent(_("Direct Command"),\r
+ _("Send to second chess program:"), "", "2");\r
break;\r
\r
case EP_WhitePawn:\r
}\r
if (!ok) {\r
char buf[MSG_SIZ];\r
- sprintf(buf, "Error loading sound %s", ms->name);\r
+ sprintf(buf, _("Error loading sound %s"), ms->name);\r
DisplayError(buf, GetLastError());\r
}\r
return ok;\r
/* open the file */\r
f = fopen(openFileName.lpstrFile, write);\r
if (f == NULL) {\r
- MessageBox(hwnd, "File open failed", NULL,\r
+ MessageBox(hwnd, _("File open failed"), NULL,\r
MB_OK|MB_ICONEXCLAMATION);\r
return NULL;\r
}\r
} else {\r
int err = CommDlgExtendedError();\r
- if (err != 0) DisplayError("Internal error in file dialog box", err);\r
+ if (err != 0) DisplayError(_("Internal error in file dialog box"), err);\r
return FALSE;\r
}\r
return f;\r
case WM_INITDIALOG:\r
/* Center the dialog */\r
CenterWindow (hDlg, GetDesktopWindow());\r
+ Translate(hDlg, DLG_Startup);\r
/* Initialize the dialog items */\r
InitEngineBox(hDlg, GetDlgItem(hDlg, OPT_ChessEngineName),\r
appData.firstChessProgram, "fd", appData.firstDirectory,\r
appData.noChessProgram = TRUE;\r
appData.icsActive = FALSE;\r
} else {\r
- MessageBox(hDlg, "Choose an option, or cancel to exit",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Choose an option, or cancel to exit"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return TRUE;\r
}\r
if (IsDlgButtonChecked(hDlg, OPT_AnyAdditional)) {\r
case IDM_HELPCONTENTS:\r
if (!WinHelp (hDlg, "winboard.hlp", HELP_KEY,(DWORD)(LPSTR)"CONTENTS")) {\r
MessageBox (GetFocus(),\r
- "Unable to activate help",\r
+ _("Unable to activate help"),\r
szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND);\r
}\r
break;\r
switch (message) {\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Initialize the dialog items */\r
+ Translate(hDlg, DLG_EditComment);\r
hwndText = GetDlgItem(hDlg, OPT_CommentText);\r
SetDlgItemText(hDlg, OPT_CommentText, commentText);\r
EnableWindow(GetDlgItem(hDlg, OPT_CancelComment), editComment);\r
move[0] = (char) lParam;\r
move[1] = NULLCHAR;\r
CenterWindowEx(hDlg, GetWindow(hDlg, GW_OWNER), 1 );\r
+ Translate(hDlg, DLG_TypeInMove);\r
hInput = GetDlgItem(hDlg, OPT_Move);\r
SetWindowText(hInput, move);\r
SetFocus(hInput);\r
}\r
if (gameMode != EditGame && currentMove != forwardMostMove && \r
gameMode != Training) {\r
- DisplayMoveError("Displayed move is not current");\r
+ DisplayMoveError(_("Displayed move is not current"));\r
} else {\r
// GetDlgItemText(hDlg, OPT_Move, move, sizeof(move)); // moved upstream\r
int ok = ParseOneMove(move, gameMode == EditPosition ? blackPlaysFirst : currentMove, \r
forwardMostMove = currentMove;\r
UserMoveEvent(fromX, fromY, toX, toY, promoChar); \r
} else {\r
- DisplayMoveError("Could not parse move");\r
+ DisplayMoveError(_("Could not parse move"));\r
}\r
}\r
EndDialog(hDlg, TRUE);\r
move[0] = (char) lParam;\r
move[1] = NULLCHAR;\r
CenterWindowEx(hDlg, GetWindow(hDlg, GW_OWNER), 1 );\r
+ Translate(hDlg, DLG_TypeInName);\r
hInput = GetDlgItem(hDlg, OPT_Name);\r
SetWindowText(hInput, move);\r
SetFocus(hInput);\r
For now, just give it a default position.\r
*/\r
SetWindowPos(hDlg, NULL, boardRect.left+8, boardRect.top+8, 0, 0, SWP_NOZORDER|SWP_NOSIZE);\r
+ Translate(hDlg, DLG_Error);\r
\r
errorDialog = hDlg;\r
SetWindowText(hDlg, errorTitle);\r
}\r
}\r
\r
- ErrorPopUp("Error", buf);\r
+ ErrorPopUp(_("Error"), buf);\r
}\r
\r
\r
ClearHighlights();\r
DrawPosition(FALSE, NULL);\r
if (appData.popupMoveErrors) {\r
- ErrorPopUp("Error", str);\r
+ ErrorPopUp(_("Error"), str);\r
} else {\r
DisplayMessage(str, "");\r
moveErrorMessageUp = TRUE;\r
{\r
char buf[2*MSG_SIZ], buf2[MSG_SIZ];\r
int len;\r
- char *label = exitStatus ? "Fatal Error" : "Exiting";\r
+ char *label = exitStatus ? _("Fatal Error") : _("Exiting");\r
\r
if (error != 0) {\r
len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,\r
VOID\r
DisplayInformation(char *str)\r
{\r
- (void) MessageBox(hwndMain, str, "Information", MB_OK|MB_ICONINFORMATION);\r
+ (void) MessageBox(hwndMain, str, _("Information"), MB_OK|MB_ICONINFORMATION);\r
}\r
\r
\r
VOID\r
DisplayNote(char *str)\r
{\r
- ErrorPopUp("Note", str);\r
+ ErrorPopUp(_("Note"), str);\r
}\r
\r
\r
case WM_INITDIALOG:\r
qp = (QuestionParams *) lParam;\r
CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_Question);\r
SetWindowText(hDlg, qp->title);\r
SetDlgItemText(hDlg, OPT_QuestionText, qp->question);\r
SetFocus(GetDlgItem(hDlg, OPT_QuestionInput));\r
strcat(reply, "\n");\r
OutputToProcess(qp->pr, reply, strlen(reply), &err);\r
EndDialog(hDlg, TRUE);\r
- if (err) DisplayFatalError("Error writing to chess program", err, 1);\r
+ if (err) DisplayFatalError(_("Error writing to chess program"), err, 1);\r
return TRUE;\r
case IDCANCEL:\r
EndDialog(hDlg, FALSE);\r
lpIndexFRC = (int *) lParam;\r
\r
CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_NewGameFRC);\r
\r
SendDlgItemMessage( hDlg, IDC_NFG_Edit, EM_SETLIMITTEXT, sizeof(buf)-1, 0 );\r
SetDlgItemInt( hDlg, IDC_NFG_Edit, *lpIndexFRC, TRUE );\r
gameListOptionsDialog = hDlg; // [HGM] pass through global to keep out off back-end\r
\r
CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_GameListOptions);\r
\r
/* Initialize list */\r
GLT_TagsToList( lpUserGLT );\r
}\r
if (!GetUserName(buf, &bufsiz)) {\r
/*DisplayError("Error getting user name", GetLastError());*/\r
- strcpy(buf, "User");\r
+ strcpy(buf, _("User"));\r
}\r
return buf;\r
}\r
\r
if (!GetComputerName(buf, &bufsiz)) {\r
/*DisplayError("Error getting host name", GetLastError());*/\r
- strcpy(buf, "Unknown");\r
+ strcpy(buf, _("Unknown"));\r
}\r
return buf;\r
}\r
hdc = GetDC(hwndMain);\r
if (!IsIconic(hwndMain)) {\r
DisplayAClock(hdc, timeRemaining, highlight, \r
- flipClock ? &blackRect : &whiteRect, "White", flag);\r
+ flipClock ? &blackRect : &whiteRect, _("White"), flag);\r
}\r
if (highlight && iconCurrent == iconBlack) {\r
iconCurrent = iconWhite;\r
hdc = GetDC(hwndMain);\r
if (!IsIconic(hwndMain)) {\r
DisplayAClock(hdc, timeRemaining, highlight, \r
- flipClock ? &whiteRect : &blackRect, "Black", flag);\r
+ flipClock ? &whiteRect : &blackRect, _("Black"), flag);\r
}\r
if (highlight && iconCurrent == iconWhite) {\r
iconCurrent = iconBlack;\r
f = OpenFileDialog(hwndMain, "a", defName,\r
appData.oldSaveStyle ? "gam" : "pgn",\r
GAME_FILT, \r
- "Save Game to File", NULL, fileTitle, NULL);\r
+ _("Save Game to File"), NULL, fileTitle, NULL);\r
if (f != NULL) {\r
SaveGame(f, 0, "");\r
fclose(f);\r
int\r
OpenLoopback(ProcRef *pr)\r
{\r
- DisplayFatalError("Not implemented", 0, 1);\r
+ DisplayFatalError(_("Not implemented"), 0, 1);\r
return NO_ERROR;\r
}\r
\r
CmailSigHandlerCallBack(InputSourceRef isr, VOIDSTAR closure,\r
char *buf, int count, int error)\r
{\r
- DisplayFatalError("Not implemented", 0, 1);\r
+ DisplayFatalError(_("Not implemented"), 0, 1);\r
}\r
\r
/* see wgamelist.c for Game List functions */\r
#include <string.h>\r
#endif\r
\r
+#define _(s) T_(s)\r
+#define N_(s) s\r
+\r
/* Imports from winboard.c */\r
\r
extern MyFont *font[NUM_SIZES][NUM_FONTS];\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_BoardOptions);\r
/* Initialize the dialog items */\r
switch (boardSize) {\r
case SizeTiny:\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_NewVariant);\r
/* Initialize the dialog items */\r
switch (gameInfo.variant) {\r
case VariantNormal:\r
if(!appData.noChessProgram) { char *name = VariantName(v), buf[MSG_SIZ];\r
if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {\r
/* [HGM] in protocol 2 we check if variant is suported by engine */\r
- sprintf(buf, "Variant %s not supported by %s", name, first.tidy);\r
+ sprintf(buf, _("Variant %s not supported by %s"), name, first.tidy);\r
DisplayError(buf, 0);\r
- return TRUE; /* treat as "Cancel" if first engine does not support it */\r
+ return TRUE; /* treat as _("Cancel") if first engine does not support it */\r
} else\r
if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {\r
- sprintf(buf, "Warning: second engine (%s) does not support this!", second.tidy);\r
+ sprintf(buf, _("Warning: second engine (%s) does not support this!"), second.tidy);\r
DisplayError(buf, 0); /* use of second engine is optional; only warn user */\r
}\r
}\r
mca = colorizeAttribs[cc];\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_Colorize);\r
/* Initialize the dialog items */\r
CheckDlgButton(hDlg, OPT_Bold, (mca.effects & CFE_BOLD) != 0);\r
CheckDlgButton(hDlg, OPT_Italic, (mca.effects & CFE_ITALIC) != 0);\r
\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_IcsOptions);\r
\r
/* Initialize the dialog items */\r
#define CHECK_BOX(x,y) CheckDlgButton(hDlg, (x), (BOOL)(y))\r
/* Read changed options from the dialog box */\r
GetDlgItemText(hDlg, OPT_IcsAlarmTime, buf, MSG_SIZ);\r
if (sscanf(buf, "%d", &number) != 1 || (number < 0)){\r
- MessageBox(hDlg, "Invalid ICS Alarm Time",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid ICS Alarm Time"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
\r
for (i=0; i < NUM_FONTS; i++)\r
CopyFont(&workFont[i], font[boardSize][i]);\r
\r
+ Translate(hDlg, DLG_Fonts);\r
if (!appData.icsActive)\r
EnableWindow(GetDlgItem(hDlg, OPT_ChooseConsoleFont), FALSE);\r
\r
\r
\r
SoundComboData soundComboData[] = {\r
- {"Move", NULL},\r
- {"Bell", NULL},\r
- {"ICS Alarm", NULL},\r
- {"ICS Win", NULL},\r
- {"ICS Loss", NULL},\r
- {"ICS Draw", NULL},\r
- {"ICS Unfinished", NULL},\r
- {"Shout", NULL},\r
- {"SShout/CShout", NULL},\r
- {"Channel 1", NULL},\r
- {"Channel", NULL},\r
- {"Kibitz", NULL},\r
- {"Tell", NULL},\r
- {"Challenge", NULL},\r
- {"Request", NULL},\r
- {"Seek", NULL},\r
+ {N_("Move"), NULL},\r
+ {N_("Bell"), NULL},\r
+ {N_("ICS Alarm"), NULL},\r
+ {N_("ICS Win"), NULL},\r
+ {N_("ICS Loss"), NULL},\r
+ {N_("ICS Draw"), NULL},\r
+ {N_("ICS Unfinished"), NULL},\r
+ {N_("Shout"), NULL},\r
+ {N_("SShout/CShout"), NULL},\r
+ {N_("Channel 1"), NULL},\r
+ {N_("Channel"), NULL},\r
+ {N_("Kibitz"), NULL},\r
+ {N_("Tell"), NULL},\r
+ {N_("Challenge"), NULL},\r
+ {N_("Request"), NULL},\r
+ {N_("Seek"), NULL},\r
{NULL, NULL},\r
};\r
\r
case WM_INITDIALOG:\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_Sound);\r
\r
/* Initialize the built-in sounds combo */\r
hBISN = GetDlgItem(hDlg, OPT_BuiltInSoundName);\r
\r
case OPT_BrowseSound:\r
f = OpenFileDialog(hDlg, "rb", NULL, "wav", SOUND_FILT,\r
- "Browse for Sound File", NULL, NULL, buf);\r
+ _("Browse for Sound File"), NULL, NULL, buf);\r
if (f != NULL) {\r
fclose(f);\r
SetDlgItemText(hDlg, OPT_WavFileName, buf);\r
if (cd->label == NULL) goto cant_parse;\r
return;\r
cant_parse:\r
- ExitArgError("Can't parse com port settings", arg);\r
+ ExitArgError(_("Can't parse com port settings"), arg);\r
}\r
\r
\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow(hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_CommPort);\r
/* Initialize the dialog items */\r
/* !! There should probably be some synchronization\r
in accessing hCommPort and dcb. Or does modal nature\r
hwndCombo = GetDlgItem(hDlg, OPT_DataRate);\r
SendMessage(hwndCombo, WM_GETTEXT, (WPARAM) MSG_SIZ, (LPARAM) buf);\r
if (sscanf(buf, "%u", &value) != 1) {\r
- MessageBox(hDlg, "Invalid data rate",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid data rate"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return TRUE;\r
}\r
dcb.BaudRate = value;\r
err = GetLastError();\r
switch(MessageBox(hDlg, \r
"Failed to set comm port state;\r\ninvalid options?",\r
- "Option Error", MB_ABORTRETRYIGNORE|MB_ICONQUESTION)) {\r
+ _("Option Error"), MB_ABORTRETRYIGNORE|MB_ICONQUESTION)) {\r
case IDABORT:\r
- DisplayFatalError("Failed to set comm port state", err, 1);\r
+ DisplayFatalError(_("Failed to set comm port state"), err, 1);\r
exit(1); /*is it ok to do this from here?*/\r
\r
case IDRETRY:\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_LoadOptions);\r
/* Initialize the dialog items */\r
if (appData.timeDelay >= 0.0) {\r
CheckDlgButton(hDlg, OPT_Autostep, TRUE);\r
if (IsDlgButtonChecked(hDlg, OPT_Autostep)) {\r
GetDlgItemText(hDlg, OPT_ASTimeDelay, buf, MSG_SIZ);\r
if (sscanf(buf, "%f", &fnumber) != 1) {\r
- MessageBox(hDlg, "Invalid load game step rate",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid load game step rate"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
appData.timeDelay = fnumber;\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_SaveOptions);\r
/* Initialize the dialog items */\r
if (*appData.saveGameFile != NULLCHAR) {\r
CheckDlgButton(hDlg, OPT_Autosave, (UINT) TRUE);\r
} else /*if (IsDlgButtonChecked(hDlg, OPT_AVToFile))*/ {\r
GetDlgItemText(hDlg, OPT_AVFilename, buf, MSG_SIZ);\r
if (*buf == NULLCHAR) {\r
- MessageBox(hDlg, "Invalid save game file name",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid save game file name"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
if ((isalpha(buf[0]) && buf[1] == ':') ||\r
case OPT_AVBrowse:\r
f = OpenFileDialog(hDlg, "a", NULL, \r
appData.oldSaveStyle ? "gam" : "pgn", \r
- GAME_FILT, "Browse for Auto Save File", \r
+ GAME_FILT, _("Browse for Auto Save File"), \r
NULL, NULL, buf);\r
if (f != NULL) {\r
fclose(f);\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_TimeControl);\r
/* Initialize the dialog items */\r
if (appData.clockMode && !appData.icsActive) {\r
if (searchTime) {\r
if (IsDlgButtonChecked(hDlg, OPT_TCUseFixed)) {\r
st = GetDlgItemInt(hDlg, OPT_TCFixed, &ok, FALSE);\r
if (!ok || st <= 0) {\r
- MessageBox(hDlg, "Invalid max time per move",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid max time per move"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
} else\r
increment = -1;\r
mps = GetDlgItemInt(hDlg, OPT_TCMoves, &ok, FALSE);\r
if (!ok || mps <= 0) {\r
- MessageBox(hDlg, "Invalid moves per time control",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid moves per time control"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
GetDlgItemText(hDlg, OPT_TCTime, buf, MSG_SIZ);\r
if (!ParseTimeControl(buf, increment, mps)) {\r
- MessageBox(hDlg, "Invalid minutes per time control",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid minutes per time control"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
tc = buf;\r
} else {\r
increment = GetDlgItemInt(hDlg, OPT_TCInc, &ok, FALSE);\r
if (!ok || increment < 0) {\r
- MessageBox(hDlg, "Invalid increment",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid increment"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
GetDlgItemText(hDlg, OPT_TCTime2, buf, MSG_SIZ);\r
if (!ParseTimeControl(buf, increment, mps)) {\r
- MessageBox(hDlg, "Invalid initial time",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid initial time"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
tc = buf;\r
odds1 = GetDlgItemInt(hDlg, OPT_TCOdds1, &ok, FALSE);\r
odds2 = GetDlgItemInt(hDlg, OPT_TCOdds2, &ok2, FALSE);\r
if (!ok || !ok2 || odds1 <= 0 || odds2 <= 0) {\r
- MessageBox(hDlg, "Invalid time-odds factor",\r
- "Option Error", MB_OK|MB_ICONEXCLAMATION);\r
+ MessageBox(hDlg, _("Invalid time-odds factor"),\r
+ _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
return FALSE;\r
}\r
searchTime = st;\r
TimeControlOptionsPopup(HWND hwnd)\r
{\r
if (gameMode != BeginningOfGame) {\r
- DisplayError("Changing time control during a game is not implemented", 0);\r
+ DisplayError(_("Changing time control during a game is not implemented"), 0);\r
} else {\r
FARPROC lpProc = MakeProcInstance((FARPROC)TimeControl, hInst);\r
DialogBox(hInst, MAKEINTRESOURCE(DLG_TimeControl), hwnd, (DLGPROC) lpProc);\r
\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_EnginePlayOptions);\r
\r
/* Initialize the dialog items */\r
CHECK_BOX(IDC_EpPeriodicUpdates, appData.periodicUpdates);\r
\r
ZeroMemory( &bi, sizeof(bi) );\r
\r
- bi.lpszTitle = title == 0 ? "Choose Folder" : title;\r
+ bi.lpszTitle = title == 0 ? _("Choose Folder") : title;\r
bi.ulFlags = BIF_RETURNONLYFSDIRS;\r
\r
pidl = SHBrowseForFolder( &bi );\r
\r
/* Center the dialog over the application window */\r
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));\r
+ Translate(hDlg, DLG_OptionsUCI);\r
\r
/* Initialize the dialog items */\r
SetDlgItemText( hDlg, IDC_PolyglotDir, appData.polyglotDir );\r
ofn.lpstrFilter = filter;\r
ofn.lpstrFile = buf;\r
ofn.nMaxFile = sizeof(buf);\r
- ofn.lpstrTitle = "Choose Book";\r
+ ofn.lpstrTitle = _("Choose Book");\r
ofn.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY;\r
\r
if( GetOpenFileName( &ofn ) ) {\r
return TRUE;\r
\r
case IDC_BrowseForPolyglotDir:\r
- if( BrowseForFolder( "Choose Polyglot Directory", buf ) ) {\r
+ if( BrowseForFolder( _("Choose Polyglot Directory"), buf ) ) {\r
SetDlgItemText( hDlg, IDC_PolyglotDir, buf );\r
\r
strcat( buf, "\\polyglot.exe" );\r
\r
if( GetFileAttributes(buf) == 0xFFFFFFFF ) {\r
- MessageBox( hDlg, "Polyglot was not found in the specified folder!", "Warning", MB_OK | MB_ICONWARNING );\r
+ MessageBox( hDlg, _("Polyglot was not found in the specified folder!"), "Warning", MB_OK | MB_ICONWARNING );\r
}\r
}\r
return TRUE;\r
\r
case IDC_BrowseForEGTB:\r
- if( BrowseForFolder( "Choose EGTB Directory:", buf ) ) {\r
+ if( BrowseForFolder( _("Choose EGTB Directory:"), buf ) ) {\r
SetDlgItemText( hDlg, IDC_PathToEGTB, buf );\r
}\r
return TRUE;\r