###
SUBDIRS = po
-xboard_LDADD = -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_LIBS@
+xboard_LDADD = -ldl -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_LIBS@
EXTRA_DIST = pixmaps themes png sounds winboard \
xboard.texi gpl.texinfo texi2man texinfo.tex xboard.man xboard.desktop xboard-config.desktop \
GITVERSION=$(shell sh -c 'git describe --dirty --always 2>/dev/null')
AM_CPPFLAGS=-DINFODIR='"$(infodir)"' @X_CFLAGS@ @CAIRO_CFLAGS@ @FRONTEND_CFLAGS@ -DSYSCONFDIR='"$(sysconfdir)"' \
- -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -D__GIT_VERSION='"$(GITVERSION)"' $(headers)
+ -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -D__GIT_VERSION='"$(GITVERSION)"' \
+ -DCONFIGURE_OPTIONS='"@CONFIGURE_OPTIONS@"' -DDATADIR='"$(datadir)/games/xboard"' $(headers)
ACLOCAL_AMFLAGS = -I m4
### icon files
-icondir = $(datadir)/icons/hicolor/48x48/apps
+icondir = @ICONSDIR@
dist_icon_DATA = xboard.png
-svgicondir = $(datadir)/icons/hicolor/scalable/apps
+svgicondir = @SVGICONSDIR@
dist_svgicon_DATA = xboard.svg
### desktop files for KDE and gnome
-Applicationsdir = $(datadir)/applications
+Applicationsdir = @DESKTOPDIR@
Applications_DATA = xboard.desktop xboard-fen-viewer.desktop xboard-pgn-viewer.desktop xboard-tourney.desktop xboard-config.desktop
### mime file
-mimedir = $(datadir)/mime/packages
+mimedir = @MIMEDIR@
mime_DATA = xboard.xml
+gamedatadir = @GAMEDATADIR@
+
### directory and files for svgs
-svgdir = $(datadir)/games/xboard/themes/default
+svgdir = $(gamedatadir)/themes/default
dist_svg_DATA = svg/icon_white.svg svg/icon_black.svg \
svg/BlackAdvisor.svg svg/WhiteAdvisor.svg \
svg/BlackArchbishop.svg svg/WhiteArchbishop.svg \
svg/BlackQueen.svg svg/WhiteQueen.svg \
svg/BlackRook.svg svg/WhiteRook.svg \
svg/BlackUnicorn.svg svg/WhiteUnicorn.svg \
+ svg/BlackSword.svg svg/WhiteSword.svg \
+ svg/BlackHSword.svg svg/WhiteHSword.svg \
+ svg/BlackLeopard.svg svg/WhiteLeopard.svg \
+ svg/BlackLion.svg svg/WhiteLion.svg \
+ svg/BlackPromoBishop.svg svg/WhitePromoBishop.svg \
+ svg/BlackPromoRook.svg svg/WhitePromoRook.svg \
+ svg/BlackPromoHorse.svg svg/WhitePromoHorse.svg \
+ svg/BlackPromoDragon.svg svg/WhitePromoDragon.svg \
+ svg/BlackPromoSword.svg svg/WhitePromoSword.svg \
+ svg/BlackPromoHSword.svg svg/WhitePromoHSword.svg \
+ svg/BlackHCrown.svg svg/WhiteHCrown.svg \
+ svg/BlackDolphin.svg svg/WhiteDolphin.svg \
+ svg/BlackClaw.svg svg/WhiteClaw.svg \
svg/eo_Analyzing.svg svg/eo_Black.svg \
svg/eo_Clear.svg svg/eo_Ponder.svg \
svg/eo_Thinking.svg svg/eo_Unknown.svg \
svg/eo_White.svg
-shogidir = $(datadir)/games/xboard/themes/shogi
+shogidir = $(gamedatadir)/themes/shogi
dist_shogi_DATA = \
themes/shogi/WhiteGold.svg themes/shogi/WhiteCrownedBishop.svg\
themes/shogi/WhiteBishop.svg themes/shogi/WhiteKing.svg\
themes/shogi/BlackRook.svg themes/shogi/BlackCrownedRook.svg\
themes/shogi/BlackAdvisor.svg themes/shogi/BlackGoldSilver.svg
-xiangqidir = $(datadir)/games/xboard/themes/xiangqi
+xiangqidir = $(gamedatadir)/themes/xiangqi
dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg themes/xiangqi/WhiteAdvisor.svg \
themes/xiangqi/BlackCanon.svg themes/xiangqi/WhiteCanon.svg \
themes/xiangqi/BlackElephant.svg themes/xiangqi/WhiteElephant.svg \
themes/xiangqi/BlackPawn.svg themes/xiangqi/WhitePawn.svg \
themes/xiangqi/BlackRook.svg themes/xiangqi/WhiteRook.svg
+### directory and files for themes (and other) configuration files
+
+themesdir = $(datadir)/games/xboard/themes/conf
+dist_themes_DATA = conf/shogi conf/xq conf/chu conf/ics conf/mini conf/mini.fen conf/sho conf/sho.fen
+
### directory and files for pixmaps
-pixmapsdir = $(datadir)/games/xboard/pixmaps/textures
-dist_pixmaps_DATA = pixmaps/cross32.xpm pixmaps/cross48.xpm pixmaps/board32.xpm pixmaps/board48.xpm pixmaps/ini32.xpm pixmaps/ini48.xpm
+pixmapsdir = $(gamedatadir)/pixmaps/textures
+dist_pixmaps_DATA = pixmaps/cross32.png pixmaps/cross48.png pixmaps/board32.png pixmaps/board48.png pixmaps/ini32.png pixmaps/ini48.png
### directory and files for pngs
-pngdir = $(datadir)/games/xboard/themes/textures
+pngdir = $(gamedatadir)/themes/textures
dist_png_DATA = png/hatch.png png/wood_d.png png/wood_l.png png/xqboard.png
### directory and files for sound files
-soundsdir = $(datadir)/games/xboard/sounds
+soundsdir = $(gamedatadir)/sounds
dist_sounds_DATA = \
sounds/cymbal.wav sounds/pop2.wav sounds/slap.wav sounds/ding1.wav sounds/laser.wav \
- sounds/woodthunk.wav sounds/gong.wav sounds/penalty.wav sounds/honkhonk.wav sounds/phone.wav
+ sounds/woodthunk.wav sounds/gong.wav sounds/penalty.wav sounds/honkhonk.wav sounds/phone.wav sounds/roar.wav
### set correct dir in xboard.conf
$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-fen-viewer.desktop;\
$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-tourney.desktop;\
$(XDG_DESKTOP_MENU) install --mode system --novendor xboard-config.desktop;\
- $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/board32.xpm application-x-chess-pgn;\
- $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/cross32.xpm application-x-xboard-trn;\
- $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/ini32.xpm application-x-xboard-opt;\
- $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/board48.xpm application-x-chess-pgn;\
- $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/cross48.xpm application-x-xboard-trn;\
- $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/ini48.xpm application-x-xboard-opt;\
+ $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/board32.png application-x-chess-pgn;\
+ $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/cross32.png application-x-xboard-trn;\
+ $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/ini32.png application-x-xboard-opt;\
+ $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/board48.png application-x-chess-pgn;\
+ $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/cross48.png application-x-xboard-trn;\
+ $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/ini48.png application-x-xboard-opt;\
fi
endif
$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-fen-viewer.desktop;\
$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-tourney.desktop;\
$(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-config.desktop;\
- $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 board32.xpm application-x-chess-pgn;\
- $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 cross32.xpm application-x-xboard-trn;\
- $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 ini32.xpm application-x-xboard-opt;\
- $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 board48.xpm application-x-chess-pgn;\
- $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 cross48.xpm application-x-xboard-trn;\
- $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 ini48.xpm application-x-xboard-opt;\
+ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 board32.png application-x-chess-pgn;\
+ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 cross32.png application-x-xboard-trn;\
+ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 ini32.png application-x-xboard-opt;\
+ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 board48.png application-x-chess-pgn;\
+ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 cross48.png application-x-xboard-trn;\
+ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 ini48.png application-x-xboard-opt;\
fi
endif
typedef enum {
ArgString, ArgInt, ArgFloat, ArgBoolean, ArgTrue, ArgFalse, ArgNone,
ArgColor, ArgAttribs, ArgFilename, ArgBoardSize, ArgFont, ArgCommSettings,
- ArgSettingsFilename, ArgBackupSettingsFile, ArgTwo,
+ ArgSettingsFilename, ArgBackupSettingsFile, ArgTwo, ArgInstall, ArgMaster,
ArgX, ArgY, ArgZ // [HGM] placement: for window-placement options stored relative to main window
} ArgType;
IcsTextMenuEntry icsTextMenuEntry[ICS_TEXT_MENU_SIZE];
int junk;
+unsigned int saveDate;
+unsigned int dateStamp;
Boolean singleList;
+Boolean autoClose;
char *homeDir;
char *firstEngineLine;
char *secondEngineLine;
{ "loadGameFile", ArgFilename, (void *) &appData.loadGameFile, FALSE, INVALID },
{ "", ArgNone, NULL, FALSE, INVALID },
/* keyword arguments */
+ { "saveDate", ArgInt, (void *) &saveDate, TRUE, 0 },
+ { "date", ArgInt, (void *) &dateStamp, FALSE, 0 },
+ { "autoClose", ArgTrue, (void *) &autoClose, FALSE, FALSE },
JAWS_ARGS
{ "whitePieceColor", ArgColor, (void *) 0, TRUE, (ArgIniType) WHITE_PIECE_COLOR },
{ "wpc", ArgColor, (void *) 0, FALSE, INVALID },
{ "soundSeek", ArgFilename, (void *) &appData.soundSeek, TRUE, (ArgIniType) "" },
{ "soundMove", ArgFilename, (void *) &appData.soundMove, TRUE, (ArgIniType) "" },
{ "soundBell", ArgFilename, (void *) &appData.soundBell, TRUE, (ArgIniType) SOUND_BELL },
+ { "soundRoar", ArgFilename, (void *) &appData.soundRoar, TRUE, (ArgIniType) "" },
{ "soundIcsWin", ArgFilename, (void *) &appData.soundIcsWin, TRUE, (ArgIniType) "" },
{ "soundIcsLoss", ArgFilename, (void *) &appData.soundIcsLoss, TRUE, (ArgIniType) "" },
{ "soundIcsDraw", ArgFilename, (void *) &appData.soundIcsDraw, TRUE, (ArgIniType) "" },
TRUE, (ArgIniType) FCP_NAMES },
{ "secondChessProgramNames", ArgString, (void *) &secondChessProgramNames,
!XBOARD, (ArgIniType) SCP_NAMES },
- { "themeNames", ArgString, (void *) &appData.themeNames, !XBOARD, (ArgIniType) "native -upf false -ub false -ubt false -pid \"\"\n" },
+ { "themeNames", ArgString, (void *) &appData.themeNames, TRUE, (ArgIniType) "native -upf false -ub false -ubt false -pid \"\"\n" },
+ { "addMasterOption", ArgMaster, NULL, FALSE, INVALID },
+ { "installEngine", ArgInstall, (void *) &firstChessProgramNames, FALSE, (ArgIniType) "" },
{ "initialMode", ArgString, (void *) &appData.initialMode, FALSE, (ArgIniType) "" },
{ "mode", ArgString, (void *) &appData.initialMode, FALSE, INVALID },
{ "variant", ArgString, (void *) &appData.variant, FALSE, (ArgIniType) "normal" },
{ "pgnEventHeader", ArgString, (void *) &appData.pgnEventHeader, TRUE, (ArgIniType) "Computer Chess Game" },
{ "defaultFrcPosition", ArgInt, (void *) &appData.defaultFrcPosition, TRUE, (ArgIniType) -1 },
{ "shuffleOpenings", ArgTrue, (void *) &shuffleOpenings, FALSE, INVALID },
+ { "fischerCastling", ArgTrue, (void *) &appData.fischerCastling, FALSE, INVALID },
{ "gameListTags", ArgString, (void *) &appData.gameListTags, TRUE, (ArgIniType) GLT_DEFAULT_TAGS },
{ "saveOutOfBookInfo", ArgBoolean, (void *) &appData.saveOutOfBookInfo, TRUE, (ArgIniType) TRUE },
{ "showEvalInMoveHistory", ArgBoolean, (void *) &appData.showEvalInMoveHistory, TRUE, (ArgIniType) TRUE },
{ "useBorder", ArgBoolean, (void *) &appData.useBorder, TRUE, (ArgIniType) FALSE },
{ "ub", ArgBoolean, (void *) &appData.useBorder, FALSE, INVALID },
{ "border", ArgFilename, (void *) &appData.border, TRUE, (ArgIniType) "" },
+ { "finger", ArgFilename, (void *) &appData.finger, FALSE, (ArgIniType) "" },
+ { "inscriptions", ArgString, (void *) &appData.inscriptions, XBOARD, (ArgIniType) "" },
// [HGM] tournament options
{ "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" },
{ "scoreWhite", ArgBoolean, (void *) &appData.scoreWhite, TRUE, FALSE },
{ "evalZoom", ArgInt, (void *) &appData.zoom, TRUE, (ArgIniType) 1 },
{ "evalThreshold", ArgInt, (void *) &appData.evalThreshold, TRUE, (ArgIniType) 25 },
+ { "firstPseudo", ArgTrue, (void *) &appData.pseudo[0], FALSE, FALSE },
+ { "secondPseudo", ArgTrue, (void *) &appData.pseudo[1], FALSE, FALSE },
{ "fSAN", ArgTrue, (void *) &appData.pvSAN[0], FALSE, FALSE },
{ "sSAN", ArgTrue, (void *) &appData.pvSAN[1], FALSE, FALSE },
{ "pairingEngine", ArgFilename, (void *) &appData.pairingEngine, TRUE, "" },
{ "topLevel", ArgBoolean, (void *) &appData.topLevel, XBOARD, (ArgIniType) TOPLEVEL },
{ "dialogColor", ArgString, (void *) &appData.dialogColor, XBOARD, (ArgIniType) "" },
{ "buttonColor", ArgString, (void *) &appData.buttonColor, XBOARD, (ArgIniType) "" },
+ { "firstDrawDepth", ArgInt, (void *) &appData.drawDepth[0], FALSE, (ArgIniType) 0 },
+ { "secondDrawDepth", ArgInt, (void *) &appData.drawDepth[1], FALSE, (ArgIniType) 0 },
+ { "memoHeaders", ArgBoolean, (void *) &appData.headers, TRUE, (ArgIniType) FALSE },
#if ZIPPY
{ "zippyTalk", ArgBoolean, (void *) &appData.zippyTalk, FALSE, (ArgIniType) ZIPPY_TALK },
{ "winHeight", ArgInt, (void *) &wpMain.height, TRUE, INVALID }, // for attaching auxiliary windows to them
{ "x", ArgInt, (void *) &wpMain.x, TRUE, (ArgIniType) CW_USEDEFAULT },
{ "y", ArgInt, (void *) &wpMain.y, TRUE, (ArgIniType) CW_USEDEFAULT },
+ { "icsUp", ArgBoolean, (void *) &wpConsole.visible, XBOARD, (ArgIniType) FALSE },
{ "icsX", ArgX, (void *) &wpConsole.x, TRUE, (ArgIniType) CW_USEDEFAULT },
{ "icsY", ArgY, (void *) &wpConsole.y, TRUE, (ArgIniType) CW_USEDEFAULT },
{ "icsW", ArgInt, (void *) &wpConsole.width, TRUE, (ArgIniType) CW_USEDEFAULT },
exit(2);
}
+void
+AppendToSettingsFile (char *line)
+{
+ char buf[MSG_SIZ];
+ FILE *f;
+ int c;
+ if(f = fopen(SETTINGS_FILE, "r")) {
+ do {
+ int i = 0;
+ while((buf[i] = c = fgetc(f)) != '\n' && c != EOF) if(i < MSG_SIZ-1) i++;
+ buf[i] = NULLCHAR;
+ if(!strcmp(line, buf)) return; // line occurs
+ } while(c != EOF);
+ // line did not occur; add it
+ fclose(f);
+ if(f = fopen(SETTINGS_FILE, "a")) {
+ TimeMark now;
+ GetTimeMark(&now);
+ fprintf(f, "-date %10lu\n%s\n", now.sec, line);
+ fclose(f);
+ }
+ }
+}
+
int
ValidateInt(char *s)
{
}
if (ok) {
f = fopen(fullname, "r");
+#ifdef DATADIR
+ if(f == NULL && *fullname != '/' && !addr) { // when a relative name did not work
+ char buf[MSG_SIZ];
+ snprintf(buf, MSG_SIZ, "~/.xboard/themes/conf/%s", name);
+ MySearchPath(installDir, buf, fullname); // first look in user's own files
+ f = fopen(fullname, "r");
+ if(f == NULL) {
+ snprintf(buf, MSG_SIZ, "%s/themes/conf", DATADIR);
+ MySearchPath(buf, name, fullname); // also look in standard place
+ f = fopen(fullname, "r");
+ }
+ }
+#endif
if (f != NULL) {
if (addr != NULL) {
ASSIGN(*addr, fullname);
if(posflag) { // positional argument: the argName was implied, and per default set as -lgf
int len = strlen(argValue) - 4; // start of filename extension
if(len < 0) len = 0;
- if(!strcasecmp(argValue + len, ".trn")) {
+ if(!StrCaseCmp(argValue + len, ".trn")) {
ad = &argDescriptors[2]; // correct implied type to -tf
appData.tourney = TRUE; // let it parse -tourneyOptions later
- } else if(!strcasecmp(argValue + len, ".fen") || !strcasecmp(argValue + len, ".epd")) {
+ } else if(!StrCaseCmp(argValue + len, ".fen") || !StrCaseCmp(argValue + len, ".epd")) {
ad = &argDescriptors[1]; // correct implied type to -lpf
appData.viewer = TRUE;
- } else if(!strcasecmp(argValue + len, ".ini") || !strcasecmp(argValue + len, ".xop")) {
+ } else if(!StrCaseCmp(argValue + len, ".ini") || !StrCaseCmp(argValue + len, ".xop")) {
ad = &argDescriptors[0]; // correct implied type to -opt
} else if(GetEngineLine(argValue, 11)) {
ad = &argDescriptors[3]; // correct implied type to -is
ParseCommPortSettings(argValue);
break;
+ case ArgMaster:
+ AppendToSettingsFile(argValue);
+ break;
+
+ case ArgInstall:
+ q = *(char **) ad->argLoc;
+ if((saveDate == 0 || saveDate - dateStamp < 0) && !strstr(q, argValue) ) {
+ int l = strlen(q) + strlen(argValue);
+ *(char **) ad->argLoc = malloc(l+2);
+ snprintf(*(char **) ad->argLoc, l+2, "%s%s\n", q, argValue);
+ free(q);
+ }
+ break;
+
case ArgNone:
ExitArgError(_("Unrecognized argument %s"), argValue, TRUE);
break;
appData.NrRanks > BOARD_RANKS )
DisplayFatalError("Recompile with BOARD_RANKS or BOARD_FILES, to support this size", 0, 2);
+ if(!*appData.secondChessProgram) { ASSIGN(appData.secondChessProgram, appData.firstChessProgram); } // [HGM] scp defaults to fcp
+
/* [HGM] After parsing the options from the .ini file, and overruling them
* with options from the command line, we now make an even higher priority
* overrule by WB options attached to the engine command line. This so that
appData.savePositionFile = strdup(buf);
}
+ if(autoClose) { // was called for updating settingsfile only
+ if(saveSettingsOnExit) SaveSettings(settingsFileName);
+ exit(0);
+ }
+
/* Finish initialization for fonts and sounds */
CreateFonts();
ArgDescriptor *ad;
char dir[MSG_SIZ], buf[MSG_SIZ];
int mps = appData.movesPerSession;
+ TimeMark now;
+
+ if (!MainWindowUp() && !autoClose) return;
- if (!MainWindowUp()) return;
+ GetTimeMark(&now); saveDate = now.sec;
GetCurrentDirectory(MSG_SIZ, dir);
if(MySearchPath(installDir, name, buf)) {
break;
case ArgFilename:
if(*(char**)ad->argLoc == NULL) break; // just in case
- if (strchr(*(char **)ad->argLoc, '\"')) {
- fprintf(f, OPTCHAR "%s" SEPCHAR "'%s'\n", ad->argName, *(char **)ad->argLoc);
- } else {
- fprintf(f, OPTCHAR "%s" SEPCHAR "\"%s\"\n", ad->argName, *(char **)ad->argLoc);
+ { char buf[MSG_SIZ];
+ snprintf(buf, MSG_SIZ, "%s", *(char**)ad->argLoc);
+#ifdef __APPLE__
+ if(strstr(buf, DATADIR) == buf)
+ snprintf(buf, MSG_SIZ, "~~%s", *(char**)ad->argLoc + strlen(DATADIR));
+#endif
+ if (strchr(buf, '\"')) {
+ fprintf(f, OPTCHAR "%s" SEPCHAR "'%s'\n", ad->argName, buf);
+ } else {
+ fprintf(f, OPTCHAR "%s" SEPCHAR "\"%s\"\n", ad->argName, buf);
+ }
}
break;
case ArgBoardSize:
case ArgNone:
case ArgBackupSettingsFile:
case ArgSettingsFilename: ;
+ case ArgMaster: ;
+ case ArgInstall: ;
}
}
fclose(f);
#ifdef WIN32
#include <windows.h>
-int flock(int f, int code);
-#define LOCK_EX 2
-#define SLASH '\\'
+ int flock(int f, int code);
+# define LOCK_EX 2
+# define SLASH '\\'
+
+# ifdef ARC_64BIT
+# define EGBB_NAME "egbbdll64.dll"
+# else
+# define EGBB_NAME "egbbdll.dll"
+# endif
#else
-#include <sys/file.h>
-#define SLASH '/'
+# include <sys/file.h>
+# define SLASH '/'
+
+# include <dlfcn.h>
+# ifdef ARC_64BIT
+# define EGBB_NAME "egbbso64.so"
+# else
+# define EGBB_NAME "egbbso.so"
+# endif
+ // kludge to allow Windows code in back-end by converting it to corresponding Linux code
+# define CDECL
+# define HMODULE void *
+# define LoadLibrary(x) dlopen(x, RTLD_LAZY)
+# define GetProcAddress dlsym
#endif
#endif
#include "backendz.h"
#include "evalgraph.h"
+#include "engineoutput.h"
#include "gettext.h"
#ifdef ENABLE_NLS
static void ExcludeClick P((int index));
void ToggleSecond P((void));
void PauseEngine P((ChessProgramState *cps));
-static int NonStandardBoardSize P((void));
+static int NonStandardBoardSize P((VariantClass v, int w, int h, int s));
#ifdef WIN32
extern void ConsoleCreate();
#endif
ChessProgramState *WhitePlayer();
-void InsertIntoMemo P((int which, char *text)); // [HGM] kibitz: in engineo.c
int VerifyDisplayMode P(());
char *GetInfoFromComment( int, char * ); // [HGM] PV time: returns stripped comment
extern int chatCount;
int chattingPartner;
char marker[BOARD_RANKS][BOARD_FILES]; /* [HGM] marks for target squares */
+char legal[BOARD_RANKS][BOARD_FILES]; /* [HGM] legal target squares */
char lastMsg[MSG_SIZ];
+char lastTalker[MSG_SIZ];
ChessSquare pieceSweep = EmptySquare;
ChessSquare promoSweep = EmptySquare, defaultPromoChoice;
int promoDefaultAltered;
int keepInfo = 0; /* [HGM] to protect PGN tags in auto-step game analysis */
+static int initPing = -1;
/* States for ics_getting_history */
#define H_FALSE 0
case VariantShatranj:
case VariantCourier:
case VariantMakruk:
+ case VariantASEAN:
case VariantGrand:
flags &= ~F_ALL_CASTLE_OK;
break;
+ case VariantChu:
+ case VariantChuChess:
+ case VariantLion:
+ flags |= F_NULL_MOVE;
+ break;
default:
break;
}
+ if(appData.fischerCastling) flags |= F_FRC_TYPE_CASTLING, flags &= ~F_ALL_CASTLE_OK; // [HGM] fischer
return flags;
}
BlackKing, BlackMan, BlackKnight, BlackRook }
};
+ChessSquare aseanArray[2][BOARD_FILES] = { /* [HGM] (movGen knows about Shatranj Q and P) */
+ { WhiteRook, WhiteKnight, WhiteMan, WhiteFerz,
+ WhiteKing, WhiteMan, WhiteKnight, WhiteRook },
+ { BlackRook, BlackKnight, BlackMan, BlackFerz,
+ BlackKing, BlackMan, BlackKnight, BlackRook }
+};
+
+ChessSquare lionArray[2][BOARD_FILES] = {
+ { WhiteRook, WhiteLion, WhiteBishop, WhiteQueen,
+ WhiteKing, WhiteBishop, WhiteKnight, WhiteRook },
+ { BlackRook, BlackLion, BlackBishop, BlackQueen,
+ BlackKing, BlackBishop, BlackKnight, BlackRook }
+};
+
#if (BOARD_FILES>=10)
ChessSquare ShogiArray[2][BOARD_FILES] = {
BlackMarshall, BlackAngel, BlackBishop, BlackKnight, EmptySquare }
};
+ChessSquare ChuChessArray[2][BOARD_FILES] = {
+ { WhiteMan, WhiteKnight, WhiteBishop, WhiteCardinal, WhiteLion,
+ WhiteQueen, WhiteDragon, WhiteBishop, WhiteKnight, WhiteMan },
+ { BlackMan, BlackKnight, BlackBishop, BlackDragon, BlackQueen,
+ BlackLion, BlackCardinal, BlackBishop, BlackKnight, BlackMan }
+};
+
#ifdef GOTHIC
ChessSquare GothicArray[2][BOARD_FILES] = {
{ WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen, WhiteMarshall,
{ BlackRook, BlackKnight, BlackAlfil, BlackBishop, BlackMan, BlackKing,
BlackFerz, BlackWazir, BlackBishop, BlackAlfil, BlackKnight, BlackRook }
};
+ChessSquare ChuArray[6][BOARD_FILES] = {
+ { WhiteLance, WhiteUnicorn, WhiteMan, WhiteFerz, WhiteWazir, WhiteKing,
+ WhiteAlfil, WhiteWazir, WhiteFerz, WhiteMan, WhiteUnicorn, WhiteLance },
+ { BlackLance, BlackUnicorn, BlackMan, BlackFerz, BlackWazir, BlackAlfil,
+ BlackKing, BlackWazir, BlackFerz, BlackMan, BlackUnicorn, BlackLance },
+ { WhiteCannon, EmptySquare, WhiteBishop, EmptySquare, WhiteNightrider, WhiteMarshall,
+ WhiteAngel, WhiteNightrider, EmptySquare, WhiteBishop, EmptySquare, WhiteCannon },
+ { BlackCannon, EmptySquare, BlackBishop, EmptySquare, BlackNightrider, BlackAngel,
+ BlackMarshall, BlackNightrider, EmptySquare, BlackBishop, EmptySquare, BlackCannon },
+ { WhiteFalcon, WhiteSilver, WhiteRook, WhiteCardinal, WhiteDragon, WhiteLion,
+ WhiteQueen, WhiteDragon, WhiteCardinal, WhiteRook, WhiteSilver, WhiteFalcon },
+ { BlackFalcon, BlackSilver, BlackRook, BlackCardinal, BlackDragon, BlackQueen,
+ BlackLion, BlackDragon, BlackCardinal, BlackRook, BlackSilver, BlackFalcon }
+};
#else // !(BOARD_FILES>=12)
#define CourierArray CapablancaArray
+#define ChuArray CapablancaArray
#endif // !(BOARD_FILES>=12)
ExitAnalyzeMode();
DoSleep( appData.delayBeforeQuit );
SendToProgram("quit\n", cps);
- DoSleep( appData.delayAfterQuit );
- DestroyChildProcess(cps->pr, cps->useSigterm);
+ DestroyChildProcess(cps->pr, 4 + cps->useSigterm);
}
cps->pr = NoProc;
if(appData.debugMode) fprintf(debugFP, "Unload %s\n", cps->which);
cps->analyzing = FALSE;
cps->initDone = FALSE;
cps->reload = FALSE;
+ cps->pseudo = appData.pseudo[n];
/* New features added by Tord: */
cps->useFEN960 = FALSE;
/* [HGM] debug */
cps->debug = FALSE;
+ cps->drawDepth = appData.drawDepth[n];
cps->supportsNPS = UNKNOWN;
cps->memSize = FALSE;
cps->maxCores = FALSE;
cps->scoreIsAbsolute = appData.scoreIsAbsolute[n]; /* [AS] */
cps->isUCI = appData.isUCI[n]; /* [AS] */
cps->hasOwnBookUCI = appData.hasOwnBookUCI[n]; /* [AS] */
+ cps->highlight = 0;
if (appData.protocolVersion[n] > PROTOVER
|| appData.protocolVersion[n] < 1)
void
Load (ChessProgramState *cps, int i)
{
- char *p, *q, buf[MSG_SIZ], command[MSG_SIZ], buf2[MSG_SIZ];
+ char *p, *q, buf[MSG_SIZ], command[MSG_SIZ], buf2[MSG_SIZ], buf3[MSG_SIZ], jar;
if(engineLine && engineLine[0]) { // an engine was selected from the combo box
snprintf(buf, MSG_SIZ, "-fcp %s", engineLine);
SwapEngines(i); // kludge to parse -f* / -first* like it is -s* / -second*
p[-1] = SLASH;
if(SLASH == '/' && p - engineName > 1) *(p -= 2) = '.'; // for XBoard use ./exeName as command after split!
} else { ASSIGN(appData.directory[i], "."); }
+ jar = (strstr(p, ".jar") == p + strlen(p) - 4);
if(params[0]) {
if(strchr(p, ' ') && !strchr(p, '"')) snprintf(buf2, MSG_SIZ, "\"%s\"", p), p = buf2; // quote if it contains spaces
snprintf(command, MSG_SIZ, "%s %s", p, params);
p = command;
}
+ if(jar) { snprintf(buf3, MSG_SIZ, "java -jar %s", p); p = buf3; }
ASSIGN(appData.chessProgram[i], p);
appData.isUCI[i] = isUCI;
appData.protocolVersion[i] = v1 ? 1 : PROTOVER;
case VariantCapablanca: /* [HGM] should work */
case VariantCourier: /* [HGM] initial forced moves not implemented */
case VariantShogi: /* [HGM] could still mate with pawn drop */
+ case VariantChu: /* [HGM] experimental */
case VariantKnightmate: /* [HGM] should work */
case VariantCylinder: /* [HGM] untested */
case VariantFalcon: /* [HGM] untested */
case Variant3Check: /* should work except for win condition */
case VariantShatranj: /* should work except for all win conditions */
case VariantMakruk: /* should work except for draw countdown */
+ case VariantASEAN : /* should work except for draw countdown */
case VariantBerolina: /* might work if TestLegality is off */
case VariantCapaRandom: /* should work */
case VariantJanus: /* should work */
case VariantSChess: /* S-Chess, should work */
case VariantGrand: /* should work */
case VariantSpartan: /* should work */
+ case VariantLion: /* should work */
+ case VariantChuChess: /* should work */
break;
}
}
NextTourneyGame(-1, &dummy);
ReserveGame(-1, 0);
if(nextGame <= appData.matchGames) {
- DisplayNote(_("You restarted an already completed tourney\nOne more cycle will now be added to it\nGames commence in 10 sec"));
+ DisplayNote(_("You restarted an already completed tourney.\nOne more cycle will now be added to it.\nGames commence in 10 sec."));
matchMode = mode;
ScheduleDelayedEvent(NextMatchGame, 10000);
return;
char buf[MSG_SIZ];
int err, len;
+ if(!appData.icsActive && !appData.noChessProgram && !appData.matchMode && // mode involves only first engine
+ !strcmp(appData.variant, "normal") && // no explicit variant request
+ appData.NrRanks == -1 && appData.NrFiles == -1 && appData.holdingsSize == -1 && // no size overrides requested
+ !SupportedVariant(first.variants, VariantNormal, 8, 8, 0, first.protocolVersion, "") && // but 'normal' won't work with engine
+ !SupportedVariant(first.variants, VariantFischeRandom, 8, 8, 0, first.protocolVersion, "") ) { // nor will Chess960
+ char c, *q = first.variants, *p = strchr(q, ',');
+ if(p) *p = NULLCHAR;
+ if(StringToVariant(q) != VariantUnknown) { // the engine can play a recognized variant, however
+ int w, h, s;
+ if(sscanf(q, "%dx%d+%d_%c", &w, &h, &s, &c) == 4) // get size overrides the engine needs with it (if any)
+ appData.NrFiles = w, appData.NrRanks = h, appData.holdingsSize = s, q = strchr(q, '_') + 1;
+ ASSIGN(appData.variant, q); // fake user requested the first variant played by the engine
+ Reset(TRUE, FALSE); // and re-initialize
+ }
+ if(p) *p = ',';
+ }
+
InitChessProgram(&first, startedFromSetupPosition);
if(!appData.noChessProgram) { /* [HGM] tidy: redo program version to use name from myname feature */
return retbuf;
}
+char engineVariant[MSG_SIZ];
char *variantNames[] = VARIANT_NAMES;
char *
VariantName (VariantClass v)
{
+ if(v == VariantUnknown || *engineVariant) return engineVariant;
return variantNames[v];
}
found = TRUE;
} else
for (i=0; i<sizeof(variantNames)/sizeof(char*); i++) {
- if (StrCaseStr(e, variantNames[i])) {
+ if (p = StrCaseStr(e, variantNames[i])) {
+ if(p && i >= VariantShogi && isalpha(p[strlen(variantNames[i])])) continue;
v = (VariantClass) i;
found = TRUE;
break;
int backup; /* [DM] For zippy color lines */
char *p;
char talker[MSG_SIZ]; // [HGM] chat
- int channel;
+ int channel, collective=0;
connectionAlive = TRUE; // [HGM] alive: I think, therefore I am...
char mess[MSG_SIZ];
snprintf(mess, MSG_SIZ, "%s%s", talker, parse);
OutputChatMessage(chattingPartner, mess);
+ if(collective == 1) { // broadcasted talk also goes to private chatbox of talker
+ int p;
+ talker[strlen(talker+1)-1] = NULLCHAR; // strip closing delimiter
+ for(p=0; p<MAX_CHAT; p++) if(!StrCaseCmp(talker+1, chatPartner[p])) {
+ snprintf(mess, MSG_SIZ, "%s: %s", chatPartner[chattingPartner], parse);
+ OutputChatMessage(p, mess);
+ break;
+ }
+ }
chattingPartner = -1;
- next_out = i+1; // [HGM] suppress printing in ICS window
+ if(collective != 3) next_out = i+1; // [HGM] suppress printing in ICS window
+ collective = 0;
} else
if(!suppressKibitz) // [HGM] kibitz
AppendComment(forwardMostMove, StripHighlight(parse), TRUE);
} else {
char tmp[MSG_SIZ];
if(gameMode == IcsObserving) // restore original ICS messages
+ /* TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers */
snprintf(tmp, MSG_SIZ, "%s kibitzes: %s", star_match[0], parse);
else
+ /* TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers */
snprintf(tmp, MSG_SIZ, _("your opponent kibitzes: %s"), parse);
SendToPlayer(tmp, strlen(tmp));
}
looking_at(buf, &i, "*(*)(*)(*)(*):") && sscanf(star_match[4], "%d", &channel) == 1 )) {
int p;
sscanf(star_match[0], "%[^(]", talker+1); // strip (C) or (U) off ICS handle
- chattingPartner = -1;
+ chattingPartner = -1; collective = 0;
if(channel >= 0) // channel broadcast; look if there is a chatbox for this channel
for(p=0; p<MAX_CHAT; p++) {
+ collective = 1;
if(chatPartner[p][0] >= '0' && chatPartner[p][0] <= '9' && channel == atoi(chatPartner[p])) {
talker[0] = '['; strcat(talker, "] ");
- Colorize(channel == 1 ? ColorChannel1 : ColorChannel, FALSE);
+ Colorize((channel == 1 ? ColorChannel1 : ColorChannel), FALSE);
chattingPartner = p; break;
}
} else
if(buf[i-3] == 'e') // kibitz; look if there is a KIBITZ chatbox
for(p=0; p<MAX_CHAT; p++) {
+ collective = 1;
if(!strcmp("kibitzes", chatPartner[p])) {
talker[0] = '['; strcat(talker, "] ");
chattingPartner = p; break;
} else
if(buf[i-3] == 'r') // whisper; look if there is a WHISPER chatbox
for(p=0; p<MAX_CHAT; p++) {
+ collective = 1;
if(!strcmp("whispers", chatPartner[p])) {
talker[0] = '['; strcat(talker, "] ");
chattingPartner = p; break;
if(buf[i-3] == 't' || buf[oldi+2] == '>') {// shout, c-shout or it; look if there is a 'shouts' chatbox
if(buf[i-8] == '-' && buf[i-3] == 't')
for(p=0; p<MAX_CHAT; p++) { // c-shout; check if dedicatesd c-shout box exists
+ collective = 1;
if(!strcmp("c-shouts", chatPartner[p])) {
talker[0] = '('; strcat(talker, ") "); Colorize(ColorSShout, FALSE);
chattingPartner = p; break;
}
if(chattingPartner < 0)
for(p=0; p<MAX_CHAT; p++) {
+ collective = 1;
if(!strcmp("shouts", chatPartner[p])) {
if(buf[oldi+2] == '>') { talker[0] = '<'; strcat(talker, "> "); Colorize(ColorShout, FALSE); }
else if(buf[i-8] == '-') { talker[0] = '('; strcat(talker, ") "); Colorize(ColorSShout, FALSE); }
}
if(chattingPartner<0) // if not, look if there is a chatbox for this indivdual
for(p=0; p<MAX_CHAT; p++) if(!StrCaseCmp(talker+1, chatPartner[p])) {
- talker[0] = 0; Colorize(ColorTell, FALSE);
+ talker[0] = 0;
+ Colorize(ColorTell, FALSE);
+ if(collective) safeStrCpy(talker, "broadcasts: ", MSG_SIZ);
+ collective |= 2;
chattingPartner = p; break;
}
- if(chattingPartner<0) i = oldi; else {
+ if(chattingPartner<0) i = oldi, safeStrCpy(lastTalker, talker+1, MSG_SIZ); else {
Colorize(curColor, TRUE); // undo the bogus colorations we just made to trigger the souds
- if(oldi > 0 && buf[oldi-1] == '\n') oldi--;
- if (oldi > next_out) SendToPlayer(&buf[next_out], oldi - next_out);
started = STARTED_COMMENT;
parse_pos = 0; parse[0] = NULLCHAR;
savingComment = 3 + chattingPartner; // counts as TRUE
- suppressKibitz = TRUE;
- continue;
+ if(collective == 3) i = oldi; else {
+ suppressKibitz = TRUE;
+ if(oldi > 0 && buf[oldi-1] == '\n') oldi--;
+ if (oldi > next_out) SendToPlayer(&buf[next_out], oldi - next_out);
+ continue;
+ }
}
} // [HGM] chat: end of patch
parse[parse_pos] = NULLCHAR;
started = STARTED_COMMENT;
savingComment = TRUE;
- } else {
+ } else if(collective != 3) {
started = STARTED_CHATTER;
savingComment = FALSE;
}
default:
break;
case MT_CHECK:
- if(gameInfo.variant != VariantShogi)
+ if(!IS_SHOGI(gameInfo.variant))
strcat(parseList[moveNum - 1], "+");
break;
case MT_CHECKMATE:
char buf[MSG_SIZ];
if(moveList[moveNum][1] == '@' && moveList[moveNum][0] == '@') {
+ if(gameInfo.variant == VariantLion || gameInfo.variant == VariantChuChess || gameInfo.variant == VariantChu) {
+ sprintf(buf, "%s@@@@\n", cps->useUsermove ? "usermove " : "");
+ SendToProgram(buf, cps);
+ return;
+ }
// null move in variant where engine does not understand it (for analysis purposes)
SendBoard(cps, moveNum + 1); // send position after move in stead.
return;
/* Added by Tord: Send castle moves in "O-O" in FRC games if required by
* the engine. It would be nice to have a better way to identify castle
* moves here. */
- if((gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom)
- && cps->useOOCastle) {
+ if(appData.fischerCastling && cps->useOOCastle) {
int fromX = moveList[moveNum][0] - AAA;
int fromY = moveList[moveNum][1] - ONE;
int toX = moveList[moveNum][2] - AAA;
}
else SendToProgram(moveList[moveNum], cps);
} else
+ if(moveList[moveNum][4] == ';') { // [HGM] lion: move is double-step over intermediate square
+ snprintf(buf, MSG_SIZ, "%c%d%c%d,%c%d%c%d\n", moveList[moveNum][0], moveList[moveNum][1] - '0', // convert to two moves
+ moveList[moveNum][5], moveList[moveNum][6] - '0',
+ moveList[moveNum][5], moveList[moveNum][6] - '0',
+ moveList[moveNum][2], moveList[moveNum][3] - '0');
+ SendToProgram(buf, cps);
+ } else
if(BOARD_HEIGHT > 10) { // [HGM] big: convert ranks to double-digit where needed
if(moveList[moveNum][1] == '@' && (BOARD_HEIGHT < 16 || moveList[moveNum][0] <= 'Z')) { // drop move
if(moveList[moveNum][0]== '@') snprintf(buf, MSG_SIZ, "@@@@\n"); else
break;
case WhitePromotion:
case BlackPromotion:
- if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
+ if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+ gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN)
snprintf(user_move, MSG_SIZ, "%c%c%c%c=%c\n",
AAA + fromX, ONE + fromY, AAA + toX, ONE + toY,
PieceToChar(WhiteFerz));
SendToICS(ics_prefix);
SendToICS(buf);
if(startedFromSetupPosition || backwardMostMove != 0) {
- fen = PositionToFEN(backwardMostMove, NULL);
+ fen = PositionToFEN(backwardMostMove, NULL, 1);
if(ics_type == ICS_ICC) { // on ICC we can simply send a complete FEN to set everything
snprintf(buf, MSG_SIZ,"loadfen %s\n", fen);
SendToICS(buf);
SendToICS(ics_type == ICS_ICC ? "tag result Game in progress\n" : "commit\n");
}
+int killX = -1, killY = -1; // [HGM] lion: used for passing e.p. capture square to MakeMove
+
void
CoordsToComputerAlgebraic (int rf, int ff, int rt, int ft, char promoChar, char move[7])
{
if (promoChar == 'x' || promoChar == NULLCHAR) {
sprintf(move, "%c%c%c%c\n",
AAA + ff, ONE + rf, AAA + ft, ONE + rt);
+ if(killX >= 0 && killY >= 0) sprintf(move+4, ";%c%c\n", AAA + killX, ONE + killY);
} else {
sprintf(move, "%c%c%c%c%c\n",
AAA + ff, ONE + rf, AAA + ft, ONE + rt, promoChar);
}
-static int lastX, lastY, selectFlag, dragging;
+static int lastX, lastY, lastLeftX, lastLeftY, selectFlag;
+int dragging;
+static ClickType lastClickType;
+
+int
+Partner (ChessSquare *p)
+{ // change piece into promotion partner if one shogi-promotes to the other
+ int stride = gameInfo.variant == VariantChu ? 22 : 11;
+ ChessSquare partner;
+ partner = (*p/stride & 1 ? *p - stride : *p + stride);
+ if(PieceToChar(*p) != '+' && PieceToChar(partner) != '+') return 0;
+ *p = partner;
+ return 1;
+}
void
Sweep (int step)
{
ChessSquare king = WhiteKing, pawn = WhitePawn, last = promoSweep;
+ static int toggleFlag;
if(gameInfo.variant == VariantKnightmate) king = WhiteUnicorn;
if(gameInfo.variant == VariantSuicide || gameInfo.variant == VariantGiveaway) king = EmptySquare;
if(promoSweep >= BlackPawn) king = WHITE_TO_BLACK king, pawn = WHITE_TO_BLACK pawn;
if(gameInfo.variant == VariantSpartan && pawn == BlackPawn) pawn = BlackLance, king = EmptySquare;
- if(fromY != BOARD_HEIGHT-2 && fromY != 1) pawn = EmptySquare;
+ if(fromY != BOARD_HEIGHT-2 && fromY != 1 && gameInfo.variant != VariantChuChess) pawn = EmptySquare;
+ if(!step) toggleFlag = Partner(&last); // piece has shogi-promotion
do {
- promoSweep -= step;
+ if(step && !(toggleFlag && Partner(&promoSweep))) promoSweep -= step;
if(promoSweep == EmptySquare) promoSweep = BlackPawn; // wrap
else if((int)promoSweep == -1) promoSweep = WhiteKing;
else if(promoSweep == BlackPawn && step < 0) promoSweep = WhitePawn;
else if(promoSweep == WhiteKing && step > 0) promoSweep = BlackKing;
if(!step) step = -1;
} while(PieceToChar(promoSweep) == '.' || PieceToChar(promoSweep) == '~' || promoSweep == pawn ||
- appData.testLegality && (promoSweep == king ||
- gameInfo.variant == VariantShogi && promoSweep != PROMOTED last && last != PROMOTED promoSweep && last != promoSweep));
+ !toggleFlag && PieceToChar(promoSweep) == '+' || // skip promoted versions of other
+ appData.testLegality && (promoSweep == king || gameInfo.variant != VariantChuChess &&
+ (promoSweep == WhiteLion || promoSweep == BlackLion)));
if(toX >= 0) {
int victim = boards[currentMove][toY][toX];
boards[currentMove][toY][toX] = promoSweep;
case WhiteNonPromotion:
case BlackNonPromotion:
case NormalMove:
+ case FirstLeg:
case WhiteCapturesEnPassant:
case BlackCapturesEnPassant:
case WhiteKingSideCastle:
if (appData.testLegality) {
return (*moveType != IllegalMove);
} else {
- return !(*fromX == *toX && *fromY == *toY) && boards[moveNum][*fromY][*fromX] != EmptySquare &&
+ return !(*fromX == *toX && *fromY == *toY && killX < 0) && boards[moveNum][*fromY][*fromX] != EmptySquare &&
+ // [HGM] lion: if this is a double move we are less critical
WhiteOnMove(moveNum) == (boards[moveNum][*fromY][*fromX] < BlackPawn);
}
} else if(strstr(buf+lineStart, "exclude:") == buf+lineStart) { // exclude moves clicked
ExcludeClick(origIndex - lineStart);
return FALSE;
+ } else if(!strncmp(buf+lineStart, "dep\t", 4)) { // column headers clicked
+ Collapse(origIndex - lineStart);
+ return FALSE;
}
ParsePV(buf+startPV, FALSE, gameMode != AnalyzeMode);
*start = startPV; *end = index-1;
- extendGame = (gameMode == AnalyzeMode && appData.autoExtend);
+ extendGame = (gameMode == AnalyzeMode && appData.autoExtend && origIndex - startPV < 5);
return TRUE;
}
InitPosition (int redraw)
{
ChessSquare (* pieces)[BOARD_FILES];
- int i, j, pawnRow, overrule,
+ int i, j, pawnRow=1, pieceRows=1, overrule,
oldx = gameInfo.boardWidth,
oldy = gameInfo.boardHeight,
oldh = gameInfo.holdingsWidth;
static int oldv;
- if(appData.icsActive) shuffleOpenings = FALSE; // [HGM] shuffle: in ICS mode, only shuffle on ICS request
+ if(appData.icsActive) shuffleOpenings = appData.fischerCastling = FALSE; // [HGM] shuffle: in ICS mode, only shuffle on ICS request
/* [AS] Initialize pv info list [HGM] and game status */
{
switch (gameInfo.variant) {
case VariantFischeRandom:
shuffleOpenings = TRUE;
+ appData.fischerCastling = TRUE;
default:
break;
case VariantShatranj:
case VariantMakruk:
pieces = makrukArray;
nrCastlingRights = 0;
- startedFromSetupPosition = TRUE;
SetCharTable(pieceToChar, "PN.R.M....SKpn.r.m....sk");
break;
+ case VariantASEAN:
+ pieces = aseanArray;
+ nrCastlingRights = 0;
+ SetCharTable(pieceToChar, "PN.R.Q....BKpn.r.q....bk");
+ break;
case VariantTwoKings:
pieces = twoKingsArray;
break;
break;
case VariantCapaRandom:
shuffleOpenings = TRUE;
+ appData.fischerCastling = TRUE;
case VariantCapablanca:
pieces = CapablancaArray;
gameInfo.boardWidth = 10;
nrCastlingRights = 0;
SetCharTable(pieceToChar, "PNBRLS...G.++++++Kpnbrls...g.++++++k");
break;
+ case VariantChu:
+ pieces = ChuArray; pieceRows = 3;
+ gameInfo.boardWidth = 12;
+ gameInfo.boardHeight = 12;
+ nrCastlingRights = 0;
+ SetCharTable(pieceToChar, "P.BRQSEXOGCATHD.VMLIFN+.++.++++++++++.+++++K"
+ "p.brqsexogcathd.vmlifn+.++.++++++++++.+++++k");
+ break;
case VariantCourier:
pieces = CourierArray;
gameInfo.boardWidth = 12;
pieces = SpartanArray;
SetCharTable(pieceToChar, "PNBRQ................K......lwg.....c...h..k");
break;
+ case VariantLion:
+ pieces = lionArray;
+ SetCharTable(pieceToChar, "PNBRQ................LKpnbrq................lk");
+ break;
+ case VariantChuChess:
+ pieces = ChuChessArray;
+ gameInfo.boardWidth = 10;
+ gameInfo.boardHeight = 10;
+ SetCharTable(pieceToChar, "PNBRQ.....M.+++......LKpnbrq.....m.+++......lk");
+ break;
case VariantFairy:
pieces = fairyArray;
SetCharTable(pieceToChar, "PNBRQFEACWMOHIJGDVLSUKpnbrqfeacwmohijgdvlsuk");
pawnRow = gameInfo.boardHeight - 7; /* seems to work in all common variants */
if(pawnRow < 1) pawnRow = 1;
- if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand) pawnRow = 2;
+ if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN ||
+ gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) pawnRow = 2;
+ if(gameInfo.variant == VariantChu) pawnRow = 3;
/* User pieceToChar list overrules defaults */
if(appData.pieceToCharTable != NULL)
initialPosition[i][j] = s;
if(j < BOARD_LEFT || j >= BOARD_RGHT || overrule) continue;
- initialPosition[gameInfo.variant == VariantGrand][j] = pieces[0][j-gameInfo.holdingsWidth];
+ initialPosition[gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess][j] = pieces[0][j-gameInfo.holdingsWidth];
initialPosition[pawnRow][j] = WhitePawn;
initialPosition[BOARD_HEIGHT-pawnRow-1][j] = gameInfo.variant == VariantSpartan ? BlackLance : BlackPawn;
if(gameInfo.variant == VariantXiangqi) {
}
}
}
- if(gameInfo.variant == VariantGrand) {
+ if(gameInfo.variant == VariantChu) {
+ if(j == (BOARD_WIDTH-2)/3 || j == BOARD_WIDTH - (BOARD_WIDTH+1)/3)
+ initialPosition[pawnRow+1][j] = WhiteCobra,
+ initialPosition[BOARD_HEIGHT-pawnRow-2][j] = BlackCobra;
+ for(i=1; i<pieceRows; i++) {
+ initialPosition[i][j] = pieces[2*i][j-gameInfo.holdingsWidth];
+ initialPosition[BOARD_HEIGHT-1-i][j] = pieces[2*i+1][j-gameInfo.holdingsWidth];
+ }
+ }
+ if(gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) {
if(j==BOARD_LEFT || j>=BOARD_RGHT-1) {
initialPosition[0][j] = WhiteRook;
initialPosition[BOARD_HEIGHT-1][j] = BlackRook;
}
}
- initialPosition[BOARD_HEIGHT-1-(gameInfo.variant == VariantGrand)][j] = pieces[1][j-gameInfo.holdingsWidth];
+ initialPosition[BOARD_HEIGHT-1-(gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess)][j] = pieces[1][j-gameInfo.holdingsWidth];
}
+ if(gameInfo.variant == VariantChuChess) initialPosition[0][BOARD_WIDTH/2] = WhiteKing, initialPosition[BOARD_HEIGHT-1][BOARD_WIDTH/2-1] = BlackKing;
if( (gameInfo.variant == VariantShogi) && !overrule ) {
j=BOARD_LEFT+1;
char message[MSG_SIZ];
if (cps->useSetboard) {
- char* fen = PositionToFEN(moveNum, cps->fenOverride);
+ char* fen = PositionToFEN(moveNum, cps->fenOverride, 1);
snprintf(message, MSG_SIZ,"setboard %s\n", fen);
SendToProgram(message, cps);
free(fen);
DefaultPromoChoice (int white)
{
ChessSquare result;
- if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
+ if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+ gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN)
result = WhiteFerz; // no choice
else if(gameInfo.variant == VariantSuicide || gameInfo.variant == VariantGiveaway)
result= WhiteKing; // in Suicide Q is the last thing we want
/* [HGM] rewritten IsPromotion to only flag promotions that offer a choice */
/* [HGM] add Shogi promotions */
int promotionZoneSize=1, highestPromotingPiece = (int)WhitePawn;
- ChessSquare piece;
+ ChessSquare piece, partner;
ChessMove moveType;
Boolean premove;
return FALSE;
piece = boards[currentMove][fromY][fromX];
- if(gameInfo.variant == VariantShogi) {
+ if(gameInfo.variant == VariantChu) {
+ int p = piece >= BlackPawn ? BLACK_TO_WHITE piece : piece;
promotionZoneSize = BOARD_HEIGHT/3;
- highestPromotingPiece = (int)WhiteFerz;
- } else if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand) {
+ highestPromotingPiece = (p >= WhiteLion || PieceToChar(piece + 22) == '.') ? WhitePawn : WhiteLion;
+ } else if(gameInfo.variant == VariantShogi || gameInfo.variant == VariantChuChess) {
+ promotionZoneSize = BOARD_HEIGHT/3;
+ highestPromotingPiece = (int)WhiteAlfil;
+ } else if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) {
promotionZoneSize = 3;
}
- // Treat Lance as Pawn when it is not representing Amazon
- if(gameInfo.variant != VariantSuper) {
+ // Treat Lance as Pawn when it is not representing Amazon or Lance
+ if(gameInfo.variant != VariantSuper && gameInfo.variant != VariantChu) {
if(piece == WhiteLance) piece = WhitePawn; else
if(piece == BlackLance) piece = BlackPawn;
}
if((int)piece >= BlackPawn) {
if(toY >= promotionZoneSize && fromY >= promotionZoneSize)
return FALSE;
+ if(fromY < promotionZoneSize && gameInfo.variant == VariantChuChess) return FALSE;
highestPromotingPiece = WHITE_TO_BLACK highestPromotingPiece;
} else {
if( toY < BOARD_HEIGHT - promotionZoneSize &&
fromY < BOARD_HEIGHT - promotionZoneSize) return FALSE;
+ if(fromY >= BOARD_HEIGHT - promotionZoneSize && gameInfo.variant == VariantChuChess)
+ return FALSE;
}
if( (int)piece > highestPromotingPiece ) return FALSE; // non-promoting piece
}
// we either have a choice what to promote to, or (in Shogi) whether to promote
- if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk) {
- *promoChoice = PieceToChar(BlackFerz); // no choice
+ if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+ gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN) {
+ ChessSquare p=BlackFerz; // no choice
+ while(p < EmptySquare) { //but make sure we use piece that exists
+ *promoChoice = PieceToChar(p++);
+ if(*promoChoice != '.') break;
+ }
return FALSE;
}
// no sense asking what we must promote to if it is going to explode...
}
// give caller the default choice even if we will not make it
*promoChoice = ToLower(PieceToChar(defaultPromoChoice));
- if(gameInfo.variant == VariantShogi) *promoChoice = (defaultPromoChoice == piece ? '=' : '+');
+ partner = piece; // pieces can promote if the pieceToCharTable says so
+ if(IS_SHOGI(gameInfo.variant)) *promoChoice = (defaultPromoChoice == piece && sweepSelect ? '=' : '+'); // obsolete?
+ else if(Partner(&partner)) *promoChoice = (defaultPromoChoice == piece && sweepSelect ? NULLCHAR : '+');
if( sweepSelect && gameInfo.variant != VariantGreat
&& gameInfo.variant != VariantGrand
&& gameInfo.variant != VariantSuper) return FALSE;
gameMode == IcsPlayingBlack && WhiteOnMove(currentMove);
if(appData.testLegality && !premove) {
moveType = LegalityTest(boards[currentMove], PosFlags(currentMove),
- fromY, fromX, toY, toX, gameInfo.variant == VariantShogi ? '+' : NULLCHAR);
+ fromY, fromX, toY, toX, IS_SHOGI(gameInfo.variant) || gameInfo.variant == VariantChuChess ? '+' : NULLCHAR);
+ if(moveType == IllegalMove) *promoChoice = NULLCHAR; // could be the fact we promoted was illegal
if(moveType != WhitePromotion && moveType != BlackPromotion)
return FALSE;
}
char lastLoadGameTitle[MSG_SIZ], lastLoadPositionTitle[MSG_SIZ];
ChessMove lastLoadGameStart = EndOfFile;
int doubleClick;
+Boolean addToBookFlag;
void
UserMoveEvent(int fromX, int fromY, int toX, int toY, int promoChar)
DrawPosition(FALSE, boards[currentMove]);
return;
} else if (toX >= 0 && toY >= 0) {
+ if(!appData.pieceMenu && toX == fromX && toY == fromY && boards[0][rf][ff] != EmptySquare) {
+ ChessSquare q, p = boards[0][rf][ff];
+ if(p >= BlackPawn) p = BLACK_TO_WHITE p;
+ if(CHUPROMOTED p < BlackPawn) p = q = CHUPROMOTED boards[0][rf][ff];
+ else p = CHUDEMOTED (q = boards[0][rf][ff]);
+ if(PieceToChar(q) == '+') gatingPiece = p;
+ }
boards[0][toY][toX] = boards[0][fromY][fromX];
if(fromX == BOARD_LEFT-2) { // handle 'moves' out of holdings
if(boards[0][fromY][0] != EmptySquare) {
return;
}
- if(toX < 0 || toY < 0) return;
+ if((toX < 0 || toY < 0) && (fromY != DROP_RANK || fromX != EmptySquare)) return;
pup = boards[currentMove][toY][toX];
/* [HGM] If move started in holdings, it means a drop. Convert to standard form */
moveType = LegalityTest(boards[currentMove], PosFlags(currentMove),
fromY, fromX, toY, toX, promoChar);
- if(fromY == DROP_RANK && fromX == EmptySquare && (gameMode == AnalyzeMode || gameMode == EditGame)) moveType = NormalMove;
+ if(fromY == DROP_RANK && fromX == EmptySquare && (gameMode == AnalyzeMode || gameMode == EditGame || PosFlags(0) & F_NULL_MOVE)) moveType = NormalMove;
/* [HGM] but possibly ignore an IllegalMove result */
if (appData.testLegality) {
return;
}
+ if(addToBookFlag) { // adding moves to book
+ char buf[MSG_SIZ], move[MSG_SIZ];
+ CoordsToAlgebraic(boards[currentMove], PosFlags(currentMove), fromY, fromX, toY, toX, promoChar, move);
+ snprintf(buf, MSG_SIZ, " 0.0%% 1 %s\n", move);
+ AddBookMove(buf);
+ addToBookFlag = FALSE;
+ ClearHighlights();
+ return;
+ }
+
FinishMove(moveType, fromX, fromY, toX, toY, promoChar);
}
}
void
+MarkByFEN(char *fen)
+{
+ int r, f;
+ if(!appData.markers || !appData.highlightDragging) return;
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) legal[r][f] = 0;
+ r=BOARD_HEIGHT-1; f=BOARD_LEFT;
+ while(*fen) {
+ int s = 0;
+ marker[r][f] = 0;
+ if(*fen == 'M') legal[r][f] = 2; else // request promotion choice
+ if(*fen >= 'A' && *fen <= 'Z') legal[r][f] = 1; else
+ if(*fen >= 'a' && *fen <= 'z') *fen += 'A' - 'a';
+ if(*fen == '/' && f > BOARD_LEFT) f = BOARD_LEFT, r--; else
+ if(*fen == 'T') marker[r][f++] = 0; else
+ if(*fen == 'Y') marker[r][f++] = 1; else
+ if(*fen == 'G') marker[r][f++] = 3; else
+ if(*fen == 'B') marker[r][f++] = 4; else
+ if(*fen == 'C') marker[r][f++] = 5; else
+ if(*fen == 'M') marker[r][f++] = 6; else
+ if(*fen == 'W') marker[r][f++] = 7; else
+ if(*fen == 'D') marker[r][f++] = 8; else
+ if(*fen == 'R') marker[r][f++] = 2; else {
+ while(*fen <= '9' && *fen >= '0') s = 10*s + *fen++ - '0';
+ f += s; fen -= s>0;
+ }
+ while(f >= BOARD_RGHT) f -= BOARD_RGHT - BOARD_LEFT, r--;
+ if(r < 0) break;
+ fen++;
+ }
+ DrawPosition(TRUE, NULL);
+}
+
+static char baseMarker[BOARD_RANKS][BOARD_FILES], baseLegal[BOARD_RANKS][BOARD_FILES];
+
+void
Mark (Board board, int flags, ChessMove kind, int rf, int ff, int rt, int ft, VOIDSTAR closure)
{
typedef char Markers[BOARD_RANKS][BOARD_FILES];
Markers *m = (Markers *) closure;
- if(rf == fromY && ff == fromX)
+ if(rf == fromY && ff == fromX && (killX < 0 && !(rt == rf && ft == ff) || abs(ft-killX) < 2 && abs(rt-killY) < 2))
(*m)[rt][ft] = 1 + (board[rt][ft] != EmptySquare
|| kind == WhiteCapturesEnPassant
- || kind == BlackCapturesEnPassant);
+ || kind == BlackCapturesEnPassant) + 3*(kind == FirstLeg && killX < 0);
else if(flags & F_MANDATORY_CAPTURE && board[rt][ft] != EmptySquare) (*m)[rt][ft] = 3;
}
+static int hoverSavedValid;
+
void
MarkTargetSquares (int clear)
{
- int x, y;
- if(clear) // no reason to ever suppress clearing
- for(x=0; x<BOARD_WIDTH; x++) for(y=0; y<BOARD_HEIGHT; y++) marker[y][x] = 0;
- if(!appData.markers || !appData.highlightDragging || appData.icsActive && gameInfo.variant < VariantShogi ||
- !appData.testLegality || gameMode == EditPosition) return;
- if(!clear) {
+ int x, y, sum=0;
+ if(clear) { // no reason to ever suppress clearing
+ for(x=0; x<BOARD_WIDTH; x++) for(y=0; y<BOARD_HEIGHT; y++) sum += marker[y][x], marker[y][x] = 0;
+ hoverSavedValid = 0;
+ if(!sum) return; // nothing was cleared,no redraw needed
+ } else {
int capt = 0;
+ if(!appData.markers || !appData.highlightDragging || appData.icsActive && gameInfo.variant < VariantShogi ||
+ !appData.testLegality || gameMode == EditPosition) return;
GenLegal(boards[currentMove], PosFlags(currentMove), Mark, (void*) marker, EmptySquare);
if(PosFlags(0) & F_MANDATORY_CAPTURE) {
for(x=0; x<BOARD_WIDTH; x++) for(y=0; y<BOARD_HEIGHT; y++) if(marker[y][x]>1) capt++;
int
CanPromote (ChessSquare piece, int y)
{
+ int zone = (gameInfo.variant == VariantChuChess ? 3 : 1);
if(gameMode == EditPosition) return FALSE; // no promotions when editing position
// some variants have fixed promotion piece, no promotion at all, or another selection mechanism
- if(gameInfo.variant == VariantShogi || gameInfo.variant == VariantXiangqi ||
+ if(IS_SHOGI(gameInfo.variant) || gameInfo.variant == VariantXiangqi ||
gameInfo.variant == VariantSuper || gameInfo.variant == VariantGreat ||
gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
- gameInfo.variant == VariantMakruk) return FALSE;
- return (piece == BlackPawn && y == 1 ||
- piece == WhitePawn && y == BOARD_HEIGHT-2 ||
+ gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN) return FALSE;
+ return (piece == BlackPawn && y <= zone ||
+ piece == WhitePawn && y >= BOARD_HEIGHT-1-zone ||
piece == BlackLance && y == 1 ||
piece == WhiteLance && y == BOARD_HEIGHT-2 );
}
void
+HoverEvent (int xPix, int yPix, int x, int y)
+{
+ static int oldX = -1, oldY = -1, oldFromX = -1, oldFromY = -1;
+ int r, f;
+ if(!first.highlight) return;
+ if(fromX != oldFromX || fromY != oldFromY) oldX = oldY = -1; // kludge to fake entry on from-click
+ if(x == oldX && y == oldY) return; // only do something if we enter new square
+ oldFromX = fromX; oldFromY = fromY;
+ if(oldX == -1 && oldY == -1 && x == fromX && y == fromY) { // record markings after from-change
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++)
+ baseMarker[r][f] = marker[r][f], baseLegal[r][f] = legal[r][f];
+ hoverSavedValid = 1;
+ } else if(oldX != x || oldY != y) {
+ // [HGM] lift: entered new to-square; redraw arrow, and inform engine
+ if(hoverSavedValid) // don't restore markers that are supposed to be cleared
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++)
+ marker[r][f] = baseMarker[r][f], legal[r][f] = baseLegal[r][f];
+ if((marker[y][x] == 2 || marker[y][x] == 6) && legal[y][x]) {
+ char buf[MSG_SIZ];
+ snprintf(buf, MSG_SIZ, "hover %c%d\n", x + AAA, y + ONE - '0');
+ SendToProgram(buf, &first);
+ }
+ oldX = x; oldY = y;
+// SetHighlights(fromX, fromY, x, y);
+ }
+}
+
+void ReportClick(char *action, int x, int y)
+{
+ char buf[MSG_SIZ]; // Inform engine of what user does
+ int r, f;
+ if(action[0] == 'l') // mark any target square of a lifted piece as legal to-square, clear markers
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) legal[r][f] = 1, marker[r][f] = 0;
+ if(!first.highlight || gameMode == EditPosition) return;
+ snprintf(buf, MSG_SIZ, "%s %c%d%s\n", action, x+AAA, y+ONE-'0', controlKey && action[0]=='p' ? "," : "");
+ SendToProgram(buf, &first);
+}
+
+void
LeftClick (ClickType clickType, int xPix, int yPix)
{
int x, y;
prevClickTime = lastClickTime; GetTimeMark(&lastClickTime);
if (clickType == Press) ErrorPopDown();
+ lastClickType = clickType, lastLeftX = xPix, lastLeftY = yPix; // [HGM] alien: remember state
x = EventToSquare(xPix, BOARD_WIDTH);
y = EventToSquare(yPix, BOARD_HEIGHT);
if(gameMode == AnalyzeMode && (pausing || controlKey) && first.excludeMoves) { // use pause state to exclude moves
doubleClick = TRUE; gatingPiece = boards[currentMove][y][x];
}
- fromX = x; fromY = y; toX = toY = -1;
+ fromX = x; fromY = y; toX = toY = killX = killY = -1;
if(!appData.oneClick || !OnlyMove(&x, &y, FALSE) ||
// even if only move, we treat as normal when this would trigger a promotion popup, to allow sweep selection
appData.sweepSelect && CanPromote(boards[currentMove][fromY][fromX], fromY) && originalY != y) {
/* First square */
if (OKToStartUserMove(fromX, fromY)) {
second = 0;
+ ReportClick("lift", x, y);
MarkTargetSquares(0);
if(gameMode == EditPosition && controlKey) gatingPiece = boards[currentMove][fromY][fromX];
DragPieceBegin(xPix, yPix, FALSE); dragging = 1;
/* Check if clicking again on the same color piece */
fromP = boards[currentMove][fromY][fromX];
toP = boards[currentMove][y][x];
- frc = gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom || gameInfo.variant == VariantSChess;
- if ((WhitePawn <= fromP && fromP <= WhiteKing &&
+ frc = appData.fischerCastling || gameInfo.variant == VariantSChess;
+ if( (killX < 0 || x != fromX || y != fromY) && // [HGM] lion: do not interpret igui as deselect!
+ ((WhitePawn <= fromP && fromP <= WhiteKing &&
WhitePawn <= toP && toP <= WhiteKing &&
!(fromP == WhiteKing && toP == WhiteRook && frc) &&
!(fromP == WhiteRook && toP == WhiteKing && frc)) ||
(BlackPawn <= fromP && fromP <= BlackKing &&
BlackPawn <= toP && toP <= BlackKing &&
!(fromP == BlackRook && toP == BlackKing && frc) && // allow also RxK as FRC castling
- !(fromP == BlackKing && toP == BlackRook && frc))) {
+ !(fromP == BlackKing && toP == BlackRook && frc)))) {
/* Clicked again on same color piece -- changed his mind */
second = (x == fromX && y == fromY);
+ killX = killY = -1;
if(second && gameMode == AnalyzeMode && SubtractTimeMarks(&lastClickTime, &prevClickTime) < 200) {
second = FALSE; // first double-click rather than scond click
doubleClick = first.excludeMoves; // used by UserMoveEvent to recognize exclude moves
else gatingPiece = doubleClick ? fromP : EmptySquare;
fromX = x;
fromY = y; dragging = 1;
+ ReportClick("lift", x, y);
MarkTargetSquares(0);
DragPieceBegin(xPix, yPix, FALSE);
if(appData.sweepSelect && CanPromote(piece = boards[currentMove][y][x], y)) {
if(x < BOARD_LEFT || x >= BOARD_RGHT) return;
}
- if (clickType == Release && x == fromX && y == fromY) {
+ if (clickType == Release && x == fromX && y == fromY && killX < 0) {
DragPieceEnd(xPix, yPix); dragging = 0;
if(clearFlag) {
// a deferred attempt to click-click move an empty square on top of a piece
clearFlag = 0;
+ if(gameMode != EditPosition && !appData.testLegality && !legal[y][x] && (x != killX || y != killY) && !sweepSelecting) {
+ if(dragging) DragPieceEnd(xPix, yPix), dragging = 0;
+ DisplayMessage(_("only marked squares are legal"),"");
+ DrawPosition(TRUE, NULL);
+ return; // ignore to-click
+ }
+
/* we now have a different from- and (possibly off-board) to-square */
/* Completed move */
if(!sweepSelecting) {
toX = x;
toY = y;
- } else sweepSelecting = 0; // this must be the up-click corresponding to the down-click that started the sweep
+ }
+
+ piece = boards[currentMove][fromY][fromX];
saveAnimate = appData.animate;
if (clickType == Press) {
+ if(gameInfo.variant == VariantChuChess && piece != WhitePawn && piece != BlackPawn) defaultPromoChoice = piece;
if(gameMode == EditPosition && boards[currentMove][fromY][fromX] == EmptySquare) {
// must be Edit Position mode with empty-square selected
fromX = x; fromY = y; DragPieceBegin(xPix, yPix, FALSE); dragging = 1; // consider this a new attempt to drag
if(x >= BOARD_LEFT && x < BOARD_RGHT) clearFlag = 1; // and defer click-click move of empty-square to up-click
return;
}
- if(HasPromotionChoice(fromX, fromY, toX, toY, &promoChoice, FALSE)) {
+ if(dragging == 2) { // [HGM] lion: just turn buttonless drag into normal drag, and let release to the job
+ return;
+ }
+ if(x == killX && y == killY) { // second click on this square, which was selected as first-leg target
+ killX = killY = -1; // this informs us no second leg is coming, so treat as to-click without intermediate
+ } else
+ if(marker[y][x] == 5) return; // [HGM] lion: to-click on cyan square; defer action to release
+ if(legal[y][x] == 2 || HasPromotionChoice(fromX, fromY, toX, toY, &promoChoice, FALSE)) {
if(appData.sweepSelect) {
- ChessSquare piece = boards[currentMove][fromY][fromX];
promoSweep = defaultPromoChoice;
- if(PieceToChar(PROMOTED piece) == '+') promoSweep = PROMOTED piece;
+ if(gameInfo.variant != VariantChuChess && PieceToChar(CHUPROMOTED piece) == '+') promoSweep = CHUPROMOTED piece;
selectFlag = 0; lastX = xPix; lastY = yPix;
Sweep(0); // Pawn that is going to promote: preview promotion piece
sweepSelecting = 1;
} else {
ClearHighlights();
}
+ } else if(sweepSelecting) { // this must be the up-click corresponding to the down-click that started the sweep
+ sweepSelecting = 0; appData.animate = FALSE; // do not animate, a selected piece already on to-square
+ if (appData.animate || appData.highlightLastMove) {
+ SetHighlights(fromX, fromY, toX, toY);
+ } else {
+ ClearHighlights();
+ }
} else {
#if 0
// [HGM] this must be done after the move is made, as with arrow it could lead to a board redraw with piece still on from square
ClearHighlights();
}
#endif
+ if(gameInfo.variant == VariantChuChess && piece != WhitePawn && piece != BlackPawn) defaultPromoChoice = piece;
+ if(marker[y][x] == 5) { // [HGM] lion: this was the release of a to-click or drag on a cyan square
+ dragging *= 2; // flag button-less dragging if we are dragging
+ MarkTargetSquares(1);
+ if(x == killX && y == killY) killX = killY = -1; else {
+ killX = x; killY = y; //remeber this square as intermediate
+ ReportClick("put", x, y); // and inform engine
+ ReportClick("lift", x, y);
+ MarkTargetSquares(0);
+ return;
+ }
+ }
DragPieceEnd(xPix, yPix); dragging = 0;
/* Don't animate move and drag both */
appData.animate = FALSE;
// off-board moves should not be highlighted
if(x < 0 || y < 0) ClearHighlights();
+ else ReportClick("put", x, y);
if(gatingPiece != EmptySquare && gameInfo.variant == VariantSChess) promoChoice = ToLower(PieceToChar(gatingPiece));
DisplayMessage("Click in holdings to choose piece", "");
return;
}
- PromotionPopUp();
+ PromotionPopUp(promoChoice);
} else {
int oldMove = currentMove;
UserMoveEvent(fromX, fromY, toX, toY, promoChoice);
return 0;
}
+typedef int (CDECL *PPROBE_EGBB) (int player, int *piece, int *square);
+typedef int (CDECL *PLOAD_EGBB) (char *path, int cache_size, int load_options);
+static int egbbCode[] = { 6, 5, 4, 3, 2, 1 };
+
+static int
+BitbaseProbe ()
+{
+ int pieces[10], squares[10], cnt=0, r, f, res;
+ static int loaded;
+ static PPROBE_EGBB probeBB;
+ if(!appData.testLegality) return 10;
+ if(BOARD_HEIGHT != 8 || BOARD_RGHT-BOARD_LEFT != 8) return 12;
+ if(gameInfo.holdingsSize && gameInfo.variant != VariantSuper && gameInfo.variant != VariantSChess) return 12;
+ if(loaded == 2 && forwardMostMove < 2) loaded = 0; // retry on new game
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) {
+ ChessSquare piece = boards[forwardMostMove][r][f];
+ int black = (piece >= BlackPawn);
+ int type = piece - black*BlackPawn;
+ if(piece == EmptySquare) continue;
+ if(type != WhiteKing && type > WhiteQueen) return 12; // unorthodox piece
+ if(type == WhiteKing) type = WhiteQueen + 1;
+ type = egbbCode[type];
+ squares[cnt] = r*(BOARD_RGHT - BOARD_LEFT) + f - BOARD_LEFT;
+ pieces[cnt] = type + black*6;
+ if(++cnt > 5) return 11;
+ }
+ pieces[cnt] = squares[cnt] = 0;
+ // probe EGBB
+ if(loaded == 2) return 13; // loading failed before
+ if(loaded == 0) {
+ char *p, *path = strstr(appData.egtFormats, "scorpio:"), buf[MSG_SIZ];
+ HMODULE lib;
+ PLOAD_EGBB loadBB;
+ loaded = 2; // prepare for failure
+ if(!path) return 13; // no egbb installed
+ strncpy(buf, path + 8, MSG_SIZ);
+ if(p = strchr(buf, ',')) *p = NULLCHAR; else p = buf + strlen(buf);
+ snprintf(p, MSG_SIZ - strlen(buf), "%c%s", SLASH, EGBB_NAME);
+ lib = LoadLibrary(buf);
+ if(!lib) { DisplayError(_("could not load EGBB library"), 0); return 13; }
+ loadBB = (PLOAD_EGBB) GetProcAddress(lib, "load_egbb_xmen");
+ probeBB = (PPROBE_EGBB) GetProcAddress(lib, "probe_egbb_xmen");
+ if(!loadBB || !probeBB) { DisplayError(_("wrong EGBB version"), 0); return 13; }
+ p[1] = NULLCHAR; loadBB(buf, 64*1028, 2); // 2 = SMART_LOAD
+ loaded = 1; // success!
+ }
+ res = probeBB(forwardMostMove & 1, pieces, squares);
+ return res > 0 ? 1 : res < 0 ? -1 : 0;
+}
+
char *
SendMoveToBookUser (int moveNr, ChessProgramState *cps, int initial)
{ // [HGM] book: this routine intercepts moves to simulate book replies
char *bookHit = NULL;
+ if(cps->drawDepth && BitbaseProbe() == 0) { // [HG} egbb: reduce depth in drawn position
+ char buf[MSG_SIZ];
+ snprintf(buf, MSG_SIZ, "sd %d\n", cps->drawDepth);
+ SendToProgram(buf, cps);
+ }
//first determine if the incoming move brings opponent into his book
if(appData.usePolyglotBook && (cps == &first ? !appData.firstHasOwnBookUCI : !appData.secondHasOwnBookUCI))
bookHit = ProbeBook(moveNr+1, appData.polyglotBook); // returns move
void
HandleMachineMove (char *message, ChessProgramState *cps)
{
+ static char firstLeg[20];
char machineMove[MSG_SIZ], buf1[MSG_SIZ*10], buf2[MSG_SIZ];
char realname[MSG_SIZ];
int fromX, fromY, toX, toY;
ChessMove moveType;
- char promoChar;
+ char promoChar, roar;
char *p, *pv=buf1;
int machineWhite, oldError;
char *bookHit;
}
if(cps->alphaRank) AlphaRank(machineMove, 4);
+
+ // [HGM] lion: (some very limited) support for Alien protocol
+ killX = killY = -1;
+ if(machineMove[strlen(machineMove)-1] == ',') { // move ends in coma: non-final leg of composite move
+ safeStrCpy(firstLeg, machineMove, 20); // just remember it for processing when second leg arrives
+ return;
+ } else if(firstLeg[0]) { // there was a previous leg;
+ // only support case where same piece makes two step (and don't even test that!)
+ char buf[20], *p = machineMove+1, *q = buf+1, f;
+ safeStrCpy(buf, machineMove, 20);
+ while(isdigit(*q)) q++; // find start of to-square
+ safeStrCpy(machineMove, firstLeg, 20);
+ while(isdigit(*p)) p++;
+ safeStrCpy(p, q, 20); // glue to-square of second leg to from-square of first, to process over-all move
+ sscanf(buf, "%c%d", &f, &killY); killX = f - AAA; killY -= ONE - '0'; // pass intermediate square to MakeMove in global
+ firstLeg[0] = NULLCHAR;
+ }
+
if (!ParseOneMove(machineMove, forwardMostMove, &moveType,
&fromX, &fromY, &toX, &toY, &promoChar)) {
/* Machine move could not be parsed; ignore it. */
snprintf(buf1, MSG_SIZ*10, _("Illegal move \"%s\" from %s machine"),
machineMove, _(cps->which));
DisplayMoveError(buf1);
- snprintf(buf1, MSG_SIZ*10, "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d",
- machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, moveType);
+ snprintf(buf1, MSG_SIZ*10, "Xboard: Forfeit due to invalid move: %s (%c%c%c%c via %c%c) res=%d",
+ machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, killX+AAA, killY+ONE, moveType);
if (gameMode == TwoMachinesPlay) {
GameEnds(machineWhite ? BlackWins : WhiteWins,
buf1, GE_XBOARD);
GameEnds(machineWhite ? BlackWins : WhiteWins,
buf1, GE_XBOARD);
return;
- } else if(gameInfo.variant != VariantFischeRandom && gameInfo.variant != VariantCapaRandom)
+ } else if(!appData.fischerCastling)
/* [HGM] Kludge to handle engines that send FRC-style castling
when they shouldn't (like TSCP-Gothic) */
switch(moveType) {
MakeMove(fromX, fromY, toX, toY, promoChar);/*updates forwardMostMove*/
+ /* Test suites abort the 'game' after one move */
+ if(*appData.finger) {
+ static FILE *f;
+ char *fen = PositionToFEN(backwardMostMove, NULL, 0); // no counts in EPD
+ if(!f) f = fopen(appData.finger, "w");
+ if(f) fprintf(f, "%s bm %s;\n", fen, parseList[backwardMostMove]), fflush(f);
+ else { DisplayFatalError("Bad output file", errno, 0); return; }
+ free(fen);
+ GameEnds(GameUnfinished, NULL, GE_XBOARD);
+ }
+
/* [AS] Adjudicate game if needed (note: remember that forwardMostMove now points past the last move) */
- if( gameMode == TwoMachinesPlay && adjudicateLossThreshold != 0 && forwardMostMove >= adjudicateLossPlies ) {
+ if( gameMode == TwoMachinesPlay && appData.adjudicateLossThreshold != 0 && forwardMostMove >= adjudicateLossPlies ) {
int count = 0;
while( count < adjudicateLossPlies ) {
if( count & 1 ) {
score = -score; /* Flip score for winning side */
}
-
- if( score > adjudicateLossThreshold ) {
+printf("score=%d count=%d\n",score,count);
+ if( score > appData.adjudicateLossThreshold ) {
break;
}
(unsigned int)programStats.nodes / (10*abs(programStats.time) + 1.),
programStats.movelist);
SendToICS(buf);
-if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.nodes, programStats.nodes);
}
}
#endif
cps->other->maybeThinking = TRUE;
}
+ roar = (killX >= 0 && IS_LION(boards[forwardMostMove][toY][toX]));
+
ShowMove(fromX, fromY, toX, toY); /*updates currentMove*/
if (!pausing && appData.ringBellAfterMoves) {
- RingBell();
+ if(!roar) RingBell();
}
/*
}
if (!strncmp(message, "setup ", 6) &&
- (!appData.testLegality || gameInfo.variant == VariantFairy || NonStandardBoardSize())
+ (!appData.testLegality || gameInfo.variant == VariantFairy || gameInfo.variant == VariantUnknown ||
+ NonStandardBoardSize(gameInfo.variant, gameInfo.boardWidth, gameInfo.boardHeight, gameInfo.holdingsSize))
) { // [HGM] allow first engine to define opening position
- int dummy, s=6; char buf[MSG_SIZ];
+ int dummy, w, h, hand, s=6; char buf[MSG_SIZ], varName[MSG_SIZ];
if(appData.icsActive || forwardMostMove != 0 || cps != &first) return;
- if(sscanf(message, "setup (%s", buf) == 1) s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTable(pieceToChar, buf);
+ *buf = NULLCHAR;
+ if(sscanf(message, "setup (%s", buf) == 1) {
+ s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTable(pieceToChar, buf);
+ ASSIGN(appData.pieceToCharTable, buf);
+ }
if(startedFromSetupPosition) return;
- if(sscanf(message+s, "%dx%d+%d", &dummy, &dummy, &dummy) == 3) while(message[s] && message[s++] != ' '); // for compatibility with Alien Edition
- ParseFEN(boards[0], &dummy, message+s);
+ dummy = sscanf(message+s, "%dx%d+%d_%s", &w, &h, &hand, varName);
+ if(dummy >= 3) {
+ while(message[s] && message[s++] != ' ');
+ if(BOARD_HEIGHT != h || BOARD_WIDTH != w + 4*(hand != 0) || gameInfo.holdingsSize != hand ||
+ dummy == 4 && gameInfo.variant != StringToVariant(varName) ) { // engine wants to change board format or variant
+ appData.NrFiles = w; appData.NrRanks = h; appData.holdingsSize = hand;
+ if(dummy == 4) gameInfo.variant = StringToVariant(varName); // parent variant
+ InitPosition(1); // calls InitDrawingSizes to let new parameters take effect
+ if(*buf) SetCharTable(pieceToChar, buf); // do again, for it was spoiled by InitPosition
+ }
+ }
+ ParseFEN(boards[0], &dummy, message+s, FALSE);
DrawPosition(TRUE, boards[0]);
startedFromSetupPosition = TRUE;
return;
GameEnds(GameUnfinished, "Engine aborts game", GE_XBOARD);
- if (!ParseFEN(initial_position, &blackPlaysFirst, message + 9)) {
+ if (!ParseFEN(initial_position, &blackPlaysFirst, message + 9, FALSE)) {
DisplayError(_("Bad FEN received from engine"), 0);
return ;
} else {
}
}
if (sscanf(message, "pong %d", &cps->lastPong) == 1) {
+ if(initPing == cps->lastPong) {
+ if(gameInfo.variant == VariantUnknown) {
+ DisplayError(_("Engine did not send setup for non-standard variant"), 0);
+ *engineVariant = NULLCHAR; appData.variant = VariantNormal; // back to normal as error recovery?
+ GameEnds(GameUnfinished, NULL, GE_XBOARD);
+ }
+ initPing = -1;
+ }
+ return;
+ }
+ if(!strncmp(message, "highlight ", 10)) {
+ if(appData.testLegality && appData.markers) return;
+ MarkByFEN(message+10); // [HGM] alien: allow engine to mark board squares
+ return;
+ }
+ if(!strncmp(message, "click ", 6)) {
+ char f, c=0; int x, y; // [HGM] alien: allow engine to finish user moves (i.e. engine-driven one-click moving)
+ if(appData.testLegality || !appData.oneClick) return;
+ sscanf(message+6, "%c%d%c", &f, &y, &c);
+ x = f - 'a' + BOARD_LEFT, y -= ONE - '0';
+ if(flipView) x = BOARD_WIDTH-1 - x; else y = BOARD_HEIGHT-1 - y;
+ x = x*squareSize + (x+1)*lineGap + squareSize/2;
+ y = y*squareSize + (y+1)*lineGap + squareSize/2;
+ f = first.highlight; first.highlight = 0; // kludge to suppress lift/put in response to own clicks
+ if(lastClickType == Press) // if button still down, fake release on same square, to be ready for next click
+ LeftClick(Release, lastLeftX, lastLeftY);
+ controlKey = (c == ',');
+ LeftClick(Press, x, y);
+ LeftClick(Release, x, y);
+ first.highlight = f;
return;
}
/*
Don't use it. */
cps->sendTime = 0;
}
+ if (cps->pseudo) { // [HGM] pseudo-engine, granted unusual powers
+ if (sscanf(message, "wtime %ld\n", &whiteTimeRemaining) == 1 || // adjust clock times
+ sscanf(message, "btime %ld\n", &blackTimeRemaining) == 1 ) return;
+ }
/*
* If chess program startup fails, exit with an error message.
DisplayInformation(_("Machine accepts your draw offer"));
GameEnds(GameIsDrawn, "Draw agreed", GE_XBOARD);
} else {
- DisplayInformation(_("Machine offers a draw\nSelect Action / Draw to agree"));
+ DisplayInformation(_("Machine offers a draw.\nSelect Action / Draw to accept."));
}
}
}
if (sscanf(message, "%d%c %d %d " u64Display " %[^\n]\n",
&plylev, &plyext, &curscore, &time, &nodes, buf1) >= 5) {
+ if(nodes>>32 == u64Const(0xFFFFFFFF)) // [HGM] negative node count read
+ nodes += u64Const(0x100000000);
+
if (plyext != ' ' && plyext != '\t') {
time *= 100;
}
if(f = fopen(buf, "w")) { // export PV to applicable PV file
fprintf(f, "%5.2f/%-2d %s", curscore/100., plylev, pv);
fclose(f);
- } else DisplayError(_("failed writing PV"), 0);
+ }
+ else
+ /* TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone */
+ DisplayError(_("failed writing PV"), 0);
}
tempStats.depth = plylev;
case WhiteNonPromotion:
case BlackNonPromotion:
case NormalMove:
+ case FirstLeg:
case WhiteCapturesEnPassant:
case BlackCapturesEnPassant:
case WhiteKingSideCastle:
default:
break;
case MT_CHECK:
- if(gameInfo.variant != VariantShogi)
+ if(!IS_SHOGI(gameInfo.variant))
strcat(parseList[boardIndex - 1], "+");
break;
case MT_CHECKMATE:
ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
{
ChessSquare captured = board[toY][toX], piece, king; int p, oldEP = EP_NONE, berolina = 0;
- int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand ? 3 : 1;
+ int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess ? 3 : 1;
/* [HGM] compute & store e.p. status and castling rights for new position */
/* we can always do that 'in place', now pointers to these rights are passed to ApplyMove */
}
piece = board[toY][toX] = (ChessSquare) fromX;
} else {
+// ChessSquare victim;
int i;
- if( board[toY][toX] != EmptySquare )
+ if( killX >= 0 && killY >= 0 ) // [HGM] lion: Lion trampled over something
+// victim = board[killY][killX],
+ board[killY][killX] = EmptySquare,
+ board[EP_STATUS] = EP_CAPTURE;
+
+ if( board[toY][toX] != EmptySquare ) {
board[EP_STATUS] = EP_CAPTURE;
+ if( (fromX != toX || fromY != toY) && // not igui!
+ (captured == WhiteLion && board[fromY][fromX] != BlackLion ||
+ captured == BlackLion && board[fromY][fromX] != WhiteLion ) ) { // [HGM] lion: Chu Lion-capture rules
+ board[EP_STATUS] = EP_IRON_LION; // non-Lion x Lion: no counter-strike allowed
+ }
+ }
if( board[fromY][fromX] == WhiteLance || board[fromY][fromX] == BlackLance ) {
if( gameInfo.variant != VariantSuper && gameInfo.variant != VariantShogi )
board[toY][toX+1] = board[fromY][BOARD_LEFT];
board[fromY][BOARD_LEFT] = EmptySquare;
} else if ((board[fromY][fromX] == WhitePawn && gameInfo.variant != VariantXiangqi ||
- board[fromY][fromX] == WhiteLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantShogi)
+ board[fromY][fromX] == WhiteLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantChu)
&& toY >= BOARD_HEIGHT-promoRank && promoChar // defaulting to Q is done elsewhere
) {
/* white pawn promotion */
board[fromY][0] = EmptySquare;
board[toY][2] = BlackRook;
} else if ((board[fromY][fromX] == BlackPawn && gameInfo.variant != VariantXiangqi ||
- board[fromY][fromX] == BlackLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantShogi)
+ board[fromY][fromX] == BlackLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantChu)
&& toY < promoRank && promoChar
) {
/* black pawn promotion */
board[fromY][fromX+1] = EmptySquare;
}
} else {
- board[toY][toX] = board[fromY][fromX];
+ ChessSquare piece = board[fromY][fromX]; // [HGM] lion: allow for igui (where from == to)
board[fromY][fromX] = EmptySquare;
+ board[toY][toX] = piece;
}
}
board[toY][toX] = EmptySquare;
}
}
+
if(gameInfo.variant == VariantSChess && promoChar != NULLCHAR && promoChar != '=' && piece != WhitePawn && piece != BlackPawn) {
board[fromY][fromX] = CharToPiece(piece < BlackPawn ? ToUpper(promoChar) : ToLower(promoChar)); // S-Chess gating
} else
if(promoChar == '+') {
/* [HGM] Shogi-style promotions, to piece implied by original (Might overwrite ordinary Pawn promotion) */
- board[toY][toX] = (ChessSquare) (PROMOTED piece);
+ board[toY][toX] = (ChessSquare) (CHUPROMOTED piece);
+ if(gameInfo.variant == VariantChuChess && (piece == WhiteKnight || piece == BlackKnight))
+ board[toY][toX] = piece + WhiteLion - WhiteKnight; // adjust Knight promotions to Lion
} else if(!appData.testLegality && promoChar != NULLCHAR && promoChar != '=') { // without legality testing, unconditionally believe promoChar
ChessSquare newPiece = CharToPiece(piece < BlackPawn ? ToUpper(promoChar) : ToLower(promoChar));
if((newPiece <= WhiteMan || newPiece >= BlackPawn && newPiece <= BlackMan) // unpromoted piece specified
board[BOARD_HEIGHT-1-k][0] = EmptySquare;
}
}
-
}
/* Updates forwardMostMove */
void
MakeMove (int fromX, int fromY, int toX, int toY, int promoChar)
{
+ int x = toX, y = toY;
+ char *s = parseList[forwardMostMove];
+ ChessSquare p = boards[forwardMostMove][toY][toX];
// forwardMostMove++; // [HGM] bare: moved downstream
+ if(killX >= 0 && killY >= 0) x = killX, y = killY; // [HGM] lion: make SAN move to intermediate square, if there is one
(void) CoordsToAlgebraic(boards[forwardMostMove],
PosFlags(forwardMostMove),
- fromY, fromX, toY, toX, promoChar,
- parseList[forwardMostMove]);
+ fromY, fromX, y, x, promoChar,
+ s);
+ if(killX >= 0 && killY >= 0)
+ sprintf(s + strlen(s), "%c%c%d", p == EmptySquare || toX == fromX && toY == fromY ? '-' : 'x', toX + AAA, toY + ONE - '0');
if(serverMoves != NULL) { /* [HGM] write moves on file for broadcasting (should be separate routine, really) */
int timeLeft; static int lastLoadFlag=0; int king, piece;
default:
break;
case MT_CHECK:
- if(gameInfo.variant != VariantShogi)
+ if(!IS_SHOGI(gameInfo.variant))
strcat(parseList[forwardMostMove - 1], "+");
break;
case MT_CHECKMATE:
strcat(parseList[forwardMostMove - 1], "#");
break;
}
-
}
/* Updates currentMove if not pausing */
currentMove = forwardMostMove;
}
+ killX = killY = -1; // [HGM] lion: used up
+
if (instant) return;
DisplayMove(currentMove - 1);
}
static int
-NonStandardBoardSize ()
-{
- /* [HGM] Awkward testing. Should really be a table */
- int overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;
- if( gameInfo.variant == VariantXiangqi )
- overruled = gameInfo.boardWidth != 9 || gameInfo.boardHeight != 10 || gameInfo.holdingsSize != 0;
- if( gameInfo.variant == VariantShogi )
- overruled = gameInfo.boardWidth != 9 || gameInfo.boardHeight != 9 || gameInfo.holdingsSize != 7;
- if( gameInfo.variant == VariantBughouse || gameInfo.variant == VariantCrazyhouse )
- overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 5;
- if( gameInfo.variant == VariantCapablanca || gameInfo.variant == VariantCapaRandom ||
- gameInfo.variant == VariantGothic || gameInfo.variant == VariantFalcon || gameInfo.variant == VariantJanus )
- overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;
- if( gameInfo.variant == VariantCourier )
- overruled = gameInfo.boardWidth != 12 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;
- if( gameInfo.variant == VariantSuper )
- overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 8;
- if( gameInfo.variant == VariantGreat )
- overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 8;
- if( gameInfo.variant == VariantSChess )
- overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 7;
- if( gameInfo.variant == VariantGrand )
- overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 10 || gameInfo.holdingsSize != 7;
- return overruled;
+NonStandardBoardSize (VariantClass v, int boardWidth, int boardHeight, int holdingsSize)
+{
+ int width = 8, height = 8, holdings = 0; // most common sizes
+ if( v == VariantUnknown || *engineVariant) return 0; // engine-defined name never needs prefix
+ // correct the deviations default for each variant
+ if( v == VariantXiangqi ) width = 9, height = 10;
+ if( v == VariantShogi ) width = 9, height = 9, holdings = 7;
+ if( v == VariantBughouse || v == VariantCrazyhouse) holdings = 5;
+ if( v == VariantCapablanca || v == VariantCapaRandom ||
+ v == VariantGothic || v == VariantFalcon || v == VariantJanus )
+ width = 10;
+ if( v == VariantCourier ) width = 12;
+ if( v == VariantSuper ) holdings = 8;
+ if( v == VariantGreat ) width = 10, holdings = 8;
+ if( v == VariantSChess ) holdings = 7;
+ if( v == VariantGrand ) width = 10, height = 10, holdings = 7;
+ if( v == VariantChuChess) width = 10, height = 10;
+ if( v == VariantChu ) width = 12, height = 12;
+ return boardWidth >= 0 && boardWidth != width || // -1 is default,
+ boardHeight >= 0 && boardHeight != height || // and thus by definition OK
+ holdingsSize >= 0 && holdingsSize != holdings;
+}
+
+char variantError[MSG_SIZ];
+
+char *
+SupportedVariant (char *list, VariantClass v, int boardWidth, int boardHeight, int holdingsSize, int proto, char *engine)
+{ // returns error message (recognizable by upper-case) if engine does not support the variant
+ char *p, *variant = VariantName(v);
+ static char b[MSG_SIZ];
+ if(NonStandardBoardSize(v, boardWidth, boardHeight, holdingsSize)) { /* [HGM] make prefix for non-standard board size. */
+ snprintf(b, MSG_SIZ, "%dx%d+%d_%s", boardWidth, boardHeight,
+ holdingsSize, variant); // cook up sized variant name
+ /* [HGM] varsize: try first if this deviant size variant is specifically known */
+ if(StrStr(list, b) == NULL) {
+ // specific sized variant not known, check if general sizing allowed
+ if(proto != 1 && StrStr(list, "boardsize") == NULL) {
+ snprintf(variantError, MSG_SIZ, "Board size %dx%d+%d not supported by %s",
+ boardWidth, boardHeight, holdingsSize, engine);
+ return NULL;
+ }
+ /* [HGM] here we really should compare with the maximum supported board size */
+ }
+ } else snprintf(b, MSG_SIZ,"%s", variant);
+ if(proto == 1) return b; // for protocol 1 we cannot check and hope for the best
+ p = StrStr(list, b);
+ while(p && (p != list && p[-1] != ',' || p[strlen(b)] && p[strlen(b)] != ',') ) p = StrStr(p+1, b);
+ if(p == NULL) {
+ // occurs not at all in list, or only as sub-string
+ snprintf(variantError, MSG_SIZ, _("Variant %s not supported by %s"), b, engine);
+ if(p = StrStr(list, b)) { // handle requesting parent variant when only size-overridden is supported
+ int l = strlen(variantError);
+ char *q;
+ while(p != list && p[-1] != ',') p--;
+ q = strchr(p, ',');
+ if(q) *q = NULLCHAR;
+ snprintf(variantError + l, MSG_SIZ - l, _(", but %s is"), p);
+ if(q) *q= ',';
+ }
+ return NULL;
+ }
+ return b;
}
void
InitChessProgram (ChessProgramState *cps, int setup)
/* setup needed to setup FRC opening position */
{
- char buf[MSG_SIZ], b[MSG_SIZ];
+ char buf[MSG_SIZ], *b;
if (appData.noChessProgram) return;
hintRequested = FALSE;
bookRequested = FALSE;
SendToProgram(buf, cps);
}
+ setboardSpoiledMachineBlack = FALSE;
SendToProgram(cps->initString, cps);
if (gameInfo.variant != VariantNormal &&
gameInfo.variant != VariantLoadable
/* [HGM] also send variant if board size non-standard */
- || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0
- ) {
- char *v = VariantName(gameInfo.variant);
- if (cps->protocolVersion != 1 && StrStr(cps->variants, v) == NULL) {
- /* [HGM] in protocol 1 we have to assume all variants valid */
- snprintf(buf, MSG_SIZ, _("Variant %s not supported by %s"), v, cps->tidy);
- DisplayFatalError(buf, 0, 1);
+ || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0) {
+
+ b = SupportedVariant(cps->variants, gameInfo.variant, gameInfo.boardWidth,
+ gameInfo.boardHeight, gameInfo.holdingsSize, cps->protocolVersion, cps->tidy);
+ if (b == NULL) {
+ DisplayFatalError(variantError, 0, 1);
return;
}
- if(NonStandardBoardSize()) { /* [HGM] make prefix for non-standard board size. */
- snprintf(b, MSG_SIZ, "%dx%d+%d_%s", gameInfo.boardWidth, gameInfo.boardHeight,
- gameInfo.holdingsSize, VariantName(gameInfo.variant)); // cook up sized variant name
- /* [HGM] varsize: try first if this defiant size variant is specifically known */
- if(StrStr(cps->variants, b) == NULL) {
- // specific sized variant not known, check if general sizing allowed
- if (cps->protocolVersion != 1) { // for protocol 1 we cannot check and hope for the best
- if(StrStr(cps->variants, "boardsize") == NULL) {
- snprintf(buf, MSG_SIZ, "Board size %dx%d+%d not supported by %s",
- gameInfo.boardWidth, gameInfo.boardHeight, gameInfo.holdingsSize, cps->tidy);
- DisplayFatalError(buf, 0, 1);
- return;
- }
- /* [HGM] here we really should compare with the maximum supported board size */
- }
- }
- } else snprintf(b, MSG_SIZ,"%s", VariantName(gameInfo.variant));
snprintf(buf, MSG_SIZ, "variant %s\n", b);
SendToProgram(buf, cps);
}
SendToProgram("easy\n", cps);
}
if (cps->usePing) {
- snprintf(buf, MSG_SIZ, "ping %d\n", ++cps->lastPing);
+ snprintf(buf, MSG_SIZ, "ping %d\n", initPing = ++cps->lastPing);
SendToProgram(buf, cps);
}
cps->initDone = TRUE;
SWAP(fenOverride, p)
SWAP(NPS, h)
SWAP(accumulateTC, h)
+ SWAP(drawDepth, h)
SWAP(host, p)
+ SWAP(pseudo, h)
}
int
result, resultDetails ? resultDetails : "(null)", whosays);
}
- fromX = fromY = -1; // [HGM] abort any move the user is entering.
+ fromX = fromY = killX = killY = -1; // [HGM] abort any move the user is entering. // [HGM] lion
if(pausing) PauseEvent(); // can happen when we abort a paused game (New Game or Quit)
PlayIcsUnfinishedSound();
}
}
+ if(appData.quitNext) { ExitEvent(0); return; }
} else if (gameMode == EditGame ||
gameMode == PlayFromGameFile ||
gameMode == AnalyzeMode ||
ExitAnalyzeMode();
DoSleep( appData.delayBeforeQuit );
SendToProgram("quit\n", &first);
- DoSleep( appData.delayAfterQuit );
- DestroyChildProcess(first.pr, first.useSigterm);
+ DestroyChildProcess(first.pr, 4 + first.useSigterm);
first.reload = TRUE;
}
first.pr = NoProc;
if (second.pr != NoProc) {
DoSleep( appData.delayBeforeQuit );
SendToProgram("quit\n", &second);
- DoSleep( appData.delayAfterQuit );
- DestroyChildProcess(second.pr, second.useSigterm);
+ DestroyChildProcess(second.pr, 4 + second.useSigterm);
second.reload = TRUE;
}
second.pr = NoProc;
if(currentlyInitializedVariant != gameInfo.variant) {
char buf[MSG_SIZ];
// [HGM] variantswitch: make engine aware of new variant
- if(cps->protocolVersion > 1 && StrStr(cps->variants, VariantName(gameInfo.variant)) == NULL)
+ if(!SupportedVariant(cps->variants, gameInfo.variant, gameInfo.boardWidth,
+ gameInfo.boardHeight, gameInfo.holdingsSize, cps->protocolVersion, ""))
return; // [HGM] refrain from feeding moves altogether if variant is unsupported!
snprintf(buf, MSG_SIZ, "variant %s\n", VariantName(gameInfo.variant));
SendToProgram(buf, cps);
lastHint[0] = NULLCHAR;
ClearGameInfo(&gameInfo);
gameInfo.variant = StringToVariant(appData.variant);
+ if(gameInfo.variant == VariantNormal && strcmp(appData.variant, "normal")) gameInfo.variant = VariantUnknown;
ics_user_moved = ics_clock_paused = FALSE;
ics_getting_history = H_FALSE;
ics_gamenum = -1;
ClearPremoveHighlights();
gotPremove = FALSE;
alarmSounded = FALSE;
+ killX = killY = -1; // [HGM] lion
GameEnds(EndOfFile, NULL, GE_PLAYER);
if(appData.serverMovesName != NULL) {
SetHighlights(-1, -1, toX, toY);
}
} else {
+ int viaX = moveList[currentMove][5] - AAA;
+ int viaY = moveList[currentMove][6] - ONE;
fromX = moveList[currentMove][0] - AAA;
fromY = moveList[currentMove][1] - ONE;
HistorySet(parseList, backwardMostMove, forwardMostMove, currentMove); /* [AS] */
+ if(moveList[currentMove][4] == ';') { // multi-leg
+ ChessSquare piece = boards[currentMove][viaY][viaX];
+ AnimateMove(boards[currentMove], fromX, fromY, viaX, viaY);
+ boards[currentMove][viaY][viaX] = boards[currentMove][fromY][fromX];
+ AnimateMove(boards[currentMove], fromX=viaX, fromY=viaY, toX, toY);
+ boards[currentMove][viaY][viaX] = piece;
+ } else
AnimateMove(boards[currentMove], fromX, fromY, toX, toY);
if (appData.highlightLastMove) {
case WhiteNonPromotion:
case BlackNonPromotion:
case NormalMove:
+ case FirstLeg:
case WhiteKingSideCastle:
case WhiteQueenSideCastle:
case BlackKingSideCastle:
toX = currentMoveString[2] - AAA;
toY = currentMoveString[3] - ONE;
promoChar = currentMoveString[4];
+ if(promoChar == ';') promoChar = NULLCHAR;
break;
case WhiteDrop:
thinkOutput[0] = NULLCHAR;
MakeMove(fromX, fromY, toX, toY, promoChar);
+ killX = killY = -1; // [HGM] lion: used up
currentMove = forwardMostMove;
return TRUE;
}
int
QuickScan (Board board, Move *move)
{ // reconstruct game,and compare all positions in it
- int cnt=0, stretch=0, total = MakePieceList(board, counts);
+ int cnt=0, stretch=0, found = -1, total = MakePieceList(board, counts);
do {
int piece = move->piece;
int to = move->to, from = pieceList[piece];
+ if(found < 0) { // if already found just scan to game end for final piece count
+ if(QuickCompare(soughtBoard, minSought, maxSought) ||
+ appData.ignoreColors && QuickCompare(reverseBoard, minReverse, maxReverse) ||
+ flipSearch && (QuickCompare(flipBoard, minSought, maxSought) ||
+ appData.ignoreColors && QuickCompare(rotateBoard, minReverse, maxReverse))
+ ) {
+ static int lastCounts[EmptySquare+1];
+ int i;
+ if(stretch) for(i=0; i<EmptySquare; i++) if(lastCounts[i] != counts[i]) { stretch = 0; break; } // reset if material changes
+ if(stretch++ == 0) for(i=0; i<EmptySquare; i++) lastCounts[i] = counts[i]; // remember actual material
+ } else stretch = 0;
+ if(stretch && (appData.searchMode == 1 || stretch >= appData.stretch)) found = cnt + 1 - stretch;
+ if(found >= 0 && !appData.minPieces) return found;
+ }
if(piece <= Q_PROMO) { // special moves encoded by otherwise invalid piece numbers 1-4
- if(!piece) return -1;
+ if(!piece) return (appData.minPieces && (total < appData.minPieces || total > appData.maxPieces) ? -1 : found);
if(piece == Q_PROMO) { // promotion, encoded as (Q_PROMO, to) + (piece, promoType)
piece = (++move)->piece;
from = pieceList[piece];
}
}
if(appData.searchMode > 2) counts[pieceType[quickBoard[to]]]--; // account capture
- if((total -= (quickBoard[to] != 0)) < soughtTotal) return -1; // piece count dropped below what we search for
+ if((total -= (quickBoard[to] != 0)) < soughtTotal && found < 0) return -1; // piece count dropped below what we search for
quickBoard[from] = 0;
aftercastle:
quickBoard[to] = piece;
pieceList[piece] = to;
cnt++; turn ^= 3;
- if(QuickCompare(soughtBoard, minSought, maxSought) ||
- appData.ignoreColors && QuickCompare(reverseBoard, minReverse, maxReverse) ||
- flipSearch && (QuickCompare(flipBoard, minSought, maxSought) ||
- appData.ignoreColors && QuickCompare(rotateBoard, minReverse, maxReverse))
- ) {
- static int lastCounts[EmptySquare+1];
- int i;
- if(stretch) for(i=0; i<EmptySquare; i++) if(lastCounts[i] != counts[i]) { stretch = 0; break; } // reset if material changes
- if(stretch++ == 0) for(i=0; i<EmptySquare; i++) lastCounts[i] = counts[i]; // remember actual material
- } else stretch = 0;
- if(stretch && (appData.searchMode == 1 || stretch >= appData.stretch)) return cnt + 1 - stretch;
move++;
} while(1);
}
for(next = WhitePawn; next<EmptySquare; next++) keys[next] = random()>>8 ^ random()<<6 ^random()<<20;
initDone = TRUE;
}
- if(lg->gameInfo.fen) ParseFEN(boards[scratch], &btm, lg->gameInfo.fen);
+ if(lg->gameInfo.fen) ParseFEN(boards[scratch], &btm, lg->gameInfo.fen, FALSE);
else CopyBoard(boards[scratch], initialPosition); // default start position
if(lg->moves) {
turn = btm + 1;
case WhiteNonPromotion:
case BlackNonPromotion:
case NormalMove:
+ case FirstLeg:
case WhiteKingSideCastle:
case WhiteQueenSideCastle:
case BlackKingSideCastle:
if (gameMode != BeginningOfGame) {
Reset(FALSE, TRUE);
}
+ killX = killY = -1; // [HGM] lion: in case we did not Reset
gameFileFP = f;
if (lastLoadGameFP != NULL && lastLoadGameFP != f) {
break;
case NormalMove:
+ case FirstLeg:
/* Only a NormalMove can be at the start of a game
* without a position diagram. */
if (lastLoadGameStart == EndOfFile ) {
if (gameInfo.fen != NULL) {
Board initial_position;
startedFromSetupPosition = TRUE;
- if (!ParseFEN(initial_position, &blackPlaysFirst, gameInfo.fen)) {
+ if (!ParseFEN(initial_position, &blackPlaysFirst, gameInfo.fen, TRUE)) {
Reset(TRUE, TRUE);
DisplayError(_("Bad FEN position in file"), 0);
return FALSE;
AnalyzeFileEvent();
}
+ if(gameInfo.result == GameUnfinished && gameInfo.resultDetails && appData.clockMode) {
+ long int w, b; // [HGM] adjourn: restore saved clock times
+ char *p = strstr(gameInfo.resultDetails, "(Clocks:");
+ if(p && sscanf(p+8, "%ld,%ld", &w, &b) == 2) {
+ timeRemaining[0][forwardMostMove] = whiteTimeRemaining = 1000*w + 500;
+ timeRemaining[1][forwardMostMove] = blackTimeRemaining = 1000*b + 500;
+ }
+ }
+
if(creatingBook) return TRUE;
if (!matchMode && pos > 0) {
ToNrEvent(pos); // [HGM] no autoplay if selected on position
}
if (fenMode) {
- if (!ParseFEN(initial_position, &blackPlaysFirst, line)) {
+ if (!ParseFEN(initial_position, &blackPlaysFirst, line, TRUE)) {
DisplayError(_("Bad FEN position in file"), 0);
return FALSE;
}
}
}
-/* Save game in PGN style and close the file */
-int
-SaveGamePGN (FILE *f)
+/* Save game in PGN style */
+static void
+SaveGamePGN2 (FILE *f)
{
int i, offset, linelen, newblock;
// char *movetext;
if(appData.numberTag && matchMode) fprintf(f, "[Number \"%d\"]\n", nextGame+1); // [HGM] number tag
if (backwardMostMove > 0 || startedFromSetupPosition) {
- char *fen = PositionToFEN(backwardMostMove, NULL);
+ char *fen = PositionToFEN(backwardMostMove, NULL, 1);
fprintf(f, "[FEN \"%s\"]\n[SetUp \"1\"]\n", fen);
fprintf(f, "\n{--------------\n");
PrintPosition(f, backwardMostMove);
/* Print result */
if (gameInfo.resultDetails != NULL &&
gameInfo.resultDetails[0] != NULLCHAR) {
- fprintf(f, "{%s} %s\n\n", gameInfo.resultDetails,
- PGNResult(gameInfo.result));
+ char buf[MSG_SIZ], *p = gameInfo.resultDetails;
+ if(gameInfo.result == GameUnfinished && appData.clockMode &&
+ (gameMode == MachinePlaysWhite || gameMode == MachinePlaysBlack || gameMode == TwoMachinesPlay)) // [HGM] adjourn: save clock settings
+ snprintf(buf, MSG_SIZ, "%s (Clocks: %ld, %ld)", p, whiteTimeRemaining/1000, blackTimeRemaining/1000), p = buf;
+ fprintf(f, "{%s} %s\n\n", p, PGNResult(gameInfo.result));
} else {
fprintf(f, "%s\n\n", PGNResult(gameInfo.result));
}
+}
+/* Save game in PGN style and close the file */
+int
+SaveGamePGN (FILE *f)
+{
+ SaveGamePGN2(f);
fclose(f);
lastSavedGame = GameCheckSum(); // [HGM] save: remember ID of last saved game to prevent double saving
return TRUE;
PrintPosition(f, currentMove);
fprintf(f, "--------------]\n");
} else {
- fen = PositionToFEN(currentMove, NULL);
+ fen = PositionToFEN(currentMove, NULL, 1);
fprintf(f, "%s\n", fen);
free(fen);
}
return;
}
+ if (appData.icsActive) printf("\n"); // [HGM] end on new line after closing XBoard
if (appData.icsActive && appData.colorize) Colorize(ColorNone, FALSE);
if (telnetISR != NULL) {
DoSleep( appData.delayBeforeQuit );
SendToProgram("quit\n", &first);
- DoSleep( appData.delayAfterQuit );
- DestroyChildProcess(first.pr, 10 /* [AS] first.useSigterm */ );
+ DestroyChildProcess(first.pr, 4 + first.useSigterm /* [AS] first.useSigterm */ );
}
if (second.pr != NoProc) {
DoSleep( appData.delayBeforeQuit );
SendToProgram("quit\n", &second);
- DoSleep( appData.delayAfterQuit );
- DestroyChildProcess(second.pr, 10 /* [AS] second.useSigterm */ );
+ DestroyChildProcess(second.pr, 4 + second.useSigterm /* [AS] second.useSigterm */ );
}
if (first.isr != NULL) {
RemoveInputSource(first.isr);
case MachinePlaysWhite:
case MachinePlaysBlack:
if (WhiteOnMove(forwardMostMove) == (gameMode == MachinePlaysWhite)) {
- DisplayError(_("Wait until your turn,\nor select Move Now"), 0);
+ DisplayError(_("Wait until your turn,\nor select 'Move Now'."), 0);
return;
}
/* fall through */
}
if(WaitForEngine(&second, TwoMachinesEventIfReady)) return; // (if needed:) started up second engine, so wait for features
- if(second.protocolVersion >= 2 && !strstr(second.variants, VariantName(gameInfo.variant))) {
+ if(!SupportedVariant(second.variants, gameInfo.variant, gameInfo.boardWidth,
+ gameInfo.boardHeight, gameInfo.holdingsSize, second.protocolVersion, second.tidy)) {
startingEngine = FALSE;
DisplayError("second engine does not play this", 0);
return;
{
char buf[MSG_SIZ];
ChessSquare piece = boards[0][y][x];
+ static Board erasedBoard, currentBoard, menuBoard, nullBoard;
+ static int lastVariant;
if (gameMode != EditPosition && gameMode != IcsExamining) return;
switch (selection) {
case ClearBoard:
+ CopyBoard(currentBoard, boards[0]);
+ CopyBoard(menuBoard, initialPosition);
if (gameMode == IcsExamining && ics_type == ICS_FICS) {
SendToICS(ics_prefix);
SendToICS("bsetup clear\n");
SendToICS(ics_prefix);
SendToICS("clearboard\n");
} else {
+ int nonEmpty = 0;
for (x = 0; x < BOARD_WIDTH; x++) { ChessSquare p = EmptySquare;
if(x == BOARD_LEFT-1 || x == BOARD_RGHT) p = (ChessSquare) 0; /* [HGM] holdings */
for (y = 0; y < BOARD_HEIGHT; y++) {
SendToICS(buf);
}
} else {
+ if(boards[0][y][x] != p) nonEmpty++;
boards[0][y][x] = p;
}
}
}
+ if(gameMode != IcsExamining) { // [HGM] editpos: cycle trough boards
+ int r;
+ for(r = 0; r < BOARD_HEIGHT; r++) {
+ for(x = BOARD_LEFT; x < BOARD_RGHT; x++) { // create 'menu board' by removing duplicates
+ ChessSquare p = menuBoard[r][x];
+ for(y = x + 1; y < BOARD_RGHT; y++) if(menuBoard[r][y] == p) menuBoard[r][y] = EmptySquare;
+ }
+ }
+ DisplayMessage("Clicking clock again restores position", "");
+ if(gameInfo.variant != lastVariant) lastVariant = gameInfo.variant, CopyBoard(erasedBoard, boards[0]);
+ if(!nonEmpty) { // asked to clear an empty board
+ CopyBoard(boards[0], menuBoard);
+ } else
+ if(CompareBoards(currentBoard, menuBoard)) { // asked to clear an empty board
+ CopyBoard(boards[0], initialPosition);
+ } else
+ if(CompareBoards(currentBoard, initialPosition) && !CompareBoards(currentBoard, erasedBoard)
+ && !CompareBoards(nullBoard, erasedBoard)) {
+ CopyBoard(boards[0], erasedBoard);
+ } else
+ CopyBoard(erasedBoard, currentBoard);
+
+ }
}
if (gameMode == EditPosition) {
DrawPosition(FALSE, boards[0]);
if(gameInfo.variant == VariantShatranj ||
gameInfo.variant == VariantXiangqi ||
gameInfo.variant == VariantCourier ||
+ gameInfo.variant == VariantASEAN ||
gameInfo.variant == VariantMakruk )
selection = (ChessSquare)((int)selection - (int)WhiteQueen + (int)WhiteFerz);
goto defaultlabel;
if (gameMode == EditPosition || gameMode == IcsExamining) {
if(!appData.pieceMenu && blackPlaysFirst) EditPositionMenuEvent(ClearBoard, 0, 0);
SetBlackToPlayEvent();
- } else if ((gameMode == AnalyzeMode || gameMode == EditGame) && !blackFlag && WhiteOnMove(currentMove)) {
+ } else if ((gameMode == AnalyzeMode || gameMode == EditGame ||
+ gameMode == MachinePlaysBlack && PosFlags(0) & F_NULL_MOVE && !blackFlag && !shiftKey) && WhiteOnMove(currentMove)) {
UserMoveEvent((int)EmptySquare, DROP_RANK, 0, 0, 0); // [HGM] multi-move: if not out of time, enters null move
} else if (shiftKey) {
AdjustClock(which, -1);
if (gameMode == EditPosition || gameMode == IcsExamining) {
if(!appData.pieceMenu && !blackPlaysFirst) EditPositionMenuEvent(ClearBoard, 0, 0);
SetWhiteToPlayEvent();
- } else if ((gameMode == AnalyzeMode || gameMode == EditGame) && !whiteFlag && !WhiteOnMove(currentMove)) {
+ } else if ((gameMode == AnalyzeMode || gameMode == EditGame ||
+ gameMode == MachinePlaysWhite && PosFlags(0) & F_NULL_MOVE && !whiteFlag && !shiftKey) && !WhiteOnMove(currentMove)) {
UserMoveEvent((int)EmptySquare, DROP_RANK, 0, 0, 0); // [HGM] multi-move
} else if (shiftKey) {
AdjustClock(which, -1);
SetHighlights(-1, -1, toX, toY);
}
} else {
+ int viaX = moveList[target - 1][5] - AAA;
+ int viaY = moveList[target - 1][6] - ONE;
fromX = moveList[target - 1][0] - AAA;
fromY = moveList[target - 1][1] - ONE;
if (target == currentMove + 1) {
+ if(moveList[target - 1][4] == ';') { // multi-leg
+ ChessSquare piece = boards[currentMove][viaY][viaX];
+ AnimateMove(boards[currentMove], fromX, fromY, viaX, viaY);
+ boards[currentMove][viaY][viaX] = boards[currentMove][fromY][fromX];
+ AnimateMove(boards[currentMove], viaX, viaY, toX, toY);
+ boards[currentMove][viaY][viaX] = piece;
+ } else
AnimateMove(boards[currentMove], fromX, fromY, toX, toY);
}
if (appData.highlightLastMove) {
case MachinePlaysWhite:
case MachinePlaysBlack:
if (WhiteOnMove(forwardMostMove) == (gameMode == MachinePlaysWhite)) {
- DisplayError(_("Wait until your turn,\nor select Move Now"), 0);
+ DisplayError(_("Wait until your turn,\nor select 'Move Now'."), 0);
return;
}
if (forwardMostMove < 2) return;
switch (gameMode) {
case MachinePlaysWhite:
if (WhiteOnMove(forwardMostMove)) {
- DisplayError(_("Wait until your turn"), 0);
+ DisplayError(_("Wait until your turn."), 0);
return;
}
break;
case BeginningOfGame:
case MachinePlaysBlack:
if (!WhiteOnMove(forwardMostMove)) {
- DisplayError(_("Wait until your turn"), 0);
+ DisplayError(_("Wait until your turn."), 0);
return;
}
break;
hintRequested = TRUE;
}
+int
+SaveSelected (FILE *g, int dummy, char *dummy2)
+{
+ ListGame * lg = (ListGame *) gameList.head;
+ int nItem, cnt=0;
+ FILE *f;
+
+ if( !(f = GameFile()) || ((ListGame *) gameList.tailPred)->number <= 0 ) {
+ DisplayError(_("Game list not loaded or empty"), 0);
+ return 0;
+ }
+
+ creatingBook = TRUE; // suppresses stuff during load game
+
+ /* Get list size */
+ for (nItem = 1; nItem <= ((ListGame *) gameList.tailPred)->number; nItem++){
+ if(lg->position >= 0) { // selected?
+ LoadGame(f, nItem, "", TRUE);
+ SaveGamePGN2(g); // leaves g open
+ cnt++; DoEvents();
+ }
+ lg = (ListGame *) lg->node.succ;
+ }
+
+ fclose(g);
+ creatingBook = FALSE;
+
+ return cnt;
+}
+
void
CreateBookEvent ()
{
/* Get list size */
for (nItem = 1; nItem <= ((ListGame *) gameList.tailPred)->number; nItem++){
- LoadGame(f, nItem, "", TRUE);
- AddGameToBook(TRUE);
+ if(lg->position >= 0) {
+ LoadGame(f, nItem, "", TRUE);
+ AddGameToBook(TRUE);
+ DoEvents();
+ }
lg = (ListGame *) lg->node.succ;
}
switch (gameMode) {
case MachinePlaysWhite:
if (WhiteOnMove(forwardMostMove)) {
- DisplayError(_("Wait until your turn"), 0);
+ DisplayError(_("Wait until your turn."), 0);
return;
}
break;
case BeginningOfGame:
case MachinePlaysBlack:
if (!WhiteOnMove(forwardMostMove)) {
- DisplayError(_("Wait until your turn"), 0);
+ DisplayError(_("Wait until your turn."), 0);
return;
}
break;
SendToProgram(message, cps);
}
+char *
+EngineDefinedVariant (ChessProgramState *cps, int n)
+{ // return name of n-th unknown variant that engine supports
+ static char buf[MSG_SIZ];
+ char *p, *s = cps->variants;
+ if(!s) return NULL;
+ do { // parse string from variants feature
+ VariantClass v;
+ p = strchr(s, ',');
+ if(p) *p = NULLCHAR;
+ v = StringToVariant(s);
+ if(v == VariantNormal && strcmp(s, "normal") && !strstr(s, "_normal")) v = VariantUnknown; // garbage is recognized as normal
+ if(v == VariantUnknown) { // non-standard variant in list of engine-supported variants
+ if(--n < 0) safeStrCpy(buf, s, MSG_SIZ);
+ }
+ if(p) *p++ = ',';
+ if(n < 0) return buf;
+ } while(s = p);
+ return NULL;
+}
+
int
BoolFeature (char **p, char *name, int *loc, ChessProgramState *cps)
{
/* End of additions by Tord */
/* [HGM] added features: */
+ if (BoolFeature(&p, "highlight", &cps->highlight, cps)) continue;
if (BoolFeature(&p, "debug", &cps->debug, cps)) continue;
if (BoolFeature(&p, "nps", &cps->supportsNPS, cps)) continue;
if (IntFeature(&p, "level", &cps->maxNrOfSessions, cps)) continue;
ChessMove moveType;
// [HGM] FENedit
- if(gameMode == EditPosition && ParseFEN(board, &n, move) ) {
+ if(gameMode == EditPosition && ParseFEN(board, &n, move, TRUE) ) {
EditPositionPasteFEN(move);
return;
}
char *
-PositionToFEN (int move, char *overrideCastling)
+PositionToFEN (int move, char *overrideCastling, int moveCounts)
{
int i, j, fromX, fromY, toX, toY;
int whiteToPlay;
if(PieceToChar(piece) == '+') {
/* [HGM] write promoted pieces as '+<unpromoted>' (Shogi) */
*p++ = '+';
- piece = (ChessSquare)(DEMOTED piece);
+ piece = (ChessSquare)(CHUDEMOTED piece);
}
- *p++ = PieceToChar(piece);
+ *p++ = (piece == DarkSquare ? '*' : PieceToChar(piece));
if(p[-1] == '~') {
/* [HGM] flag promoted pieces as '<promoted>~' (Crazyhouse) */
- p[-1] = PieceToChar((ChessSquare)(DEMOTED piece));
+ p[-1] = PieceToChar((ChessSquare)(CHUDEMOTED piece));
*p++ = '~';
}
}
} else {
if(nrCastlingRights) {
q = p;
- if(gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) {
+ if(appData.fischerCastling) {
/* [HGM] write directly from rights */
if(boards[move][CASTLING][2] != NoRights &&
boards[move][CASTLING][0] != NoRights )
}
if(gameInfo.variant != VariantShogi && gameInfo.variant != VariantXiangqi &&
- gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier && gameInfo.variant != VariantMakruk ) {
+ gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier &&
+ gameInfo.variant != VariantMakruk && gameInfo.variant != VariantASEAN ) {
/* En passant target square */
if (move > backwardMostMove) {
fromX = moveList[move - 1][0] - AAA;
}
}
- /* [HGM] find reversible plies */
+ if(moveCounts)
{ int i = 0, j=move;
+ /* [HGM] find reversible plies */
if (appData.debugMode) { int k;
fprintf(debugFP, "write FEN 50-move: %d %d %d\n", initialRulePlies, forwardMostMove, backwardMostMove);
for(k=backwardMostMove; k<=forwardMostMove; k++)
if( j == backwardMostMove ) i += initialRulePlies;
sprintf(p, "%d ", i);
p += i>=100 ? 4 : i >= 10 ? 3 : 2;
- }
- /* Fullmove number */
- sprintf(p, "%d", (move / 2) + 1);
+
+ /* Fullmove number */
+ sprintf(p, "%d", (move / 2) + 1);
+ } else *--p = NULLCHAR;
return StrSave(buf);
}
Boolean
-ParseFEN (Board board, int *blackPlaysFirst, char *fen)
+ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize)
{
- int i, j;
+ int i, j, k, w=0, subst=0, shuffle=0;
char *p, c;
int emptycount, virgin[BOARD_FILES];
ChessSquare piece;
p = fen;
- /* [HGM] by default clear Crazyhouse holdings, if present */
- if(gameInfo.holdingsWidth) {
- for(i=0; i<BOARD_HEIGHT; i++) {
- board[i][0] = EmptySquare; /* black holdings */
- board[i][BOARD_WIDTH-1] = EmptySquare; /* white holdings */
- board[i][1] = (ChessSquare) 0; /* black counts */
- board[i][BOARD_WIDTH-2] = (ChessSquare) 0; /* white counts */
- }
- }
-
/* Piece placement data */
for (i = BOARD_HEIGHT - 1; i >= 0; i--) {
j = 0;
for (;;) {
- if (*p == '/' || *p == ' ' || (*p == '[' && i == 0) ) {
- if (*p == '/') p++;
+ if (*p == '/' || *p == ' ' || *p == '[' ) {
+ if(j > w) w = j;
emptycount = gameInfo.boardWidth - j;
while (emptycount--)
board[i][(j++)+gameInfo.holdingsWidth] = EmptySquare;
+ if (*p == '/') p++;
+ else if(autoSize) { // we stumbled unexpectedly into end of board
+ for(k=i; k<BOARD_HEIGHT; k++) { // too few ranks; shift towards bottom
+ for(j=0; j<BOARD_WIDTH; j++) board[k-i][j] = board[k][j];
+ }
+ appData.NrRanks = gameInfo.boardHeight - i; i=0;
+ }
break;
-#if(BOARD_FILES >= 10)
+#if(BOARD_FILES >= 10)*0
} else if(*p=='x' || *p=='X') { /* [HGM] X means 10 */
p++; emptycount=10;
if (j + emptycount > gameInfo.boardWidth) return FALSE;
while (emptycount--)
board[i][(j++)+gameInfo.holdingsWidth] = EmptySquare;
#endif
+ } else if (*p == '*') {
+ board[i][(j++)+gameInfo.holdingsWidth] = DarkSquare; p++;
} else if (isdigit(*p)) {
emptycount = *p++ - '0';
while(isdigit(*p)) emptycount = 10*emptycount + *p++ - '0'; /* [HGM] allow > 9 */
if (j + emptycount > gameInfo.boardWidth) return FALSE;
while (emptycount--)
board[i][(j++)+gameInfo.holdingsWidth] = EmptySquare;
+ } else if (*p == '<') {
+ if(i == BOARD_HEIGHT-1) shuffle = 1;
+ else if (i != 0 || !shuffle) return FALSE;
+ p++;
+ } else if (shuffle && *p == '>') {
+ p++; // for now ignore closing shuffle range, and assume rank-end
+ } else if (*p == '?') {
+ if (j >= gameInfo.boardWidth) return FALSE;
+ if (i != 0 && i != BOARD_HEIGHT-1) return FALSE; // only on back-rank
+ board[i][(j++)+gameInfo.holdingsWidth] = ClearBoard; p++; subst++; // placeHolder
} else if (*p == '+' || isalpha(*p)) {
if (j >= gameInfo.boardWidth) return FALSE;
if(*p=='+') {
piece = CharToPiece(*++p);
if(piece == EmptySquare) return FALSE; /* unknown piece */
- piece = (ChessSquare) (PROMOTED piece ); p++;
+ piece = (ChessSquare) (CHUPROMOTED piece ); p++;
if(PieceToChar(piece) != '+') return FALSE; /* unpromotable piece */
} else piece = CharToPiece(*p++);
}
while (*p == '/' || *p == ' ') p++;
+ if(autoSize) appData.NrFiles = w, InitPosition(TRUE);
+
+ /* [HGM] by default clear Crazyhouse holdings, if present */
+ if(gameInfo.holdingsWidth) {
+ for(i=0; i<BOARD_HEIGHT; i++) {
+ board[i][0] = EmptySquare; /* black holdings */
+ board[i][BOARD_WIDTH-1] = EmptySquare; /* white holdings */
+ board[i][1] = (ChessSquare) 0; /* black counts */
+ board[i][BOARD_WIDTH-2] = (ChessSquare) 0; /* white counts */
+ }
+ }
+
/* [HGM] look for Crazyhouse holdings here */
while(*p==' ') p++;
if( gameInfo.holdingsWidth && p[-1] == '/' || *p == '[') {
+ int swap=0, wcnt=0, bcnt=0;
if(*p == '[') p++;
+ if(*p == '<') swap++, p++;
if(*p == '-' ) p++; /* empty holdings */ else {
if( !gameInfo.holdingsWidth ) return FALSE; /* no room to put holdings! */
/* if we would allow FEN reading to set board size, we would */
if( i >= gameInfo.holdingsSize ) return FALSE;
board[BOARD_HEIGHT-1-i][0] = piece; /* black holdings */
board[BOARD_HEIGHT-1-i][1]++; /* black counts */
+ bcnt++;
} else {
i = (int)piece - (int)WhitePawn;
i = PieceToNumber((ChessSquare)i);
if( i >= gameInfo.holdingsSize ) return FALSE;
board[i][BOARD_WIDTH-1] = piece; /* white holdings */
board[i][BOARD_WIDTH-2]++; /* black holdings */
+ wcnt++;
}
}
+ if(subst) { // substitute back-rank question marks by holdings pieces
+ for(j=BOARD_LEFT; j<BOARD_RGHT; j++) {
+ int k, m, n = bcnt + 1;
+ if(board[0][j] == ClearBoard) {
+ if(!wcnt) return FALSE;
+ n = rand() % wcnt;
+ for(k=0, m=n; k<gameInfo.holdingsSize; k++) if((m -= board[k][BOARD_WIDTH-2]) < 0) {
+ board[0][j] = board[k][BOARD_WIDTH-1]; wcnt--;
+ if(--board[k][BOARD_WIDTH-2] == 0) board[k][BOARD_WIDTH-1] = EmptySquare;
+ break;
+ }
+ }
+ if(board[BOARD_HEIGHT-1][j] == ClearBoard) {
+ if(!bcnt) return FALSE;
+ if(n >= bcnt) n = rand() % bcnt; // use same randomization for black and white if possible
+ for(k=0, m=n; k<gameInfo.holdingsSize; k++) if((n -= board[BOARD_HEIGHT-1-k][1]) < 0) {
+ board[BOARD_HEIGHT-1][j] = board[BOARD_HEIGHT-1-k][0]; bcnt--;
+ if(--board[BOARD_HEIGHT-1-k][1] == 0) board[BOARD_HEIGHT-1-k][0] = EmptySquare;
+ break;
+ }
+ }
+ }
+ subst = 0;
+ }
}
if(*p == ']') p++;
}
+ if(subst) return FALSE; // substitution requested, but no holdings
+
while(*p == ' ') p++;
/* Active color */
board[EP_STATUS] = EP_UNKNOWN;
for(i=0; i<nrCastlingRights; i++ ) {
board[CASTLING][i] =
- gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom ? NoRights : initialRights[i];
+ appData.fischerCastling ? NoRights : initialRights[i];
} /* assume possible unless obviously impossible */
if(initialRights[0]!=NoRights && board[castlingRank[0]][initialRights[0]] != WhiteRook) board[CASTLING][0] = NoRights;
if(initialRights[1]!=NoRights && board[castlingRank[1]][initialRights[1]] != WhiteRook) board[CASTLING][1] = NoRights;
while(*p==' ') p++;
if(nrCastlingRights) {
+ int fischer = 0;
if(gameInfo.variant == VariantSChess) for(i=0; i<BOARD_FILES; i++) virgin[i] = 0;
if(*p >= 'A' && *p <= 'Z' || *p >= 'a' && *p <= 'z' || *p=='-') {
/* castling indicator present, so default becomes no castlings */
}
}
while(*p=='K' || *p=='Q' || *p=='k' || *p=='q' || *p=='-' ||
- (gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom || gameInfo.variant == VariantSChess) &&
+ (appData.fischerCastling || gameInfo.variant == VariantSChess) &&
( *p >= 'a' && *p < 'a' + gameInfo.boardWidth) ||
( *p >= 'A' && *p < 'A' + gameInfo.boardWidth) ) {
int c = *p++, whiteKingFile=NoRights, blackKingFile=NoRights;
board[CASTLING][2] = whiteKingFile;
if(board[CASTLING][0] != NoRights) virgin[board[CASTLING][0]] |= VIRGIN_W;
if(board[CASTLING][2] != NoRights) virgin[board[CASTLING][2]] |= VIRGIN_W;
+ if(whiteKingFile != BOARD_WIDTH>>1|| i != BOARD_RGHT-1) fischer = 1;
break;
case'Q':
for(i=BOARD_LEFT; i<BOARD_RGHT && board[0][i]!=WhiteRook && i<whiteKingFile; i++);
board[CASTLING][2] = whiteKingFile;
if(board[CASTLING][1] != NoRights) virgin[board[CASTLING][1]] |= VIRGIN_W;
if(board[CASTLING][2] != NoRights) virgin[board[CASTLING][2]] |= VIRGIN_W;
+ if(whiteKingFile != BOARD_WIDTH>>1|| i != BOARD_LEFT) fischer = 1;
break;
case'k':
for(i=BOARD_RGHT-1; board[BOARD_HEIGHT-1][i]!=BlackRook && i>blackKingFile; i--);
board[CASTLING][5] = blackKingFile;
if(board[CASTLING][3] != NoRights) virgin[board[CASTLING][3]] |= VIRGIN_B;
if(board[CASTLING][5] != NoRights) virgin[board[CASTLING][5]] |= VIRGIN_B;
+ if(blackKingFile != BOARD_WIDTH>>1|| i != BOARD_RGHT-1) fischer = 1;
break;
case'q':
for(i=BOARD_LEFT; i<BOARD_RGHT && board[BOARD_HEIGHT-1][i]!=BlackRook && i<blackKingFile; i++);
board[CASTLING][5] = blackKingFile;
if(board[CASTLING][4] != NoRights) virgin[board[CASTLING][4]] |= VIRGIN_B;
if(board[CASTLING][5] != NoRights) virgin[board[CASTLING][5]] |= VIRGIN_B;
+ if(blackKingFile != BOARD_WIDTH>>1|| i != BOARD_LEFT) fischer = 1;
case '-':
break;
default: /* FRC castlings */
}
for(i=0; i<nrCastlingRights; i++)
if(board[CASTLING][i] != NoRights) initialRights[i] = board[CASTLING][i];
- if(gameInfo.variant == VariantSChess) for(i=0; i<BOARD_FILES; i++) board[VIRGIN][i] = virgin[i];
+ if(gameInfo.variant == VariantSChess)
+ for(i=0; i<BOARD_FILES; i++) board[VIRGIN][i] = shuffle ? VIRGIN_W | VIRGIN_B : virgin[i]; // when shuffling assume all virgin
+ if(fischer && shuffle) appData.fischerCastling = TRUE;
if (appData.debugMode) {
fprintf(debugFP, "FEN castling rights:");
for(i=0; i<nrCastlingRights; i++)
while(*p==' ') p++;
}
+ if(shuffle) SetUpShuffle(board, appData.defaultFrcPosition);
+
/* read e.p. field in games that know e.p. capture */
if(gameInfo.variant != VariantShogi && gameInfo.variant != VariantXiangqi &&
- gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier && gameInfo.variant != VariantMakruk ) {
+ gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier &&
+ gameInfo.variant != VariantMakruk && gameInfo.variant != VariantASEAN ) {
if(*p=='-') {
p++; board[EP_STATUS] = EP_NONE;
} else {
if (fen != NULL) {
Board initial_position;
- if (!ParseFEN(initial_position, &blackPlaysFirst, fen)) {
+ if (!ParseFEN(initial_position, &blackPlaysFirst, fen, TRUE)) {
DisplayError(_("Bad FEN position in clipboard"), 0);
return ;
} else {
extern char marker[BOARD_RANKS][BOARD_FILES];
extern char lastMsg[MSG_SIZ];
extern Boolean bookUp;
+extern Boolean addToBookFlag;
extern int tinyLayout, smallLayout;
extern Boolean mcMode;
+extern int dragging;
+extern char variantError[];
+extern char lastTalker[];
void MarkMenuItem P((char *menuRef, int state));
char *CmailMsg P((void));
/* Tord: Added the useFEN960 parameter in PositionToFEN() below */
-char *PositionToFEN P((int move, char* useFEN960));
+char *PositionToFEN P((int move, char* useFEN960, int moveCounts));
void AlphaRank P((char *s, int n)); /* [HGM] Shogi move preprocessor */
void EditPositionPasteFEN P((char *fen));
void TimeDelay P((long ms));
int LoadGameFromFile P((char *filename, int n, char *title, int useList));
int CmailLoadGame P((FILE *f, int n, char *title, int useList));
int ReloadGame P((int offset));
+int SaveSelected P((FILE *f, int dummy, char *dummy2));
int SaveGame P((FILE *f, int dummy, char *dummy2));
int SaveGameToFile P((char *filename, int append));
int LoadPosition P((FILE *f, int n, char *title));
void EditBookEvent P((void));
Boolean DisplayBook P((int moveNr));
void SaveToBook P((char *text));
+void AddBookMove P((char *text));
+void PlayBookMove P((char *text, int index));
+void HoverEvent P((int hiX, int hiY, int x, int y));
int PackGame P((Board board));
-Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen));
+Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen, Boolean autoSize));
void ApplyMove P((int fromX, int fromY, int toX, int toY, int promoChar, Board board));
void PackMove P((int fromX, int fromY, int toX, int toY, ChessSquare promoPiece));
void ics_printf P((char *format, ...));
typedef enum { CheckBox, ComboBox, TextBox, Button, Spin, ResetButton, SaveButton, ListBox, Graph, PopUp,
FileName, PathName, Slider, Message, Fractional, Label, Icon,
- BoxBegin, BoxEnd, BarBegin, BarEnd, DropDown, Break, EndMark } Control;
+ BoxBegin, BoxEnd, BarBegin, BarEnd, DropDown, Break, EndMark, Skip } Control;
typedef struct XB_OPT { // [HGM] options: descriptor of UCI-style option
int value; // current setting, starts as default
int analyzing;
int protocolVersion;
int initDone;
+ int pseudo;
/* Added by Tord: */
int useFEN960; /* 0=use "KQkq" style FENs, 1=use "HAha" style FENs */
int debug; /* [HGM] ignore engine debug lines starting with '#' */
int maxNrOfSessions; /* [HGM] secondary TC: max args in 'level' command */
int accumulateTC; /* [HGM] secondary TC: how to handle extra sessions */
+ int drawDepth; /* [HGM] egbb: search depth to play egbb draws */
int nps; /* [HGM] nps: factor for node count to replace time */
int supportsNPS;
int alphaRank; /* [HGM] shogi: engine uses shogi-type coordinates */
char *egtFormats; /* [HGM] EGT: supported tablebase formats */
int bookSuspend; /* [HGM] book: go was deferred because of book hit */
int pause; /* [HGM] pause: 1=supports it, 2=actually paused */
+ int highlight; /* [HGM] engine wants to get lift and put commands */
int nrOptions; /* [HGM] options: remembered option="..." features */
#define MAX_OPTIONS 200
Option option[MAX_OPTIONS];
extern char *recentEngines;
extern char *comboLine;
extern Boolean partnerUp, twoBoards;
+extern char engineVariant[];
+char *EngineDefinedVariant P((ChessProgramState *cps, int n));
void SettingsPopUp P((ChessProgramState *cps)); // [HGM] really in front-end, but CPS not known in frontend.h
int WaitForEngine P((ChessProgramState *cps, DelayedEventCallback x));
void Load P((ChessProgramState *cps, int n));
void MakeEngineOutputTitle P((void));
void LoadTheme P((void));
void CreateBookEvent P((void));
+char *SupportedVariant P((char *list, VariantClass v, int w, int h, int s, int proto, char *engine));
/* A point in time */
typedef struct {
int ms; /* Assuming this is >= 16 bits */
} TimeMark;
+extern TimeMark programStartTime;
+
void GetTimeMark P((TimeMark *));
long SubtractTimeMarks P((TimeMark *, TimeMark *));
AnimateMove (Board board, int fromX, int fromY, int toX, int toY)
{
ChessSquare piece;
- int hop;
+ int hop, x = toX, y = toY;
Pnt start, finish, mid;
Pnt frames[kFactor * 2 + 1];
int nFrames, startColor, endColor;
+ if(killX >= 0 && IS_LION(board[fromY][fromX])) Roar();
+
/* Are we animating? */
if (!appData.animate || appData.blindfold)
return;
if(board[toY][toX] == WhiteRook && board[fromY][fromX] == WhiteKing ||
- board[toY][toX] == BlackRook && board[fromY][fromX] == BlackKing)
+ board[toY][toX] == BlackRook && board[fromY][fromX] == BlackKing ||
+ board[toY][toX] == WhiteKing && board[fromY][fromX] == WhiteRook || // [HGM] seirawan
+ board[toY][toX] == BlackKing && board[fromY][fromX] == BlackRook)
return; // [HGM] FRC: no animtion of FRC castlings, as to-square is not true to-square
if (fromY < 0 || fromX < 0 || toX < 0 || toY < 0) return;
piece = board[fromY][fromX];
if (piece >= EmptySquare) return;
+ if(killX >= 0) toX = killX, toY = killY; // [HGM] lion: first to kill square
+
+again:
+
#if DONT_HOP
hop = FALSE;
#else
/* Be sure end square is redrawn */
damage[0][toY][toX] |= True;
+
+ if(toX != x || toY != y) { fromX = toX; fromY = toY; toX = x; toY = y; goto again; } // second leg
}
void
snprintf(tString, 3, "%d", piece);
align = 4; // holdings count in upper-left corner
}
+ if(piece == DarkSquare) square_color = 2;
if(square_color == 2 || appData.blindfold) piece = EmptySquare;
if (do_flash && piece != EmptySquare && appData.flashCount > 0) {
* ------------------------------------------------------------------------
*/
+#include "config.h"
+
#include <stdio.h>
#include <string.h>
#include <time.h>
p = MovesToText(count, entries);
EditTagsPopUp(p, NULL);
free(p);
+ addToBookFlag = FALSE;
return TRUE;
}
}
void
+PlayBookMove(char *text, int index)
+{
+ char *start = text+index, *end = start;
+ while(start > text && start[-1] != ' ' && start[-1] != '\t') start--;
+ while(*end && *++end != ' ' && *end != '\n'); *end = NULLCHAR; // find clicked word
+ if(start != end) TypeInDoneEvent(start); // fake it was typed in move type-in
+}
+
+void
FlushBook ()
{
FILE *f;
outside world in ASCII. In a similar way, the different rank numbering
systems (starting at rank 0 or 1) are implemented by redefining '1'.
*/
-#define BOARD_RANKS 11 /* [HGM] for in declarations */
+#define BOARD_RANKS 17 /* [HGM] for in declarations */
#define BOARD_FILES 16 /* [HGM] for in declarations */
#define BOARD_HEIGHT (gameInfo.boardHeight) /* [HGM] made user adjustable */
#define BOARD_WIDTH (gameInfo.boardWidth + 2*gameInfo.holdingsWidth)
#define VIRGIN (BOARD_RANKS-2) /* [HGM] pieces not moved */
#define EP_STATUS CASTLING][(BOARD_FILES-2) /* [HGM] in upper rank */
#define HOLDINGS_SET CASTLING][(BOARD_FILES-1) /* [HGM] in upper-right corner*/
-#define ONE ('1'-(BOARD_HEIGHT>9)) /* [HGM] foremost board rank */
+#define ONE ('1'-(BOARD_HEIGHT==10)) /* [HGM] foremost board rank */
#define AAA ('a'-BOARD_LEFT) /* [HGM] leftmost board file */
#define VIRGIN_W 1 /* [HGM] flags in Board[VIRGIN][X] */
#define VIRGIN_B 2
WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen,
WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan,
WhiteCannon, WhiteNightrider, WhiteCardinal, WhiteDragon, WhiteGrasshopper,
- WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteKing,
+ WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteLion,
+ WhiteTokin, WhiteDagger, WhitePCardinal, WhitePDragon, WhiteCat,
+ WhitePSword, WhiteMonarch, WhiteMother, WhiteNothing, WhitePRook, WhitePDagger,
+ WhiteDolphin, WhiteStag, WhiteHorned, WhiteEagle, WhiteSword,
+ WhiteCrown, WhiteHCrown, WhiteHorse, WhiteDrunk, WhitePBishop, WhiteKing,
BlackPawn, BlackKnight, BlackBishop, BlackRook, BlackQueen,
BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan,
BlackCannon, BlackNightrider, BlackCardinal, BlackDragon, BlackGrasshopper,
- BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackKing,
- EmptySquare,
+ BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackLion,
+ BlackTokin, BlackDagger, BlackPCardinal, BlackPDragon, BlackCat,
+ BlackPSword, BlackMonarch, BlackMother, BlackNothing, BlackPRook, BlackPDagger,
+ BlackDolphin, BlackStag, BlackHorned, BlackEagle, BlackSword,
+ BlackCrown, BlackHCrown, BlackHorse, BlackDrunk, BlackPBishop, BlackKing,
+ EmptySquare, DarkSquare,
NoRights, // [HGM] gamestate: for castling rights hidden in board[CASTLING]
ClearBoard, WhitePlay, BlackPlay, PromotePiece, DemotePiece /*for use on EditPosition menus*/
} ChessSquare;
#define PROMOTED (int)WhiteDragon - (int)WhiteRook + (int)
#define DEMOTED (int)WhiteRook - (int)WhiteDragon + (int)
#define SHOGI (int)EmptySquare + (int)
+#define CHUPROMOTED ((int)WhitePDragon - (int)WhiteDragon)*(gameInfo.variant == VariantChu) + PROMOTED
+#define CHUDEMOTED ((int)WhiteDragon - (int)WhitePDragon)*(gameInfo.variant == VariantChu) + DEMOTED
+#define IS_SHOGI(V) ((V) == VariantShogi || (V) == VariantChu)
+#define IS_LION(V) ((V) == WhiteLion || (V) == BlackLion)
typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES];
WhitePromotion, WhiteNonPromotion,
BlackPromotion, BlackNonPromotion,
WhiteCapturesEnPassant, BlackCapturesEnPassant,
- WhiteDrop, BlackDrop,
+ WhiteDrop, BlackDrop, FirstLeg,
NormalMove, AmbiguousMove, IllegalMove, ImpossibleMove,
WhiteWins, BlackWins, GameIsDrawn, GameUnfinished,
GNUChessGame, XBoardGame, MoveNumberOne, Open, Close, Nothing,
} ColorClass;
typedef enum {
- SoundMove, SoundBell, SoundAlarm, SoundIcsWin, SoundIcsLoss,
+ SoundMove, SoundBell, SoundRoar, SoundAlarm, SoundIcsWin, SoundIcsLoss,
SoundIcsDraw, SoundIcsUnfinished, NSoundClasses
} SoundClass;
Variant35, /* Temporary name for possible future ICC wild 35 */
Variant36, /* Temporary name for possible future ICC wild 36 */
VariantShogi, /* [HGM] added variants */
+ VariantChu,
VariantXiangqi,
VariantCourier,
VariantGothic,
VariantGreat,
VariantTwilight,
VariantMakruk,
+ VariantASEAN,
VariantSChess,
VariantGrand,
VariantSpartan,
+ VariantLion,
+ VariantChuChess,
VariantUnknown /* Catchall for other unknown variants */
} VariantClass;
"wild35", \
"wild36", \
"shogi", \
+ "chu", \
"xiangqi", \
"courier", \
"gothic", \
"great",\
"twilight",\
"makruk",\
+ "asean",\
"seirawan",\
"grand",\
"spartan",\
+ "lion",\
+ "chuchess",\
"unknown" \
}
char *loadPositionFile;
int loadPositionIndex; /* position # within file */
char *savePositionFile;
+ Boolean fischerCastling;/* [HGM] fischer: allow Fischr castling in any variant */
Boolean matchMode;
int matchGames;
Boolean monoMode;
char *clockFont;
char *messageFont; /* WinBoard only */
char *coordFont;
- char *font; /* xboard only: all other fonts */
- char *tagsFont; /* WinBoard only */
- char *commentFont; /* WinBoard only */
- char *icsFont; /* WinBoard only */
+ char *font; /* xboard only */
+ char *tagsFont;
+ char *commentFont;
+ char *historyFont;
+ char *gameListFont;
+ char *icsFont;
Boolean ringBellAfterMoves;
Boolean autoCallFlag;
Boolean flipView;
Boolean autoFlipView;
char *cmailGameName; /* xboard only */
+ Boolean headers;
Boolean alwaysPromoteToQueen;
Boolean oldSaveStyle;
Boolean oneClick;
char *soundSeek;
char *soundMove; // [HGM] IMPORTANT: order must be as in SoundClass
char *soundBell;
+ char *soundRoar;
char *soundIcsAlarm;
char *soundIcsWin;
char *soundIcsLoss;
int darkBackTextureMode;
char * renderPiecesWithFont; /* Name of font for rendering chess pieces */
char * fontToPieceTable; /* Map to translate font character to chess pieces */
+ char * inscriptions; /* text (kanji) to write on top of a piece */
int fontBackColorWhite;
int fontForeColorWhite;
int fontBackColorBlack;
int adjudicateDrawMoves;
Boolean autoDisplayComment;
Boolean autoDisplayTags;
+ Boolean pseudo[ENGINES]; /* [HGM] pseudo-engines */
Boolean isUCI[ENGINES];
Boolean hasOwnBookUCI[ENGINES];
char * adapterCommand;
int zippyShortGame; /* [HGM] aborter */
#endif
Boolean lowTimeWarning; /* [HGM] low time */
+ Boolean quitNext;
char *lowTimeWarningColor;
char *serverFileName;
char *serverMovesName;
+ char *finger;
Boolean suppressLoadMoves;
int serverPause;
int timeOdds[ENGINES];
+ int drawDepth[ENGINES];
int timeOddsMode;
int accumulateTC[ENGINES];
int NPS[ENGINES];
int dateThreshold;
int searchMode;
int stretch;
+ int minPieces;
+ int maxPieces;
Boolean ignoreColors;
Boolean findMirror;
char *userName;
extern WindowPlacement wpMoveHistory;
extern WindowPlacement wpGameList;
extern WindowPlacement wpTags;
+extern WindowPlacement wpTextMenu;
#define MAXENGINES 2000
--- /dev/null
+;
+; settings for oriental Chu-Shogi theme
+;
+-variant chu
+;
+; pieces: supplied chu-shogi svg's, and flip them in flipView
+;
+-pid ~~/themes/chu
+-flipBlack true
+-trueColors true
+;
+; board: no checkering (both w. and w.o. texture)
+;
+-liteBackTextureFile "~~/themes/textures/wood_l.png"
+-darkBackTextureFile "~~/themes/textures/wood_l.png"
+-lightSquareColor #FF8040
+-darkSquareColor #FF8040
+;
+; detour under-promotion is less convenient when non-pawns promote
+;
+-sweepPromotions false
+;
+; legality testing must be on for double-moves to work, no adjudication
+;
+-testLegality true
+-trivialDraws false
+-materialDraws false
+;
+; make the Lion roar on double captures
+;
+-roarSound roar.wav
+;
+; redefine default engine
+;
+-fcp hachu
+-scp hachu
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-chu-rc
+-saveSettingsFile ~/.xboard-chu-rc
+
--- /dev/null
+;
+; settings for Internet Chess Server client
+;
+-ics
+;
+; set up own persistence file, used for ICS play
+;
+-settingsFile ~/.xboard-ics-rc
+-saveSettingsFile ~/.xboard-ics-rc
+
--- /dev/null
+;
+; additional settings for Judkins Shogi
+;
+-variant shogi
+;
+; size overrides
+;
+-boardWidth 6
+-boardHeight 6
+-holdingsSize 6
+;
+; remove L from piece set
+;
+-pieceToCharTable "PNBR.S...G.++++.+Kpnbr.s...g.++++.+k"
+;
+; provide initial position
+;
+-loadPositionFile "~~/themes/conf/judkins.fen"
+
--- /dev/null
+rbnsgk/6p/6/6/P5/KGSNBR w 0 1
+
--- /dev/null
+;
+; additional settings for mini-Shogi
+;
+-variant shogi
+;
+; size overrides
+;
+-boardWidth 5
+-boardHeight 5
+-holdingsSize 5
+;
+; remove L and N from piece set
+;
+-pieceToCharTable "P.BR.S...G.+.++.+Kp.br.s...g.+.++.+k"
+;
+; redefine default engine
+;
+-fcp gnuminishogi
+-scp gnuminishogi
+;
+; provide initial position
+;
+-loadPositionFile "~~/themes/conf/mini.fen"
+
--- /dev/null
+rbsgk/4p/5/P4/KGSBR w 0 1
+
--- /dev/null
+;
+; additional settings for Sho Shogi
+;
+-variant shogi
+;
+; size overrides
+;
+-boardWidth 9
+-boardHeight 9
+-holdingsSize 0
+;
+; add Elephant to piece set
+;
+-pieceToCharTable "PNBRLSE..G.+++++++Kpnbrlse..g.+++++++k"
+;
+; provide initial position
+;
+-loadPositionFile "~~/themes/conf/sho.fen"
+;
+; must play with legality testing off, for +E and mate
+;
+-testLegality false
+;
+; redefine default engine
+;
+-fcp hachu
+-scp hachu
+
--- /dev/null
+lnsgkgsnl/1r2e2b1/ppppppppp/9/9/9/PPPPPPPPP/1B2E2R1/LNSGKGSNL w 0 1
+
--- /dev/null
+;
+; settings for oriental Shogi theme
+;
+-variant shogi
+;
+; pieces: supplied shogi svg's, and flip them in flipView
+;
+-pid ~~/themes/shogi
+-flipBlack true
+-trueColors true
+;
+; board: no checkering (both w. and w.o. texture)
+;
+-liteBackTextureFile "~~/themes/textures/wood_l.png"
+-darkBackTextureFile "~~/themes/textures/wood_l.png"
+-lightSquareColor #FF8040
+-darkSquareColor #FF8040
+;
+; detour under-promotion is less convenient when non-pawns promote
+;
+-sweepPromotions false
+;
+; no adjudication
+;
+-trivialDraws false
+-materialDraws false
+;
+; common non-compliant notations
+;
+-colorNickNames "sg"
+;
+; redefine default engine
+;
+-fcp gnushogi
+-scp gnushogi
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-shogi-rc
+-saveSettingsFile ~/.xboard-shogi-rc
+
--- /dev/null
+;
+; settings for oriental Xiangqi theme
+;
+-variant xiangqi
+;
+; pieces: supplied xiangqi svg's
+;
+-pid ~~/themes/xiangqi
+-trueColors true
+;
+; board: supplied board bitmap
+;
+-liteBackTextureFile "~~/themes/textures/xqboard.png"
+-darkBackTextureFile "~~/themes/textures/xqboard.png"
+;
+; suppress square boundaries and highlight with arrow instead
+;
+-overrideLineGap 0
+-highlightMovesWithArrow true
+;
+; define common non-compliant notations
+;
+-pieceNickNames ".N...MB..G..n...mb..g."
+-colorNickNames "r."
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-xiangqi-rc
+-saveSettingsFile ~/.xboard-xiangqi-rc
+
--- /dev/null
+;
+; settings for oriental Xiangqi theme
+;
+-variant xiangqi
+;
+; pieces: supplied xiangqi svg's
+;
+-pid ~~/themes/xiangqi
+-trueColors true
+;
+; board: supplied board bitmap
+;
+-useBoardTexture true
+-liteBackTextureFile "~~/themes/textures/xqboard.png"
+-darkBackTextureFile "~~/themes/textures/xqboard.png"
+;
+; suppress square boundaries and highlight with arrow instead
+;
+-overrideLineGap 0
+-highlightMoveWithArrow true
+;
+; define common non-compliant notations
+;
+-pieceNickNames ".N...MB..G..n...mb..g."
+-colorNickNames "r."
+;
+; set default engines
+;
+-fcp maxqi
+-scp maxqi
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-xiangqi-rc
+-saveSettingsFile ~/.xboard-xiangqi-rc
+
dnl| the standard version of xboard.
dnl| define second argument as VERSION.PATCHLEVEL. e.g. 4.4.0j
-AC_INIT([xboard],[4.7.3],[bug-xboard@gnu.org])
+AC_INIT([xboard],[master-20140119],[bug-xboard@gnu.org])
dnl| need this to be able to compile some files in a subdir (filebrowser)
AM_INIT_AUTOMAKE([subdir-objects])
AH_TEMPLATE([X_WCHAR],[template])
AH_TEMPLATE([ATTENTION],[template])
AH_TEMPLATE([DEFINED_SYS_ERRLIST],[template])
-AH_TEMPLATE([HAVE_LIBXPM],[template])
AH_TEMPLATE([USE_XAW3D],[template])
AH_TEMPLATE([X_LOCALE],[template])
AC_ARG_WITH([gtk],
[AS_HELP_STRING([--with-gtk],[use GTK front-end (experimental)])],
- [with_GTK=yes],
- [with_GTK=no])
+ [with_GTK=$withval],
+ [with_GTK="no"])
AC_ARG_WITH([Xaw3d],
[AS_HELP_STRING([--with-Xaw3d],[use Xaw3d front-end (not fully supported anymore)])],
- [with_Xaw3d=yes],
- [with_Xaw3d=no])
+ [with_Xaw3d="$withval"],
+ [with_Xaw3d="no"])
AC_ARG_WITH([Xaw],
[AS_HELP_STRING([--with-Xaw],[use Xaw front-end (default)])],
- [with_Xaw=yes],
- [with_Xaw=no])
+ [with_Xaw="$withval"],
+ [with_Xaw="yes"])
+
+AC_ARG_WITH([iconsdir],
+ [AS_HELP_STRING([--with-iconsdir=DIR],
+ [path where icons get installed (default: $datadir/icons/hicolor/48x48/apps)])],
+ [ICONSDIR="$withval"],
+ [ICONSDIR='$(datadir)/icons/hicolor/48x48/apps'])
+
+AC_ARG_WITH([svgiconsdir],
+ [AS_HELP_STRING([--with-svgiconsdir=DIR],
+ [path where svg icons get installed (default: $datadir/icons/hicolor/scalable/apps)])],
+ [SVGICONSDIR="$withval"],
+ [SVGICONSDIR='$(datadir)/icons/hicolor/scalable/apps'])
+
+AC_ARG_WITH([desktopdir],
+ [AS_HELP_STRING([--with-desktopdir=DIR],
+ [path where desktop files get installed (default: $datadir/applications)])],
+ [DESKTOPDIR="$withval"],
+ [DESKTOPDIR='$(datadir)/applications'])
+
+AC_ARG_WITH([mimedir],
+ [AS_HELP_STRING([--with-mimedir=DIR],
+ [path where mime files get installed (default: $datadir/mime/packages)])],
+ [MIMEDIR="$withval"],
+ [MIMEDIR='$(datadir)/mime/packages'])
+
+AC_ARG_WITH([gamedatadir],
+ [AS_HELP_STRING([--with-gamedatadir=DIR],
+ [path where game data files get installed (default: $datadir/games/xboard)])],
+ [GAMEDATADIR="$withval"],
+ [GAMEDATADIR='$(datadir)/games/xboard'])
+
+AC_SUBST(ICONSDIR)
+AC_SUBST(SVGICONSDIR)
+AC_SUBST(DESKTOPDIR)
+AC_SUBST(MIMEDIR)
+AC_SUBST(GAMEDATADIR)
dnl | check for libraries
if test x"$with_GTK" = x"yes" ; then
PKG_CHECK_MODULES([GTK], [ gtk+-2.0 >= 2.16.0 gmodule-2.0 ])
FRONTEND_CFLAGS=$GTK_CFLAGS
FRONTEND_LIBS=$GTK_LIBS
+ with_Xaw="no"
fi
if test x"$with_GTK" = x"no" ; then
dnl | make results available in Makefile.am
AM_CONDITIONAL([withGTK], [test x"$with_GTK" = x"yes"])
-AM_CONDITIONAL([withXaw], [test x"$with_Xaw3d" = x"yes"])
-AM_CONDITIONAL([withXaw], [test x"$with_Xaw" = x"yes"])
-
-
-AC_SUBST(FRONTEND_CFLAGS)
-AC_SUBST(FRONTEND_LIBS)
+AM_CONDITIONAL([withXaw], [test x"$with_Xaw3d" = x"yes" || test x"$with_Xaw" = x"yes"])
dnl | end Front-end check
dnl| add some libs for OS X
*-apple-* )
+ AC_MSG_WARN([Apple support is experimental, please report any problems to bug-xboard@gnu.org])
+ AC_PATH_PROG(SW_VERS, sw_vers)
+ if test "x$SW_VERS" != "x"; then
+ AC_MSG_CHECKING(Mac OS X version)
+ MACOSX_VERSION=`$SW_VERS -productVersion`
+ AC_MSG_RESULT([$MACOSX_VERSION])
+ fi
+ case "$MACOSX_VERSION" in
+ 10.0*|10.1|10.1.*|10.2*|10.3*|10.4*|10.5*|10.6*)
+ FRONTEND_LIBS= "$FRONTEND_LIBS -lgtkmacintegration -headerpad_max_install_names mmacosx-version-min=10.6 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
+ ;;
+ *)
+ FRONTEND_LIBS = "$FRONTEND_LIBS -lgtkmacintegration -headerpad_max_install_names"
+ ;;
+ esac
+
;;
esac
-AC_ARG_ENABLE( [xpm],
- [AS_HELP_STRING([--enable-xpm],[libXpm will be used if found (default)])],
- [enable_xpm="$enableval"],
- [enable_xpm="yes"])
-
-if test x"$enable_xpm" != "xno"; then
- save_cflags="$CFLAGS"
- save_cppflags="$CPPFLAGS"
- CFLAGS="$CFLAGS $X_CFLAGS"
- CPPFLAGS="$CPPFLAGS $X_CFLAGS"
- AC_CHECK_HEADERS(X11/xpm.h)
- CFLAGS="$save_cflags"
- CPPFLAGS="$save_cppflags"
- if test "$ac_cv_header_X11_xpm_h" = "yes"; then
- save_ldflags="$LDFLAGS"
- LDFLAGS="$LDFLAGS $X_LIBS"
- AC_CHECK_LIB(Xpm, XpmReadFileToPixmap,
- [X_PRE_LIBS="-lXpm $X_PRE_LIBS"; AC_DEFINE(HAVE_LIBXPM)], [],
- [$X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
- LDFLAGS="$save_ldflags"
- fi
-fi
+AC_SUBST(FRONTEND_CFLAGS)
+AC_SUBST(FRONTEND_LIBS)
AC_SUBST(PRE_XMULIB)
AC_SUBST(POST_XMULIB)
AC_SUBST(CONF_CFLAGS)
AC_SUBST(XDG_ICON_RESOURCE)
fi
+dnl create a string with configure options that can be passed to the
+dnl program, good for bug reports and version printout, see output below
+CONFIGURE_OPTIONS="prefix=$prefix; datarootdir=$datarootdir; \
+datadir=$datadir; gamedatadir=$GAMEDATADIR; desktopdir=$DESKTOPDIR; \
+mimedir=$MIMEDIR; iconsdir=$ICONSDIR; svgiconsdir=$SVGICONSDIR; infodir=$infodir; \
+sysconfigdir=$sysconfigdir; update_mimedb=$enable_mimedb; NLS=$USE_NLS; \
+GKT=$with_GTK; Xaw3d=$with_Xaw3d; Xaw=$with_Xaw; \
+ptys=$enable_ptys; zippy=$enable_zippy; sigint=$enable_sigint"
+
+AC_SUBST(CONFIGURE_OPTIONS)
+
dnl | output Makefile
AC_CONFIG_FILES([Makefile cmail po/Makefile.in])
AC_CONFIG_COMMANDS([test-stamp-h],[test -z "$CONFIG_HEADERS" || date > stamp-h])
echo ""
echo " prefix: $prefix "
echo " datarootdir: $datarootdir "
-echo " datadir: $datadir (icons will go in \$datadir/icons/hicolor/...)"
-echo " (bitmaps will go in \$datadir/games/xboard/...)"
+echo " datadir: $datadir "
+echo " gamedatadir: $GAMEDATADIR "
+echo " desktopdir: $DESKTOPDIR "
+echo " mimedir: $MIMEDIR "
+echo " iconsdir: $ICONSDIR "
+echo " svgiconsdir: $SVGICONSDIR "
echo " infodir: $infodir (info files will go here)"
echo " sysconfdir: $sysconfdir (xboard.conf will go here)"
echo ""
echo " Xaw3d: $with_Xaw3d"
echo " Xaw: $with_Xaw"
echo ""
-echo " xpm: $enable_xpm"
echo " ptys: $enable_ptys"
echo " zippy: $enable_zippy"
echo " sigint: $enable_sigint"
if(x < opts[i].min) x = opts[i].min;
if(opts[i].type == Fractional)
*(float*) opts[i].target = x; // engines never have float options!
- else if(opts[i].value != x) {
- opts[i].value = x;
+ else {
if(currentCps) {
+ if(opts[i].value != x) { // only to engine if changed
snprintf(buf, MSG_SIZ, "option %s=%.0f\n", opts[i].name, x);
SendToProgram(buf, currentCps);
+ }
} else *(int*) opts[i].target = x;
+ opts[i].value = x;
}
break;
case CheckBox:
}
break;
case EndMark:
- if(opts[i].target) // callback for implementing necessary actions on OK (like redraw)
+ if(opts[i].target && selected != -2) // callback for implementing necessary actions on OK (like redraw)
res = ((OKCallback*) opts[i].target)(i);
break;
default:
case SaveButton:
case Label:
case Break:
+ case Skip:
break;
}
if(opts[i].type == EndMark) break;
static void CloneTourney P((void));
static void ReplaceParticipant P((void));
static void UpgradeParticipant P((void));
+static void PseudoOK P((void));
static int
MatchOK (int n)
{
ASSIGN(appData.participants, engineName);
if(!CreateTourney(tfName) || matchMode) return matchMode || !appData.participants[0];
- PopDown(TransientDlg); // early popdown to prevent FreezeUI called through MatchEvent from causing XtGrab warning
+ PopDown(MasterDlg); // early popdown to prevent FreezeUI called through MatchEvent from causing XtGrab warning
MatchEvent(2); // start tourney
return FALSE; // no double PopDown!
}
+static void
+DoTimeControl(int n)
+{
+ TimeControlProc();
+}
+
+static void
+DoCommonEngine(int n)
+{
+ UciMenuProc();
+}
+
+static void
+DoGeneral(int n)
+{
+ OptionsProc();
+}
+
+#define PARTICIPANTS 6 /* This MUST be the number of the Option for &engineName!*/
+
static Option matchOptions[] = {
{ 0, 0, 0, NULL, (void*) &tfName, ".trn", NULL, FileName, N_("Tournament file: ") },
+{ 0, 0, 0, NULL, NULL, "", NULL, Label, N_("For concurrent playing of tourney with multiple XBoards:") },
{ 0, 0, 0, NULL, (void*) &appData.roundSync, "", NULL, CheckBox, N_("Sync after round") },
-{ 0, SAME_ROW|LL, 0, NULL, NULL, "", NULL, Label, N_(" (for concurrent playing of a single") },
{ 0, 0, 0, NULL, (void*) &appData.cycleSync, "", NULL, CheckBox, N_("Sync after cycle") },
-{ 0, SAME_ROW|LL, 0, NULL, NULL, "", NULL, Label, N_(" tourney with multiple XBoards)") },
{ 0, LR, 175, NULL, NULL, "", NULL, Label, N_("Tourney participants:") },
{ 0, SAME_ROW|RR, 175, NULL, NULL, "", NULL, Label, N_("Select Engine:") },
{ 150, T_VSCRL | T_FILL | T_WRAP,
{ 0, -2, 1000000000, NULL, (void*) &appData.loadPositionIndex, "", NULL, Spin, N_("Position Number (-1 or -2 = Auto-Increment):") },
{ 0, 0, 1000000000, NULL, (void*) &appData.rewindIndex, "", NULL, Spin, N_("Rewind Index after this many Games (0 = never):") },
{ 0, 0, 0, NULL, (void*) &appData.defNoBook, "", NULL, CheckBox, N_("Disable own engine books by default") },
+{ 0, 0, 0, NULL, (void*) &DoTimeControl, NULL, NULL, Button, N_("Time Control") },
+{ 0, SAME_ROW, 0, NULL, (void*) &DoCommonEngine, NULL, NULL, Button, N_("Common Engine") },
+{ 0, SAME_ROW, 0, NULL, (void*) &DoGeneral, NULL, NULL, Button, N_("General Options") },
+{ 0, SAME_ROW, 0, NULL, (void*) &PseudoOK, NULL, NULL, Button, N_("Continue Later") },
{ 0, 0, 0, NULL, (void*) &ReplaceParticipant, NULL, NULL, Button, N_("Replace Engine") },
{ 0, SAME_ROW, 0, NULL, (void*) &UpgradeParticipant, NULL, NULL, Button, N_("Upgrade Engine") },
{ 0, SAME_ROW, 0, NULL, (void*) &CloneTourney, NULL, NULL, Button, N_("Clone Tourney") },
static void
ReplaceParticipant ()
{
- GenericReadout(matchOptions, 7);
+ GenericReadout(matchOptions, PARTICIPANTS);
Substitute(strdup(engineName), True);
}
static void
UpgradeParticipant ()
{
- GenericReadout(matchOptions, 7);
+ GenericReadout(matchOptions, PARTICIPANTS);
Substitute(strdup(engineName), False);
}
static void
+PseudoOK ()
+{
+ GenericReadout(matchOptions, -2); // read all, but suppress calling of MatchOK
+ ASSIGN(appData.participants, engineName);
+ PopDown(MasterDlg); // early popdown to prevent FreezeUI called through MatchEvent from causing XtGrab warning
+}
+
+static void
CloneTourney ()
{
FILE *f;
if(sel < 1) buf[0] = NULLCHAR; // back to top level
else if(engineList[sel][0] == '#') safeStrCpy(buf, engineList[sel], MSG_SIZ); // group header, open group
else { // normal line, select engine
- AddLine(&matchOptions[7], engineMnemonic[sel]);
+ AddLine(&matchOptions[PARTICIPANTS], engineMnemonic[sel]);
return;
}
nr = NamesToList(firstChessProgramNames, engineList, engineMnemonic, buf); // replace list by only the group contents
ASSIGN(engineMnemonic[0], buf);
- LoadListBox(&matchOptions[8], _("# no engines are installed"), -1, -1);
- HighlightWithScroll(&matchOptions[8], 0, nr);
+ LoadListBox(&matchOptions[PARTICIPANTS+1], _("# no engines are installed"), -1, -1);
+ HighlightWithScroll(&matchOptions[PARTICIPANTS+1], 0, nr);
}
void
MatchOptionsProc ()
{
+ if(matchOptions[PARTICIPANTS+1].type != ListBox) {
+ DisplayError(_("Internal error: PARTICIPANTS set wrong"), 0);
+ return;
+ }
NamesToList(firstChessProgramNames, engineList, engineMnemonic, "");
matchOptions[9].min = -(appData.pairingEngine[0] != NULLCHAR); // with pairing engine, allow Swiss
ASSIGN(tfName, appData.tourneyFile[0] ? appData.tourneyFile : MakeName(appData.defName));
ASSIGN(engineName, appData.participants);
ASSIGN(engineMnemonic[0], "");
- GenericPopUp(matchOptions, _("Match Options"), TransientDlg, BoardWindow, MODAL, 0);
+ GenericPopUp(matchOptions, _("Tournament Options"), MasterDlg, BoardWindow, MODAL, 0);
}
// ------------------------------------------- General Options --------------------------------------------------
{ 0, 0, 0, NULL, (void*) &appData.autoCallFlag, "", NULL, CheckBox, N_("Auto Flag") },
{ 0, 0, 0, NULL, (void*) &appData.autoFlipView, "", NULL, CheckBox, N_("Auto Flip View") },
{ 0, 0, 0, NULL, (void*) &appData.blindfold, "", NULL, CheckBox, N_("Blindfold") },
+/* TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position */
{ 0, 0, 0, NULL, (void*) &appData.dropMenu, "", NULL, CheckBox, N_("Drop Menu") },
{ 0, 0, 0, NULL, (void*) &appData.variations, "", NULL, CheckBox, N_("Enable Variation Trees") },
+{ 0, 0, 0, NULL, (void*) &appData.headers, "", NULL, CheckBox, N_("Headers in Engine Output Window") },
{ 0, 0, 0, NULL, (void*) &appData.hideThinkingFromHuman, "", NULL, CheckBox, N_("Hide Thinking from Human") },
{ 0, 0, 0, NULL, (void*) &appData.highlightLastMove, "", NULL, CheckBox, N_("Highlight Last Move") },
{ 0, 0, 0, NULL, (void*) &appData.highlightMoveWithArrow, "", NULL, CheckBox, N_("Highlight with Arrow") },
static void Pick P((int n));
static char warning[MSG_SIZ];
+static int ranksTmp, filesTmp, sizeTmp;
static Option variantDescriptors[] = {
-{ VariantNormal, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("normal")},
-{ VariantMakruk, SAME_ROW, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("makruk")},
+{ VariantNormal, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Normal")},
+{ VariantMakruk, SAME_ROW, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Makruk")},
{ VariantFischeRandom, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("FRC")},
-{ VariantShatranj,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("shatranj")},
-{ VariantWildCastle, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("wild castle")},
-{ VariantKnightmate,SAME_ROW,135,NULL,(void*) &Pick, "#FFFFFF", NULL, Button, N_("knightmate")},
-{ VariantNoCastle, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("no castle")},
-{ VariantCylinder,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("cylinder *")},
+{ VariantShatranj,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Shatranj")},
+{ VariantWildCastle, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Wild castle")},
+{ VariantKnightmate,SAME_ROW,135,NULL,(void*) &Pick, "#FFFFFF", NULL, Button, N_("Knightmate")},
+{ VariantNoCastle, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("No castle")},
+{ VariantCylinder,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Cylinder *")},
{ Variant3Check, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("3-checks")},
{ VariantBerolina,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("berolina *")},
{ VariantAtomic, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("atomic")},
{ VariantTwoKings,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("two kings")},
+{ -1, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment
+{ VariantSpartan,SAME_ROW, 135, NULL, (void*) &Pick, "#FF0000", NULL, Button, N_("Spartan")},
{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("Board size ( -1 = default for selected variant):")},
-{ 0, -1, BOARD_RANKS-1, NULL, (void*) &appData.NrRanks, "", NULL, Spin, N_("Number of Board Ranks:") },
-{ 0, -1, BOARD_FILES, NULL, (void*) &appData.NrFiles, "", NULL, Spin, N_("Number of Board Files:") },
-{ 0, -1, BOARD_RANKS-1, NULL, (void*) &appData.holdingsSize, "", NULL, Spin, N_("Holdings Size:") },
+{ 0, -1, BOARD_RANKS-1, NULL, (void*) &ranksTmp, "", NULL, Spin, N_("Number of Board Ranks:") },
+{ 0, -1, BOARD_FILES, NULL, (void*) &filesTmp, "", NULL, Spin, N_("Number of Board Files:") },
+{ 0, -1, BOARD_RANKS-1, NULL, (void*) &sizeTmp, "", NULL, Spin, N_("Holdings Size:") },
{ 0, 0, 275, NULL, NULL, NULL, NULL, Label, warning },
-{ 0, 0, 275, NULL, NULL, NULL, NULL, Label, "Variants marked with * can only be played\nwith legality testing off"},
+{ 0, 0, 275, NULL, NULL, NULL, NULL, Label, N_("Variants marked with * can only be played\nwith legality testing off.")},
{ 0, SAME_ROW, 0, NULL, NULL, NULL, NULL, Break, ""},
-{ VariantFairy, 0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("fairy")},
+{ VariantASEAN, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("ASEAN")},
{ VariantGreat, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Great Shatranj (10x8)")},
{ VariantSChess, 0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Seirawan")},
-{ VariantFalcon, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("falcon (10x8)")},
+{ VariantFalcon, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Falcon (10x8)")},
{ VariantSuper, 0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Superchess")},
{ VariantCapablanca,SAME_ROW,135,NULL,(void*) &Pick, "#BFBFFF", NULL, Button, N_("Capablanca (10x8)")},
-{ VariantCrazyhouse, 0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("crazyhouse")},
+{ VariantCrazyhouse, 0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Crazyhouse")},
{ VariantGothic, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Gothic (10x8)")},
-{ VariantBughouse, 0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("bughouse")},
-{ VariantJanus, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("janus (10x8)")},
-{ VariantSuicide, 0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("suicide")},
+{ VariantBughouse, 0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Bughouse")},
+{ VariantJanus, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Janus (10x8)")},
+{ VariantSuicide, 0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("Suicide")},
{ VariantCapaRandom,SAME_ROW,135,NULL,(void*) &Pick, "#BFBFFF", NULL, Button, N_("CRC (10x8)")},
{ VariantGiveaway, 0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("give-away")},
{ VariantGrand, SAME_ROW, 135, NULL, (void*) &Pick, "#5070FF", NULL, Button, N_("grand (10x10)")},
{ VariantLosers, 0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("losers")},
{ VariantShogi, SAME_ROW, 135, NULL, (void*) &Pick, "#BFFFFF", NULL, Button, N_("shogi (9x9)")},
-{ VariantSpartan, 0, 135, NULL, (void*) &Pick, "#FF0000", NULL, Button, N_("Spartan")},
+{ VariantFairy, 0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("fairy")},
{ VariantXiangqi, SAME_ROW,135, NULL, (void*) &Pick, "#BFFFFF", NULL, Button, N_("xiangqi (9x10)")},
-{ -1, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment
+{ VariantLion, 0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("mighty lion")},
{ VariantCourier, SAME_ROW,135, NULL, (void*) &Pick, "#BFFFBF", NULL, Button, N_("courier (12x8)")},
+{ VariantChuChess, 0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("chu chess (10x10)")},
+{ VariantChu, SAME_ROW, 135, NULL, (void*) &Pick, "#BFFFBF", NULL, Button, N_("chu shogi (12x12)")},
+//{ -1, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment
+// optional buttons for engine-defined variants
+{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
{ 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" }
};
Pick (int n)
{
VariantClass v = variantDescriptors[n].value;
+ if(v == VariantUnknown) safeStrCpy(engineVariant, variantDescriptors[n].name, MSG_SIZ); else *engineVariant = NULLCHAR;
+ GenericReadout(variantDescriptors, -1); // read new ranks and file settings
if(!appData.noChessProgram) {
- char *name = VariantName(v), buf[MSG_SIZ];
- if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {
- /* [HGM] in protocol 2 we check if variant is suported by engine */
- snprintf(buf, MSG_SIZ, _("Variant %s not supported by %s"), name, first.tidy);
- DisplayError(buf, 0);
+ char buf[MSG_SIZ];
+ if (!SupportedVariant(first.variants, v, filesTmp, ranksTmp, sizeTmp, first.protocolVersion, first.tidy)) {
+ DisplayError(variantError, 0);
return; /* ignore OK if first engine does not support it */
} else
- if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {
- snprintf(buf, MSG_SIZ, _("Warning: second engine (%s) does not support this!"), second.tidy);
+ if (second.initDone &&
+ !SupportedVariant(second.variants, v, filesTmp, ranksTmp, sizeTmp, second.protocolVersion, second.tidy)) {
+ snprintf(buf, MSG_SIZ, _("Warning: second engine (%s) does not support this!"), second.tidy);
DisplayError(buf, 0); /* use of second engine is optional; only warn user */
}
}
- GenericReadout(variantDescriptors, -1); // make sure ranks and file settings are read
-
gameInfo.variant = v;
appData.variant = VariantName(v);
shuffleOpenings = FALSE; /* [HGM] shuffle: possible shuffle reset when we switch */
startedFromPositionFile = FALSE; /* [HGM] loadPos: no longer valid in new variant */
+ appData.fischerCastling = FALSE; /* [HGM] fischer: no longer valid in new variant */
+ appData.NrRanks = ranksTmp;
+ appData.NrFiles = filesTmp;
+ appData.holdingsSize = sizeTmp;
appData.pieceToCharTable = NULL;
appData.pieceNickNames = "";
appData.colorNickNames = "";
void
NewVariantProc ()
{
- if(appData.noChessProgram) sprintf(warning, _("Only bughouse is not available in viewer mode")); else
- sprintf(warning, _("All variants not supported by first engine\n(currently %s) are disabled"), first.tidy);
+ static int start;
+ int i, last;
+ char buf[MSG_SIZ];
+ ranksTmp = filesTmp = sizeTmp = -1; // prefer defaults over actual settings
+ if(appData.noChessProgram) sprintf(warning, _("Only bughouse is not available in viewer mode.")); else
+ sprintf(warning, _("All variants not supported by the first engine\n(currently %s) are disabled."), first.tidy);
+ if(!start) while(variantDescriptors[start].type != Skip) start++; // locate first spare
+ last = -1;
+ for(i=0; variantDescriptors[start+i].type != EndMark; i++) { // create buttons for engine-defined variants
+ char *v = EngineDefinedVariant(&first, i);
+ if(v) {
+ last = i;
+ ASSIGN(variantDescriptors[start+i].name, v);
+ variantDescriptors[start+i].type = Button;
+ } else variantDescriptors[start+i].type = Skip;
+ }
+ if(!(last&1)) { // odd number, add filler
+ ASSIGN(variantDescriptors[start+last+1].name, " ");
+ variantDescriptors[start+last+1].type = Button;
+ variantDescriptors[start+last+1].value = Skip;
+ }
+ safeStrCpy(buf, engineVariant, MSG_SIZ); *engineVariant = NULLCHAR; // yeghh...
GenericPopUp(variantDescriptors, _("New Variant"), TransientDlg, BoardWindow, MODAL, 0);
+ safeStrCpy(engineVariant, buf, MSG_SIZ); // must temporarily clear to avoid enabling all variant buttons
}
//------------------------------------------- Common Engine Options -------------------------------------
{ 0, 0, 0, NULL, (void*) &appData.seekGraph, "", NULL, CheckBox, N_("Seek Graph") },
{ 0, 0, 0, NULL, (void*) &appData.autoRefresh, "", NULL, CheckBox, N_("Auto-Refresh Seek Graph") },
{ 0, 0, 0, NULL, (void*) &appData.autoBox, "", NULL, CheckBox, N_("Auto-InputBox PopUp") },
+{ 0, 0, 0, NULL, (void*) &appData.quitNext, "", NULL, CheckBox, N_("Quit after game") },
{ 0, 0, 0, NULL, (void*) &appData.premove, "", NULL, CheckBox, N_("Premove") },
{ 0, 0, 0, NULL, (void*) &appData.premoveWhite, "", NULL, CheckBox, N_("Premove for White") },
{ 0, 0, 0, NULL, (void*) &appData.premoveWhiteText, "", NULL, TextBox, N_("First White Move:") },
{ 0, 0, 0, NULL, (void*) &appData.colorChallenge, "", NULL, TextBox, N_("Challenge Text Colors:") },
{ 0, 0, 0, NULL, (void*) &appData.colorRequest, "", NULL, TextBox, N_("Request Text Colors:") },
{ 0, 0, 0, NULL, (void*) &appData.colorSeek, "", NULL, TextBox, N_("Seek Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorNormal, "", NULL, TextBox, N_("Other Text Colors:") },
{ 0, 0, 0, NULL, (void*) &IcsOptionsOK, "", NULL, EndMark , "" }
};
static char *modeNames[] = { N_("Exact position match"), N_("Shown position is subset"), N_("Same material with exactly same Pawn chain"),
N_("Same material"), N_("Material range (top board half optional)"), N_("Material difference (optional stuff balanced)"), NULL };
static char *modeValues[] = { "1", "2", "3", "4", "5", "6" };
-static char *searchMode;
+static char *searchMode, *countRange;
static int
LoadOptionsOK ()
{
+ appData.minPieces = appData.maxPieces = 0;
+ sscanf(countRange, "%d-%d", &appData.minPieces, &appData.maxPieces);
+ if(appData.maxPieces < appData.minPieces) appData.maxPieces = appData.minPieces;
appData.searchMode = atoi(searchMode);
return 1;
}
{ 0, 0,5000, NULL, (void*) &appData.eloThreshold2, "", NULL, Spin, N_("Elo of weakest player at least:") },
{ 0, 0,5000, NULL, (void*) &appData.dateThreshold, "", NULL, Spin, N_("No games before year:") },
{ 0, 1,50, NULL, (void*) &appData.stretch, "", NULL, Spin, N_("Minimum nr consecutive positions:") },
+{ 0, 0,197, NULL, (void*) &countRange, "", NULL, TextBox, "Final nr of pieces" },
{ 0, 0,205, NULL, (void*) &searchMode, (char*) modeValues, modeNames, ComboBox, N_("Search mode:") },
{ 0, 0, 0, NULL, (void*) &appData.ignoreColors, "", NULL, CheckBox, N_("Also match reversed colors") },
{ 0, 0, 0, NULL, (void*) &appData.findMirror, "", NULL, CheckBox, N_("Also match left-right flipped position") },
void
LoadOptionsPopUp (DialogClass parent)
{
+ ASSIGN(countRange, "");
ASSIGN(searchMode, modeValues[appData.searchMode-1]);
GenericPopUp(loadOptions, _("Load Game Options"), TransientDlg, parent, MODAL, 0);
}
N_("Penalty"),
N_("Phone"),
N_("Pop"),
+ N_("Roar"),
N_("Slap"),
N_("Wood Thunk"),
NULL,
"penalty.wav",
"phone.wav",
"pop2.wav",
+ "roar.wav",
"slap.wav",
"woodthunk.wav",
NULL,
{ 0, 0, 0, NULL, (void*) &appData.soundTell, (char*) soundFiles, soundNames, ComboBox, N_("Tell:") },
{ 0, 0, 0, NULL, (void*) &appData.soundKibitz, (char*) soundFiles, soundNames, ComboBox, N_("Kibitz:") },
{ 0, 0, 0, NULL, (void*) &appData.soundRequest, (char*) soundFiles, soundNames, ComboBox, N_("Request:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundRoar, (char*) soundFiles, soundNames, ComboBox, N_("Lion roar:") },
{ 0, 0, 0, NULL, (void*) &appData.soundSeek, (char*) soundFiles, soundNames, ComboBox, N_("Seek:") },
{ 0, SAME_ROW, 0, NULL, NULL, "", NULL, EndMark , "" }
};
static void DefColor P((int n));
static void AdjustColor P((int i));
+static void ThemeSel P((int n, int sel));
+static int BoardOptionsOK P((int n));
static char oldPieceDir[MSG_SIZ];
+extern char *engineLine, *nickName; // defined later on
-static int
-BoardOptionsOK (int n)
-{
- if(appData.overrideLineGap >= 0) lineGap = appData.overrideLineGap; else lineGap = defaultLineGap;
- InitDrawingParams(strcmp(oldPieceDir, appData.pieceDirectory));
- InitDrawingSizes(-1, 0);
- DrawPosition(True, NULL);
- return 1;
-}
+#define THEMELIST 1
static Option boardOptions[] = {
+{ 0,LR|T2T, 0, NULL, NULL, NULL, NULL, Label, N_("Selectable themes:") },
+{ 300,LR|TB,200, NULL, (void*) engineMnemonic, (char*) &ThemeSel, NULL, ListBox, "" },
+{ 0,LR|T2T, 0, NULL, NULL, NULL, NULL, Label, N_("New name for current theme:") },
+{ 0, 0, 0, NULL, (void*) &nickName, ".png", NULL, TextBox, "" },
+{ 0,SAME_ROW, 0, NULL, NULL, NULL, NULL, Break, NULL },
{ 0, 0, 70, NULL, (void*) &appData.whitePieceColor, "", NULL, TextBox, N_("White Piece Color:") },
{ 1000, SAME_ROW, 0, NULL, (void*) &DefColor, NULL, (char**) "#FFFFCC", Button, " " },
/* TRANSLATORS: R = single letter for the color red */
{ 0, 0, 0, NULL, (void*) &appData.upsideDown, "", NULL, CheckBox, N_("Flip Pieces Shogi Style (Colored buttons restore default)") },
//{ 0, 0, 0, NULL, (void*) &appData.allWhite, "", NULL, CheckBox, N_("Use Outline Pieces for Black") },
{ 0, 0, 0, NULL, (void*) &appData.monoMode, "", NULL, CheckBox, N_("Mono Mode") },
-{ 0,-1, 5, NULL, (void*) &appData.overrideLineGap, "", NULL, Spin, N_("Line Gap ( -1 = default for board size):") },
+{ 0, 0, 200, NULL, (void*) &appData.logoSize, "", NULL, Spin, N_("Logo Size (0=off, requires restart):") },
+{ 0,-1, 5, NULL, (void*) &appData.overrideLineGap, "", NULL, Spin, N_("Line Gap (-1 = default for board size):") },
{ 0, 0, 0, NULL, (void*) &appData.useBitmaps, "", NULL, CheckBox, N_("Use Board Textures") },
{ 0, 0, 0, NULL, (void*) &appData.liteBackTextureFile, ".png", NULL, FileName, N_("Light-Squares Texture File:") },
{ 0, 0, 0, NULL, (void*) &appData.darkBackTextureFile, ".png", NULL, FileName, N_("Dark-Squares Texture File:") },
{ 0, 0, 0, NULL, (void*) &BoardOptionsOK, "", NULL, EndMark , "" }
};
+static int
+BoardOptionsOK (int n)
+{
+ if(n && (n = SelectedListBoxItem(&boardOptions[THEMELIST])) > 0 && *engineList[n] != '#') { // called by pressing OK, and theme selected
+ ASSIGN(engineLine, engineList[n]);
+ }
+ LoadTheme();
+ return 1;
+}
+
static void
SetColorText (int n, char *buf)
{
}
void
+ThemeSel (int n, int sel)
+{
+ int nr;
+ char buf[MSG_SIZ];
+ if(sel < 1) buf[0] = NULLCHAR; // back to top level
+ else if(engineList[sel][0] == '#') safeStrCpy(buf, engineList[sel], MSG_SIZ); // group header, open group
+ else { // normal line, select engine
+ ASSIGN(engineLine, engineList[sel]);
+ LoadTheme();
+ PopDown(TransientDlg);
+ return;
+ }
+ nr = NamesToList(appData.themeNames, engineList, engineMnemonic, buf); // replace list by only the group contents
+ ASSIGN(engineMnemonic[0], buf);
+ LoadListBox(&boardOptions[THEMELIST], _("# no themes are defined"), -1, -1);
+ HighlightWithScroll(&boardOptions[THEMELIST], 0, nr);
+}
+
+void
BoardOptionsProc ()
{
strncpy(oldPieceDir, appData.pieceDirectory, MSG_SIZ-1); // to see if it changed
+ ASSIGN(engineLine, "");
+ ASSIGN(nickName, "");
+ ASSIGN(engineMnemonic[0], "");
+ NamesToList(appData.themeNames, engineList, engineMnemonic, "");
GenericPopUp(boardOptions, _("Board Options"), TransientDlg, BoardWindow, MODAL, 0);
}
Option textOptions[100];
static void PutText P((char *text, int pos));
+static void NewChat P((char *name));
+static char clickedWord[MSG_SIZ], click;
void
SendString (char *p)
{
- char buf[MSG_SIZ], *q;
+ char buf[MSG_SIZ], buf2[MSG_SIZ], *q;
+ if(q = strstr(p, "$name")) { // in Xaw this is already intercepted
+ if(!shellUp[TextMenuDlg] || !clickedWord[0]) return;
+ strncpy(buf2, p, MSG_SIZ);
+ snprintf(buf2 + (q-p), MSG_SIZ -(q-p), "%s%s", clickedWord, q+5);
+ p = buf2;
+ }
+ if(!strcmp(p, "$copy")) { // special case for copy selection
+ CopySomething(clickedWord);
+ } else
+ if(!strcmp(p, "$chat")) { // special case for opening chat
+ NewChat(clickedWord);
+ } else
if(q = strstr(p, "$input")) {
if(!shellUp[TextMenuDlg]) return;
strncpy(buf, p, MSG_SIZ);
strncpy(buf + (q-p), q+6, MSG_SIZ-(q-p));
PutText(buf, q-p);
- return;
+ } else {
+ snprintf(buf, MSG_SIZ, "%s\n", p);
+ SendToICS(buf);
+ }
+ if(click) { // popped up by memo click
+ click = clickedWord[0] = 0;
+ PopDown(TextMenuDlg);
}
- snprintf(buf, MSG_SIZ, "%s\n", p);
- SendToICS(buf);
}
void
-IcsTextProc ()
+IcsTextPopUp ()
{
int i=0, j;
char *p, *q, *r;
GenericPopUp(textOptions, _("ICS text menu"), TextMenuDlg, BoardWindow, NONMODAL, appData.topLevel);
}
+void
+IcsTextProc ()
+{
+ if(shellUp[TextMenuDlg]) PopDown(TextMenuDlg);
+ else IcsTextPopUp();
+}
+
//---------------------------------------------------- Edit Comment -----------------------------------
static char *commentText;
}
Option commentOptions[] = {
-{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 250, NULL, (void*) &commentText, "", (char **) &CommentClick, TextBox, "" },
+{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 250, NULL, (void*) &commentText, (char*) &appData.commentFont, (char **) &CommentClick, TextBox, "" },
{ 0, 0, 50, NULL, (void*) &ClearComment, NULL, NULL, Button, N_("clear") },
{ 0, SAME_ROW, 100, NULL, (void*) &SaveChanges, NULL, NULL, Button, N_("save changes") },
{ 0, SAME_ROW, 0, NULL, (void*) &NewComCallback, "", NULL, EndMark , "" }
//------------------------------------------------------ Edit Tags ----------------------------------
static void changeTags P((int n));
-static char *tagsText;
+static char *tagsText, **resPtr;
+
+static int TagsClick P((Option *opt, int n, int x, int y, char *val, int index));
static int
NewTagsCallback (int n)
{
+ if(bookUp) SaveToBook(tagsText), DisplayBook(currentMove); else
+ if(resPtr) { ASSIGN(*resPtr, tagsText); } else
ReplaceTags(tagsText, &gameInfo);
return 1;
}
+static void
+NewMove ()
+{
+ addToBookFlag = !addToBookFlag;
+}
+
static Option tagsOptions[] = {
{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, NULL },
-{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 200, NULL, (void*) &tagsText, "", NULL, TextBox, "" },
-{ 0, 0, 100, NULL, (void*) &changeTags, NULL, NULL, Button, N_("save changes") },
+{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 200, NULL, (void*) &tagsText, (char*) &appData.tagsFont, (char **) &TagsClick, TextBox, "" },
+{ 0, 0, 100, NULL, (void*) &NewMove, NULL, NULL, Button, N_("add next move") },
+{ 0,SAME_ROW,100,NULL, (void*) &changeTags, NULL, NULL, Button, N_("save changes") },
{ 0,SAME_ROW, 0, NULL, (void*) &NewTagsCallback, "", NULL, EndMark , "" }
};
+static int TagsClick (Option *opt, int n, int x, int y, char *val, int index)
+{
+ if(!bookUp || n != 3) return FALSE; // only button-3 press in Edit Book is of interest
+ PlayBookMove(val, index);
+ return TRUE;
+}
+
static void
changeTags (int n)
{
GenericReadout(tagsOptions, 1);
- if(bookUp) SaveToBook(tagsText); else
+ if(bookUp) SaveToBook(tagsText), DisplayBook(currentMove); else
+ if(resPtr) { ASSIGN(*resPtr, tagsText); } else
ReplaceTags(tagsText, &gameInfo);
}
{
char *title = bookUp ? _("Edit book") : _("Tags");
+ tagsOptions[2].type = bookUp ? Button : Skip;
+ tagsOptions[3].min = bookUp ? SAME_ROW : 0;
if(DialogExists(TagsDlg)) { // if already exists, alter title and content
SetWidgetText(&tagsOptions[1], text, TagsDlg);
SetDialogTitle(TagsDlg, title);
void
EditTagsPopUp (char *tags, char **dest)
{ // wrapper to preserve old name used in back-end
+ resPtr = dest;
NewTagsPopup(tags, NULL);
}
if (bookUp || !PopDown(TagsDlg)) EditTagsEvent();
}
+void
+AddBookMove (char *text)
+{
+ AppendText(&tagsOptions[1], text);
+}
+
//---------------------------------------------- ICS Input Box ----------------------------------
char *icsText;
}
// end of borrowed code
+#define INPUT 0
+
Option boxOptions[] = {
{ 30, T_TOP, 400, NULL, (void*) &icsText, "", NULL, TextBox, "" },
{ 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" }
{
char *val;
- GetWidgetText(&boxOptions[0], &val);
+ GetWidgetText(&boxOptions[INPUT], &val);
SaveInHistory(val);
SendMultiLineToICS(val);
- SetWidgetText(&boxOptions[0], "", InputBoxDlg);
+ SetWidgetText(&boxOptions[INPUT], "", InputBoxDlg);
}
void
ICSInputSendText();
return;
case 1:
- GetWidgetText(&boxOptions[0], &val);
+ GetWidgetText(&boxOptions[INPUT], &val);
val = PrevInHistory(val);
break;
case -1:
val = NextInHistory();
}
- SetWidgetText(&boxOptions[0], val = val ? val : "", InputBoxDlg);
- SetInsertPos(&boxOptions[0], strlen(val));
-}
-
-static void
-PutText (char *text, int pos)
-{
- char buf[MSG_SIZ], *p;
-
- if(strstr(text, "$add ") == text) {
- GetWidgetText(&boxOptions[0], &p);
- snprintf(buf, MSG_SIZ, "%s%s", p, text+5); text = buf;
- pos += strlen(p) - 5;
- }
- SetWidgetText(&boxOptions[0], text, TextMenuDlg);
- SetInsertPos(&boxOptions[0], pos);
- HardSetFocus(&boxOptions[0]);
+ SetWidgetText(&boxOptions[INPUT], val = val ? val : "", InputBoxDlg);
+ SetInsertPos(&boxOptions[INPUT], strlen(val));
}
void
{
MarkMenu("View.ICSInputBox", InputBoxDlg);
if(GenericPopUp(boxOptions, _("ICS input box"), InputBoxDlg, BoardWindow, NONMODAL, 0))
- AddHandler(&boxOptions[0], InputBoxDlg, 3);
- CursorAtEnd(&boxOptions[0]);
+ AddHandler(&boxOptions[INPUT], InputBoxDlg, 3);
+ CursorAtEnd(&boxOptions[INPUT]);
}
void
void
BoxAutoPopUp (char *buf)
-{
+{ // only used in Xaw. GTK calls ConsoleAutoPopUp in stead (when we type to board)
if(!appData.autoBox) return;
if(appData.icsActive) { // text typed to board in ICS mode: divert to ICS input box
if(DialogExists(InputBoxDlg)) { // box already exists: append to current contents
char *p, newText[MSG_SIZ];
- GetWidgetText(&boxOptions[0], &p);
+ GetWidgetText(&boxOptions[INPUT], &p);
snprintf(newText, MSG_SIZ, "%s%c", p, *buf);
- SetWidgetText(&boxOptions[0], newText, InputBoxDlg);
- if(shellUp[InputBoxDlg]) HardSetFocus (&boxOptions[0]); //why???
+ SetWidgetText(&boxOptions[INPUT], newText, InputBoxDlg);
+ if(shellUp[InputBoxDlg]) HardSetFocus (&boxOptions[INPUT], InputBoxDlg); //why???
} else icsText = buf; // box did not exist: make sure it pops up with char in it
ICSInputBoxPopUp();
} else PopUpMoveDialog(*buf);
static Option shuffleOptions[] = {
{ 0, 0, 0, NULL, (void*) &shuffleOpenings, NULL, NULL, CheckBox, N_("shuffle") },
+ { 0, 0, 0, NULL, (void*) &appData.fischerCastling, NULL, NULL, CheckBox, N_("Fischer castling") },
{ 0,-1,2000000000, NULL, (void*) &appData.defaultFrcPosition, "", NULL, Spin, N_("Start-position number:") },
{ 0, 0, 0, NULL, (void*) &SetRandom, NULL, NULL, Button, N_("randomize") },
{ 0, SAME_ROW, 0, NULL, (void*) &SetRandom, NULL, NULL, Button, N_("pick fixed") },
ClearHighlights();
return;
}
+ if(promoChar == '=' && !IS_SHOGI(gameInfo.variant)) promoChar = NULLCHAR;
UserMoveEvent(fromX, fromY, toX, toY, promoChar);
if (!appData.highlightLastMove || gotPremove) ClearHighlights();
}
void
-PromotionPopUp ()
+PromotionPopUp (char choice)
{ // choice depends on variant: prepare dialog acordingly
count = 8;
- SetPromo(_("Cancel"), --count, 0); // Beware: GenericPopUp cannot handle user buttons named "cancel" (lowe case)!
- if(gameInfo.variant != VariantShogi) {
+ SetPromo(_("Cancel"), --count, -1); // Beware: GenericPopUp cannot handle user buttons named "cancel" (lowe case)!
+ if(choice != '+') {
if (!appData.testLegality || gameInfo.variant == VariantSuicide ||
gameInfo.variant == VariantSpartan && !WhiteOnMove(currentMove) ||
gameInfo.variant == VariantGiveaway) {
SetPromo(_("Chancellor"), --count, 'c');
}
SetPromo(_("Queen"), --count, 'q');
+ if(gameInfo.variant == VariantChuChess)
+ SetPromo(_("Lion"), --count, 'l');
}
} else // [HGM] shogi
{
//---------------------------- Chat Windows ----------------------------------------------
-static char *line, *memo, *partner, *texts[MAX_CHAT], dirty[MAX_CHAT];
+static char *line, *memo, *chatMemo, *partner, *texts[MAX_CHAT], dirty[MAX_CHAT], *inputs[MAX_CHAT], *icsLine, *tmpLine;
static int activePartner;
+int hidden = 1;
void ChatSwitch P((int n));
int ChatOK P((int n));
+#define CHAT_ICS 6
+#define CHAT_PARTNER 8
+#define CHAT_OUT 11
+#define CHAT_PANE 12
+#define CHAT_IN 13
+
+void PaneSwitch P((void));
+void ClearChat P((void));
+
+WindowPlacement wpTextMenu;
+
+int
+ContextMenu (Option *opt, int button, int x, int y, char *text, int index)
+{ // callback for ICS-output clicks; handles button 3, passes on other events
+ int h;
+ if(button == -3) return TRUE; // supress default GTK context menu on up-click
+ if(button != 3) return FALSE;
+ if(index == -1) { // pre-existing selection in memo
+ strncpy(clickedWord, text, MSG_SIZ);
+ } else { // figure out what word was clicked
+ char *start, *end;
+ start = end = text + index;
+ while(isalnum(*end)) end++;
+ while(start > text && isalnum(start[-1])) start--;
+ clickedWord[0] = NULLCHAR;
+ if(end-start >= 80) end = start + 80; // intended for small words and numbers
+ strncpy(clickedWord, start, end-start); clickedWord[end-start] = NULLCHAR;
+ }
+ click = !shellUp[TextMenuDlg]; // request auto-popdown of textmenu when we popped it up
+ h = wpTextMenu.height; // remembered height of text menu
+ if(h <= 0) h = 65; // when not available, position w.r.t. top
+ GetPlacement(ChatDlg, &wpTextMenu);
+ if(opt->target == (void*) &chatMemo) wpTextMenu.y += (wpTextMenu.height - 30)/2; // click in chat
+ wpTextMenu.x += x - 50; wpTextMenu.y += y - h + 50; // request positioning
+ if(wpTextMenu.x < 0) wpTextMenu.x = 0;
+ if(wpTextMenu.y < 0) wpTextMenu.y = 0;
+ wpTextMenu.width = wpTextMenu.height = -1;
+ IcsTextPopUp();
+ return TRUE;
+}
+
Option chatOptions[] = {
+{ 0, 0, 0, NULL, NULL, "", NULL, Label , N_("Chats:") },
+{ 1, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, N_("New Chat") },
+{ 2, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, N_("New Chat") },
+{ 3, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, N_("New Chat") },
+{ 4, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, N_("New Chat") },
+{ 5, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, N_("New Chat") },
+{ 250, T_VSCRL | T_FILL | T_WRAP | T_TOP, 510, NULL, (void*) &memo, NULL, (void*) &ContextMenu, TextBox, "" },
+{ 0, 0, 0, NULL, NULL, "", NULL, Break , "" },
{ 0, T_TOP, 100, NULL, (void*) &partner, NULL, NULL, TextBox, N_("Chat partner:") },
-{ 1, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, "" },
-{ 2, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, "" },
-{ 3, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, "" },
-{ 4, SAME_ROW|TT, 75, NULL, (void*) &ChatSwitch, NULL, NULL, Button, "" },
-{ 100, T_VSCRL | T_FILL | T_WRAP | T_TOP, 510, NULL, (void*) &memo, NULL, NULL, TextBox, "" },
+{ 0, SAME_ROW, 0, NULL, (void*) &ClearChat, NULL, NULL, Button, N_("End Chat") },
+{ 0, SAME_ROW, 0, NULL, (void*) &PaneSwitch, NULL, NULL, Button, N_("Hide") },
+{ 250, T_VSCRL | T_FILL | T_WRAP | T_TOP, 510, NULL, (void*) &chatMemo, NULL, (void*) &ContextMenu, TextBox, "" },
+{ 0, 0, 0, NULL, NULL, "", NULL, Break , "" },
{ 0, 0, 510, NULL, (void*) &line, NULL, NULL, TextBox, "" },
{ 0, NO_OK|SAME_ROW, 0, NULL, (void*) &ChatOK, NULL, NULL, EndMark , "" }
};
+static void
+PutText (char *text, int pos)
+{
+ char buf[MSG_SIZ], *p;
+ DialogClass dlg = ChatDlg;
+ Option *opt = &chatOptions[CHAT_IN];
+
+ if(strstr(text, "$add ") == text) {
+ GetWidgetText(&boxOptions[INPUT], &p);
+ snprintf(buf, MSG_SIZ, "%s%s", p, text+5); text = buf;
+ pos += strlen(p) - 5;
+ }
+ if(shellUp[InputBoxDlg]) opt = &boxOptions[INPUT], dlg = InputBoxDlg; // for the benefit of Xaw give priority to ICS Input Box
+ SetWidgetText(opt, text, dlg);
+ SetInsertPos(opt, pos);
+ HardSetFocus(opt, dlg);
+ CursorAtEnd(opt);
+}
+
+int
+IcsHist (int n, Option *opt, DialogClass dlg)
+{ // [HGM] input: let up-arrow recall previous line from history
+ char *val = NULL; // to suppress spurious warning
+ int chat, start;
+
+ if(opt != &chatOptions[CHAT_IN] && !(opt == &chatOptions[CHAT_PARTNER] && n == 33)) return 0;
+ switch(n) {
+ case 33: // <Esc>
+ if(hidden) BoardToTop();
+ else PaneSwitch();
+ break;
+ case 15:
+ NewChat(lastTalker);
+ break;
+ case 14:
+ for(chat=0; chat < MAX_CHAT; chat++) if(!chatPartner[chat][0]) break;
+ if(chat < MAX_CHAT) ChatSwitch(chat + 1);
+ break;
+ case 10: // <Tab>
+ chat = start = (activePartner - hidden + MAX_CHAT) % MAX_CHAT;
+ while(!dirty[chat = (chat + 1)%MAX_CHAT]) if(chat == start) break;
+ if(!dirty[chat])
+ while(!chatPartner[chat = (chat + 1)%MAX_CHAT][0]) if(chat == start) break;
+ if(chat == start && hidden) chat = 0; // if all unused, start left
+ ChatSwitch(chat + 1);
+ break;
+ case 1:
+ GetWidgetText(opt, &val);
+ val = PrevInHistory(val);
+ break;
+ case -1:
+ val = NextInHistory();
+ }
+ SetWidgetText(opt, val = val ? val : "", dlg);
+ SetInsertPos(opt, strlen(val));
+ return 1;
+}
+
void
OutputChatMessage (int partner, char *mess)
{
texts[partner] = (char*) malloc(len);
snprintf(texts[partner], len, "%s%s", p ? p : "", mess);
FREE(p);
- if(partner == activePartner) {
- AppendText(&chatOptions[5], mess);
- SetInsertPos(&chatOptions[5], len-2);
+ if(partner == activePartner && !hidden) {
+ AppendText(&chatOptions[CHAT_OUT], mess);
+ SetInsertPos(&chatOptions[CHAT_OUT], len-2);
} else {
- SetColor("#FFC000", &chatOptions[partner + (partner < activePartner)]);
+ SetColor("#FFC000", &chatOptions[partner + 1]);
dirty[partner] = 1;
}
}
{ // can only be called through <Enter> in chat-partner text-edit, as there is no OK button
char buf[MSG_SIZ];
- if(!partner || strcmp(partner, chatPartner[activePartner])) {
+ if(!hidden && (!partner || strcmp(partner, chatPartner[activePartner]))) {
safeStrCpy(chatPartner[activePartner], partner, MSG_SIZ);
- SetWidgetText(&chatOptions[5], "", -1); // clear text if we alter partner
- SetWidgetText(&chatOptions[6], "", ChatDlg); // clear text if we alter partner
- HardSetFocus(&chatOptions[6]);
+ SetWidgetText(&chatOptions[CHAT_OUT], "", -1); // clear text if we alter partner
+ SetWidgetText(&chatOptions[CHAT_IN], "", ChatDlg); // clear text if we alter partner
+ SetWidgetLabel(&chatOptions[activePartner+1], chatPartner[activePartner][0] ? chatPartner[activePartner] : _("New Chat"));
+ HardSetFocus(&chatOptions[CHAT_IN], 0);
}
- if(line[0]) { // something was typed
- SetWidgetText(&chatOptions[6], "", ChatDlg);
+ if(line[0] || hidden) { // something was typed (for ICS commands we also allow empty line!)
+ SetWidgetText(&chatOptions[CHAT_IN], "", ChatDlg);
// from here on it could be back-end
if(line[strlen(line)-1] == '\n') line[strlen(line)-1] = NULLCHAR;
SaveInHistory(line);
+ if(hidden || !*chatPartner[activePartner]) snprintf(buf, MSG_SIZ, "%s\n", line); else // command for ICS
if(!strcmp("whispers", chatPartner[activePartner]))
snprintf(buf, MSG_SIZ, "whisper %s\n", line); // WHISPER box uses "whisper" to send
else if(!strcmp("shouts", chatPartner[activePartner]))
}
void
+DelayedSetText ()
+{
+ SetWidgetText(&chatOptions[CHAT_IN], tmpLine, -1); // leave focus on chat-partner field!
+ SetInsertPos(&chatOptions[CHAT_IN], strlen(tmpLine));
+}
+
+void
+DelayedScroll ()
+{ // If we do this immediately it does it before shrinking the memo, so the lower half remains hidden (Ughh!)
+ SetInsertPos(&chatOptions[CHAT_ICS], 999999);
+ SetWidgetText(&chatOptions[CHAT_IN], tmpLine, ChatDlg);
+ SetInsertPos(&chatOptions[CHAT_IN], strlen(tmpLine));
+}
+
+void
ChatSwitch (int n)
{
int i, j;
- if(n <= activePartner) n--;
- activePartner = n;
+ char *v;
+ if(chatOptions[CHAT_ICS].type == Skip) hidden = 0; // In Xaw there is no ICS pane we can hide behind
+ Show(&chatOptions[CHAT_PANE], 0); // show
+ if(hidden) ScheduleDelayedEvent(DelayedScroll, 50); // Awful!
+ else ScheduleDelayedEvent(DelayedSetText, 50);
+ GetWidgetText(&chatOptions[CHAT_IN], &v);
+ if(hidden) { ASSIGN(icsLine, v); } else { ASSIGN(inputs[activePartner], v); }
+ hidden = 0;
+ activePartner = --n;
if(!texts[n]) texts[n] = strdup("");
dirty[n] = 0;
- SetWidgetText(&chatOptions[5], texts[n], ChatDlg);
- SetInsertPos(&chatOptions[5], strlen(texts[n]));
- SetWidgetText(&chatOptions[0], chatPartner[n], ChatDlg);
+ SetWidgetText(&chatOptions[CHAT_OUT], texts[n], ChatDlg);
+ SetInsertPos(&chatOptions[CHAT_OUT], strlen(texts[n]));
+ SetWidgetText(&chatOptions[CHAT_PARTNER], chatPartner[n], ChatDlg);
for(i=j=0; i<MAX_CHAT; i++) {
- if(i == activePartner) continue;
- SetWidgetLabel(&chatOptions[++j], chatPartner[i]);
+ SetWidgetLabel(&chatOptions[++j], *chatPartner[i] ? chatPartner[i] : _("New Chat"));
SetColor(dirty[i] ? "#FFC000" : "#FFFFFF", &chatOptions[j]);
}
- SetWidgetText(&chatOptions[6], "", ChatDlg);
- HardSetFocus(&chatOptions[6]);
+ if(!inputs[n]) { ASSIGN(inputs[n], ""); }
+// SetWidgetText(&chatOptions[CHAT_IN], inputs[n], ChatDlg); // does not work (in this widget only)
+// SetInsertPos(&chatOptions[CHAT_IN], strlen(inputs[n]));
+ tmpLine = inputs[n]; // for the delayed event
+ HardSetFocus(&chatOptions[strcmp(chatPartner[n], "") ? CHAT_IN : CHAT_PARTNER], 0);
}
void
-ChatProc ()
+PaneSwitch ()
+{
+ char *v;
+ Show(&chatOptions[CHAT_PANE], hidden = 1); // hide
+ GetWidgetText(&chatOptions[CHAT_IN], &v);
+ ASSIGN(inputs[activePartner], v);
+ if(!icsLine) { ASSIGN(icsLine, ""); }
+ tmpLine = icsLine; ScheduleDelayedEvent(DelayedSetText, 50);
+// SetWidgetText(&chatOptions[CHAT_IN], icsLine, ChatDlg); // does not work (in this widget only)
+// SetInsertPos(&chatOptions[CHAT_IN], strlen(icsLine));
+}
+
+void
+ClearChat ()
+{ // clear the chat to make it free for other use
+ chatPartner[activePartner][0] = NULLCHAR;
+ ASSIGN(texts[activePartner], "");
+ ASSIGN(inputs[activePartner], "");
+ SetWidgetText(&chatOptions[CHAT_PARTNER], "", ChatDlg);
+ SetWidgetText(&chatOptions[CHAT_OUT], "", ChatDlg);
+ SetWidgetText(&chatOptions[CHAT_IN], "", ChatDlg);
+ SetWidgetLabel(&chatOptions[activePartner+1], _("New Chat"));
+ HardSetFocus(&chatOptions[CHAT_PARTNER], 0);
+}
+
+static void
+NewChat (char *name)
+{ // open a chat on program request. If no empty one available, use last
+ int i;
+ for(i=0; i<MAX_CHAT-1; i++) if(!chatPartner[i][0]) break;
+ safeStrCpy(chatPartner[i], name, MSG_SIZ);
+ ChatSwitch(i+1);
+}
+
+void
+ConsoleWrite(char *message, int count)
+{
+ if(shellUp[ChatDlg] && chatOptions[CHAT_ICS].type != Skip) { // in Xaw this is a no-op
+ AppendColorized(&chatOptions[CHAT_ICS], message, count);
+ SetInsertPos(&chatOptions[CHAT_ICS], 999999);
+ }
+}
+
+void
+ChatPopUp ()
{
- if(GenericPopUp(chatOptions, _("Chat box"), ChatDlg, BoardWindow, NONMODAL, appData.topLevel))
- AddHandler(&chatOptions[0], ChatDlg, 2), AddHandler(&chatOptions[6], ChatDlg, 2); // treats return as OK
+ if(GenericPopUp(chatOptions, _("ICS Interaction"), ChatDlg, BoardWindow, NONMODAL, appData.topLevel))
+ AddHandler(&chatOptions[CHAT_PARTNER], ChatDlg, 2), AddHandler(&chatOptions[CHAT_IN], ChatDlg, 2); // treats return as OK
+ Show(&chatOptions[CHAT_PANE], hidden = 1); // hide
+// HardSetFocus(&chatOptions[CHAT_IN], 0);
MarkMenu("View.OpenChatWindow", ChatDlg);
+ CursorAtEnd(&chatOptions[CHAT_IN]);
+}
+
+void
+ChatProc ()
+{
+ if(shellUp[ChatDlg]) PopDown(ChatDlg);
+ else ChatPopUp();
+}
+
+void
+ConsoleAutoPopUp (char *buf)
+{
+ if(!appData.autoBox) return;
+ if(appData.icsActive) { // text typed to board in ICS mode: divert to ICS input box
+ if(DialogExists(ChatDlg)) { // box already exists: append to current contents
+ char *p, newText[MSG_SIZ];
+ GetWidgetText(&chatOptions[CHAT_IN], &p);
+ snprintf(newText, MSG_SIZ, "%s%c", p, *buf);
+ SetWidgetText(&chatOptions[CHAT_IN], newText, ChatDlg);
+ if(shellUp[ChatDlg]) HardSetFocus (&chatOptions[CHAT_IN], ChatDlg); //why???
+ } else { ASSIGN(line, buf); } // box did not exist: make sure it pops up with char in it
+ ChatPopUp();
+ } else PopUpMoveDialog(*buf);
}
//--------------------------------- Game-List options dialog ------------------------------------------
static int GLT_OK P((int n));
static Option listOptions[] = {
-{300, LR|TB, 200, NULL, (void*) strings, "", NULL, ListBox, "" }, // For GTK we need to specify a height, as default would just show 3 lines
+{300, LR|TB, 200, NULL, (void*) strings, NULL, NULL, ListBox, "" }, // For GTK we need to specify a height, as default would just show 3 lines
{ 0, 0, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("factory") },
{ 0, SAME_ROW, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("up") },
{ 0, SAME_ROW, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("down") },
{ 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Help") },
{ 0, 0, 0, NULL, (void*)&SizeKludge, "", NULL, BarEnd, "" },
{ 0, LR|T2T|BORDER|SAME_ROW, 0, NULL, NULL, "", NULL, Label, "1" }, // optional title in window
-{ 50, LL|TT, 100, NULL, (void*) &LogoW, NULL, NULL, -1, "" }, // white logo
+{ 50, LL|TT, 100, NULL, (void*) &LogoW, NULL, NULL, Skip, "" }, // white logo
{ 12, L2L|T2T, 200, NULL, (void*) &CCB, NULL, NULL, Label, "White" }, // white clock
{ 13, R2R|T2T|SAME_ROW, 200, NULL, (void*) &CCB, NULL, NULL, Label, "Black" }, // black clock
-{ 50, RR|TT|SAME_ROW, 100, NULL, (void*) &LogoB, NULL, NULL, -1, "" }, // black logo
-{ 0, LR|T2T|BORDER, 401, NULL, NULL, "", NULL, -1, "2" }, // backup for title in window (if no room for other)
-{ 0, LR|T2T|BORDER, 270, NULL, NULL, "", NULL, Label, "message" }, // message field
+{ 50, RR|TT|SAME_ROW, 100, NULL, (void*) &LogoB, NULL, NULL, Skip, "" }, // black logo
+{ 0, LR|T2T|BORDER, 401, NULL, NULL, "", NULL, Skip, "2" }, // backup for title in window (if no room for other)
+{ 0, LR|T2T|BORDER, 270, NULL, NULL, (char*)&appData.font, NULL, Label, "message" }, // message field
{ 0, RR|TT|SAME_ROW, 125, NULL, NULL, "", NULL, BoxBegin, "" }, // (optional) button bar
- { 0, 0, 0, NULL, (void*) &ToStartEvent, NULL, NULL, Button, N_("<<") },
- { 0, SAME_ROW, 0, NULL, (void*) &BackwardEvent, NULL, NULL, Button, N_("<") },
- { 0, SAME_ROW, 0, NULL, (void*) &PauseEvent, NULL, NULL, Button, N_(PAUSE_BUTTON) },
- { 0, SAME_ROW, 0, NULL, (void*) &ForwardEvent, NULL, NULL, Button, N_(">") },
- { 0, SAME_ROW, 0, NULL, (void*) &ToEndEvent, NULL, NULL, Button, N_(">>") },
+ { 0, 0, 0, NULL, (void*) &ToStartEvent, (char*)&appData.font, NULL, Button, N_("<<") },
+ { 0, SAME_ROW, 0, NULL, (void*) &BackwardEvent, (char*)&appData.font, NULL, Button, N_("<") },
+ { 0, SAME_ROW, 0, NULL, (void*) &PauseEvent, (char*)&appData.font, NULL, Button, N_(PAUSE_BUTTON) },
+ { 0, SAME_ROW, 0, NULL, (void*) &ForwardEvent, (char*)&appData.font, NULL, Button, N_(">") },
+ { 0, SAME_ROW, 0, NULL, (void*) &ToEndEvent, (char*)&appData.font, NULL, Button, N_(">>") },
{ 0, 0, 0, NULL, NULL, "", NULL, BoxEnd, "" },
{ 401, LR|TB, 401, NULL, (char*) &Exp, NULL, NULL, Graph, "shadow board" }, // board
{ 2, COMBO_CALLBACK, 0, NULL, (void*) &PMSelect, NULL, pieceMenuStrings[0], PopUp, "menuW" },
int w = width - 44 - mainOptions[n].min;
mainOptions[W_TITLE].max = w; // width left behind menu bar
if(w < 0.4*width) // if no reasonable amount of space for title, force small layout
- mainOptions[W_SMALL].type = mainOptions[W_TITLE].type, mainOptions[W_TITLE].type = -1;
+ mainOptions[W_SMALL].type = mainOptions[W_TITLE].type, mainOptions[W_TITLE].type = Skip;
}
void
Exp (int n, int x, int y)
{
static int but1, but3, oldW, oldH;
- int menuNr = -3, sizing;
+ int menuNr = -3, sizing, f, r;
+ TimeMark now;
if(n == 0) { // motion
if(SeekGraphClick(Press, x, y, 1)) return NULL;
- if(but1 && !PromoScroll(x, y)) DragPieceMove(x, y);
+ if((but1 || dragging == 2) && !PromoScroll(x, y)) DragPieceMove(x, y);
if(but3) MovePV(x, y, lineGap + BOARD_HEIGHT * (squareSize + lineGap));
+ if(appData.highlightDragging) {
+ f = EventToSquare(x, BOARD_WIDTH); if ( flipView && f >= 0) f = BOARD_WIDTH - 1 - f;
+ r = EventToSquare(y, BOARD_HEIGHT); if (!flipView && r >= 0) r = BOARD_HEIGHT - 1 - r;
+ HoverEvent(x, y, f, r);
+ }
return NULL;
}
if(n != 10 && PopDown(PromoDlg)) fromX = fromY = -1; // user starts fiddling with board when promotion dialog is up
+ else GetTimeMark(&now);
shiftKey = ShiftKeys();
controlKey = (shiftKey & 0xC) != 0;
shiftKey = (shiftKey & 3) != 0;
case 3: menuNr = RightClick(Press, x, y, &pmFromX, &pmFromY), but3 = 1; break;
case -2: shiftKey = !shiftKey;
case -3: menuNr = RightClick(Release, x, y, &pmFromX, &pmFromY), but3 = 0; break;
+ case 4: BackwardEvent(); break;
+ case 5: ForwardEvent(); break;
case 10:
sizing = (oldW != x || oldH != y);
oldW = x; oldH = y;
InitDrawingHandle(mainOptions + W_BOARD);
- if(sizing) return NULL; // don't redraw while sizing
+ if(sizing && SubtractTimeMarks(&now, &programStartTime) > 10000) return NULL; // don't redraw while sizing (except at startup)
DrawPosition(True, NULL);
default:
return NULL;
mainOptions[W_BLACK].max = mainOptions[W_WHITE].max = size/2-3; // clock width
mainOptions[W_MESSG].max = appData.showButtonBar ? size-135 : size-2; // message
mainOptions[W_MENU].max = size-40; // menu bar
- mainOptions[W_TITLE].type = appData.titleInWindow ? Label : -1 ;
+ mainOptions[W_TITLE].type = appData.titleInWindow ? Label : Skip ;
if(logo && logo <= size/4) { // Activate logos
mainOptions[W_WHITE-1].type = mainOptions[W_BLACK+1].type = Graph;
mainOptions[W_WHITE-1].max = mainOptions[W_BLACK+1].max = logo;
mainOptions[W_WHITE].max = mainOptions[W_BLACK].max -= logo + 4;
mainOptions[W_WHITE].name = mainOptions[W_BLACK].name = "Double\nHeight";
}
- if(!appData.showButtonBar) for(i=W_BUTTON; i<W_BOARD; i++) mainOptions[i].type = -1;
+ if(!appData.showButtonBar) for(i=W_BUTTON; i<W_BOARD; i++) mainOptions[i].type = Skip;
for(i=0; i<8; i++) mainOptions[i+1].choice = (char**) menuBar[i].mi;
AppendEnginesToMenu(appData.recentEngineList);
GenericPopUp(mainOptions, "XBoard", BoardWindow, BoardWindow, NONMODAL, 1); // allways top-level
".trn",
".bin",
".wav",
-".xpm",
".ini",
".log",
"",
void
ActivateTheme (int col)
{
+ if(appData.overrideLineGap >= 0) lineGap = appData.overrideLineGap; else lineGap = defaultLineGap;
+ InitDrawingParams(strcmp(oldPieceDir, appData.pieceDirectory));
+ InitDrawingSizes(-1, 0);
+ DrawPosition(True, NULL);
}
-char *
-Col2Text (int n)
-{
- return NULL;
-}
// int max X/E (w) (w) (w) (w) (w) (w) (w) (w)
// void* handle X/E X/E X/E X/E X/E X X X X X
// void* target X X X X/C C X X C C
-// char* textValue E X/E *
-// char ** choice X/E * X
+// char* textValue X/E X/E *
+// char ** choice C X/E * X
// enum type X/E X/E X/E X/E X X X X X X X X
// char[] name X/E X/E X/E X/E X X X X X
// File and Path options are like String (but get a browse button added in the dialog), and Slider
FatalDlg,
BoardWindow,
BrowserDlg,
+MasterDlg,
NrOfDialogs // dummy for total
} DialogClass;
extern ButtonCallback *comboCallback;
extern void *userLogo;
-extern WindowPlacement wpComment, wpTags, wpMoveHistory, wpMain, wpDualBoard;
+extern WindowPlacement wpComment, wpTags, wpMoveHistory, wpMain, wpDualBoard, wpConsole;
extern char *marked[];
extern Boolean shellUp[];
extern Option textOptions[], typeOptions[], dualOptions[], mainOptions[];
+void GetPlacement P((DialogClass dlg, WindowPlacement *wp));
int DialogExists P((DialogClass n));
int GenericPopUp P((Option *option, char *title, DialogClass dlgNr, DialogClass parent, int modal, int topLevel));
int GenericReadout P((Option *currentOption, int selected));
int PopDown P((DialogClass n));
void MarkMenu P((char *item, int dlgNr));
int AppendText P((Option *opt, char *s));
+void AppendColorized P((Option *opt, char *s, int count));
+void Show P((Option *opt, int hide));
+int IcsHist P((int dir, Option *opt, DialogClass dlg));
void HighlightText P((Option *opt, int from, int to, Boolean highlight));
void SetColor P((char *colorName, Option *box));
//void ColorChanged P((Widget w, XtPointer data, XEvent *event, Boolean *b));
void SetInsertPos P((Option *opt, int pos));
-void HardSetFocus P((Option *opt));
+void HardSetFocus P((Option *opt, DialogClass dlg));
void CursorAtEnd P((Option *opt));
void GetWidgetText P((Option *opt, char **buf));
void SetWidgetText P((Option *opt, char *buf, int n));
int SetCurrentComboSelection P((Option *opt));
void BoxAutoPopUp P((char *buf));
+void ConsoleAutoPopUp P((char *buf));
void IcsKey P((int n));
void ICSInputBoxPopUp P((void));
void LoadOptionsPopUp P((DialogClass parent));
for(p=0; p<=(int)WhiteKing; p++)
pngPieceBitmaps[i][p] = pngPieceBitmaps2[i][p]; // defaults
if(v == VariantShogi) {
- pngPieceBitmaps[i][(int)WhiteCannon] = pngPieceBitmaps2[i][(int)WhiteKing+1];
+ pngPieceBitmaps[i][(int)WhiteCannon] = pngPieceBitmaps2[i][(int)WhiteTokin];
pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteKing+2];
- pngPieceBitmaps[i][(int)WhiteSilver] = pngPieceBitmaps2[i][(int)WhiteKing+3];
- pngPieceBitmaps[i][(int)WhiteGrasshopper] = pngPieceBitmaps2[i][(int)WhiteKing+4];
+ pngPieceBitmaps[i][(int)WhiteGrasshopper] = pngPieceBitmaps2[i][(int)WhiteKing+3];
+ pngPieceBitmaps[i][(int)WhiteSilver] = pngPieceBitmaps2[i][(int)WhiteKing+4];
pngPieceBitmaps[i][(int)WhiteQueen] = pngPieceBitmaps2[i][(int)WhiteLance];
+ pngPieceBitmaps[i][(int)WhiteFalcon] = pngPieceBitmaps2[i][(int)WhiteMonarch]; // for Sho Shogi
}
#ifdef GOTHIC
if(v == VariantGothic) {
pngPieceBitmaps[i][(int)WhiteAngel] = pngPieceBitmaps2[i][(int)WhiteFalcon];
pngPieceBitmaps[i][(int)WhiteMarshall] = pngPieceBitmaps2[i][(int)WhiteAlfil];
}
+ if(v == VariantChuChess) {
+ pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteLion];
+ }
+ if(v == VariantChu) {
+ pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteKing+1];
+ pngPieceBitmaps[i][(int)WhiteUnicorn] = pngPieceBitmaps2[i][(int)WhiteCat];
+ pngPieceBitmaps[i][(int)WhiteSilver] = pngPieceBitmaps2[i][(int)WhiteSword];
+ pngPieceBitmaps[i][(int)WhiteFalcon] = pngPieceBitmaps2[i][(int)WhiteDagger];
+ }
}
}
int boardWidth, boardHeight;
static int oldWidth, oldHeight;
static VariantClass oldVariant;
- static int oldTwoBoards = 0;
+ static int oldTwoBoards = 0, oldNrOfFiles = 0;
if(!mainOptions[W_BOARD].handle) return;
+ if(boardSize == -2 && gameInfo.variant != oldVariant
+ && oldNrOfFiles && oldNrOfFiles != BOARD_WIDTH) { // called because variant switch changed board format
+ squareSize = ((squareSize + lineGap) * oldNrOfFiles + 0.5*BOARD_WIDTH) / BOARD_WIDTH; // keep total width fixed
+ if(appData.overrideLineGap < 0) lineGap = squareSize < 37 ? 1 : squareSize < 59 ? 2 : squareSize < 116 ? 3 : 4;
+ squareSize -= lineGap;
+ CreatePNGPieces();
+ CreateGrid();
+ }
+ oldNrOfFiles = BOARD_WIDTH;
+
if(oldTwoBoards && !twoBoards) PopDown(DummyDlg);
oldTwoBoards = twoBoards;
char *pngPieceNames[] = // must be in same order as internal piece encoding
{ "Pawn", "Knight", "Bishop", "Rook", "Queen", "Advisor", "Elephant", "Archbishop", "Marshall", "Gold", "Commoner",
- "Canon", "Nightrider", "CrownedBishop", "CrownedRook", "Princess", "Chancellor", "Hawk", "Lance", "Cobra", "Unicorn", "King",
- "GoldKnight", "GoldLance", "GoldPawn", "GoldSilver", NULL
+ "Canon", "Nightrider", "CrownedBishop", "CrownedRook", "Princess", "Chancellor", "Hawk", "Lance", "Cobra", "Unicorn", "Lion",
+ "GoldPawn", "HSword", "PromoHorse", "PromoDragon", "Leopard", "PromoSword", "Prince", "Phoenix", "Kylin", "PromoRook", "PromoHSword",
+ "Dolphin", "Chancellor", "Unicorn", "Hawk", "Sword", "Princess", "HCrown", "Knight", "Elephant", "PromoBishop", "King",
+ "Claw", "GoldKnight", "GoldLance", "GoldSilver", NULL
};
+char *backupPiece[] = { "King", "Queen", "Lion" }; // pieces that map on other when not kanji
+
RsvgHandle *
-LoadSVG (char *dir, int color, int piece)
+LoadSVG (char *dir, int color, int piece, int retry)
{
char buf[MSG_SIZ];
RsvgHandle *svg=svgPieces[color][piece];
cairo_surface_t *img;
cairo_t *cr;
- snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White", pngPieceNames[piece]);
+ snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White",
+ retry ? backupPiece[piece - WhiteMonarch] : pngPieceNames[piece]);
if(svg || *dir && (svg = rsvg_handle_new_from_file(buf, &svgerror))) {
return svg;
}
+ if(!retry && piece >= WhiteMonarch && piece <= WhiteNothing) // pieces that are only different in kanji sets
+ return LoadSVG(dir, color, piece, 1);
if(svgerror)
g_error_free(svgerror);
return NULL;
g_type_init ();
- svgPieces[color][piece] = LoadSVG("", color, piece); // this fills pngPieceImages if we had cached svg with bitmap of wanted size
+ svgPieces[color][piece] = LoadSVG("", color, piece, 0); // this fills pngPieceImages if we had cached svg with bitmap of wanted size
if(!pngPieceImages[color][piece]) { // we don't have cached bitmap (implying we did not have cached svg)
if(*appData.pieceDirectory) { // user specified piece directory
snprintf(buf, MSG_SIZ, "%s/%s%s.png", appData.pieceDirectory, color ? "Black" : "White", pngPieceNames[piece]);
img = cairo_image_surface_create_from_png (buf); // try if there are png pieces there
if(cairo_surface_status(img) != CAIRO_STATUS_SUCCESS) { // there were not
- svgPieces[color][piece] = LoadSVG(appData.pieceDirectory, color, piece); // so try if he has svg there
+ svgPieces[color][piece] = LoadSVG(appData.pieceDirectory, color, piece, 0); // so try if he has svg there
} else pngPieceImages[color][piece] = img;
}
}
if(!pngPieceImages[color][piece]) { // we still did not manage to acquire a piece bitmap
static int warned = 0;
- if(!(svgPieces[color][piece] = LoadSVG(SVGDIR, color, piece)) && !warned) { // try to fall back on installed svg
- char *msg = _("No default pieces installed\nSelect your own -pieceImageDirectory");
+ if(!(svgPieces[color][piece] = LoadSVG(SVGDIR, color, piece, 0)) && !warned) { // try to fall back on installed svg
+ char *msg = _("No default pieces installed!\nSelect your own using '-pieceImageDirectory'.");
printf("%s\n", msg); // give up
DisplayError(msg, 0);
warned = 1; // prevent error message being repeated for each piece type
cairo_destroy (cr);
}
+static char *markerColor[8] = { "#FFFF00", "#FF0000", "#00FF00", "#0000FF", "#00FFFF", "#FF00FF", "#FFFFFF", "#000000" };
+
void
DoDrawDot (cairo_surface_t *cs, int marker, int x, int y, int r)
{
cairo_stroke_preserve(cr);
SetPen(cr, 2, marker == 2 ? "#FFFFFF" : "#000000", 0);
} else {
- SetPen(cr, 2, marker == 2 ? "#FF0000" : "#FFFF00", 0);
+ SetPen(cr, 2, markerColor[marker-1], 0);
}
cairo_fill(cr);
CAIRO_FONT_SLANT_NORMAL,
CAIRO_FONT_WEIGHT_BOLD);
- cairo_set_font_size (cr, squareSize/4);
+ cairo_set_font_size (cr, align < 0 ? 2*squareSize/3 : squareSize/4);
// calculate where it goes
cairo_text_extents (cr, string, &te);
yy += -te.y_bearing + 3;
} else if (align == 4) {
xx += te.x_bearing + 1, yy += -te.y_bearing + 3;
+ } else if (align < 0) {
+ xx += squareSize/2 - te.width/2, yy += 9*squareSize/16 - te.y_bearing/2;
}
cairo_move_to (cr, xx-1, yy);
+ if(align == -2) cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); else
if(align < 3) cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
else cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
cairo_show_text (cr, string);
}
void
+InscribeKanji (ChessSquare piece, int x, int y)
+{
+ char *p, *q, buf[10];
+ int n;
+ if(piece == EmptySquare) return;
+ if(piece >= BlackPawn) piece = BLACK_TO_WHITE piece;
+ p = appData.inscriptions;
+ n = piece;
+ while(piece > WhitePawn) {
+ if(*p++ == NULLCHAR) {
+ if(n != WhiteKing) return;
+ p = q;
+ break;
+ }
+ q = p - 1;
+ while((*p & 0xC0) == 0x80) p++; // skip UTF-8 continuation bytes
+ piece--;
+ }
+ strncpy(buf, p, 10);
+ for(q=buf; (*++q & 0xC0) == 0x80;);
+ *q = NULLCHAR;
+ DrawText(buf, x, y, n > WhiteLion ? -2 : -1);
+}
+
+void
DrawOneSquare (int x, int y, ChessSquare piece, int square_color, int marker, char *tString, char *bString, int align)
{ // basic front-end board-draw function: takes care of everything that can be in square:
// piece, background, coordinate/count, marker dot
BlankSquare(csBoardWindow, x, y, square_color, piece, 1);
} else {
pngDrawPiece(csBoardWindow, piece, square_color, x, y);
+ if(appData.inscriptions[0]) InscribeKanji(piece, x, y);
}
if(align) { // square carries inscription (coord or piece count)
<tr><td>unknown</td><td>Unknown variant (not supported)</td></tr>\r
</table>\r
\r
+As of XBoard 4.8, engines can define arbitrary variant names; see the "feature" and "setup" commands in <a href="#9">section 9</a>.\r
</dd>\r
\r
<dt>quit</dt>\r
Obviously in variants that cannot be described by a FEN for normal Chess,\r
e.g. because the board is not 8x8, other pieces then PNBRQK participate, \r
there are holdings that need to be specified, etc., \r
-xboard will use a FEN format that is standard or suitable for that varant.\r
+xboard will use a FEN format that is standard or suitable for that variant.\r
In particular, in FRC or CRC, WinBoard will use Shredder-FEN or X-FEN standard,\r
i.e. it can use the rook-file indicator letter to represent a castling right \r
(like HAha) whenever it wants, but if it uses KQkq, this will always refer \r
than leaving the default in place, so that the user will get an\r
appropriate error message if he tries to play a variant that your\r
engine does not support.</span>\r
+<span class="version47">As of XBoard 4.8 a variant name not known to the GUI will be\r
+considered an engine-defined variant.\r
+The user will be given the opportunity to select such variants,\r
+but when this happens, the engine should define its meaning\r
+in detail with the aid of a "setup" command defined below,\r
+in order to avoid an error.</span>\r
<br />\r
<span class="version43">If your engine can play variants on a deviating board size,\r
like capablanca on an 8x8 board, or capablanca crazyhouse,\r
-it can list them amongst the variants with a prefix spcifying board size plus\r
+it can list them amongst the variants with a prefix specifying board size plus\r
holdings size, like 8x8+0_capablanca or 10x8+7_capablanca.\r
If it is capable of playing any variant with an arbitrary board size,\r
it should list "boardsize" as one of the variants.\r
</dl>\r
</dd>\r
\r
+<dt>setup FEN</dt>\r
+<dt>setup (PIECETOCHAR) FEN</dt>\r
+<dt>setup (PIECETOCHAR) WxH+S_PARENTVARIANT FEN</dt>\r
+<dd>The engine can optionally send a setup command to the GUI in reply\r
+to the variant command.\r
+In the simplest form this sends the FEN of the initial position.\r
+This can be used to implement engines for non-standard variants\r
+that only differ from standard variants through the initial position.\r
+(E.g. many of the 'wild' boards you can play on an ICS.)\r
+Whether the GUI should obey or ignore this command depends on the situation.\r
+Normally it would ignore it in variants where it knows the standard initial position\r
+and legality testing is on, or when the user specified an initial position.\r
+In other cases it will use the FEN sent by the first engine\r
+for setting up the initial position, as if it was an externally supplied position.\r
+Such a position will always be sent to a second engine that might be involved,\r
+and any setup commands received from the latter will always be ignored.\r
+(This to allow for shuffle games, where the two engines might pick different setups.)\r
+When no initial position is known, such as for 'catch-all' variants like fairy,\r
+or whenever the board width is overruled to a non-standard value,\r
+the FEN will be used as default initial position even when legality testing is on.\r
+</dd>\r
+<dd>Optionally the meaning of the piece ID letters in the FEN can be defined\r
+between parentheses; this will be interpreted as if it was the value of a\r
+-pieceToCharTable command-line option, mapping letters to GUI piece types.\r
+Also optionally behind that, the setup command can specify board width W,\r
+board height H and holdings size S, as well as a 'parent variant'.\r
+This is typically done in response to a variant command with a non-standard name,\r
+about which the GUI is not supposed to know anything at all.\r
+The engine can then specify board size, participating pieces, initial setup,\r
+and other rule details (inherited from the parent variant),\r
+saving the user the trouble to configure the GUI for this non-standard variant.\r
+Example:\r
+<pre>\r
+ setup (PN.RQKpn.rqk) 6x6+0_fairy rnqknr/pppppp/6/6/PPPPPP/RNQKNR w - - 0 1\r
+</pre>\r
+could be used by an engine for Los-Alamos Chess in response to 'variant losalamos',\r
+and would automatically switch the GUI to this variant as soon as the user\r
+selected it from the GUI menu.\r
+The PIECETOCHAR element would ensure a Bishop would not be accepted as promotion choice. \r
+</dd>\r
\r
<dt>Illegal move: MOVE</dt>\r
<dt>Illegal move (REASON): MOVE</dt>\r
<tr><td>score</td><td>Integer giving current evaluation in centipawns.</td></tr>\r
<tr><td>time</td><td>Current search time in centiseconds (ex:1028 = 10.28 seconds).</td></tr>\r
<tr><td>nodes</td><td>Nodes searched.</td></tr>\r
+<tr><td>*selective depth</td><td>Maximium length of any branch in the current search.</td></tr>\r
+<tr><td>*speed</td><td>Nodes per second in last measured time interval.</td></tr>\r
+<tr><td>*</td><td>Reserved for future extensions.</td></tr>\r
+<tr><td>*tbhits</td><td>Number of tablebase probes made in the current search.</td></tr>\r
<tr><td>pv</td><td>Freeform text giving current "best" line.\r
You can continue the pv onto another line if you start each\r
continuation line with at least four space characters.</td></tr>\r
</table>\r
\r
+<p class="version47">\r
+The items marked with * are optional.\r
+If any of these items is present, the <b>pv</b> field must be preceeded directly by a tab character;\r
+if no tab character preceeds the first non-integer token,\r
+the <b>pv</b> field will start at the first non-blank character after <b>nodes</b>.\r
+Otherwise it will start after the last tab that is not behind any non-integer token.\r
+Of all integers between <b>nodes</b> and <b>pv</b> the last one is intepreted as <b>tbhits</b>.\r
+Of any remaining ones the first is interpreted as <b>selective depth</b>,\r
+and a second as <b>speed</b>.\r
+More infos could be added to this in the future.\r
+Note that older interfaces might consider the optional infos to be part of the <b>pv</b> field,\r
+and display them exactly as sent.\r
+It is therefore encouraged that engines use tabs or spaces to format this optional info\r
+so that it will display nicely in (not too wide) columns.\r
+</p>\r
+\r
+<p class="version47">\r
+A question mark as the last character in the <b>pv</b> field should be used to indicate\r
+the reported score is from a fail low, and thus represents an upper bound only.\r
+Similarly, an exclamation point should be used to indicate a fail high / lower bound.\r
+</p>\r
+\r
+<p class="version47">\r
+Mate scores should be indicated as 100000 + N for "mate in N moves",\r
+and -100000 - N for "mated in N moves".\r
+</p>\r
+\r
<p>\r
Example:\r
</p>\r
#include "config.h"
#include <stdio.h>
+#include <ctype.h>
#if STDC_HEADERS
# include <stdlib.h>
static int engineState[2] = { -1, -1 };
static char lastLine[2][MSG_SIZ];
static char header[2][MSG_SIZ];
+static char columnHeader[MSG_SIZ] = "dep\tscore\tnodes\ttime\t(not shown: tbhits\tknps\tseldep)\n";
+static int columnMask = 0xF0;
#define MAX_VAR 400
static int scores[MAX_VAR], textEnd[MAX_VAR], keys[MAX_VAR], curDepth[2], nrVariations[2];
}
if( clearMemo ) {
+ if(!appData.headers) columnHeader[0] = NULLCHAR;
DoClearMemo(which); nrVariations[which] = 0;
header[which][0] = NULLCHAR;
if(gameMode == AnalyzeMode) {
snprintf(header[which], MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV setting = %d / more\n",
appData.whitePOV || appData.scoreWhite ? "white" : "mover", cps->option[multi].value);
}
- if(!which) snprintf(header[which]+strlen(header[which]), MSG_SIZ-strlen(header[which]), "%s", exclusionHeader);
+ if(!which) snprintf(header[which]+strlen(header[which]), MSG_SIZ-strlen(header[which]), "%s%s", exclusionHeader, columnHeader);
InsertIntoMemo( which, header[which], 0);
- } else
- if(appData.ponderNextMove && lastLine[which][0]) {
+ } else {
+ snprintf(header[which], MSG_SIZ, "%s", columnHeader);
+ if(appData.ponderNextMove && lastLine[which][0]) {
InsertIntoMemo( which, lastLine[which], 0 );
InsertIntoMemo( which, "\n", 0 );
+ }
+ InsertIntoMemo( which, header[which], 0);
}
}
keys[n] = ed->moveKey;
}
nrVariations[n] += 2;
- return offs + (gameMode == AnalyzeMode)*strlen(header[ed->which]);
+ return offs + strlen(header[ed->which]);
}
+#define MATE_SCORE 100000
+static char spaces[] = " "; // [HGM] align: spaces for padding
+
+static void
+Format(char *buf, int val)
+{ // [HGM] tbhits: print a positive integer with trailing whitespace to give it fixed width
+ if( val < 1000000 ) {
+ int h = val, i=0;
+ while(h > 0) h /= 10, i++;
+ snprintf( buf, 24, "%d%s\t", val, spaces + 2*i);
+ }
+ else {
+ char unit = 'M';
+ if(val >= 1e9) val /= 1e3, unit = 'G';
+ snprintf( buf, 24, "%.*f%c%s\t", 1 + (val < 1e7), val/1e6, unit, spaces + 10 + 2*(val >= 1e8));
+ }
+}
// pure back end, now SetWindowText is called via wrapper DoSetWindowText
static void
char s_label[MAX_NAME_LENGTH + 32];
int h;
char * name = ed->name;
+ char *q, *pvStart = ed->pv;
/* Label */
if( name == 0 || *name == '\0' ) {
strncpy( s_label, name, MAX_NAME_LENGTH );
s_label[ MAX_NAME_LENGTH-1 ] = '\0';
+ if(pvStart) { // [HGM] tbhits: plit up old PV into extra infos and real PV
+ while(strchr(pvStart, '\t')) { // locate last tab before non-int (real PV starts after that)
+ for(q=pvStart; isdigit(*q) || *q == ' '; q++);
+ if(*q != '\t') break;
+ pvStart = q + 1;
+ }
+ }
+
#ifdef SHOW_PONDERING
if( IsEnginePondering( ed->which ) ) {
- char buf[8];
+ char buf[12];
buf[0] = '\0';
strncpy( buf, ed->hint, sizeof(buf) );
buf[sizeof(buf)-1] = '\0';
}
- else if( ed->pv != 0 && *ed->pv != '\0' ) {
- char * sep = strchr( ed->pv, ' ' );
+ else if( pvStart != 0 && *pvStart != '\0' ) {
+ char * sep;
int buflen = sizeof(buf);
+ sep = strchr( pvStart, ' ' );
if( sep != NULL ) {
- buflen = sep - ed->pv + 1;
+ buflen = sep - pvStart + 1;
if( buflen > sizeof(buf) ) buflen = sizeof(buf);
}
- strncpy( buf, ed->pv, buflen );
+ strncpy( buf, pvStart, buflen );
buf[ buflen-1 ] = '\0';
}
DoSetWindowText( ed->which, nLabelNPS, s_label );
/* Memo */
- if( ed->pv != 0 && *ed->pv != '\0' ) {
+ if( pvStart != 0 && *pvStart != '\0' ) {
char s_nodes[24];
char s_score[16];
char s_time[24];
- char buf[256];
- int buflen;
+ char s_hits[24];
+ char s_seld[24];
+ char s_knps[24];
+ char buf[256], fail;
+ int buflen, hits, i, params[5], extra;
int time_secs = ed->time / 100;
int time_cent = ed->time % 100;
/* Nodes */
if( ed->nodes < 1000000 ) {
- snprintf( s_nodes, sizeof(s_nodes)/sizeof(s_nodes[0]), u64Display, ed->nodes );
+ int h = ed->nodes, i=0;
+ while(h > 0) h /= 10, i++; // [HGM] align: count digits; pad with 2 spaces for every missing digit
+ snprintf( s_nodes, sizeof(s_nodes)/sizeof(s_nodes[0]), u64Display "%s\t", ed->nodes, spaces + 2*i);
}
else {
- snprintf( s_nodes, sizeof(s_nodes)/sizeof(s_nodes[0]), "%.1fM", u64ToDouble(ed->nodes) / 1000000.0 );
+ double x = u64ToDouble(ed->nodes);
+ char unit = 'M';
+ if(x >= 1e9) x /= 1e3, unit = 'G';
+ snprintf( s_nodes, sizeof(s_nodes)/sizeof(s_nodes[0]), "%.*f%c%s\t", 1 + (x < 1e7), x / 1e6,
+ unit, spaces + 10 + 2*(ed->nodes >= 1e8));
}
+ /* TB Hits etc. */
+ for(i=hits=0; i<5; i++) params[i] = 0;
+//fprintf(stderr, "%s\n%s\n", ed->pv, pvStart);
+ if(pvStart != ed->pv) { // check if numbers before PV
+ strncpy(buf, ed->pv, 256); buf[pvStart - ed->pv] = NULLCHAR;
+ extra = sscanf(buf, "%d %d %d %d %d", params, params+1, params+2, params+3, params+4);
+//fprintf(stderr, "extra=%d len=%d\n", extra, pvStart - ed->pv);
+ if(extra) hits = params[extra-1], params[extra-1] = 0; // last one is tbhits
+ }
+ Format(s_seld, params[0]); Format(s_knps, params[1]); Format(s_hits, hits);
+
+ fail = ed->pv[strlen(ed->pv)-1];
+ if(fail != '?' && fail != '!') fail = ' ';
+
/* Score */
h = ((gameMode == AnalyzeMode && appData.whitePOV || appData.scoreWhite) && !WhiteOnMove(currentMove) ? -1 : 1) * ed->score;
+ if( h == 0 ) {
+ snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), " 0.00%c\t", fail );
+ } else
+ if( h >= MATE_SCORE) snprintf(s_score, 16, " %s#%d%c\t", ( h > MATE_SCORE+9 ? "" : " "), h - MATE_SCORE, fail ); else
+ if(-h >= MATE_SCORE) snprintf(s_score, 16, " %s#-%d%c\t", (-h > MATE_SCORE+9 ? "" : " "), -h - MATE_SCORE, fail ); else
if( h > 0 ) {
- snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "+%.2f", h / 100.0 );
+ snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "+%.2f%c\t", h / 100.0, fail );
}
else {
- snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "%.2f", h / 100.0 );
+ snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), " %.2f%c\t", h / 100.0, fail );
}
/* Time */
- snprintf( s_time, sizeof(s_time)/sizeof(s_time[0]), "%d:%02d.%02d", time_secs / 60, time_secs % 60, time_cent );
+ if(time_secs >= 3600)
+ snprintf( s_time, sizeof(s_time)/sizeof(s_time[0]), "%d:%02d:%02d\t", time_secs / 3600, (time_secs / 60) % 60, time_secs % 60 );
+ else
+ snprintf( s_time, sizeof(s_time)/sizeof(s_time[0]), "%d:%02d.%02d\t", time_secs / 60, time_secs % 60, time_cent );
+
+ if(columnMask & 2) s_score[0] = NULLCHAR; // [HGM] hide: erase columns the user has hidden
+ if(columnMask & 4) s_nodes[0] = NULLCHAR;
+ if(columnMask & 8) s_time[0] = NULLCHAR;
+ if(columnMask & 16) s_hits[0] = NULLCHAR;
+ if(columnMask & 32) s_knps[0] = NULLCHAR;
+ if(columnMask & 64) s_seld[0] = NULLCHAR;
/* Put all together... */
if(ed->nodes == 0 && ed->score == 0 && ed->time == 0)
snprintf( buf, sizeof(buf)/sizeof(buf[0]), "%3d\t", ed->depth );
else
- snprintf( buf, sizeof(buf)/sizeof(buf[0]), "%3d\t%s\t%s\t%s\t", ed->depth, s_score, s_nodes, s_time );
+ snprintf( buf, sizeof(buf)/sizeof(buf[0]), "%3d\t%s%s%s%s%s%s", ed->depth, s_score, s_nodes, s_time, s_hits, s_knps, s_seld );
/* Add PV */
buflen = strlen(buf);
- strncpy( buf + buflen, ed->pv, sizeof(buf) - buflen );
+ strncpy( buf + buflen, pvStart, sizeof(buf) - buflen );
buf[ sizeof(buf) - 3 ] = '\0';
SetEngineColorIcon( ed->which );
}
+static char *titles[] = { "score\t", "nodes\t", "time\t", "tbhits\t", "knps\t", "seldep\t" };
+
+void
+Collapse(int n)
+{ // handle click on column headers, to hide / show them
+ int i, j, nr=0, m=~columnMask, Ncol=7;
+ for(i=0; columnHeader[i] && i<n; i++) nr += (columnHeader[i] == '\t');
+ if(!nr) return; // depth always shown, so clicks on it ignored
+ for(i=j=0; i<Ncol; i++) if(m & 1<<i) j++; // count hidden columns
+ if(nr < j) { // shown column clicked: hide it
+ for(i=j=0; i<Ncol; i++) if(m & 1<<i && j++ == nr) break;
+ columnMask |= 1<<i;
+ } else { // hidden column clicked: show it
+ m = ~m; nr -= j;
+ for(i=j=0; i<Ncol; i++) if(m & 1<<i && j++ == nr) break;
+ columnMask &= ~(1<<i);
+ }
+ // create new header line
+ strcpy(columnHeader, "dep\t");
+ m = ~columnMask;
+ for(i=j=1; i<Ncol; i++) if(m & 1<<i) strcat(columnHeader, titles[i-1]), j++;
+ if(j != Ncol) { // list hidden columns, so user ca click them
+ m = ~m; strcat(columnHeader, "(not shown: ");
+ for(i=1; i<Ncol; i++) if(m & 1<<i) strcat(columnHeader, titles[i-1]);
+ strcat(columnHeader, ")");
+ }
+ strcat(columnHeader, "\n");
+}
+
// [HGM] kibitz: write kibitz line; split window for it if necessary
void
OutputKibitz (int window, char *text)
void ResizeWindowControls( int mode );
int EngineOutputDialogExists();
void SetEngineOutputTitle( char *title );
+void Collapse P((int colNr));
void InitEngineOutput P((Option *opt, Option *memo2)); // XB only
void DrawWidgetIcon P((Option *opt, int nIcon)); // XB only
void PopUpMoveDialog P((char first));
void RingBell P((void));
+int Roar P((void));
void PlayIcsWinSound P((void));
void PlayIcsLossSound P((void));
void PlayIcsDrawSound P((void));
void PlayIcsUnfinishedSound P((void));
void PlayAlarmSound P((void));
void PlayTellSound P((void));
-void PlaySoundFile P((char *name));
+int PlaySoundFile P((char *name));
void PlaySoundByColor P((void));
void EchoOn P((void));
void EchoOff P((void));
void Colorize P((ColorClass cc, int continuation));
char *InterpretFileName P((char *name, char *dir));
void DoSleep P((int n));
+void DoEvents P((void));
char *UserName P((void));
char *HostName P((void));
void CancelDelayedEvent P((void));
// [HGM] mouse: next six used by mouse handler, which was moved to backend
extern int fromX, fromY, toX, toY;
-void PromotionPopUp P((void));
+void PromotionPopUp P((char choice));
void DragPieceBegin P((int x, int y, Boolean instantly));
void DragPieceEnd P((int x, int y));
void DragPieceMove P((int x, int y));
} while (cm == PGNTag || cm == Comment);
if(1) {
int btm=0;
- if(currentListGame->gameInfo.fen) ParseFEN(boards[scratch], &btm, currentListGame->gameInfo.fen);
+ if(currentListGame->gameInfo.fen) ParseFEN(boards[scratch], &btm, currentListGame->gameInfo.fen, FALSE);
else CopyBoard(boards[scratch], initialPosition);
plyNr = (btm != 0);
currentListGame->moves = PackGame(boards[scratch]);
}
if(gameNumber % 1000 == 0) {
snprintf(buf, MSG_SIZ, _("Reading game file (%d)"), gameNumber);
- DisplayTitle(buf);
+ DisplayTitle(buf); DoEvents();
}
}
while (cm != (ChessMove) 0);
# define SLASH '-'
// redefine some defaults
# undef ICS_LOGON
-# undef SYSCONFDIR
+# undef DATADIR
+# undef SETTINGS_FILE
# define ICS_LOGON "Library/Preferences/XboardICS.conf"
-# define SYSCONFDIR "../etc"
# define DATADIR dataDir
- char *dataDir; // for expanding ~~
+# define SETTINGS_FILE masterSettings
+ char dataDir[MSG_SIZ]; // for expanding ~~
+ char masterSettings[MSG_SIZ];
#else
# define SLASH '/'
-# define DATADIR "~~"
#endif
#ifdef __EMX__
RETSIGTYPE CmailSigHandler P((int sig));
RETSIGTYPE IntSigHandler P((int sig));
RETSIGTYPE TermSizeSigHandler P((int sig));
-#if ENABLE_NLS
char *InsertPxlSize P((char *pattern, int targetPxlSize));
+#if ENABLE_NLS
XFontSet CreateFontSet P((char *base_fnt_lst));
#else
char *FindFont P((char *pattern, int targetPxlSize));
if(sscanf(name, "size%d:", &size)) {
// [HGM] font: font is meant for specific boardSize (likely from settings file);
// defer processing it until we know if it matches our board size
- if(size >= 0 && size<MAX_SIZE) { // for now, fixed limit
+ if(!strstr(name, "-*-") && // ignore X-fonts
+ size >= 0 && size<MAX_SIZE) { // for now, fixed limit
fontTable[number][size] = strdup(strchr(name, ':')+1);
fontValid[number][size] = True;
}
case 2: // COORD_FONT
appData.coordFont = strdup(name);
break;
+ case CONSOLE_FONT:
+ appData.icsFont = strdup(name);
+ break;
+ case EDITTAGS_FONT:
+ appData.tagsFont = strdup(name);
+ break;
+ case COMMENT_FONT:
+ appData.commentFont = strdup(name);
+ break;
+ case MOVEHISTORY_FONT:
+ appData.historyFont = strdup(name);
+ break;
+ case GAMELIST_FONT:
+ appData.gameListFont = strdup(name);
+ break;
default:
return;
}
void
SetFontDefaults ()
{ // only 2 fonts currently
- appData.clockFont = CLOCK_FONT_NAME;
- appData.coordFont = COORD_FONT_NAME;
- appData.font = DEFAULT_FONT_NAME;
+ appData.clockFont = strdup(CLOCK_FONT_NAME);
+ appData.coordFont = strdup(COORD_FONT_NAME);
+ appData.font = strdup(DEFAULT_FONT_NAME);
+ appData.icsFont = strdup(CONSOLE_FONT_NAME);
+ appData.tagsFont = strdup(TAGS_FONT_NAME);
+ appData.commentFont = strdup(COMMENT_FONT_NAME);
+ appData.historyFont = strdup(HISTORY_FONT_NAME);
+ appData.gameListFont = strdup(GAMELIST_FONT_NAME);
}
void
if(colorVariable[n]) *(char**)colorVariable[n] = strdup(name);
}
+char *
+Col2Text (int n)
+{
+ return *(char**)colorVariable[n];
+}
+
void
ParseTextAttribs (ColorClass cc, char *s)
{
case 2: // COORD_FONT
name = appData.coordFont;
break;
+ case CONSOLE_FONT:
+ name = appData.icsFont;
+ break;
+ case EDITTAGS_FONT:
+ name = appData.tagsFont;
+ break;
+ case COMMENT_FONT:
+ name = appData.commentFont;
+ break;
+ case MOVEHISTORY_FONT:
+ name = appData.historyFont;
+ break;
+ case GAMELIST_FONT:
+ name = appData.gameListFont;
+ break;
default:
return;
}
}
void
+GetPlacement (DialogClass dlg, WindowPlacement *wp)
+{ // wrapper to shield back-end from widget type
+ if(shellUp[dlg]) GetActualPlacement(shells[dlg], wp);
+}
+
+void
GetWindowCoords ()
{ // wrapper to shield use of window handles from back-end (make addressible by number?)
// In XBoard this will have to wait until awareness of window parameters is implemented
if(shellUp[GameListDlg]) GetActualPlacement(shells[GameListDlg], &wpGameList);
if(shellUp[CommentDlg]) GetActualPlacement(shells[CommentDlg], &wpComment);
if(shellUp[TagsDlg]) GetActualPlacement(shells[TagsDlg], &wpTags);
+ GetPlacement(ChatDlg, &wpConsole); if(appData.icsActive) wpConsole.visible = shellUp[ChatDlg];
}
void
ResizeBoardWindow (int w, int h, int inhibit)
{
GtkAllocation a;
- if(clockKludge) return; // ignore as long as clock does not have final height
+// if(clockKludge) return; // ignore as long as clock does not have final height
gtk_widget_get_allocation(optList[W_WHITE].handle, &a);
w += marginW + 1; // [HGM] not sure why the +1 is (sometimes) needed...
h += marginH + a.height + 1;
void
InitializeFonts (int clockFontPxlSize, int coordFontPxlSize, int fontPxlSize)
{ // determine what fonts to use, and create them
+
+ if(!fontIsSet[CLOCK_FONT] && fontValid[CLOCK_FONT][squareSize])
+ appData.clockFont = fontTable[CLOCK_FONT][squareSize];
+ if(!fontIsSet[MESSAGE_FONT] && fontValid[MESSAGE_FONT][squareSize])
+ appData.font = fontTable[MESSAGE_FONT][squareSize];
+ if(!fontIsSet[COORD_FONT] && fontValid[COORD_FONT][squareSize])
+ appData.coordFont = fontTable[COORD_FONT][squareSize];
+ if(!fontIsSet[CONSOLE_FONT] && fontValid[CONSOLE_FONT][squareSize])
+ appData.icsFont = fontTable[CONSOLE_FONT][squareSize];
+ if(!fontIsSet[EDITTAGS_FONT] && fontValid[EDITTAGS_FONT][squareSize])
+ appData.tagsFont = fontTable[EDITTAGS_FONT][squareSize];
+ if(!fontIsSet[COMMENT_FONT] && fontValid[COMMENT_FONT][squareSize])
+ appData.commentFont = fontTable[COMMENT_FONT][squareSize];
+ if(!fontIsSet[MOVEHISTORY_FONT] && fontValid[MOVEHISTORY_FONT][squareSize])
+ appData.historyFont = fontTable[MOVEHISTORY_FONT][squareSize];
+ if(!fontIsSet[GAMELIST_FONT] && fontValid[GAMELIST_FONT][squareSize])
+ appData.gameListFont = fontTable[GAMELIST_FONT][squareSize];
+
+ appData.font = InsertPxlSize(appData.font, coordFontPxlSize);
+ appData.clockFont = InsertPxlSize(appData.clockFont, clockFontPxlSize);
+ appData.coordFont = InsertPxlSize(appData.coordFont, coordFontPxlSize);
+ appData.icsFont = InsertPxlSize(appData.icsFont, coordFontPxlSize);
+ appData.tagsFont = InsertPxlSize(appData.tagsFont, coordFontPxlSize);
+ appData.commentFont = InsertPxlSize(appData.commentFont, coordFontPxlSize);
+ appData.historyFont = InsertPxlSize(appData.historyFont, coordFontPxlSize);
+ appData.gameListFont = InsertPxlSize(appData.gameListFont, coordFontPxlSize);
+
#ifdef TODO_GTK
XrmValue vTo;
XrmDatabase xdb;
case ArgTwo:
case ArgNone:
case ArgCommSettings:
+ default:
break;
}
return p;
}
return TRUE;
}
+
+GtkosxApplication *theApp;
#endif
int
main (int argc, char **argv)
{
int i, clockFontPxlSize, coordFontPxlSize, fontPxlSize;
- int boardWidth, boardHeight, w, h;
+ int boardWidth, w, h; //, boardHeight;
char *p;
int forceMono = False;
debugFP = stderr;
if(argc > 1 && (!strcmp(argv[1], "-v" ) || !strcmp(argv[1], "--version" ))) {
- printf("%s version %s\n", PACKAGE_NAME, PACKAGE_VERSION);
+ printf("%s version %s\n\n configure options: %s\n", PACKAGE_NAME, PACKAGE_VERSION, CONFIGURE_OPTIONS);
exit(0);
}
gtk_init (&argc, &argv);
#ifdef __APPLE__
{ // prepare to catch OX OpenFile signal, which will tell us the clicked file
- GtkosxApplication *theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
- dataDir = gtkosx_application_get_bundle_path();
+ char *path = gtkosx_application_get_bundle_path();
+ theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
+ strncpy(dataDir, path, MSG_SIZ);
+ snprintf(masterSettings, MSG_SIZ, "%s/Contents/Resources/etc/xboard.conf", path);
+ suppress = (argc == 1 || argc > 1 && argv[1][00] != '-'); // OSX sends signal even if name was already argv[1]!
g_signal_connect(theApp, "NSApplicationOpenFile", G_CALLBACK(StartNewXBoard), NULL);
// we must call application ready before we can get the signal,
// and supply a (dummy) menu bar before that, to avoid problems with dual apples in it
gtkosx_application_set_menu_bar(theApp, GTK_MENU_SHELL(gtk_menu_bar_new()));
gtkosx_application_ready(theApp);
- suppress = (argc == 1 || argc > 1 && argv[1][00] != '-'); // OSX sends signal even if name was already argv[1]!
if(argc == 1) { // called without args: OSX open-file signal might follow
static char *fakeArgv[3] = {NULL, clickedFile, NULL};
usleep(10000); // wait 10 msec (and hope this is long enough).
}
#endif
+ if(argc > 1 && !strcmp(argv[1], "--show-config")) { // [HGM] install: called to print config info
+ typedef struct {char *name, *value; } Config;
+ static Config configList[] = {
+ { "Datadir", DATADIR },
+ { "Sysconfdir", SYSCONFDIR },
+ { NULL }
+ };
+ int i;
+
+ for(i=0; configList[i].name; i++) {
+ if(argc > 2 && strcmp(argv[2], configList[i].name)) continue;
+ if(argc > 2) printf("%s", configList[i].value);
+ else printf("%-12s: %s\n", configList[i].name, configList[i].value);
+ }
+ exit(0);
+ }
+
/* set up keyboard accelerators group */
GtkAccelerators = gtk_accel_group_new();
{ // [HGM] initstring: kludge to fix bad bug. expand '\n' characters in init string and computer string.
static char buf[MSG_SIZ];
+ snprintf(buf, MSG_SIZ, appData.sysOpen, DATADIR);
+ ASSIGN(appData.sysOpen, buf); // expand %s in -openCommand to DATADIR (usefull for OS X configuring)
EscapeExpand(buf, appData.firstInitString);
appData.firstInitString = strdup(buf);
EscapeExpand(buf, appData.secondInitString);
programName, appData.boardSize);
exit(2);
}
+ if(BOARD_WIDTH > 8)
+ squareSize = (squareSize*8 + BOARD_WIDTH/2)/BOARD_WIDTH; // scale height
if (i < 7) {
/* Find some defaults; use the nearest known size */
SizeDefaults *szd, *nearest;
} else {
SizeDefaults *szd = sizeDefaults;
if (*appData.boardSize == NULLCHAR) {
- GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(mainwindow));
+ GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(mainwindow)); // TODO: this does not work, as no mainwindow yet
guint screenwidth = gdk_screen_get_width(screen);
guint screenheight = gdk_screen_get_height(screen);
- while (screenwidth < szd->minScreenSize ||
- screenheight < szd->minScreenSize) {
+ while (screenwidth < (szd->minScreenSize*BOARD_WIDTH + 4)/8 ||
+ screenheight < (szd->minScreenSize*BOARD_HEIGHT + 4)/8) {
szd++;
}
if (szd->name == NULL) szd--;
/* [HR] height treated separately (hacked) */
boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap);
- boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap);
+// boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap);
/*
* Determine what fonts to use.
*/
-#ifdef TODO_GTK
- InitializeFonts(clockFontPxlSize, coordFontPxlSize, fontPxlSize);
-#endif
+ InitializeFonts((2*clockFontPxlSize+1)/3, coordFontPxlSize, fontPxlSize);
/*
* Detect if there are not enough colors available and adapt.
*/
WhiteIcon = gdk_pixbuf_new_from_file(SVGDIR "/icon_white.svg", NULL);
BlackIcon = gdk_pixbuf_new_from_file(SVGDIR "/icon_black.svg", NULL);
- mainwindowIcon = WhiteIcon;
- gtk_window_set_icon(GTK_WINDOW(shellWidget), mainwindowIcon);
+ SetClockIcon(0); // sets white icon
/*
EngineOutputPopUp();
}
+ if( wpConsole.visible && appData.icsActive ) {
+ ChatProc();
+ BoardToTop();
+ }
+
+ gameInfo.boardWidth = 0; // [HGM] pieces: kludge to ensure InitPosition() calls InitDrawingSizes()
+ InitPosition(TRUE);
+
InitBackEnd2();
if (errorExitStatus == -1) {
}
}
- gameInfo.boardWidth = 0; // [HGM] pieces: kludge to ensure InitPosition() calls InitDrawingSizes()
- InitPosition(TRUE);
UpdateLogos(TRUE);
// XtSetKeyboardFocus(shellWidget, formWidget);
#ifdef TODO_GTK
return 0;
}
+void
+DoEvents ()
+{
+ while(gtk_events_pending()) gtk_main_iteration();
+}
+
RETSIGTYPE
TermSizeSigHandler (int sig)
{
#define Abs(n) ((n)<0 ? -(n) : (n))
+char *
+InsertPxlSize (char *pattern, int targetPxlSize)
+{
+ char buf[MSG_SIZ];
+ snprintf(buf, MSG_SIZ, pattern, targetPxlSize); // pattern is something like "Sans Bold %d"
+ return strdup(buf);
+}
+
#ifdef ENABLE_NLS
+#ifdef TODO_GTK
char *
InsertPxlSize (char *pattern, int targetPxlSize)
{
return base_fnt_lst;
}
+#endif
#ifdef TODO_GTK
XFontSet
* The return value should be freed with XtFree when no
* longer needed.
*/
+#ifdef TODO_GTK
char *
FindFont (char *pattern, int targetPxlSize)
{
char **fonts, *p, *best, *scalable, *scalableTail;
int i, j, nfonts, minerr, err, pxlSize;
-#ifdef TODO_GTK
fonts = XListFonts(xDisplay, pattern, 999999, &nfonts);
if (nfonts < 1) {
fprintf(stderr, _("%s: no fonts match pattern %s\n"),
pattern, targetPxlSize, p);
}
XFreeFontNames(fonts);
-#endif
return p;
}
#endif
+#endif
void
EnableNamedMenuItem (char *menuRef, int state)
{
MenuItem *item = MenuNameToItem(menuRef);
- if(item) gtk_widget_set_sensitive(item->handle, state);
+ if(item && item->handle) gtk_widget_set_sensitive(item->handle, state);
}
void
int sqx, sqy, w, h, hc, lg = lineGap;
gtk_widget_get_allocation(optList[W_WHITE].handle, &a);
hc = a.height; // clock height can depend on single / double line clock text!
- if(clockKludge == a.height) return; // wait for clock to get final size at startup
- if(clockKludge) { // clock height OK now; calculate desired initial board height
- clockKludge = 0;
- wp->height = BOARD_HEIGHT * (squareSize + lineGap) + lineGap + marginH + hc;
- }
+ if(clockKludge && hc != clockKludge) wp->height += hc - clockKludge, clockKludge = 0;
+ wpMain.height = BOARD_HEIGHT * (squareSize + lineGap) + lineGap + marginH + hc;
if(wp->width == wpMain.width && wp->height == wpMain.height) return; // not sized
sqx = (wp->width - lg - marginW) / BOARD_WIDTH - lg;
sqy = (wp->height - lg - marginH - hc) / BOARD_HEIGHT - lg;
if(sqy < sqx) sqx = sqy;
+ if(sqx < 20) return;
if(appData.overrideLineGap < 0) { // do second iteration with adjusted lineGap
lg = lineGap = sqx < 37 ? 1 : sqx < 59 ? 2 : sqx < 116 ? 3 : 4;
sqx = (wp->width - lg - marginW) / BOARD_WIDTH - lg;
if(sqy < sqx) sqx = sqy;
}
if(sqx != squareSize) {
-//printf("new sq size %d (%dx%d)\n", sqx, wp->width, wp->height);
squareSize = sqx; // adopt new square size
CreatePNGPieces(); // make newly scaled pieces
InitDrawingSizes(0, 0); // creates grid etc.
if(shellUp[HistoryDlg]) CoDrag(shells[HistoryDlg], &wpMoveHistory);
if(shellUp[EvalGraphDlg]) CoDrag(shells[EvalGraphDlg], &wpEvalGraph);
if(shellUp[GameListDlg]) CoDrag(shells[GameListDlg], &wpGameList);
+ if(shellUp[ChatDlg]) CoDrag(shells[ChatDlg], &wpConsole);
}
wpMain = wpNew;
DrawPosition(True, NULL);
buf[0]=eventkey->keyval;
buf[1]='\0';
if (eventkey->keyval > 32 && eventkey->keyval < 256)
- BoxAutoPopUp (buf);
+ ConsoleAutoPopUp (buf);
}
#ifdef TODO_GTK
gtk_widget_modify_bg(gtk_widget_get_parent(opt->handle), GTK_STATE_NORMAL, &col);
if (appData.clockMode) {
- markup = g_markup_printf_escaped("<span size=\"xx-large\" weight=\"heavy\" background=\"%s\" foreground=\"%s\">%s:%s%s</span>",
+ markup = g_markup_printf_escaped("<span font=\"%s\" background=\"%s\" foreground=\"%s\">%s:%s%s</span>", appData.clockFont,
bgcolor, fgcolor, color, appData.logoSize && !partnerUp ? "\n" : " ", TimeString(timer));
+// markup = g_markup_printf_escaped("<span size=\"xx-large\" weight=\"heavy\" background=\"%s\" foreground=\"%s\">%s:%s%s</span>",
+// bgcolor, fgcolor, color, appData.logoSize && !partnerUp ? "\n" : " ", TimeString(timer));
} else {
- markup = g_markup_printf_escaped("<span size=\"xx-large\" weight=\"heavy\" background=\"%s\" foreground=\"%s\">%s </span>",
+ markup = g_markup_printf_escaped("<span font=\"%s\" background=\"%s\" foreground=\"%s\">%s </span>", appData.clockFont,
bgcolor, fgcolor, color);
+// markup = g_markup_printf_escaped("<span size=\"xx-large\" weight=\"heavy\" background=\"%s\" foreground=\"%s\">%s </span>",
+// bgcolor, fgcolor, color);
}
gtk_label_set_markup(GTK_LABEL(w), markup);
g_free(markup);
count = read(is->fd, is->unused,
INPUT_SOURCE_BUF_SIZE - (is->unused - is->buf));
if (count <= 0) {
+ if(count == 0 && is->kind == CPReal && shells[ChatDlg]) { // [HGM] absence of terminal is no error if ICS Console present
+ RemoveInputSource(is); // cease reading stdin
+ stdoutClosed = TRUE; // suppress future output
+ return True;
+ }
(is->func)(is, is->closure, is->buf, count, count ? errno : 0);
return True;
}
#define ICS_LOGON ".icsrc"
#define MANPAGE "xboard.6"
-#if ENABLE_NLS
-#define CLOCK_FONT_NAME \
- "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*," \
- "-misc-fixed-bold-r-normal--*-*-*-*-*-*-*-*," \
- "-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
-#define COORD_FONT_NAME \
- "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*," \
- "-misc-fixed-bold-r-normal--*-*-*-*-*-*-*-*," \
- "-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
-#define DEFAULT_FONT_NAME \
- "-*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*," \
- "-misc-fixed-medium-r-normal--*-*-*-*-*-*-*-*," \
- "-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
-#else
-#define CLOCK_FONT_NAME "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*"
-#define COORD_FONT_NAME "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*"
-#define DEFAULT_FONT_NAME "-*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*"
-#endif
+#define CLOCK_FONT_NAME "Sans Bold %d"
+#define COORD_FONT_NAME "Sans Bold %d"
+#define DEFAULT_FONT_NAME "Sans Normal %d"
+#define CONSOLE_FONT_NAME "Monospace Normal %d"
+#define HISTORY_FONT_NAME "Sans Normal %d"
+#define COMMENT_FONT_NAME "Sans Normal %d"
+#define TAGS_FONT_NAME "Sans Normal %d"
+#define GAMELIST_FONT_NAME "Sans Normal %d"
#define COLOR_SHOUT "green"
#define COLOR_SSHOUT "green,black,1"
#define COLOR_CHANNEL1 "cyan"
{ "Moderate", 58, 3, 34, 12, 14, 1, 0, 768 }, \
{ "Average", 54, 2, 30, 11, 12, 1, 0, 600 }, \
{ "Middling", 49, 2, 24, 10, 12, 1, 0, 600 }, \
- { "Mediocre", 45, 2, 20, 10, 12, 1, 0, 600 }, \
- { "Small", 40, 2, 20, 10, 12, 1, 0, 480 }, \
- { "Slim", 37, 2, 20, 10, 12, 1, 0, 480 }, \
- { "Petite", 33, 1, 15, 9, 11, 1, 0, 480 }, \
- { "Dinky", 29, 1, 15, 9, 11, 1, 0, 480 }, \
+ { "Mediocre", 45, 2, 20, 10, 12, 1, 4, 600 }, \
+ { "Small", 40, 2, 20, 10, 12, 1, 3, 480 }, \
+ { "Slim", 37, 2, 20, 10, 12, 1, 3, 480 }, \
+ { "Petite", 33, 1, 15, 9, 11, 1, 2, 480 }, \
+ { "Dinky", 29, 1, 15, 9, 11, 1, 1, 480 }, \
{ "Teeny", 25, 1, 12, 8, 11, 1, 1, 480 }, \
{ "Tiny", 21, 1, 12, 8, 11, 1, 1, 0 }, \
{ NULL, 0, 0, 0, 0, 0, 0, 0, 0 } }
#define BORDER_X_OFFSET 3
#define BORDER_Y_OFFSET 27
#define FIRST_CHESS_PROGRAM "fairymax"
-#define SECOND_CHESS_PROGRAM "fairymax"
+#define SECOND_CHESS_PROGRAM ""
#define FIRST_DIRECTORY "."
#define SECOND_DIRECTORY "."
#define SOUND_BELL ""
{
MenuItem *item = MenuNameToItem(menuRef);
- if(item) {
+ if(item && item->handle) {
((GtkCheckMenuItem *) (item->handle))->active = state;
}
}
gtk_window_set_title(GTK_WINDOW(shells[dlg]), title);
}
+int
+SetWidgetFont (GtkWidget *w, char *s)
+{
+ PangoFontDescription *pfd;
+ if (!s || !*s || *s == '#') return 0; // no spec, empty spec or spec of color: fail
+ pfd = pango_font_description_from_string(*(char**)s);
+ gtk_widget_modify_font(w, pfd);
+ return 1;
+}
+
void
SetListBoxItem (GtkListStore *store, int n, char *msg)
{
ScrollToCursor (Option *opt, int caretPos)
{
static GtkTextIter iter;
- static GtkTextMark *mark;
- if(!mark) mark = gtk_text_mark_new(NULL, 0);
+ GtkTextMark *mark = gtk_text_buffer_get_mark((GtkTextBuffer *) opt->handle, "scrollmark");
gtk_text_buffer_get_iter_at_offset((GtkTextBuffer *) opt->handle, &iter, caretPos);
- gtk_text_buffer_add_mark((GtkTextBuffer *) opt->handle, mark, &iter);
+ gtk_text_buffer_move_mark((GtkTextBuffer *) opt->handle, mark, &iter);
gtk_text_view_scroll_to_mark((GtkTextView *) opt->textValue, mark, 0.0, 0, 0.5, 0.5);
-// gtk_text_view_scroll_to_iter((GtkTextView *) opt->textValue, &iter, 0.0, 0, 0.5, 0.5);
- gtk_text_buffer_delete_mark((GtkTextBuffer *) opt->handle, mark);
}
int
#ifdef TODO_GTK
XtSetKeyboardFocus(shells[dlg], opt->handle);
#endif
+ if(dlg) gtk_window_present(GTK_WINDOW(shells[dlg]));
gtk_widget_grab_focus(opt->handle);
}
if(!strcmp(msg, "Quit ")) continue; // Quit item will appear automatically in App menu
if(!strcmp(msg, "About XBoard")) msg = "About"; // 'XBoard' will be appended automatically when moved to App menu 1st item
#endif
+ if(!strcmp(msg, "ICS Input Box")) { mb[i].handle = NULL; continue; } // suppress ICS Input Box in GTK
if(strcmp(msg, "----")) { //
if(!(opt->min & NO_GETTEXT)) msg = _(msg);
if(mb[i].handle) {
if(accelerator_mods & GDK_CONTROL_MASK) { // in OSX use Meta where Linux uses Ctrl
accelerator_mods &= ~GDK_CONTROL_MASK; // clear Ctrl flag
accelerator_mods |= GDK_META_MASK; // set Meta flag
- }
+ }
#endif
gtk_widget_add_accelerator (GTK_WIDGET(entry), "activate",GtkAccelerators,
accelerator_key, accelerator_mods, GTK_ACCEL_VISIBLE);
shiftState = event->state & GDK_SHIFT_MASK;
controlState = event->state & GDK_CONTROL_MASK;
switch(event->keyval) {
+ case 'n': return (controlState && IcsHist(14, opt, dlg));
+ case 'o': return (controlState && IcsHist(15, opt, dlg));
+ case GDK_Tab: IcsHist(10, opt, dlg); break;
+ case GDK_Up: IcsHist(1, opt, dlg); break;
+ case GDK_Down: IcsHist(-1, opt, dlg); break;
case GDK_Return:
if(GenericReadout(dialogOptions[dlg], -1)) PopDown(dlg);
break;
case GDK_Escape:
- PopDown(dlg);
+ if(!IcsHist(33, opt, dlg)) PopDown(dlg);
break;
default:
return FALSE;
gtk_text_buffer_apply_tag_by_name(opt->handle, highlight ? "highlight" : "normal", &start, &end);
}
+static char **names;
+static int curFG, curBG, curAttr;
+static GdkColor backgroundColor;
+
+void
+SetTextColor(char **cnames, int fg, int bg, int attr)
+{
+ if(fg < 0) fg = 0; if(bg < 0) bg = 7;
+ names = cnames; curFG = fg; curBG = bg, curAttr = attr;
+ if(attr == -2) { // background color of ICS console.
+ gdk_color_parse(cnames[bg&7], &backgroundColor);
+ curAttr = 0;
+ }
+}
+
+void
+AppendColorized (Option *opt, char *s, int count)
+{
+ static GtkTextIter end;
+ static GtkTextTag *fgTags[8], *bgTags[8], *font, *bold, *normal, *attr = NULL;
+
+ if(!font) {
+ font = gtk_text_buffer_create_tag(opt->handle, NULL, "font", appData.icsFont, NULL);
+ gtk_widget_modify_base(GTK_WIDGET(opt->textValue), GTK_STATE_NORMAL, &backgroundColor);
+ }
+
+ gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(opt->handle), &end);
+
+ if(names) {
+ if(curAttr == 1) {
+ if(!bold) bold = gtk_text_buffer_create_tag(opt->handle, NULL, "weight", PANGO_WEIGHT_BOLD, NULL);
+ attr = bold;
+ } else {
+ if(!normal) normal = gtk_text_buffer_create_tag(opt->handle, NULL, "weight", PANGO_WEIGHT_NORMAL, NULL);
+ attr = normal;
+ }
+ if(!fgTags[curFG]) {
+ fgTags[curFG] = gtk_text_buffer_create_tag(opt->handle, NULL, "foreground", names[curFG], NULL);
+ }
+ if(!bgTags[curBG]) {
+ bgTags[curBG] = gtk_text_buffer_create_tag(opt->handle, NULL, "background", names[curBG], NULL);
+ }
+ gtk_text_buffer_insert_with_tags(opt->handle, &end, s, count, fgTags[curFG], bgTags[curBG], font, attr, NULL);
+ } else
+ gtk_text_buffer_insert_with_tags(opt->handle, &end, s, count, font, NULL);
+
+}
+
+void
+Show (Option *opt, int hide)
+{
+ if(hide) gtk_widget_hide(opt->handle);
+ else gtk_widget_show(opt->handle);
+}
+
int
ShiftKeys ()
{ // bassic primitive for determining if modifier keys are pressed
((ButtonCallback*) memo->target)(button == 1 ? memo->value : -memo->value);
return TRUE;
}
+ if(memo->value == 250 // kludge to recognize ICS Console and Chat panes
+ && gtk_text_buffer_get_selection_bounds(memo->handle, NULL, NULL) ) {
+printf("*** selected\n");
+ gtk_text_buffer_get_selection_bounds(memo->handle, &start, &end); // only return selected text
+ index = -1; // kludge to indicate omething was selected
+ } else {
// GTK_TODO: is this really the most efficient way to get the character at the mouse cursor???
- gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(widget), GTK_TEXT_WINDOW_WIDGET, w, h, &x, &y);
- gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(widget), &start, x, y);
- gtk_text_buffer_place_cursor(memo->handle, &start);
- /* get cursor position into index */
- g_object_get(memo->handle, "cursor-position", &index, NULL);
+ gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(widget), GTK_TEXT_WINDOW_WIDGET, w, h, &x, &y);
+ gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(widget), &start, x, y);
+ gtk_text_buffer_place_cursor(memo->handle, &start);
+ /* get cursor position into index */
+ g_object_get(memo->handle, "cursor-position", &index, NULL);
+ /* take complete contents */
+ gtk_text_buffer_get_start_iter (memo->handle, &start);
+ gtk_text_buffer_get_end_iter (memo->handle, &end);
+ }
/* get text from textbuffer */
- gtk_text_buffer_get_start_iter (memo->handle, &start);
- gtk_text_buffer_get_end_iter (memo->handle, &end);
val = gtk_text_buffer_get_text (memo->handle, &start, &end, FALSE);
break;
default:
g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (TypeInProc), (gpointer) (dlg<<16 | (opt - dialogOptions[dlg])));
break;
case 5: // game list
+ SetWidgetFont(opt->handle, (char*) &appData.gameListFont);
g_signal_connect(opt->handle, "button-press-event", G_CALLBACK (GameListEvent), (gpointer) 0 );
case 4: // game-list filter
g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (GameListEvent), (gpointer) (intptr_t) nr );
GtkWidget *shells[NrOfDialogs];
DialogClass parents[NrOfDialogs];
WindowPlacement *wp[NrOfDialogs] = { // Beware! Order must correspond to DialogClass enum
- NULL, &wpComment, &wpTags, NULL, NULL, NULL, &wpDualBoard, &wpMoveHistory, &wpGameList, &wpEngineOutput, &wpEvalGraph,
+ NULL, &wpComment, &wpTags, &wpTextMenu, NULL, &wpConsole, &wpDualBoard, &wpMoveHistory, &wpGameList, &wpEngineOutput, &wpEvalGraph,
NULL, NULL, NULL, NULL, &wpMain
};
// I guess BrowserDlg will be abandoned, as GTK has a better browser of its own
if(shellUp[BrowserDlg] && dlg != BrowserDlg || dialogError) return True; // prevent closing dialog when it has an open file-browse daughter
#else
- if(browserUp || dialogError && dlg != FatalDlg) return True; // prevent closing dialog when it has an open file-browse or error-popup daughter
+ if(browserUp || dialogError && dlg != FatalDlg || dlg == MasterDlg && shellUp[TransientDlg])
+ return True; // prevent closing dialog when it has an open file-browse, transient or error-popup daughter
#endif
shells[dlg] = w; // make sure we pop down the right one in case of multiple instances
GdkEventExpose *eevent = (GdkEventExpose *) event;
GdkEventButton *bevent = (GdkEventButton *) event;
GdkEventMotion *mevent = (GdkEventMotion *) event;
+ GdkEventScroll *sevent = (GdkEventScroll *) event;
GtkAllocation a;
cairo_t *cr;
cairo_destroy(cr);
default:
return;
+ case GDK_SCROLL:
+ if(sevent->direction == GDK_SCROLL_UP) button = 4;
+ if(sevent->direction == GDK_SCROLL_DOWN) button = 5;
+ break;
case GDK_MOTION_NOTIFY:
f = 0;
w = mevent->x; h = mevent->y;
int i, j, arraysize, left, top, height=999, width=1, boxStart=0, breakType = 0, r;
char def[MSG_SIZ], *msg, engineDlg = (currentCps != NULL && dlgNr != BrowserDlg);
+ gboolean expandable = FALSE;
if(dlgNr < PromoDlg && shellUp[dlgNr]) return 0; // already up
if(wp[dlgNr]) gtk_window_move(GTK_WINDOW(shells[dlgNr]), wp[dlgNr]->x, wp[dlgNr]->y);
return 0;
}
+ if(dlgNr == TransientDlg && parent == BoardWindow && shellUp[MasterDlg]) parent = MasterDlg; // MasterDlg can always take role of main window
dialogOptions[dlgNr] = option; // make available to callback
// post currentOption globally, so Spin and Combo callbacks can already use it
top = -1;
for (i=0;option[i].type != EndMark;i++) {
- if(option[i].type == -1) continue;
+ if(option[i].type == Skip) continue;
top++;
//printf("option =%2d, top =%2d\n", i, top);
- if (top >= height) {
- gtk_table_resize(GTK_TABLE(table), height, r);
+ if (top >= height || breakType) {
+ gtk_table_resize(GTK_TABLE(table), top - (breakType != 0), r);
if(!pane) { // multi-column: put tables in intermediate hbox
- if(breakType || engineDlg)
+ if(breakType & SAME_ROW || engineDlg)
pane = gtk_hbox_new (FALSE, 0);
else
pane = gtk_vbox_new (FALSE, 0);
gtk_box_set_spacing(GTK_BOX(pane), 5 + 5*breakType);
gtk_box_pack_start (GTK_BOX (/*GTK_DIALOG (dialog)->vbox*/box), pane, TRUE, TRUE, 0);
}
- gtk_box_pack_start (GTK_BOX (pane), table, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (pane), table, expandable, TRUE, 0);
table = gtk_table_new(arraysize - i, r=TableWidth(option + i), FALSE);
- top = 0;
+ top = breakType = 0; expandable = FALSE;
}
if(!SameRow(&option[i])) {
if(SameRow(&option[i+1])) {
if(option[i].type == FileName || option[i].type == PathName) w -= 55;
if (option[i].type==TextBox && option[i].value > 80){
+ GtkTextIter iter;
+ expandable = TRUE;
textview = gtk_text_view_new();
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview), option[i].min & T_WRAP ? GTK_WRAP_WORD : GTK_WRAP_NONE);
#ifdef TODO_GTK
/* no label so let textview occupy all columns */
Pack(hbox, table, sw, left, left+r, top, GTK_EXPAND);
}
+ SetWidgetFont(textview, option[i].textValue);
if ( *(char**)option[i].target != NULL )
gtk_text_buffer_set_text (textbuffer, *(char**)option[i].target, -1);
else
gtk_text_buffer_set_text (textbuffer, "", -1);
option[i].handle = (void*)textbuffer;
option[i].textValue = (char*)textview;
+ gtk_text_buffer_get_iter_at_offset(textbuffer, &iter, -1);
+ gtk_text_buffer_create_mark(textbuffer, "scrollmark", &iter, FALSE); // permanent mark
if(option[i].choice) { // textviews can request a handler for mouse events in the choice field
g_signal_connect(textview, "button-press-event", G_CALLBACK (MemoEvent), (gpointer) &option[i] );
g_signal_connect(textview, "button-release-event", G_CALLBACK (MemoEvent), (gpointer) &option[i] );
option[i].handle = (void *) (label = gtk_label_new(option[i].name));
/* Left Justify */
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ SetWidgetFont(label, option[i].textValue);
if(option[i].min & BORDER) {
GtkWidget *frame = gtk_frame_new(NULL);
gtk_container_add(GTK_CONTAINER(frame), label);
}
/* set button color on new variant dialog */
+ if(!SetWidgetFont(gtk_bin_get_child(GTK_BIN(button)), option[i].textValue))
if(option[i].textValue) {
gdk_color_parse( option[i].textValue, &color );
gtk_widget_modify_bg ( GTK_WIDGET(button), GTK_STATE_NORMAL, &color );
/* never has label, so let listbox occupy all columns */
Pack(hbox, table, sw, left, left+r, top, GTK_EXPAND);
+ expandable = TRUE;
}
break;
case Graph:
g_signal_connect (graph, "button-press-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]);
g_signal_connect (graph, "button-release-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]);
g_signal_connect (graph, "motion-notify-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]);
+ g_signal_connect (graph, "scroll-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]);
if(option[i].min & FIX_H) { // logo
GtkWidget *frame = gtk_aspect_frame_new(NULL, 0.5, 0.5, option[i].max/(float)option[i].value, FALSE);
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE);
graph = frame;
}
Pack(hbox, table, graph, left, left+r, top, GTK_EXPAND);
+ expandable = TRUE;
#ifdef TODO_GTK
if(option[i].min & SAME_ROW) last = forelast, forelast = lastrow;
case DropDown:
top--;
msg = _(option[i].name); // write name on the menu button
+#ifndef __APPLE__
+ if(tinyLayout) { strcpy(def, msg); def[tinyLayout] = NULLCHAR; msg = def; } // clip menu text to keep menu bar small
+#endif
// XtSetArg(args[j], XtNmenuName, XtNewString(option[i].name)); j++;
// XtSetArg(args[j], XtNlabel, msg); j++;
option[i].handle = (void*)
gtkosx_application_set_menu_bar(theApp, GTK_MENU_SHELL(menuBar));
gtkosx_application_insert_app_menu_item(theApp, GTK_MENU_ITEM(helpMenu[8].handle), 0); // hack
gtkosx_application_sync_menubar(theApp);
- }
+ }
#endif
break;
case BoxEnd:
if(option[i].target) ((ButtonCallback*)option[i].target)(boxStart); // callback that can make sizing decisions
break;
case Break:
- breakType = option[i].min & SAME_ROW;
- top = height; // force next option to start in a new table
+ breakType = option[i].min & SAME_ROW | BORDER; // kludge to flag we must break
+ option[i].handle = table;
break;
case PopUp:
}
}
+ gtk_table_resize(GTK_TABLE(table), top+1, r);
if(pane)
- gtk_box_pack_start (GTK_BOX (pane), table, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (pane), table, expandable, TRUE, 0);
else
- gtk_table_resize(GTK_TABLE(table), top+1, r),
gtk_box_pack_start (GTK_BOX (/*GTK_DIALOG (dialog)->vbox*/box), table, TRUE, TRUE, 0);
option[i].handle = (void *) table; // remember last table in EndMark handle (for hiding Engine-Output pane).
void
SendText (int n)
{
-#ifdef TODO_GTK
char *p = (char*) textOptions[n].choice;
+#ifdef TODO_GTK
if(strstr(p, "$name")) {
XtGetSelectionValue(menuBarWidget,
XA_PRIMARY, XA_STRING,
(XtPointer) (intptr_t) n, /* client_data passed to PastePositionCB */
CurrentTime
);
- } else SendString(p);
+ } else
#endif
+ SendString(p);
}
void
}
void
-HardSetFocus (Option *opt)
+HardSetFocus (Option *opt, DialogClass dlg)
{
- FocusOnWidget(opt, 0); // second arg not used in GDK
+ FocusOnWidget(opt, dlg);
}
static char *selected_fen_position=NULL;
if(gameMode == EditPosition) EditPositionDone(TRUE);
if (selected_fen_position) free(selected_fen_position);
- selected_fen_position = (char *)PositionToFEN(currentMove, NULL);
+ selected_fen_position = (char *)PositionToFEN(currentMove, NULL, 1);
if (!selected_fen_position) return;
CopySomething(selected_fen_position);
}
InfoProc ()
{
char buf[MSG_SIZ];
+#ifdef __APPLE__
+ snprintf(buf, MSG_SIZ, "%s ./info.command", appData.sysOpen);
+#else
snprintf(buf, sizeof(buf), "xterm -e info --directory %s --directory . -f %s &",
INFODIR, INFOFILE);
+#endif
system(buf);
}
}
void
+EditEngineProc ()
+{
+ EditTagsPopUp(firstChessProgramNames, &firstChessProgramNames);
+}
+
+void
NothingProc ()
{
return;
ScheduleDelayedEvent(CreateBookEvent, 50);
}
+void
+SaveSelectedProc ()
+{
+ FileNamePopUp(_("Save game file name?"),
+ "",
+ ".pgn",
+ SaveSelected, "a");
+}
+
/*
* Menu definition tables
*/
MenuItem fileMenu[] = {
{N_("New Game"), "<Ctrl>n", "NewGame", ResetGameEvent},
- {N_("New Shuffle Game ..."), NULL, "NewShuffleGame", ShuffleMenuProc},
- {N_("New Variant ..."), "<Alt><Shift>v", "NewVariant", NewVariantProc},// [HGM] variant: not functional yet
+ {N_("New Shuffle Game..."), NULL, "NewShuffleGame", ShuffleMenuProc},
+ {N_("New Variant..."), "<Alt><Shift>v", "NewVariant", NewVariantProc},// [HGM] variant: not functional yet
{"----", NULL, NULL, NothingProc},
{N_("Load Game"), "<Ctrl>o", "LoadGame", LoadGameProc, CHECK},
{N_("Load Position"), "<Ctrl><Shift>o", "LoadPosition", LoadPositionProc},
{"----", NULL, NULL, NothingProc},
{N_("Save Game"), "<Ctrl>s", "SaveGame", SaveGameProc},
{N_("Save Position"), "<Ctrl><Shift>s", "SavePosition", SavePositionProc},
+ {N_("Save Selected Games"), NULL, "SaveSelected", SaveSelectedProc},
{N_("Save Games as Book"), NULL, "CreateBook", CreateBookDelayed},
{"----", NULL, NULL, NothingProc},
{N_("Mail Move"), NULL, "MailMove", MailMoveEvent},
{N_("Tags"), NULL, "Tags", EditTagsProc, CHECK},
{N_("Comments"), NULL, "Comments", EditCommentProc, CHECK},
{N_("ICS Input Box"), NULL, "ICSInputBox", IcsInputBoxProc, CHECK},
- {N_("Open Chat Window"), NULL, "OpenChatWindow", ChatProc, CHECK},
+ {N_("ICS/Chat Console"), NULL, "OpenChatWindow", ChatProc, CHECK},
{"----", NULL, NULL, NothingProc},
{N_("Board..."), NULL, "Board", BoardOptionsProc},
{N_("Game List Tags..."), NULL, "GameListTags", GameListOptionsProc},
};
MenuItem engineMenu[100] = {
- {N_("Load New 1st Engine ..."), NULL, "LoadNew1stEngine", LoadEngine1Proc},
- {N_("Load New 2nd Engine ..."), NULL, "LoadNew2ndEngine", LoadEngine2Proc},
+ {N_("Edit Engine List..."), NULL, "EditEngList", EditEngineProc},
+ {"----", NULL, NULL, NothingProc},
+ {N_("Load New 1st Engine..."), NULL, "LoadNew1stEngine", LoadEngine1Proc},
+ {N_("Load New 2nd Engine..."), NULL, "LoadNew2ndEngine", LoadEngine2Proc},
{"----", NULL, NULL, NothingProc},
- {N_("Engine #1 Settings ..."), NULL, "Engine#1Settings", FirstSettingsProc},
- {N_("Engine #2 Settings ..."), NULL, "Engine#2Settings", SecondSettingsProc},
+ {N_("Engine #1 Settings..."), NULL, "Engine#1Settings", FirstSettingsProc},
+ {N_("Engine #2 Settings..."), NULL, "Engine#2Settings", SecondSettingsProc},
{"----", NULL, NULL, NothingProc},
{N_("Hint"), NULL, "Hint", HintEvent},
{N_("Book"), NULL, "Book", BookEvent},
MenuItem optionsMenu[] = {
#ifdef OPTIONSDIALOG
- {N_("General ..."), NULL, "General", OptionsProc},
+ {N_("General..."), NULL, "General", OptionsProc},
#endif
- {N_("Time Control ..."), "<Alt><Shift>t", "TimeControl", TimeControlProc},
- {N_("Common Engine ..."), "<Alt><Shift>u", "CommonEngine", UciMenuProc},
- {N_("Adjudications ..."), "<Alt><Shift>j", "Adjudications", EngineMenuProc},
- {N_("ICS ..."), NULL, "ICS", IcsOptionsProc},
- {N_("Match ..."), NULL, "Match", MatchOptionsProc},
- {N_("Load Game ..."), NULL, "LoadGame", LoadOptionsProc},
- {N_("Save Game ..."), NULL, "SaveGame", SaveOptionsProc},
- {N_("Game List ..."), NULL, "GameList", GameListOptionsProc},
- {N_("Sounds ..."), NULL, "Sounds", SoundOptionsProc},
+ {N_("Time Control..."), "<Alt><Shift>t", "TimeControl", TimeControlProc},
+ {N_("Common Engine..."), "<Alt><Shift>u", "CommonEngine", UciMenuProc},
+ {N_("Adjudications..."), "<Alt><Shift>j", "Adjudications", EngineMenuProc},
+ {N_("ICS..."), NULL, "ICS", IcsOptionsProc},
+ {N_("Tournament..."), NULL, "Match", MatchOptionsProc},
+ {N_("Load Game..."), NULL, "LoadGame", LoadOptionsProc},
+ {N_("Save Game..."), NULL, "SaveGame", SaveOptionsProc},
+ {N_("Game List..."), NULL, "GameList", GameListOptionsProc},
+ {N_("Sounds..."), NULL, "Sounds", SoundOptionsProc},
{"----", NULL, NULL, NothingProc},
#ifndef OPTIONSDIALOG
{N_("Always Queen"), "<Ctrl><Shift>q", "AlwaysQueen", AlwaysQueenProc},
{N_("Engine"), "Engine", engineMenu},
{N_("Options"), "Options", optionsMenu},
{N_("Help"), "Help", helpMenu},
- {NULL, NULL, NULL}
+ {NULL, NULL, NULL},
+ { "", "None", noMenu}
};
MenuItem *
if (saveSettingsOnExit) {
MarkMenuItem("Options.SaveSettingsonExit", True);
}
+ EnableNamedMenuItem("File.SaveSelected", False);
}
void ShowGameListProc P((void)); // in ngamelist.c
void HistoryShowProc P((void)); // in nhistory.c
+// only here because it is the only header shared by xoptions.c and usystem.c
+void SetTextColor P((char **cnames, int fg, int bg, int attr));
+void ConsoleWrite P((char *message, int count));
// must be moved to xengineoutput.h
(int) piece2 < (int) EmptySquare);
}
#else
-#define SameColor(piece1, piece2) (piece1 < EmptySquare && piece2 < EmptySquare && (piece1 < BlackPawn) == (piece2 < BlackPawn))
+#define SameColor(piece1, piece2) (piece1 < EmptySquare && piece2 < EmptySquare && (piece1 < BlackPawn) == (piece2 < BlackPawn) || piece1 == DarkSquare || piece2 == DarkSquare)
#endif
char pieceToChar[] = {
return TRUE;
}
+// [HGM] move generation now based on hierarchy of subroutines for rays and combinations of rays
+
+void
+SlideForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int i, rt, ft = ff;
+ for (i = 1;; i++) {
+ rt = rf + i;
+ if (rt >= BOARD_HEIGHT) break;
+ if (SameColor(board[rf][ff], board[rt][ft])) break;
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ if (board[rt][ft] != EmptySquare) break;
+ }
+}
+
+void
+SlideBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int i, rt, ft = ff;
+ for (i = 1;; i++) {
+ rt = rf - i;
+ if (rt < 0) break;
+ if (SameColor(board[rf][ff], board[rt][ft])) break;
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ if (board[rt][ft] != EmptySquare) break;
+ }
+}
+
+void
+SlideVertical (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ SlideForward(board, flags, rf, ff, callback, closure);
+ SlideBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+SlideSideways (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int i, s, rt = rf, ft;
+ for(s = -1; s <= 1; s+= 2) {
+ for (i = 1;; i++) {
+ ft = ff + i*s;
+ if (ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
+ if (SameColor(board[rf][ff], board[rt][ft])) break;
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ if (board[rt][ft] != EmptySquare) break;
+ }
+ }
+}
+
+void
+SlideDiagForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int i, s, rt, ft;
+ for(s = -1; s <= 1; s+= 2) {
+ for (i = 1;; i++) {
+ rt = rf + i;
+ ft = ff + i * s;
+ if (rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
+ if (SameColor(board[rf][ff], board[rt][ft])) break;
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ if (board[rt][ft] != EmptySquare) break;
+ }
+ }
+}
+
+void
+SlideDiagBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int i, s, rt, ft;
+ for(s = -1; s <= 1; s+= 2) {
+ for (i = 1;; i++) {
+ rt = rf - i;
+ ft = ff + i * s;
+ if (rt < 0 || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
+ if (SameColor(board[rf][ff], board[rt][ft])) break;
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ if (board[rt][ft] != EmptySquare) break;
+ }
+ }
+}
+
+void
+Rook (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ SlideVertical(board, flags, rf, ff, callback, closure);
+ SlideSideways(board, flags, rf, ff, callback, closure);
+}
+
+void
+Bishop (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ SlideDiagForward(board, flags, rf, ff, callback, closure);
+ SlideDiagBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+Sting (Board board, int flags, int rf, int ff, int dy, int dx, MoveCallback callback, VOIDSTAR closure)
+{ // Lion-like move of Horned Falcon and Souring Eagle
+ int ft = ff + dx, rt = rf + dy;
+ if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) return;
+ if (!SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, board[rt][ft] != EmptySquare ? FirstLeg : NormalMove, rf, ff, rt, ft, closure);
+ ft += dx; rt += dy;
+ if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) return;
+ if (!SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int ft = ff, rt = rf + 1;
+ if (rt >= BOARD_HEIGHT) return;
+ if (SameColor(board[rf][ff], board[rt][ft])) return;
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int ft = ff, rt = rf - 1;
+ if (rt < 0) return;
+ if (SameColor(board[rf][ff], board[rt][ft])) return;
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepSideways (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int ft, rt = rf;
+ ft = ff + 1;
+ if (!(rt >= BOARD_HEIGHT || ft >= BOARD_RGHT) && !SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ ft = ff - 1;
+ if (!(rt >= BOARD_HEIGHT || ft < BOARD_LEFT) && !SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepDiagForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int ft, rt = rf + 1;
+ if (rt >= BOARD_HEIGHT) return;
+ ft = ff + 1;
+ if (!(rt >= BOARD_HEIGHT || ft >= BOARD_RGHT) && !SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ ft = ff - 1;
+ if (!(rt >= BOARD_HEIGHT || ft < BOARD_LEFT) && !SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepDiagBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int ft, rt = rf - 1;
+ if(rt < 0) return;
+ ft = ff + 1;
+ if (!(rt < 0 || ft >= BOARD_RGHT) && !SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ ft = ff - 1;
+ if (!(rt < 0 || ft < BOARD_LEFT) && !SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepVertical (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ StepForward(board, flags, rf, ff, callback, closure);
+ StepBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+Ferz (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ StepDiagForward(board, flags, rf, ff, callback, closure);
+ StepDiagBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+Wazir (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ StepVertical(board, flags, rf, ff, callback, closure);
+ StepSideways(board, flags, rf, ff, callback, closure);
+}
+
+void
+Knight (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+ int i, j, s, rt, ft;
+ for (i = -1; i <= 1; i += 2)
+ for (j = -1; j <= 1; j += 2)
+ for (s = 1; s <= 2; s++) {
+ rt = rf + i*s;
+ ft = ff + j*(3-s);
+ if (!(rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT)
+ && ( gameInfo.variant != VariantXiangqi || board[rf+i*(s-1)][ff+j*(2-s)] == EmptySquare)
+ && !SameColor(board[rf][ff], board[rt][ft]))
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ }
+}
/* Call callback once for each pseudo-legal move in the given
position, except castling moves. A move is pseudo-legal if it is
int rf, ff;
int i, j, d, s, fs, rs, rt, ft, m;
int epfile = (signed char)board[EP_STATUS]; // [HGM] gamestate: extract ep status from board
- int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand ? 3 : 1;
+ int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess ? 3 : 1;
for (rf = 0; rf < BOARD_HEIGHT; rf++)
for (ff = BOARD_LEFT; ff < BOARD_RGHT; ff++) {
ChessSquare piece;
- int rookRange;
if(board[rf][ff] == EmptySquare) continue;
if ((flags & F_WHITE_ON_MOVE) != (board[rf][ff] < BlackPawn)) continue; // [HGM] speed: wrong color
- rookRange = 1000;
m = 0; piece = board[rf][ff];
if(PieceToChar(piece) == '~')
piece = (ChessSquare) ( DEMOTED piece );
if(filter != EmptySquare && piece != filter) continue;
- if(gameInfo.variant == VariantShogi)
+ if(IS_SHOGI(gameInfo.variant))
piece = (ChessSquare) ( SHOGI piece );
switch ((int)piece) {
case BlackUnicorn:
case WhiteKnight:
case BlackKnight:
- mounted:
for (i = -1; i <= 1; i += 2)
for (j = -1; j <= 1; j += 2)
for (s = 1; s <= 2; s++) {
/* Gold General (and all its promoted versions) . First do the */
/* diagonal forward steps, then proceed as normal Wazir */
- case SHOGI WhiteWazir:
case SHOGI (PROMOTED WhitePawn):
+ if(gameInfo.variant == VariantShogi) goto WhiteGold;
+ case SHOGI (PROMOTED BlackPawn):
+ if(gameInfo.variant == VariantShogi) goto BlackGold;
+ SlideVertical(board, flags, rf, ff, callback, closure);
+ break;
+
case SHOGI (PROMOTED WhiteKnight):
- case SHOGI (PROMOTED WhiteQueen):
- case SHOGI (PROMOTED WhiteFerz):
- for (s = -1; s <= 1; s += 2) {
- if (rf < BOARD_HEIGHT-1 && ff + s >= BOARD_LEFT && ff + s < BOARD_RGHT &&
- !SameColor(board[rf][ff], board[rf + 1][ff + s])) {
- callback(board, flags, NormalMove,
- rf, ff, rf + 1, ff + s, closure);
- }
- }
- goto finishGold;
+ if(gameInfo.variant == VariantShogi) goto WhiteGold;
+ case SHOGI BlackDrunk:
+ case SHOGI BlackAlfil:
+ Ferz(board, flags, rf, ff, callback, closure);
+ StepSideways(board, flags, rf, ff, callback, closure);
+ StepBackward(board, flags, rf, ff, callback, closure);
+ break;
- case SHOGI BlackWazir:
- case SHOGI (PROMOTED BlackPawn):
case SHOGI (PROMOTED BlackKnight):
+ if(gameInfo.variant == VariantShogi) goto BlackGold;
+ case SHOGI WhiteDrunk:
+ case SHOGI WhiteAlfil:
+ Ferz(board, flags, rf, ff, callback, closure);
+ StepSideways(board, flags, rf, ff, callback, closure);
+ StepForward(board, flags, rf, ff, callback, closure);
+ break;
+
+
+ case SHOGI WhiteStag:
+ case SHOGI BlackStag:
+ if(gameInfo.variant == VariantShogi) goto BlackGold;
+ SlideVertical(board, flags, rf, ff, callback, closure);
+ Ferz(board, flags, rf, ff, callback, closure);
+ StepSideways(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI (PROMOTED WhiteQueen):
+ case SHOGI WhiteTokin:
+ case SHOGI WhiteWazir:
+ WhiteGold:
+ StepDiagForward(board, flags, rf, ff, callback, closure);
+ Wazir(board, flags, rf, ff, callback, closure);
+ break;
+
case SHOGI (PROMOTED BlackQueen):
- case SHOGI (PROMOTED BlackFerz):
- for (s = -1; s <= 1; s += 2) {
- if (rf > 0 && ff + s >= BOARD_LEFT && ff + s < BOARD_RGHT &&
- !SameColor(board[rf][ff], board[rf - 1][ff + s])) {
- callback(board, flags, NormalMove,
- rf, ff, rf - 1, ff + s, closure);
- }
- }
+ case SHOGI BlackTokin:
+ case SHOGI BlackWazir:
+ BlackGold:
+ StepDiagBackward(board, flags, rf, ff, callback, closure);
+ Wazir(board, flags, rf, ff, callback, closure);
+ break;
case WhiteWazir:
case BlackWazir:
- finishGold:
- for (d = 0; d <= 1; d++)
- for (s = -1; s <= 1; s += 2) {
- rt = rf + s * d;
- ft = ff + s * (1 - d);
- if (!(rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT)
- && !SameColor(board[rf][ff], board[rt][ft]) &&
- (gameInfo.variant != VariantXiangqi || InPalace(rt, ft) ) )
- callback(board, flags, NormalMove,
- rf, ff, rt, ft, closure);
- }
- break;
+ Wazir(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteMarshall:
+ case SHOGI BlackMarshall:
+ Ferz(board, flags, rf, ff, callback, closure);
+ for (d = 0; d <= 1; d++)
+ for (s = -2; s <= 2; s += 4) {
+ rt = rf + s * d;
+ ft = ff + s * (1 - d);
+ if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
+ if (!SameColor(board[rf][ff], board[rt][ft]) )
+ callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+ }
+ break;
+
+ case SHOGI WhiteAngel:
+ case SHOGI BlackAngel:
+ Wazir(board, flags, rf, ff, callback, closure);
case WhiteAlfil:
case BlackAlfil:
&& !SameColor(board[rf][ff], board[rt][ft]))
callback(board, flags, NormalMove,
rf, ff, rt, ft, closure);
- if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier
- || gameInfo.variant == VariantXiangqi) continue; // classical Alfil
+ if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+ gameInfo.variant == VariantChu || gameInfo.variant == VariantXiangqi) continue; // classical Alfil
rt = rf + rs; // in unknown variant we assume Modern Elephant, which can also do one step
ft = ff + fs;
if (!(rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT)
/* Make Dragon-Horse also do Dababba moves outside Shogi, for better disambiguation in variant Fairy */
case WhiteCardinal:
case BlackCardinal:
+ if(gameInfo.variant == VariantChuChess) goto DragonHorse;
for (d = 0; d <= 1; d++) // Dababba moves that Rook cannot do
for (s = -2; s <= 2; s += 4) {
rt = rf + s * d;
/* Shogi Dragon Horse has to continue with Wazir after Bishop */
case SHOGI WhiteCardinal:
case SHOGI BlackCardinal:
- m++;
+ case SHOGI WhitePCardinal:
+ case SHOGI BlackPCardinal:
+ DragonHorse:
+ Bishop(board, flags, rf, ff, callback, closure);
+ Wazir(board, flags, rf, ff, callback, closure);
+ break;
/* Capablanca Archbishop continues as Knight */
case WhiteAngel:
case BlackAngel:
- m++;
+ Knight(board, flags, rf, ff, callback, closure);
/* Shogi Bishops are ordinary Bishops */
case SHOGI WhiteBishop:
case SHOGI BlackBishop:
+ case SHOGI WhitePBishop:
+ case SHOGI BlackPBishop:
case WhiteBishop:
case BlackBishop:
- for (rs = -1; rs <= 1; rs += 2)
- for (fs = -1; fs <= 1; fs += 2)
- for (i = 1;; i++) {
- rt = rf + (i * rs);
- ft = ff + (i * fs);
- if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
- if (SameColor(board[rf][ff], board[rt][ft])) break;
- callback(board, flags, NormalMove,
- rf, ff, rt, ft, closure);
- if (board[rt][ft] != EmptySquare) break;
- }
- if(m==1) goto mounted;
- if(m==2) goto finishGold;
- /* Bishop falls through */
- break;
+ Bishop(board, flags, rf, ff, callback, closure);
+ break;
/* Shogi Lance is unlike anything, and asymmetric at that */
case SHOGI WhiteQueen:
+ if(gameInfo.variant == VariantChu) goto doQueen;
for(i = 1;; i++) {
rt = rf + i;
ft = ff;
break;
case SHOGI BlackQueen:
+ if(gameInfo.variant == VariantChu) goto doQueen;
for(i = 1;; i++) {
rt = rf - i;
ft = ff;
/* Make Dragon-King Dababba & Rook-like outside Shogi, for better disambiguation in variant Fairy */
case WhiteDragon:
case BlackDragon:
+ if(gameInfo.variant == VariantChuChess) goto DragonKing;
for (d = 0; d <= 1; d++) // Dababba moves that Rook cannot do
for (s = -2; s <= 2; s += 4) {
rt = rf + s * d;
ft = ff + s * (1 - d);
- if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT || board[rf+rt>>1][ff+ft>>1] == EmptySquare) continue;
+ if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
+ if (board[rf+rt>>1][ff+ft>>1] == EmptySquare && gameInfo.variant != VariantSpartan) continue;
if (SameColor(board[rf][ff], board[rt][ft])) continue;
callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
}
- if(gameInfo.variant == VariantSpartan) rookRange = 2; // in Spartan Chess restrict range to modern Dababba
- goto doRook;
+ if(gameInfo.variant == VariantSpartan) // in Spartan Chess restrict range to modern Dababba
+ Wazir(board, flags, rf, ff, callback, closure);
+ else
+ Rook(board, flags, rf, ff, callback, closure);
+ break;
/* Shogi Dragon King has to continue as Ferz after Rook moves */
case SHOGI WhiteDragon:
case SHOGI BlackDragon:
+ case SHOGI WhitePDragon:
+ case SHOGI BlackPDragon:
+ DragonKing:
+ Rook(board, flags, rf, ff, callback, closure);
+ Ferz(board, flags, rf, ff, callback, closure);
+ break;
m++;
/* Capablanca Chancellor sets flag to continue as Knight */
case WhiteMarshall:
case BlackMarshall:
- m++;
- m += (gameInfo.variant == VariantSpartan); // in Spartan Chess Chancellor is used for Dragon King.
+ Rook(board, flags, rf, ff, callback, closure);
+ if(gameInfo.variant == VariantSpartan) // in Spartan Chess Chancellor is used for Dragon King.
+ Ferz(board, flags, rf, ff, callback, closure);
+ else
+ Knight(board, flags, rf, ff, callback, closure);
+ break;
/* Shogi Rooks are ordinary Rooks */
case SHOGI WhiteRook:
case SHOGI BlackRook:
+ case SHOGI WhitePRook:
+ case SHOGI BlackPRook:
case WhiteRook:
case BlackRook:
- doRook:
- for (d = 0; d <= 1; d++)
- for (s = -1; s <= 1; s += 2)
- for (i = 1;; i++) {
- rt = rf + (i * s) * d;
- ft = ff + (i * s) * (1 - d);
- if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
- if (SameColor(board[rf][ff], board[rt][ft])) break;
- callback(board, flags, NormalMove,
- rf, ff, rt, ft, closure);
- if (board[rt][ft] != EmptySquare || i == rookRange) break;
- }
- if(m==1) goto mounted;
- if(m==2) goto finishSilver;
- break;
+ Rook(board, flags, rf, ff, callback, closure);
+ break;
case WhiteQueen:
case BlackQueen:
- for (rs = -1; rs <= 1; rs++)
- for (fs = -1; fs <= 1; fs++) {
- if (rs == 0 && fs == 0) continue;
- for (i = 1;; i++) {
- rt = rf + (i * rs);
- ft = ff + (i * fs);
- if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
- if (SameColor(board[rf][ff], board[rt][ft])) break;
- callback(board, flags, NormalMove,
- rf, ff, rt, ft, closure);
- if (board[rt][ft] != EmptySquare) break;
- }
- }
- break;
+ case SHOGI WhiteMother:
+ case SHOGI BlackMother:
+ doQueen:
+ Rook(board, flags, rf, ff, callback, closure);
+ Bishop(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhitePawn:
+ StepForward(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI BlackPawn:
+ StepBackward(board, flags, rf, ff, callback, closure);
+ break;
- /* Shogi Pawn and Silver General: first the Pawn move, */
- /* then the General continues like a Ferz */
case WhiteMan:
- if(gameInfo.variant != VariantMakruk) goto commoner;
- case SHOGI WhitePawn:
+ if(gameInfo.variant != VariantMakruk && gameInfo.variant != VariantASEAN) goto commoner;
case SHOGI WhiteFerz:
- if (rf < BOARD_HEIGHT-1 &&
- !SameColor(board[rf][ff], board[rf + 1][ff]) )
- callback(board, flags, NormalMove,
- rf, ff, rf + 1, ff, closure);
- if(piece != SHOGI WhitePawn) goto finishSilver;
- break;
+ Ferz(board, flags, rf, ff, callback, closure);
+ StepForward(board, flags, rf, ff, callback, closure);
+ break;
case BlackMan:
- if(gameInfo.variant != VariantMakruk) goto commoner;
- case SHOGI BlackPawn:
+ if(gameInfo.variant != VariantMakruk && gameInfo.variant != VariantASEAN) goto commoner;
case SHOGI BlackFerz:
- if (rf > 0 &&
- !SameColor(board[rf][ff], board[rf - 1][ff]) )
- callback(board, flags, NormalMove,
- rf, ff, rf - 1, ff, closure);
- if(piece == SHOGI BlackPawn) break;
+ StepBackward(board, flags, rf, ff, callback, closure);
case WhiteFerz:
case BlackFerz:
- finishSilver:
/* [HGM] support Shatranj pieces */
- for (rs = -1; rs <= 1; rs += 2)
- for (fs = -1; fs <= 1; fs += 2) {
- rt = rf + rs;
- ft = ff + fs;
- if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
- if (!SameColor(board[rf][ff], board[rt][ft]) &&
- (gameInfo.variant != VariantXiangqi || InPalace(rt, ft) ) )
- callback(board, flags, NormalMove,
- rf, ff, rt, ft, closure);
- }
- break;
+ Ferz(board, flags, rf, ff, callback, closure);
+ break;
case WhiteSilver:
case BlackSilver:
- m++; // [HGM] superchess: use for Centaur
+ Knight(board, flags, rf, ff, callback, closure); // [HGM] superchess: use for Centaur
+
commoner:
+ case SHOGI WhiteMonarch:
+ case SHOGI BlackMonarch:
case SHOGI WhiteKing:
case SHOGI BlackKing:
case WhiteKing:
case BlackKing:
-// walking:
- for (i = -1; i <= 1; i++)
- for (j = -1; j <= 1; j++) {
- if (i == 0 && j == 0) continue;
- rt = rf + i;
- ft = ff + j;
- if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
- if (SameColor(board[rf][ff], board[rt][ft])) continue;
- callback(board, flags, NormalMove,
- rf, ff, rt, ft, closure);
- }
- if(m==1) goto mounted;
- break;
+ Ferz(board, flags, rf, ff, callback, closure);
+ Wazir(board, flags, rf, ff, callback, closure);
+ break;
case WhiteNightrider:
case BlackNightrider:
break;
Amazon:
- /* First do Bishop,then continue like Chancellor */
- for (rs = -1; rs <= 1; rs += 2)
- for (fs = -1; fs <= 1; fs += 2)
- for (i = 1;; i++) {
- rt = rf + (i * rs);
- ft = ff + (i * fs);
- if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
- if (SameColor(board[rf][ff], board[rt][ft])) break;
- callback(board, flags, NormalMove,
- rf, ff, rt, ft, closure);
- if (board[rt][ft] != EmptySquare) break;
- }
- m++;
- goto doRook;
+ Bishop(board, flags, rf, ff, callback, closure);
+ Rook(board, flags, rf, ff, callback, closure);
+ Knight(board, flags, rf, ff, callback, closure);
+ break;
// Use Lance as Berolina / Spartan Pawn.
case WhiteLance:
}
break;
+ case SHOGI WhiteNothing:
+ case SHOGI BlackNothing:
+ case SHOGI WhiteLion:
+ case SHOGI BlackLion:
+ case WhiteLion:
+ case BlackLion:
+ for(rt = rf - 2; rt <= rf + 2; rt++) for(ft = ff - 2; ft <= ff + 2; ft++) {
+ if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
+ if (!(ff == ft && rf == rt) && SameColor(board[rf][ff], board[rt][ft])) continue;
+ callback(board, flags, (rt-rf)*(rt-rf) + (ff-ft)*(ff-ft) < 3 && board[rt][ft] != EmptySquare ? FirstLeg : NormalMove,
+ rf, ff, rt, ft, closure);
+ }
+ break;
+
+ case SHOGI WhiteFalcon:
+ case SHOGI BlackFalcon:
+ case SHOGI WhitePDagger:
+ case SHOGI BlackPDagger:
+ SlideSideways(board, flags, rf, ff, callback, closure);
+ StepVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteCobra:
+ case SHOGI BlackCobra:
+ StepVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI (PROMOTED WhiteFerz):
+ if(gameInfo.variant == VariantShogi) goto WhiteGold;
+ case SHOGI (PROMOTED BlackFerz):
+ if(gameInfo.variant == VariantShogi) goto BlackGold;
+ case SHOGI WhitePSword:
+ case SHOGI BlackPSword:
+ SlideVertical(board, flags, rf, ff, callback, closure);
+ StepSideways(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteUnicorn:
+ case SHOGI BlackUnicorn:
+ Ferz(board, flags, rf, ff, callback, closure);
+ StepVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteMan:
+ StepDiagForward(board, flags, rf, ff, callback, closure);
+ StepVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI BlackMan:
+ StepDiagBackward(board, flags, rf, ff, callback, closure);
+ StepVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteHCrown:
+ case SHOGI BlackHCrown:
+ Bishop(board, flags, rf, ff, callback, closure);
+ SlideSideways(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteCrown:
+ case SHOGI BlackCrown:
+ Bishop(board, flags, rf, ff, callback, closure);
+ SlideVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteHorned:
+ Sting(board, flags, rf, ff, 1, 0, callback, closure);
+ callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+ if(killX >= 0) break;
+ Bishop(board, flags, rf, ff, callback, closure);
+ SlideSideways(board, flags, rf, ff, callback, closure);
+ SlideBackward(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI BlackHorned:
+ Sting(board, flags, rf, ff, -1, 0, callback, closure);
+ callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+ if(killX >= 0) break;
+ Bishop(board, flags, rf, ff, callback, closure);
+ SlideSideways(board, flags, rf, ff, callback, closure);
+ SlideForward(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteEagle:
+ Sting(board, flags, rf, ff, 1, 1, callback, closure);
+ Sting(board, flags, rf, ff, 1, -1, callback, closure);
+ callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+ if(killX >= 0) break;
+ Rook(board, flags, rf, ff, callback, closure);
+ SlideDiagBackward(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI BlackEagle:
+ Sting(board, flags, rf, ff, -1, 1, callback, closure);
+ Sting(board, flags, rf, ff, -1, -1, callback, closure);
+ callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+ if(killX >= 0) break;
+ Rook(board, flags, rf, ff, callback, closure);
+ SlideDiagForward(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteDolphin:
+ case SHOGI BlackHorse:
+ SlideDiagBackward(board, flags, rf, ff, callback, closure);
+ SlideVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI BlackDolphin:
+ case SHOGI WhiteHorse:
+ SlideDiagForward(board, flags, rf, ff, callback, closure);
+ SlideVertical(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI WhiteLance:
+ SlideForward(board, flags, rf, ff, callback, closure);
+ break;
+
+ case SHOGI BlackLance:
+ SlideBackward(board, flags, rf, ff, callback, closure);
+ break;
+
case WhiteFalcon: // [HGM] wild: for wildcards, self-capture symbolizes move to anywhere
case BlackFalcon:
case WhiteCobra:
if(rFilter >= 0 && rFilter != rt || fFilter >= 0 && fFilter != ft) return; // [HGM] speed: ignore moves with wrong to-square
+ if (board[EP_STATUS] == EP_IRON_LION && (board[rt][ft] == WhiteLion || board[rt][ft] == BlackLion)) return; //[HGM] lion
+
if (!(flags & F_IGNORE_CHECK) ) {
int check, promo = (gameInfo.variant == VariantSpartan && kind == BlackPromotion);
if(promo) {
if(k != ft && board[0][k] != EmptySquare) ft = NoRights;
for(k=left; k<right && ft != NoRights; k++) /* then if not checked */
if(!ignoreCheck && CheckTest(board, flags, 0, ff, 0, k, FALSE)) ft = NoRights;
- if(ft != NoRights && board[0][ft] == WhiteRook)
- callback(board, flags, WhiteHSideCastleFR, 0, swap ? ft : ff, 0, swap ? ff : ft, closure);
+ if(ft != NoRights && board[0][ft] == WhiteRook) {
+ if(flags & F_FRC_TYPE_CASTLING) callback(board, flags, WhiteHSideCastleFR, 0, ff, 0, ft, closure);
+ if(swap) callback(board, flags, WhiteHSideCastleFR, 0, ft, 0, ff, closure);
+ }
ft = castlingRights[1]; /* Rook file if we have A-side rights */
left = BOARD_LEFT+2;
if(ff > BOARD_LEFT+2)
for(k=left+1; k<=right && ft != NoRights; k++) /* then if not checked */
if(!ignoreCheck && CheckTest(board, flags, 0, ff, 0, k, FALSE)) ft = NoRights;
- if(ft != NoRights && board[0][ft] == WhiteRook)
- callback(board, flags, WhiteASideCastleFR, 0, swap ? ft : ff, 0, swap ? ff : ft, closure);
+ if(ft != NoRights && board[0][ft] == WhiteRook) {
+ if(flags & F_FRC_TYPE_CASTLING) callback(board, flags, WhiteASideCastleFR, 0, ff, 0, ft, closure);
+ if(swap) callback(board, flags, WhiteASideCastleFR, 0, ft, 0, ff, closure);
+ }
}
} else {
ff = castlingRights[5]; /* King file if we have any rights */
if(k != ft && board[BOARD_HEIGHT-1][k] != EmptySquare) ft = NoRights;
for(k=left; k<right && ft != NoRights; k++) /* then if not checked */
if(!ignoreCheck && CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, k, FALSE)) ft = NoRights;
- if(ft != NoRights && board[BOARD_HEIGHT-1][ft] == BlackRook)
- callback(board, flags, BlackHSideCastleFR, BOARD_HEIGHT-1, swap ? ft : ff, BOARD_HEIGHT-1, swap ? ff : ft, closure);
+ if(ft != NoRights && board[BOARD_HEIGHT-1][ft] == BlackRook) {
+ if(flags & F_FRC_TYPE_CASTLING) callback(board, flags, BlackHSideCastleFR, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ft, closure);
+ if(swap) callback(board, flags, BlackHSideCastleFR, BOARD_HEIGHT-1, ft, BOARD_HEIGHT-1, ff, closure);
+ }
ft = castlingRights[4]; /* Rook file if we have A-side rights */
left = BOARD_LEFT+2;
if(ff > BOARD_LEFT+2)
for(k=left+1; k<=right && ft != NoRights; k++) /* then if not checked */
if(!ignoreCheck && CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, k, FALSE)) ft = NoRights;
- if(ft != NoRights && board[BOARD_HEIGHT-1][ft] == BlackRook)
- callback(board, flags, BlackASideCastleFR, BOARD_HEIGHT-1, swap ? ft : ff, BOARD_HEIGHT-1, swap ? ff : ft, closure);
+ if(ft != NoRights && board[BOARD_HEIGHT-1][ft] == BlackRook) {
+ if(flags & F_FRC_TYPE_CASTLING) callback(board, flags, BlackASideCastleFR, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ft, closure);
+ if(swap) callback(board, flags, BlackASideCastleFR, BOARD_HEIGHT-1, ft, BOARD_HEIGHT-1, ff, closure);
+ }
}
}
cl->check++;
xqCheckers[rf][ff] = xqCheckers[EP_STATUS] & 1; // remember who is checking (if status == 1)
}
+ if( board[EP_STATUS] == EP_ROYAL_LION && (board[rt][ft] == WhiteLion || board[rt][ft] == BlackLion)
+ && (gameInfo.variant != VariantLion || board[rf][ff] != WhiteKing && board[rf][ff] != BlackKing) )
+ cl->check++; // [HGM] lion: forbidden counterstrike against Lion equated to putting yourself in check
}
{
CheckTestClosure cl;
ChessSquare king = flags & F_WHITE_ON_MOVE ? WhiteKing : BlackKing;
- ChessSquare captured = EmptySquare;
+ ChessSquare captured = EmptySquare, ep=0, trampled=0;
/* Suppress warnings on uninitialized variables */
if(gameInfo.variant == VariantXiangqi)
king = flags & F_WHITE_ON_MOVE ? WhiteWazir : BlackWazir;
if(gameInfo.variant == VariantKnightmate)
king = flags & F_WHITE_ON_MOVE ? WhiteUnicorn : BlackUnicorn;
+ if(gameInfo.variant == VariantChu) { // strictly speaking this is not needed, as Chu officially has no check
+ int r, f, k = king, royals=0, prince = flags & F_WHITE_ON_MOVE ? WhiteMonarch : BlackMonarch;
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) {
+ if(board[r][f] == k || board[r][f] == prince) {
+ if(++royals > 1) return FALSE; // no check if we have two royals (ignores double captureby Lion!)
+ king = board[r][f]; // remember hich one we had
+ }
+ }
+ }
if (rt >= 0) {
if (enPassant) {
captured = board[rf][ft];
board[rf][ft] = EmptySquare;
} else {
- captured = board[rt][ft];
+ captured = board[rt][ft];
+ if(killX >= 0) { trampled = board[killY][killX]; board[killY][killX] = EmptySquare; }
}
if(rf == DROP_RANK) board[rt][ft] = ff; else { // [HGM] drop
board[rt][ft] = board[rf][ff];
board[rf][ff] = EmptySquare;
}
+ ep = board[EP_STATUS];
+ if( captured == WhiteLion || captured == BlackLion ) { // [HGM] lion: Chu Lion-capture rules
+ ChessSquare victim = killX < 0 ? EmptySquare : trampled;
+ if( (board[rt][ft] == WhiteLion || board[rt][ft] == BlackLion) && // capturer is Lion
+ (ff - ft > 1 || ft - ff > 1 || rf - rt > 1 || rt - rf > 1) && // captures from a distance
+ (victim == EmptySquare || victim == WhitePawn || victim == BlackPawn) ) // no or worthless 'bridge'
+ board[EP_STATUS] = EP_ROYAL_LION; // on distant Lion x Lion victim must not be pseudo-legally protected
+ }
}
/* For compatibility with ICS wild 9, we scan the board in the
board[rf][ft] = captured;
board[rt][ft] = EmptySquare;
} else {
+ if(killX >= 0) board[killY][killX] = trampled;
board[rt][ft] = captured;
}
+ board[EP_STATUS] = ep;
}
return cl.fking < BOARD_RGHT ? cl.check : 1000; // [HGM] atomic: return 1000 if we have no king
}
+int
+HasLion (Board board, int flags)
+{
+ int lion = F_WHITE_ON_MOVE & flags ? WhiteLion : BlackLion;
+ int r, f;
+ for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++)
+ if(board[r][f] == lion) return 1;
+ return 0;
+}
+
ChessMove
LegalDrop (Board board, int flags, ChessSquare piece, int rt, int ft)
{ // [HGM] put drop legality testing in separate routine for clarity
/* [HGM] Cobra and Falcon are wildcard pieces; consider all their moves legal */
/* (perhaps we should disallow moves that obviously leave us in check?) */
- if(piece == WhiteFalcon || piece == BlackFalcon ||
- piece == WhiteCobra || piece == BlackCobra)
+ if((piece == WhiteFalcon || piece == BlackFalcon ||
+ piece == WhiteCobra || piece == BlackCobra) && gameInfo.variant != VariantChu)
return CheckTest(board, flags, rf, ff, rt, ft, FALSE) ? IllegalMove : NormalMove;
cl.rf = rf;
if(rf != 0) return IllegalMove; // must be on back rank
if(!(board[VIRGIN][ff] & VIRGIN_W)) return IllegalMove; // non-virgin
if(board[PieceToNumber(CharToPiece(ToUpper(promoChar)))][BOARD_WIDTH-2] == 0) return ImpossibleMove;// must be in stock
+ if(cl.kind == WhiteHSideCastleFR && (ff == BOARD_RGHT-2 || ff == BOARD_RGHT-3)) return ImpossibleMove;
+ if(cl.kind == WhiteASideCastleFR && (ff == BOARD_LEFT+2 || ff == BOARD_LEFT+3)) return ImpossibleMove;
} else {
if(rf != BOARD_HEIGHT-1) return IllegalMove;
if(!(board[VIRGIN][ff] & VIRGIN_B)) return IllegalMove; // non-virgin
if(board[BOARD_HEIGHT-1-PieceToNumber(CharToPiece(ToLower(promoChar)))][1] == 0) return ImpossibleMove;
+ if(cl.kind == BlackHSideCastleFR && (ff == BOARD_RGHT-2 || ff == BOARD_RGHT-3)) return ImpossibleMove;
+ if(cl.kind == BlackASideCastleFR && (ff == BOARD_LEFT+2 || ff == BOARD_LEFT+3)) return ImpossibleMove;
}
} else
+ if(gameInfo.variant == VariantChu) {
+ if(cl.kind != NormalMove || promoChar == NULLCHAR || promoChar == '=') return cl.kind;
+ if(promoChar != '+')
+ return CharToPiece(promoChar) == EmptySquare ? ImpossibleMove : IllegalMove;
+ if(PieceToChar(CHUPROMOTED board[rf][ff]) != '+') return ImpossibleMove;
+ return flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion;
+ } else
if(gameInfo.variant == VariantShogi) {
/* [HGM] Shogi promotions. '=' means defer */
if(rf != DROP_RANK && cl.kind == NormalMove) {
}
} else
if (promoChar != NULLCHAR) {
+ if(cl.kind == NormalMove && promoChar == '+') { // allow shogi-style promotion is pieceToChar specifies them
+ ChessSquare piece = board[rf][ff];
+ if(piece < BlackPawn ? piece > WhiteMan : piece > BlackMan) return ImpossibleMove; // already promoted
+ // should test if in zone, really
+ if(gameInfo.variant == VariantChuChess && (piece == WhiteKnight || piece == BlackKnight) && HasLion(board, flags))
+ return IllegalMove;
+ if(PieceToChar(PROMOTED piece) == '+') return flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion;
+ } else
if(promoChar == '=') cl.kind = IllegalMove; else // [HGM] shogi: no deferred promotion outside Shogi
if (cl.kind == WhitePromotion || cl.kind == BlackPromotion) {
ChessSquare piece = CharToPiece(flags & F_WHITE_ON_MOVE ? ToUpper(promoChar) : ToLower(promoChar));
if(piece == EmptySquare)
cl.kind = ImpossibleMove; // non-existing piece
- if(gameInfo.variant == VariantSpartan && cl.kind == BlackPromotion ) {
+ if(gameInfo.variant == VariantChuChess && promoChar == 'l' && HasLion(board, flags)) {
+ cl.kind = IllegalMove; // no two Lions
+ } else if(gameInfo.variant == VariantSpartan && cl.kind == BlackPromotion ) {
if(promoChar != PieceToChar(BlackKing)) {
if(CheckTest(board, flags, rf, ff, rt, ft, FALSE)) cl.kind = IllegalMove; // [HGM] spartan: only promotion to King was possible
if(piece == BlackLance) cl.kind = ImpossibleMove;
- } else { // promotion to King allowed only if we do not haave two yet
+ } else { // promotion to King allowed only if we do not have two yet
int r, f, kings = 0;
for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) kings += (board[r][f] == BlackKing);
if(kings == 2) cl.kind = IllegalMove;
else if(gameInfo.variant == VariantGiveaway) return MT_STEALMATE; // no check exists, stalemated = win
return inCheck ? MT_CHECKMATE
- : (gameInfo.variant == VariantXiangqi || gameInfo.variant == VariantShatranj || gameInfo.variant == VariantShogi) ?
+ : (gameInfo.variant == VariantXiangqi || gameInfo.variant == VariantShatranj || IS_SHOGI(gameInfo.variant)) ?
MT_STAINMATE : MT_STALEMATE;
}
}
if(closure->rf != 0) closure->kind = IllegalMove; // must be on back rank
if(!(board[VIRGIN][closure->ff] & VIRGIN_W)) closure->kind = IllegalMove; // non-virgin
if(board[PieceToNumber(CharToPiece(ToUpper(c)))][BOARD_WIDTH-2] == 0) closure->kind = ImpossibleMove;// must be in stock
+ if(closure->kind == WhiteHSideCastleFR && (closure->ff == BOARD_RGHT-2 || closure->ff == BOARD_RGHT-3)) closure->kind = ImpossibleMove;
+ if(closure->kind == WhiteASideCastleFR && (closure->ff == BOARD_LEFT+2 || closure->ff == BOARD_LEFT+3)) closure->kind = ImpossibleMove;
} else {
if(closure->rf != BOARD_HEIGHT-1) closure->kind = IllegalMove;
if(!(board[VIRGIN][closure->ff] & VIRGIN_B)) closure->kind = IllegalMove; // non-virgin
if(board[BOARD_HEIGHT-1-PieceToNumber(CharToPiece(ToLower(c)))][1] == 0) closure->kind = ImpossibleMove;
+ if(closure->kind == BlackHSideCastleFR && (closure->ff == BOARD_RGHT-2 || closure->ff == BOARD_RGHT-3)) closure->kind = ImpossibleMove;
+ if(closure->kind == BlackASideCastleFR && (closure->ff == BOARD_LEFT+2 || closure->ff == BOARD_LEFT+3)) closure->kind = ImpossibleMove;
}
} else
+ if(gameInfo.variant == VariantChu) {
+ if(c == '+') closure->kind = (flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion); // for now, accept any
+ } else
if(gameInfo.variant == VariantShogi) {
/* [HGM] Shogi promotions. On input, '=' means defer, '+' promote. Afterwards, c is set to '+' for promotions, NULL other */
if(closure->rfIn != DROP_RANK && closure->kind == NormalMove) {
} else
if (closure->kind == WhitePromotion || closure->kind == BlackPromotion) {
if(c == NULLCHAR) { // missing promoChar on mandatory promotion; use default for variant
- if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
+ if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+ gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN)
c = PieceToChar(BlackFerz);
else if(gameInfo.variant == VariantGreat)
c = PieceToChar(BlackMan);
else
c = PieceToChar(BlackQueen);
} else if(c == '=') closure->kind = IllegalMove; // no deferral outside Shogi
+ else if(c == 'l' && gameInfo.variant == VariantChuChess && HasLion(board, flags)) closure->kind = IllegalMove;
+ } else if (c == '+') { // '+' outside shogi, check if pieceToCharTable enabled it
+ ChessSquare p = closure->piece;
+ if(p > WhiteMan && p < BlackPawn || p > BlackMan || PieceToChar(PROMOTED p) != '+')
+ closure->kind = ImpossibleMove; // used on non-promotable piece
+ else if(gameInfo.variant == VariantChuChess && HasLion(board, flags)) closure->kind = IllegalMove;
} else if (c != NULLCHAR) closure->kind = IllegalMove;
closure->promoChar = ToLower(c); // this can be NULLCHAR! Note we keep original promoChar even if illegal.
/* Use promotion suffix style "=Q" */
*outp = NULLCHAR;
if (promoChar != NULLCHAR) {
- if(gameInfo.variant == VariantShogi) {
+ if(IS_SHOGI(gameInfo.variant)) {
/* [HGM] ... but not in Shogi! */
*outp++ = promoChar == '=' ? '=' : '+';
} else {
*/
if( c == '~' || c == '+') {
/* [HGM] print nonexistent piece as its demoted version */
- piece = (ChessSquare) (DEMOTED piece);
+ piece = (ChessSquare) (DEMOTED piece - 11*(gameInfo.variant == VariantChu));
}
if(c=='+') *outp++ = c;
*outp++ = ToUpper(PieceToChar(piece));
if(rt+ONE <= '9')
*outp++ = rt + ONE;
else { *outp++ = (rt+ONE-'0')/10 + '0';*outp++ = (rt+ONE-'0')%10 + '0'; }
- if (gameInfo.variant == VariantShogi) {
+ if (IS_SHOGI(gameInfo.variant)) {
/* [HGM] in Shogi non-pawns can promote */
*outp++ = promoChar; // Don't bother to correct move type, return value is never used!
}
- else if (gameInfo.variant != VariantSuper && promoChar &&
+ else if (gameInfo.variant == VariantChuChess && promoChar ||
+ gameInfo.variant != VariantSuper && promoChar &&
(piece == WhiteLance || piece == BlackLance) ) { // Lance sometimes represents Pawn
*outp++ = '=';
*outp++ = ToUpper(promoChar);
destroying your own king is illegal */
#define F_FRC_TYPE_CASTLING 256 /* generate castlings as captures of own Rook */
#define F_MANDATORY_CAPTURE 0x200
+#define F_NULL_MOVE 0x400
/* Special epfile values. [HGM] positive values are non-reversible moves! */
-#define EP_NONE (-4) /* [HGM] Tricky! order matters: */
-#define EP_UNKNOWN (-1) /* >= EP_UNKNOWN spils rep-draw */
+#define EP_NONE (-6) /* [HGM] Tricky! order matters: */
+#define EP_UNKNOWN (-1) /* >= EP_UNKNOWN spoils rep-draw */
#define EP_CAPTURE (-2) /* <= EP_NONE is reversible move */
#define EP_PAWN_MOVE (-3)
+#define EP_IRON_LION (-4)
+#define EP_ROYAL_LION (-5)
#define EP_REP_DRAW (-15)
#define EP_RULE_DRAW (-14)
#define EP_INSUF_DRAW (-13)
int rf, int ff, int rt, int ft,
int promoChar, char out[MOVE_LEN]));
-extern int quickFlag;
+extern int quickFlag, killX, killY;
int MemoProc P((Option *opt, int n, int x, int y, char *text, int index));
Option engoutOptions[] = {
-{ 0, LL|T2T, 17, NULL, NULL, NULL, NULL, Icon, " " },
-{ 0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") },
+{ 0, LL|T2T, 18, NULL, NULL, NULL, NULL, Icon, " " },
+{ 0, L2L|T2T|SAME_ROW, 162, NULL, NULL, NULL, NULL, Label, N_("engine name") },
{ 0, T2T|SAME_ROW, 30, NULL, NULL, NULL, NULL, Icon, " " },
+/* TRANSLATORS: noun, as in "the move Nf3"*/
{ 0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") },
{ 0, RR|T2T|SAME_ROW, 80, NULL, NULL, NULL, NULL, Label, N_("NPS") },
-{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem1, "", (char**) MemoProc, TextBox, "" },
+{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem1, (char*) &appData.historyFont, (char**) MemoProc, TextBox, "" },
{ 0, 0, 0, NULL, NULL, "", NULL, Break , "" },
-{ 0, LL|T2T, 17, NULL, NULL, NULL, NULL, Icon, " " },
-{ 0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") },
+{ 0, LL|T2T, 18, NULL, NULL, NULL, NULL, Icon, " " },
+{ 0, L2L|T2T|SAME_ROW, 162, NULL, NULL, NULL, NULL, Label, N_("engine name") },
{ 0, T2T|SAME_ROW, 30, NULL, NULL, NULL, NULL, Icon, " " },
+/* TRANSLATORS: noun, as in "the move Nf3"*/
{ 0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") },
{ 0, RR|T2T|SAME_ROW, 80, NULL, NULL, NULL, NULL, Label, N_("NPS") },
-{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem2, "", (char**) MemoProc, TextBox, "" },
+{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem2, (char*) &appData.historyFont, (char**) MemoProc, TextBox, "" },
{ 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" }
};
if(lg->number % 2000 == 0) {
char buf[MSG_SIZ];
snprintf(buf, MSG_SIZ, _("Scanning through games (%d)"), lg->number);
- DisplayTitle(buf);
+ DisplayTitle(buf); DoEvents();
}
lg->position = pos;
lg = (ListGame *) lg->node.succ;
page = 0;
GameListReplace(0); // [HGM] filter: code put in separate routine, and also called to set title
MarkMenu("View.GameList", GameListDlg);
+ EnableNamedMenuItem("File.SaveSelected", TRUE);
}
FILE *
GameListDestroy ()
{
if (glc == NULL) return;
+ EnableNamedMenuItem("File.SaveSelected", FALSE);
PopDown(GameListDlg);
if (glc->strings != NULL) {
char **st;
}
Option historyOptions[] = {
-{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 400, NULL, (void*) &historyText, NULL, (char**) &SelectMove, TextBox, "" },
+{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 400, NULL, (void*) &historyText, (char*) &appData.historyFont, (char**) &SelectMove, TextBox, "" },
{ 0, NO_OK, 0, NULL, (void*) NULL, "", NULL, EndMark , "" }
};
{
char *start = *p;
if(**p == 'e' && (Match("ep", p) || Match("e.p.", p))) { *p = start; return NULLCHAR; } // non-compliant e.p. suffix is no promoChar!
- if(**p == '+' && gameInfo.variant == VariantShogi) { (*p)++; return '+'; }
+ if(**p == '+' && IS_SHOGI(gameInfo.variant)) { (*p)++; return '+'; }
if(**p == '=' || (gameInfo.variant == VariantSChess) && **p == '/') (*p)++; // optional = (or / for Seirawan gating)
if(**p == '(' && (*p)[2] == ')' && isalpha( (*p)[1] )) { (*p) += 3; return ToLower((*p)[-2]); }
- if(isalpha(**p)) return ToLower(*(*p)++);
- if(*p != start) return '='; // must be the optional =
+ if(isalpha(**p) && **p != 'x') return ToLower(*(*p)++); // reserve 'x' for multi-leg captures?
+ if(*p != start) return **p == '+' ? *(*p)++ : '='; // must be the optional = (or =+)
return NULLCHAR; // no suffix detected
}
} else if(n == 1 && type[0] == NUMERIC && coord[0] > 1) { while(**p == '.') (*p)++; return Nothing; } // fast exit for move numbers
if(n == 4 && type[2] != type[3] && // we have a valid to-square (kludge: type[3] can be NOTHING on fxg type move)
(piece || !promoted) && // promoted indicator only valid on named piece type
- (type[2] == ALPHABETIC || gameInfo.variant == VariantShogi)) { // in Shogi also allow alphabetic rank
+ (type[2] == ALPHABETIC || IS_SHOGI(gameInfo.variant))) { // in Shogi also allow alphabetic rank
DisambiguateClosure cl;
int fromX, fromY, toX, toY;
if(piece) {
cl.pieceIn = CharToPiece(wom ? piece : ToLower(piece));
if(cl.pieceIn == EmptySquare) return ImpossibleMove; // non-existent piece
- if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
+ if(promoted) cl.pieceIn = (ChessSquare) (CHUPROMOTED cl.pieceIn);
} else cl.pieceIn = EmptySquare;
if(separator == '@' || separator == '*') { // drop move. We only get here without from-square or promoted piece
fromY = DROP_RANK; fromX = cl.pieceIn;
fromY = (currentMoveString[1] = coord[1] + '0') - ONE;
currentMoveString[4] = cl.promoCharIn = PromoSuffix(p);
currentMoveString[5] = NULLCHAR;
+ if(!cl.promoCharIn && (**p == '-' || **p == 'x')) { // Lion-type multi-leg move
+ currentMoveString[5] = (killX = toX) + AAA; // what we thought was to-square is in fact kill-square
+ currentMoveString[6] = (killY = toY) + ONE; // append it as suffix behind long algebraic move
+ currentMoveString[4] = ';';
+ currentMoveString[7] = NULLCHAR;
+ // read new to-square (VERY non-robust! Assumes correct (non-alpha-rank) syntax, and messes up on errors)
+ toX = cl.ftIn = (currentMoveString[2] = *++*p) - AAA; ++*p;
+ toY = cl.rtIn = (currentMoveString[3] = Number(p) + '0') - ONE;
+ }
if(type[0] != NOTHING && type[1] != NOTHING && type[3] != NOTHING) { // fully specified.
+ ChessSquare realPiece = boards[yyboardindex][fromY][fromX];
// Note that Disambiguate does not work for illegal moves, but flags them as impossible
if(piece) { // check if correct piece indicated
- ChessSquare realPiece = boards[yyboardindex][fromY][fromX];
if(PieceToChar(realPiece) == '~') realPiece = (ChessSquare) (DEMOTED realPiece);
if(!(appData.icsActive && PieceToChar(realPiece) == '+') && // trust ICS if it moves promoted pieces
piece && realPiece != cl.pieceIn) return ImpossibleMove;
+ } else if(!separator && **p == '+') { // could be a protocol move, where bare '+' suffix means shogi-style promotion
+ if(realPiece < (wom ? WhiteCannon : BlackCannon) && PieceToChar(PROMOTED realPiece) == '+') // seems to be that
+ currentMoveString[4] = cl.promoCharIn = *(*p)++; // append promochar after all
}
result = LegalityTest(boards[yyboardindex], PosFlags(yyboardindex), fromY, fromX, toY, toX, cl.promoCharIn);
if (currentMoveString[4] == NULLCHAR) { // suppy missing mandatory promotion character
currentMoveString[0] = cl.ff + AAA;
currentMoveString[1] = cl.rf + ONE;
currentMoveString[3] = cl.rt + ONE;
+ if(killX < 0) // [HGM] lion: do not overwrite kill-square suffix
currentMoveString[4] = cl.promoChar;
if((cl.kind == WhiteCapturesEnPassant || cl.kind == BlackCapturesEnPassant) && (Match("ep", p) || Match("e.p.", p)));
+++ /dev/null
-/* XPM */\r
-static char *ANALYZE_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-" c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-"....... ....",\r
-"..... ... ..",\r
-".... ....... .",\r
-".... .. .... .",\r
-"... .. ..... ",\r
-"... ......... ",\r
-"... ......... ",\r
-".... ....... .",\r
-".... ....... .",\r
-"... . ... ..",\r
-".. . .. ....",\r
-". . ..........",\r
-" ...........",\r
-".............."\r
-};\r
+++ /dev/null
-/* XPM */\r
-static char *BLACK_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-" c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".....****.....",\r
-"...** **...",\r
-"..* *..",\r
-".* *.",\r
-".* *.",\r
-"* *",\r
-"* *",\r
-"* *",\r
-"* *",\r
-".* *.",\r
-".* *.",\r
-"..* *..",\r
-"...** **...",\r
-".....****....."\r
-};\r
+++ /dev/null
-/* XPM */\r
-static char *CLEAR_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-" c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-".............."\r
-};\r
+++ /dev/null
-/* XPM */\r
-static char *PONDER_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-" c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".... .. ....",\r
-".. ... .. ..",\r
-". .......... .",\r
-" .......... ..",\r
-" ........... .",\r
-". .......... ",\r
-".. .......... ",\r
-". .......... .",\r
-".. ....... ..",\r
-"... .. .. ...",\r
-".. . .. ....",\r
-". ..........",\r
-" .............",\r
-".............."\r
-};\r
+++ /dev/null
-/* XPM */\r
-static char *THINK_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-" c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-"..... ......",\r
-"... ... ....",\r
-".. ... ... ...",\r
-". .... .... ..",\r
-". .... .... ..",\r
-" ..... ..... .",\r
-" .... .. .",\r
-" ..... ..... .",\r
-". ......... ..",\r
-". ......... ..",\r
-".. ....... ...",\r
-"... ... ....",\r
-"..... ......",\r
-".............."\r
-};\r
+++ /dev/null
-/* XPM */\r
-static char *UNKNOWN_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-" c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".....****.....",\r
-"...** **...",\r
-"..* . . *..",\r
-".* . . . . *.",\r
-".* . . . . *.",\r
-"* . . . . . *",\r
-"* . . . . . *",\r
-"* . . . . . *",\r
-"* . . . . . *",\r
-".* . . . . *.",\r
-".* . . . . *.",\r
-"..* . . *..",\r
-"...** **...",\r
-".....****....."\r
-};\r
+++ /dev/null
-/* XPM */\r
-static char *WHITE_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-" c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".....****.....",\r
-"...** **...",\r
-"..* .... *..",\r
-".* ........ *.",\r
-".* ........ *.",\r
-"* .......... *",\r
-"* .......... *",\r
-"* .......... *",\r
-"* .......... *",\r
-".* ........ *.",\r
-".* ........ *.",\r
-"..* .... *..",\r
-"...** **...",\r
-".....****....."\r
-};\r
+++ /dev/null
-/* XPM */
-static char *board__[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 4 1",
-" c #000000",
-". c #FFFF00",
-"X c #808080",
-"o c #FFFFFF",
-/* pixels */
-"X.X. X.X. X.X. X.X. ",
-".XoX .XoX .XoX .XoX ",
-"X.X. X.X. X.X. X.X. ",
-"oX.X oX.X oX.X oX.X ",
-" X.X. X.X. X.X. X.X.",
-" .XoX .XoX .XoX .XoX",
-" X.X. X.X. X.X. X.X.",
-" oX.X oX.X oX.X oX.X",
-"X.X. X.X. X.X. X.X. ",
-".XoX .XoX .XoX .XoX ",
-"X.X. X.X. X.X. X.X. ",
-"oX.X oX.X oX.X oX.X ",
-" X.X. X.X. X.X. X.X.",
-" .XoX .XoX .XoX .XoX",
-" X.X. X.X. X.X. X.X.",
-" oX.X oX.X oX.X oX.X",
-"X.X. X.X. X.X. X.X. ",
-".XoX .XoX .XoX .XoX ",
-"X.X. X.X. X.X. X.X. ",
-"oX.X oX.X oX.X oX.X ",
-" X.X. X.X. X.X. X.X.",
-" .XoX .XoX .XoX .XoX",
-" X.X. X.X. X.X. X.X.",
-" oX.X oX.X oX.X oX.X",
-"X.X. X.X. X.X. X.X. ",
-".XoX .XoX .XoX .XoX ",
-"X.X. X.X. X.X. X.X. ",
-"oX.X oX.X oX.X oX.X ",
-" X.X. X.X. X.X. X.X.",
-" .XoX .XoX .XoX .XoX",
-" X.X. X.X. X.X. X.X.",
-" oX.X oX.X oX.X oX.X"
-};
+++ /dev/null
-/* XPM */
-static char *board__[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 4 1",
-" c #000000",
-". c #FFFF00",
-"X c #808080",
-"o c #FFFFFF",
-/* pixels */
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-"oX.XoX oX.XoX oX.XoX oX.XoX ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" oX.XoX oX.XoX oX.XoX oX.XoX",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-"oX.XoX oX.XoX oX.XoX oX.XoX ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" oX.XoX oX.XoX oX.XoX oX.XoX",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-"oX.XoX oX.XoX oX.XoX oX.XoX ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" oX.XoX oX.XoX oX.XoX oX.XoX",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-"oX.XoX oX.XoX oX.XoX oX.XoX ",
-"X.X.X. X.X.X. X.X.X. X.X.X. ",
-".XoX.X .XoX.X .XoX.X .XoX.X ",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" oX.XoX oX.XoX oX.XoX oX.XoX",
-" X.X.X. X.X.X. X.X.X. X.X.X.",
-" .XoX.X .XoX.X .XoX.X .XoX.X",
-};
+++ /dev/null
-/* XPM */
-static char *cross[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 4 1",
-" c #000000",
-". c #FF0000",
-"X c #0000FF",
-"o c #FFFFFF",
-/* pixels */
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"X oooooooooooooooooooooooooX",
-"X oo.ooooooooooooooooooooooX",
-"X o...ooooooo...oooooooooooX",
-"X oo.ooooooooooooooooooooooX",
-"X oooooooooooooooooooooooooX",
-"Xooooo ooooooooooooooooooooX",
-"Xooooo oooooooooooo.oooooooX",
-"Xo...o ooooooooooo...ooooooX",
-"Xooooo oooooooooooo.oooooooX",
-"Xooooo ooooooooooooooooooooX",
-"Xoooooooooo oooooooooooooooX",
-"Xoooooooooo o...oooooooooooX",
-"Xoooooooooo oooooooooooo.ooX",
-"Xoooooooooo o...ooooooo...oX",
-"Xoooooooooo oooooooooooo.ooX",
-"Xooooooooooooooo ooooooooooX",
-"Xoo.oooooooo...o ooooooooooX",
-"Xo...ooooooooooo ooooooooooX",
-"Xoo.oooooooo...o ooooooooooX",
-"Xooooooooooooooo ooooooooooX",
-"Xoooooooooooooooooooo oooooX",
-"Xoooooooooooooooooooo oo.ooX",
-"Xoooooo...ooooooooooo o...oX",
-"Xoooooooooooooooooooo oo.ooX",
-"Xoooooooooooooooooooo oooooX",
-"Xooooooooooooooooooooooooo X",
-"Xooooooooooo...ooooooooooo X",
-"Xooooooooooooooooooooo...o X",
-"Xooooooooooooooooooooooooo X",
-"Xooooooooooooooooooooooooo X",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-};
+++ /dev/null
-/* XPM */
-static char *cross[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 4 1",
-" c #000000",
-". c #FF0000",
-"X c #0000FF",
-"o c #FFFFFF",
-/* pixels */
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"XXooooooooooooooooooooooooooooooooooooooooooooXX",
-"XXo ooooooooooooooooooooooooooooooooooooXX",
-"XXo ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo o.....ooooooooo.....ooooooooooooooooXX",
-"XXo ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo ooooooooooooooooooooooooooooooooooooXX",
-"XXoooooooo oooooooooooooooooooooooooooooXX",
-"XXoooooooo ooooooooooooooooo.oooooooooooXX",
-"XXoooooooo ooooooooooooooooo.oooooooooooXX",
-"XXoo.....o ooooooooooooooo.....oooooooooXX",
-"XXoooooooo ooooooooooooooooo.oooooooooooXX",
-"XXoooooooo ooooooooooooooooo.oooooooooooXX",
-"XXoooooooo oooooooooooooooooooooooooooooXX",
-"XXooooooooooooooo ooooooooooooooooooooooXX",
-"XXooooooooooooooo ooooooooooooooooo.ooooXX",
-"XXooooooooooooooo o.....ooooooooooo.ooooXX",
-"XXooooooooooooooo ooooooooooooooo.....ooXX",
-"XXooooooooooooooo o.....ooooooooooo.ooooXX",
-"XXooooooooooooooo ooooooooooooooooo.ooooXX",
-"XXooooooooooooooo ooooooooooooooooooooooXX",
-"XXoooooooooooooooooooooo oooooooooooooooXX",
-"XXoooo.ooooooooooooooooo oooooooooooooooXX",
-"XXoooo.ooooooooooo.....o oooooooooooooooXX",
-"XXoo.....ooooooooooooooo oooooooooooooooXX",
-"XXoooo.ooooooooooo.....o oooooooooooooooXX",
-"XXoooo.ooooooooooooooooo oooooooooooooooXX",
-"XXoooooooooooooooooooooo oooooooooooooooXX",
-"XXooooooooooooooooooooooooooooo ooooooooXX",
-"XXooooooooooooooooooooooooooooo ooo.ooooXX",
-"XXooooooooooooooooooooooooooooo ooo.ooooXX",
-"XXooooooooo.....ooooooooooooooo o.....ooXX",
-"XXooooooooooooooooooooooooooooo ooo.ooooXX",
-"XXooooooooooooooooooooooooooooo ooo.ooooXX",
-"XXooooooooooooooooooooooooooooo ooooooooXX",
-"XXoooooooooooooooooooooooooooooooooooo oXX",
-"XXoooooooooooooooooooooooooooooooooooo oXX",
-"XXoooooooooooooooooooooooooooooooooooo oXX",
-"XXoooooooooooooooo.....ooooooooo.....o oXX",
-"XXoooooooooooooooooooooooooooooooooooo oXX",
-"XXoooooooooooooooooooooooooooooooooooo oXX",
-"XXoooooooooooooooooooooooooooooooooooo oXX",
-"XXooooooooooooooooooooooooooooooooooooooooooooXX",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-};
+++ /dev/null
-/* XPM */
-static char *nld33[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 3 1",
-" c black",
-". c transparent",
-"X c white",
-/* pixels */
-"................................",
-"................................",
-"................................",
-"......... ... ................",
-"......... X . XX ...............",
-"......... XX XX .............",
-"......... X XX XX ...........",
-"......... X XXXXXXXXX .........",
-"........ XXXXXXXXXXXXX ........",
-"........ X XXXXXXXXXXX .......",
-"....... X XXXXXXXXXXXXXX ......",
-"....... X XXXXXXXX XXXXX ......",
-"...... XXXXXXXXXXX XXXXXX .....",
-"...... XXXXXXXXXXX XXXXXX .....",
-"..... XXXXXXXXXXXX XXXXXXX ....",
-"..... XXXXXXXXXXX XXXXXXXX ....",
-".... XXXXXXXXXX XXXXXXXX ....",
-".... XXXXXXXXX .. XXXXXXXXX ...",
-"... X XXXXXX ... XXXXXXXXX ...",
-"... X XXXXX .... XXXXXXXXXX ...",
-"... XXX XX ..... XXXXXXXXXX ...",
-"... XXX X ..... XXXXXXXXXXXX ...",
-".... ..... XXXXXXXXXXXXX ..",
-"............. XXXXXXXXXXXXXX ..",
-"............ XXXXXXXXXXXXXXX ..",
-"........... XXXXXXXXXXXXXXXX ..",
-"........... XXXXXXXXXXXXXXXX ..",
-".......... XXXXXXXXXXXXXXXXX ..",
-".......... XXXXXXXXXXXXXXXXX ..",
-".......... ..",
-"................................",
-"................................"
-};
+++ /dev/null
-/* XPM */
-static char *nld49[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 3 1",
-" c black",
-". c transparent",
-"X c whit",
-/* pixels */
-"................................................",
-"................................................",
-"................................................",
-"............ ........ ..........................",
-"............ ..... X .........................",
-"............ XX .... XX ........................",
-"............ XXX .. XXX ........................",
-"............ XXXX XXX .....................",
-"............. XX X XXX XXX ..................",
-"............ XX XXXXXXXXXXXXXX ................",
-"........... XXXXXXXXXXXXXXXXXXXX ...............",
-".......... XXXXXXXXXXXXXXXXXXXXXX .............",
-".......... XXXXXXXXXXXXXXXXXXXXXXX ............",
-"......... XXXXX XXXXXXXXXXXXXXXXXXX ...........",
-"......... XXX XXXXXXXXXXXXXXXXXXXXX ..........",
-"......... XXX XXXXXXXXXXXXXXXXXXXXXXX ..........",
-"......... XX XXXXXXXXXXXXXXXXXXXXXXXX .........",
-"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXX ........",
-"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXX ........",
-"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXXX .......",
-"....... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXX .......",
-"....... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .......",
-"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX ......",
-"..... XXXXXXXXXXXXXXXXX . XXXXXXXXXXXXXX ......",
-"..... XXXXXXXXXXXXXXXX .. XXXXXXXXXXXXXXX ......",
-".... XXXXXXXXXXXXXXX ... XXXXXXXXXXXXXXX .....",
-".... XXXXXXXXXXXXXX ..... XXXXXXXXXXXXXXX .....",
-"... XX XXXXXXXXX ...... XXXXXXXXXXXXXXX .....",
-"... XX XXXXXXXXX ....... XXXXXXXXXXXXXXXXX .....",
-"... XXXXXXXXXXX ........ XXXXXXXXXXXXXXXXX ....",
-"... XXXXXX XXX ........ XXXXXXXXXXXXXXXXXX ....",
-"... XXXXX XXX ........ XXXXXXXXXXXXXXXXXXX ....",
-".... XXXX XX ........ XXXXXXXXXXXXXXXXXXXX ....",
-"..... X ........ XXXXXXXXXXXXXXXXXXXXX ....",
-".......... ....... XXXXXXXXXXXXXXXXXXXXXXX ....",
-".................. XXXXXXXXXXXXXXXXXXXXXXXX ...",
-".................. XXXXXXXXXXXXXXXXXXXXXXXX ...",
-"................. XXXXXXXXXXXXXXXXXXXXXXXXX ...",
-"................ XXXXXXXXXXXXXXXXXXXXXXXXXX ...",
-"............... XXXXXXXXXXXXXXXXXXXXXXXXXXX ...",
-"............... XXXXXXXXXXXXXXXXXXXXXXXXXXX ...",
-".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...",
-".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...",
-".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...",
-".............. ....",
-"................................................",
-"................................................",
-"................................................"
-};
# whitespace separated list of translated languages goes below
# note: zh translations are untested; xboard fails to create a fontset for them
-da de es it ru tr uk vi zh_CN zh_HK zh_TW
+da de es it nl ru tr uk vi zh_CN zh_HK zh_TW
msgstr ""
"Project-Id-Version: GNU xboard 4.6.0.20120304\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: 2012-03-06 12:27+0100\n"
"Last-Translator: Byrial Ole Jensen <byrial@vip.cybercity.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
-"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: da\n"
"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr "%s i indstillingsfil\n"
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr "Forkert heltalsværdi %s"
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr "Ikke genkendt argument %s"
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr "Ingen værdi givet for argumentet %s"
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr "Ukomplet \\-undvigesekvens i værdi for %s"
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr "Åbning af inkluderet fil \"%s\" mislykkedes"
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr "Ikke genkendt boolesk argumentværdi %s"
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr "første"
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr "det andet"
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "protokolversion %d er ikke understøttet"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr "Du angav ikke et kørbart skakprogram"
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "forkert timeControl-tilvalg %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "forkert searchTime-tilvalg %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "Varianten %s er kun understøttet i ICS-tilstand"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "Ukendt variantnavn %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "Starter skakprogram"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "Fejl i partifil"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "Fejl i stillingsfil"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr "Vælg nyt spil"
# cycle = runde?
-#: backend.c:1488
+#: backend.c:1552
+#, fuzzy
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
"Du genstartede en allerede afsluttet turnering\n"
"En mere cyklus vil nu blive tilføjet\n"
"Partierne starter om 10 sekunder"
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr "Alle partier i turneringen \"%s\" er allerede færdige eller i gang"
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "Kan ikke have en match uden skakprogrammer"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "Kunne ikke åbne seriel port %s"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "Kunne ikke forbinde til vært %s, port %s"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "Ukendt initialMode %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "AnalyzeFile-tilstand kræver en partifil"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "Analysetilstand kræver et skakprogram"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "Analysetilstand virker ikke sammen med ICS-tilstand"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "MachineWhite-tilstand kræver et skakprogram"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "MachineWhite-tilstand virker ikke sammen med ICS-tilstand"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "MachineBlack-tilstand kræver et skakprogram"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "MachineBlack-tilstand virker ikke sammen med ICS-tilstand"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr "TwoMachines-tilstand kræver et skakprogram"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "TwoMachines-tilstand virker ikke sammen med ICS-tilstand"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "Træningstilstand kræver en partifil"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "Fejl ved skrivning til ICS"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "Fejl ved læsning fra tastatur"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "Fik filafslutning fra tastatur"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr "Ukendt vild type %d"
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "Fejl ved skrivning til skærm"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr "din modstander kommenterer: %s"
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "Fejl ved tolkning af trækliste: to teksthoveder"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "Fejl ved tolkning af trækliste: indlejret"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr "–"
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr "Ulovligt træk (afvist af ICS)"
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "Forbindelse lukket af ICS"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "Fejl ved læsning fra ICS"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"Fortolkning af brætstreng mislykkedes:\n"
"\"%s\""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr "Parti for langt; forøg MAX_MOVES og genoversæt"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "Fejl ved tolkning af trækliste: ekstra bræt"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "Kunne ikke fortolke \"%s\" fra ICS"
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "say Intern fejl; forkert moveType%d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr "Du kan ikke gøre dette, mens du spiller eller observerer"
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr "Genoversæt for at understøtte denne BOARD_RANKS eller BOARD_FILES!"
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "Du spiller sort"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "Du spiller hvid"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "Det er hvids tur"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "Det er sorts tur"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "Den viste stilling er ikke den aktuelle"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "Ulovligt træk"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "Slutningen af partiet"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "Ukorrekt træk"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr "Træk bonde baglæns for at underforvandle"
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr "Svejtserturnering afsluttet"
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr "Ikke tilladt parring fra parringsprogram"
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "Ulovligt træk \"%s\" fra %s skakprogram"
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr "Fejl i FEN modtaget fra skakprogram"
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s understøtter ikke analyse"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr "Ulovligt træk \"%s\" (afvist af %s skakprogram)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "Fejl ved start af %s skakprogram %s på %s: %s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "Tip: %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"Ulovligt tip om træk \"%s\"\n"
"fra %s skakprogram"
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr "Skakprogrammet accepterer dit remistilbud"
-#: backend.c:8898
+#: backend.c:9320
+#, fuzzy
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
"Skakprogrammet tilbyder remis\n"
"Vælg Handlinger / Remis for at acceptere"
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr "skrivning af analysevariant mislykkedes"
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "Flertydigt træk i ICS-output: \"%s\""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "Ulovligt træk i ICS-output: \"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "Hul i trækliste"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "Variant %s understøttes ikke af %s"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "Opstartsfejl på \"%s\""
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "Venter på første skakprogram"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "Venter på andet skakprogram"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr "Kunne ikke skrive turneringsfil"
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
"Du kan ikke udskifte et skakprogram, mens det bruges!\n"
"Afslut dets parti først."
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr "Der er ikke installeret et skakprogram med det angivne navn"
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
"Ændr først skakprogram ved at redigere deltagerlisten\n"
"i turneringsindstillingerne"
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr "Du kan kun ændre et skakprogram ad gangen"
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, fuzzy, c-format
msgid "No engine %s is installed"
msgstr "Der er ikke installeret et skakprogram med det angivne navn"
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
"Du skal angive en turneringsfil\n"
"til at gemme turneringens afvikling"
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr "Der er ikke nok deltagere"
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr "Fejl i turneringsfil"
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr "Venter på andet parti/andre partier"
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr "Der er ikke noget parringsprogram specificeret"
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "Match %s - %s: slutscore %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "Ulovligt træk: %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "Flertydigt træk: %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "Kan ikke åbne \"%s\""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "Kan ikke konstruere partiliste"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "Der er ikke flere partier i denne besked"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "Der er endnu ingen indlæste partier"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "Kan ikke gå længere tilbage"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "Partinummer findes ikke"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "Kan ikke spole i partifil"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "Parti ikke fundet i fil"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "Fejl i FEN-stilling i fil"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "Ingen træk i partiet"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "Ingen stilling er endnu indlæst"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "Kan ikke spole i stillingsfil"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "Stilling er ikke fundet i fil"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "Sort i trækket"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "Hvid i trækket"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr "Venter på adgang til gemmefil"
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr "Gemmer parti"
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr "Søgning mislykkedes"
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr "Gemmer stilling"
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
"Du har redigeret i parti-historikken.\n"
"Genindlæs partiet og udfør trækket igen."
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
"Du har indtastet for mange træk.\n"
"Gå tilbage til den aktuelle stilling og prøv igen."
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
"Den viste stilling er ikke den aktuelle.\n"
"Gå fremad til den korrekte stilling og prøv igen."
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "Du har ikke trukket endnu"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
"Cmail-beskeden er ikke indlæst.\n"
"Brug Genindlæs CMail-besked og lav dit træk igen."
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "Der er ingen uafsluttede partier"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"\"cmail -remail -game %s\"\n"
"på kommandolinjen."
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "Start af cmail mislykkedes"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "Venter på svar fra modstander\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "Der er stadig nødvendigt at trække i partiet\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "Der er stadig nødvendigt at trække i begge partier\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "Der er stadig nødvendigt at trække i alle %d partier\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "Der er stadig nødvendigt at trække i partiet %s\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "Der er ingen uafsluttede partier\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "Klar til at sende e-mail\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "Der er stadig nødvendigt at trække i partierne %s\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "Redigér kommentar"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "Redigér kommentar til %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr "Du observerer ikke et parti"
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "Hvid er ikke i trækket"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "Sort er ikke i trækket"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr "Starter %s skakprogram"
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
+"or select 'Move Now'."
msgstr ""
"Vent på din tur,\n"
"eller vælg Træk nu"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "Træningstilstand fra"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "Træningstilstand til"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "Allerede ved slutningen af partiet"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "Advarsel: Du spiller stadig et parti"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "Advarsel: Du observerer stadig et parti"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "Advarsel: Du undersøger stadig et parti"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr "Lukker skakprogram til ICS-analyse ..."
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "Det felt er besat"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "Der er ingen aktuelle tilbud ved dette træk"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "Din modstander har ikke overskredet tiden"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "Du skal trække før du tilbyder remis"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "Du undersøger ikke et parti"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "Du kan ikke annullere variantlinje under pause"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "Det er dig som er i trækket"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "Vent til du kommer i trækket"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "Tip er ikke tilgængeligt"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
msgid "Game list not loaded or empty"
msgstr "Partiliste ikke indlæst eller tom"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "Fejl ved skrivning til %s skakprogram"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr "%s program afslutter i remisstilling (%s)"
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "Fejl: %s skakprogram (%s) afsluttede uventet"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "Fejl ved læsning fra %s skakprogram (%s)"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr "%s skakprogram har for mange tilvalg\n"
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "Det viste træk er ikke det aktuelle"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "Kunne ikke fortolke træk"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "Begge flag er faldet"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "Hvids flag er faldet"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "Sorts flag er faldet"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr "Det er ikke tilladt er stille på uret i auto-flag-tilstand"
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "Fejl i FEN-stilling i udklipsholder"
msgid "Could not create book"
msgstr "Kunne ikke fortolke træk"
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr "Turneringsfil:"
-#: dialogs.c:260
+#: dialogs.c:284
+#, fuzzy
+msgid "For concurrent playing of tourney with multiple XBoards:"
+msgstr "Synkronisér efter cyklus turnering med flere XBoard'er)"
+
+#: dialogs.c:285
msgid "Sync after round"
msgstr ""
-#: dialogs.c:261
-#, fuzzy
-msgid " (for concurrent playing of a single"
-msgstr "Synkronisér efter runde (for samtidig afvikling af en"
-
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-#, fuzzy
-msgid " tourney with multiple XBoards)"
-msgstr "Synkronisér efter cyklus turnering med flere XBoard'er)"
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr "Turneringsdeltagere:"
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr "Vælg skakprogram:"
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr "Turneringstype (0 = alle mod alle, 1 = en imod resten):"
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr "Antal cyklusser i turneringen (eller svejtserrunder):"
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr "Standard for antal partier i match (eller parring):"
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr "Pause imellem matchpartier (millisekunder):"
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr "Gem turneringspartier i:"
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr "Partifil med åbninger:"
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr "Partinummer (-1 eller -2 = automatisk forøgelse):"
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr "Fil med startstillinger:"
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr "Stillingsnummer (-1 eller -2 = automatisk forøgelse):"
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr "Genstart nummering efter dette antal partier (0 = aldrig):"
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr "Deaktivér skakprogrammets egen åbningsbog som standard"
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr "Betænkningstid"
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "Skakprogram ... Alt+Shift+U"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Generelle indstillinger"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr "Udskift skakprogram"
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr "Opgradér skakprogram"
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr "Kopiér turnering"
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr "Du skal angive en eksisterende turneringsfil til at kopiere"
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
-msgstr "Matchindstillinger"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
+msgstr ""
+
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Lydindstillinger"
-#: dialogs.c:363
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr "Absolutte analysescorer"
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr "Næsten altid dronning (Omvejs-underforvandling)"
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "Animeret trækudførelse"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "Animeret flytning"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "Automatisk annoncering af tidsoverskridelse"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "Automatisk vending af brættet"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "Blindskak"
# Menu til indsætning af brik på brættet i babyskak mv.
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr "Placér brik-menu"
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "Skjul tænkning fra menneske"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "Fremhæv sidste træk"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "Fremhæv med pil"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "Ét-klikstræk"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "Periodisk opdatering (i analysetilstand)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
# ... mens modstanderen er i trækket
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "Spekulér på næste træk"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "Pop op med afslutningsbeskeder"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "Pop op ved trækfejl"
-#: dialogs.c:382
+#: dialogs.c:423
msgid "Scores in Move List"
msgstr "Scorer i trækliste"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "Vis koordinater"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr "Vis målfelter"
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr "Klæbrige vinduer"
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "Test lovlighed"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr "Blink ved træk (0 = ingen blink):"
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr "Blinkhastighed (høj = hurtig):"
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr "Animeringshastighed (høj = langsom):"
-#: dialogs.c:391
+#: dialogs.c:432
msgid "Zoom factor in Evaluation Graph:"
msgstr "Zoomfaktor i evalueringsgraf:"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "Generelle indstillinger"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+#, fuzzy
+msgid "Normal"
msgstr "normal"
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr "skak960"
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "Springer"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr "Brætstørrelse (-1 = standard for valgt variant):"
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr "Antal brætrækker:"
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr "Antal brætlinjer:"
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr "Depotstørrelse:"
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+msgid "Bughouse"
msgstr ""
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr ""
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "Advarsel: det andet skakprogram (%s) understøtter ikke dette!"
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "Ny variant"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "Maksimalt antal CPU'er pr. skakprogram:"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr "Polyglot-katalog:"
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "Hashtabel-størrelse (MB):"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr "Sti til Nalimov-EGTB:"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr "EGTB-cachestørrelse (MB):"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr "Brug GUI's åbningsbog"
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr "Åbningsbogsfilnavn:"
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr "Åbningsbogsdybde (træk):"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr "Åbningsbogvariation (0) vs. styrke (100):"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr "Skakprogram nr. 1 har egen åbningsbog"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr "Skakprogram nr. 2 har egen åbningsbog"
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr "Indstillinger for skakprogrammer"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr "Find alle matter"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "Efterprøv resultatangivelser fra skakprogrammer"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr "Remis ved utilstrækkeligt matsættende materiale"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr "Døm trivielle remiser (3-træks forsinkelse)"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr "N-træksregel:"
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr "N-gange gentagelser:"
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "Remis efter i alt N træk:"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "Gevinst/tabs-tærskel:"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "Negér skakprogram nr. 1's score"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "Negér skakprogram nr. 2's score"
-#: dialogs.c:556
+#: dialogs.c:639
msgid "Adjudicate non-ICS Games"
msgstr "Døm ikke-ICS partier"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "Send kommentarer fra skakprogram"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "Gem kommentarer til træk"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "Observér automatisk"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "Bræt øverst ved partistart"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "Obsevér i baggrunden når der spilles"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "Andet bræt til baggrundsobservede partier"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "Hent trækliste"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "Stille spil"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "Søgegraf"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr "Automatisk opdatering af søgegraf"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+#, fuzzy
+msgid "Quit after game"
+msgstr "Venter på andet parti/andre partier"
+
+#: dialogs.c:665
msgid "Premove"
msgstr "Forhåndstræk"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr "Forhåndstræk for hvid"
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "Hvids første træk:"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr "Forhåndstræk for sort"
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "Sorts første træk:"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "Alarm"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr "Alarmtid (millisekunder):"
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr "Farv meddelelser"
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr "Tekstfarver for råb:"
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr "Tekstfarver for s-råb:"
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr "Tekstfarver for kanal nr. 1:"
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr "Tekstfarver for andre kanaler:"
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr "Tekstfarver for kommentar:"
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr "Tekstfarver for tale:"
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr "Tekstfarver for udfordring:"
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr "Tekstfarver for forespørgsel:"
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr "Tekstfarver for søgning:"
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "ICS-indstillinger"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr "Eksakt stilling"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr "Viste stilling er en delmængde"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr "Samme materiale med samme bondestruktur"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr "Samme materiale"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr "Materiale-interval (øverste halvdel af brættet valgfrit)"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr "Materiale-forskel (balanceret valgfrit materiale)"
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr "Automatisk visning af partidata"
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr "Automatisk visning af kommentarer"
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
"Hastighed af gennemspilning af indlæste partier\n"
"(0 = øjeblikkeligt, -1 fra):"
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr "Sekunder pr. træk:"
# Ingen grund til ikke at bruge stort begyndelsesbogstav her.
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
"\n"
"Indstillinger til brug ved gennemkigning af partier:"
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
"\n"
"Grænseværdier for stillingsfiltrering i partiliste:"
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr "Stærkeste spillers rating er mindst:"
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr "Svageste spillers rating er mindst:"
-#: dialogs.c:633
+#: dialogs.c:717
msgid "No games before year:"
msgstr "Ingen partier før år:"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr "Mindste antal stillinger i følge ad gangen:"
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr "Søgemetode:"
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr "Match også omvendte farver"
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr "Match også spejlvendt stilling"
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "Indstillinger for indlæsning af parti"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr "Gem partier automatisk"
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr "Gem partier i filen:"
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr "Gem slutstillinger i filen:"
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr "Event-tekst i PGN-fil:"
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr "Gammel gemmestil (i modsætning til PGN)"
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr "Brug partinumre i PGN-fil for turnering"
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr "Gem score/dybde-information i PGN"
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr "Gem ud af åbningsbog-info i PGN "
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "Indstillinger for gemning af parti"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "Ingen lyd"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "Standard bip"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr "WAV-filen ovenfor"
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr "Bilhorn"
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr "Bækken"
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr "Ding"
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr "Gongon"
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr "Laser"
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr "Straffe"
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr "Telefon"
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr "Plop"
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr "Slag"
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr "Dunk"
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr "Brugerfil"
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr "Bruger WAV-fil:"
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr "Lydprogram:"
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr "Afprøv lyd:"
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "Afspil"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr "Træk:"
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr "Gevinst:"
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr "Tab:"
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr "Remis:"
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr "Uafsluttet:"
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr "Alarm:"
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr "Udfodring:"
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr "Lydkatalog:"
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr "Råb:"
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr "S-råb:"
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr "Kanal:"
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr "Kanal 1:"
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr "Tale:"
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr "Kommentar:"
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr "Forespøgsel:"
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr "Søgning:"
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "Lydindstillinger"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr "Farve for hvide brikker:"
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr "R"
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr "G"
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr "B"
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr "M"
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr "Farve for sorte brikker:"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "Farve for lyse felter:"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "Farve for mørke felter:"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "Farve til fremhævelse:"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr "Farve til forhåndstræk:"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr "Ombyt brikker som i shogi (Farvede knapper gendanner standard)"
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr "Monokrom-tilstand"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+#, fuzzy
+msgid "Line Gap (-1 = default for board size):"
msgstr "Mellemrum mellem felter (-1 = standard for brætstørrelsen):"
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr "Brug brætteksturer"
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr "Teksturfil for lyse felter:"
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr "Teksturfil for mørke felter:"
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
#, fuzzy
msgid "Directory with Pieces Images:"
msgstr "Katalog med bitmap-brikker:"
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "Brætindstillinger"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr "ICS-tekstmenu"
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr "ryd"
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr "gem ændringer"
-#: dialogs.c:1051
+#: dialogs.c:1138
msgid "Edit book"
msgstr "Redigér åbningsbog"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "Partidata"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr "ICS-inputboks"
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr "Tast et træk"
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr "Skakprogrammet har ingen tilvalg"
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr "Indstillinger for skakprogram"
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr "Vælg skakprogram fra liste:"
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr "eller specificér en herunder:"
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr "Kaldenavn (ikke nødvendigt):"
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr "Brug kaldenavnet som spillerbetegnelse i PGN-filer"
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr "Skakprogramkatalog:"
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr "Skakprogramkommando:"
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr "(Katalog vil blive udledt fra programstien hvis ikke udfyldt)"
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr "UCI"
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr "WB-protokol v1 (brug ikke særlige skakprogramfunktioner)"
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr "Må ikke bruge GUI's åbningsbog"
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr "Tilføj dette skakprogram til listen"
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr "Brug aktuel variant med dette skakprogram"
-#: dialogs.c:1341
+#: dialogs.c:1428
#, fuzzy
msgid "Load first engine"
msgstr "Indlæs skakprogram"
-#: dialogs.c:1347
+#: dialogs.c:1434
#, fuzzy
msgid "Load second engine"
msgstr "Indlæs skakprogrammet som"
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr "bland brikker"
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "Startstillingsnummer:"
-#: dialogs.c:1372
+#: dialogs.c:1459
msgid "randomize"
msgstr "vælg tilfældigt"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr "vælg bestemt"
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "Nyt blandet parti"
# Stort begyndelsesbogstav med vilje
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr "Klassisk"
# Stort begyndelsesbogstav med vilje
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr "Tillægstid"
# Stort begyndelsesbogstav med vilje
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr "Maks. pr. træk"
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr "Træk pr. tidsperiode:"
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr "Tid fra start (minutter):"
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr "Tillægstid eller maks. pr. træk (sekunder):"
-#: dialogs.c:1415
+#: dialogs.c:1502
msgid "Time-Odds factors:"
msgstr "Tidsforkortelses-faktorer:"
-#: dialogs.c:1416
+#: dialogs.c:1503
msgid "Engine #1"
msgstr "Skakprogram nr. 1"
-#: dialogs.c:1417
+#: dialogs.c:1504
msgid "Engine #2 / Human"
msgstr "Skakprogram nr. 2 / menneske"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr "Ubrugt"
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr "Betænkningstid"
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "Fejl ved skrivning til skakprogram"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
msgid "Cancel"
msgstr "Annullér"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "Konge"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr ""
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "Springer"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Løber"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Tårn"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr ""
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr ""
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Dronning"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "Bondeforvandling"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr "standard"
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "op"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "ned"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr "Ingen overskrift valgt"
-#: dialogs.c:1793
+#: dialogs.c:1883
msgid "Game-list options"
msgstr "Indstillinger for partiliste"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "Fejl"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "Fatal fejl"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "Afslutter"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "Meddelelse"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "Notits"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Hvid"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Bonde"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr ""
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr ""
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr ""
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Tomt felt"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "Ryd bræt"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Sort"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "Fil"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "Redigér"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr "Vis"
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "Tilstand"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "Handlinger"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr "Skakprogram"
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "Indstillinger"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Hjælp"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
#, fuzzy
msgid "Directories:"
msgstr "Lydkatalog:"
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "Fil"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "Filter:"
-#: dialogs.c:2371
+#: dialogs.c:2465
#, fuzzy
msgid "New directory"
msgstr "Skakprogramkatalog:"
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "Filter:"
-#: dialogs.c:2447
+#: dialogs.c:2541
#, fuzzy
msgid "Contents of"
msgstr "Kommentarer"
-#: dialogs.c:2473
+#: dialogs.c:2567
#, fuzzy
msgid " next page"
msgstr "næste side"
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, c-format
msgid "Engine Output"
msgstr "Output fra skakprogram"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
# NPS = Nodes pr. second
# SPS = Stillinger pr. sekund (i motoranalyse)
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "SPS"
msgid "Reading game file (%d)"
msgstr "Læser partifil (%d)"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr "%s: kan ikke cd til CHESSDIR: "
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr "Åbning af filen \"%s\" mislykkedes\n"
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
"Genoversæt med større BOARD_RANKS eller BOARD_FILES for at understøtte denne "
"størrelse"
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr "%s: forkert boardSize-syntaks %s\n"
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr "%s: ikke genkendt boardSize-navn %s\n"
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr "%s: for få farver tilgængelige; prøver monokrom tilstand\n"
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr "Kan ikke lave skrifttypegruppe for %s.\n"
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr "%s: Ingen skrifttyper matcher mønstret %s\n"
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr "Kan ikke åbne midlertidig fil"
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
msgid "Failed to open file"
msgstr "Åbning af fil mislykkedes"
msgstr "Nyt blandet parti"
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "Nyt blandet parti ..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr "Ny variant"
#: menus.c:586
#: menus.c:684
#, fuzzy
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr "Indlæs nyt skakprogram ..."
#: menus.c:685
#, fuzzy
-msgid "Load New 2nd Engine ..."
+msgid "Load New 2nd Engine..."
msgstr "Indlæs nyt skakprogram ..."
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "Indstillinger for skakprogram nr. 1 ..."
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "Indstillinger for skakprogram nr. 2 ..."
#: menus.c:690
msgstr "Annullér træk Ctrl+X"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "Generelle ..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "Betænkningstid"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr "Skakprogram ... Alt+Shift+U"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr "Afgørelser ... Alt+Shift+J"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS ..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
-msgstr "Match ..."
+msgid "Tournament..."
+msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "Indlæs parti ..."
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "Gem parti ..."
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "Partiliste ..."
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "Lyde ..."
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr "E-mail fejlrapport"
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
#, fuzzy
msgid "engine name"
msgstr "Skakprogram nr. 1"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
#, fuzzy
msgid "move"
msgstr "Forhåndstræk"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "Output fra skakprogram"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
msgstr "%s: ikke genkendt farve %s\n"
#: usystem.c:230
-#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+#, fuzzy, c-format
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr "%s: kan ikke fortolke forgrundsfarve i \"%s\"\n"
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr "%s: kan ikke fortolke farvenavne; deaktiverer farvning\n"
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr "FEJL: Ukendt bruger %s (i stien %s)\n"
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr "Er ikke konfigureret med sokkelunderstøttelse"
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr "intern rcmd er ikke implementeret til Unix"
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr "%s: Har ikke adgang til XPM-katalog %s\n"
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr "Tilgængelige \"%s\"-størrelser:\n"
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr "Fejl: Ingen \"%s\"-filer!\n"
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-"Advarsel: Ingen DIR-struktur fundet på dette system --\n"
-" Kan ikke vælge størrelse for XPM/XIM-brikker.\n"
-" Rappotér venligst denne fejl til %s.\n"
-" Inkludér systemtype og styresystem i beskeden.\n"
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr "hvid pixel = 0x%lx, sort pixel = 0x%lx\n"
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr "Fejl %d ved indlæsning af ikonbillede\n"
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr "gennemse"
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "o.k."
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "annullér"
+#, fuzzy
+#~ msgid " (for concurrent playing of a single"
+#~ msgstr "Synkronisér efter runde (for samtidig afvikling af en"
+
+#~ msgid "Match Options"
+#~ msgstr "Matchindstillinger"
+
+#~ msgid "ICS ..."
+#~ msgstr "ICS ..."
+
+#~ msgid "Match ..."
+#~ msgstr "Match ..."
+
+#~ msgid "%s: Can't access XPM directory %s\n"
+#~ msgstr "%s: Har ikke adgang til XPM-katalog %s\n"
+
+#~ msgid "Available `%s' sizes:\n"
+#~ msgstr "Tilgængelige \"%s\"-størrelser:\n"
+
+#~ msgid "Error: No `%s' files!\n"
+#~ msgstr "Fejl: Ingen \"%s\"-filer!\n"
+
+#~ msgid ""
+#~ "Warning: No DIR structure found on this system --\n"
+#~ " Unable to autosize for XPM/XIM pieces.\n"
+#~ " Please report this error to %s.\n"
+#~ " Include system type & operating system in message.\n"
+#~ msgstr ""
+#~ "Advarsel: Ingen DIR-struktur fundet på dette system --\n"
+#~ " Kan ikke vælge størrelse for XPM/XIM-brikker.\n"
+#~ " Rappotér venligst denne fejl til %s.\n"
+#~ " Inkludér systemtype og styresystem i beskeden.\n"
+
+#~ msgid "Error %d loading icon image\n"
+#~ msgstr "Fejl %d ved indlæsning af ikonbillede\n"
+
+#~ msgid "cancel"
+#~ msgstr "annullér"
#~ msgid "recognized '%s' (%d) as variant %s\n"
#~ msgstr "genkendte \"%s\" (%d) som variant %s\n"
#
msgid ""
msgstr ""
-"Project-Id-Version: xboard 4.6.0.20121211\n"
+"Project-Id-Version: xboard 4.7.2\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
-"PO-Revision-Date: 2013-01-20 18:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
+"PO-Revision-Date: 2013-11-24 18:22-0800\n"
"Last-Translator: Arun Persaud <arun@nubati.net>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr "Falscher Integer-wert %s"
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr "Nicht erkanntes Argument %s"
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr "Fehlender Wert für Argument %s"
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr "Unvollständiges \\ escape im Wert von »%s«"
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr "Fehler beim Öffnen der Datei »%s«"
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr "Nicht anerkannter logischer Wert für Argument %s"
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr "erstes"
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr "zweites"
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "Protokollversion %d nicht unterstützt"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr "Das Computerprogramm für das Schachprogramm wurde nicht angegeben"
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "falsche timeControl-Option %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "falsche searchTime-Option %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "Variante %s wird nur im ICS-Modus unterstützt"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "Unbekannte Variante mit Namen %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "Starte Schachprogramm"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "Fehler in Partiedatei"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "Fehler in Positionsdatei"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr "Wähle neues Spiel"
-#: backend.c:1488
+#: backend.c:1552
+#, fuzzy
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
"Ein schon beendetes Turnier wurde neu gestartet\n"
"Eine neue Runde wird hinzugefügt\n"
"Die Spiele werden in 10 Sekunden starten"
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr "Alle Spiele im Turnier »%s« sind entweder beendet oder werden gespielt"
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "Partie ohne Schachprogram ist nicht möglich"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "Konnte Kommunikationsport %s nicht öffnen"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr ""
"Verbindung zu Hostrechner %s, Portnummer %s konnte nicht hergestellt werden"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "Unbekannter initalMode %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "»Analysiere Datei«-Modus benötigt eine Partiedatei"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "Analyse-Modus benötigt ein Schachprogramm"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "Analyse-Modus funktioniert nicht im ICS-Modus"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "»Schachprogramm Weiß«-Modus benötigt ein Schachprogramm"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "»Schachprogramm Weiß«-Modus funktioniert nicht im ICS-Modus"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "»Schachprogramm Schwarz«-Modus benötigt ein Schachprogramm"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "»Schachprogramm Schwarz«-Modus funktioniert nicht im ICS-Modus"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr "»Zwei Schachprogramme«-Modus benötigt ein Schachprogramm"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "»Zwei Schachprogramme«-Modus funktioniert nicht im ICS-Modus"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "Trainieren-Modus benötigt eine Partiedatei"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "Fehler beim Schreiben zum ICS"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "Fehler beim Lesen der Tastatur"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "Habe Ende-der-Datei von der Tastatur erhalten"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr "Unbekannter wild-Variante %d"
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "Fehler beim Schreiben auf dem Display"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr "Dein Gegner kibitzt: %s"
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "Fehler beim Erstellen der Zugliste: zwei Dateiköpfe"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "Fehler beim Erstellen der Zugliste: verschachtelt"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr "gegen"
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr "Illegaler Zug (abgelehnt vom ICS)"
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "Verbindung zum ICS beendet"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "Fehler beim Lesen vom ICS"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"Konnte Schachbrettzeichenkette nicht parsen:\n"
"»%s«"
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr "Partie zu lang; erhöhe MAX_MOVES und kompiliere neu"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "Fehler beim Erstellen der Zugliste: extra Schachbrett"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "Konnte Zug »%s« vom ICS nicht parsen"
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "Interner Fehler; falscher moveType %d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr "Dies ist nicht möglich während oder beim Zuschauen eines Spieles"
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr "Kompiliere erneut mit Unterstützung von BOARD_RANKS oder BOARD_FILES!"
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "Sie spielen Schwarz"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "Sie spielen Weiß"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "Weiß ist am Zug"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "Schwarz ist am Zug"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "Angezeigte Position ist nicht die Aktuelle"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "Ungültiger Zug"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "Ende des Spiels"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "Ungültiger Zug"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr "Bewege Bauern rückwärts zum Unterverwandeln"
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr "Turnier im Schweizer System beendet"
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr "Ungültige Paarungen vom Paarungsprogramm"
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "Illegaler Zug »%s« vom Schachprogramm %s"
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr "Schlechte FEN vom Schachprogramm erhalten"
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s unterstützt keine Analyse"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr "Illegaler Zug »%s« (abgelehnt vom Schachprogram %s)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "Konnte %s Schachprogram %s auf %s nicht starten: %s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "Hinweis: %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"Illegaler Zughinweis »%s«\n"
"vom Schachprogramm %s"
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
-msgstr "Das Schachprogramm akzeptiert dein Remiangebot"
+msgstr "Das Schachprogramm akzeptiert dein Remisangebot"
-#: backend.c:8898
+#: backend.c:9320
+#, fuzzy
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-"Das Schachprogramm bietet Remi an\n"
-"Wähle Aktion/Remi, um anzunehmen"
+"Das Schachprogramm bietet Remis an\n"
+"Wähle Aktion/Remis, um anzunehmen"
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr "schreiben des PV fehlgeschlagen"
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "Nicht eindeutiger Zug in der ICS-Ausgabe: »%s«"
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "Illegaler Zug in der ICS-Ausgabe: \"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "Lücke in Zugliste"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "Variante %s wird von %s nicht unterstützt"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "Fehler beim Starten »%s«"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "Warte auf erstes Schachprogramm"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "Warte auf zweites Schachprogramm"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr "Schreibzugriff auf Turnierdatei nicht möglich"
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
"Ersetzen eines Schachprogramms während es läuft nicht möglich!\n"
"Beenden Sie das Spiel zuerst."
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr "Ein Schachprogram mit dem angegebenen Namen ist nicht installiert"
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
"Ändern Sie ein Schachprogramm indem Sie die Liste der Teilnehmner\n"
"im Turnieroptionendialog editieren"
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr "Sie können immer nur ein Schachprogramm ändern"
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr "Das Schachprogram %s ist nicht installiert"
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
"Sie müssen eine Turnierdatei zum Speichern\n"
"der Turnierdaten angeben"
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr "Nicht genügend Teilnehmer"
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr "Fehler in Turnierdatei"
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr "Warte auf weiter Spiele"
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr "Kein Paarungsprogram angegeben"
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "Partie %s gegen %s: Endergebnis %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "Illegaler Zug: %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "Nicht eindeutiger Zug: %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "Kann »%s« nicht öffnen"
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "Kann Zugliste nicht erstellen"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "Keine weiteren Partien in dieser Nachricht"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "Noch keine Partie geladen"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "Kann nicht weiter zurückgehen"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "Partienummer außerhalb des Bereichs"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "Kann nicht in der Partiedatei suchen"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "Spiel in Datei nicht gefunden"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "Schlechte FEN-Stellung in Datei"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "Keine Züge in dem Spiel"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "Noch keine Stellung geladen"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "Kann nicht in Stellungsdatei suchen"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "Stellung in Datei nicht gefunden"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "Schwarz am Zug"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "Weiß am Zug"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr "Warte auf Zugriff zur Datei zum Speichern"
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr "Speichere Spiel"
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr "Fehlerhafte Suche"
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr "Speichere Stellung "
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
"Sie haben die Partieentwicklung verändert.\n"
"Benutzen Sie »Spiel erneut laden« und führen Sie ihren Zug erneut aus."
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
"Sie haben zu viele Züge eingegeben.\n"
"Gehen Sie zur richtigen Stellung zurück und versuchen Sie es erneut."
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
"Die angezeigt Stellung ist nicht die aktuelle.\n"
"Gehen Sie vorwärts zur richtigen Stellung und versuchen Sie es erneut."
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "Sie haben noch keinen Zug gemacht"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
"Benutzen sie »CMail Nachricht erneut laden« und führen Sie ihren Zug erneut "
"aus."
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "Keine laufenden Partien"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"»cmail -remail -game %s«\n"
"in die Kommandozeile."
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "Fehler beim Aufruf von cmail"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "Warte auf Antwort des Gegners\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "Sie müssen noch einen Zug für die Partie machen\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "Sie müssen noch Züge für beide Partien machen\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "Sie müssen noch Züge für alle %d Partien machen\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "Sie müssen noch einen Zug für Partie %s machen\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "Keine laufenden Partien\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "Bereit zum Versenden der Mail\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "Sie müssen noch Züge für Partie %s machen\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "Editiere Kommentar"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "Editiere Kommentar für %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr "Sie schauen keiner Partie zu"
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "Weiß ist nicht am Zug"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "Schwarz ist nicht am Zug"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr "Starte %s Schachprogramm"
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
+"or select 'Move Now'."
msgstr ""
"Warte bis Sie am Zug sind\n"
"oder wähle »Ziehe jetzt«"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "Trainier-Modus aus"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "Trainier-Modus ein"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "Schon am Ende der Partie"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "Warnung: Sie spielen noch eine Partie"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "Warnung: Sie schauen noch einer Partie zu"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "Warnung: Sie untersuchen noch eine Partie"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr "Klicke auf eine Uhr, um das Brett zu leeren"
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr "Schließe ICS Programmanalyse…"
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "Dieses Feld ist besetzt"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "Es liegt kein unbeantwortes Angebot für diesen Zug vor"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "Ihr Gegner hat die Zeit noch nicht überschritten"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
-msgstr "Sie müssem erst ziehen bevor Sie Remi anbieten können"
+msgstr "Sie müssem erst ziehen bevor Sie Remis anbieten können"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "Sie untersuchen keine Partie"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "Sie können nicht zurücknehmen solange die Partie pausiert"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "Sie sind am Zug"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "Warten Sie bis Sie am Zug sind"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "Kein Hinweis erhältlich"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
msgid "Game list not loaded or empty"
msgstr "Noch keine Partie geladen"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr "Buchdatei existiert! Versuche erneut zum Überschreiben."
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "Fehler beim Schreiben zum Schachprogramm %s"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
-msgstr "%s Schachprogramm beendet in Remistellung (%s)"
+msgstr "%s Schachprogramm beendet in Remisstellung (%s)"
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "Fehler: %s Schachprogramm (%s) unerwartet beendet"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "Fehler beim Lesen vom Schachprogramm %s (%s)"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr "Schachprogramm %s hat zu viele Optionen\n"
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "Angezeigter Zug ist nicht aktuell"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "Konnte Zug nicht parsen"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "Beide Zeitkontrollen überschritten"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "Weiß überschritt die Zeitkontrolle"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "Schwarz überschritt die Zeitkontrolle"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr "Veränderungen an der Uhr sind im »Auto-flag«-Modus nicht erlaubt"
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "Schlechte FEN-Stellung in der Zwischenablage"
msgid "Could not create book"
msgstr "Konnte Buch nicht erzeugen"
-#: dialogs.c:259
+#: dialogs.c:283
msgid "Tournament file: "
msgstr "Turnierdatei: "
-#: dialogs.c:260
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
+msgstr ""
+
+#: dialogs.c:285
msgid "Sync after round"
msgstr "Sync. nach der Runde"
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
-msgstr ""
-
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr "Sync. nach Zyklus"
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr "Tunierteilnehmer:"
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr "Wähle Schachprogramm:"
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr "Turniertyp (0 = round-robin, 1 = gauntlet):"
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr "Anzahl der Turnierrunden:"
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr ""
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr "Pause zwischen Tournierspielen (msek):"
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr "Speichere Turnierspiele:"
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr "Datei mit Startstellung:"
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr "Zeitkontrolle"
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "Allgemein Schachprogramme…"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Allgemeine Einstellungen"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr "Ersetze Schachprogramm"
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr "Ersetze Schachprogramm"
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr "Klone Turnier"
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
"Bitte geben Sie zuerst eine existierende Turnierdatei, die geklont werden "
"kann"
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr "# keine Schachprogramme installiert"
-#: dialogs.c:344
-msgid "Match Options"
-msgstr "Partieeinstellungen"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
+msgstr ""
+
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Klangeinstellungen"
-#: dialogs.c:363
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "Ziehen animieren"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "Ziehen animieren"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "Zeit automatisch reklamieren"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "Brett automatisch drehen"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "Blindschach"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
+msgstr "Erlaube Varianten"
+
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr ""
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "Letzten Zug hervorheben"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "Hervorhebung mit Pfeil"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "Ein-Klick Züge"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr ""
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "Nächsten Zug abwägen"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "Popup Nachricht beim Beenden"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "Dialogfenster für Zugfehler"
-#: dialogs.c:382
+#: dialogs.c:423
msgid "Scores in Move List"
msgstr "Bewertung in Zugliste"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "Zeige Koordinaten"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr "Zeige Zielfeld"
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr ""
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
msgid "Zoom factor in Evaluation Graph:"
msgstr "Vergrößerungsfaktor in Auswertungsgraph:"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "Allgemeine Einstellungen"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+#, fuzzy
+msgid "Normal"
msgstr "Normal"
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr ""
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
-msgstr ""
+#: dialogs.c:456
+#, fuzzy
+msgid "Wild castle"
+msgstr "keine Rochade"
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "Springer"
-#: dialogs.c:416
-msgid "no castle"
-msgstr ""
+#: dialogs.c:458
+#, fuzzy
+msgid "No castle"
+msgstr "keine Rochade"
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
+msgstr "Zwei Könige"
+
+#: dialogs.c:464
+msgid " "
+msgstr " "
+
+#: dialogs.c:465
+msgid "Spartan"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
-msgstr ""
+msgstr "Brettgröße (-1 = default für gewählte Variante):"
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr "Anzahl der Reihen:"
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr "Anzahl der Linien:"
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+#, fuzzy
+msgid "Bughouse"
msgstr "Tandemschach"
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
-msgstr ""
+#: dialogs.c:483
+#, fuzzy
+msgid "Suicide"
+msgstr "Räuberschach"
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr ""
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
-msgstr " "
+#: dialogs.c:491
+msgid "mighty lion"
+msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "Warnung: zweites Schachprogramm (%s) unterstützt dies nicht!"
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "Neue Variante"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "Maximal Anzahl der CPUs pro Schachprogram:"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr "Polyglot-verzeichnis:"
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "Größe der Hashtabelle (MB):"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr ""
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr ""
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr "Dateiname des Eröffnungsbuches:"
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr ""
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr ""
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr ""
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr ""
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr ""
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr ""
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr ""
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr ""
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr "N-Züge Regel:"
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
-msgstr "Remi nach N Zügen (total):"
+msgstr "Remis nach N Zügen (total):"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "Gewinn/Verlust Grenzwert:"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "Negiere Bewertung des 1. Schachprogramms"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "Negiere Bewertung des 2. Schachprogramms"
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "Gewinn Weiß zuerkennen"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "Auto-Kibitz"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "Automatische Kommentare"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "Automatisch Beobachten"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "Automatisch das Brett in den Vordergrung bringen"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr "Automatisch Login-skript erzeugen"
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "Beobachte im Hintegrund während einer Partie"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "Zweites Brett für beobachtetes Spiel"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "Zugliste abholen"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr ""
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
-msgstr ""
+msgstr "Suchgraph"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr ""
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+#, fuzzy
+msgid "Quit after game"
+msgstr "Warte auf weiter Spiele"
+
+#: dialogs.c:665
msgid "Premove"
msgstr ""
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "Erster Zug von Weiß:"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "Erster Zug von Schwarz:"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "Alarm"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr "Alarmzeit (msek):"
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr "Nachrichten kolorieren"
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr "Textfarbe Ruf:"
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr "Textfarbe S-Ruf:"
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr "Textfarbe Kanal #1:"
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr "Textfarbe andere Kanäle:"
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr "Textfarbe Kibitz:"
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr "Textfarbe Mitteilung:"
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
-msgstr ""
+msgstr "Textfarbe Herausforderung:"
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
-msgstr ""
+msgstr "Textfarbe Spielgesuch:"
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "ICS Optionen"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr "Gleiches Material mit genau gleicher Bauernstruktur"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr "Gleiches Material"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr "Sekunden pro Zug:"
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr "Mind. Elo des stärksten Spielers:"
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr "Mind. Elo des schwächsten Spielers:"
-#: dialogs.c:633
+#: dialogs.c:717
msgid "No games before year:"
msgstr "Keine Partie vor Jahr:"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr "Such-modus:"
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "Spieleinstellungen laden"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr "Automatisch Partien speichern"
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
-msgstr ""
+msgstr "Nur eigene Partien"
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr "Partien speichern als Datei:"
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr "Speichere Endstellung in Datei:"
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "Spieleinstellungen speichern"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "Kein Ton"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr ""
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr "Hupe"
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr "Laser"
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr "Benutzerdatei"
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr "Teste Geräusch:"
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "Spielen"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr "Zug:"
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr "Gewonnen:"
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr "Verloren:"
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
-msgstr "Remi:"
+msgstr "Remis:"
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr "Nicht beendet:"
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr "Alarm:"
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
-msgstr ""
+msgstr "Herausforderung:"
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
-msgstr ""
+msgstr "Klangverzeichnis:"
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr "Ruf:"
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr "S-Ruf:"
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr "Kanal:"
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr "Kanal 1:"
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr "Mitteilung:"
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr "Kibitz:"
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr "Gesuch:"
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "Klangeinstellungen"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
-msgstr ""
+msgstr "Farbe weiße Figuren:"
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr "R"
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr "G"
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr "B"
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr "D"
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
-msgstr ""
+msgstr "Farbe schwarze Figuren:"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "Weißes Feld:"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "Schwarzes Feld:"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "Farbe zum Hervorheben:"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr ""
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr ""
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
-msgstr ""
+msgstr "Benutze Bretttexturen"
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
-msgstr ""
+msgstr "Texturedatei für weiße Felder:"
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
-msgstr ""
+msgstr "Texturdatei für schwarze Felder:"
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
-msgstr ""
+msgstr "Benutze externe Figurebitmaps mit deren Farben"
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
-msgstr ""
+msgstr "Verzeichnis mit Bildern für Figuren:"
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "Bretteinstellungen"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
-msgstr "ICS-Textmenue"
+msgstr "ICS-Textmenü"
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr "speichere Änderungen"
-#: dialogs.c:1051
+#: dialogs.c:1138
msgid "Edit book"
-msgstr "Bearbeite Buch"
+msgstr "Buch editieren"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "Markierungen"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr "ICS Eingabefeld"
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr "Geben Sie einen Zug ein"
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr "Schachprogramm hat keine Optionen"
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr "Schachprogrammeinstellungen"
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr "Wähle Schachprogram aus der Liste:"
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
-msgstr ""
+msgstr "Spitzname (optional):"
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
-msgstr ""
+msgstr "Schachprogramkommando:"
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
-msgstr ""
+msgstr "(Verzeichnis wird vom Schachprogrampfad genommen, falls leer)"
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr "Füge diese Schachprogramm zur Liste hinzu"
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr "Lade erstes Schachprogramm"
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr "Lade zweites Schachprogramm"
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr "Shuffle"
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "Startposition-Nummer:"
-#: dialogs.c:1372
+#: dialogs.c:1459
msgid "randomize"
msgstr "zufällig"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "Neue Shuffle-Partie"
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr "klassisch"
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr "Zuwachs"
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
msgid "Time-Odds factors:"
msgstr ""
-#: dialogs.c:1416
+#: dialogs.c:1503
msgid "Engine #1"
msgstr "Schachprogramm #1"
-#: dialogs.c:1417
+#: dialogs.c:1504
msgid "Engine #2 / Human"
msgstr "Schachprogram #2 / Spieler"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr "Nicht benutzt"
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr "Zeitkontrolle"
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "Fehler beim Schreiben zum Schachprogramm"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
msgid "Cancel"
msgstr "Abbrechen"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "König"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr "Kapitän"
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr "Leutnant"
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "General"
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr "Kriegsherr"
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "Springer"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Läufer"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Turm"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "Erzbischof"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "Kanlzer"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Königin"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr "vertagen"
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "umwandlung"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr "Fabrik"
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "hoch"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "runter"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr "Keine Markierung selektiert"
-#: dialogs.c:1793
+#: dialogs.c:1883
msgid "Game-list options"
msgstr "Spieleliste-optionen"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "Fehler"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "Schwerwiegender Fehler"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "Beende"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "Information"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "Notiz"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Weiß"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Bauer"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "Elefant"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "Kanone"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "degradieren"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Leeres Feld"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "Brett leeren"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Schwarz"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "Datei"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "Bearbeiten"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr "Anzeigen"
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "Modus"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "Aktion"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr "Schachprogramm"
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "Optionen"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Hilfe"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr "Verzeichnisse:"
-#: dialogs.c:2365
+#: dialogs.c:2459
msgid "Files:"
msgstr "Dateien:"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr "nach Namen"
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr "nach Typ"
-#: dialogs.c:2370
+#: dialogs.c:2464
msgid "Filename:"
msgstr "Dateinname:"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr "Neues Verzeichnis"
-#: dialogs.c:2372
+#: dialogs.c:2466
msgid "File type:"
msgstr "Dateientyp:"
-#: dialogs.c:2447
+#: dialogs.c:2541
msgid "Contents of"
msgstr "Inhalt von"
-#: dialogs.c:2473
-#, fuzzy
+#: dialogs.c:2567
msgid " next page"
msgstr "nächste Seite"
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr "VERSUCHE EINEN ANDEREN NAMEN"
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, c-format
msgid "Engine Output"
msgstr "Schachprogrammausgabe"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "NPS"
msgid "Reading game file (%d)"
msgstr "Lese Partiedatei (%d)"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr "%s: cd zu CHESSDIR funktioniert nicht: "
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr "Fehler beim Öffnen der Datei '%s'\n"
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
"Kompiliere erneut mit größeren BOARD_RANKS oder BOARD_FILES, um diese Größe "
"zu unterstützen"
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr "%s: falsche boardSize Syntax %s\n"
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr "%s: unbekannter Name fuer boardSize %s\n"
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr "%s: nicht genügend Farben vorhanden; versuche monochrom Modus\n"
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr "Nicht in der Lage Schriftsatz für %s zu generieren.\n"
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr "%s: keine Schriften stimmen mit Muster %s überein\n"
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr "Kann temporäre Datei nicht öffnen"
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
msgid "Failed to open file"
msgstr "Fehler beim Öffnen der Datei"
msgstr "Über XBoard"
#: menus.c:582
-#, fuzzy
msgid "New Game"
-msgstr "Neue Shuffle-Partie"
+msgstr "Neue Partie"
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "Neue Shuffle Partie… "
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
-msgstr "Neue Variante"
+msgid "New Variant..."
+msgstr "Neue Variante…"
#: menus.c:586
-#, fuzzy
msgid "Load Game"
msgstr "Partie laden…"
#: menus.c:587
-#, fuzzy
msgid "Load Position"
-msgstr "Nächste Stellung laden"
+msgstr "Stellung laden"
#: menus.c:588
-#, fuzzy
msgid "Next Position"
-msgstr "Nächste Stellung laden"
+msgstr "Nächste Stellung"
#: menus.c:589
-#, fuzzy
msgid "Prev Position"
-msgstr "Vorherige Stellung laden"
+msgstr "Vorherige Stellung"
#: menus.c:591
-#, fuzzy
msgid "Save Game"
msgstr "Partie speichern…"
#: menus.c:592
-#, fuzzy
msgid "Save Position"
-msgstr "Speichere Stellung "
+msgstr "Speichere Stellung"
#: menus.c:593
msgid "Save Games as Book"
-msgstr "Partien speichern als Buch:"
+msgstr "Partien speichern als Buch"
#: menus.c:595
msgid "Mail Move"
msgstr ""
#: menus.c:603
-#, fuzzy
msgid "Copy Game"
-msgstr "Partieliste kopieren"
+msgstr "Partie kopieren"
#: menus.c:604
-#, fuzzy
msgid "Copy Position"
-msgstr "Stellung kopieren Strg+Umschalt+C"
+msgstr "Stellung kopieren"
#: menus.c:605
msgid "Copy Game List"
msgstr "Partieliste kopieren"
#: menus.c:607
-#, fuzzy
msgid "Paste Game"
-msgstr "Spiel zurücksetzen"
+msgstr "Partie einfügen"
#: menus.c:608
-#, fuzzy
msgid "Paste Position"
-msgstr "Nächste Stellung laden"
+msgstr "Stellung einfügen"
#: menus.c:610 menus.c:652
-#, fuzzy
msgid "Edit Game"
-msgstr "Editiere Kommentar"
+msgstr "Partie editiere"
#: menus.c:611 menus.c:653
-#, fuzzy
msgid "Edit Position"
-msgstr "Nächste Stellung laden"
+msgstr "Stellung editieren"
#: menus.c:612
msgid "Edit Tags"
msgstr "Annotieren"
#: menus.c:618
-#, fuzzy
msgid "Truncate Game"
-msgstr "Partie abbrechen End"
+msgstr "Partie abbrechen"
#: menus.c:620
msgid "Backward"
msgstr "Vorwärts"
#: menus.c:622
-#, fuzzy
msgid "Back to Start"
-msgstr "Schwarz am Zug"
+msgstr "Zurück zum Anfang"
#: menus.c:623
-#, fuzzy
msgid "Forward to End"
-msgstr "Vorwärts zum Ende Alt+End"
+msgstr "Zur Schlussstellung"
#: menus.c:628
-#, fuzzy
msgid "Flip View"
-msgstr "Brett automatisch drehen"
+msgstr "Brett drehen"
#: menus.c:631
-#, fuzzy
msgid "Move History"
msgstr "Zugliste"
#: menus.c:632
-#, fuzzy
msgid "Evaluation Graph"
msgstr "Auswertungsgraph"
#: menus.c:633
-#, fuzzy
msgid "Game List"
-msgstr "Partieliste…"
+msgstr "Partieliste"
#: menus.c:637
msgid "Comments"
msgstr "Partie Markierungen…"
#: menus.c:647
-#, fuzzy
msgid "Machine White"
-msgstr "Schachprogramm weiß Strg+W"
+msgstr "Schachprogramm weiß"
#: menus.c:648
-#, fuzzy
msgid "Machine Black"
-msgstr "Schachprogramm Partie"
+msgstr "Schachprogramm schwarz"
#: menus.c:649
-#, fuzzy
msgid "Two Machines"
-msgstr "Zwei Schachprogramme Strg+T"
+msgstr "Zwei Schachprogramme"
#: menus.c:650
-#, fuzzy
msgid "Analysis Mode"
-msgstr "Analyse-Modus Strg+A"
+msgstr "Analyse-Modus"
#: menus.c:651
-#, fuzzy
msgid "Analyze Game"
-msgstr "Spiel analysieren Strg+G"
+msgstr "Spiel analysieren"
#: menus.c:654
msgid "Training"
#: menus.c:655
msgid "ICS Client"
-msgstr "ICS-client"
+msgstr "ICS-Client"
#: menus.c:657
msgid "Machine Match"
msgstr ""
#: menus.c:667
-#, fuzzy
msgid "Call Flag"
-msgstr "Zeit reklamieren F5"
+msgstr "Zeit reklamieren"
#: menus.c:668
-#, fuzzy
msgid "Draw"
-msgstr "Remi:"
+msgstr "Remis"
#: menus.c:669
msgid "Adjourn"
msgstr "Aufgeben"
#: menus.c:673
-#, fuzzy
msgid "Stop Observing"
-msgstr "Beobachtung beenden F10"
+msgstr "Beobachtung beenden"
#: menus.c:674
-#, fuzzy
msgid "Stop Examining"
-msgstr "Untersuchen beenden F11"
+msgstr "Untersuchen beenden"
#: menus.c:675
msgid "Upload to Examine"
#: menus.c:677
msgid "Adjudicate to White"
-msgstr "Gewinn Weiß zuerkennen"
+msgstr "Weiß den Gewinn zuerkennen"
#: menus.c:678
msgid "Adjudicate to Black"
-msgstr "Gewinn Schwartz zuerkennnen"
+msgstr "Schwarz den Gewinn zuerkennnen"
#: menus.c:679
msgid "Adjudicate Draw"
-msgstr "Remi zuerkennen"
+msgstr "Als Remis abschätzen"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+#, fuzzy
+msgid "Load New 1st Engine..."
msgstr "Neues erstes Schachprogramm laden…"
#: menus.c:685
-msgid "Load New 2nd Engine ..."
+#, fuzzy
+msgid "Load New 2nd Engine..."
msgstr "Neues zweites Schachprogramm laden…"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "Schachprogram #1 Einstellungen…"
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "Schachprogram #2 Einstellungen…"
#: menus.c:690
msgid "Hint"
-msgstr "Hinweiß"
+msgstr "Hinweis"
#: menus.c:691
msgid "Book"
msgstr "Buch"
#: menus.c:693
-#, fuzzy
msgid "Move Now"
-msgstr "Klang für Zug"
+msgstr "Jetzt ziehen"
#: menus.c:694
-#, fuzzy
msgid "Retract Move"
-msgstr "Zug zurücknehmen Strg+X"
+msgstr "Zug zurücknehmen"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "Allgemein…"
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
-msgstr "Zeitkontrolle"
+msgid "Time Control..."
+msgstr "Zeitkontrolle…"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
-msgstr "Allemein Schachprogramme… Alt+Umschalt+U"
+msgid "Common Engine..."
+msgstr "Allgemein Schachprogramme…"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
-msgstr "Zuerkennung… Alt+Umschalt+J"
+msgid "Adjudications..."
+msgstr "Zuerkennung…"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS…"
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
-msgstr "Partie…"
+msgid "Tournament..."
+msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "Partie laden…"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "Partie speichern…"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "Partieliste…"
#: menus.c:710
-msgid "Sounds ..."
-msgstr "Klang ..."
+#, fuzzy
+msgid "Sounds..."
+msgstr "Klang…"
#: menus.c:713
msgid "Always Queen"
#: menus.c:742
msgid "Info XBoard"
-msgstr "Info XBoard"
+msgstr "Info über XBoard"
#: menus.c:743
-#, fuzzy
msgid "Man XBoard"
-msgstr "Man XBoard F1"
+msgstr "XBoard-Hilfe"
#: menus.c:745
msgid "XBoard Home Page"
#: menus.c:747
msgid "Development News"
-msgstr "Entwicklungsnachrichten"
+msgstr "Entwicklungsneuigkeiten"
#: menus.c:748
msgid "e-Mail Bug Report"
-msgstr "E-mail Fehlerreport"
+msgstr "Sende Fehlerbericht"
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
msgid "engine name"
msgstr "Schachprogramm"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
msgid "move"
msgstr "Zug"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "Schachprogrammausgabe"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
msgstr "%s: nicht erkannte Farbe %s\n"
#: usystem.c:230
-#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+#, fuzzy, c-format
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr "%s: Kann Vordergrundfarbe in »%s« nicht parsen\n"
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr "%s: kann Farbname nicht parsen; deaktiere Farben\n"
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr "FEHLER: unbekannter Benutzer %s (im Pfad %s)\n"
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr "Socketunterstützung ist nicht konfiguriert"
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr "Interes rcmd ist in UNIX nicht implementiert"
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr "%s: XPM-Ordner nicht erreichbar %s\n"
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr "Mögliche »%s« Größen:\n"
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr "Fehler: Keine »%s« Datein!\n"
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-"Warnung: Keine DIR-Struktur auf dem Rechner gefunden --\n"
-" wählen einer automatischen Größe für XPM/XIM Figuren "
-"fehlgeschlagen.\n"
-" Bitte schicken Sie einen Bug-report and %s.\n"
-" Geben Sie dabei den Rechnertyp und das Betriebsystem an.\n"
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr "weißes Pixel = 0x%lx, schwarzes Pixel = 0x%lx\n"
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr "Fehler %d beim Laden von Icon\n"
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr "durchsuche"
#: xaw/xoptions.c:387 xaw/xoptions.c:388
msgid "Ctrl"
-msgstr ""
+msgstr "Strg"
#: xaw/xoptions.c:393 xaw/xoptions.c:394
msgid "Alt"
-msgstr ""
+msgstr "Alt"
#: xaw/xoptions.c:399 xaw/xoptions.c:400
msgid "Shift"
-msgstr ""
+msgstr "Umschalt"
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "OK"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "abbrechen"
+#~ msgid "Match Options"
+#~ msgstr "Partieeinstellungen"
+
+#~ msgid "ICS ..."
+#~ msgstr "ICS…"
+
+#~ msgid "Match ..."
+#~ msgstr "Partie…"
+
+#~ msgid "%s: Can't access XPM directory %s\n"
+#~ msgstr "%s: XPM-Ordner nicht erreichbar %s\n"
+
+#~ msgid "Available `%s' sizes:\n"
+#~ msgstr "Mögliche »%s« Größen:\n"
+
+#~ msgid "Error: No `%s' files!\n"
+#~ msgstr "Fehler: Keine »%s« Datein!\n"
+
+#~ msgid ""
+#~ "Warning: No DIR structure found on this system --\n"
+#~ " Unable to autosize for XPM/XIM pieces.\n"
+#~ " Please report this error to %s.\n"
+#~ " Include system type & operating system in message.\n"
+#~ msgstr ""
+#~ "Warnung: Keine DIR-Struktur auf dem Rechner gefunden --\n"
+#~ " wählen einer automatischen Größe für XPM/XIM Figuren "
+#~ "fehlgeschlagen.\n"
+#~ " Bitte schicken Sie einen Bug-report and %s.\n"
+#~ " Geben Sie dabei den Rechnertyp und das Betriebsystem an.\n"
+
+#~ msgid "Error %d loading icon image\n"
+#~ msgstr "Fehler %d beim Laden von Icon\n"
+
+#~ msgid "cancel"
+#~ msgstr "abbrechen"
#~ msgid "recognized '%s' (%d) as variant %s\n"
#~ msgstr "erkenne '%s' (%d) als Variante %s\n"
#~ msgstr "Revanche F12"
#~ msgid "Draw F6"
-#~ msgstr "Remi F6"
+#~ msgstr "Remis F6"
#~ msgid "Adjourn F7"
#~ msgstr "Aussetzen F7"
#~ msgstr "(Datei:%s) "
#~ msgid "light square "
-#~ msgstr "weisses Feld "
+#~ msgstr "weißes Feld "
#~ msgid "dark square "
-#~ msgstr "schwarze Feld "
+#~ msgstr "schwarzes Feld "
#~ msgid "Done.\n"
#~ msgstr "Fertig.\n"
# XBoard -- a graphical chessboard for X
-# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
-# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
+# Copyright (C) 2013 Free Software Foundation, Inc.
# This file is distributed under the same license as the XBoard package.
# Traducción por Óscar Toledo G., 2010
+# Antonio Ceballos <aceballos@gmail.com>, 2013
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: GNU xboard master-20110411\n"
+"Project-Id-Version: GNU xboard 4.7.2\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
+"PO-Revision-Date: 2013-12-07 00:14+0200\n"
+"Last-Translator: Antonio Ceballos <aceballos@gmail.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
-msgstr ""
+msgstr "%s en el fichero de configuración\n"
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
-msgstr ""
+msgstr "Valor entero malo %s"
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
-msgstr ""
+msgstr "Argumento no reconocido %s"
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
-msgstr ""
+msgstr "No se ha dado valor al argumento %s"
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
-msgstr ""
+msgstr "Carácter de escape \\ incompleto en el valor de %s"
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
-msgstr ""
+msgstr "Fallo al abrir fichero de indirección %s"
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
-msgstr ""
+msgstr "Valor del argumento lógico %s no reconocido"
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
-msgstr ""
+msgstr "primer"
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
-msgstr ""
+msgstr "segundo"
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "versión %d del protocolo no es admitida"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
-msgstr ""
+msgstr "No se especificó el ejecutable del motor"
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "opción timeControl incorrecta %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "opción searchTime incorrecta %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "La variante %s solo se admite en modo ICS"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "Nombre de variante desconocido %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "Iniciando programa de ajedrez"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "archivo de partidas incorrecto"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "archivo de posición incorrecto"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
-msgstr ""
+msgstr "Seleccionar una nueva partida"
-#: backend.c:1488
+#: backend.c:1552
+#, fuzzy
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
+"Se ha reiniciado un torneo que ya había concluido\n"
+"Se le va a añadir un nuevo ciclo\n"
+"Las partidas comienzan dentro de 10 s"
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
+"Ya se han disputado o se están disputando todas las partidas del torneo '%s'"
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "No se puede tener una partida sin programas de ajedrez"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "No se pudo abrir la puerta de comunicaciones %s"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "No se pudo conectar al servidor %s, puerta %s"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "Modo inicial desconocido %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
-msgstr "El modo análisis de archivo requiere un archivo de partida"
+msgstr "El modo análisis de archivo requiere un archivo de partidas"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "El modo de análisis requiere un motor de ajedrez"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "El modo de análisis no funciona con el modo ICS"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "El modo de máquina con blancas requiere un motor de ajedrez"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "El modo de máquina con blancas no funciona con el modo ICS"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "El modo de máquina con negras requiere un motor de ajedrez"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "El modo de máquina con negras no funciona con el modo ICS"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr "El modo de dos máquinas requiere un motor de ajedrez"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "El modo de dos máquinas no funciona con el modo ICS"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "El modo de entrenamiento requiere un archivo de partidas"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "Error al escribir a ICS"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "Error al leer el teclado"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "Se obtuvo del teclado un fin de archivo"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
-msgstr ""
+msgstr "Tipo «wild» %d desconocido"
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
-msgstr "Error al escribir a la pantalla"
+msgstr "Error al escribir en la pantalla"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
-msgstr ""
+msgstr "información kibitz de su oponente: %s"
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "Error al recolectar lista de jugadas: dos encabezados"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "Error al recolectar lista de jugadas: anidado"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
-msgstr ""
+msgstr "contra"
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
-msgstr ""
+msgstr "La jugada no es válida (la ha rechazado ICS)"
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "Conexión cerrada por ICS"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "Error al leer de ICS"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
+"Fallo al analizar texto del tablero:\n"
+"\"%s\""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
-msgstr "Juego demasiado largo; incremente MAX_MOVES y recompile"
+msgstr "Partida demasiado larga; incremente MAX_MOVES y recompile"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "Error al recolectar lista de jugadas: tablero extra"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
-msgstr "No se pudo analizar jugada \"%s\" de ICS"
+msgstr "No se pudo analizar la jugada \"%s\" de ICS"
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "say Error interno; moveType incorrecto %d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
-msgstr ""
+msgstr "No se puede hacer esto mientras se está jugando u observando"
-#: backend.c:6029
+# TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable?
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
-msgstr ""
+msgstr "¡Hace falta recompilar para disponer de BOARD_RANKS o BOARD_FILES!"
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "Usted juega negras"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "Usted juega blancas"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "Turno de las blancas"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "Turno de las negras"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "La posición mostrada no es la actual"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "Jugada ilegal"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "Fin del juego"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "Jugada incorrecta"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
+msgstr "Retrasar el peón a la posición previa a la coronación"
+
+#: backend.c:7532
+msgid "only marked squares are legal"
msgstr ""
-#: backend.c:7527
+#: backend.c:7820
msgid "Swiss tourney finished"
+msgstr "Torneo suizo terminado"
+
+#: backend.c:8336
+msgid "could not load EGBB library"
msgstr ""
-#: backend.c:8103
-msgid "Invalid pairing from pairing engine"
+#: backend.c:8339
+msgid "wrong EGBB version"
msgstr ""
-#: backend.c:8236
+#: backend.c:8452
+msgid "Invalid pairing from pairing engine"
+msgstr "El bando del otro motor no es válido"
+
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "Jugada ilegal \"%s\" del %s motor"
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
+msgstr "El FEN recibido del motor es incorrecto"
+
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s no admite análisis"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
-msgstr "Jugada ilegal \"%s\" (rechazada por %s programa de ajedrez)"
+msgstr "Jugada ilegal \"%s\" (rechazada por el programa de ajedrez %s)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
-msgstr "Falla al iniciar %s programa de ajedrez %s en %s: %s\n"
+msgstr "Fallo al iniciar el programa de ajedrez %s %s en %s: %s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "Sugerencia: %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
+"La jugada sugerida \"%s\"\n"
+"por el programa de ajedrez %s no es válida"
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr "La máquina acepta su oferta de tablas"
-#: backend.c:8898
+# TRANSLATORS: Action / Draw translatable?
+#: backend.c:9320
+#, fuzzy
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
+"La máquina ofrece tablas\n"
+"Seleccione Action / Draw si está de acuerdo"
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
-msgstr ""
+msgstr "fallo al escribir la PV"
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
-msgstr "Jugada ambigua en salida ICS: \"%s\""
+msgstr "Jugada ambigua en la salida ICS: \"%s\""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
-msgstr "Jugada ilegal en salida ICS: \"%s\""
+msgstr "Jugada ilegal en la salida ICS: \"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
-msgstr "Hueco en lista de jugadas"
+msgstr "Hueco en la lista de jugadas"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "La variante %s no es admitida por %s"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
-msgstr "Falla al iniciar '%s'"
+msgstr "Fallo al iniciar '%s'"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "Esperando al primer programa de ajedrez"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "Esperando al segundo programa de ajedrez"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
-msgstr ""
+msgstr "No se ha podido escribir en el fichero de torneos"
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
+"¡No se puede reemplazar un motor mientras está ocupado!\n"
+"Termine primero la partida del motor."
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
-msgstr ""
+msgstr "No hay ningún motor instalado con el nombre indicado"
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
+"Cambie primero un motor editando la lista de participantes\n"
+"en el diálogo de las Opciones de Torneo"
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
-msgstr ""
+msgstr "Solo se puede cambiar un motor a la vez"
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
-msgstr ""
+msgstr "No hay ningún motor %s instalado"
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
+"Hay que proporcionar un fichero de torneos,\n"
+"para almacenar el progreso del torneo"
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
-msgstr ""
+msgstr "No hay suficientes participantes"
-#: backend.c:10460
-#, fuzzy
+#: backend.c:10929
msgid "Bad tournament file"
-msgstr "archivo de partidas incorrecto"
+msgstr "Archivo de torneos incorrecto"
-#: backend.c:10472
-#, fuzzy
+#: backend.c:10941
msgid "Waiting for other game(s)"
-msgstr "Esperando al primer programa de ajedrez"
+msgstr "Esperando por otra(s) partida(s)"
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
-msgstr ""
+msgstr "iNo se ha especificado el otro motor"
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
-msgstr "Partida %s vs. %s: puntuación final %d-%d-%d"
+msgstr "Encuentro %s - %s: puntuación final %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "Jugada ilegal: %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "Jugada ambigua: %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "No se puede abrir \"%s\""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
-msgstr "No se pudo armar lista de partidas"
+msgstr "No se pudo construir la lista de partidas"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "No hay más partidas en este mensaje"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "Ninguna partida se ha cargado aún"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "Ya no se puede ir más atrás"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "Número de partida fuera de rango"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "No se puede buscar en archivo de partidas"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "Partida no hallada en archivo"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "Posición FEN incorrecta en archivo"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "Ninguna jugada en la partida"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "Ninguna posición se ha cargado aún"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
-msgstr "No se puede buscar en archivo de partidas"
+msgstr "No se puede buscar en archivo de aperturas"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "No se halló la posición en el archivo"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
-msgstr "Las negras juegan"
+msgstr "Negras juegan"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
-msgstr "Las blancas juegan"
+msgstr "Blancas juegan"
-#: backend.c:12722 backend.c:13083
-#, fuzzy
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
-msgstr "Esperando al segundo programa de ajedrez"
+msgstr "Esperando a tener acceso para guardar el fichero"
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
-msgstr ""
+msgstr "Guardando partida"
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
-msgstr ""
+msgstr "Búsqueda incorrecta"
-#: backend.c:13085
-#, fuzzy
+#: backend.c:13574
msgid "Saving position"
-msgstr "archivo de posición incorrecto"
+msgstr "Guardando posición"
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
+"Usted ha editado el historial de la partida.\n"
+"Use «Reload Same Game» y vuelva a realizar un movimiento."
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
+"Usted ha introducido demasiadas jugadas.\n"
+"Retroceda hasta la posición correcta e inténtelo de nuevo."
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
+"La posición que se está mostrando no es la actual.\n"
+"Avance hasta la posición correcta e inténtelo de nuevo."
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
-msgstr "Usted todavía no hace una jugada"
+msgstr "Usted no ha realizado todavía ninguna jugada"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
+"El mensaje «cmail» no está cargado.\n"
+"Use «Reload CMail Message» y vuelva a realizar un movimiento."
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "No hay partidas sin terminar"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"\"cmail -remail -game %s\"\n"
"on the command line."
msgstr ""
+"Ya ha enviado una jugada por correo.\n"
+"Espere hasta recibir una jugada de su adversario.\n"
+"Para volver a enviar la misma jugada, teclee\n"
+"\"cmail -remail -game %s\"\n"
+"en la línea de órdenes."
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
-msgstr "Falla al invocar cmail"
+msgstr "Fallo al invocar cmail"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "Esperando respuesta del oponente\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "Todavía necesita hacer una jugada para la partida\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "Todavía necesita hacer jugadas para ambas partidas\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "Todavía necesita hacer jugadas para las %d partidas\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "Todavía necesita hacer una jugada para la partida %s\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "No hay juegos sin terminar\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "Listo para enviar correo\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "Todavía necesita hacer jugadas para las partidas %s\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "Editar comentario"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "Editar comentario en %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
-msgstr ""
+msgstr "Usted no está observando una partida"
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "No es turno de las blancas"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "No es turno de las negras"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
-msgstr ""
+msgstr "Iniciando el programa de ajedrez %s"
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
+"or select 'Move Now'."
msgstr ""
+"Espere su turno\n"
+"o seleccione «Move Now»"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "Modo de entrenamiento apagado"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "Modo de entrenamiento activo"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "Ya se encuentra al final de la partida"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "Advertencia: Usted todavía está jugando una partida"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "Advertencia: Usted todavía está observando una partida"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "Advertencia: Usted todavía está examinando una partida"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
-msgstr ""
+msgstr "Pinche el reloj para limpiar el tablero"
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
-msgstr ""
+msgstr "Cerrar el modo de análisis del motor ICS..."
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "Ese cuadro está ocupado"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "No hay oferta pendiente para esta jugada"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "Su oponente no está fuera de tiempo"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "Debe hacer su jugada antes de ofrecer tablas"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "Usted no está examinando una partida"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "No puede revertir si está en pausa"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "Es su turno"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "Espero su turno"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "No hay sugerencia disponible"
-#: backend.c:15253 ngamelist.c:355
-#, fuzzy
+#: backend.c:15774 ngamelist.c:355
msgid "Game list not loaded or empty"
-msgstr "Ninguna partida se ha cargado aún"
+msgstr "La lista de partidas no se ha cargado o está vacía"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
+"¡Ya existe el fichero del libro! Inténtelo de nuevo si quiere "
+"sobreescribirlo."
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "Error al escribir al %s programa de ajedrez"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
-msgstr ""
+msgstr "El programa %s termina en posición de tablas (%s)"
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "Error: el %s programa de ajedrez (%s) terminó inesperadamente"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "Error al leer del %s programa de ajedrez (%s)"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
-msgstr ""
+msgstr "El motor %s tiene demasiadas opciones\n"
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "La jugada ilustrada no es la actual"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "No se pudo analizar la jugada"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "Ambas banderas cayeron"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "La bandera blanca cayó"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "La bandera negra cayó"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
+"El ajuste del reloj no está permitido en el modo de advertencia de tiempo "
+"automático"
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "Posición FEN incorrecta en portapapeles"
#: book.c:577 book.c:833
msgid "Polyglot book not valid"
-msgstr ""
+msgstr "El libro de Polyglot no es válido"
#: book.c:701
msgid "Book Fault"
-msgstr ""
+msgstr "Error en el libro"
#: book.c:836
msgid "Hash keys are different"
-msgstr ""
+msgstr "Las claves «hash» son diferentes"
#: book.c:1003
-#, fuzzy
msgid "Could not create book"
-msgstr "No se pudo analizar la jugada"
+msgstr "No se ha podido crear el libro"
-#: dialogs.c:259
-#, fuzzy
+#: dialogs.c:283
msgid "Tournament file: "
-msgstr "Aplazamiento F7"
+msgstr "Fichero de torneos: "
-#: dialogs.c:260
-msgid "Sync after round"
-msgstr ""
+#: dialogs.c:284
+#, fuzzy
+msgid "For concurrent playing of tourney with multiple XBoards:"
+msgstr " torneo con múltiples XBoards)"
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
-msgstr ""
+#: dialogs.c:285
+msgid "Sync after round"
+msgstr "Sincronizar después de la ronda"
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
-msgstr ""
+msgstr "Sincronizar después de una vuelta"
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
-msgstr ""
+msgstr "Participantes del torneo:"
-#: dialogs.c:265
-#, fuzzy
+#: dialogs.c:288
msgid "Select Engine:"
-msgstr "Motor"
+msgstr "Seleccione Motor:"
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
-msgstr ""
+msgstr "Tipo de torneo (0 = liga, 1 = uno contra todos):"
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
-msgstr ""
+msgstr "Número de vueltas del torneo (o rondas de torneo suizo)"
-#: dialogs.c:275
-#, fuzzy
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
-msgstr "Partidas torneo p/def"
+msgstr "Número predeterminado de partidas del encuentro (o emparejamiento):"
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
-msgstr ""
+msgstr "Pausa entre partidas del encuentro (ms):"
-#: dialogs.c:277
-#, fuzzy
+#: dialogs.c:300
msgid "Save Tourney Games on:"
-msgstr "Opciones al salvar partida"
+msgstr "Guardar partidas del torneo en:"
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
-msgstr ""
+msgstr "Fichero de partidas con líneas de apertura:"
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
-msgstr ""
+msgstr "Número de la partida (-1 o -2 = incremento automático):"
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
-msgstr ""
+msgstr "Fichero con posiciones iniciales:"
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
-msgstr ""
+msgstr "Número de la posición (-1 o -2 = incremento automático):"
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
-msgstr ""
+msgstr "Rebobinar Índice después de este número de Partidas (0 = nunca)"
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
-msgstr ""
+msgstr "Inicialmente, desactivar los libros propios del motor"
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr "Control de tiempo"
+
+#: dialogs.c:308
#, fuzzy
+msgid "Common Engine"
+msgstr "General de los motores..."
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Opciones generales"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
-msgstr "Motor"
+msgstr "Reemplazar motor"
-#: dialogs.c:285
-#, fuzzy
+#: dialogs.c:312
msgid "Upgrade Engine"
-msgstr "Motor"
+msgstr "Actualizar motor"
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
-msgstr ""
+msgstr "Clonar torneo"
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
+"En primer lugar, debe usted especificar un fichero de torneos que exista, "
+"para ser clonado"
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
-msgstr ""
+msgstr "# no hay ningún motor instalado"
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Opciones de sonido"
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
-msgstr ""
+msgstr "Puntuaciones absolutas del análisis"
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
-msgstr ""
+msgstr "Casi siempre dama (rodeo para subcoronar)"
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "Animar arrastre"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "Animar movimiento"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "Bandera automática"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "Cambio de lado automático"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "A ciegas"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
-msgstr ""
+msgstr "Menú «drop»"
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
+msgstr "Activar árboles de variaciones"
+
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "Ocultar cogitaciones al jugar contra humano"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "Iluminar última jugada"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "Iluminar con flecha"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "Moviemento de un click"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "Actualización periódica (en análisis)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
-msgstr ""
+msgstr "Realizar la(s) jugada(s) de la PV escogida (análisis)"
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "Prever siguente jugada"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
-msgstr "Ventana al salir"
+msgstr "Ventana emergente al salir"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
-msgstr "Ventana si error en jugada"
+msgstr "Ventana emergente si error en jugada"
-#: dialogs.c:382
-#, fuzzy
+#: dialogs.c:423
msgid "Scores in Move List"
-msgstr "Leer lista jugadas"
+msgstr "Puntuaciones de la lista de jugadas"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "Mostrar coordenadas"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
-msgstr ""
+msgstr "Mostrar casillas objetivo"
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
-msgstr ""
+msgstr "Ventanas adhesivas"
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
-msgstr "Checar legalidad"
+msgstr "Verificar legalidad"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
-msgstr ""
+msgstr "Diálogos de alto nivel"
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
-msgstr ""
+msgstr "Destello en las jugadas (0 = sin destello):"
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
-msgstr ""
+msgstr "Velocidad de destello (high = rápido):"
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
-msgstr ""
+msgstr "Velocidad de animación (high = lenta):"
-#: dialogs.c:391
-#, fuzzy
+#: dialogs.c:432
msgid "Zoom factor in Evaluation Graph:"
-msgstr "Gráfica de evaluación"
+msgstr "Factor de «zoom» en el grafo de evaluación:"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "Opciones generales"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+#, fuzzy
+msgid "Normal"
msgstr "normal"
-#: dialogs.c:411
-msgid "makruk"
-msgstr ""
+#: dialogs.c:453
+#, fuzzy
+msgid "Makruk"
+msgstr "«makruk» (tailandés)"
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
-msgstr ""
+msgstr "FRC (ajedrez aleatorio de Fischer)"
-#: dialogs.c:413
-msgid "shatranj"
-msgstr ""
+#: dialogs.c:455
+#, fuzzy
+msgid "Shatranj"
+msgstr "«shatranj»"
-#: dialogs.c:414
-msgid "wild castle"
-msgstr ""
+#: dialogs.c:456
+#, fuzzy
+msgid "Wild castle"
+msgstr "enroque salvaje"
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "mate al caballo"
-#: dialogs.c:416
-msgid "no castle"
-msgstr ""
+#: dialogs.c:458
+#, fuzzy
+msgid "No castle"
+msgstr "sin enroque"
-#: dialogs.c:417
+#: dialogs.c:459
#, fuzzy
-msgid "cylinder *"
-msgstr "cilindro"
+msgid "Cylinder *"
+msgstr "cilíndrico *"
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
-msgstr ""
+msgstr "tres jaques"
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
-msgstr ""
+msgstr "belorina *"
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr "atómico"
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
-msgstr ""
+msgstr "dos reyes"
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr " "
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr "espartano"
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
+"Tamaño del tablero ( -1 = el predeterminado para la variante seleccionada):"
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
-msgstr ""
+msgstr "Número de filas del tablero:"
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
-msgstr ""
+msgstr "Número de columnas del tablero:"
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
-msgid "Great Shatranj (10x8)"
+#: dialogs.c:473
+msgid "ASEAN"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:474
+msgid "Great Shatranj (10x8)"
+msgstr "Gran shatranj (10x8)"
+
+#: dialogs.c:475
msgid "Seirawan"
-msgstr ""
+msgstr "Seirawan"
-#: dialogs.c:432
-msgid "falcon (10x8)"
-msgstr ""
+#: dialogs.c:476
+#, fuzzy
+msgid "Falcon (10x8)"
+msgstr "halcón (10x8)"
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
-msgstr ""
+msgstr "Superajedrez"
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
-msgstr ""
+msgstr "Capablanca (10x8)"
-#: dialogs.c:435
-msgid "crazyhouse"
-msgstr ""
+#: dialogs.c:479
+#, fuzzy
+msgid "Crazyhouse"
+msgstr "«crazyhouse»"
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
-msgstr ""
+msgstr "Gótico (10x8)"
-#: dialogs.c:437
-msgid "bughouse"
-msgstr ""
+#: dialogs.c:481
+#, fuzzy
+msgid "Bughouse"
+msgstr "pasapiezas"
-#: dialogs.c:438
-msgid "janus (10x8)"
-msgstr ""
+#: dialogs.c:482
+#, fuzzy
+msgid "Janus (10x8)"
+msgstr "janus (10x8)"
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+#, fuzzy
+msgid "Suicide"
msgstr "suicida"
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
-msgstr ""
+msgstr "CRC (10x8)"
-#: dialogs.c:441
+# TRANSLATORS: give-away = losers?
+#: dialogs.c:485
msgid "give-away"
-msgstr ""
+msgstr "pierde gana"
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
-msgstr ""
+msgstr "gran ajedrez (10x10)"
-#: dialogs.c:443
+# TRANSLATORS: give-away = losers?
+#: dialogs.c:487
msgid "losers"
-msgstr ""
+msgstr "pierde gana"
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
-msgstr ""
+msgstr "japonés (9x9)"
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
-msgstr ""
+msgstr "chino"
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
+msgstr "ajedrez del mensajero (12x8)"
+
+#: dialogs.c:493
+msgid "chu chess (10x10)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:494
+#, fuzzy
+msgid "chu shogi (12x12)"
+msgstr "japonés (9x9)"
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "Advertencia: ¡el segundo motor (%s) no admite esto!"
-#: dialogs.c:488
-#, c-format
-msgid "Only bughouse is not available in viewer mode"
-msgstr ""
+#: dialogs.c:554
+#, fuzzy, c-format
+msgid "Only bughouse is not available in viewer mode."
+msgstr "Solo pasapiezas no está disponible en el modo visor"
-#: dialogs.c:489
-#, c-format
+#: dialogs.c:555
+#, fuzzy, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
+"Todas las variantes no disponibles en el primer motor\n"
+"(actualmente %s) están desactivas"
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
-msgstr "Variantes"
+msgstr "Nueva variante"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
-msgstr "Número max. CPUs:"
+msgstr "Número max. CPUs por motor:"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
-msgstr ""
+msgstr "Directorio de Ployglot:"
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
-msgstr "Tamaño hash (MB):"
+msgstr "Tamaño de la tabla de transposición (MB):"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
-msgstr "Carpeta EGTB:"
+msgstr "Carpeta de la EGTB Nalimov:"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
-msgstr "Tamaño EGTB (MB):"
+msgstr "Tamaño de la caché de la EGTB (MB):"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
-msgstr ""
+msgstr "Usar el libro de la GUI"
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
-msgstr ""
+msgstr "Fichero del libro de aperturas:"
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
-msgstr "Profundo libro:"
+msgstr "Profundidad del libro (jugadas):"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
-msgstr "Variación libro:"
+msgstr "Variedad del libro (0) frente a fuerza (100):"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
-msgstr "Primero tiene libro propio"
+msgstr "El motor 1 tiene libro propio"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
-msgstr ""
+msgstr "El motor 2 tiene libro propio"
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
-msgstr "Configuración común de motor"
+msgstr "Configuración general de los motores"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
-msgstr "Detectar mates"
+msgstr "Detectar todos los mates"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "Verificar avisos del motor"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
-msgstr "Tablas si hay material insufficiente"
+msgstr "Tablas si el material es insuficiente"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
-msgstr "Adjudicar tablas triviales"
+msgstr "Adjudicar tablas triviales (regla de las tres jugadas)"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
-msgstr ""
+msgstr "Regla de las N jugadas:"
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "Adjudicar mate después de:"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "Límite para adjudicar juego:"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
-msgstr "Puntuación motor #1 es absoluta"
+msgstr "Negar puntuación del motor #1"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
-msgstr "Puntuación motor #2 es absoluta"
+msgstr "Negar puntuación del motor #2"
-#: dialogs.c:556
-#, fuzzy
+#: dialogs.c:639
msgid "Adjudicate non-ICS Games"
-msgstr "Adjudicar a blancas"
+msgstr "Adjudicar partidas no ICS"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "Auto Kibitz"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "Auto-comentario"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "Auto-Observar"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "Tablero al frente (automático)"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
-msgstr ""
+msgstr "Creación de fichero de registro automática"
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
-msgstr "Mirar en el fondo"
+msgstr "Seguir observando mientras se juega"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
-msgstr "Tablero dual"
+msgstr "Tablero dual para partidas observadas"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
-msgstr "Leer lista jugadas"
+msgstr "Leer lista de jugadas"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "Jugar en silencio"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "Buscar gráfica"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
-msgstr "auto-Refresco"
+msgstr "Grafo de búsqueda con refresco automático"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
-msgstr ""
+msgstr "Ventana emergente de buzón automática"
+
+#: dialogs.c:664
+#, fuzzy
+msgid "Quit after game"
+msgstr "Esperando por otra(s) partida(s)"
-#: dialogs.c:581
+#: dialogs.c:665
msgid "Premove"
-msgstr "Pre-mov."
+msgstr "Pre-jugada"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
-msgstr ""
+msgstr "Prejugada de las blancas"
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "1er. mov. blancas"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
-msgstr ""
+msgstr "Prejugada de las negras"
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "1er. mov. negras"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "Alarma"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
-msgstr ""
+msgstr "Tiempo de la alarma (ms):"
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
-msgstr ""
+msgstr "Mensajes coloreados"
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
-msgstr ""
+msgstr "Colores del texto que se expresa en voz alta:"
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
-msgstr ""
+msgstr "Colores «S» del texto que se expresa en voz alta:"
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
-msgstr ""
+msgstr "Colores del texto del canal 1:"
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
-msgstr ""
+msgstr "Colores del texto del otro canal:"
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
-msgstr ""
+msgstr "Colores del texto kibitz:"
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
-msgstr ""
+msgstr "Colores del texto de hablar con otros:"
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
-msgstr ""
+msgstr "Colores del texto de desafíos:"
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
-msgstr ""
+msgstr "Colores del texto de peticiones:"
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
-msgstr ""
+msgstr "Colores del texto de búsqueda:"
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "Opciones ICS"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
-msgstr ""
+msgstr "Coincidencia exacta de la posición"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
-msgstr ""
+msgstr "La posición mostrada es un subconjunto"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
-msgstr ""
+msgstr "Mismo material con exactamente la misma cadena de peones"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
-msgstr ""
+msgstr "Mismo material"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
-msgstr ""
+msgstr "Rango de material (mitad superior del tablero opcional)"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
-msgstr ""
+msgstr "Diferencia de material (situación equilibrada opcional)"
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
-msgstr ""
+msgstr "Etiquetas de visualización automática"
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
-msgstr ""
+msgstr "Comentario de visualización automática"
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
+"Velocidad de juego automático de las partidas cargadas\n"
+"(0 = instantánea, -1 = desactivada):"
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
-msgstr ""
+msgstr "Segundos por jugadas:"
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
+"\n"
+"opciones para el modo de visualización de partidas:"
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
+"\n"
+"Umbral para filtrar posiciones en la lista de partidas:"
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
-msgstr ""
+msgstr "Elo del mejor jugador como mínimo:"
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
-msgstr ""
+msgstr "Elo del peor jugador como mínimo:"
-#: dialogs.c:633
-#, fuzzy
+#: dialogs.c:717
msgid "No games before year:"
-msgstr "Ninguna partida se ha cargado aún"
+msgstr "Número de partidas antes del año:"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
-msgstr ""
+msgstr "Número mínimo de posiciones consecutivas:"
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
-msgstr ""
+msgstr "Modo de búsqueda:"
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
-msgstr ""
+msgstr "También colores invertidos"
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
-msgstr ""
+msgstr "También posición volteada izquierda-derecha"
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "Opciones al leer partida"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
-msgstr ""
+msgstr "Guardar partidas automáticamente"
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
-msgstr ""
+msgstr "Solo partidas propias"
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
-msgstr ""
+msgstr "Guardar partidas en fichero"
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
-msgstr ""
+msgstr "Guardar en fichero posiciones finales:"
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
-msgstr ""
+msgstr "Cabecera PGN del evento:"
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
-msgstr ""
+msgstr "Estilo de guardado antiguo (en contraposición a PGN)"
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
-msgstr ""
+msgstr "Incluir etiqueta de número en el PGN del torneo"
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
-msgstr ""
+msgstr "Guardar la información de puntuación/profundidad en el PGN"
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
-msgstr ""
+msgstr "Guardar información fuera-de-libro en PGN "
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "Opciones al salvar partida"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "Sin sonido"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
-msgstr "Bip por defecto"
+msgstr "Bip predeterminado"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
-msgstr ""
+msgstr "Fichero WAV de arriba"
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
-msgstr ""
+msgstr "Bocina de coche"
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
-msgstr ""
+msgstr "Platillos"
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
-msgstr ""
+msgstr "Timbre"
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
-msgstr ""
+msgstr "«Gong»"
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
-msgstr ""
+msgstr "Láser"
-#: dialogs.c:689
+# TRANSLATORS
+#: dialogs.c:773
msgid "Penalty"
-msgstr ""
+msgstr "Penalización"
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
-msgstr ""
+msgstr "Teléfono"
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
+msgstr "«Pop»"
+
+#: dialogs.c:776
+msgid "Roar"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:777
msgid "Slap"
-msgstr ""
+msgstr "Palmada"
-#: dialogs.c:693
+# TRANSLATORS
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
-msgstr ""
+msgstr "Fichero del usuario"
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
-msgstr ""
+msgstr "Fichero WAV del usuario:"
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
-msgstr ""
+msgstr "Programa de sonido:"
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
-msgstr ""
+msgstr "Sonido de prueba"
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "Reproducir"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
-msgstr ""
+msgstr "Jugada:"
-#: dialogs.c:722
+# TRANSLATORS
+#: dialogs.c:808
msgid "Win:"
-msgstr ""
+msgstr "Victorias:"
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
-msgstr ""
+msgstr "Derrotas:"
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
-msgstr ""
+msgstr "Tablas"
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
-msgstr ""
+msgstr "No terminadas:"
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
-msgstr ""
+msgstr "Alarma:"
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
-msgstr ""
+msgstr "Desafío:"
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
-msgstr ""
+msgstr "Carpeta de sonidos:"
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
-msgstr ""
+msgstr "En voz alta:"
-#: dialogs.c:731
+# TRANSLATORS
+#: dialogs.c:817
msgid "S-Shout:"
-msgstr ""
+msgstr "En voz alta S"
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
-msgstr ""
+msgstr "Canal:"
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
-msgstr ""
+msgstr "Canal 1:"
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
-msgstr ""
+msgstr "Decir:"
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
-msgstr ""
+msgstr "Kibitz:"
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
+msgstr "Pedir:"
+
+#: dialogs.c:823
+msgid "Lion roar:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:824
msgid "Seek:"
-msgstr ""
+msgstr "Buscar:"
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
-msgstr "Sonidos"
+msgstr "Opciones de sonido"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
-msgstr ""
+msgstr "Color de las piezas blancas:"
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
-msgstr ""
+msgstr "R"
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
-msgstr ""
+msgstr "V"
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
-msgstr ""
+msgstr "A"
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
-msgstr ""
+msgstr "O"
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
-msgstr "Piezas negras"
+msgstr "Color de las piezas negras:"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
-msgstr "Cuadros claros"
+msgstr "Color de los escaques claros"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
-msgstr "Cuadros obscuros"
+msgstr "Color de los escaques oscuros"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
-msgstr "Cuadro iluminado"
+msgstr "Color de escaque iluminado"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
-msgstr "Iluminación pre.mov."
+msgstr "Color de iluminación de prejugada:"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
-msgstr ""
+msgstr "Voltear piezas estilo Shogi (Botones de colores predefinidos)"
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
-msgstr "Monocromo"
+msgstr "Modo mono"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+#, fuzzy
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
+"Hueco de la línea ( -1 = el predeterminado para el tamaño de ltablero):"
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
-msgstr ""
+msgstr "Utilizar tablero con texturas"
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
-msgstr ""
+msgstr "Fichero de texturas para escaques claros:"
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
-msgstr ""
+msgstr "Fichero de texturas para escaques oscuros:"
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
-msgstr ""
+msgstr "Utilizar «bitmaps» externos para las piezas con sus propios colores"
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
-msgstr ""
+msgstr "Carpeta con imágenes de piezas:"
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "Opciones de tablero"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
-msgstr ""
+msgstr "Menú de texto ICS"
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
-msgstr ""
+msgstr "borrar"
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
-msgstr ""
+msgstr "guardar cambios"
-#: dialogs.c:1051
-#, fuzzy
+#: dialogs.c:1138
msgid "Edit book"
-msgstr "Edición"
+msgstr "Editar libro"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
-msgstr "Circunstancias"
+msgstr "Etiquetas"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
-msgstr ""
+msgstr "Cuadro de entrada ICS"
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
-msgstr ""
+msgstr "Teclear una jugada"
-#: dialogs.c:1251
-#, fuzzy
+#: dialogs.c:1338
msgid "Engine has no options"
-msgstr "Primero tiene libro propio"
+msgstr "El motor no tiene opciones"
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
-msgstr ""
+msgstr "Configuración del motor"
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
-msgstr ""
+msgstr "Seleccionar un motor de la lista:"
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
-msgstr ""
+msgstr "o especificar uno debajo:"
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
-msgstr ""
+msgstr "Sobrenombre (opcional):"
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
+"Usar el sobrenombre de las etiquetas de jugadores del PGN en las partidas "
+"motor-motor"
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
-msgstr ""
+msgstr "Carpeta del motor:"
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
-msgstr ""
+msgstr "Instrucción para el motor:"
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
-msgstr ""
+msgstr "(La carpeta se derivará de la del motor cuando esté vacía)"
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
-msgstr ""
+msgstr "UCI"
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
-msgstr ""
+msgstr "Protocolo WB v1 (no esperar por las características del motor)"
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
-msgstr ""
+msgstr "No debe utilizar el libro de la GUI"
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
-msgstr ""
+msgstr "Añadir este motor a la lista"
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
-msgstr ""
+msgstr "Forzar la variante actual con este motor"
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
-msgstr ""
+msgstr "Cargar el primer motor"
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
-msgstr ""
+msgstr "Cargar el segundo motor"
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
-msgstr ""
+msgstr "barajar"
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "Núm. de pos. inicial:"
-#: dialogs.c:1372
-#, fuzzy
+#: dialogs.c:1459
msgid "randomize"
-msgstr "Aleatorio"
+msgstr "aleatorizar"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
-msgstr ""
+msgstr "selección fijada"
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "Nueva partida revuelta..."
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
-msgstr ""
+msgstr "clásica"
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
-msgstr ""
+msgstr "incremental"
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
-msgstr ""
+msgstr "máximo fijado"
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
-msgstr ""
+msgstr "Jugadas por sesión:"
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
-msgstr ""
+msgstr "Tiempo inicial (min):"
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
-msgstr ""
+msgstr "Incremento o máximo (s(jugada):"
-#: dialogs.c:1415
-#, fuzzy
+#: dialogs.c:1502
msgid "Time-Odds factors:"
-msgstr "Factores de tiempo:"
+msgstr "Factores de tiempo extra:"
-#: dialogs.c:1416
-#, fuzzy
+#: dialogs.c:1503
msgid "Engine #1"
-msgstr "Motor"
+msgstr "Motor 1"
-#: dialogs.c:1417
-#, fuzzy
+#: dialogs.c:1504
msgid "Engine #2 / Human"
-msgstr "Primero tiene libro propio"
+msgstr "Motor 2 / Humano"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
-msgstr ""
+msgstr "No se usa"
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "Error al escribir al programa de ajedrez"
-#: dialogs.c:1574
-#, fuzzy
+#: dialogs.c:1662 xaw/xoptions.c:1276
msgid "Cancel"
msgstr "Cancelar"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "Rey"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
-msgstr ""
+msgstr "Capitán"
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
-msgstr ""
+msgstr "Teniente"
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
-msgstr "Generales..."
+msgstr "General"
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
-msgstr ""
+msgstr "Caudillo"
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "Caballo"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Alfil"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Torre"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "Arzobispo"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "Canciller"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Dama"
-#: dialogs.c:1600
-msgid "Defer"
+#: dialogs.c:1686
+msgid "Lion"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1690
+msgid "Defer"
+msgstr "Diferir"
+
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "Coronar"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
-msgstr ""
+msgstr "Charlar con compañero:"
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
-msgstr ""
+msgstr "Cuadro de charla"
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr "De fábrica"
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
-msgstr "Arriba"
+msgstr "arriba"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
-msgstr "Abajo"
+msgstr "abajo"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
-msgstr ""
+msgstr "Número de la etiqueta seleccionada"
-#: dialogs.c:1793
-#, fuzzy
+#: dialogs.c:1883
msgid "Game-list options"
-msgstr "Opciones al leer partida"
+msgstr "Opciones de la lista de partidas"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "Error"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "Error fatal"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "Saliendo"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "Información"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "Nota"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Blancas"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Peón"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "Elefante"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "Cañón"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "Degradar"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Vaciar el escaque"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
-msgstr "Limpiar el tablero "
+msgstr "Limpiar el tablero"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Negras"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "Archivo"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
-msgstr "Edición"
+msgstr "Editar"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr "Ver"
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "Modo"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
-msgstr "Partida"
+msgstr "Acción"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr "Motor"
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "Opciones"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Ayuda"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
-msgstr ""
+msgstr "<<"
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
-msgstr ""
+msgstr "<"
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
-msgstr ""
+msgstr ">"
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
-msgstr ""
+msgstr ">>"
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
-msgstr ""
+msgstr "Carpetas:"
-#: dialogs.c:2365
-#, fuzzy
+#: dialogs.c:2459
msgid "Files:"
-msgstr "Archivo"
+msgstr "Archivos:"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
-msgstr ""
+msgstr "por nombre"
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
-msgstr ""
+msgstr "por tipo"
-#: dialogs.c:2370
-#, fuzzy
+#: dialogs.c:2464
msgid "Filename:"
-msgstr "Filtro"
+msgstr "Nombre del fichero:"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
-msgstr ""
+msgstr "Nueva carpeta"
-#: dialogs.c:2372
-#, fuzzy
+#: dialogs.c:2466
msgid "File type:"
-msgstr "Filtro"
+msgstr "Tipo de fichero:"
-#: dialogs.c:2447
-#, fuzzy
+#: dialogs.c:2541
msgid "Contents of"
-msgstr "Comentarios"
+msgstr "Contenido de"
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
-msgstr ""
+msgstr " siguiente página"
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
-msgstr ""
+msgstr "INTENTAR OTRO NOMBRE"
-#: draw.c:293
+#: draw.c:310
+#, fuzzy
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
+"No hay piezas predeterminadas instaladas\n"
+"Seleccione su propio -pieceImageDirectory"
-#: engineoutput.c:107 menus.c:630
-#, fuzzy, c-format
+#: engineoutput.c:110 menus.c:630
+#, c-format
msgid "Engine Output"
-msgstr "Salida de motores"
+msgstr "Salida del motor"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%s (%d media-jugada reversible)"
+msgstr[1] "%s (%d medias-jugadas reversibles)"
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "NPS"
#: gamelist.c:375
-#, fuzzy, c-format
+#, c-format
msgid "Reading game file (%d)"
-msgstr "archivo de partidas incorrecto"
+msgstr "Leyendo fichero de partidas (%d)"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
-msgstr ""
+msgstr "%s: no se puede ir a la carpeta CHESSDIR: "
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
-msgstr ""
+msgstr "Fallo al abrir el fichero '%s'\n"
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+# TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable?
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
+"Recompilar con BOARD_RANKS o BOARD_FILES mayor para admitir este tamaño"
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
-msgstr ""
+msgstr "%s: sintaxis de boardSize incorrecta %s\n"
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
-msgstr ""
+msgstr "%s: nombre de boardSize no reconocido %s\n"
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
-msgstr ""
+msgstr "%s: insuficientes colores disponibles: probando modo monocromo\n"
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
-msgstr ""
+msgstr "No se ha podido crear conjunto de fuentes para %s.\n"
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
-msgstr ""
+msgstr "%s: ninguna fuente concuerda con el patrón %s\n"
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
-msgstr ""
+msgstr "No se puede abrir el fichero temporal"
-#: gtk/xboard.c:2174
-#, fuzzy
+#: gtk/xboard.c:2199
msgid "Failed to open file"
-msgstr "Falla al invocar cmail"
+msgstr "Fallo al abrir fichero"
#: menus.c:134
msgid "Load game file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de partidas para cargar?"
#: menus.c:179
msgid "Load position file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de posiciones para cargar?"
#: menus.c:185
msgid "Save game file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de partidas para guardar?"
#: menus.c:194
msgid "Save position file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de posiciones para guardar?"
#: menus.c:358
msgid " (with Zippy code)"
-msgstr ""
+msgstr " (con el código de Zippy)"
#: menus.c:363
-#, c-format
+#, fuzzy, c-format
msgid ""
"%s%s\n"
"\n"
"Report bugs via email at: <bug-xboard@gnu.org>\n"
"\n"
msgstr ""
+"%s%s\n"
+"\n"
+"Copyright 1991 Digital Equipment Corporation\n"
+"Copyright de las mejoras 1992-2013 Free Software Foundation\n"
+"Copyright de las mejoras 2005 Alessandro Scotti\n"
+"\n"
+"%s es software libre SIN NINGUNA GARANTÍA; ver el fichero COPYING para más "
+"información.\n"
+"La versión de GTK utilizada es experimental e inestable\n"
+"\n"
+"Visite XBoard en la web en: http://www.gnu.org/software/xboard/\n"
+"Obtenga las características más recientes en: http://www.gnu.org/software/"
+"xboard/whats_new.html\n"
+"\n"
+"Informe de errores por correo a: <bug-xboard@gnu.org>\n"
+"\n"
#: menus.c:375 menus.c:750
msgid "About XBoard"
msgstr "Acerca de XBoard"
#: menus.c:582
-#, fuzzy
msgid "New Game"
-msgstr "Nueva partida revuelta..."
+msgstr "Nueva partida"
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "Nueva partida revuelta..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
-msgstr "Variantes"
+msgid "New Variant..."
+msgstr "Nueva variante ..."
#: menus.c:586
-#, fuzzy
msgid "Load Game"
-msgstr "Para leer partida... Alt+Mayús+L"
+msgstr "Cargar partida"
#: menus.c:587
-#, fuzzy
msgid "Load Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Cargar posición"
#: menus.c:588
-#, fuzzy
msgid "Next Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Siguiente posición"
#: menus.c:589
-#, fuzzy
msgid "Prev Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Posición previa"
#: menus.c:591
-#, fuzzy
msgid "Save Game"
-msgstr "Para guardar partida... Alt+Mayús+S"
+msgstr "Guardar partida"
#: menus.c:592
-#, fuzzy
msgid "Save Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Guardar posición"
#: menus.c:593
-#, fuzzy
msgid "Save Games as Book"
-msgstr "Para guardar partida... Alt+Mayús+S"
+msgstr "Guardar partidas como libro"
#: menus.c:595
msgid "Mail Move"
-msgstr ""
+msgstr "Jugada por correo"
#: menus.c:596
msgid "Reload CMail Message"
-msgstr ""
+msgstr "Volver a cargar mensaje CMail"
#: menus.c:598
msgid "Quit "
-msgstr ""
+msgstr "Salir "
#: menus.c:603
-#, fuzzy
msgid "Copy Game"
-msgstr "Copiar lista de partidas"
+msgstr "Copiar partida"
#: menus.c:604
-#, fuzzy
msgid "Copy Position"
-msgstr "Copiar posición Alt+Mayús+C"
+msgstr "Copiar posición"
#: menus.c:605
msgid "Copy Game List"
msgstr "Copiar lista de partidas"
#: menus.c:607
-#, fuzzy
msgid "Paste Game"
-msgstr "Pegar partida Ctrl+V"
+msgstr "Pegar partida"
#: menus.c:608
-#, fuzzy
msgid "Paste Position"
-msgstr "Pegar posición Alt+Mayús+V"
+msgstr "Pegar posición"
#: menus.c:610 menus.c:652
-#, fuzzy
msgid "Edit Game"
-msgstr "Editar comentario"
+msgstr "Editar partida"
#: menus.c:611 menus.c:653
-#, fuzzy
msgid "Edit Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Editar posición"
#: menus.c:612
msgid "Edit Tags"
-msgstr "Editar circunstancias"
+msgstr "Editar etiquetas"
#: menus.c:613
msgid "Edit Comment"
-msgstr "Editar comentarios"
+msgstr "Editar comentario"
#: menus.c:614
-#, fuzzy
msgid "Edit Book"
-msgstr "Repertorio de aperturas..."
+msgstr "Editar libro"
#: menus.c:616
msgid "Revert"
-msgstr ""
+msgstr "Revertir"
#: menus.c:617
msgid "Annotate"
msgstr "Anotar"
#: menus.c:618
-#, fuzzy
msgid "Truncate Game"
-msgstr "Truncar partida End"
+msgstr "Truncar partida"
#: menus.c:620
msgid "Backward"
-msgstr ""
+msgstr "Hacia atrás"
#: menus.c:621
msgid "Forward"
-msgstr ""
+msgstr "Hacia delante"
#: menus.c:622
-#, fuzzy
msgid "Back to Start"
-msgstr "Las negras juegan"
+msgstr "Volver a empezar"
#: menus.c:623
-#, fuzzy
msgid "Forward to End"
-msgstr "Ultima jugada Alt+Fin"
+msgstr "Avanzar hasta el final"
#: menus.c:628
-#, fuzzy
msgid "Flip View"
-msgstr "Cambio de lado automático"
+msgstr "Voltear vista"
#: menus.c:631
-#, fuzzy
msgid "Move History"
-msgstr "Leer lista jugadas"
+msgstr "Historial de jugadas"
#: menus.c:632
-#, fuzzy
msgid "Evaluation Graph"
msgstr "Gráfica de evaluación"
#: menus.c:633
-#, fuzzy
msgid "Game List"
-msgstr "Lista de partidas..."
+msgstr "Lista de partidas"
#: menus.c:637
msgid "Comments"
#: menus.c:638
msgid "ICS Input Box"
-msgstr ""
+msgstr "Cuatro de entrada ICS"
#: menus.c:639
msgid "Open Chat Window"
-msgstr ""
+msgstr "Abrir ventana de conversación"
#: menus.c:641
msgid "Board..."
-msgstr "Opciones del tablero..."
+msgstr "Tablero..."
#: menus.c:642
msgid "Game List Tags..."
-msgstr "Opciones de lista de partidas..."
+msgstr "Etiquetas de la lista de partidas..."
#: menus.c:647
-#, fuzzy
msgid "Machine White"
-msgstr "El programa juega con blancas Ctrl+W"
+msgstr "El programa con blancas"
#: menus.c:648
-#, fuzzy
msgid "Machine Black"
-msgstr "Torneo de dos programas"
+msgstr "El programa con negras"
#: menus.c:649
-#, fuzzy
msgid "Two Machines"
-msgstr "Juegan dos programas Ctrl+T"
+msgstr "Dos programas"
#: menus.c:650
-#, fuzzy
msgid "Analysis Mode"
-msgstr "Análisis Ctrl+A"
+msgstr "Modo de análisis"
#: menus.c:651
-#, fuzzy
msgid "Analyze Game"
-msgstr "Analizar archivo Ctrl+F"
+msgstr "Analizar partida"
#: menus.c:654
msgid "Training"
#: menus.c:655
msgid "ICS Client"
-msgstr "Conectado a un ICS"
+msgstr "Cliente ICS"
#: menus.c:657
msgid "Machine Match"
#: menus.c:658
msgid "Pause"
-msgstr ""
+msgstr "Pausa"
#: menus.c:663
msgid "Accept"
-msgstr ""
+msgstr "Aceptar"
#: menus.c:664
msgid "Decline"
-msgstr ""
+msgstr "Declinar"
#: menus.c:665
msgid "Rematch"
-msgstr ""
+msgstr "Revancha"
#: menus.c:667
-#, fuzzy
msgid "Call Flag"
-msgstr "Pedir la bandera F5"
+msgstr "Pedir la bandera"
#: menus.c:668
msgid "Draw"
-msgstr ""
+msgstr "Tablas"
#: menus.c:669
msgid "Adjourn"
-msgstr ""
+msgstr "Aplazar"
#: menus.c:670
msgid "Abort"
-msgstr ""
+msgstr "Abortar"
#: menus.c:671
msgid "Resign"
-msgstr ""
+msgstr "Rendirse"
#: menus.c:673
-#, fuzzy
msgid "Stop Observing"
-msgstr "Dejo de observar F10"
+msgstr "Dejar de observar"
#: menus.c:674
-#, fuzzy
msgid "Stop Examining"
-msgstr "Dejo de examinar F11"
+msgstr "Dejar de examinar"
#: menus.c:675
msgid "Upload to Examine"
msgstr "Adjudicar tablas"
#: menus.c:684
-msgid "Load New 1st Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 1st Engine..."
+msgstr "Cargar un nuevo primer motor ..."
#: menus.c:685
-msgid "Load New 2nd Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "Cargar un nuevo segundo motor ..."
#: menus.c:687
-msgid "Engine #1 Settings ..."
-msgstr "Configuración motor #1..."
+#, fuzzy
+msgid "Engine #1 Settings..."
+msgstr "Configuración del motor #1..."
#: menus.c:688
-msgid "Engine #2 Settings ..."
-msgstr "Configuración motor #2..."
+#, fuzzy
+msgid "Engine #2 Settings..."
+msgstr "Configuración del motor #2..."
#: menus.c:690
msgid "Hint"
-msgstr "Dame una pista..."
+msgstr "Pista"
#: menus.c:691
msgid "Book"
-msgstr "Repertorio de aperturas..."
+msgstr "Repertorio de aperturas"
#: menus.c:693
msgid "Move Now"
-msgstr ""
+msgstr "Mover ahora"
#: menus.c:694
-#, fuzzy
msgid "Retract Move"
-msgstr "Revocar jugada Ctrl+X"
+msgstr "Revocar jugada"
#: menus.c:700
-msgid "General ..."
-msgstr "Generales..."
+#, fuzzy
+msgid "General..."
+msgstr "General..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "Controles de tiempo..."
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
-msgstr "Para los motores... Alt+Mayús+U"
+msgid "Common Engine..."
+msgstr "General de los motores..."
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
-msgstr "Adjudicaciones... Alt+Mayús+J"
+msgid "Adjudications..."
+msgstr "Adjudicaciones..."
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
-msgstr "Para leer partida... Alt+Mayús+L"
+#, fuzzy
+msgid "Load Game..."
+msgstr "Cargar partida ..."
#: menus.c:708
-msgid "Save Game ..."
-msgstr "Para guardar partida... Alt+Mayús+S"
+#, fuzzy
+msgid "Save Game..."
+msgstr "Guardar partida ..."
#: menus.c:709
-msgid "Game List ..."
-msgstr "Lista de partidas..."
+#, fuzzy
+msgid "Game List..."
+msgstr "Lista de partidas ..."
#: menus.c:710
-msgid "Sounds ..."
-msgstr "Sonido..."
+#, fuzzy
+msgid "Sounds..."
+msgstr "Sonidos ..."
#: menus.c:713
msgid "Always Queen"
-msgstr ""
+msgstr "Siempre dama"
#: menus.c:719
msgid "Flash Moves"
-msgstr ""
+msgstr "Destello en las jugadas"
#: menus.c:721
msgid "Highlight Dragging"
#: menus.c:725
msgid "Move Sound"
-msgstr ""
+msgstr "Sonido en jugadas"
#: menus.c:727
msgid "Periodic Updates"
#: menus.c:729
msgid "Popup Exit Message"
-msgstr "Ventana al salir"
+msgstr "Mensaje de salida en venta emergente"
#: menus.c:731
msgid "Show Coords"
msgstr "Mostrar coordenadas"
#: menus.c:732
-#, fuzzy
msgid "Hide Thinking"
-msgstr "Ocultar cogitaciones al jugar contra humano"
+msgstr "Ocultar cogitaciones"
#: menus.c:736
msgid "Save Settings Now"
-msgstr "Salvar config. ahora"
+msgstr "Guardar config. ahora"
#: menus.c:737
msgid "Save Settings on Exit"
-msgstr "Salvar config. al salir del programa"
+msgstr "Guardar config. al salir del programa"
#: menus.c:742
msgid "Info XBoard"
-msgstr ""
+msgstr "Información XBoard"
#: menus.c:743
-#, fuzzy
msgid "Man XBoard"
-msgstr "Acerca de XBoard"
+msgstr "Manual de XBoard"
#: menus.c:745
msgid "XBoard Home Page"
-msgstr ""
+msgstr "Página web de XBoard"
#: menus.c:746
msgid "On-line User Guide"
-msgstr ""
+msgstr "Guía del usuario en línea"
#: menus.c:747
msgid "Development News"
-msgstr ""
+msgstr "Noticias sobre el desarrollo"
#: menus.c:748
msgid "e-Mail Bug Report"
-msgstr ""
+msgstr "correo-e para informar de errores"
-#: nengineoutput.c:78 nengineoutput.c:85
-#, fuzzy
+#: nengineoutput.c:78 nengineoutput.c:86
msgid "engine name"
-msgstr "Motor"
+msgstr "nombre del motor"
-#: nengineoutput.c:80 nengineoutput.c:87
-#, fuzzy
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
msgid "move"
-msgstr "jugadas"
+msgstr "jugada"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
-msgstr "Salida de motores"
+msgstr "Salida del motor"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
msgstr ""
+"STRIDE desajustado en nengineoutput.c\n"
+"¡Cambiar y recompilar!"
#: nevalgraph.c:68
msgid "Evaluation graph"
#: nevalgraph.c:105
msgid "Eval"
-msgstr ""
+msgstr "Evaluación"
#: ngamelist.c:87
-#, fuzzy
msgid "find position"
-msgstr "archivo de posición incorrecto"
+msgstr "encontrar posición"
#: ngamelist.c:88
msgid "narrow"
-msgstr ""
+msgstr "estrecho"
#: ngamelist.c:89
msgid "thresholds"
-msgstr ""
+msgstr "umbrales"
#: ngamelist.c:90
-#, fuzzy
msgid "tags"
-msgstr "Circunstancias"
+msgstr "etiquetas"
#: ngamelist.c:91
msgid "next"
-msgstr ""
+msgstr "siguiente"
#: ngamelist.c:92
msgid "close"
-msgstr ""
+msgstr "cerrar"
#: ngamelist.c:116
msgid "No game selected"
#: ngamelist.c:192
#, c-format
msgid "Scanning through games (%d)"
-msgstr ""
+msgstr "Explorando partidas (%d)"
#: ngamelist.c:211
msgid "previous page"
-msgstr ""
+msgstr "página anterior"
#: ngamelist.c:214
msgid "next page"
-msgstr ""
+msgstr "página siguiente"
#: ngamelist.c:217
msgid "no games matched your request"
-msgstr ""
+msgstr "ninguna partida responde a su búsqueda"
#: ngamelist.c:219
-#, fuzzy, c-format
+#, c-format
msgid "%s - %d/%d games (%d-%d-%d)"
-msgstr "Partida %s vs. %s: puntuación final %d-%d-%d"
+msgstr "%s - %d/%d partidas (%d-%d-%d)"
#: ngamelist.c:274
msgid "There is no game list"
#: nhistory.c:109
msgid "Move list"
-msgstr ""
+msgstr "Lista de jugadas"
#: usystem.c:222
#, c-format
msgid "%s: unrecognized color %s\n"
-msgstr ""
+msgstr "%s: color no reconocido %s\n"
#: usystem.c:230
-#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
-msgstr ""
+#, fuzzy, c-format
+msgid "%s: can't parse foreground color in '%s'\n"
+msgstr "%s: no se puede analizar el color de primer plano en `%s'\n"
#: usystem.c:259
#, c-format
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
+"%s: no se puede analizar los nombres de los colores; desactivando colorido\n"
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
-msgstr ""
+msgstr "ERROR: usuario desconocido %s (en carpeta %s)\n"
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
-msgstr ""
+msgstr "La capacidad de «socket» no está configurada en"
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
-msgstr ""
+msgstr "rcmd interno no implementado para Unix"
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
-msgstr ""
-
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
+msgstr "pixel blanco = 0x%lx, pixel negro = 0x%lx\n"
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
-msgstr ""
+msgstr "navegar"
#: xaw/xoptions.c:387 xaw/xoptions.c:388
msgid "Ctrl"
-msgstr ""
+msgstr "Ctrl"
#: xaw/xoptions.c:393 xaw/xoptions.c:394
msgid "Alt"
-msgstr ""
+msgstr "Alt"
#: xaw/xoptions.c:399 xaw/xoptions.c:400
msgid "Shift"
-msgstr ""
+msgstr "Mayús"
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "Aceptar"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "Cancelar"
-
-#~ msgid "New Game Ctrl+N"
-#~ msgstr "Nueva partida Ctrl+N"
-
-#~ msgid "New Variant ... Alt+Shift+V"
-#~ msgstr "Nueva variante... Alt+Mayús+V"
-
-#~ msgid "Load Game Ctrl+O"
-#~ msgstr "Leer partida... Ctrl+O"
-
-#~ msgid "Load Position Ctrl+Shift+O"
-#~ msgstr "Leer posición... Ctrl+Mayús+O"
-
-#~ msgid "Save Game Ctrl+S"
-#~ msgstr "Guardar partida... Ctrl+S"
-
-#~ msgid "Save Position Ctrl+Shift+S"
-#~ msgstr "Guardar posición... Ctrl+Mayús+S"
-
-#~ msgid "Quit Ctr+Q"
-#~ msgstr "Salir"
-
-#~ msgid "Copy Game Ctrl+C"
-#~ msgstr "Copiar partida Ctrl+C"
-
-#~ msgid "Edit Game Ctrl+E"
-#~ msgstr "Editar partida Ctrl+E"
-
-#~ msgid "Edit Position Ctrl+Shift+E"
-#~ msgstr "Editar posición Ctrl+Mayús+E"
-
-#~ msgid "Revert Home"
-#~ msgstr "Revertir Home"
-
-#~ msgid "Backward Alt+Left"
-#~ msgstr "Jugada anterior Alt+Izquierda"
-
-#~ msgid "Forward Alt+Right"
-#~ msgstr "Siguiente jugada Alt+Derecha"
-
-#~ msgid "Back to Start Alt+Home"
-#~ msgstr "Primera jugada Alt+Inicio"
-
-#~ msgid "Flip View F2"
-#~ msgstr "Tablero invertido F2"
-
-#~ msgid "Engine Output Alt+Shift+O"
-#~ msgstr "Mostrar salida del motor Alt+Mayús+O"
-
-#~ msgid "Move History Alt+Shift+H"
-#~ msgstr "Mostrar lista de jugadas Alt+Mayús+H"
+#~ msgid " (for concurrent playing of a single"
+#~ msgstr " (para jugar simultáneamente en un solo"
-#~ msgid "Evaluation Graph Alt+Shift+E"
-#~ msgstr "Mostrar gráfica de evaluación Alt+Mayús+E"
+#~ msgid "Match Options"
+#~ msgstr "Opciones del encuentro"
-#~ msgid "Game List Alt+Shift+G"
-#~ msgstr "Mostrar lista de partidas Alt+Mayús+G"
-
-#~ msgid "Machine Black Ctrl+B"
-#~ msgstr "El programa juega con negras Ctrl+B"
-
-#~ msgid "Edit Game Ctrl+E"
-#~ msgstr "Editar partida Ctrl+E"
-
-#~ msgid "Edit Position Ctrl+Shift+E"
-#~ msgstr "Editar posición Ctrl+Mayús+E"
-
-#~ msgid "Pause Pause"
-#~ msgstr "Pausa Pausa"
-
-#~ msgid "Accept F3"
-#~ msgstr "Acepto F3"
-
-#~ msgid "Decline F4"
-#~ msgstr "Rehuso F4"
-
-#~ msgid "Rematch F12"
-#~ msgstr "Pido desquite F12"
-
-#~ msgid "Draw F6"
-#~ msgstr "Tablas F6"
-
-#~ msgid "Adjourn F7"
-#~ msgstr "Aplazamiento F7"
-
-#~ msgid "Abort F8"
-#~ msgstr "Anulación F8"
-
-#~ msgid "Resign F9"
-#~ msgstr "Me rindo F9"
-
-#~ msgid "Move Now Ctrl+M"
-#~ msgstr "Forzar jugada Ctrl+M"
-
-#~ msgid "Always Queen Ctrl+Shift+Q"
-#~ msgstr "Siempre dama Ctrl+Mayús+Q"
-
-#~ msgid "Animate Moving Ctrl+Shift+A"
-#~ msgstr "Animar movimiento Ctrl+Mayús+A"
-
-#~ msgid "Auto Flag Ctrl+Shift+F"
-#~ msgstr "Bandera automática Ctrl+Mayús+F"
-
-#~ msgid "Ponder Next Move Ctrl+Shift+P"
-#~ msgstr "Prever próx.jugada Ctrl+Mayús+P"
-
-#~ msgid "Hide Thinking Ctrl+Shift+H"
-#~ msgstr "Ocultar cogitación Ctrl+Mayús+H"
-
-#~ msgid "Test Legality Ctrl+Shift+L"
-#~ msgstr "Checar legalidad Ctrl+Mayús+L"
-
-#~ msgid "Drop"
-#~ msgstr "Soltar"
-
-#, fuzzy
-#~ msgid "could not open: "
-#~ msgstr "No se pudo analizar la jugada"
+#~ msgid "ICS ..."
+#~ msgstr "ICS ..."
-#~ msgid "Promotion"
-#~ msgstr "Coronación"
+#~ msgid "Match ..."
+#~ msgstr "Encuentro ..."
-#~ msgid "ok"
-#~ msgstr "Aceptar"
+#~ msgid "%s: Can't access XPM directory %s\n"
+#~ msgstr "%s: No se puede acceder a la carpeta XPM %s\n"
-#~ msgid "Highlight Dragging (Show Move Targets)"
-#~ msgstr "Iluminar arrastre"
+#~ msgid "Available `%s' sizes:\n"
+#~ msgstr "Disponibles `%s' tamaños:\n"
-#~ msgid "White "
-#~ msgstr "Blancas "
+#~ msgid "Error: No `%s' files!\n"
+#~ msgstr "¡Error: no hay ficheros `%s'!\n"
-#~ msgid "Black "
-#~ msgstr "Negras "
+#~ msgid ""
+#~ "Warning: No DIR structure found on this system --\n"
+#~ " Unable to autosize for XPM/XIM pieces.\n"
+#~ " Please report this error to %s.\n"
+#~ " Include system type & operating system in message.\n"
+#~ msgstr ""
+#~ "ATENCIÓN: No se ha encontrado estructura DIR en este sistema --\n"
+#~ " No se puede asignar tamaño automáticamente a las piezas XPM/"
+#~ "XIM.\n"
+#~ " Por favor, informe de este error a %s.\n"
+#~ " Incluya en su mensaje el tipo de sistema y de sistema operativo.\n"
-#~ msgid "Close"
-#~ msgstr "Cerrar"
+#~ msgid "Error %d loading icon image\n"
+#~ msgstr "Error %d cargando imagen de icono\n"
-#~ msgid "sec/move"
-#~ msgstr "segundos por jugada"
+#~ msgid "cancel"
+#~ msgstr "Cancelar"
msgstr ""
"Project-Id-Version: GNU xboard master-20110411\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr ""
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "Versione %d del protocollo non supportata"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "Opzione timeControl non corretta: %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "Opzione searchTime non corretta: %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "La variante %s è supportata solo in modalità ICS"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "Nome di variante sconosciuto: %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "Avvio del motore di gioco"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "File partita non riconosciuto"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "File posizione non riconosciuto"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "Impossibile avviare un match senza specificare alcun motore di gioco"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "Apertura della porta comm %s fallita"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "Connessione all'host %s, porta %s fallita"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "Valore per initialMode non riconosciuto: %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "La modalità 'Analizza file' richiede un file partita"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "La modalità Analisi richiede un motore di gioco"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "La funzione di Analisi non è disponibile in modalità ICS"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "La modalità 'Bianco al motore di gioco' richiede almeno un motore"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr ""
"La funzione 'Bianco al motore di gioco' non è disponibile in modalità ICS"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "La modalità 'Nero al motore di gioco' richiede almeno un motore"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr ""
"La funzione 'Nero al motore di gioco' non è disponibile in modalità ICS"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr ""
"La modalità 'Motore di gioco 1 vs 2' richiede almeno un motore di gioco"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "La funzione 'Motore di gioco 1 vs 2' non è disponibile in modalità ICS"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "La modalità Allenamento richiede un file partita"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "Errore in scrittura sull'ICS"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "Errore in lettura da tastiera"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "Ricevuto carattere di Fine file (EOF) dalla tastiera"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "Errore in scrittura sul display"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "Errore nella lettura della lista mosse: sono presenti due intestazioni"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "Errore nella lettura della lista mosse: mosse annidate"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "Connessione chiusa dal'ICS"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "Errore in lettura dall'ICS"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr ""
"Partita troppo lunga; incrementare il valore di MAX_MOVES e ricompilare"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "Errore nela lettura della lista mosse: è presente una posizione in più"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "Impossibile interpretare la mossa dall'ICS: \"%s\""
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "say Errore interno; moveType malformato %d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "Stai giocando con il Nero"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "Stai giocando con il Bianco"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "Il tratto è al Bianco"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "Il tratto è al Nero"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "La posizione mostrata non è quella corrente"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "Mossa illegale"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "Termine della partita"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "Mossa non corretta"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "Mossa illegale \"%s\" dal %s motore di gioco"
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s non supporta l'analisi"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr "Mossa illegale \"%s\" (rifiutata dal %s motore di gioco)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "Avvio del %s motore di gioco %s su %s fallito: %s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "Suggerimento: %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr "Il motore di gioco accetta la tua offerta di patta"
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "Mossa ambigua nell'output dell'ICS: \"%s\""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "Mossa illegale nell'output dell'ICS: \"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "Mosse mancanti nella lista mosse"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "La variante %s non è supportata da %s"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "Avvio di '%s' fallito"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "In attesa del primo motore di gioco"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "In attesa del secondo motore di gioco"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
#, fuzzy
msgid "Bad tournament file"
msgstr "File partita non riconosciuto"
-#: backend.c:10472
+#: backend.c:10941
#, fuzzy
msgid "Waiting for other game(s)"
msgstr "In attesa del primo motore di gioco"
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "Match %s vs %s: punteggio finale %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "Mossa illegale: %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "Mossa ambigua: %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "Impossibile aprire \"%s\""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "Impossibile costruire lista delle partite"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "In questo messaggio non sono presenti altre partite"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "Non è ancora stata caricata nessuna partita"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "Impossibile tornare più indietro"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "Indice superiore al numero di partite"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "Impossibile effettuare la ricerca nel file di partita"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "Partita non trovata nel file"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "Stringa FEN di posizione scorretta nel file"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "Partita senza mosse"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "Non è ancora stata caricata nessuna posizione"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "Impossibile effettuare la ricerca nel file di posizione"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "Posizione non trovata nel file"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "Il tratto è al Nero"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "Il tratto è al Bianco"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
#, fuzzy
msgid "Waiting for access to save file"
msgstr "In attesa del secondo motore di gioco"
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
#, fuzzy
msgid "Saving position"
msgstr "File posizione non riconosciuto"
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "Non hai ancora fatto alcuna mossa"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "Non è presente nessuna partita non terminata"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "Impossibile aprire l'applicazione cmail"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "In attesa di risposta dall'avversario\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "Occorre ancora eseguire la mossa per la partita\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "Occorre ancora eseguire mosse per entrambe le partite\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "Occorre ancora eseguire mosse per tutte le %d partite\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "Occorre ancora eseguire una mossa per la partita %s\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "Non è presente nessuna partita non terminata\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "Pronto all'invio della posta\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "Occorre ancora eseguire mosse per le partite %s\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "Modifica commento"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "Modifica commento a %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "Il tratto non è al Bianco"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "Il tratto non è al Nero"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
+"or select 'Move Now'."
+msgstr "Attendi il tuo turno"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "Modalità Allenamento disattivata"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "Modalità Allenamento attivata"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "Già alla fine della partita"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "Avviso: Stai ancora giocando una partita"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "Avviso: Stai ancora osservando una partita"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "Avviso: Stai ancora esaminando una partita"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "La casa è già occupata"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "Non vi è alcuna offerta pendente a questa mossa"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "Il tuo avversario non ha ancora esaurito il proprio tempo"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "Devi eseguire la tua mossa prima di offrire la patta"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "Non stai esaminando alcuna partita"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "Non è possibile ripristinare mentre la pausa è attiva"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "E' il tuo turno"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "Attendi il tuo turno"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "Nessun suggerimento disponibile"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
#, fuzzy
msgid "Game list not loaded or empty"
msgstr "Non è ancora stata caricata nessuna partita"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "Errore in scrittura sul %s motore di gioco"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "Errore: il %s motore di gioco (%s) è terminato in maniera inaspettata"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "Errore in lettura dal %s motore di gioco (%s)"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "La mossa mostrata non è quella corrente"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "Impossibile leggere mossa"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "Tempo esaurito per entrambi"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "Tempo esaurito per il Bianco"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr ""
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "Stringa FEN di posizione scorretta negli Appunti"
msgid "Could not create book"
msgstr "Impossibile leggere mossa"
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr "Aggiorna F7"
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
#, fuzzy
msgid "Select Engine:"
msgstr "Motore"
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
#, fuzzy
msgid "Default Number of Games in Match (or Pairing):"
msgstr "Partite per match:"
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
#, fuzzy
msgid "Save Tourney Games on:"
msgstr "Impostazioni salvataggio partita"
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "Motori di gioco... Alt+Shift+U"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Impostazioni generali"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
#, fuzzy
msgid "Replace Engine"
msgstr "Motore"
-#: dialogs.c:285
+#: dialogs.c:312
#, fuzzy
msgid "Upgrade Engine"
msgstr "Motore"
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Impostazioni suoni"
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "Trascinamento animato"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "Mosse animate"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "Aggiudica sul tempo"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "Ruota vista automaticamente"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "Alla cieca"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "Nascondi l'output del motore se gioca contro un uomo"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "Evidenzia l'ultima mossa"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "Evidenzia con una freccia"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "Muovi con click singolo"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "Aggiornamenti continui (per Modalità di analisi)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "Pensa sul mio tempo"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "Chiedi conferma alla chiusura"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "Mostra popup per mosse errate"
-#: dialogs.c:382
+#: dialogs.c:423
#, fuzzy
msgid "Scores in Move List"
msgstr "Scarica lista mosse"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "Mostra coordinate"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "Verifica mosse illegali"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
#, fuzzy
msgid "Zoom factor in Evaluation Graph:"
msgstr "Grafico della valutazione"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "Impostazioni generali"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+#, fuzzy
+msgid "Normal"
msgstr "Normale"
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+#, fuzzy
+msgid "Makruk"
msgstr "Makruk"
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr "FRC"
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
msgstr "Knightmate"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
+#: dialogs.c:459
#, fuzzy
-msgid "cylinder *"
+msgid "Cylinder *"
msgstr "Cilindrici"
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr "Atomic"
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
-msgstr "Fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
+msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+#, fuzzy
+msgid "Crazyhouse"
msgstr "Crazyhouse"
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+#, fuzzy
+msgid "Bughouse"
msgstr "Bughouse"
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+#, fuzzy
+msgid "Suicide"
msgstr "Suicide"
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr "Losers"
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
-msgstr ""
+#: dialogs.c:489
+msgid "fairy"
+msgstr "Fairy"
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr ""
"Attenzione: il secondo motore di gioco (%s) non supporta questa azione!"
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "Varianti di gioco"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "Num max di CPU:"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "Dimensione Hash [MB]:"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr "Cartella EGTB:"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr "Dimensione EGTB [MB]:"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr "Profondità Libro:"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr "Varianti Libro:"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr "Libro proprio per motore 1"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr "Impostazioni motori di gioco"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr "Individua scacco matto"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "Verifica gli annunci del motore"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr "Patta per materiale insufficiente"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr "Aggiudica patte triviali"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "Aggiudica patta dopo:"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "Limite per aggiudicare vinta/persa:"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "Output motore 1 sempre riferito al Bianco"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "Output motore 2 sempre riferito al Bianco"
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "Aggiudica al Bianco"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "Auto Kibitz"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "Commenti automatici"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "Osserva automaticamente"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "Porta in primo piano"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "Osserva in bckgnd"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "Doppia scacchiera"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "Scarica lista mosse"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "Non disturbare durante il gioco"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "Grafico delle richieste"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr "Auto aggiorna"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+#, fuzzy
+msgid "Quit after game"
+msgstr "In attesa del primo motore di gioco"
+
+#: dialogs.c:665
msgid "Premove"
msgstr "Premossa"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "1° mossa Bianco"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "1° mossa Nero"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "Allarme"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "Impostazioni ICS"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
#, fuzzy
msgid "No games before year:"
msgstr "Non è ancora stata caricata nessuna partita"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "Impostazioni apertura partita"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr ""
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr ""
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "Impostazioni salvataggio partita"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "Silenzioso"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "Beep"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr ""
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "Ascolta"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr ""
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr ""
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr ""
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "Impostazioni suoni"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr "Pezzi neri"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "Case bianche"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "Case nere"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "Case evidenziate"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr "Premosse evidenziate"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr "Monocromatico"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "Impostazioni scacchiera"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
#, fuzzy
msgid "Edit book"
msgstr "Modifica"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "Informazioni partita"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr ""
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr ""
-#: dialogs.c:1251
+#: dialogs.c:1338
#, fuzzy
msgid "Engine has no options"
msgstr "Libro proprio per motore 1"
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "Disposizione iniziale:"
-#: dialogs.c:1372
+#: dialogs.c:1459
#, fuzzy
msgid "randomize"
msgstr "Casuale"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "Nuova partita Shuffle..."
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
#, fuzzy
msgid "Time-Odds factors:"
msgstr "Riduci il tempo di un fattore:"
-#: dialogs.c:1416
+#: dialogs.c:1503
#, fuzzy
msgid "Engine #1"
msgstr "Motore"
-#: dialogs.c:1417
+#: dialogs.c:1504
#, fuzzy
msgid "Engine #2 / Human"
msgstr "Libro proprio per motore 1"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "Errore in scrittura sul motore di gioco"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
#, fuzzy
msgid "Cancel"
msgstr "Cancella"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "Re"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "Generali..."
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "Cavallo"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Alfiere"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Torre"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "Arcivescovo"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "Cancelliere"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Donna"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "Promuovi"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr "Fabbrica"
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "Muovi su"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "Muovi giu"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
#, fuzzy
msgid "Game-list options"
msgstr "Impostazioni apertura partita"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "Errore"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "Errore fatale"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "Chiusura in corso"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "Informazione"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "Nota"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Bianco"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Pedone"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "Elefante"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "Cannone"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "Degrada"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Casa vuota"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "Svuota scacchiera"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Nero"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "File"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "Modifica"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr "Visualizza"
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "Modalità"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "Azioni"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr "Motore"
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "Impostazioni"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Aiuto"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "File"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "Filtro"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "Filtro"
-#: dialogs.c:2447
+#: dialogs.c:2541
#, fuzzy
msgid "Contents of"
msgstr "Commenti"
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
msgstr ""
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, fuzzy, c-format
msgid "Engine Output"
msgstr "Output del motore di gioco"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr ""
msgid "Reading game file (%d)"
msgstr "File partita non riconosciuto"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr ""
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
#, fuzzy
msgid "Failed to open file"
msgstr "Impossibile aprire l'applicazione cmail"
msgstr "Nuova partita Shuffle..."
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "Nuova partita Shuffle..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr "Varianti di gioco"
#: menus.c:586
msgstr "Aggiudica come Patta"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "Motori di gioco... Alt+Shift+U"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "Impostazioni motore 1"
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "Impostazioni motore 2"
#: menus.c:690
msgstr "Annulla mossa Ctrl+X"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "Generali..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "Controllo Tempo... Alt+Shift+T"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr "Motori di gioco... Alt+Shift+U"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr "Aggiudicazioni... Alt+Shift+J"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "Apertura partita... Alt+Shift+L"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "Salvataggio partita... Alt+Shift+S"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "Lista partite..."
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "Suoni..."
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
#, fuzzy
msgid "engine name"
msgstr "Motore"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
#, fuzzy
msgid "move"
msgstr "mosse"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "Output del motore di gioco"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "OK"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "Cancella"
+#~ msgid "ICS ..."
+#~ msgstr "ICS..."
+
+#~ msgid "cancel"
+#~ msgstr "Cancella"
#~ msgid "New Game Ctrl+N"
#~ msgstr "Nuova partita Ctrl+N"
--- /dev/null
+# Dutch translations for GNU XBoard.
+# Copyright (C) 2013 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xboard package.
+#
+# "The patterns change, and never are the same again."
+#
+# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU xboard 4.7.2\n"
+"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
+"PO-Revision-Date: 2014-01-12 20:00+0100\n"
+"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: args.h:833
+#, c-format
+msgid "%s in settings file\n"
+msgstr "%s in instellingenbestand\n"
+
+#: args.h:867
+#, c-format
+msgid "Bad integer value %s"
+msgstr "Ongeldig geheel getal: %s"
+
+#: args.h:968 args.h:1229
+#, c-format
+msgid "Unrecognized argument %s"
+msgstr "Niet-herkend argument: %s"
+
+#: args.h:999
+#, c-format
+msgid "No value provided for argument %s"
+msgstr "Geen waarde gegeven voor argument %s"
+
+#: args.h:1059
+#, c-format
+msgid "Incomplete \\ escape in value for %s"
+msgstr "Onvolledige \\-stuurcode in waarde voor %s"
+
+#: args.h:1170
+#, c-format
+msgid "Failed to open indirection file %s"
+msgstr "Kan indirectiebestand %s niet openen"
+
+#: args.h:1187
+#, c-format
+msgid "Unrecognized boolean argument value %s"
+msgstr "Niet-herkende booleaanse waarde: %s"
+
+#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
+#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
+#: backend.c:800
+msgid "first"
+msgstr "eerste"
+
+#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
+#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
+#: backend.c:803
+msgid "second"
+msgstr "tweede"
+
+#: backend.c:885
+#, c-format
+msgid "protocol version %d not supported"
+msgstr "protocolversie %d wordt niet ondersteund"
+
+#: backend.c:991
+msgid "You did not specify the engine executable"
+msgstr "U hebt geen automaatbestand opgegeven."
+
+#: backend.c:1049
+#, c-format
+msgid "bad timeControl option %s"
+msgstr "ongeldige timeControl-optie: %s"
+
+#: backend.c:1064
+#, c-format
+msgid "bad searchTime option %s"
+msgstr "ongeldige searchTime-optie: %s"
+
+#: backend.c:1170
+#, c-format
+msgid "Variant %s supported only in ICS mode"
+msgstr "Variant %s wordt alleen ondersteund in ICS-modus"
+
+#: backend.c:1188
+#, c-format
+msgid "Unknown variant name %s"
+msgstr "Onbekende variantnaam: %s"
+
+#: backend.c:1439
+msgid "Starting chess program"
+msgstr "Starten van schaakprogramma"
+
+#: backend.c:1462
+msgid "Bad game file"
+msgstr "Incorrect partijbestand"
+
+#: backend.c:1469
+msgid "Bad position file"
+msgstr "Incorrect positiebestand"
+
+#: backend.c:1483
+msgid "Pick new game"
+msgstr "Kies een nieuwe partij"
+
+#: backend.c:1552
+#, fuzzy
+msgid ""
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
+msgstr ""
+"U hebt een reeds voltooid toernooi herstart.\n"
+"Er wordt een extra cyclus aan toegevoegd.\n"
+"De partijen beginnen in tien seconden."
+
+#: backend.c:1559
+#, c-format
+msgid "All games in tourney '%s' are already played or playing"
+msgstr "Alle partijen in toernooi '%s' zijn al gespeeld of spelen nog"
+
+#: backend.c:1566
+msgid "Can't have a match with no chess programs"
+msgstr "Er is geen toernooi mogelijk zonder automaten."
+
+#: backend.c:1620
+#, c-format
+msgid "Could not open comm port %s"
+msgstr "Kan communicatiepoort %s niet openen"
+
+#: backend.c:1623
+#, c-format
+msgid "Could not connect to host %s, port %s"
+msgstr "Kan geen verbinding maken met host %s, poort %s"
+
+#: backend.c:1679
+#, c-format
+msgid "Unknown initialMode %s"
+msgstr "Onbekende initialMode %s"
+
+#: backend.c:1705
+msgid "AnalyzeFile mode requires a game file"
+msgstr "AnalyzeFile-modus vereist een partijbestand"
+
+#: backend.c:1732
+msgid "Analysis mode requires a chess engine"
+msgstr "Analysemodus vereist een schaakprogramma"
+
+#: backend.c:1736
+msgid "Analysis mode does not work with ICS mode"
+msgstr "Analysemodus werkt niet met ICS-modus"
+
+#: backend.c:1747
+msgid "MachineWhite mode requires a chess engine"
+msgstr "MachineWhite-modus vereist een schaakprogramma"
+
+#: backend.c:1752
+msgid "MachineWhite mode does not work with ICS mode"
+msgstr "MachineWhite-modus werkt niet met ICS-modus"
+
+#: backend.c:1759
+msgid "MachineBlack mode requires a chess engine"
+msgstr "MachineBlack-modus vereist een schaakprogramma"
+
+#: backend.c:1764
+msgid "MachineBlack mode does not work with ICS mode"
+msgstr "MachineBlack-modus werkt niet met ICS-modus"
+
+#: backend.c:1771
+msgid "TwoMachines mode requires a chess engine"
+msgstr "TwoMachines-modus vereist een schaakprogramma"
+
+#: backend.c:1776
+msgid "TwoMachines mode does not work with ICS mode"
+msgstr "TwoMachines-modus werkt niet met ICS-modus"
+
+#: backend.c:1787
+msgid "Training mode requires a game file"
+msgstr "Trainingsmodus vereist een partijbestand"
+
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
+msgid "Error writing to ICS"
+msgstr "Fout bij schrijven naar ICS"
+
+#: backend.c:1965
+msgid "Error reading from keyboard"
+msgstr "Fout bij lezen van toetsenbord"
+
+#: backend.c:1968
+msgid "Got end of file from keyboard"
+msgstr "Einde-van-bestand ontvangen van toetsenbord"
+
+#: backend.c:2276
+#, c-format
+msgid "Unknown wild type %d"
+msgstr "Onbekend wild type %d"
+
+#: backend.c:2347 usystem.c:329
+msgid "Error writing to display"
+msgstr "Fout bij schrijven naar beeldscherm"
+
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
+#, c-format
+msgid "your opponent kibitzes: %s"
+msgstr "Uw tegenstander kibitzt: %s"
+
+#: backend.c:3634
+msgid "Error gathering move list: two headers"
+msgstr "Fout bij lezen van zettenlijst: twee koppen"
+
+#: backend.c:3681
+msgid "Error gathering move list: nested"
+msgstr "Fout bij lezen van zettenlijst: genest"
+
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
+msgid "vs."
+msgstr "tegen"
+
+#: backend.c:3913
+msgid "Illegal move (rejected by ICS)"
+msgstr "Ongeldige zet (geweigerd door ICS)"
+
+#: backend.c:4251
+msgid "Connection closed by ICS"
+msgstr "Verbinding is gesloten door ICS"
+
+#: backend.c:4253
+msgid "Error reading from ICS"
+msgstr "Fout bij lezen van ICS"
+
+#: backend.c:4330
+#, c-format
+msgid ""
+"Failed to parse board string:\n"
+"\"%s\""
+msgstr ""
+"Ontleden van bordtekenreeks is mislukt:\n"
+"'%s'"
+
+#: backend.c:4339 backend.c:10203
+msgid "Game too long; increase MAX_MOVES and recompile"
+msgstr "*** Partij is te lang; verhoog MAX_MOVES en hercompileer."
+
+#: backend.c:4458
+msgid "Error gathering move list: extra board"
+msgstr "Fout bij lezen van zettenlijst: extra bord"
+
+#: backend.c:4890 backend.c:4912
+#, c-format
+msgid "Couldn't parse move \"%s\" from ICS"
+msgstr "Kan zet '%s' van ICS niet ontleden"
+
+#: backend.c:5161
+#, c-format
+msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
+msgstr "**interne programmafout**; ongeldig moveType %d (%d,%d-%d,%d)"
+
+#: backend.c:5232
+msgid "You cannot do this while you are playing or observing"
+msgstr "U kunt dit niet doen tijdens het spelen of observeren."
+
+#: backend.c:6174
+msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
+msgstr "*** Hercompileer om BOARD_RANKS of BOARD_FILES te ondersteunen."
+
+#: backend.c:6664
+msgid "You are playing Black"
+msgstr "U speelt met zwart"
+
+#: backend.c:6673 backend.c:6700
+msgid "You are playing White"
+msgstr "U speelt met wit"
+
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
+msgid "It is White's turn"
+msgstr "Wit is aan zet"
+
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
+msgid "It is Black's turn"
+msgstr "Zwart is aan zet"
+
+#: backend.c:6725
+msgid "Displayed position is not current"
+msgstr "Getoonde positie is niet de huidige"
+
+#: backend.c:6963
+msgid "Illegal move"
+msgstr "Ongeldige zet"
+
+#: backend.c:7030
+msgid "End of game"
+msgstr "Einde van partij"
+
+#: backend.c:7033
+msgid "Incorrect move"
+msgstr "Onjuiste zet"
+
+#: backend.c:7423 backend.c:7569
+msgid "Pull pawn backwards to under-promote"
+msgstr "Beweeg pion terug voor onderpromotie."
+
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
+msgid "Swiss tourney finished"
+msgstr "Zwitsers toernooi is beëindigd."
+
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
+msgid "Invalid pairing from pairing engine"
+msgstr "Ongeldig koppel van koppelautomaat."
+
+#: backend.c:8603
+#, c-format
+msgid "Illegal move \"%s\" from %s machine"
+msgstr "Ongeldige zet '%s' van %s automaat."
+
+#: backend.c:8849
+msgid "Bad FEN received from engine"
+msgstr "Ongeldige FEN ontvangen van automaat"
+
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
+#, c-format
+msgid "%s does not support analysis"
+msgstr "%s ondersteunt analyse niet."
+
+#: backend.c:9089
+#, c-format
+msgid "Illegal move \"%s\" (rejected by %s chess program)"
+msgstr "Ongeldige zet '%s' (geweigerd door %s schaakprogramma)"
+
+#: backend.c:9116
+#, c-format
+msgid "Failed to start %s chess program %s on %s: %s\n"
+msgstr "Starten van %s schaakprogramma (%s) op %s is mislukt: %s\n"
+
+#: backend.c:9137
+#, c-format
+msgid "Hint: %s"
+msgstr "Hint: %s"
+
+#: backend.c:9142
+#, c-format
+msgid ""
+"Illegal hint move \"%s\"\n"
+"from %s chess program"
+msgstr ""
+"Ongeldige hintzet '%s'\n"
+"van %s schaakprogramma."
+
+#: backend.c:9317
+msgid "Machine accepts your draw offer"
+msgstr "Automaat accepteert uw remise-aanbod"
+
+# XXX punten
+#: backend.c:9320
+#, fuzzy
+msgid ""
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
+msgstr ""
+"Automaat biedt remise aan.\n"
+"Kies Acties > Remise om te accepteren."
+
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
+msgid "failed writing PV"
+msgstr "schrijven van hoofdvariant is mislukt"
+
+#: backend.c:9701
+#, c-format
+msgid "Ambiguous move in ICS output: \"%s\""
+msgstr "Niet-eenduidige zet in ICS-uitvoer: '%s'"
+
+#: backend.c:9711
+#, c-format
+msgid "Illegal move in ICS output: \"%s\""
+msgstr "Ongeldige zet in ICS-uitvoer: '%s'"
+
+#: backend.c:9722
+msgid "Gap in move list"
+msgstr "Gat in zettenlijst"
+
+#: backend.c:10357
+#, c-format
+msgid "Variant %s not supported by %s"
+msgstr "Variant %s wordt niet ondersteund door %s"
+
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
+#, c-format
+msgid "Startup failure on '%s'"
+msgstr "Opstartfout bij '%s'"
+
+#: backend.c:10537
+msgid "Waiting for first chess program"
+msgstr "Wachten op eerste schaakprogramma"
+
+#: backend.c:10542 backend.c:14454
+msgid "Waiting for second chess program"
+msgstr "Wachten op tweede schaakprogramma"
+
+#: backend.c:10591
+msgid "Could not write on tourney file"
+msgstr "Kan niet naar toernooibestand schrijven."
+
+#: backend.c:10665
+msgid ""
+"You cannot replace an engine while it is engaged!\n"
+"Terminate its game first."
+msgstr ""
+"U kunt een automaat niet vervangen terwijl deze\n"
+"gebruikt wordt. Beëindig eerst diens partij."
+
+#: backend.c:10679
+msgid "No engine with the name you gave is installed"
+msgstr "Er is geen automaat met de gegeven naam geïnstalleerd"
+
+# XXX where is Tournament Options dialog?
+#: backend.c:10681
+msgid ""
+"First change an engine by editing the participants list\n"
+"of the Tournament Options dialog"
+msgstr ""
+"Wijzig eerst een automaat door de deelnemerslijst\n"
+"in de dialoog «Toernooi-instellingen» te bewerken."
+
+#: backend.c:10682
+msgid "You can only change one engine at the time"
+msgstr "U kunt slechts één automaat tegelijk wijzigen."
+
+#: backend.c:10697 backend.c:10845
+#, c-format
+msgid "No engine %s is installed"
+msgstr "Automaat '%s' is niet geïnstalleerd"
+
+#: backend.c:10717
+msgid ""
+"You must supply a tournament file,\n"
+"for storing the tourney progress"
+msgstr ""
+"U dient een toernooibestand op te geven,\n"
+"om de toernooivoortgang in op te slaan."
+
+#: backend.c:10727
+msgid "Not enough participants"
+msgstr "Te weinig deelnemers"
+
+#: backend.c:10929
+msgid "Bad tournament file"
+msgstr "Incorrect toernooibestand"
+
+#: backend.c:10941
+msgid "Waiting for other game(s)"
+msgstr "Wachten op andere partij(en)"
+
+#: backend.c:10954
+msgid "No pairing engine specified"
+msgstr "Geen koppelautomaat gegeven"
+
+#: backend.c:11430
+#, c-format
+msgid "Match %s vs. %s: final score %d-%d-%d"
+msgstr "Toernooi van %s tegen %s: eindscore %d-%d-%d"
+
+#: backend.c:11897 backend.c:11928
+#, c-format
+msgid "Illegal move: %d.%s%s"
+msgstr "Ongeldige zet: %d.%s%s"
+
+#: backend.c:11917
+#, c-format
+msgid "Ambiguous move: %d.%s%s"
+msgstr "Niet-eenduidige zet: %d.%s%s"
+
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
+#, c-format
+msgid "Can't open \"%s\""
+msgstr "Kan '%s' niet openen"
+
+#: backend.c:11983 menus.c:116
+msgid "Cannot build game list"
+msgstr "Kan partijenlijst niet samenstellen"
+
+#: backend.c:12068
+msgid "No more games in this message"
+msgstr "Geen verdere partijen in dit bericht"
+
+#: backend.c:12108
+msgid "No game has been loaded yet"
+msgstr "Er is nog geen partij geladen"
+
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
+msgid "Can't back up any further"
+msgstr "Kan niet nog verder teruggaan"
+
+#: backend.c:12553
+msgid "Game number out of range"
+msgstr "Partijnummer valt buiten bereik"
+
+#: backend.c:12564
+msgid "Can't seek on game file"
+msgstr "Kan niet springen in partijbestand"
+
+#: backend.c:12622
+msgid "Game not found in file"
+msgstr "Partij niet gevonden in bestand"
+
+#: backend.c:12751 backend.c:13087
+msgid "Bad FEN position in file"
+msgstr "Ongeldige FEN-positie in bestand"
+
+#: backend.c:12903
+msgid "No moves in game"
+msgstr "Partij bevat geen zetten"
+
+#: backend.c:12987
+msgid "No position has been loaded yet"
+msgstr "Er is nog geen positie geladen"
+
+#: backend.c:13048 backend.c:13059
+msgid "Can't seek on position file"
+msgstr "Kan niet springen in positiebestand"
+
+#: backend.c:13066 backend.c:13078
+msgid "Position not found in file"
+msgstr "Positie niet gevonden in bestand"
+
+#: backend.c:13118
+msgid "Black to play"
+msgstr "Zwart is aan zet"
+
+#: backend.c:13121
+msgid "White to play"
+msgstr "Wit is aan zet"
+
+#: backend.c:13208 backend.c:13572
+msgid "Waiting for access to save file"
+msgstr "Wachten op toegang om bestand op te slaan"
+
+#: backend.c:13210
+msgid "Saving game"
+msgstr "Opslaan van partij"
+
+#: backend.c:13211
+msgid "Bad Seek"
+msgstr "Ongeldige bestandssprong"
+
+#: backend.c:13574
+msgid "Saving position"
+msgstr "Opslaan van positie"
+
+# XXX Reload Same Game is not in POT
+#: backend.c:13700
+msgid ""
+"You have edited the game history.\n"
+"Use Reload Same Game and make your move again."
+msgstr ""
+"U hebt de partijgeschiedenis bewerkt.\n"
+"Gebruik «Zelfde partij herladen» en doe uw zet opnieuw."
+
+#: backend.c:13705
+msgid ""
+"You have entered too many moves.\n"
+"Back up to the correct position and try again."
+msgstr ""
+"U hebt te veel zetten ingevoerd.\n"
+"Ga terug naar de correcte positie en probeer het opnieuw."
+
+#: backend.c:13710
+msgid ""
+"Displayed position is not current.\n"
+"Step forward to the correct position and try again."
+msgstr ""
+"Getoonde positie is niet de huidige.\n"
+"Ga vooruit naar de correcte positie en probeer het opnieuw."
+
+#: backend.c:13757
+msgid "You have not made a move yet"
+msgstr "U hebt nog geen zet gedaan"
+
+#: backend.c:13778
+msgid ""
+"The cmail message is not loaded.\n"
+"Use Reload CMail Message and make your move again."
+msgstr ""
+"Het CMail-bericht is niet geladen.\n"
+"Gebruik «CMail-bericht herladen» en doe uw zet opnieuw."
+
+#: backend.c:13783
+msgid "No unfinished games"
+msgstr "Geen onafgemaakte partijen"
+
+#: backend.c:13789
+#, c-format
+msgid ""
+"You have already mailed a move.\n"
+"Wait until a move arrives from your opponent.\n"
+"To resend the same move, type\n"
+"\"cmail -remail -game %s\"\n"
+"on the command line."
+msgstr ""
+
+#: backend.c:13804
+msgid "Failed to invoke cmail"
+msgstr "Aanroepen van 'cmail' is mislukt"
+
+#: backend.c:13866
+#, c-format
+msgid "Waiting for reply from opponent\n"
+msgstr "Wachten op antwoord van tegenstander\n"
+
+#: backend.c:13888
+#, c-format
+msgid "Still need to make move for game\n"
+msgstr "U dient nog een zet te doen voor deze partij.\n"
+
+#: backend.c:13892
+#, c-format
+msgid "Still need to make moves for both games\n"
+msgstr "U dient nog zetten te doen voor beide partijen.\n"
+
+#: backend.c:13896
+#, c-format
+msgid "Still need to make moves for all %d games\n"
+msgstr "U dient nog zetten te doen voor alle %d partijen.\n"
+
+#: backend.c:13903
+#, c-format
+msgid "Still need to make a move for game %s\n"
+msgstr "U dient nog een zet te doen voor partij %s.\n"
+
+#: backend.c:13909
+#, c-format
+msgid "No unfinished games\n"
+msgstr "Geen onafgemaakte partijen.\n"
+
+#: backend.c:13911
+#, c-format
+msgid "Ready to send mail\n"
+msgstr "Klaar om mail te verzenden.\n"
+
+#: backend.c:13916
+#, c-format
+msgid "Still need to make moves for games %s\n"
+msgstr "U dient nog zetten te doen voor partijen %s.\n"
+
+#: backend.c:14118
+msgid "Edit comment"
+msgstr "Opmerking bewerken"
+
+#: backend.c:14120
+#, c-format
+msgid "Edit comment on %d.%s%s"
+msgstr "Opmerking op %d.%s%s bewerken"
+
+#: backend.c:14175
+#, c-format
+msgid "You are not observing a game"
+msgstr "U bent geen partij aan het observeren."
+
+#: backend.c:14286
+msgid "It is not White's turn"
+msgstr "Wit is niet aan zet"
+
+#: backend.c:14367
+msgid "It is not Black's turn"
+msgstr "Zwart is niet aan zet"
+
+#: backend.c:14475
+#, c-format
+msgid "Starting %s chess program"
+msgstr "Starten van %s schaakprogramma"
+
+#: backend.c:14503 backend.c:15648
+#, fuzzy
+msgid ""
+"Wait until your turn,\n"
+"or select 'Move Now'."
+msgstr ""
+"Wacht op uw beurt,\n"
+"of kies «Nu zetten»."
+
+#: backend.c:14638
+msgid "Training mode off"
+msgstr "Trainingsmodus is uitgeschakeld"
+
+#: backend.c:14646
+msgid "Training mode on"
+msgstr "Trainingsmodus is ingeschakeld"
+
+#: backend.c:14649
+msgid "Already at end of game"
+msgstr "Reeds aan einde van partij."
+
+#: backend.c:14729
+msgid "Warning: You are still playing a game"
+msgstr "Waarschuwing: u bent nog een partij aan het spelen."
+
+#: backend.c:14732
+msgid "Warning: You are still observing a game"
+msgstr "Waarschuwing: u bent nog een partij aan het observeren."
+
+#: backend.c:14735
+msgid "Warning: You are still examining a game"
+msgstr "Waarschuwing: u bent nog een partij aan het bestuderen."
+
+#: backend.c:14802
+msgid "Click clock to clear board"
+msgstr "Klik op klok om bord leeg te maken."
+
+# XXX analysis?
+#: backend.c:14812
+msgid "Close ICS engine analyze..."
+msgstr ""
+
+#: backend.c:15130
+msgid "That square is occupied"
+msgstr "Dat veld is bezet."
+
+#: backend.c:15154 backend.c:15180
+msgid "There is no pending offer on this move"
+msgstr "Er is geen aanbod op deze zet."
+
+#: backend.c:15216 backend.c:15227
+msgid "Your opponent is not out of time"
+msgstr "Uw tegenstander heeft nog tijd."
+
+#: backend.c:15293
+msgid "You must make your move before offering a draw"
+msgstr "U dient uw zet te doen alvorens remise aan te bieden."
+
+#: backend.c:15630
+msgid "You are not examining a game"
+msgstr "U bent geen partij aan het bestuderen."
+
+#: backend.c:15634
+msgid "You can't revert while pausing"
+msgstr "U kunt niet terugdraaien tijdens pauze."
+
+#: backend.c:15688 backend.c:15695
+msgid "It is your turn"
+msgstr "U bent aan zet"
+
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
+msgstr "Wacht op uw beurt"
+
+#: backend.c:15758
+msgid "No hint available"
+msgstr "Geen hint beschikbaar"
+
+#: backend.c:15774 ngamelist.c:355
+msgid "Game list not loaded or empty"
+msgstr "Partijenlijst is leeg of niet geladen"
+
+#: backend.c:15781
+msgid "Book file exists! Try again for overwrite."
+msgstr "Bestand bestaat al. Probeer het opnieuw om deze te overschrijven."
+
+#: backend.c:16259
+#, c-format
+msgid "Error writing to %s chess program"
+msgstr "Fout bij schrijven naar %s schaakprogramma"
+
+#: backend.c:16262 backend.c:16293
+#, c-format
+msgid "%s program exits in draw position (%s)"
+msgstr "%s programma is geëindigd in remisepositie (%s)"
+
+#: backend.c:16288
+#, c-format
+msgid "Error: %s chess program (%s) exited unexpectedly"
+msgstr "Fout: %s schaakprogramma (%s) is onverwacht beëindigd"
+
+#: backend.c:16306
+#, c-format
+msgid "Error reading from %s chess program (%s)"
+msgstr "Fout bij lezen van %s schaakprogramma (%s)"
+
+#: backend.c:16730
+#, c-format
+msgid "%s engine has too many options\n"
+msgstr "%s automaat heeft te veel instellingen\n"
+
+#: backend.c:16886
+msgid "Displayed move is not current"
+msgstr "Getoonde zet is niet de huidige"
+
+#: backend.c:16895
+msgid "Could not parse move"
+msgstr "Kan zet niet ontleden"
+
+#: backend.c:17020 backend.c:17042
+msgid "Both flags fell"
+msgstr "Beide vlaggen zijn gevallen"
+
+#: backend.c:17022
+msgid "White's flag fell"
+msgstr "Wits vlag is gevallen"
+
+#: backend.c:17044
+msgid "Black's flag fell"
+msgstr "Zwarts vlag is gevallen"
+
+#: backend.c:17175
+msgid "Clock adjustment not allowed in auto-flag mode"
+msgstr "Klokbijstelling is niet toegestaan in auto-vlagmodus"
+
+#: backend.c:18025
+msgid "Bad FEN position in clipboard"
+msgstr "Ongeldige FEN-positie op het klembord"
+
+#: book.c:577 book.c:833
+msgid "Polyglot book not valid"
+msgstr "Polyglot-boek is ongeldig"
+
+#: book.c:701
+msgid "Book Fault"
+msgstr "Fout in boek"
+
+#: book.c:836
+msgid "Hash keys are different"
+msgstr "Hash-sleutels zijn verschillend"
+
+#: book.c:1003
+msgid "Could not create book"
+msgstr "Kan geen boek aanmaken"
+
+#: dialogs.c:283
+msgid "Tournament file: "
+msgstr "Toernooibestand: "
+
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
+msgstr ""
+
+#: dialogs.c:285
+msgid "Sync after round"
+msgstr ""
+
+#: dialogs.c:286
+msgid "Sync after cycle"
+msgstr ""
+
+#: dialogs.c:287
+msgid "Tourney participants:"
+msgstr "Toernooi-deelnemers:"
+
+#: dialogs.c:288
+msgid "Select Engine:"
+msgstr "Kies automaat:"
+
+#: dialogs.c:296
+msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
+msgstr "Toernooitype (0 = op-de-rij-af, 1 = handschoen):"
+
+#: dialogs.c:297
+#, fuzzy
+msgid "Number of tourney cycles (or Swiss rounds):"
+msgstr "Aantal toernooirondes:"
+
+#: dialogs.c:298
+msgid "Default Number of Games in Match (or Pairing):"
+msgstr "Standaard aantal partijen in een toernooi (of koppel):"
+
+#: dialogs.c:299
+msgid "Pause between Match Games (msec):"
+msgstr "Pauze tussen toernooipartijen (msec):"
+
+#: dialogs.c:300
+msgid "Save Tourney Games on:"
+msgstr "Toernooipartijen bewaren op:"
+
+#: dialogs.c:301
+msgid "Game File with Opening Lines:"
+msgstr "Partijbestand met openingsregels:"
+
+#: dialogs.c:302
+msgid "Game Number (-1 or -2 = Auto-Increment):"
+msgstr "Partijnummer (-1 of -2 = automatische ophoging):"
+
+#: dialogs.c:303
+msgid "File with Start Positions:"
+msgstr "Bestand met startposities:"
+
+#: dialogs.c:304
+msgid "Position Number (-1 or -2 = Auto-Increment):"
+msgstr "Positienummer (-1 of -2 = automatische ophoging):"
+
+#: dialogs.c:305
+msgid "Rewind Index after this many Games (0 = never):"
+msgstr "Index terugspoelen na dit aantal partijen (0 = nooit):"
+
+#: dialogs.c:306
+msgid "Disable own engine books by default"
+msgstr "Eigen automaatboeken standaard uitschakelen"
+
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr "Tijdsbeperking"
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "Automaten..."
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Algemene instellingen"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
+msgid "Replace Engine"
+msgstr "Automaat vervangen"
+
+#: dialogs.c:312
+msgid "Upgrade Engine"
+msgstr "Automaat upgraden"
+
+#: dialogs.c:313
+msgid "Clone Tourney"
+msgstr "Toernooi klonen"
+
+#: dialogs.c:351
+msgid "First you must specify an existing tourney file to clone"
+msgstr "U dient eerst een bestaand toernooibestand op te geven."
+
+#: dialogs.c:367 dialogs.c:1407
+#, fuzzy
+msgid "# no engines are installed"
+msgstr "# er zijn geen automaten geïnstalleerd"
+
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
+msgstr ""
+
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Geluidsinstellingen"
+
+#: dialogs.c:402
+msgid "Absolute Analysis Scores"
+msgstr "Absolute analysescores"
+
+#: dialogs.c:403
+msgid "Almost Always Queen (Detour Under-Promote)"
+msgstr "Bijna altijd koningin (onderpromotie-omweg)"
+
+#: dialogs.c:404 menus.c:714
+msgid "Animate Dragging"
+msgstr "Slepen animeren"
+
+#: dialogs.c:405 menus.c:715
+msgid "Animate Moving"
+msgstr "Zetten animeren"
+
+#: dialogs.c:406 menus.c:716
+msgid "Auto Flag"
+msgstr "Vanzelf vlaggen"
+
+#: dialogs.c:407 menus.c:717
+msgid "Auto Flip View"
+msgstr "Bord vanzelf draaien"
+
+#: dialogs.c:408 menus.c:718
+msgid "Blindfold"
+msgstr "Geblinddoekt"
+
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
+msgid "Drop Menu"
+msgstr "Plaatsingsmenu"
+
+#: dialogs.c:411
+msgid "Enable Variation Trees"
+msgstr "Variatiebomen inschakelen"
+
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
+msgid "Hide Thinking from Human"
+msgstr "Denken verbergen voor mens"
+
+#: dialogs.c:414 menus.c:723
+msgid "Highlight Last Move"
+msgstr "Laatste zet markeren"
+
+#: dialogs.c:415
+msgid "Highlight with Arrow"
+msgstr "Markeren met pijl"
+
+#: dialogs.c:416 menus.c:726
+msgid "One-Click Moving"
+msgstr "Eenkliks zetten"
+
+#: dialogs.c:417
+msgid "Periodic Updates (in Analysis Mode)"
+msgstr "Periodieke updates (in analysemodus)"
+
+#: dialogs.c:419
+msgid "Play Move(s) of Clicked PV (Analysis)"
+msgstr ""
+
+#: dialogs.c:420 dialogs.c:597 menus.c:728
+msgid "Ponder Next Move"
+msgstr "Volgende zet overdenken"
+
+#: dialogs.c:421
+msgid "Popup Exit Messages"
+msgstr "Popup-afsluitberichten"
+
+#: dialogs.c:422 menus.c:730
+msgid "Popup Move Errors"
+msgstr "Popup-zetfouten"
+
+#: dialogs.c:423
+msgid "Scores in Move List"
+msgstr "Scores in zettenlijst"
+
+#: dialogs.c:424
+msgid "Show Coordinates"
+msgstr "Coördinaten tonen"
+
+#: dialogs.c:425
+msgid "Show Target Squares"
+msgstr "Doelvelden tonen"
+
+#: dialogs.c:426
+msgid "Sticky Windows"
+msgstr ""
+
+#: dialogs.c:427 menus.c:733
+msgid "Test Legality"
+msgstr "Geldigheid testen"
+
+#: dialogs.c:428
+msgid "Top-Level Dialogs"
+msgstr "Topniveau-dialogen"
+
+#: dialogs.c:429
+msgid "Flash Moves (0 = no flashing):"
+msgstr "Zetten knipperen (0 = niet knipperen):"
+
+#: dialogs.c:430
+msgid "Flash Rate (high = fast):"
+msgstr "Knippersnelheid (hoog = snel):"
+
+# XXX reword
+#: dialogs.c:431
+msgid "Animation Speed (high = slow):"
+msgstr "Animatiesnelheid (hoog = langzaam):"
+
+#: dialogs.c:432
+msgid "Zoom factor in Evaluation Graph:"
+msgstr "Zoomfactor in evaluatiegrafiek:"
+
+#: dialogs.c:452
+#, fuzzy
+msgid "Normal"
+msgstr "normaal"
+
+#: dialogs.c:453
+#, fuzzy
+msgid "Makruk"
+msgstr "Makruk"
+
+#: dialogs.c:454
+msgid "FRC"
+msgstr "FRC"
+
+#: dialogs.c:455
+#, fuzzy
+msgid "Shatranj"
+msgstr "Shatranj"
+
+#: dialogs.c:456
+#, fuzzy
+msgid "Wild castle"
+msgstr "wilde rokade"
+
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "paardmat"
+
+#: dialogs.c:458
+#, fuzzy
+msgid "No castle"
+msgstr "geen rokade"
+
+#: dialogs.c:459
+#, fuzzy
+msgid "Cylinder *"
+msgstr "cilinder *"
+
+#: dialogs.c:460
+msgid "3-checks"
+msgstr "drie keer schaak"
+
+#: dialogs.c:461
+msgid "berolina *"
+msgstr "berolina *"
+
+#: dialogs.c:462
+msgid "atomic"
+msgstr "atomisch"
+
+#: dialogs.c:463
+msgid "two kings"
+msgstr "twee koningen"
+
+#: dialogs.c:464
+msgid " "
+msgstr " "
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr "Spartaans"
+
+#: dialogs.c:466
+msgid "Board size ( -1 = default for selected variant):"
+msgstr "Bordafmetingen (-1 = standaard voor de variant):"
+
+#: dialogs.c:467
+msgid "Number of Board Ranks:"
+msgstr "Aantal bordrijen:"
+
+#: dialogs.c:468
+msgid "Number of Board Files:"
+msgstr "Aantal bordlijnen:"
+
+#: dialogs.c:469
+msgid "Holdings Size:"
+msgstr "Stalgrootte:"
+
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
+msgstr ""
+
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
+msgid "Great Shatranj (10x8)"
+msgstr "Grote Shatranj (10x8)"
+
+#: dialogs.c:475
+msgid "Seirawan"
+msgstr "Seirawan"
+
+#: dialogs.c:476
+#, fuzzy
+msgid "Falcon (10x8)"
+msgstr "Falcon (10x8)"
+
+#: dialogs.c:477
+msgid "Superchess"
+msgstr "Superschaak"
+
+#: dialogs.c:478
+msgid "Capablanca (10x8)"
+msgstr "Capablanca (10x8)"
+
+#: dialogs.c:479
+#, fuzzy
+msgid "Crazyhouse"
+msgstr "crazyhouse"
+
+#: dialogs.c:480
+msgid "Gothic (10x8)"
+msgstr "Gothic (10x8)"
+
+#: dialogs.c:481
+#, fuzzy
+msgid "Bughouse"
+msgstr "bughouse"
+
+#: dialogs.c:482
+#, fuzzy
+msgid "Janus (10x8)"
+msgstr "Janus (10x8)"
+
+#: dialogs.c:483
+#, fuzzy
+msgid "Suicide"
+msgstr "suïcide"
+
+#: dialogs.c:484
+msgid "CRC (10x8)"
+msgstr "CRC (10x8)"
+
+#: dialogs.c:485
+msgid "give-away"
+msgstr "weggever"
+
+#: dialogs.c:486
+msgid "grand (10x10)"
+msgstr "Grand (10x10)"
+
+#: dialogs.c:487
+msgid "losers"
+msgstr "verliezers"
+
+#: dialogs.c:488
+msgid "shogi (9x9)"
+msgstr "Shogi (9x9)"
+
+#: dialogs.c:489
+msgid "fairy"
+msgstr "Fairy"
+
+#: dialogs.c:490
+msgid "xiangqi (9x10)"
+msgstr "Xiangqi (9x10)"
+
+#: dialogs.c:491
+msgid "mighty lion"
+msgstr ""
+
+#: dialogs.c:492
+msgid "courier (12x8)"
+msgstr "Courier (12x8)"
+
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+#, fuzzy
+msgid "chu shogi (12x12)"
+msgstr "Shogi (9x9)"
+
+#: dialogs.c:526
+#, c-format
+msgid "Warning: second engine (%s) does not support this!"
+msgstr "Waarschuwing: tweede automaat (%s) ondersteunt dit niet."
+
+#: dialogs.c:554
+#, c-format
+msgid "Only bughouse is not available in viewer mode."
+msgstr ""
+
+#: dialogs.c:555
+#, fuzzy, c-format
+msgid ""
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
+msgstr ""
+"Varianten die de eerste automaat (momenteel\n"
+"%s) niet kent zijn onkiesbaar."
+
+# XXX "NEW" is confusing, plural is better
+#: dialogs.c:572
+msgid "New Variant"
+msgstr "Varianten"
+
+#: dialogs.c:598
+msgid "Maximum Number of CPUs per Engine:"
+msgstr "Maximum aantal processoren per automaat:"
+
+#: dialogs.c:599
+msgid "Polygot Directory:"
+msgstr "Polygot-map:"
+
+#: dialogs.c:600
+msgid "Hash-Table Size (MB):"
+msgstr "Grootte van hash-tabel (MB):"
+
+#: dialogs.c:601
+msgid "Nalimov EGTB Path:"
+msgstr "Nalimov-EGTB-pad:"
+
+#: dialogs.c:602
+msgid "EGTB Cache Size (MB):"
+msgstr "Grootte van EGTB-cache (MB):"
+
+#: dialogs.c:603
+msgid "Use GUI Book"
+msgstr ""
+
+#: dialogs.c:604
+msgid "Opening-Book Filename:"
+msgstr "Bestandsnaam van openingenboek:"
+
+#: dialogs.c:605
+msgid "Book Depth (moves):"
+msgstr "Boekdiepte (zetten):"
+
+#: dialogs.c:606
+msgid "Book Variety (0) vs. Strength (100):"
+msgstr ""
+
+#: dialogs.c:607
+msgid "Engine #1 Has Own Book"
+msgstr "Automaat #1 heeft eigen boek"
+
+# XXX why the spaces?
+#: dialogs.c:608
+msgid "Engine #2 Has Own Book "
+msgstr "Automaat #2 heeft eigen boek"
+
+#: dialogs.c:617
+msgid "Common Engine Settings"
+msgstr "Algemene automaatinstellingen"
+
+#: dialogs.c:623
+msgid "Detect all Mates"
+msgstr "Alle matten detecteren"
+
+#: dialogs.c:624
+msgid "Verify Engine Result Claims"
+msgstr "Resultaatclaims van automaat controleren"
+
+#: dialogs.c:625
+msgid "Draw if Insufficient Mating Material"
+msgstr "Remise bij onvoldoende matmateriaal"
+
+#: dialogs.c:626
+msgid "Adjudicate Trivial Draws (3-Move Delay)"
+msgstr "Eenvoudige remises beslissen (3 zetten uitstel)"
+
+#: dialogs.c:627
+msgid "N-Move Rule:"
+msgstr "N-zettenregel:"
+
+#: dialogs.c:628
+msgid "N-fold Repeats:"
+msgstr "N-voudige herhalingen:"
+
+#: dialogs.c:629
+msgid "Draw after N Moves Total:"
+msgstr "Remise na in totaal N zetten:"
+
+#: dialogs.c:630
+msgid "Win / Loss Threshold:"
+msgstr "Winst/verlies-grenswaarde:"
+
+#: dialogs.c:631
+msgid "Negate Score of Engine #1"
+msgstr "Score van automaat 1 negatief maken"
+
+#: dialogs.c:632
+msgid "Negate Score of Engine #2"
+msgstr "Score van automaat 2 negatief maken"
+
+#: dialogs.c:639
+#, fuzzy
+msgid "Adjudicate non-ICS Games"
+msgstr "Non-ICS-partijen beslissen"
+
+#: dialogs.c:652
+msgid "Auto-Kibitz"
+msgstr "Vanzelf kibitzen"
+
+#: dialogs.c:653
+msgid "Auto-Comment"
+msgstr "Vanzelf becommentariëren"
+
+#: dialogs.c:654
+msgid "Auto-Observe"
+msgstr "Vanzelf observeren"
+
+#: dialogs.c:655
+msgid "Auto-Raise Board"
+msgstr ""
+
+#: dialogs.c:656
+msgid "Auto-Create Logon Script"
+msgstr ""
+
+#: dialogs.c:657
+msgid "Background Observe while Playing"
+msgstr "Op achtergrond observeren tijdens spelen"
+
+#: dialogs.c:658
+msgid "Dual Board for Background-Observed Game"
+msgstr "Dubbel bord voor op achtergrond geobserveerde partij"
+
+#: dialogs.c:659
+msgid "Get Move List"
+msgstr "Zettenlijst ophalen"
+
+#: dialogs.c:660
+msgid "Quiet Play"
+msgstr "Stil spelen"
+
+#: dialogs.c:661
+msgid "Seek Graph"
+msgstr "Zoekgrafiek"
+
+#: dialogs.c:662
+msgid "Auto-Refresh Seek Graph"
+msgstr "Zoekgrafiek vanzelf verversen"
+
+#: dialogs.c:663
+msgid "Auto-InputBox PopUp"
+msgstr ""
+
+#: dialogs.c:664
+#, fuzzy
+msgid "Quit after game"
+msgstr "Wachten op andere partij(en)"
+
+#: dialogs.c:665
+msgid "Premove"
+msgstr ""
+
+#: dialogs.c:666
+msgid "Premove for White"
+msgstr ""
+
+#: dialogs.c:667
+msgid "First White Move:"
+msgstr "Eerste zet van wit:"
+
+#: dialogs.c:668
+msgid "Premove for Black"
+msgstr ""
+
+#: dialogs.c:669
+msgid "First Black Move:"
+msgstr "Eerste zet van zwart:"
+
+#: dialogs.c:671
+msgid "Alarm"
+msgstr ""
+
+#: dialogs.c:672
+msgid "Alarm Time (msec):"
+msgstr ""
+
+#: dialogs.c:674
+msgid "Colorize Messages"
+msgstr "Berichten kleuren"
+
+#: dialogs.c:675
+msgid "Shout Text Colors:"
+msgstr "Shout-tekstkleuren:"
+
+#: dialogs.c:676
+msgid "S-Shout Text Colors:"
+msgstr "S-Shout-tekstkleuren:"
+
+#: dialogs.c:677
+msgid "Channel #1 Text Colors:"
+msgstr "Kanaal-1-tekstkleuren:"
+
+#: dialogs.c:678
+msgid "Other Channel Text Colors:"
+msgstr "Anderekanaal-tekstkleuren:"
+
+#: dialogs.c:679
+msgid "Kibitz Text Colors:"
+msgstr "Kibitz-tekstkleuren:"
+
+#: dialogs.c:680
+msgid "Tell Text Colors:"
+msgstr ""
+
+#: dialogs.c:681
+msgid "Challenge Text Colors:"
+msgstr ""
+
+#: dialogs.c:682
+msgid "Request Text Colors:"
+msgstr "Verzoek-tekstkleuren:"
+
+#: dialogs.c:683
+msgid "Seek Text Colors:"
+msgstr "Tekstkleuren voor zoeken:"
+
+#: dialogs.c:690
+msgid "ICS Options"
+msgstr "ICS-instellingen"
+
+#: dialogs.c:695
+msgid "Exact position match"
+msgstr "Exacte positie-overeenkomst"
+
+#: dialogs.c:695
+msgid "Shown position is subset"
+msgstr "Getoonde positie is een subset"
+
+#: dialogs.c:695
+msgid "Same material with exactly same Pawn chain"
+msgstr "Zelfde materiaal met exact dezelfde pionketen"
+
+#: dialogs.c:696
+msgid "Same material"
+msgstr "Zelfde materiaal"
+
+#: dialogs.c:696
+msgid "Material range (top board half optional)"
+msgstr "Materiaalbereik (bovenste bordhelft is optioneel)"
+
+#: dialogs.c:696
+msgid "Material difference (optional stuff balanced)"
+msgstr "Materiaalverschil (optioneel spul is in evenwicht)"
+
+#: dialogs.c:708
+msgid "Auto-Display Tags"
+msgstr "Labels vanzelf tonen"
+
+#: dialogs.c:709
+msgid "Auto-Display Comment"
+msgstr "Opmerkingen vanzelf tonen"
+
+#: dialogs.c:710
+msgid ""
+"Auto-Play speed of loaded games\n"
+"(0 = instant, -1 = off):"
+msgstr ""
+"Speelsnelheid van geladen partijen\n"
+"(0 = instantaan, -1 = uit):"
+
+#: dialogs.c:711
+msgid "Seconds per Move:"
+msgstr "Seconden per zet:"
+
+#: dialogs.c:712
+msgid ""
+"\n"
+"options to use in game-viewer mode:"
+msgstr ""
+
+#: dialogs.c:714
+msgid ""
+"\n"
+"Thresholds for position filtering in game list:"
+msgstr ""
+
+#: dialogs.c:715
+msgid "Elo of strongest player at least:"
+msgstr "Elo van sterkste speler minstens:"
+
+#: dialogs.c:716
+msgid "Elo of weakest player at least:"
+msgstr "Elo van zwakste speler minstens:"
+
+#: dialogs.c:717
+msgid "No games before year:"
+msgstr "Geen partijen vóór het jaar:"
+
+#: dialogs.c:718
+msgid "Minimum nr consecutive positions:"
+msgstr "Minimum aantal opeenvolgende posities:"
+
+#: dialogs.c:719
+msgid "Search mode:"
+msgstr "Zoekmodus:"
+
+#: dialogs.c:720
+msgid "Also match reversed colors"
+msgstr "Ook matchen met verwisselde kleuren"
+
+#: dialogs.c:721
+msgid "Also match left-right flipped position"
+msgstr "Ook matchen met links-rechts gespiegelde positie"
+
+#: dialogs.c:729
+msgid "Load Game Options"
+msgstr "Partij-instellingen laden"
+
+#: dialogs.c:741
+msgid "Auto-Save Games"
+msgstr "Partijen vanzelf opslaan"
+
+#: dialogs.c:742
+msgid "Own Games Only"
+msgstr "Alleen eigen partijen"
+
+#: dialogs.c:743
+msgid "Save Games on File:"
+msgstr "Partijen opslaan in:"
+
+#: dialogs.c:744
+msgid "Save Final Positions on File:"
+msgstr "Eindposities opslaan in:"
+
+#: dialogs.c:745
+msgid "PGN Event Header:"
+msgstr ""
+
+#: dialogs.c:746
+msgid "Old Save Style (as opposed to PGN)"
+msgstr ""
+
+#: dialogs.c:747
+msgid "Include Number Tag in tourney PGN"
+msgstr "Nummerlabel in toernooi-PGN opnemen"
+
+#: dialogs.c:748
+msgid "Save Score/Depth Info in PGN"
+msgstr ""
+
+#: dialogs.c:749
+msgid "Save Out-of-Book Info in PGN "
+msgstr ""
+
+#: dialogs.c:756
+msgid "Save Game Options"
+msgstr "Partij-instellingen opslaan"
+
+#: dialogs.c:765
+msgid "No Sound"
+msgstr "(geen geluid)"
+
+#: dialogs.c:766
+msgid "Default Beep"
+msgstr "Standaardpiep"
+
+#: dialogs.c:767
+msgid "Above WAV File"
+msgstr "Bovenstaande WAV"
+
+#: dialogs.c:768
+msgid "Car Horn"
+msgstr "Claxon"
+
+#: dialogs.c:769
+msgid "Cymbal"
+msgstr "Cymbaal"
+
+#: dialogs.c:770
+msgid "Ding"
+msgstr "Tink"
+
+#: dialogs.c:771
+msgid "Gong"
+msgstr "Gong"
+
+#: dialogs.c:772
+msgid "Laser"
+msgstr "Laser"
+
+#: dialogs.c:773
+msgid "Penalty"
+msgstr "Zoemer"
+
+#: dialogs.c:774
+msgid "Phone"
+msgstr "Telefoon"
+
+#: dialogs.c:775
+msgid "Pop"
+msgstr "Plop"
+
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
+msgid "Slap"
+msgstr "Klap"
+
+#: dialogs.c:778
+msgid "Wood Thunk"
+msgstr "Houtplok"
+
+#: dialogs.c:780
+msgid "User File"
+msgstr "Gebruikersbestand"
+
+#: dialogs.c:803
+msgid "User WAV File:"
+msgstr "Eigen WAV-bestand:"
+
+#: dialogs.c:804
+msgid "Sound Program:"
+msgstr "Geluidsprogramma:"
+
+#: dialogs.c:805
+msgid "Try-Out Sound:"
+msgstr "Dit geluid proberen:"
+
+#: dialogs.c:806
+msgid "Play"
+msgstr "Afspelen"
+
+#: dialogs.c:807
+msgid "Move:"
+msgstr "Zet:"
+
+#: dialogs.c:808
+msgid "Win:"
+msgstr "Gewonnen:"
+
+#: dialogs.c:809
+msgid "Lose:"
+msgstr "Verloren:"
+
+#: dialogs.c:810
+msgid "Draw:"
+msgstr "Remise:"
+
+#: dialogs.c:811
+msgid "Unfinished:"
+msgstr "Onafgemaakt:"
+
+#: dialogs.c:812
+msgid "Alarm:"
+msgstr ""
+
+#: dialogs.c:813
+msgid "Challenge:"
+msgstr ""
+
+#: dialogs.c:815
+msgid "Sounds Directory:"
+msgstr "Geluidenmap:"
+
+#: dialogs.c:816
+msgid "Shout:"
+msgstr ""
+
+#: dialogs.c:817
+msgid "S-Shout:"
+msgstr ""
+
+#: dialogs.c:818
+msgid "Channel:"
+msgstr "Kanaal:"
+
+#: dialogs.c:819
+msgid "Channel 1:"
+msgstr "Kanaal 1:"
+
+#: dialogs.c:820
+msgid "Tell:"
+msgstr "Mededeling"
+
+#: dialogs.c:821
+msgid "Kibitz:"
+msgstr "Kibitz:"
+
+#: dialogs.c:822
+msgid "Request:"
+msgstr "Verzoek:"
+
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
+msgid "Seek:"
+msgstr "Zoeken:"
+
+#: dialogs.c:840
+msgid "Sound Options"
+msgstr "Geluidsinstellingen"
+
+#: dialogs.c:861
+msgid "White Piece Color:"
+msgstr "Kleur van wit stuk:"
+
+#. TRANSLATORS: R = single letter for the color red
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
+msgid "R"
+msgstr "R"
+
+#. TRANSLATORS: G = single letter for the color green
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
+msgid "G"
+msgstr "G"
+
+#. TRANSLATORS: B = single letter for the color blue
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
+msgid "B"
+msgstr "B"
+
+#. TRANSLATORS: D = single letter to make a color darker
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
+msgid "D"
+msgstr "D"
+
+#: dialogs.c:871
+msgid "Black Piece Color:"
+msgstr "Kleur van zwart stuk:"
+
+#: dialogs.c:877
+msgid "Light Square Color:"
+msgstr "Kleur van licht veld:"
+
+#: dialogs.c:883
+msgid "Dark Square Color:"
+msgstr "Kleur van donker veld:"
+
+#: dialogs.c:889
+msgid "Highlight Color:"
+msgstr "Markeringskleur:"
+
+#: dialogs.c:895
+msgid "Premove Highlight Color:"
+msgstr ""
+
+#: dialogs.c:901
+msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
+msgstr ""
+
+#: dialogs.c:903
+msgid "Mono Mode"
+msgstr ""
+
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
+msgstr ""
+
+#: dialogs.c:905
+msgid "Use Board Textures"
+msgstr "Bordtexturen gebruiken"
+
+#: dialogs.c:906
+msgid "Light-Squares Texture File:"
+msgstr "Textuurbestand voor lichte velden:"
+
+#: dialogs.c:907
+msgid "Dark-Squares Texture File:"
+msgstr "Textuurbestand voor donkere velden:"
+
+#: dialogs.c:908
+msgid "Use external piece bitmaps with their own colors"
+msgstr ""
+
+#: dialogs.c:909
+msgid "Directory with Pieces Images:"
+msgstr "Map met afbeeldingen van stukken:"
+
+#: dialogs.c:959
+msgid "Board Options"
+msgstr "Bordinstellingen"
+
+#: dialogs.c:1012 menus.c:634
+msgid "ICS text menu"
+msgstr "ICS-tekstmenu"
+
+#: dialogs.c:1034
+msgid "clear"
+msgstr "wissen"
+
+#: dialogs.c:1035 dialogs.c:1123
+msgid "save changes"
+msgstr "wijzigingen opslaan"
+
+#: dialogs.c:1138
+msgid "Edit book"
+msgstr "Boek bewerken"
+
+#: dialogs.c:1138 menus.c:636
+msgid "Tags"
+msgstr "Labels"
+
+#: dialogs.c:1280
+msgid "ICS input box"
+msgstr "ICS-invoervak"
+
+#: dialogs.c:1312
+msgid "Type a move"
+msgstr "Typ een zet"
+
+#: dialogs.c:1338
+msgid "Engine has no options"
+msgstr "Automaat kent geen instellingen."
+
+#: dialogs.c:1340
+msgid "Engine Settings"
+msgstr "Automaatinstellingen"
+
+#: dialogs.c:1365
+msgid "Select engine from list:"
+msgstr "Selecteer een automaat uit de lijst:"
+
+#: dialogs.c:1368
+msgid "or specify one below:"
+msgstr "of geef er hieronder een op:"
+
+#: dialogs.c:1369
+msgid "Nickname (optional):"
+msgstr "Bijnaam (optioneel):"
+
+#: dialogs.c:1370
+msgid "Use nickname in PGN player tags of engine-engine games"
+msgstr ""
+
+#: dialogs.c:1371
+msgid "Engine Directory:"
+msgstr "Automatenmap:"
+
+#: dialogs.c:1372
+msgid "Engine Command:"
+msgstr "Automaatopdracht:"
+
+#: dialogs.c:1373
+msgid "(Directory will be derived from engine path when empty)"
+msgstr "(map wordt afgeleid uit automaatpad indien leeg)"
+
+#: dialogs.c:1374
+msgid "UCI"
+msgstr "UCI"
+
+#: dialogs.c:1375
+msgid "WB protocol v1 (do not wait for engine features)"
+msgstr ""
+
+#: dialogs.c:1376
+msgid "Must not use GUI book"
+msgstr ""
+
+#: dialogs.c:1377
+msgid "Add this engine to the list"
+msgstr "Deze automaat aan de lijst toevoegen"
+
+#: dialogs.c:1378
+msgid "Force current variant with this engine"
+msgstr "Huidige variant opdringen aan deze automaat"
+
+#: dialogs.c:1428
+msgid "Load first engine"
+msgstr "Eerste automaat laden"
+
+#: dialogs.c:1434
+msgid "Load second engine"
+msgstr "Tweede automaat laden"
+
+# XXX gets truncated to 7 chars
+#: dialogs.c:1457
+msgid "shuffle"
+msgstr "Husselen"
+
+#: dialogs.c:1458
+msgid "Start-position number:"
+msgstr "Startpositienummer:"
+
+#: dialogs.c:1459
+msgid "randomize"
+msgstr "Willekeurig"
+
+#: dialogs.c:1460
+msgid "pick fixed"
+msgstr "Vaste kiezen"
+
+#: dialogs.c:1477
+msgid "New Shuffle Game"
+msgstr "Husselpartij"
+
+#: dialogs.c:1496
+msgid "classical"
+msgstr "Klassiek"
+
+#: dialogs.c:1497
+msgid "incremental"
+msgstr "Ophogend"
+
+#: dialogs.c:1498
+msgid "fixed max"
+msgstr "Vast maximum"
+
+#: dialogs.c:1499
+msgid "Moves per session:"
+msgstr "Zetten per sessie:"
+
+#: dialogs.c:1500
+msgid "Initial time (min):"
+msgstr "Begintijd (minuten)"
+
+#: dialogs.c:1501
+msgid "Increment or max (sec/move):"
+msgstr "Ophoging of maximaal (sec/zet):"
+
+#: dialogs.c:1502
+msgid "Time-Odds factors:"
+msgstr "Tijdsfactoren:"
+
+#: dialogs.c:1503
+msgid "Engine #1"
+msgstr "Automaat 1"
+
+#: dialogs.c:1504
+msgid "Engine #2 / Human"
+msgstr "Automaat 2 / Mens"
+
+# XXX gets truncated at start to 8 chars
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
+#: gtk/xoptions.c:194
+msgid "Unused"
+msgstr "(loos)"
+
+#: dialogs.c:1594
+msgid "Error writing to chess program"
+msgstr "Fout bij schrijven naar schaakprogramma"
+
+#: dialogs.c:1662 xaw/xoptions.c:1276
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
+msgid "King"
+msgstr "Koning"
+
+#: dialogs.c:1670
+msgid "Captain"
+msgstr "Kapitein"
+
+#: dialogs.c:1671
+msgid "Lieutenant"
+msgstr "Luitenant"
+
+#: dialogs.c:1672
+msgid "General"
+msgstr "Generaal"
+
+#: dialogs.c:1673
+msgid "Warlord"
+msgstr "Krijgsheer"
+
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
+msgid "Knight"
+msgstr "Paard"
+
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
+msgid "Bishop"
+msgstr "Loper"
+
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
+msgid "Rook"
+msgstr "Toren"
+
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
+msgid "Archbishop"
+msgstr "Aartsbisschop"
+
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
+msgid "Chancellor"
+msgstr "Kanselier"
+
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
+msgid "Queen"
+msgstr "Koningin"
+
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
+msgid "Defer"
+msgstr "Uitstellen"
+
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
+msgid "Promote"
+msgstr "Promoveren"
+
+#: dialogs.c:1706
+msgid "Chat partner:"
+msgstr "Chatpartner:"
+
+#: dialogs.c:1791
+msgid "Chat box"
+msgstr "Chatbox"
+
+#: dialogs.c:1832
+msgid "factory"
+msgstr "origineel"
+
+#: dialogs.c:1833
+msgid "up"
+msgstr "omhoog"
+
+#: dialogs.c:1834
+msgid "down"
+msgstr "omlaag"
+
+#: dialogs.c:1852
+msgid "No tag selected"
+msgstr "Geen label geselecteerd"
+
+#: dialogs.c:1883
+msgid "Game-list options"
+msgstr "Partijenlijst-instellingen"
+
+#: dialogs.c:1959 dialogs.c:1973
+msgid "Error"
+msgstr "Fout"
+
+#: dialogs.c:1996
+msgid "Fatal Error"
+msgstr "Fatale fout"
+
+#: dialogs.c:1996
+msgid "Exiting"
+msgstr "Afsluiten"
+
+#: dialogs.c:2007
+msgid "Information"
+msgstr "Informatie"
+
+#: dialogs.c:2014
+msgid "Note"
+msgstr "Notitie"
+
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
+msgid "White"
+msgstr "Wit"
+
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
+msgid "Pawn"
+msgstr "Pion"
+
+#: dialogs.c:2061 dialogs.c:2065
+msgid "Elephant"
+msgstr "Olifant"
+
+#: dialogs.c:2061 dialogs.c:2065
+msgid "Cannon"
+msgstr "Kanon"
+
+#: dialogs.c:2062 dialogs.c:2066
+msgid "Demote"
+msgstr "Degraderen"
+
+#: dialogs.c:2063 dialogs.c:2067
+msgid "Empty square"
+msgstr "Leeg veld"
+
+#: dialogs.c:2063 dialogs.c:2067
+msgid "Clear board"
+msgstr "Bord leegmaken"
+
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
+msgid "Black"
+msgstr "Zwart"
+
+#: dialogs.c:2163 menus.c:787
+msgid "File"
+msgstr "Bestand"
+
+#: dialogs.c:2164 menus.c:788
+msgid "Edit"
+msgstr "Bewerken"
+
+#: dialogs.c:2165 menus.c:789
+msgid "View"
+msgstr "Weergave"
+
+#: dialogs.c:2166 menus.c:790
+msgid "Mode"
+msgstr "Modus"
+
+#: dialogs.c:2167 menus.c:791
+msgid "Action"
+msgstr "Acties"
+
+#: dialogs.c:2168 menus.c:792
+msgid "Engine"
+msgstr "Automaat"
+
+# XXX "Instellingen" is te lang, wordt afgeknabbeld.
+#: dialogs.c:2169 menus.c:793
+msgid "Options"
+msgstr "Opties"
+
+#: dialogs.c:2170 menus.c:794
+msgid "Help"
+msgstr "Hulp"
+
+#: dialogs.c:2180
+msgid "<<"
+msgstr "<<"
+
+#: dialogs.c:2181
+msgid "<"
+msgstr "<"
+
+#: dialogs.c:2183
+msgid ">"
+msgstr ">"
+
+#: dialogs.c:2184
+msgid ">>"
+msgstr ">>"
+
+#: dialogs.c:2458
+msgid "Directories:"
+msgstr "Mappen:"
+
+#: dialogs.c:2459
+msgid "Files:"
+msgstr "Bestanden:"
+
+#: dialogs.c:2460
+msgid "by name"
+msgstr "op naam"
+
+#: dialogs.c:2461
+msgid "by type"
+msgstr "op type"
+
+#: dialogs.c:2464
+msgid "Filename:"
+msgstr "Bestandsnaam:"
+
+#: dialogs.c:2465
+msgid "New directory"
+msgstr "Nieuwe map"
+
+#: dialogs.c:2466
+msgid "File type:"
+msgstr "Bestandstype:"
+
+#: dialogs.c:2541
+msgid "Contents of"
+msgstr "Inhoud van"
+
+#: dialogs.c:2567
+msgid " next page"
+msgstr " volgende pagina"
+
+#: dialogs.c:2584
+msgid "FIRST TYPE DIRECTORY NAME HERE"
+msgstr "Typ hier eerst een mapnaam"
+
+#: dialogs.c:2585
+msgid "TRY ANOTHER NAME"
+msgstr "Kies een andere naam"
+
+#: draw.c:310
+#, fuzzy
+msgid ""
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
+msgstr ""
+"Geen standaardstukken geïnstalleerd.\n"
+"Kies uw eigen '-pieceImageDirectory'."
+
+#: engineoutput.c:110 menus.c:630
+#, c-format
+msgid "Engine Output"
+msgstr "Automaatuitvoer"
+
+#: engineoutput.c:120
+#, c-format
+msgid "%s (%d reversible ply)"
+msgid_plural "%s (%d reversible plies)"
+msgstr[0] "%s (%d omkeerbare ply)"
+msgstr[1] "%s (%d omkeerbare plies)"
+
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
+msgid "NPS"
+msgstr "NPS"
+
+#: gamelist.c:375
+#, c-format
+msgid "Reading game file (%d)"
+msgstr "Lezen van partijbestand (%d)"
+
+#: gtk/xboard.c:867 xaw/xboard.c:1052
+#, c-format
+msgid "%s: can't cd to CHESSDIR: "
+msgstr "%s: Kan huidige map niet wijzigen naar CHESSDIR: "
+
+#: gtk/xboard.c:876 xaw/xboard.c:1061
+#, c-format
+msgid "Failed to open file '%s'\n"
+msgstr "Kan bestand '%s' niet openen\n"
+
+#: gtk/xboard.c:891 xaw/xboard.c:1070
+msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
+msgstr ""
+
+#: gtk/xboard.c:910 xaw/xboard.c:1102
+#, c-format
+msgid "%s: bad boardSize syntax %s\n"
+msgstr ""
+
+#: gtk/xboard.c:950 xaw/xboard.c:1139
+#, c-format
+msgid "%s: unrecognized boardSize name %s\n"
+msgstr ""
+
+#: gtk/xboard.c:991 xaw/xboard.c:1176
+#, c-format
+msgid "%s: too few colors available; trying monochrome mode\n"
+msgstr "%s: te weinig kleuren beschikbaar; monochroommodus wordt geprobeerd\n"
+
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
+#, c-format
+msgid "Unable to create font set for %s.\n"
+msgstr "Kan geen lettertypenset aanmaken voor %s.\n"
+
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
+#, c-format
+msgid "%s: no fonts match pattern %s\n"
+msgstr "%s: er zijn geen lettertypen die overeenkomen met patroon %s\n"
+
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
+msgid "Can't open temp file"
+msgstr "Kan tijdelijk bestand niet openen"
+
+#: gtk/xboard.c:2199
+msgid "Failed to open file"
+msgstr "Kan bestand niet openen"
+
+#: menus.c:134
+msgid "Load game file name?"
+msgstr "Partij laden uit bestand:"
+
+#: menus.c:179
+msgid "Load position file name?"
+msgstr "Positie laden uit bestand:"
+
+#: menus.c:185
+msgid "Save game file name?"
+msgstr "Partij opslaan in bestand:"
+
+#: menus.c:194
+msgid "Save position file name?"
+msgstr "Positie opslaan in bestand:"
+
+#: menus.c:358
+msgid " (with Zippy code)"
+msgstr " (met Zippy-code)"
+
+#: menus.c:363
+#, fuzzy, c-format
+msgid ""
+"%s%s\n"
+"\n"
+"Copyright 1991 Digital Equipment Corporation\n"
+"Enhancements Copyright 1992-2014 Free Software Foundation\n"
+"Enhancements Copyright 2005 Alessandro Scotti\n"
+"\n"
+"%s is free software and carries NO WARRANTY;see the file COPYING for more "
+"information.\n"
+"The GTK build of this version is experimental and unstable\n"
+"\n"
+"Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n"
+"Check out the newest features at: http://www.gnu.org/software/xboard/"
+"whats_new.html\n"
+"\n"
+"Report bugs via email at: <bug-xboard@gnu.org>\n"
+"\n"
+msgstr ""
+"%s%s\n"
+"\n"
+"Copyright 1991 Digital Equipment Corporation\n"
+"Uitbreidingen Copyright 1992-2013 Free Software Foundation\n"
+"Uitbreidingen Copyright 2005 Alessandro Scotti\n"
+"\n"
+"%s is vrije software en kent GEEN GARANTIE;\n"
+"zie het bestand COPYING voor meer informatie.\n"
+"De GTK-versie is experimenteel en nog niet stabiel.\n"
+"\n"
+"Bezoek XBoard op het web: http://www.gnu.org/software/xboard/\n"
+"Voor nieuwe functies zie: http://www.gnu.org/software/xboard/whats_new.html\n"
+"\n"
+"Rapporteer gebreken in het programma aan <bug-xboard@gnu.org>;\n"
+"meld vertaalfouten aan <vertaling@vrijschrift.org>.\n"
+"\n"
+
+#: menus.c:375 menus.c:750
+msgid "About XBoard"
+msgstr "Over XBoard"
+
+#: menus.c:582
+msgid "New Game"
+msgstr "Nieuwe partij"
+
+#: menus.c:583
+#, fuzzy
+msgid "New Shuffle Game..."
+msgstr "Nieuwe husselpartij..."
+
+# XXX "NEW" is wrong
+#: menus.c:584
+#, fuzzy
+msgid "New Variant..."
+msgstr "Nieuwe variantpartij..."
+
+#: menus.c:586
+msgid "Load Game"
+msgstr "Partij laden"
+
+#: menus.c:587
+msgid "Load Position"
+msgstr "Positie laden"
+
+#: menus.c:588
+msgid "Next Position"
+msgstr "Volgende positie"
+
+#: menus.c:589
+msgid "Prev Position"
+msgstr "Vorige positie"
+
+#: menus.c:591
+msgid "Save Game"
+msgstr "Partij opslaan"
+
+#: menus.c:592
+msgid "Save Position"
+msgstr "Positie opslaan"
+
+#: menus.c:593
+msgid "Save Games as Book"
+msgstr "Partijen opslaan als boek"
+
+#: menus.c:595
+msgid "Mail Move"
+msgstr "Zet mailen"
+
+#: menus.c:596
+msgid "Reload CMail Message"
+msgstr "CMail-bericht herladen"
+
+#: menus.c:598
+msgid "Quit "
+msgstr "Afsluiten "
+
+#: menus.c:603
+msgid "Copy Game"
+msgstr "Partij kopiëren"
+
+#: menus.c:604
+msgid "Copy Position"
+msgstr "Positie kopiëren"
+
+#: menus.c:605
+msgid "Copy Game List"
+msgstr "Partijenlijst kopiëren"
+
+#: menus.c:607
+msgid "Paste Game"
+msgstr "Partij plakken"
+
+#: menus.c:608
+msgid "Paste Position"
+msgstr "Positie plakken"
+
+#: menus.c:610 menus.c:652
+msgid "Edit Game"
+msgstr "Partij bewerken"
+
+#: menus.c:611 menus.c:653
+msgid "Edit Position"
+msgstr "Positie bewerken"
+
+#: menus.c:612
+msgid "Edit Tags"
+msgstr "Labels bewerken"
+
+#: menus.c:613
+msgid "Edit Comment"
+msgstr "Opmerking bewerken"
+
+#: menus.c:614
+msgid "Edit Book"
+msgstr "Boek bewerken"
+
+#: menus.c:616
+msgid "Revert"
+msgstr "Terugdraaien"
+
+#: menus.c:617
+msgid "Annotate"
+msgstr "Annoteren"
+
+#: menus.c:618
+msgid "Truncate Game"
+msgstr "Partij afkappen"
+
+#: menus.c:620
+msgid "Backward"
+msgstr "Achterwaarts"
+
+#: menus.c:621
+msgid "Forward"
+msgstr "Voorwaarts"
+
+#: menus.c:622
+msgid "Back to Start"
+msgstr "Terug naar begin"
+
+#: menus.c:623
+msgid "Forward to End"
+msgstr "Vooruit naar einde"
+
+#: menus.c:628
+msgid "Flip View"
+msgstr "Bord draaien"
+
+#: menus.c:631
+msgid "Move History"
+msgstr "Zettengeschiedenis"
+
+#: menus.c:632
+msgid "Evaluation Graph"
+msgstr "Evaluatiegrafiek"
+
+#: menus.c:633
+msgid "Game List"
+msgstr "Partijenlijst"
+
+#: menus.c:637
+msgid "Comments"
+msgstr "Opmerkingen"
+
+#: menus.c:638
+msgid "ICS Input Box"
+msgstr "ICS-invoervak"
+
+#: menus.c:639
+msgid "Open Chat Window"
+msgstr "Chatvenster openen"
+
+#: menus.c:641
+msgid "Board..."
+msgstr "Bord..."
+
+#: menus.c:642
+msgid "Game List Tags..."
+msgstr "Partijenlijst-labels..."
+
+#: menus.c:647
+msgid "Machine White"
+msgstr "Automaat heeft wit"
+
+#: menus.c:648
+msgid "Machine Black"
+msgstr "Automaat heeft zwart"
+
+#: menus.c:649
+msgid "Two Machines"
+msgstr "Twee automaten"
+
+#: menus.c:650
+msgid "Analysis Mode"
+msgstr "Analysemodus"
+
+#: menus.c:651
+msgid "Analyze Game"
+msgstr "Partij analyseren"
+
+#: menus.c:654
+msgid "Training"
+msgstr "Training"
+
+#: menus.c:655
+msgid "ICS Client"
+msgstr "ICS-cliënt"
+
+#: menus.c:657
+msgid "Machine Match"
+msgstr "Automatentoernooi"
+
+#: menus.c:658
+msgid "Pause"
+msgstr "Pauzeren"
+
+#: menus.c:663
+msgid "Accept"
+msgstr "Accepteren"
+
+#: menus.c:664
+msgid "Decline"
+msgstr "Weigeren"
+
+#: menus.c:665
+msgid "Rematch"
+msgstr ""
+
+#: menus.c:667
+msgid "Call Flag"
+msgstr "'Vlag' roepen"
+
+#: menus.c:668
+msgid "Draw"
+msgstr "Remise"
+
+#: menus.c:669
+msgid "Adjourn"
+msgstr "Opschorten"
+
+#: menus.c:670
+msgid "Abort"
+msgstr "Afbreken"
+
+#: menus.c:671
+msgid "Resign"
+msgstr "Opgeven"
+
+#: menus.c:673
+msgid "Stop Observing"
+msgstr "Stoppen met observeren"
+
+#: menus.c:674
+msgid "Stop Examining"
+msgstr "Stoppen met bestuderen"
+
+#: menus.c:675
+msgid "Upload to Examine"
+msgstr "Uploaden om te bestuderen"
+
+#: menus.c:677
+msgid "Adjudicate to White"
+msgstr "Winst aan wit toekennen"
+
+#: menus.c:678
+msgid "Adjudicate to Black"
+msgstr "Winst aan zwart toekennen"
+
+#: menus.c:679
+msgid "Adjudicate Draw"
+msgstr "Tot remise besluiten"
+
+#: menus.c:684
+#, fuzzy
+msgid "Load New 1st Engine..."
+msgstr "Nieuwe 1ste automaat laden..."
+
+#: menus.c:685
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "Nieuwe 2de automaat laden..."
+
+#: menus.c:687
+#, fuzzy
+msgid "Engine #1 Settings..."
+msgstr "Instellingen van automaat 1..."
+
+#: menus.c:688
+#, fuzzy
+msgid "Engine #2 Settings..."
+msgstr "Instellingen van automaat 2..."
+
+#: menus.c:690
+msgid "Hint"
+msgstr "Hint"
+
+#: menus.c:691
+msgid "Book"
+msgstr "Boek"
+
+#: menus.c:693
+msgid "Move Now"
+msgstr "Nu zetten"
+
+#: menus.c:694
+msgid "Retract Move"
+msgstr "Zet terugnemen"
+
+#: menus.c:700
+#, fuzzy
+msgid "General..."
+msgstr "Algemeen..."
+
+#: menus.c:702
+#, fuzzy
+msgid "Time Control..."
+msgstr "Tijdsbeperking..."
+
+#: menus.c:703
+#, fuzzy
+msgid "Common Engine..."
+msgstr "Automaten..."
+
+#: menus.c:704
+#, fuzzy
+msgid "Adjudications..."
+msgstr "Beslissingen..."
+
+#: menus.c:705
+msgid "ICS..."
+msgstr ""
+
+#: menus.c:706
+msgid "Tournament..."
+msgstr ""
+
+#: menus.c:707
+#, fuzzy
+msgid "Load Game..."
+msgstr "Partij laden..."
+
+#: menus.c:708
+#, fuzzy
+msgid "Save Game..."
+msgstr "Partij opslaan..."
+
+#: menus.c:709
+#, fuzzy
+msgid "Game List..."
+msgstr "Partijenlijst..."
+
+#: menus.c:710
+#, fuzzy
+msgid "Sounds..."
+msgstr "Geluiden..."
+
+#: menus.c:713
+msgid "Always Queen"
+msgstr "Altijd koningin"
+
+#: menus.c:719
+msgid "Flash Moves"
+msgstr "Zetten laten knipperen"
+
+#: menus.c:721
+msgid "Highlight Dragging"
+msgstr "Slepen markeren"
+
+#: menus.c:724
+msgid "Highlight With Arrow"
+msgstr "Markeren met pijl"
+
+#: menus.c:725
+msgid "Move Sound"
+msgstr "Zetgeluid"
+
+#: menus.c:727
+msgid "Periodic Updates"
+msgstr "Periodieke updates"
+
+#: menus.c:729
+msgid "Popup Exit Message"
+msgstr "Popup-afsluitbericht"
+
+#: menus.c:731
+msgid "Show Coords"
+msgstr "Coördinaten tonen"
+
+#: menus.c:732
+msgid "Hide Thinking"
+msgstr "Denken verbergen"
+
+#: menus.c:736
+msgid "Save Settings Now"
+msgstr "Instellingen nu opslaan"
+
+#: menus.c:737
+msgid "Save Settings on Exit"
+msgstr "Instellingen opslaan bij afsluiten"
+
+#: menus.c:742
+msgid "Info XBoard"
+msgstr "'info xboard'"
+
+#: menus.c:743
+msgid "Man XBoard"
+msgstr "'man xboard'"
+
+#: menus.c:745
+msgid "XBoard Home Page"
+msgstr "Webpagina van XBoard"
+
+#: menus.c:746
+msgid "On-line User Guide"
+msgstr "Online gebruikersgids"
+
+#: menus.c:747
+msgid "Development News"
+msgstr "Ontwikkelingsnieuws"
+
+#: menus.c:748
+msgid "e-Mail Bug Report"
+msgstr "Foutrapportage mailen"
+
+#: nengineoutput.c:78 nengineoutput.c:86
+msgid "engine name"
+msgstr "automaatnaam"
+
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
+msgid "move"
+msgstr "zetten"
+
+#: nengineoutput.c:155
+msgid "Engine output"
+msgstr "Automaatuitvoer"
+
+#: nengineoutput.c:159
+msgid ""
+"Mismatch of STRIDE in nengineoutput.c\n"
+"Change and recompile!"
+msgstr ""
+"*** Niet-passende 'STRIDE' in 'nengineoutput.c'.\n"
+"Pas deze aan en hercompileer."
+
+#: nevalgraph.c:68
+msgid "Evaluation graph"
+msgstr "Evaluatiegrafiek"
+
+#: nevalgraph.c:105
+msgid "Eval"
+msgstr ""
+
+#: ngamelist.c:87
+msgid "find position"
+msgstr "positie vinden"
+
+#: ngamelist.c:88
+msgid "narrow"
+msgstr "nauw"
+
+#: ngamelist.c:89
+msgid "thresholds"
+msgstr "grenswaarden"
+
+#: ngamelist.c:90
+msgid "tags"
+msgstr "labels"
+
+#: ngamelist.c:91
+msgid "next"
+msgstr "volgende"
+
+#: ngamelist.c:92
+msgid "close"
+msgstr "sluiten"
+
+#: ngamelist.c:116
+msgid "No game selected"
+msgstr "Geen partij geselecteerd"
+
+#: ngamelist.c:122
+msgid "Can't go forward any further"
+msgstr "Kan niet nog verder vooruitgaan"
+
+#: ngamelist.c:192
+#, c-format
+msgid "Scanning through games (%d)"
+msgstr "Zoeken door partijen (%d)"
+
+#: ngamelist.c:211
+msgid "previous page"
+msgstr "voorgaande pagina"
+
+#: ngamelist.c:214
+msgid "next page"
+msgstr "volgende pagina"
+
+#: ngamelist.c:217
+msgid "no games matched your request"
+msgstr "er zijn geen partijen die overeenkomen met uw verzoek"
+
+#: ngamelist.c:219
+#, c-format
+msgid "%s - %d/%d games (%d-%d-%d)"
+msgstr "%s - %d/%d partijen (%d-%d-%d)"
+
+#: ngamelist.c:274
+msgid "There is no game list"
+msgstr "Er is geen partijenlijst"
+
+#: nhistory.c:109
+msgid "Move list"
+msgstr "Zettenlijst"
+
+#: usystem.c:222
+#, c-format
+msgid "%s: unrecognized color %s\n"
+msgstr "%s: niet-herkende kleur %s\n"
+
+#: usystem.c:230
+#, fuzzy, c-format
+msgid "%s: can't parse foreground color in '%s'\n"
+msgstr "%s: onbegrepen voorgrondkleur in '%s'\n"
+
+#: usystem.c:259
+#, c-format
+msgid "%s: can't parse color names; disabling colorization\n"
+msgstr "%s: onbegrepen kleurnamen; kleuring wordt uitgeschakeld\n"
+
+#: usystem.c:374
+#, c-format
+msgid "ERROR: Unknown user %s (in path %s)\n"
+msgstr "Fout: onbekende gebruiker %s (in pad %s)\n"
+
+#: usystem.c:557
+#, fuzzy
+msgid "Socket support is not configured in"
+msgstr "Ondersteuning voor sockets is niet geconfigureerd"
+
+#: usystem.c:646
+msgid "internal rcmd not implemented for Unix"
+msgstr "interne 'rcmd' is niet geïmplementeerd voor Unix"
+
+#: xaw/xboard.c:1182
+#, c-format
+msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
+msgstr "witte pixel = 0x%lx, zwarte pixel = 0x%lx\n"
+
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
+msgid "browse"
+msgstr "Bladeren"
+
+#: xaw/xoptions.c:387 xaw/xoptions.c:388
+msgid "Ctrl"
+msgstr "Ctrl"
+
+#: xaw/xoptions.c:393 xaw/xoptions.c:394
+msgid "Alt"
+msgstr "Alt"
+
+#: xaw/xoptions.c:399 xaw/xoptions.c:400
+msgid "Shift"
+msgstr "Shift"
+
+#: xaw/xoptions.c:1272
+msgid "OK"
+msgstr "OK"
+
+#~ msgid "Match Options"
+#~ msgstr "Toernooi-instellingen"
+
+#~ msgid "ICS ..."
+#~ msgstr "ICS..."
+
+# XXX wedstrijd OF overeenkomen??
+#~ msgid "Match ..."
+#~ msgstr "Toernooi..."
+
+#~ msgid "%s: Can't access XPM directory %s\n"
+#~ msgstr "%s: Kan geen toegang krijgen tot XPM-map %s\n"
+
+#~ msgid "Available `%s' sizes:\n"
+#~ msgstr "Beschikbare '%s'-groottes:\n"
+
+#~ msgid "Error: No `%s' files!\n"
+#~ msgstr "Fout: geen '%s'-bestanden!\n"
+
+#~ msgid "Error %d loading icon image\n"
+#~ msgstr "Fout %d tijdens laden van pictogram\n"
+
+#~ msgid "cancel"
+#~ msgstr "Annuleren"
msgstr ""
"Project-Id-Version: GNU xboard master-20110507\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr ""
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "версия протокола %d не поддерживается"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "timeControl: неверный параметр %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "searchTime: неверный параметр %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "Вариант %s поддерживается только в режиме ICS"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "Неизвестный вариант %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "Запускается шахматная программа"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "Неправильный формат файла"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "Неправильный формат файла позиции"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "Не подключено ни одной шахматной программы"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "Не могу открыть COM-порт %s"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "Не могу установить связь с %s, порт %s"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "initialMode: неизвестный режим %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "Режим анализа: не указан файл для анализа"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "Для анализа необходима шахматная программа"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "Режим анализа не совместим с режимом ICS"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "В режиме \"Компьютер белыми\" нужна шахматная программа"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "Режим \"Компьютер белыми\" не совместим с режимом ICS"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "В режиме \"Компьютер черными\" нужна шахматная программа (движок)"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "Режим \"Компьютер черными\" не совместим с режимом ICS"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr "В режиме \"Два движка\" нужна шахматная программа"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "Режим \"Два движка\" не совместим с режимом ICS"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "Для тренировки необходимо загрузить шахматную партию из файла"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "Ошибка записи на вход сервера ICS"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "Ошибка клавиатуры"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "Получен символ конца файла с клавиатуры"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "Ошибка записи на дисплей"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "Ошибка чтения списка ходов: два заголовка"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "Ошибка чтения списка ходов: вложенные списки"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "Сервер ICS разорвал соединение"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "Ошибка чтения с сервера ICS"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr ""
"Слишком длинная партия: увеличьте значение MAX_MOVES и перекомпилируйте "
"программу"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "Ошибка чтения списка ходов: лишняя доска"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "Странный ход \"%s\" получен с сервера ICS"
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr ""
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "Вы играете черными"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "Вы играете белыми"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "Ход белых"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "Ход черных"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "Показанная позиция не соответствует положению в игре"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "Неправильный ход"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "Сыгран последний записанный ход"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "Неверный ход"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "Неправильный ход \"%s\" пытается выполнить движок %s"
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s не поддерживает режим анализа"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr "Неправильный ход \"%s\" (не принят движком %s)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "Не удалось запустить %s движок %s на %s: %s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "Подсказка: %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr "Компьютер согласился на ничью"
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "Неоднозначный ход с сервера ICS: \"%s\""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "Неправильный ход с сервера ICS: \"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "Пропуск в записи ходов"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "Вариант %s не поддерживается %s"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "Ошибка при запуске программы '%s'"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "Ждем первую шахматную программу"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "Ждем вторую шахматную программу"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr ""
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr ""
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "Матч %s против %s: финальный результат %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "Неправильный ход: %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "Неоднозначный ход: %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "Не могу открыть файл \"%s\""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "Не удалось создать список партий"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "В этом сообщении больше нет шахматных партий"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "Нет загруженных шахматных партий"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "Достигнуто начало списка"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "Номер партии - вне диапазона"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "Поиск в файлах записей партий не предусмотрен"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "Партия не найдена в файле"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "Неправильная позиция формата FEN в файле"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "Нет записанных ходов"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "Нет загруженных позиций"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "Поиск в файлах позиций не предусмотрен"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "Позиция не найдена в файле"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "Ход черных"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "Ход белых"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr ""
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr ""
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "Вы еще не сделали ход"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "Нет неоконченных партий"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "Ошибка запуска cmail"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "Ожидание ответного хода\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "Все еще ваша очередь ходить в этой партии\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "Все еще ваша очередь ходить в обеих партиях\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "Все еще ваш ход во всех %d партиях\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "Все еще ваш ход в партии %s\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "Нет неоконченных партий\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "Можно отсылать почту\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "Все еще ваша очередь ходить в партиях %s\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "Правка комментария"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "Правка комментария к %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "Сейчас не ход белых"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "Сейчас не ход черных"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
+"or select 'Move Now'."
+msgstr "Подождите своей очереди ходить"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "Тренировка окончена"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "Тренировка"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "Сыграны все ходы данной партии"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "Предупреждение: вы все еще продолжаете играть"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "Предупреждение: вы все еще наблюдаете за игрой"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "Предупреждение: вы все еще изучаете игру"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "Это поле занято"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "К данному ходу никаких предложений не сделано"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "У вашего соперника еще есть время"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "Вы должны сделать свой ход прежде, чем предлагать ничью"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "Не включен режим изучения шахматных партий"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "Нельзя вернуться к началу пока выбрана \"Пауза\""
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "Ваш ход"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "Подождите своей очереди ходить"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "Подсказок нет"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
#, fuzzy
msgid "Game list not loaded or empty"
msgstr "Нет загруженных шахматных партий"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "Ошибка записи на вход движка %s"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "Ошибка: движок %s (%s) завершил работу"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "Ошибка чтения с выхода движка %s (%s)"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "Позиция не отвечает положению в игре"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "Невозможно интерпретировать ход"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "У обоих игроков время вышло"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "У белых упал флажок"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "У черных упал флажок"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "Позиция в буфере обмена не соответствует формату FEN"
msgid "Could not create book"
msgstr "Невозможно интерпретировать ход"
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr "Отложить F7"
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr ""
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr ""
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr ""
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "Общие для движков... Alt+Shift+U"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Общие настройки"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
#, fuzzy
msgid "Replace Engine"
msgstr "Движок"
-#: dialogs.c:285
+#: dialogs.c:312
#, fuzzy
msgid "Upgrade Engine"
msgstr "Движок"
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Звуки"
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "Анимация перетаскивания"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "Анимация ходов"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "Проверять время"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "Авторазворот доски"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "Невидимые фигуры"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "Скрывать вывод движка в игре против человека"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "Выделять последний ход"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "Выделять стрелкой"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "Ход одним щелчком"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "Периодически обновлять (в режиме анализа)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "Думать всегда"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "Сообщение при выходе"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "Сообщать о неправильном ходе"
-#: dialogs.c:382
+#: dialogs.c:423
#, fuzzy
msgid "Scores in Move List"
msgstr "Запрашивать запись ходов"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "Показывать координаты"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "Проверять правильность хода CS+L"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
#, fuzzy
msgid "Zoom factor in Evaluation Graph:"
msgstr "Оценка позиции"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "Общие настройки"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+#, fuzzy
+msgid "Normal"
msgstr "обычные"
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+#, fuzzy
+msgid "Makruk"
msgstr "макрук"
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr "Фишера (960)"
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "Конь"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
+#: dialogs.c:459
#, fuzzy
-msgid "cylinder *"
+msgid "Cylinder *"
msgstr "цилиндрические"
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr "атомные"
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr "Сейравана"
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+#, fuzzy
+msgid "Bughouse"
msgstr "шведки"
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr "поддавки (мат)"
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "Предупреждение: второй движок (%s) не поддерживает это!"
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "Варианты"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "Max число CPU:"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "Размер хеша (МБ):"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr "Путь к ЭБД:"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr "Кеш ЭБД (МБ):"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr "Глубина книги:"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr "Варьирование:"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr "Своя книга у движка 1"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr "Общие настройки движков"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr "Определять мат"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "Проверять требования движка"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr "Ничья при нехватке материала"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr "Ничья в технич. окончаниях"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "Присудить ничью после"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "Победа/поражение при перевесе в"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "Оценка движка 1 - абсолютная"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "Оценка движка 2 - абсолютная"
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "Присудить победу белым"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr ""
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "Комментарии"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "Следить за игрой"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "Раскрывать доску"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "Следить в фоне"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "Двойная доска"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "Запрашивать запись ходов"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "Спокойная игра"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "График поиска"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr "Автообновление"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:665
msgid "Premove"
msgstr "Предварительный ход"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "1-й ход белых"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "1-й ход черных"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "Звонок"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "Настройки соединения с ICS"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
#, fuzzy
msgid "No games before year:"
msgstr "Нет загруженных шахматных партий"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "Параметры загрузки"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr ""
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr ""
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "Настройки сохранения"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "Без звука"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "Простой сигнал"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr ""
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "Послушать"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr ""
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr ""
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr ""
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "Звуки"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr "Черные фигуры"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "Белые поля"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "Черные поля"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "Выделенное поле"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr "Предварит. ход"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr "Монохромная"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "Настройки доски"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
#, fuzzy
msgid "Edit book"
msgstr "Правка"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "Описание"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr ""
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr ""
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr ""
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "Номер позиции:"
-#: dialogs.c:1372
+#: dialogs.c:1459
#, fuzzy
msgid "randomize"
msgstr "Случайно"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "Новая в смешанные шахматы..."
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
#, fuzzy
msgid "Time-Odds factors:"
msgstr "Фактор времени движков:"
-#: dialogs.c:1416
+#: dialogs.c:1503
#, fuzzy
msgid "Engine #1"
msgstr "Движок"
-#: dialogs.c:1417
+#: dialogs.c:1504
#, fuzzy
msgid "Engine #2 / Human"
msgstr "Своя книга у движка 1"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "Ошибка подключения к шахматной программе"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
#, fuzzy
msgid "Cancel"
msgstr "Отмена"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "Король"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "Общие..."
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "Конь"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Слон"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Ладья"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "Архиепископ"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "Канцлер"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Ферзь"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "Превратить"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr "Стандарт"
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "Вверх"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "Вниз"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
#, fuzzy
msgid "Game-list options"
msgstr "Параметры загрузки"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "Ошибка"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "Неисправимая ошибка"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "Выход"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "Информация"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "Примечание"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Белые"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Пешка"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "Слон (стар.)"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "Пушка"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "Разжаловать"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Пустое поле"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "Очистить доску"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Черные"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "Файл"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "Правка"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr "Вид"
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "Режим"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "Игра"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr "Движок"
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "Настройки"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Справка"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "Файл"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "Фильтр"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "Фильтр"
-#: dialogs.c:2447
+#: dialogs.c:2541
#, fuzzy
msgid "Contents of"
msgstr "Комментарии"
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
msgstr ""
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, fuzzy, c-format
msgid "Engine Output"
msgstr "Вывод движка"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "NPS (Узл./сек.)"
msgid "Reading game file (%d)"
msgstr "Неправильный формат файла"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr ""
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
#, fuzzy
msgid "Failed to open file"
msgstr "Ошибка запуска cmail"
msgstr "Новая в смешанные шахматы..."
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "Новая в смешанные шахматы..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr "Варианты"
#: menus.c:586
msgstr "Присудить ничью"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "Общие для движков... Alt+Shift+U"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "Настройки движка 1..."
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "Настройки движка 2..."
#: menus.c:690
msgstr "Взять ход назад Ctrl+X"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "Общие..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "Контроль времени... Alt+Shift+T"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr "Общие для движков... Alt+Shift+U"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr "Присуждение... Alt+Shift+J"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "Загрузка... Alt+Shift+L"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "Сохранение... Alt+Shift+S"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "Список партий..."
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "Звуки..."
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
#, fuzzy
msgid "engine name"
msgstr "Движок"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
#, fuzzy
msgid "move"
msgstr "ходов"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "Вывод движка"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "OK"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "Отмена"
+#~ msgid "ICS ..."
+#~ msgstr "ICS..."
+
+#~ msgid "cancel"
+#~ msgstr "Отмена"
#~ msgid "New Game Ctrl+N"
#~ msgstr "Новая партия Ctrl+N"
msgstr ""
"Project-Id-Version: XBoard 4.2.7\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: 2003-12-26 16:38+0200\n"
"Last-Translator: A. Alper Atýcý <alper_atici@yahoo.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, fuzzy, c-format
msgid "Failed to open indirection file %s"
msgstr "Dosya açýlamadý"
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr ""
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr ""
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr ""
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr ""
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr ""
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr ""
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr ""
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr ""
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr ""
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr ""
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr ""
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr ""
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr ""
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr ""
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr ""
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr ""
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr ""
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr ""
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr ""
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr ""
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr ""
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr ""
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr ""
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr ""
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr ""
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr ""
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr ""
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr ""
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr ""
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr ""
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr ""
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr ""
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr ""
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr ""
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "Siz Siyah'sýnýz"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "Siz Beyaz'sýnýz"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "Sýra Beyaz'da"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "Sýra Siyah'ta"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr ""
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "Geçersiz hamle"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "Oyun sonu"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "Yanlýþ hamle"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr ""
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr ""
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr ""
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr ""
-#: backend.c:8715
+#: backend.c:9137
#, fuzzy, c-format
msgid "Hint: %s"
msgstr "Ýpucu"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr ""
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr ""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr ""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr ""
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr ""
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr ""
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr ""
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr ""
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
#, fuzzy
msgid "Bad tournament file"
msgstr "Dosya açýlamadý"
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr ""
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr ""
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr ""
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr ""
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr ""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr ""
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr ""
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr ""
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr ""
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr ""
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr ""
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr ""
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr ""
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr ""
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr ""
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr ""
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr ""
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr ""
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr ""
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr ""
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr ""
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr ""
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr ""
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr ""
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr ""
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr ""
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr ""
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr ""
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr ""
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr ""
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr ""
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr ""
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr ""
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr ""
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr ""
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr ""
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
+"or select 'Move Now'."
msgstr ""
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr ""
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr ""
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr ""
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr ""
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr ""
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr ""
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr ""
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr ""
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr ""
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr ""
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr ""
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr ""
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr ""
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+msgid "Wait until your turn."
msgstr ""
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr ""
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
msgid "Game list not loaded or empty"
msgstr ""
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr ""
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr ""
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr ""
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr ""
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr ""
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "Berabere"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "Beyaz Þah mat"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "Siyah Þah mat"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr ""
msgid "Could not create book"
msgstr ""
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr "Dosya açýlamadý"
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr ""
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr ""
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
#, fuzzy
msgid "Save Tourney Games on:"
msgstr "Oyunu Kaydet"
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+msgid "Common Engine"
+msgstr ""
+
+#: dialogs.c:309 dialogs.c:441
+#, fuzzy
+msgid "General Options"
+msgstr "Seçenekler"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr ""
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr ""
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
+msgstr ""
+
+#: dialogs.c:383
#, fuzzy
-msgid "Match Options"
+msgid "Tournament Options"
msgstr "Seçenekler"
-#: dialogs.c:363
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr ""
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr ""
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr ""
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr ""
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "Tahtayý Görmeden"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr ""
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr ""
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr ""
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr ""
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr ""
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
#, fuzzy
msgid "Ponder Next Move"
msgstr "Sonraki Oyunu Yükle"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr ""
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr ""
-#: dialogs.c:382
+#: dialogs.c:423
#, fuzzy
msgid "Scores in Move List"
msgstr "Hamle Listesini Göster"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr ""
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr ""
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
msgid "Zoom factor in Evaluation Graph:"
msgstr ""
-#: dialogs.c:400
-#, fuzzy
-msgid "General Options"
-msgstr "Seçenekler"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+msgid "Normal"
msgstr ""
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr ""
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
+#: dialogs.c:457
#, fuzzy
-msgid "knightmate"
+msgid "Knightmate"
msgstr "At"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+msgid "Bughouse"
msgstr ""
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
#, fuzzy
msgid "losers"
msgstr "kapat"
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr ""
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr ""
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr ""
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr ""
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr ""
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr ""
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr ""
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr ""
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr ""
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr ""
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr ""
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr ""
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr ""
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr ""
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr ""
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr ""
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr ""
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr ""
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "Oyunu Kaydet"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr ""
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr ""
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr ""
-#: dialogs.c:572
+#: dialogs.c:655
#, fuzzy
msgid "Auto-Raise Board"
msgstr "XBoard Hakkýnda"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr ""
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr ""
-#: dialogs.c:576
+#: dialogs.c:659
#, fuzzy
msgid "Get Move List"
msgstr "Hamle Listesini Göster"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr ""
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr ""
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr ""
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:665
msgid "Premove"
msgstr ""
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr ""
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr ""
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr ""
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
#, fuzzy
msgid "ICS Options"
msgstr "Seçenekler"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
msgid "No games before year:"
msgstr ""
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
#, fuzzy
msgid "Load Game Options"
msgstr "Oyun Yükle"
-#: dialogs.c:657
+#: dialogs.c:741
#, fuzzy
msgid "Auto-Save Games"
msgstr "Oyunu Kaydet"
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
#, fuzzy
msgid "Save Games on File:"
msgstr "Oyunu Kaydet"
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
#, fuzzy
msgid "Save Game Options"
msgstr "Oyunu Kaydet"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr ""
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr ""
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
#, fuzzy
msgid "User File"
msgstr "Dosya"
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr ""
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
#, fuzzy
msgid "Draw:"
msgstr "Berabere"
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
#, fuzzy
msgid "Channel:"
msgstr "iptal"
-#: dialogs.c:733
+#: dialogs.c:819
#, fuzzy
msgid "Channel 1:"
msgstr "iptal"
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
#, fuzzy
msgid "Sound Options"
msgstr "Seçenekler"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr ""
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr ""
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr ""
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr ""
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr ""
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
#, fuzzy
msgid "Mono Mode"
msgstr "Kip"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
#, fuzzy
msgid "Board Options"
msgstr "Seçenekler"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr "temizle"
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
#, fuzzy
msgid "Edit book"
msgstr "Oyunu Düzenle"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr ""
-#: dialogs.c:1193
+#: dialogs.c:1280
#, fuzzy
msgid "ICS input box"
msgstr "ICS Ýstemcisi"
-#: dialogs.c:1225
+#: dialogs.c:1312
#, fuzzy
msgid "Type a move"
msgstr "Geçersiz hamle"
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr ""
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr ""
-#: dialogs.c:1372
+#: dialogs.c:1459
msgid "randomize"
msgstr ""
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr ""
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
msgid "Time-Odds factors:"
msgstr ""
-#: dialogs.c:1416
+#: dialogs.c:1503
msgid "Engine #1"
msgstr ""
-#: dialogs.c:1417
+#: dialogs.c:1504
msgid "Engine #2 / Human"
msgstr ""
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr ""
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
#, fuzzy
msgid "Cancel"
msgstr "iptal"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "Þah"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr ""
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "At"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Fil"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Kale"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
#, fuzzy
msgid "Archbishop"
msgstr "Fil"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
#, fuzzy
msgid "Chancellor"
msgstr "iptal"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Vezir"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
#, fuzzy
msgid "Promote"
msgstr "Terfi"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr ""
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr ""
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr ""
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
#, fuzzy
msgid "Game-list options"
msgstr "Oyun Yükle"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "Hata"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr ""
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr ""
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "Bilgi"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "Not"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Beyaz"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Piyon"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr ""
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr ""
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr ""
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Kareyi Boþalt"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "Tahtayý Temizle"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Siyah"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "Dosya"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
#, fuzzy
msgid "Edit"
msgstr "Oyunu Düzenle"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr ""
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "Kip"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "Eylem"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr ""
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "Seçenekler"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Yardým"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "Dosya"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "Dosya adý giriþi"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "Analiz edilecek dosya"
-#: dialogs.c:2447
+#: dialogs.c:2541
msgid "Contents of"
msgstr ""
-#: dialogs.c:2473
+#: dialogs.c:2567
#, fuzzy
msgid " next page"
msgstr "sonraki"
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, c-format
msgid "Engine Output"
msgstr ""
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr ""
msgid "Reading game file (%d)"
msgstr ""
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, fuzzy, c-format
msgid "Failed to open file '%s'\n"
msgstr "Dosya açýlamadý"
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
msgid "Failed to open file"
msgstr "Dosya açýlamadý"
msgstr "Oyunu Sýfýrla"
#: menus.c:583
-msgid "New Shuffle Game ..."
-msgstr ""
+#, fuzzy
+msgid "New Shuffle Game..."
+msgstr "Oyunu Kaydet"
#: menus.c:584
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr ""
#: menus.c:586
msgstr ""
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
+msgid "Load New 2nd Engine..."
msgstr ""
#: menus.c:687
-msgid "Engine #1 Settings ..."
+msgid "Engine #1 Settings..."
msgstr ""
#: menus.c:688
-msgid "Engine #2 Settings ..."
+msgid "Engine #2 Settings..."
msgstr ""
#: menus.c:690
msgstr "Hamleyi Geri Al"
#: menus.c:700
-msgid "General ..."
+msgid "General..."
msgstr ""
#: menus.c:702
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr ""
#: menus.c:703
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr ""
#: menus.c:704
-msgid "Adjudications ..."
-msgstr ""
+#, fuzzy
+msgid "Adjudications..."
+msgstr "Oyunu Kaydet"
#: menus.c:705
-msgid "ICS ..."
+msgid "ICS..."
msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
#, fuzzy
-msgid "Load Game ..."
+msgid "Load Game..."
msgstr "Oyun Yükle"
#: menus.c:708
#, fuzzy
-msgid "Save Game ..."
+msgid "Save Game..."
msgstr "Oyunu Kaydet"
#: menus.c:709
#, fuzzy
-msgid "Game List ..."
+msgid "Game List..."
msgstr "Oyun Listesini Göster"
#: menus.c:710
-msgid "Sounds ..."
+msgid "Sounds..."
msgstr ""
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
msgid "engine name"
msgstr ""
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
msgid "move"
msgstr ""
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr ""
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr ""
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "iptal"
+#, fuzzy
+#~ msgid "Match Options"
+#~ msgstr "Seçenekler"
+
+#~ msgid "cancel"
+#~ msgstr "iptal"
#, fuzzy
#~ msgid "Load Position Ctrl+Shift+O"
# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013.
msgid ""
msgstr ""
-"Project-Id-Version: GNU xboard-4.7.0.20130224\n"
+"Project-Id-Version: GNU xboard-4.7.2\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
-"PO-Revision-Date: 2013-02-26 22:30+0200\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
+"PO-Revision-Date: 2013-11-19 13:57+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
"Language: uk\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr "%s у файлі параметрів\n"
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr "Помилкове ціле значення %s"
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr "Невідомий аргумент %s"
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr "Не вказано значення для аргументу %s"
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr "Неповне екранування \\ у значенні для %s"
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr "Не вдалося відкрити файл переспрямування %s"
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr "Невідоме значення булевого аргументу %s"
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr "перший"
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr "другий"
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "підтримки версії протоколу %d не передбачено"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr "Вами не вказано виконуваного файла рушія"
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "помилковий параметр timeControl %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "помилковий параметр searchTime %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "Підтримку варіанта %s передбачено лише у режимі ICS"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "Невідома назва варіанта %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "Запуск шахової програми"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "Помилковий файл гри"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "Помилковий файл позиції"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr "Виберіть нову гру"
-#: backend.c:1488
+#: backend.c:1552
+#, fuzzy
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
"Вами перезапущено вже завершений турнір.\n"
"Тепер до турніру буде додано ще одне коло.\n"
"Ігри розпочнуться за 10 секунд."
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr "Всі ігри турніру «%s» вже зіграно або вже розпочато"
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "Не можна розпочати матч, якщо не встановлено шахових програм"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "Не вдалося відкрити порт comm %s"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "Не вдалося з’єднатися з вузлом %s, порт %s"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "Невідоме значення initialMode %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "У режимі аналізу файла потрібен файл гри"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "У режимі аналізу потрібен шаховий рушій"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "Робота режиму разом з режимом ICS неможлива"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "У режимі гри комп’ютера білими потрібен шаховий рушій"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "Робота режиму гри комп’ютером білими разом з режимом ICS неможлива"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "У режимі гри комп’ютера чорними потрібен шаховий рушій"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "Робота режиму гри комп’ютером білими разом з режимом ICS неможлива"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr ""
"Режимом гри між двома комп’ютерами можна скористатися, лише якщо встановлено "
"шаховий рушій"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "Робота режиму гри між двома комп’ютерами разом з режимом ICS неможлива"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "У режимі тренування потрібен файл гри"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "Помилка під час спроби запису до ICS"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "Помилка під час читання даних з клавіатури"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "Отримано символ кінця файла з клавіатури"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr "Невідомий «дикий» тип %d"
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "Помилка запису на дисплей"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr "втручання вашого суперника: %s"
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "Помилка під час збирання списку ходів: два заголовки"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "Помилка під час збирання списку ходів: вкладеність"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr "проти"
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr "Некоректний хід (заборонено ICS)"
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "З’єднання розірвано з боку ICS"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "Помилка під час спроби читання з ICS"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"Не вдалося обробити рядок дошки:\n"
"\"%s\""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr ""
"Гра є занадто довгою. Збільшіть значення MAX_MOVES і перезберіть програму."
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "Помилка під час збирання списку ходів: вихід за межі дошки"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "Не вдалося обробити хід «%s» з ICS"
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "say Internal error; bad moveType %d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr "Ця дія неможлива у режимі гри або спостереження"
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
"Повторно зберіть програму з підтримкою цих значень BOARD_RANKS і BOARD_FILES!"
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "Ви граєте чорними"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "Ви граєте білими"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "Хід білих"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "Хід чорних"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "Показана позиція не є поточною"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "Недозволений хід"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "Кінець гри"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "Некоректний хід"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr "Потягніть пішака назад, щоб знизити ранг фігури"
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr "Турнір за швейцарською системою завершено"
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr "Рушієм визначення пар повернуто некоректне значення пари"
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "Некоректний хід «%s» від комп’ютера %s"
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr "Отримано помилкові дані FEN від рушія"
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "У %s не передбачено аналізу"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr ""
"Недозволений хід «%s» (у реєстрації ходу відмовлено шаховою програмою %s)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "Не вдалося запустити шахову програму %s %s на %s: %s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "Підказка: %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"Некоректна підказка щодо ходу «%s»\n"
"від шахової програми %s"
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr "Ком’ютер погодився з вашою пропозицією нічиєї"
-#: backend.c:8898
+#: backend.c:9320
+#, fuzzy
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
"Комп’ютером запропоновано нічию\n"
"Скористайтеся пунктом меню «Дія->Нічия», щоб погодитися"
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr "не вдалося записати PV"
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "Неоднозначний хід у виведених ICS даних: «%s»"
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "Некоректний хід у виведених даних ICS: «%s»"
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "Пропущено хід у списку ходів"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "Варіант %s не підтримується %s"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "Помилка запуску на «%s»"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "Очікування на запуск першої шахової програми"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "Очікування на запуск другої шахової програми"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr "Не вдалося виконати запис до файла турніру"
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
"Не можна міняти рушій, який зараз використовується!\n"
"Спочатку перервіть гру."
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr "Рушія з вказаною вами назвою не встановлено"
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
"Спочатку змініть рушій редагуванням списку учасників турніру\n"
"у діалоговому вікні «Параметри турніру»"
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr "Одночасно змінювати можна лише один рушій"
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr "Не встановлено жодного рушія %s"
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
"Для запису результатів турніру\n"
"вам слід вказати файл турніру."
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr "Недостатньо учасників"
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr "Помилковий файл турніру"
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr "Очікування на результати інших ігор"
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr "Не вказано рушія визначення пар"
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "Матч між %s і %s: остаточний рахунок — %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "Недозволений хід: %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "Неоднозначний хід: %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "Не вдалося відкрити «%s»"
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "Не вдалося побудувати список ігор"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "У цьому повідомленні більше немає результатів ігор"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "Ще не завантажено жодної гри"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "Подальше створення резервних копій неможливе"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "Номер гри поза доступним діапазоном"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "Пошук у файлі гри неможливий"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "У файлі немає даних щодо гри"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "Помилкова позиція FEN у файлі"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "У записі гри немає жодного ходу"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "Жодної з позицій ще не завантажено"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "Пошук у файлі позицій неможливий"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "У файлі не знайдено позиції"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "Хід чорних"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "Хід білих"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr "Очікування на доступ до можливості збереження файла"
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr "Збереження гри"
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr "Помилкове позиціювання"
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr "Збереження позиції"
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
"Вами внесено зміни до журналу гри.\n"
"Скористайтеся пунктом «Перезавантажити гру» і повторіть ваш хід."
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
"Вами введено занадто багато ходів.\n"
"Поверніться до правильної позиції і повторіть спробу."
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
"Показана позиція не є поточною.\n"
"Продовжіть гру, щоб виправити позицію і повторіть спробу."
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "Вами ще не зроблено жодного ходу"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
"Скористайтеся пунктом «Перезавантажити повідомлення CMail» і повторіть ваш "
"хід."
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "Немає незавершених ігор"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"\"cmail -remail -game %s\"\n"
"у командному рядку."
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "Не вдалося викликати cmail"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "Очікування на відповідь від суперника\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "Слід зробити хід у грі\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "Слід зробити ходити у обох іграх\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "Слід зробити ходити у всіх %d іграх\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "Слід зробити хід у грі %s\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "Немає незавершених ігор\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "Програма готова до надсилання пошти\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "Слід зробити ходи у іграх %s\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "Редагувати коментар"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "Змінити коментар щодо %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr "Ви не спостерігаєте за грою"
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "Зараз хід чорних"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "Зараз хід білих"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr "Запуск шахової програми %s"
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
+"or select 'Move Now'."
msgstr ""
"Зачекайте на ваш хід або\n"
"виберіть пункт «Ходити»"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "Режим тренування вимкнено"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "Режим тренування увімкнено"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "Гру вже завершено"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "Попередження: гра ще триває"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "Попередження: ви ще продовжуєте спостерігати за грою"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "Попередження: ви ще вивчаєте гру"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr "Клацніть на годиннику, щоб спорожнити дошку"
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr "Завершити процес аналізу рушія ICS…"
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "Цю клітинку зайнято"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "У черзі немає пропозицій щодо цього ходу"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "У вашого суперника ще залишився час"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "Перш ніж запропонувати нічию, вам слід зробити хід"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "Ви не вивчаєте гру"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "Скасовувати ходи у призупиненій грі не можна"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "Ваш хід"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "Очікувати на ваш хід"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "Немає підказки"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
msgid "Game list not loaded or empty"
msgstr "Список гри не завантажено або цей список є порожнім"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr "Файл книги вже існує! Повторіть спробу, щоб перезаписати його."
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "Помилка під час спроби запису даних до шахової програми %s"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr "Програма %s завершила роботу у нічийній позиції (%s)"
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "Помилка: шахова програма %s (%s) несподівано завершила роботу"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "Помилка під час спроби читання даних з шахової програми %s (%s)"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr "Для рушія %s передбачено занадто багато параметрів\n"
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "Показаний хід не є поточним"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "Не вдалося обробити хід"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "Обидва прапорці впали"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "Прапорець білих впав"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "Прапорець чорних впав"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr "Коригування годинника у режимі автоматичних прапорців заборонене"
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "Помилкова позиція FEN у буфері обміну"
msgid "Could not create book"
msgstr "Не вдалося створити книгу"
-#: dialogs.c:259
+#: dialogs.c:283
msgid "Tournament file: "
msgstr "Файл турніру: "
-#: dialogs.c:260
+#: dialogs.c:284
+#, fuzzy
+msgid "For concurrent playing of tourney with multiple XBoards:"
+msgstr " турніру з декількома XBoard)"
+
+#: dialogs.c:285
msgid "Sync after round"
msgstr "Синхронізувати після рауду"
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
-msgstr " (для одночасної гри окремого"
-
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr "Синхронізувати після кола"
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr " турніру з декількома XBoard)"
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr "Учасники турніру:"
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr "Виберіть рушій:"
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr "Система турніру (0 = кругова, 1 = почергова):"
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr "Кількість кіл турніру (швейцарських раундів):"
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr "Типова кількість ігор у матчі:"
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr "Проміжок між іграми у матчі (у мілісекундах):"
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr "Зберігати ігри турніру до:"
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr "Файл гри з початковими рядками:"
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr "Номер гри (-1 або -2 = автоматичне збільшення):"
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr "Файл з початковими позиціями:"
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr "Номер позиції (-1 або -2 = автоматичне збільшення):"
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
"Відновлювати початковий номер після вказаної кількості ігор (0=ніколи):"
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr "Типово вимкнути власні бібліотеки позицій рушія"
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr "Керування часом"
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "Загальний рушій…"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Загальні параметри"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr "Замінити рушій"
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr "Оновити рушій"
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr "Клонувати турнір"
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr "Спочатку вам слід вказати вже створений файл турніру для клонування"
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr "# не встановлено жодного рушія"
-#: dialogs.c:344
-msgid "Match Options"
-msgstr "Параметри партії"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
+msgstr ""
+
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Параметри звуку"
-#: dialogs.c:363
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr "Абсолютні оцінки аналізу"
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr "Майже завжди королева (відхиляти неповні перетворення)"
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "Анімація перетягування"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "Анімація ходів"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "Автопрапорець"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "Автоматичне обертання дошки"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "Наосліп"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr "Спадне меню"
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr "Увімкнути дерево варіантів"
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "Приховувати обмірковування від людини"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "Позначати останній хід"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "Позначити за допомогою стрілки"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "Хід у одне клацання"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "Періодичні оновлення (у режимі аналізу)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr "Грати ходи натиснутих PV (аналіз)"
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "Обдумати наступний хід"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "Контекстні підказки щодо виходу"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "Контекстні підказки з помилками щодо ходів"
-#: dialogs.c:382
+#: dialogs.c:423
msgid "Scores in Move List"
msgstr "Оцінки у списку ходів"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "Показувати координати"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr "Показувати клітинки призначення"
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr "Липкі вікна"
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "Перевіряти коректність"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr "Вікна верхнього рівня"
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr "Блимання під час ходів (0 = без блимання):"
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr "Частота блимання (висока = швидко):"
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr "Швидкість анімації (висока = повільно):"
-#: dialogs.c:391
+#: dialogs.c:432
msgid "Zoom factor in Evaluation Graph:"
msgstr "Масштаб графу оцінки позиції:"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "Загальні параметри"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+#, fuzzy
+msgid "Normal"
msgstr "звичайні"
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+#, fuzzy
+msgid "Makruk"
msgstr "макрук"
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr "Фішера"
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+#, fuzzy
+msgid "Shatranj"
msgstr "шатрандж"
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+#, fuzzy
+msgid "Wild castle"
msgstr "дика тура"
-#: dialogs.c:415
-msgid "knightmate"
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
msgstr "мат коню"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+#, fuzzy
+msgid "No castle"
msgstr "без тури"
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+#, fuzzy
+msgid "Cylinder *"
msgstr "циліндричні *"
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr "Три шахи"
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr "бероліна *"
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr "атомні"
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr "два королі"
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr " "
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr "спартанські"
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr "Розмір дошки ( -1 = типовий для вибраного варіанта):"
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr "Кількість рангів дошки:"
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr "Кількість файлів дошки:"
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr "Розмір резерву:"
-#: dialogs.c:429
-msgid "fairy"
-msgstr "казкові"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
+msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr "Великий шатрандж (10x8)"
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr "Сейравана"
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+#, fuzzy
+msgid "Falcon (10x8)"
msgstr "сокіл (10x8)"
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr "Супершахи"
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr "Капабланка (10x8)"
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+#, fuzzy
+msgid "Crazyhouse"
msgstr "крейзіхаус"
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr "Готичні (10x8)"
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+#, fuzzy
+msgid "Bughouse"
msgstr "шведські"
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+#, fuzzy
+msgid "Janus (10x8)"
msgstr "Янус (10x8)"
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+#, fuzzy
+msgid "Suicide"
msgstr "самовбивчі"
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr "Рівноправність (10x8)"
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr "піддавки"
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr "гранд-шахи (10x10)"
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr "Антишахи"
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr "сьогі (9x9)"
-#: dialogs.c:445
-msgid "Spartan"
-msgstr "спартанські"
+#: dialogs.c:489
+msgid "fairy"
+msgstr "казкові"
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr "сянці (9x10)"
-#: dialogs.c:447
-msgid " "
-msgstr " "
+#: dialogs.c:491
+msgid "mighty lion"
+msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr "кур’єр (12x8)"
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+#, fuzzy
+msgid "chu shogi (12x12)"
+msgstr "сьогі (9x9)"
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "Попередження: ця можливість не підтримується другим рушієм (%s)!"
-#: dialogs.c:488
-#, c-format
-msgid "Only bughouse is not available in viewer mode"
+#: dialogs.c:554
+#, fuzzy, c-format
+msgid "Only bughouse is not available in viewer mode."
msgstr "У режимі перегляду недоступні лише шведські шахи"
-#: dialogs.c:489
-#, c-format
+#: dialogs.c:555
+#, fuzzy, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
"Всі варіанти, які не підтримуються першим рушієм\n"
"(зараз це %s), вимкнено"
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "Новий варіант"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "Максимальна кількість процесорів на рушій:"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr "Каталог бібліотек Polygot:"
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "Розмір таблиці хешів (у МБ):"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr "Шлях до бази даних EGTB Налімова:"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr "Розмір кешу EGTB (у МБ):"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr "Використовувати книгу з графічним інтерфейсом"
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr "Назва файла даних дебютів:"
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr "Глибина книги (у ходах):"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr "Компроміс між різноманітністю (0) і силою (100) книги:"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr "Рушій 1 має власну книгу"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr "Рушій 2 має власну книгу "
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr "Загальні параметри рушіїв"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr "Виявляти всі мати"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "Перевіряти вимоги до результатів рушія"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr "Нічия, якщо недостатньо фігур для мату"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr "Визначати тривіальні нічиї (трикратне повторення)"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr "Правило N-го ходу:"
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr "N-кратне повторення:"
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "Нічия після N ходів загалом:"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "Поріг виграшу/програшу:"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "Негативна оцінка рушія 1"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "Негативна оцінка рушія 2"
-#: dialogs.c:556
+#: dialogs.c:639
msgid "Adjudicate non-ICS Games"
msgstr "Судити ігри, що не належать до класу ICS"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "Автопоради"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "Автокоментарі"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "Автоспостереження"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "Автопідняття дошки"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr "Автостворення скрипту входу"
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "Спостереження у тлі під час гри"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "Подвійна дошка для ігор з фоновим спостереженням"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "Отримати список ходів"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "Мовчазна гра"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "Граф викликів"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr "Автоматичне оновлення графу пошуків"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr "Автоматичне вікно введення"
-#: dialogs.c:581
+#: dialogs.c:664
+#, fuzzy
+msgid "Quit after game"
+msgstr "Очікування на результати інших ігор"
+
+#: dialogs.c:665
msgid "Premove"
msgstr "Попередній хід"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr "Попередній хід для білих"
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "Перший хід білих:"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr "Попередній хід для чорних"
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "Перший хід чорних:"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "Нагадування"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr "Час нагадування (у мс):"
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr "Розфарбовувати повідомлення"
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr "Кольори тексту вигуків:"
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr "Колір тексту S-вигуків:"
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr "Кольори тексту каналу 1:"
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr "Кольори тексту інших каналів:"
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr "Кольори тексту порад:"
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr "Кольори тексту висловлювань:"
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr "Кольори тексту викликів:"
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr "Кольори тексту запитів:"
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr "Кольори тексту під час пошуку:"
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "Параметри ICS"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr "Точний збіг позицій"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr "Показана позиція є підмножиною"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr "Однаковий матеріал з однаковим ланцюжком пішаків"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr "Однаковий матеріал"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr "Діапазон матеріалу (верхня половина дошки, необов’язковий)"
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr "Відмінність матеріалів (з додатковим врівноваженням можливостей)"
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr "Автопоказ міток"
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr "Автопоказ коментарів"
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
"Швидкість автогри у завантажених іграх\n"
"(0 = негайний показ, -1 = вимкнути автогру):"
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr "Секунд на хід:"
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
"\n"
"Параметри режиму перегляду ігор:"
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
"\n"
"Порогові значення фільтрування позицій у списку ігор:"
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr "Рейтинг Ело для сильнішого гравця не нижче за:"
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr "Рейтинг Ело для слабшого гравця не нижче за:"
-#: dialogs.c:633
+#: dialogs.c:717
msgid "No games before year:"
msgstr "Не показувати ігри до року:"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr "Мінімальна к-ть послідовних позицій:"
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr "Режим пошуку:"
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr "Шукати у позиціях зворотних кольорів"
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr "Шукати у симетричних позиціях"
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "Параметри завантаження ігор"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr "Автозбереження ігор"
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr "Лише власні ігри"
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr "Зберігати ігри до файла:"
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr "Зберігати остаточні позиції до файла:"
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr "Обробник подій PGN:"
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr "Застарілий стиль збереження (на відміну від PGN)"
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr "Включити мітку номера до PGN турніру"
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr "Зберігати дані щодо рейтингу/глибини у PGN"
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr "Зберігати сторонні дані до PGN "
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "Параметри збереження ігор"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "Без звуку"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "Типовий гудок"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr "Файл WAV вище"
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr "Автомобільний гудок"
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr "Цимбали"
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr "Дзвінок"
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr "Гонг"
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr "Лазер"
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr "Штраф"
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr "Телефон"
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr "Плескання"
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr "Клацання"
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr "Удар об дерево"
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr "Файл користувача"
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr "Файл WAV користувача:"
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr "Програма відтворення:"
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr "Тестовий звук:"
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "Пуск"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr "Хід:"
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr "Виграшів:"
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr "Програшів:"
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr "Нічиїх:"
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr "Незавершених:"
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr "Нагадування:"
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr "Виклик:"
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr "Каталог звуків:"
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr "Вигук:"
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr "S-вигук:"
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr "Канал:"
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr "Канал 1:"
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr "Висловлення:"
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr "Порада:"
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr "Запит:"
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr "Пошук:"
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "Параметри звуку"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr "Колір фігур білих:"
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr "Ч"
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr "З"
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr "С"
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr "Т"
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr "Колір фігур чорних:"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "Колір світлих клітинок:"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "Колір темних клітинок:"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "Колір позначення:"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr "Колір підсвічування плану ходу:"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr "Стиль обміну фігурами сьогі (Кольорові кнопки відновлюють типовий)"
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr "Монорежим"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+#, fuzzy
+msgid "Line Gap (-1 = default for board size):"
msgstr "Проміжок між рядами ( -1 = типовий для розмірів дошки):"
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr "Використовувати текстури дошки"
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr "Файл текстур світлих клітинок:"
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr "Файл текстур темних клітинок:"
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr "Зовнішні растрові зображення фігур з власними кольорами"
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr "Каталог з зображеннями фігур:"
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "Параметри дошки"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr "Текстове меню ICS"
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr "спорожнити"
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr "зберегти зміни"
-#: dialogs.c:1051
+#: dialogs.c:1138
msgid "Edit book"
msgstr "Змінити книгу"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "Мітки"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr "Поле введення ICS"
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr "Введіть хід"
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr "Рушієві не передаються жодні параметри"
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr "Параметри рушія"
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr "Виберіть рушій зі списку:"
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr "або вкажіть його нижче:"
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr "Псевдонім (необов’язковий):"
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr "Використовувати псевдонім у мітках гравця PGN під час ігор між рушіями"
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr "Каталог рушія:"
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr "Команда рушія:"
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
"(Каталог буде визначено на основі шляху до рушія, якщо каталог не вказано)"
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr "UCI"
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr "Протокол WB версії 1 (не чекати на дані щодо можливостей)"
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr "Не повинен використовувати книгу з графічним інтерфейсом"
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr "Додати цей рушій до списку"
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr "Примусово визначити поточний варіант для рушія"
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr "Завантажити перший рушій"
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr "Завантажити другий рушій"
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr "перемішати"
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "Номер початкової позиції:"
-#: dialogs.c:1372
+#: dialogs.c:1459
msgid "randomize"
msgstr "випадково"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr "вибрати фіксовану"
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "Нова випадкова гра"
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr "класичні"
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr "нарощувальний"
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr "фіксований максимум"
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr "Ходів за сеанс:"
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr "Початковий час (у хвилинах):"
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr "Збільшення або максимум (сек/хід):"
-#: dialogs.c:1415
+#: dialogs.c:1502
msgid "Time-Odds factors:"
msgstr "Коефіцієнти виправлення часу:"
-#: dialogs.c:1416
+#: dialogs.c:1503
msgid "Engine #1"
msgstr "Рушій 1"
-#: dialogs.c:1417
+#: dialogs.c:1504
msgid "Engine #2 / Human"
msgstr "Рушій 2 / Людина"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr "Не використовується"
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr "Керування часом"
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "Помилка під час спроби запису даних до шахової програми"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
msgid "Cancel"
msgstr "Скасувати"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "Король"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr "Капітан"
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr "Лейтенант"
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "Загальне"
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr "Полководець"
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "Кінь"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Слон"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Тура"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "Архієпископ"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "Канцлер"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Королева"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr "Зменшити пріоритет"
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "Підвищити"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr "Співрозмовник:"
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr "Панель спілкування"
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr "типові"
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "вгору"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "вниз"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr "Не вибрано жодної мітки"
-#: dialogs.c:1793
+#: dialogs.c:1883
msgid "Game-list options"
msgstr "Параметри списку гри"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "Помилка"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "Критична помилка"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "Вихід"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "Інформація"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "Нотатка"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Білі"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Пішак"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "Слон"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "Гармата"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "Розжалувати"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Порожня клітинка"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "Спорожнити дошку"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Чорні"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "Файл"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "Зміни"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr "Перегляд"
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "Режим"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "Дія"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr "Рушій"
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "Параметри"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Довідка"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr "<<"
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr "<"
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ">"
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ">>"
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr "Каталоги:"
-#: dialogs.c:2365
+#: dialogs.c:2459
msgid "Files:"
msgstr "Файли:"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr "за назвою"
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr "за типом"
-#: dialogs.c:2370
+#: dialogs.c:2464
msgid "Filename:"
msgstr "Назва файла:"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr "Новий каталог"
-#: dialogs.c:2372
+#: dialogs.c:2466
msgid "File type:"
msgstr "Тип файлів:"
-#: dialogs.c:2447
+#: dialogs.c:2541
msgid "Contents of"
msgstr "Вміст"
-#: dialogs.c:2473
-#, fuzzy
+#: dialogs.c:2567
msgid " next page"
-msgstr "\7f наступна сторінка"
+msgstr " наступна сторінка"
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr "СПОЧАТКУ ВКАЖІТЬ ТУТ НАЗВУ КАТАЛОГУ"
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr "СПРОБУЙТЕ ІНШУ НАЗВУ"
-#: draw.c:293
+#: draw.c:310
+#, fuzzy
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
"Типових зображень фігур не встановлено.\n"
"Вкажіть власні за допомогою параметра -pieceImageDirectory"
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, c-format
msgid "Engine Output"
msgstr "Вивід рушія"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[2] "%s (з можливістю скасування %d ходів)"
msgstr[3] "%s (з можливістю скасування %d ходу)"
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "NPS"
msgid "Reading game file (%d)"
msgstr "Читання файла гри (%d)"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr "%s: не вдалося перейти до каталогу CHESSDIR: "
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr "Не вдалося відкрити файл «%s»\n"
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
"Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з "
"більшими значеннями BOARD_RANKS або BOARD_FILES"
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr "%s: помилковий синтаксис boardSize %s\n"
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr "%s: невідома назва boardSize %s\n"
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr "%s: занадто мало кольорів; спробуємо монохромний режим\n"
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr "Не вдалося створити набір шрифтів для %s.\n"
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr "%s: взірцеві %s не відповідає жоден шрифт\n"
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr "Не вдалося відкрити тимчасовий файл даних"
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
msgid "Failed to open file"
msgstr "Не вдалося відкрити файл"
msgstr "Нова гра"
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "Нова випадкова гра…"
#: menus.c:584
-msgid "New Variant ..."
+#, fuzzy
+msgid "New Variant..."
msgstr "Новий варіант…"
#: menus.c:586
msgstr "Визначити нічию"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+#, fuzzy
+msgid "Load New 1st Engine..."
msgstr "Завантажити новий перший рушій…"
#: menus.c:685
-msgid "Load New 2nd Engine ..."
+#, fuzzy
+msgid "Load New 2nd Engine..."
msgstr "Завантажити новий другий рушій…"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "Параметри рушія 1…"
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "Параметри рушія 2…"
#: menus.c:690
msgstr "Відкликати хід"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "Загальне…"
#: menus.c:702
-msgid "Time Control ..."
+#, fuzzy
+msgid "Time Control..."
msgstr "Керування часом…"
#: menus.c:703
-msgid "Common Engine ..."
+#, fuzzy
+msgid "Common Engine..."
msgstr "Загальний рушій…"
#: menus.c:704
-msgid "Adjudications ..."
+#, fuzzy
+msgid "Adjudications..."
msgstr "Визначення…"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS…"
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
-msgstr "Партія…"
+msgid "Tournament..."
+msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "Завантажити гру…"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "Зберегти гру…"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "Список ігор…"
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "Звуки…"
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr "Надіслати звіт про ваду електронною поштою"
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
msgid "engine name"
msgstr "назва рушія"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
msgid "move"
msgstr "хід"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "Вивід рушія"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
msgstr "%s: нерозпізнаний колір %s\n"
#: usystem.c:230
-#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+#, fuzzy, c-format
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr "%s: не вдалося обробити колір тексту у «%s»\n"
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr "%s: не вдалося обробити назви кольорів; розфарбовування вимкнено\n"
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr "Помилка: невідомий користувач %s (шлях — %s)\n"
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr "Підтримку сокетів ще не налаштовано"
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr "вбудований rcmd ще не реалізовано для Unix"
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr "%s: не вдалося отримати доступ до каталогу XPM %s\n"
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr "Доступні розміри «%s»:\n"
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr "Помилка: немає файлів «%s»!\n"
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-"Попередження: у системі не виявлено структури DIR —\n"
-" автоматична зміна розмірів фігур XPM/XIM неможлива.\n"
-" Будь ласка, повідомте про цю помилку на адресу %s.\n"
-" Включіть до повідомлення дані щодо типу та назви операційної системи.\n"
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr "білий піксель = 0x%lx, чорний піксель = 0x%lx\n"
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr "Помилка %d під час завантаження зображення піктограми\n"
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr "вибрати"
msgid "Shift"
msgstr "Shift"
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "Гаразд"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "скасувати"
+#~ msgid " (for concurrent playing of a single"
+#~ msgstr " (для одночасної гри окремого"
+
+#~ msgid "Match Options"
+#~ msgstr "Параметри партії"
+
+#~ msgid "ICS ..."
+#~ msgstr "ICS…"
+
+#~ msgid "Match ..."
+#~ msgstr "Партія…"
+
+#~ msgid "%s: Can't access XPM directory %s\n"
+#~ msgstr "%s: не вдалося отримати доступ до каталогу XPM %s\n"
+
+#~ msgid "Available `%s' sizes:\n"
+#~ msgstr "Доступні розміри «%s»:\n"
+
+#~ msgid "Error: No `%s' files!\n"
+#~ msgstr "Помилка: немає файлів «%s»!\n"
+
+#~ msgid ""
+#~ "Warning: No DIR structure found on this system --\n"
+#~ " Unable to autosize for XPM/XIM pieces.\n"
+#~ " Please report this error to %s.\n"
+#~ " Include system type & operating system in message.\n"
+#~ msgstr ""
+#~ "Попередження: у системі не виявлено структури DIR —\n"
+#~ " автоматична зміна розмірів фігур XPM/XIM неможлива.\n"
+#~ " Будь ласка, повідомте про цю помилку на адресу %s.\n"
+#~ " Включіть до повідомлення дані щодо типу та назви операційної системи.\n"
+
+#~ msgid "Error %d loading icon image\n"
+#~ msgstr "Помилка %d під час завантаження зображення піктограми\n"
+
+#~ msgid "cancel"
+#~ msgstr "скасувати"
#~ msgid "recognized '%s' (%d) as variant %s\n"
#~ msgstr "розпізнано «%s» (%d) як варіант %s\n"
msgstr ""
"Project-Id-Version: GNU xboard master-20110507\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr ""
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr ""
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr ""
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr ""
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr ""
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr ""
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr ""
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr ""
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr ""
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr ""
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr ""
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr ""
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr ""
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr ""
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr ""
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr ""
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr ""
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr ""
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr ""
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr ""
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr ""
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr ""
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr ""
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr ""
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr ""
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr ""
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr ""
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr ""
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr ""
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr ""
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr ""
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr ""
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr ""
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr ""
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr ""
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr ""
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr ""
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr ""
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr ""
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr ""
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr ""
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr ""
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr ""
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr ""
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr ""
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr ""
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr ""
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr ""
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr ""
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr ""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr ""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr ""
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr ""
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr ""
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr ""
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr ""
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr ""
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr ""
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr ""
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr ""
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr ""
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr ""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr ""
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr ""
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr ""
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr ""
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr ""
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr ""
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr ""
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr ""
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr ""
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr ""
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr ""
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr ""
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr ""
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr ""
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr ""
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr ""
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr ""
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr ""
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr ""
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr ""
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr ""
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr ""
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr ""
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr ""
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr ""
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr ""
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr ""
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr ""
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr ""
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr ""
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr ""
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
+"or select 'Move Now'."
msgstr ""
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr ""
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr ""
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr ""
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr ""
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr ""
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr ""
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr ""
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr ""
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr ""
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr ""
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr ""
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr ""
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr ""
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+msgid "Wait until your turn."
msgstr ""
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr ""
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
msgid "Game list not loaded or empty"
msgstr ""
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr ""
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr ""
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr ""
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr ""
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr ""
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr ""
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr ""
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr ""
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr ""
msgid "Could not create book"
msgstr ""
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr " F7"
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr ""
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr ""
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr ""
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "Chương Trình Cờ Chung... Alt+Shift+U"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "Các Lựa Chọn Chung"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr ""
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr ""
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "Âm thanh"
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr ""
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr ""
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "Tự Động Đặt Cờ"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "Tự Động Xoay Bàn Cờ"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "Mù Quáng"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr ""
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "Đánh Dấu Nước Cuối"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "Đánh Dấu Với Mũi Tên"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "Đi Quân Với Chỉ Một Bấm"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr ""
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr ""
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "Bật Cửa Sổ Thoát Chương trình"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "Bật Cửa Sổ Lỗi Nước Đi"
-#: dialogs.c:382
+#: dialogs.c:423
msgid "Scores in Move List"
msgstr ""
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "Hiện Tọa Độ"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "Kiểm Tra Hợp Lệ"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
msgid "Zoom factor in Evaluation Graph:"
msgstr ""
-#: dialogs.c:400
-msgid "General Options"
-msgstr "Các Lựa Chọn Chung"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+msgid "Normal"
msgstr ""
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr ""
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "Mã"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+msgid "Bughouse"
msgstr ""
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr ""
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr ""
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr ""
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr ""
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr ""
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr ""
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr ""
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr ""
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr ""
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr ""
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr ""
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr ""
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr ""
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr ""
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr ""
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr ""
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr ""
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr ""
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr ""
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "Phân Xử Trắng Thắng"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr ""
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr ""
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr ""
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "Tự Động Hiện Bàn Cờ"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr ""
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr ""
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr ""
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr ""
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr ""
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr ""
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:665
msgid "Premove"
msgstr ""
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr ""
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr ""
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr ""
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
msgid "No games before year:"
msgstr ""
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "Các Lựa Chọn Tải Ván Cờ"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr ""
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr ""
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "Các Lựa Chọn Lưu Ván Cờ"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "Không âm thanh"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "Tiếng tút ngầm định"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr ""
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "Chơi"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr ""
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr ""
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr ""
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "Âm thanh"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr ""
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr ""
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr ""
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr ""
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr ""
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr ""
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr ""
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
#, fuzzy
msgid "Edit book"
msgstr "Soạn"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "Các Thẻ"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr ""
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr ""
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr ""
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr ""
-#: dialogs.c:1372
+#: dialogs.c:1459
msgid "randomize"
msgstr ""
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "Tráo Bên..."
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
#, fuzzy
msgid "Time-Odds factors:"
msgstr "Hệ số thời gian lẻ"
-#: dialogs.c:1416
+#: dialogs.c:1503
msgid "Engine #1"
msgstr ""
-#: dialogs.c:1417
+#: dialogs.c:1504
msgid "Engine #2 / Human"
msgstr ""
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr ""
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
#, fuzzy
msgid "Cancel"
msgstr "Bỏ"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "Vua"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "Chung..."
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "Mã"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "Tượng"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "Xe"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "Sĩ"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "Xe"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "Hoàng Hậu"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "Phong Cấp"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr ""
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr ""
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr ""
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
#, fuzzy
msgid "Game-list options"
msgstr "Các Lựa Chọn Tải Ván Cờ"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr ""
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr ""
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr ""
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr ""
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr ""
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "Trắng"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "Tốt"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "Tượng"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "Pháo"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr ""
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "Ô Trống"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "Xóa Bàn Cờ"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "Đen"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr ""
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "Soạn"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr ""
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr ""
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr ""
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr ""
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr ""
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "Hướng Dẫn"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "Lọc"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "Lọc"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "Lọc"
-#: dialogs.c:2447
+#: dialogs.c:2541
#, fuzzy
msgid "Contents of"
msgstr "Bình Chú"
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
msgstr ""
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, fuzzy, c-format
msgid "Engine Output"
msgstr "In Ra Của Các Chương Trình Cờ Alt+Shift+O"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr ""
msgid "Reading game file (%d)"
msgstr ""
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr ""
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
msgid "Failed to open file"
msgstr ""
msgstr "Tráo Bên..."
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "Tráo Bên..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr "Biến Mới... Alt+Shift+V"
#: menus.c:586
msgstr "Phân Xử Hòa"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "Chương Trình Cờ Chung... Alt+Shift+U"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "Đặt Tham Số Cho Chương Trình Chơi 1..."
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "Đặt Tham Số Cho Chương Trình Chơi 2..."
#: menus.c:690
msgstr "Hoãn Nước Đi Vừa Rồi Ctrl+X"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "Chung..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "Đặt Thời Gian... Alt+Shift+T"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr "Chương Trình Cờ Chung... Alt+Shift+U"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr "Phân Xử Kết Quả... Alt+Shift+J"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "Tải Ván Cờ... Alt+Shift+L"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "Lưu Ván Cờ... Alt+Shift+S"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "Danh Sách Ván Cờ"
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "Âm Thanh"
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
msgid "engine name"
msgstr ""
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
#, fuzzy
msgid "move"
msgstr "số giây mỗi nước"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr ""
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "Được"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "Bỏ"
+#~ msgid "ICS ..."
+#~ msgstr "ICS..."
+
+#~ msgid "cancel"
+#~ msgstr "Bỏ"
#~ msgid "New Game Ctrl+N"
#~ msgstr "Ván Mới Ctrl+N"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: GNU xboard 4.7.3\n"
+"Project-Id-Version: GNU xboard master-20140119\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr ""
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr ""
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr ""
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr ""
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr ""
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr ""
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr ""
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr ""
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr ""
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr ""
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr ""
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr ""
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr ""
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr ""
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr ""
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr ""
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr ""
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr ""
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr ""
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr ""
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr ""
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr ""
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr ""
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr ""
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr ""
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr ""
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr ""
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr ""
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr ""
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr ""
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr ""
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr ""
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr ""
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr ""
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr ""
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr ""
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr ""
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr ""
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr ""
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr ""
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr ""
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr ""
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr ""
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr ""
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr ""
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr ""
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr ""
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr ""
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr ""
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr ""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr ""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr ""
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr ""
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr ""
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr ""
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr ""
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr ""
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr ""
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr ""
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr ""
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr ""
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr ""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr ""
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr ""
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr ""
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr ""
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr ""
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr ""
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr ""
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr ""
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr ""
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr ""
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr ""
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr ""
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr ""
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr ""
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr ""
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr ""
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr ""
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr ""
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr ""
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr ""
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr ""
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr ""
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr ""
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr ""
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr ""
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr ""
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr ""
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr ""
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr ""
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr ""
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr ""
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
+"or select 'Move Now'."
msgstr ""
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr ""
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr ""
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr ""
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr ""
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr ""
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr ""
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr ""
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr ""
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr ""
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr ""
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr ""
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr ""
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr ""
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+msgid "Wait until your turn."
msgstr ""
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr ""
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
msgid "Game list not loaded or empty"
msgstr ""
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr ""
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr ""
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr ""
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr ""
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr ""
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr ""
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr ""
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr ""
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr ""
msgid "Could not create book"
msgstr ""
-#: dialogs.c:259
+#: dialogs.c:283
msgid "Tournament file: "
msgstr ""
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr ""
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr ""
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr ""
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+msgid "Common Engine"
+msgstr ""
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr ""
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr ""
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr ""
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+msgid "Tournament Options"
+msgstr ""
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr ""
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr ""
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr ""
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr ""
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr ""
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr ""
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr ""
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr ""
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr ""
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr ""
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr ""
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr ""
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr ""
-#: dialogs.c:382
+#: dialogs.c:423
msgid "Scores in Move List"
msgstr ""
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr ""
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr ""
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
msgid "Zoom factor in Evaluation Graph:"
msgstr ""
-#: dialogs.c:400
-msgid "General Options"
-msgstr ""
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+msgid "Normal"
msgstr ""
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr ""
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
+#: dialogs.c:457
+msgid "Knightmate"
msgstr ""
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+msgid "Bughouse"
msgstr ""
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr ""
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr ""
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr ""
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr ""
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr ""
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr ""
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr ""
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr ""
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr ""
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr ""
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr ""
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr ""
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr ""
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr ""
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr ""
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr ""
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr ""
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr ""
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr ""
-#: dialogs.c:556
+#: dialogs.c:639
msgid "Adjudicate non-ICS Games"
msgstr ""
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr ""
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr ""
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr ""
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr ""
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr ""
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr ""
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr ""
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr ""
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr ""
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr ""
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:665
msgid "Premove"
msgstr ""
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr ""
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr ""
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr ""
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
msgid "No games before year:"
msgstr ""
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr ""
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr ""
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr ""
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr ""
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr ""
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr ""
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr ""
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr ""
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr ""
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr ""
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr ""
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr ""
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr ""
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr ""
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr ""
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr ""
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr ""
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr ""
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr ""
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
msgid "Edit book"
msgstr ""
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr ""
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr ""
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr ""
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr ""
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr ""
-#: dialogs.c:1372
+#: dialogs.c:1459
msgid "randomize"
msgstr ""
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr ""
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
msgid "Time-Odds factors:"
msgstr ""
-#: dialogs.c:1416
+#: dialogs.c:1503
msgid "Engine #1"
msgstr ""
-#: dialogs.c:1417
+#: dialogs.c:1504
msgid "Engine #2 / Human"
msgstr ""
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr ""
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
msgid "Cancel"
msgstr ""
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr ""
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr ""
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr ""
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr ""
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr ""
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr ""
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr ""
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr ""
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr ""
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr ""
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr ""
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr ""
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
msgid "Game-list options"
msgstr ""
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr ""
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr ""
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr ""
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr ""
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr ""
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr ""
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr ""
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr ""
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr ""
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr ""
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr ""
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr ""
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr ""
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr ""
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr ""
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr ""
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr ""
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr ""
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr ""
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr ""
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr ""
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
msgid "Files:"
msgstr ""
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
msgid "Filename:"
msgstr ""
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
msgid "File type:"
msgstr ""
-#: dialogs.c:2447
+#: dialogs.c:2541
msgid "Contents of"
msgstr ""
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
msgstr ""
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, c-format
msgid "Engine Output"
msgstr ""
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr ""
msgid "Reading game file (%d)"
msgstr ""
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr ""
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
msgid "Failed to open file"
msgstr ""
msgstr ""
#: menus.c:583
-msgid "New Shuffle Game ..."
+msgid "New Shuffle Game..."
msgstr ""
#: menus.c:584
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr ""
#: menus.c:586
msgstr ""
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
+msgid "Load New 2nd Engine..."
msgstr ""
#: menus.c:687
-msgid "Engine #1 Settings ..."
+msgid "Engine #1 Settings..."
msgstr ""
#: menus.c:688
-msgid "Engine #2 Settings ..."
+msgid "Engine #2 Settings..."
msgstr ""
#: menus.c:690
msgstr ""
#: menus.c:700
-msgid "General ..."
+msgid "General..."
msgstr ""
#: menus.c:702
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr ""
#: menus.c:703
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr ""
#: menus.c:704
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr ""
#: menus.c:705
-msgid "ICS ..."
+msgid "ICS..."
msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+msgid "Load Game..."
msgstr ""
#: menus.c:708
-msgid "Save Game ..."
+msgid "Save Game..."
msgstr ""
#: menus.c:709
-msgid "Game List ..."
+msgid "Game List..."
msgstr ""
#: menus.c:710
-msgid "Sounds ..."
+msgid "Sounds..."
msgstr ""
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
msgid "engine name"
msgstr ""
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
msgid "move"
msgstr ""
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr ""
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr ""
-
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr ""
msgstr ""
"Project-Id-Version: GNU xboard master-20110507\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr ""
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "协议版本 %d 不被支持"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "非法的\"timeControl\"(时间控制)选项 %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "非法的\"searchTime\"(搜索时间)选项 %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "变体 %s 只在ICS模式下支持"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "未知的变体名 %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "启动国际象棋程序"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "棋局文件错误"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "局面文件错误"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "没有象棋程序时无法进行比赛"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "无法打开通讯端口 %s"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "无法连接主机 %s 端口 %s"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "未知的\"initialMode\"(初始模式)选项 %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "\"AnalyzeFile\"(分析文件)模式必须指定一个棋局文件"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "\"Analysis\"(分析)模式必须启动国际象棋引擎"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "\"Analysis\"(分析)模式无法在ICS模式下工作"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "\"MachineWhite\"(电脑执白)模式必须启动国际象棋引擎"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "\"MachineWhite\"(电脑执白)模式无法在ICS模式下运行"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "\"MachineBlack\"(电脑执黑)模式必须启动国际象棋引擎"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "\"MachineBlack\"(电脑执黑)模式无法在ICS模式下运行"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr "\"TwoMachines\"(分析)模式必须启动国际象棋引擎"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "\"TwoMachines\"(电脑对弈)模式无法在ICS模式下运行"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "\"Training\"(训练)模式必须指定一个棋局文件"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "发送信息给ICS时出错"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "读取键盘时出错"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "读取键盘时遇到文件尾"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "发送信息给显示器时出错"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "读取着法时出错,出现两个开头"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "读取着法时出错,嵌套错误"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "连接被ICS关闭"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "读取ICS信息时出错"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr "棋局太长,需要增加\"MAX_MOVES\"并重新编译"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "读取着法时出错,超出棋盘"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "无法解析从ICS读到的着法\"%s\""
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "say 内部错误,非法的\"moveType\"(着法类型) %d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "你在执黑"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "你在执白"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "轮到白方走棋"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "轮到黑方走棋"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "显示的局面不是当前局面"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "着法错误"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "棋局结束"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "着法错误"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "从%s机器读到不合理着法\"%s\""
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s 不支持分析功能"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr "不合理着法\"%s\" (%s国际象棋程序拒绝接受该着法)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "无法启动%s国际象棋程序 %s(在主机 %s 上),%s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "提示 %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr " *.*"
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "ICS输出不明确的着法\"%s\""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "ICS输出不明确的着法\"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "着法断开"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "变体 %s 不被 %s 所支持"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "无法启动'%s'"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "等待第一个国际象棋程序"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "等待第二个国际象棋程序"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr ""
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr ""
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "比赛 %s vs. %s: 最终比分 %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "不合理着法 %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "不明确的着法 %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "无法打开\"%s\""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "无法建立棋局列表"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "这条信息不包含更多的棋局"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "尚未有棋局载入"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "无法再后退了"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "棋局数量超出范围"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "无法搜索棋局文件"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "文件中没有找到棋局"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "文件中的FEN局面错误"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "棋局中没有着法"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "尚未有局面载入"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "无法搜索局面文件"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "文件中没有着到局面"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "轮到黑方走棋"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "轮到白方走棋"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr ""
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr ""
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "一步棋也没走过"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "No unfinished games"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "Failed to invoke cmail"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "Waiting for reply from opponent\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "Still need to make move for game\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "Still need to make moves for both games\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "Still need to make moves for all %d games\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "Still need to make a move for game %s\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "No unfinished games\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "Ready to send mail\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "Still need to make moves for games %s\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "编辑注释"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "编辑注释 %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "没有轮到白方走棋"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "没有轮到黑方走棋"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
+"or select 'Move Now'."
+msgstr "等待对手走棋"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "训练模式已关闭"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "训练模式已打开"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "棋局已经结束"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "注意:你正在进行棋局"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "注意:你正在旁观棋局"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "注意:你正在研究棋局"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "格子已放棋子"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "该着法没有待定的提议"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "对手没有超时"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "必须走完棋才能提和"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "没有分析棋局"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "暂停时不能复原棋局"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "轮到你走棋"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "等待对手走棋"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "没有可用的提示"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
#, fuzzy
msgid "Game list not loaded or empty"
msgstr "尚未有棋局载入"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "发送信息到%s国际象棋程序时出错"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "错误:%s国际象棋程序(%s)突然退出了"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "从%s国际象棋程序(%s)接收信息时出错"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "显示的着法不是当前着法"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "无法解析着法"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "双方都超时了"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "白方超时"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "黑方超时"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "剪贴板的FEN局面错误"
msgid "Could not create book"
msgstr "无法解析着法"
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr "封盘(J) F7"
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr ""
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr ""
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr ""
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "通用引擎设置(E)... Alt+Shift+U"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "常规选项"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
#, fuzzy
msgid "Replace Engine"
msgstr "引擎(N)"
-#: dialogs.c:285
+#: dialogs.c:312
#, fuzzy
msgid "Upgrade Engine"
msgstr "引擎(N)"
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "声音"
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "动画拖拽(D)"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "动画走棋(A)"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "自动超时判负(F) Ctrl+Shift+F"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "自动翻转棋盘(V)"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "盲棋(B)"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "与人对弈时隐藏思考细节"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "醒目提示上一着法(M)"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "用箭头突出移动"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "单击移动(M)"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "定期更新(分析模式)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "同步思考(N)"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "退出时提示(P)"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "提示错误着法(E)"
-#: dialogs.c:382
+#: dialogs.c:423
#, fuzzy
msgid "Scores in Move List"
msgstr "获取着法列表(G)"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "显示坐标(C)"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "检查着法合理性(L) Cl+Sh+L"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
#, fuzzy
msgid "Zoom factor in Evaluation Graph:"
msgstr "评价图"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "常规选项"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+msgid "Normal"
msgstr ""
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr ""
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "马"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+msgid "Bughouse"
msgstr ""
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr ""
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "警告: 第二个引擎(%s) 不支持此!"
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "变种"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "最大CPU数"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "Hash 大小(MB)"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr "EGTB 路径"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr "EGTB 大小(MB)"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr "库着法深度"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr "库变例"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr "引擎1有自用库"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr "通用引擎设置"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr "检测将杀(M)"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "验证引擎声明(V)"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr "子力不足时判和(I)"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr "一般和棋判决(T)"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "几着后判决"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "输/赢判决阈值"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "引擎 #1 是绝对分数"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "引擎 #2 是绝对分数"
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "裁决白赢 (W)"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "自动\"kibitz\"(A)"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "自动注释(A)"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "自动旁观(O)"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "自动改变棋盘大小(R)"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "后台观察(v)"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "双棋盘(D)"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "获取着法列表(G)"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "落子无声(Q)"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "可选对手图表(k)"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr "自动刷新图表(R)"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:665
msgid "Premove"
msgstr "预先走棋(P)"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "白方先行(W)"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "黑方先行(B)"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "提示"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "ICS设置"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
#, fuzzy
msgid "No games before year:"
msgstr "尚未有棋局载入"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "载入棋局选项"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr ""
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr ""
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "保存棋局选项"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "无声"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "默认声音"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr ""
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "播放"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr ""
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr ""
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr ""
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "声音"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr "黑子"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "白格"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "黑格"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "格子标记"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr "预先走棋标记"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr "黑白"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "棋盘选项"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
#, fuzzy
msgid "Edit book"
msgstr "编辑(E)"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "编辑标签(T)"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr ""
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr ""
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr ""
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "启动位置号码(S)"
-#: dialogs.c:1372
+#: dialogs.c:1459
#, fuzzy
msgid "randomize"
msgstr "随机"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "洗牌游戏(u)..."
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
#, fuzzy
msgid "Time-Odds factors:"
msgstr "时间倍数"
-#: dialogs.c:1416
+#: dialogs.c:1503
#, fuzzy
msgid "Engine #1"
msgstr "引擎(N)"
-#: dialogs.c:1417
+#: dialogs.c:1504
#, fuzzy
msgid "Engine #2 / Human"
msgstr "引擎1有自用库"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "发送信息给国际象棋程序时出错"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
#, fuzzy
msgid "Cancel"
msgstr "取消(C)"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "王"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "常规选项(G)..."
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "马"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "象"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "车"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "国师"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "宰相"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "后"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "升变"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr ""
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "向上"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "向下"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
#, fuzzy
msgid "Game-list options"
msgstr "载入棋局选项"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "错误"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "严重错误"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "退出"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr ""
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "注释"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "白方"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "兵"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "象"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "炮"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "降级"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "清空格子"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "清空棋盘"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "黑方"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "文件(F)"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "编辑(E)"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr "外观(V)"
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "模式(M)"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "行为(A)"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr "引擎(N)"
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "选项(O)"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "帮助(H)"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "文件(F)"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "过滤器"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "过滤器"
-#: dialogs.c:2447
+#: dialogs.c:2541
#, fuzzy
msgid "Contents of"
msgstr "编辑注释(C) *.*"
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
msgstr ""
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, fuzzy, c-format
msgid "Engine Output"
msgstr "引擎输出"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "NPS"
msgid "Reading game file (%d)"
msgstr "棋局文件错误"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr ""
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
#, fuzzy
msgid "Failed to open file"
msgstr "Failed to invoke cmail"
msgstr "洗牌游戏(u)..."
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "洗牌游戏(u)..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr "变种"
#: menus.c:586
msgstr "提请仲裁(D)"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "通用引擎设置(E)... Alt+Shift+U"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "引擎 #1 设置"
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "引擎 #2 设置"
#: menus.c:690
msgstr "悔棋(R) Ctrl+X"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "常规选项(G)..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "时限设置(T)... Alt+Shift+T"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr "通用引擎设置(E)... Alt+Shift+U"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr "判决(j)... Alt+Shift+J"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS选项..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "载入棋局选项(L)... Alt+Shift+L"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "保存棋局选项(S)... Alt+Shift+S"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "游戏列表..."
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "声音选项(D)..."
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
#, fuzzy
msgid "engine name"
msgstr "引擎(N)"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
#, fuzzy
msgid "move"
msgstr "着法"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "引擎输出"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "确定"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "取消(C)"
+#~ msgid "ICS ..."
+#~ msgstr "ICS选项..."
+
+#~ msgid "cancel"
+#~ msgstr "取消(C)"
#~ msgid "New Game Ctrl+N"
#~ msgstr "重置棋局(N) Ctrl+N"
msgstr ""
"Project-Id-Version: GNU xboard master-20110411\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr ""
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "通訊協定版本 %d 不被支持"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "非法的\"timeControl\"(時間控制)選項 %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "非法的\"searchTime\"(搜尋時間)選項 %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "變體 %s 只在ICS模式下支持"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "未知的變體名 %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "啟動國際象棋程式"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "棋局檔案錯誤"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "盤面檔案錯誤"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "沒有象棋程式時無法進行比賽"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "無法打開通訊連接埠 %s"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "無法連接主機 %s 連接埠 %s"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "未知的\"initialMode\"(初始模式)選項 %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "發送訊息給ICS時出錯"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "讀取鍵盤時出錯"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "讀取鍵盤時遇到檔案尾"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "發送訊息給顯示器時出錯"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "讀取著法時出錯,出現兩個開頭"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "讀取著法時出錯,巢狀錯誤"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "連接被ICS關閉"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "讀取ICS訊息時出錯"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "讀取著法時出錯,超出棋盤"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "無法解析從ICS讀到的著法\"%s\""
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "say 內部錯誤,非法的\"moveType\"(著法類型) %d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "你在執黑"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "你在執紅"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "輪到紅方走棋"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "輪到黑方走棋"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "顯示的盤面不是當前盤面"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "著法錯誤"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "棋局結束"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "著法錯誤"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "從%s機器讀到不合法著法\"%s\""
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s 不支持分析功能"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "提示 %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr "電腦同意和棋"
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "ICS輸出不明確的著法\"%s\""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "ICS輸出不明確的著法\"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "著法斷開"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "變體 %s 不被 %s 所支持"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "無法啟動'%s'"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "等待第一個國際象棋程式"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "等待第二個國際象棋程式"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
#, fuzzy
msgid "Bad tournament file"
msgstr "棋局檔案錯誤"
-#: backend.c:10472
+#: backend.c:10941
#, fuzzy
msgid "Waiting for other game(s)"
msgstr "等待第一個國際象棋程式"
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "不合法著法 %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "不明確的著法 %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "無法打開\"%s\""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "無法建立棋局列表"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "這條訊息不包含更多的棋局"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "尚未有棋局載入"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "無法再後退了"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "棋局數量超出範圍"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "無法搜尋棋局檔案"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "檔案中沒有找到棋局"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "檔案中的FEN盤面錯誤"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "棋局中沒有著法"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "尚未有盤面載入"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "無法搜尋盤面檔案"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "檔案中沒有找到盤面"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "輪到黑方走棋"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "輪到紅方走棋"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
#, fuzzy
msgid "Waiting for access to save file"
msgstr "等待第二個國際象棋程式"
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
#, fuzzy
msgid "Saving position"
msgstr "盤面檔案錯誤"
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "你尚未走棋"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "不存在未完成棋局"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "呼叫cmail失敗"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "等待對手回應\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "本棋局仍需走棋\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "兩棋局皆仍需走棋\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "所有 %d 棋局皆仍需走棋\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "棋局 %s 仍需走棋\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "不存在未完成棋局\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "準備送信就緒\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "棋局 %s 仍需走棋\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "編輯註解"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "編輯註解 %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "沒有輪到紅方走棋"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "沒有輪到黑方走棋"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
+"or select 'Move Now'."
+msgstr "等待對手走棋"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "訓練模式已關閉"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "訓練模式已打開"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "棋局已經結束"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "注意:你正在進行棋局"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "注意:你正在觀棋棋局"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "注意:你正在研究棋局"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "格子已有棋子"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "該著法沒有待定的提議"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "對手沒有超時"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "必須走完棋才能提和"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "沒有分析棋局"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "暫停時不能復原棋局"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "輪到你走棋"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "等待對手走棋"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "沒有可用的提示"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
#, fuzzy
msgid "Game list not loaded or empty"
msgstr "尚未有棋局載入"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "發送訊息到%s國際象棋程式時出錯"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "錯誤:%s國際象棋程式(%s)異常終止"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "從%s國際象棋程式(%s)接收訊息時出錯"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "顯示的著法不是當前著法"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "無法解析著法"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "雙方都超時了"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "紅方超時"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "黑方超時"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "剪貼簿的FEN盤面錯誤"
msgid "Could not create book"
msgstr "無法解析著法"
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr "封盤(J) F7"
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr ""
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
#, fuzzy
msgid "Default Number of Games in Match (or Pairing):"
msgstr "預設比賽對局數"
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
#, fuzzy
msgid "Save Tourney Games on:"
msgstr "儲存棋局選項"
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "通用引擎設定(E)... Alt+Shift+U"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "一般選項"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr ""
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr ""
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "聲音"
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "動畫拖曳(D)"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "動畫走棋(A)"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "自動超時判負(F) Ctrl+Shift+F"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "自動翻轉棋盤(V)"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "盲棋(B)"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "與人對弈時隱藏思考細節"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "標記上一著法(M)"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "用箭頭突出移動"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "單擊移動(M)"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "定期更新(分析模式)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "同步思考(N)"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "離開時提示(P)"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "提示錯誤著法(E)"
-#: dialogs.c:382
+#: dialogs.c:423
#, fuzzy
msgid "Scores in Move List"
msgstr "取得著法列表(G)"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "顯示坐標(C)"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "檢查著法合理性(L) Cl+Sh+L"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
#, fuzzy
msgid "Zoom factor in Evaluation Graph:"
msgstr "審局圖"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "一般選項"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+msgid "Normal"
msgstr ""
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr ""
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "馬"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+msgid "Bughouse"
msgstr ""
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr ""
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "警告: 第二個引擎(%s) 不支持此!"
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "變種"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "最大CPU數"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "雜湊表大小(MB)"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr "EGTB 路徑"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr "EGTB 大小(MB)"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr "庫著法深度"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr "庫變例"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr "引擎1有自用庫"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr "通用引擎設定"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr "檢測將殺(M)"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "驗證引擎聲明(V)"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr "子力不足時判和(I)"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr "簡易和棋判決(T)"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "幾著後判和"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "輸/贏判決門檻"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "引擎 #1 是絕對分數"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "引擎 #2 是絕對分數"
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "裁決紅贏 (W)"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "自動\"kibitz\"(A)"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "自動註解(A)"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "自動觀棋(O)"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "自動改變棋盤大小(R)"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "背景觀察(v)"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "雙棋盤(D)"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "取得著法列表(G)"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "落子無聲(Q)"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "可選對手圖表(k)"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr "自動刷新圖表(R)"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+#, fuzzy
+msgid "Quit after game"
+msgstr "等待第一個國際象棋程式"
+
+#: dialogs.c:665
msgid "Premove"
msgstr "預先走棋(P)"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "紅方先走(W)"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "黑方先走(B)"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "提示"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "ICS設定"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
#, fuzzy
msgid "No games before year:"
msgstr "尚未有棋局載入"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "載入棋局選項"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr ""
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr ""
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "儲存棋局選項"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "無聲"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "預設聲音"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr ""
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "播放"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr ""
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr ""
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr ""
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "聲音"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr "黑子"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "白格"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "黑格"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "格子標記"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr "預先走棋標記"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr "黑白"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "棋盤選項"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
#, fuzzy
msgid "Edit book"
msgstr "編輯(E)"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "編輯標籤(T)"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr ""
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr ""
-#: dialogs.c:1251
+#: dialogs.c:1338
#, fuzzy
msgid "Engine has no options"
msgstr "引擎1有自用庫"
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "啟動位置號碼(S)"
-#: dialogs.c:1372
+#: dialogs.c:1459
#, fuzzy
msgid "randomize"
msgstr "隨機"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "洗牌遊戲(u)..."
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
#, fuzzy
msgid "Time-Odds factors:"
msgstr "時間倍數"
-#: dialogs.c:1416
+#: dialogs.c:1503
#, fuzzy
msgid "Engine #1"
msgstr "引擎輸出"
-#: dialogs.c:1417
+#: dialogs.c:1504
#, fuzzy
msgid "Engine #2 / Human"
msgstr "引擎1有自用庫"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "發送訊息給國際象棋程式時出錯"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
#, fuzzy
msgid "Cancel"
msgstr "取消(C)"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "王"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "一般選項(G)..."
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "馬"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "象"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "車"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "國師"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "宰相"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "后"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "升變"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr ""
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "向上"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "向下"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
#, fuzzy
msgid "Game-list options"
msgstr "載入棋局選項"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "錯誤"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "嚴重錯誤"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "離開"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "資訊"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "註解"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "紅方"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "兵"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "象"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "炮"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "降級"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "清空格子"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "清空棋盤"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "黑方"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "檔案(F)"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "編輯(E)"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr ""
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "模式(M)"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "行為(A)"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr ""
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "選項(O)"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "說明(H)"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "檔案(F)"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "過濾器"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "過濾器"
-#: dialogs.c:2447
+#: dialogs.c:2541
#, fuzzy
msgid "Contents of"
msgstr "編輯註解(C) *.*"
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
msgstr ""
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, fuzzy, c-format
msgid "Engine Output"
msgstr "引擎輸出"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "NPS"
msgid "Reading game file (%d)"
msgstr "棋局檔案錯誤"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr ""
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
#, fuzzy
msgid "Failed to open file"
msgstr "呼叫cmail失敗"
msgstr "洗牌遊戲(u)..."
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "洗牌遊戲(u)..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr "變種"
#: menus.c:586
msgstr "提請仲裁(D)"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "通用引擎設定(E)... Alt+Shift+U"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "引擎 #1 設定"
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "引擎 #2 設定"
#: menus.c:690
msgstr "悔棋(R) Ctrl+X"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "一般選項(G)..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "時間設定(T)... Alt+Shift+T"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr "通用引擎設定(E)... Alt+Shift+U"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr "判決(j)... Alt+Shift+J"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS選項..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "載入棋局選項(L)... Alt+Shift+L"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "儲存棋局選項(S)... Alt+Shift+S"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "遊戲列表..."
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "聲音選項(D)..."
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
#, fuzzy
msgid "engine name"
msgstr "引擎輸出"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
#, fuzzy
msgid "move"
msgstr "著法"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "引擎輸出"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "確定"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "取消(C)"
+#~ msgid "ICS ..."
+#~ msgstr "ICS選項..."
+
+#~ msgid "cancel"
+#~ msgstr "取消(C)"
#~ msgid "New Game Ctrl+N"
#~ msgstr "開新棋局(N) Ctrl+N"
msgstr ""
"Project-Id-Version: GNU xboard master-20110507\n"
"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2014-01-05 12:51-0800\n"
+"POT-Creation-Date: 2014-01-19 22:19-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h:820
+#: args.h:833
#, c-format
msgid "%s in settings file\n"
msgstr ""
-#: args.h:830
+#: args.h:867
#, c-format
msgid "Bad integer value %s"
msgstr ""
-#: args.h:923 args.h:1170
+#: args.h:968 args.h:1229
#, c-format
msgid "Unrecognized argument %s"
msgstr ""
-#: args.h:954
+#: args.h:999
#, c-format
msgid "No value provided for argument %s"
msgstr ""
-#: args.h:1014
+#: args.h:1059
#, c-format
msgid "Incomplete \\ escape in value for %s"
msgstr ""
-#: args.h:1125
+#: args.h:1170
#, c-format
msgid "Failed to open indirection file %s"
msgstr ""
-#: args.h:1142
+#: args.h:1187
#, c-format
msgid "Unrecognized boolean argument value %s"
msgstr ""
#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:800
msgid "first"
msgstr ""
#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:803
msgid "second"
msgstr ""
-#: backend.c:827
+#: backend.c:885
#, c-format
msgid "protocol version %d not supported"
msgstr "通訊協定版本 %d 不被支持"
-#: backend.c:933
+#: backend.c:991
msgid "You did not specify the engine executable"
msgstr ""
-#: backend.c:989
+#: backend.c:1049
#, c-format
msgid "bad timeControl option %s"
msgstr "非法的\"timeControl\"(時間控制)選項 %s"
-#: backend.c:1004
+#: backend.c:1064
#, c-format
msgid "bad searchTime option %s"
msgstr "非法的\"searchTime\"(搜尋時間)選項 %s"
-#: backend.c:1110
+#: backend.c:1170
#, c-format
msgid "Variant %s supported only in ICS mode"
msgstr "變體 %s 只在ICS模式下支持"
-#: backend.c:1128
+#: backend.c:1188
#, c-format
msgid "Unknown variant name %s"
msgstr "未知的變體名 %s"
-#: backend.c:1375
+#: backend.c:1439
msgid "Starting chess program"
msgstr "啟動國際象棋程式"
-#: backend.c:1398
+#: backend.c:1462
msgid "Bad game file"
msgstr "棋局檔案錯誤"
-#: backend.c:1405
+#: backend.c:1469
msgid "Bad position file"
msgstr "盤面檔案錯誤"
-#: backend.c:1419
+#: backend.c:1483
msgid "Pick new game"
msgstr ""
-#: backend.c:1488
+#: backend.c:1552
msgid ""
-"You restarted an already completed tourney\n"
-"One more cycle will now be added to it\n"
-"Games commence in 10 sec"
+"You restarted an already completed tourney.\n"
+"One more cycle will now be added to it.\n"
+"Games commence in 10 sec."
msgstr ""
-#: backend.c:1495
+#: backend.c:1559
#, c-format
msgid "All games in tourney '%s' are already played or playing"
msgstr ""
-#: backend.c:1502
+#: backend.c:1566
msgid "Can't have a match with no chess programs"
msgstr "沒有象棋程式時無法進行比賽"
-#: backend.c:1539
+#: backend.c:1620
#, c-format
msgid "Could not open comm port %s"
msgstr "無法打開通訊連接埠 %s"
-#: backend.c:1542
+#: backend.c:1623
#, c-format
msgid "Could not connect to host %s, port %s"
msgstr "無法連接主機 %s 連接埠 %s"
-#: backend.c:1598
+#: backend.c:1679
#, c-format
msgid "Unknown initialMode %s"
msgstr "未知的\"initialMode\"(初始模式)選項 %s"
-#: backend.c:1624
+#: backend.c:1705
msgid "AnalyzeFile mode requires a game file"
msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案"
-#: backend.c:1651
+#: backend.c:1732
msgid "Analysis mode requires a chess engine"
msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎"
-#: backend.c:1655
+#: backend.c:1736
msgid "Analysis mode does not work with ICS mode"
msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作"
-#: backend.c:1666
+#: backend.c:1747
msgid "MachineWhite mode requires a chess engine"
msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎"
-#: backend.c:1671
+#: backend.c:1752
msgid "MachineWhite mode does not work with ICS mode"
msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行"
-#: backend.c:1678
+#: backend.c:1759
msgid "MachineBlack mode requires a chess engine"
msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎"
-#: backend.c:1683
+#: backend.c:1764
msgid "MachineBlack mode does not work with ICS mode"
msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行"
-#: backend.c:1690
+#: backend.c:1771
msgid "TwoMachines mode requires a chess engine"
msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎"
-#: backend.c:1695
+#: backend.c:1776
msgid "TwoMachines mode does not work with ICS mode"
msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行"
-#: backend.c:1706
+#: backend.c:1787
msgid "Training mode requires a game file"
msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案"
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1950 backend.c:2005 backend.c:2028 backend.c:2430
msgid "Error writing to ICS"
msgstr "發送訊息給ICS時出錯"
-#: backend.c:1884
+#: backend.c:1965
msgid "Error reading from keyboard"
msgstr "讀取鍵盤時出錯"
-#: backend.c:1887
+#: backend.c:1968
msgid "Got end of file from keyboard"
msgstr "讀取鍵盤時遇到檔案尾"
-#: backend.c:2192
+#: backend.c:2276
#, c-format
msgid "Unknown wild type %d"
msgstr ""
-#: backend.c:2263 usystem.c:329
+#: backend.c:2347 usystem.c:329
msgid "Error writing to display"
msgstr "發送訊息給顯示器時出錯"
-#: backend.c:3019
+#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers
+#: backend.c:3105
#, c-format
msgid "your opponent kibitzes: %s"
msgstr ""
-#: backend.c:3548
+#: backend.c:3634
msgid "Error gathering move list: two headers"
msgstr "讀取著法時出錯,出現兩個開頭"
-#: backend.c:3595
+#: backend.c:3681
msgid "Error gathering move list: nested"
msgstr "讀取著法時出錯,巢狀錯誤"
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12101 backend.c:13816 backend.c:13893
-#: backend.c:13939 backend.c:13945 backend.c:13950 backend.c:13955
+#: backend.c:3785 backend.c:4203 backend.c:4407 backend.c:4966 backend.c:4970
+#: backend.c:7073 backend.c:12577 backend.c:14306 backend.c:14383
+#: backend.c:14429 backend.c:14435 backend.c:14440 backend.c:14445
msgid "vs."
msgstr ""
-#: backend.c:3827
+#: backend.c:3913
msgid "Illegal move (rejected by ICS)"
msgstr ""
-#: backend.c:4165
+#: backend.c:4251
msgid "Connection closed by ICS"
msgstr "連接被ICS關閉"
-#: backend.c:4167
+#: backend.c:4253
msgid "Error reading from ICS"
msgstr "讀取ICS訊息時出錯"
-#: backend.c:4244
+#: backend.c:4330
#, c-format
msgid ""
"Failed to parse board string:\n"
"\"%s\""
msgstr ""
-#: backend.c:4253 backend.c:9756
+#: backend.c:4339 backend.c:10203
msgid "Game too long; increase MAX_MOVES and recompile"
msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯"
-#: backend.c:4372
+#: backend.c:4458
msgid "Error gathering move list: extra board"
msgstr "讀取著法時出錯,超出棋盤"
-#: backend.c:4804 backend.c:4826
+#: backend.c:4890 backend.c:4912
#, c-format
msgid "Couldn't parse move \"%s\" from ICS"
msgstr "無法解析從ICS讀到的著法\"%s\""
-#: backend.c:5063
+#: backend.c:5161
#, c-format
msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
msgstr "say 內部錯誤,非法的\"moveType\"(著法類型) %d (%d,%d-%d,%d)"
-#: backend.c:5133
+#: backend.c:5232
msgid "You cannot do this while you are playing or observing"
msgstr ""
-#: backend.c:6029
+#: backend.c:6174
msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
msgstr ""
-#: backend.c:6491
+#: backend.c:6664
msgid "You are playing Black"
msgstr "你在執黑"
-#: backend.c:6500 backend.c:6527
+#: backend.c:6673 backend.c:6700
msgid "You are playing White"
msgstr "你在執紅"
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14592
+#: backend.c:6682 backend.c:6708 backend.c:6828 backend.c:6853 backend.c:6869
+#: backend.c:15113
msgid "It is White's turn"
msgstr "輪到紅方走棋"
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14584
+#: backend.c:6686 backend.c:6712 backend.c:6836 backend.c:6859 backend.c:6890
+#: backend.c:15105
msgid "It is Black's turn"
msgstr "輪到黑方走棋"
-#: backend.c:6552
+#: backend.c:6725
msgid "Displayed position is not current"
msgstr "顯示的盤面不是當前盤面"
-#: backend.c:6790
+#: backend.c:6963
msgid "Illegal move"
msgstr "著法錯誤"
-#: backend.c:6857
+#: backend.c:7030
msgid "End of game"
msgstr "棋局結束"
-#: backend.c:6860
+#: backend.c:7033
msgid "Incorrect move"
msgstr "著法錯誤"
-#: backend.c:7169 backend.c:7296
+#: backend.c:7423 backend.c:7569
msgid "Pull pawn backwards to under-promote"
msgstr ""
-#: backend.c:7527
+#: backend.c:7532
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7820
msgid "Swiss tourney finished"
msgstr ""
-#: backend.c:8103
+#: backend.c:8336
+msgid "could not load EGBB library"
+msgstr ""
+
+#: backend.c:8339
+msgid "wrong EGBB version"
+msgstr ""
+
+#: backend.c:8452
msgid "Invalid pairing from pairing engine"
msgstr ""
-#: backend.c:8236
+#: backend.c:8603
#, c-format
msgid "Illegal move \"%s\" from %s machine"
msgstr "從%s機器讀到不合法著法\"%s\""
-#: backend.c:8457
+#: backend.c:8849
msgid "Bad FEN received from engine"
msgstr ""
-#: backend.c:8601 backend.c:13681 backend.c:13746
+#: backend.c:8950
+msgid "Engine did not send setup for non-standard variant"
+msgstr ""
+
+#: backend.c:9023 backend.c:14168 backend.c:14236
#, c-format
msgid "%s does not support analysis"
msgstr "%s 不支持分析功能"
-#: backend.c:8667
+#: backend.c:9089
#, c-format
msgid "Illegal move \"%s\" (rejected by %s chess program)"
msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)"
-#: backend.c:8694
+#: backend.c:9116
#, c-format
msgid "Failed to start %s chess program %s on %s: %s\n"
msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n"
-#: backend.c:8715
+#: backend.c:9137
#, c-format
msgid "Hint: %s"
msgstr "提示 %s"
-#: backend.c:8720
+#: backend.c:9142
#, c-format
msgid ""
"Illegal hint move \"%s\"\n"
"from %s chess program"
msgstr ""
-#: backend.c:8895
+#: backend.c:9317
msgid "Machine accepts your draw offer"
msgstr "電腦同意和棋"
-#: backend.c:8898
+#: backend.c:9320
msgid ""
-"Machine offers a draw\n"
-"Select Action / Draw to agree"
+"Machine offers a draw.\n"
+"Select Action / Draw to accept."
msgstr ""
-#: backend.c:8977
+#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone
+#: backend.c:9402
msgid "failed writing PV"
msgstr ""
-#: backend.c:9275
+#: backend.c:9701
#, c-format
msgid "Ambiguous move in ICS output: \"%s\""
msgstr "ICS輸出不明確的著法\"%s\""
-#: backend.c:9285
+#: backend.c:9711
#, c-format
msgid "Illegal move in ICS output: \"%s\""
msgstr "ICS輸出不明確的著法\"%s\""
-#: backend.c:9296
+#: backend.c:9722
msgid "Gap in move list"
msgstr "著法斷開"
-#: backend.c:9917 dialogs.c:460
+#: backend.c:10357
#, c-format
msgid "Variant %s not supported by %s"
msgstr "變體 %s 不被 %s 所支持"
-#: backend.c:10038
+#: backend.c:10364
+#, c-format
+msgid ", but %s is"
+msgstr ""
+
+#: backend.c:10506
#, c-format
msgid "Startup failure on '%s'"
msgstr "無法啟動'%s'"
-#: backend.c:10069
+#: backend.c:10537
msgid "Waiting for first chess program"
msgstr "等待第一個國際象棋程式"
-#: backend.c:10074 backend.c:13964
+#: backend.c:10542 backend.c:14454
msgid "Waiting for second chess program"
msgstr "等待第二個國際象棋程式"
-#: backend.c:10123
+#: backend.c:10591
msgid "Could not write on tourney file"
msgstr ""
-#: backend.c:10197
+#: backend.c:10665
msgid ""
"You cannot replace an engine while it is engaged!\n"
"Terminate its game first."
msgstr ""
-#: backend.c:10211
+#: backend.c:10679
msgid "No engine with the name you gave is installed"
msgstr ""
-#: backend.c:10213
+#: backend.c:10681
msgid ""
"First change an engine by editing the participants list\n"
"of the Tournament Options dialog"
msgstr ""
-#: backend.c:10214
+#: backend.c:10682
msgid "You can only change one engine at the time"
msgstr ""
-#: backend.c:10229 backend.c:10376
+#: backend.c:10697 backend.c:10845
#, c-format
msgid "No engine %s is installed"
msgstr ""
-#: backend.c:10249
+#: backend.c:10717
msgid ""
"You must supply a tournament file,\n"
"for storing the tourney progress"
msgstr ""
-#: backend.c:10259
+#: backend.c:10727
msgid "Not enough participants"
msgstr ""
-#: backend.c:10460
+#: backend.c:10929
msgid "Bad tournament file"
msgstr ""
-#: backend.c:10472
+#: backend.c:10941
msgid "Waiting for other game(s)"
msgstr ""
-#: backend.c:10485
+#: backend.c:10954
msgid "No pairing engine specified"
msgstr ""
-#: backend.c:10962
+#: backend.c:11430
#, c-format
msgid "Match %s vs. %s: final score %d-%d-%d"
msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d"
-#: backend.c:11424 backend.c:11455
+#: backend.c:11897 backend.c:11928
#, c-format
msgid "Illegal move: %d.%s%s"
msgstr "不合法著法 %d.%s%s"
-#: backend.c:11444
+#: backend.c:11917
#, c-format
msgid "Ambiguous move: %d.%s%s"
msgstr "不明確的著法 %d.%s%s"
-#: backend.c:11497 backend.c:12524 backend.c:12717 backend.c:13078
+#: backend.c:11971 backend.c:13010 backend.c:13203 backend.c:13567
#, c-format
msgid "Can't open \"%s\""
msgstr "無法打開\"%s\""
-#: backend.c:11509 menus.c:116
+#: backend.c:11983 menus.c:116
msgid "Cannot build game list"
msgstr "無法建立棋局列表"
-#: backend.c:11594
+#: backend.c:12068
msgid "No more games in this message"
msgstr "這條訊息不包含更多的棋局"
-#: backend.c:11634
+#: backend.c:12108
msgid "No game has been loaded yet"
msgstr "尚未有棋局載入"
-#: backend.c:11638 backend.c:12505 ngamelist.c:129
+#: backend.c:12112 backend.c:12991 ngamelist.c:129
msgid "Can't back up any further"
msgstr "無法再後退了"
-#: backend.c:12077
+#: backend.c:12553
msgid "Game number out of range"
msgstr "棋局數量超出範圍"
-#: backend.c:12088
+#: backend.c:12564
msgid "Can't seek on game file"
msgstr "無法搜尋棋局檔案"
-#: backend.c:12146
+#: backend.c:12622
msgid "Game not found in file"
msgstr "檔案中沒有找到棋局"
-#: backend.c:12274 backend.c:12601
+#: backend.c:12751 backend.c:13087
msgid "Bad FEN position in file"
msgstr "檔案中的FEN盤面錯誤"
-#: backend.c:12426
+#: backend.c:12903
msgid "No moves in game"
msgstr "棋局中沒有著法"
-#: backend.c:12501
+#: backend.c:12987
msgid "No position has been loaded yet"
msgstr "尚未有盤面載入"
-#: backend.c:12562 backend.c:12573
+#: backend.c:13048 backend.c:13059
msgid "Can't seek on position file"
msgstr "無法搜尋盤面檔案"
-#: backend.c:12580 backend.c:12592
+#: backend.c:13066 backend.c:13078
msgid "Position not found in file"
msgstr "檔案中沒有找到盤面"
-#: backend.c:12632
+#: backend.c:13118
msgid "Black to play"
msgstr "輪到黑方走棋"
-#: backend.c:12635
+#: backend.c:13121
msgid "White to play"
msgstr "輪到紅方走棋"
-#: backend.c:12722 backend.c:13083
+#: backend.c:13208 backend.c:13572
msgid "Waiting for access to save file"
msgstr ""
-#: backend.c:12724
+#: backend.c:13210
msgid "Saving game"
msgstr ""
-#: backend.c:12725
+#: backend.c:13211
msgid "Bad Seek"
msgstr ""
-#: backend.c:13085
+#: backend.c:13574
msgid "Saving position"
msgstr ""
-#: backend.c:13211
+#: backend.c:13700
msgid ""
"You have edited the game history.\n"
"Use Reload Same Game and make your move again."
msgstr ""
-#: backend.c:13216
+#: backend.c:13705
msgid ""
"You have entered too many moves.\n"
"Back up to the correct position and try again."
msgstr ""
-#: backend.c:13221
+#: backend.c:13710
msgid ""
"Displayed position is not current.\n"
"Step forward to the correct position and try again."
msgstr ""
-#: backend.c:13268
+#: backend.c:13757
msgid "You have not made a move yet"
msgstr "你尚未走棋"
-#: backend.c:13289
+#: backend.c:13778
msgid ""
"The cmail message is not loaded.\n"
"Use Reload CMail Message and make your move again."
msgstr ""
-#: backend.c:13294
+#: backend.c:13783
msgid "No unfinished games"
msgstr "不存在未完成棋局"
-#: backend.c:13300
+#: backend.c:13789
#, c-format
msgid ""
"You have already mailed a move.\n"
"on the command line."
msgstr ""
-#: backend.c:13315
+#: backend.c:13804
msgid "Failed to invoke cmail"
msgstr "呼叫cmail失敗"
-#: backend.c:13377
+#: backend.c:13866
#, c-format
msgid "Waiting for reply from opponent\n"
msgstr "等待對手回應\n"
-#: backend.c:13399
+#: backend.c:13888
#, c-format
msgid "Still need to make move for game\n"
msgstr "本棋局仍需走棋\n"
-#: backend.c:13403
+#: backend.c:13892
#, c-format
msgid "Still need to make moves for both games\n"
msgstr "兩棋局皆仍需走棋\n"
-#: backend.c:13407
+#: backend.c:13896
#, c-format
msgid "Still need to make moves for all %d games\n"
msgstr "所有 %d 棋局皆仍需走棋\n"
-#: backend.c:13414
+#: backend.c:13903
#, c-format
msgid "Still need to make a move for game %s\n"
msgstr "棋局 %s 仍需走棋\n"
-#: backend.c:13420
+#: backend.c:13909
#, c-format
msgid "No unfinished games\n"
msgstr "不存在未完成棋局\n"
-#: backend.c:13422
+#: backend.c:13911
#, c-format
msgid "Ready to send mail\n"
msgstr "準備送信就緒\n"
-#: backend.c:13427
+#: backend.c:13916
#, c-format
msgid "Still need to make moves for games %s\n"
msgstr "棋局 %s 仍需走棋\n"
-#: backend.c:13631
+#: backend.c:14118
msgid "Edit comment"
msgstr "編輯註解"
-#: backend.c:13633
+#: backend.c:14120
#, c-format
msgid "Edit comment on %d.%s%s"
msgstr "編輯註解 %d.%s%s"
-#: backend.c:13688
+#: backend.c:14175
#, c-format
msgid "You are not observing a game"
msgstr ""
-#: backend.c:13796
+#: backend.c:14286
msgid "It is not White's turn"
msgstr "沒有輪到紅方走棋"
-#: backend.c:13877
+#: backend.c:14367
msgid "It is not Black's turn"
msgstr "沒有輪到黑方走棋"
-#: backend.c:13985
+#: backend.c:14475
#, c-format
msgid "Starting %s chess program"
msgstr ""
-#: backend.c:14013 backend.c:15127
+#: backend.c:14503 backend.c:15648
+#, fuzzy
msgid ""
"Wait until your turn,\n"
-"or select Move Now"
-msgstr ""
+"or select 'Move Now'."
+msgstr "等待對手走棋"
-#: backend.c:14147
+#: backend.c:14638
msgid "Training mode off"
msgstr "訓練模式已關閉"
-#: backend.c:14155
+#: backend.c:14646
msgid "Training mode on"
msgstr "訓練模式已打開"
-#: backend.c:14158
+#: backend.c:14649
msgid "Already at end of game"
msgstr "棋局已經結束"
-#: backend.c:14238
+#: backend.c:14729
msgid "Warning: You are still playing a game"
msgstr "注意:你正在進行棋局"
-#: backend.c:14241
+#: backend.c:14732
msgid "Warning: You are still observing a game"
msgstr "注意:你正在觀棋棋局"
-#: backend.c:14244
+#: backend.c:14735
msgid "Warning: You are still examining a game"
msgstr "注意:你正在研究棋局"
-#: backend.c:14311
+#: backend.c:14802
msgid "Click clock to clear board"
msgstr ""
-#: backend.c:14321
+#: backend.c:14812
msgid "Close ICS engine analyze..."
msgstr ""
-#: backend.c:14609
+#: backend.c:15130
msgid "That square is occupied"
msgstr "格子已有棋子"
-#: backend.c:14633 backend.c:14659
+#: backend.c:15154 backend.c:15180
msgid "There is no pending offer on this move"
msgstr "該著法沒有待定的提議"
-#: backend.c:14695 backend.c:14706
+#: backend.c:15216 backend.c:15227
msgid "Your opponent is not out of time"
msgstr "對手沒有超時"
-#: backend.c:14772
+#: backend.c:15293
msgid "You must make your move before offering a draw"
msgstr "必須走完棋才能提和"
-#: backend.c:15109
+#: backend.c:15630
msgid "You are not examining a game"
msgstr "沒有分析棋局"
-#: backend.c:15113
+#: backend.c:15634
msgid "You can't revert while pausing"
msgstr "暫停時不能復原棋局"
-#: backend.c:15167 backend.c:15174
+#: backend.c:15688 backend.c:15695
msgid "It is your turn"
msgstr "輪到你走棋"
-#: backend.c:15225 backend.c:15232 backend.c:15285 backend.c:15292
-msgid "Wait until your turn"
+#: backend.c:15746 backend.c:15753 backend.c:15806 backend.c:15813
+#, fuzzy
+msgid "Wait until your turn."
msgstr "等待對手走棋"
-#: backend.c:15237
+#: backend.c:15758
msgid "No hint available"
msgstr "沒有可用的提示"
-#: backend.c:15253 ngamelist.c:355
+#: backend.c:15774 ngamelist.c:355
#, fuzzy
msgid "Game list not loaded or empty"
msgstr "尚未有棋局載入"
-#: backend.c:15260
+#: backend.c:15781
msgid "Book file exists! Try again for overwrite."
msgstr ""
-#: backend.c:15738
+#: backend.c:16259
#, c-format
msgid "Error writing to %s chess program"
msgstr "發送訊息到%s國際象棋程式時出錯"
-#: backend.c:15741 backend.c:15772
+#: backend.c:16262 backend.c:16293
#, c-format
msgid "%s program exits in draw position (%s)"
msgstr ""
-#: backend.c:15767
+#: backend.c:16288
#, c-format
msgid "Error: %s chess program (%s) exited unexpectedly"
msgstr "錯誤:%s國際象棋程式(%s)異常終止"
-#: backend.c:15785
+#: backend.c:16306
#, c-format
msgid "Error reading from %s chess program (%s)"
msgstr "從%s國際象棋程式(%s)接收訊息時出錯"
-#: backend.c:16187
+#: backend.c:16730
#, c-format
msgid "%s engine has too many options\n"
msgstr ""
-#: backend.c:16343
+#: backend.c:16886
msgid "Displayed move is not current"
msgstr "顯示的著法不是當前著法"
-#: backend.c:16352
+#: backend.c:16895
msgid "Could not parse move"
msgstr "無法解析著法"
-#: backend.c:16477 backend.c:16499
+#: backend.c:17020 backend.c:17042
msgid "Both flags fell"
msgstr "雙方都超時了"
-#: backend.c:16479
+#: backend.c:17022
msgid "White's flag fell"
msgstr "紅方超時"
-#: backend.c:16501
+#: backend.c:17044
msgid "Black's flag fell"
msgstr "黑方超時"
-#: backend.c:16632
+#: backend.c:17175
msgid "Clock adjustment not allowed in auto-flag mode"
msgstr ""
-#: backend.c:17467
+#: backend.c:18025
msgid "Bad FEN position in clipboard"
msgstr "剪貼簿的FEN盤面錯誤"
msgid "Could not create book"
msgstr "無法解析著法"
-#: dialogs.c:259
+#: dialogs.c:283
#, fuzzy
msgid "Tournament file: "
msgstr "封盤(J) F7"
-#: dialogs.c:260
-msgid "Sync after round"
+#: dialogs.c:284
+msgid "For concurrent playing of tourney with multiple XBoards:"
msgstr ""
-#: dialogs.c:261
-msgid " (for concurrent playing of a single"
+#: dialogs.c:285
+msgid "Sync after round"
msgstr ""
-#: dialogs.c:262
+#: dialogs.c:286
msgid "Sync after cycle"
msgstr ""
-#: dialogs.c:263
-msgid " tourney with multiple XBoards)"
-msgstr ""
-
-#: dialogs.c:264
+#: dialogs.c:287
msgid "Tourney participants:"
msgstr ""
-#: dialogs.c:265
+#: dialogs.c:288
msgid "Select Engine:"
msgstr ""
-#: dialogs.c:273
+#: dialogs.c:296
msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
msgstr ""
-#: dialogs.c:274
+#: dialogs.c:297
msgid "Number of tourney cycles (or Swiss rounds):"
msgstr ""
-#: dialogs.c:275
+#: dialogs.c:298
msgid "Default Number of Games in Match (or Pairing):"
msgstr ""
-#: dialogs.c:276
+#: dialogs.c:299
msgid "Pause between Match Games (msec):"
msgstr ""
-#: dialogs.c:277
+#: dialogs.c:300
msgid "Save Tourney Games on:"
msgstr ""
-#: dialogs.c:278
+#: dialogs.c:301
msgid "Game File with Opening Lines:"
msgstr ""
-#: dialogs.c:279
+#: dialogs.c:302
msgid "Game Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:280
+#: dialogs.c:303
msgid "File with Start Positions:"
msgstr ""
-#: dialogs.c:281
+#: dialogs.c:304
msgid "Position Number (-1 or -2 = Auto-Increment):"
msgstr ""
-#: dialogs.c:282
+#: dialogs.c:305
msgid "Rewind Index after this many Games (0 = never):"
msgstr ""
-#: dialogs.c:283
+#: dialogs.c:306
msgid "Disable own engine books by default"
msgstr ""
-#: dialogs.c:284
+#: dialogs.c:307 dialogs.c:1565
+msgid "Time Control"
+msgstr ""
+
+#: dialogs.c:308
+#, fuzzy
+msgid "Common Engine"
+msgstr "通用引擎設定(E)... Alt+Shift+U"
+
+#: dialogs.c:309 dialogs.c:441
+msgid "General Options"
+msgstr "一般選項"
+
+#: dialogs.c:310
+msgid "Continue Later"
+msgstr ""
+
+#: dialogs.c:311
msgid "Replace Engine"
msgstr ""
-#: dialogs.c:285
+#: dialogs.c:312
msgid "Upgrade Engine"
msgstr ""
-#: dialogs.c:286
+#: dialogs.c:313
msgid "Clone Tourney"
msgstr ""
-#: dialogs.c:316
+#: dialogs.c:351
msgid "First you must specify an existing tourney file to clone"
msgstr ""
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:367 dialogs.c:1407
msgid "# no engines are installed"
msgstr ""
-#: dialogs.c:344
-msgid "Match Options"
+#: dialogs.c:375
+msgid "Internal error: PARTICIPANTS set wrong"
msgstr ""
-#: dialogs.c:363
+#: dialogs.c:383
+#, fuzzy
+msgid "Tournament Options"
+msgstr "聲音"
+
+#: dialogs.c:402
msgid "Absolute Analysis Scores"
msgstr ""
-#: dialogs.c:364
+#: dialogs.c:403
msgid "Almost Always Queen (Detour Under-Promote)"
msgstr ""
-#: dialogs.c:365 menus.c:714
+#: dialogs.c:404 menus.c:714
msgid "Animate Dragging"
msgstr "動畫拖曳(D)"
-#: dialogs.c:366 menus.c:715
+#: dialogs.c:405 menus.c:715
msgid "Animate Moving"
msgstr "動畫走棋(A)"
-#: dialogs.c:367 menus.c:716
+#: dialogs.c:406 menus.c:716
msgid "Auto Flag"
msgstr "自動超時判負(F) Ctrl+Shift+F"
-#: dialogs.c:368 menus.c:717
+#: dialogs.c:407 menus.c:717
msgid "Auto Flip View"
msgstr "自動翻轉棋盤(V)"
-#: dialogs.c:369 menus.c:718
+#: dialogs.c:408 menus.c:718
msgid "Blindfold"
msgstr "盲棋(B)"
-#: dialogs.c:370
+#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position
+#: dialogs.c:410
msgid "Drop Menu"
msgstr ""
-#: dialogs.c:371
+#: dialogs.c:411
msgid "Enable Variation Trees"
msgstr ""
-#: dialogs.c:372
+#: dialogs.c:412
+msgid "Headers in Engine Output Window"
+msgstr ""
+
+#: dialogs.c:413
msgid "Hide Thinking from Human"
msgstr "與人對弈時隱藏思考細節"
-#: dialogs.c:373 menus.c:723
+#: dialogs.c:414 menus.c:723
msgid "Highlight Last Move"
msgstr "標記上一著法(M)"
-#: dialogs.c:374
+#: dialogs.c:415
msgid "Highlight with Arrow"
msgstr "用箭頭突出移動"
-#: dialogs.c:375 menus.c:726
+#: dialogs.c:416 menus.c:726
msgid "One-Click Moving"
msgstr "單擊移動(M)"
-#: dialogs.c:376
+#: dialogs.c:417
msgid "Periodic Updates (in Analysis Mode)"
msgstr "定期更新(分析模式)"
-#: dialogs.c:378
+#: dialogs.c:419
msgid "Play Move(s) of Clicked PV (Analysis)"
msgstr ""
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:420 dialogs.c:597 menus.c:728
msgid "Ponder Next Move"
msgstr "同步思考(N)"
-#: dialogs.c:380
+#: dialogs.c:421
msgid "Popup Exit Messages"
msgstr "離開時提示(P)"
-#: dialogs.c:381 menus.c:730
+#: dialogs.c:422 menus.c:730
msgid "Popup Move Errors"
msgstr "提示錯誤著法(E)"
-#: dialogs.c:382
+#: dialogs.c:423
#, fuzzy
msgid "Scores in Move List"
msgstr "取得著法列表(G)"
-#: dialogs.c:383
+#: dialogs.c:424
msgid "Show Coordinates"
msgstr "顯示坐標(C)"
-#: dialogs.c:384
+#: dialogs.c:425
msgid "Show Target Squares"
msgstr ""
-#: dialogs.c:385
+#: dialogs.c:426
msgid "Sticky Windows"
msgstr ""
-#: dialogs.c:386 menus.c:733
+#: dialogs.c:427 menus.c:733
msgid "Test Legality"
msgstr "檢查著法合理性(L) Cl+Sh+L"
-#: dialogs.c:387
+#: dialogs.c:428
msgid "Top-Level Dialogs"
msgstr ""
-#: dialogs.c:388
+#: dialogs.c:429
msgid "Flash Moves (0 = no flashing):"
msgstr ""
-#: dialogs.c:389
+#: dialogs.c:430
msgid "Flash Rate (high = fast):"
msgstr ""
-#: dialogs.c:390
+#: dialogs.c:431
msgid "Animation Speed (high = slow):"
msgstr ""
-#: dialogs.c:391
+#: dialogs.c:432
#, fuzzy
msgid "Zoom factor in Evaluation Graph:"
msgstr "審局圖"
-#: dialogs.c:400
-msgid "General Options"
-msgstr "一般選項"
-
-#: dialogs.c:410
-msgid "normal"
+#: dialogs.c:452
+msgid "Normal"
msgstr ""
-#: dialogs.c:411
-msgid "makruk"
+#: dialogs.c:453
+msgid "Makruk"
msgstr ""
-#: dialogs.c:412
+#: dialogs.c:454
msgid "FRC"
msgstr ""
-#: dialogs.c:413
-msgid "shatranj"
+#: dialogs.c:455
+msgid "Shatranj"
msgstr ""
-#: dialogs.c:414
-msgid "wild castle"
+#: dialogs.c:456
+msgid "Wild castle"
msgstr ""
-#: dialogs.c:415
-msgid "knightmate"
-msgstr ""
+#: dialogs.c:457
+#, fuzzy
+msgid "Knightmate"
+msgstr "馬"
-#: dialogs.c:416
-msgid "no castle"
+#: dialogs.c:458
+msgid "No castle"
msgstr ""
-#: dialogs.c:417
-msgid "cylinder *"
+#: dialogs.c:459
+msgid "Cylinder *"
msgstr ""
-#: dialogs.c:418
+#: dialogs.c:460
msgid "3-checks"
msgstr ""
-#: dialogs.c:419
+#: dialogs.c:461
msgid "berolina *"
msgstr ""
-#: dialogs.c:420
+#: dialogs.c:462
msgid "atomic"
msgstr ""
-#: dialogs.c:421
+#: dialogs.c:463
msgid "two kings"
msgstr ""
-#: dialogs.c:422
+#: dialogs.c:464
+msgid " "
+msgstr ""
+
+#: dialogs.c:465
+msgid "Spartan"
+msgstr ""
+
+#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
msgstr ""
-#: dialogs.c:423
+#: dialogs.c:467
msgid "Number of Board Ranks:"
msgstr ""
-#: dialogs.c:424
+#: dialogs.c:468
msgid "Number of Board Files:"
msgstr ""
-#: dialogs.c:425
+#: dialogs.c:469
msgid "Holdings Size:"
msgstr ""
-#: dialogs.c:429
-msgid "fairy"
+#: dialogs.c:471
+msgid ""
+"Variants marked with * can only be played\n"
+"with legality testing off."
msgstr ""
-#: dialogs.c:430
+#: dialogs.c:473
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:474
msgid "Great Shatranj (10x8)"
msgstr ""
-#: dialogs.c:431
+#: dialogs.c:475
msgid "Seirawan"
msgstr ""
-#: dialogs.c:432
-msgid "falcon (10x8)"
+#: dialogs.c:476
+msgid "Falcon (10x8)"
msgstr ""
-#: dialogs.c:433
+#: dialogs.c:477
msgid "Superchess"
msgstr ""
-#: dialogs.c:434
+#: dialogs.c:478
msgid "Capablanca (10x8)"
msgstr ""
-#: dialogs.c:435
-msgid "crazyhouse"
+#: dialogs.c:479
+msgid "Crazyhouse"
msgstr ""
-#: dialogs.c:436
+#: dialogs.c:480
msgid "Gothic (10x8)"
msgstr ""
-#: dialogs.c:437
-msgid "bughouse"
+#: dialogs.c:481
+msgid "Bughouse"
msgstr ""
-#: dialogs.c:438
-msgid "janus (10x8)"
+#: dialogs.c:482
+msgid "Janus (10x8)"
msgstr ""
-#: dialogs.c:439
-msgid "suicide"
+#: dialogs.c:483
+msgid "Suicide"
msgstr ""
-#: dialogs.c:440
+#: dialogs.c:484
msgid "CRC (10x8)"
msgstr ""
-#: dialogs.c:441
+#: dialogs.c:485
msgid "give-away"
msgstr ""
-#: dialogs.c:442
+#: dialogs.c:486
msgid "grand (10x10)"
msgstr ""
-#: dialogs.c:443
+#: dialogs.c:487
msgid "losers"
msgstr ""
-#: dialogs.c:444
+#: dialogs.c:488
msgid "shogi (9x9)"
msgstr ""
-#: dialogs.c:445
-msgid "Spartan"
+#: dialogs.c:489
+msgid "fairy"
msgstr ""
-#: dialogs.c:446
+#: dialogs.c:490
msgid "xiangqi (9x10)"
msgstr ""
-#: dialogs.c:447
-msgid " "
+#: dialogs.c:491
+msgid "mighty lion"
msgstr ""
-#: dialogs.c:448
+#: dialogs.c:492
msgid "courier (12x8)"
msgstr ""
-#: dialogs.c:465
+#: dialogs.c:493
+msgid "chu chess (10x10)"
+msgstr ""
+
+#: dialogs.c:494
+msgid "chu shogi (12x12)"
+msgstr ""
+
+#: dialogs.c:526
#, c-format
msgid "Warning: second engine (%s) does not support this!"
msgstr "警告: 第二個引擎(%s) 不支持此!"
-#: dialogs.c:488
+#: dialogs.c:554
#, c-format
-msgid "Only bughouse is not available in viewer mode"
+msgid "Only bughouse is not available in viewer mode."
msgstr ""
-#: dialogs.c:489
+#: dialogs.c:555
#, c-format
msgid ""
-"All variants not supported by first engine\n"
-"(currently %s) are disabled"
+"All variants not supported by the first engine\n"
+"(currently %s) are disabled."
msgstr ""
-#: dialogs.c:490
+#: dialogs.c:572
msgid "New Variant"
msgstr "變種"
-#: dialogs.c:515
+#: dialogs.c:598
msgid "Maximum Number of CPUs per Engine:"
msgstr "最大CPU數"
-#: dialogs.c:516
+#: dialogs.c:599
msgid "Polygot Directory:"
msgstr ""
-#: dialogs.c:517
+#: dialogs.c:600
msgid "Hash-Table Size (MB):"
msgstr "雜湊表大小(MB)"
-#: dialogs.c:518
+#: dialogs.c:601
msgid "Nalimov EGTB Path:"
msgstr "EGTB 路徑"
-#: dialogs.c:519
+#: dialogs.c:602
msgid "EGTB Cache Size (MB):"
msgstr "EGTB 大小(MB)"
-#: dialogs.c:520
+#: dialogs.c:603
msgid "Use GUI Book"
msgstr ""
-#: dialogs.c:521
+#: dialogs.c:604
msgid "Opening-Book Filename:"
msgstr ""
-#: dialogs.c:522
+#: dialogs.c:605
msgid "Book Depth (moves):"
msgstr "庫著法深度"
-#: dialogs.c:523
+#: dialogs.c:606
msgid "Book Variety (0) vs. Strength (100):"
msgstr "庫變例"
-#: dialogs.c:524
+#: dialogs.c:607
msgid "Engine #1 Has Own Book"
msgstr "引擎1有自用庫"
-#: dialogs.c:525
+#: dialogs.c:608
msgid "Engine #2 Has Own Book "
msgstr ""
-#: dialogs.c:534
+#: dialogs.c:617
msgid "Common Engine Settings"
msgstr "通用引擎設定"
-#: dialogs.c:540
+#: dialogs.c:623
msgid "Detect all Mates"
msgstr "檢測將殺(M)"
-#: dialogs.c:541
+#: dialogs.c:624
msgid "Verify Engine Result Claims"
msgstr "驗證引擎聲明(V)"
-#: dialogs.c:542
+#: dialogs.c:625
msgid "Draw if Insufficient Mating Material"
msgstr "子力不足時判和(I)"
-#: dialogs.c:543
+#: dialogs.c:626
msgid "Adjudicate Trivial Draws (3-Move Delay)"
msgstr "簡易和棋判決(T)"
-#: dialogs.c:544
+#: dialogs.c:627
msgid "N-Move Rule:"
msgstr ""
-#: dialogs.c:545
+#: dialogs.c:628
msgid "N-fold Repeats:"
msgstr ""
-#: dialogs.c:546
+#: dialogs.c:629
msgid "Draw after N Moves Total:"
msgstr "幾著後判和"
-#: dialogs.c:547
+#: dialogs.c:630
msgid "Win / Loss Threshold:"
msgstr "輸/贏判決門檻"
-#: dialogs.c:548
+#: dialogs.c:631
msgid "Negate Score of Engine #1"
msgstr "引擎 #1 是絕對分數"
-#: dialogs.c:549
+#: dialogs.c:632
msgid "Negate Score of Engine #2"
msgstr "引擎 #2 是絕對分數"
-#: dialogs.c:556
+#: dialogs.c:639
#, fuzzy
msgid "Adjudicate non-ICS Games"
msgstr "裁決紅贏 (W)"
-#: dialogs.c:569
+#: dialogs.c:652
msgid "Auto-Kibitz"
msgstr "自動\"kibitz\"(A)"
-#: dialogs.c:570
+#: dialogs.c:653
msgid "Auto-Comment"
msgstr "自動註解(A)"
-#: dialogs.c:571
+#: dialogs.c:654
msgid "Auto-Observe"
msgstr "自動觀棋(O)"
-#: dialogs.c:572
+#: dialogs.c:655
msgid "Auto-Raise Board"
msgstr "自動改變棋盤大小(R)"
-#: dialogs.c:573
+#: dialogs.c:656
msgid "Auto-Create Logon Script"
msgstr ""
-#: dialogs.c:574
+#: dialogs.c:657
msgid "Background Observe while Playing"
msgstr "背景觀察(v)"
-#: dialogs.c:575
+#: dialogs.c:658
msgid "Dual Board for Background-Observed Game"
msgstr "雙棋盤(D)"
-#: dialogs.c:576
+#: dialogs.c:659
msgid "Get Move List"
msgstr "取得著法列表(G)"
-#: dialogs.c:577
+#: dialogs.c:660
msgid "Quiet Play"
msgstr "落子無聲(Q)"
-#: dialogs.c:578
+#: dialogs.c:661
msgid "Seek Graph"
msgstr "可選對手圖表(k)"
-#: dialogs.c:579
+#: dialogs.c:662
msgid "Auto-Refresh Seek Graph"
msgstr "自動刷新圖表(R)"
-#: dialogs.c:580
+#: dialogs.c:663
msgid "Auto-InputBox PopUp"
msgstr ""
-#: dialogs.c:581
+#: dialogs.c:664
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:665
msgid "Premove"
msgstr "預先走棋(P)"
-#: dialogs.c:582
+#: dialogs.c:666
msgid "Premove for White"
msgstr ""
-#: dialogs.c:583
+#: dialogs.c:667
msgid "First White Move:"
msgstr "紅方先走(W)"
-#: dialogs.c:584
+#: dialogs.c:668
msgid "Premove for Black"
msgstr ""
-#: dialogs.c:585
+#: dialogs.c:669
msgid "First Black Move:"
msgstr "黑方先走(B)"
-#: dialogs.c:587
+#: dialogs.c:671
msgid "Alarm"
msgstr "提示"
-#: dialogs.c:588
+#: dialogs.c:672
msgid "Alarm Time (msec):"
msgstr ""
-#: dialogs.c:590
+#: dialogs.c:674
msgid "Colorize Messages"
msgstr ""
-#: dialogs.c:591
+#: dialogs.c:675
msgid "Shout Text Colors:"
msgstr ""
-#: dialogs.c:592
+#: dialogs.c:676
msgid "S-Shout Text Colors:"
msgstr ""
-#: dialogs.c:593
+#: dialogs.c:677
msgid "Channel #1 Text Colors:"
msgstr ""
-#: dialogs.c:594
+#: dialogs.c:678
msgid "Other Channel Text Colors:"
msgstr ""
-#: dialogs.c:595
+#: dialogs.c:679
msgid "Kibitz Text Colors:"
msgstr ""
-#: dialogs.c:596
+#: dialogs.c:680
msgid "Tell Text Colors:"
msgstr ""
-#: dialogs.c:597
+#: dialogs.c:681
msgid "Challenge Text Colors:"
msgstr ""
-#: dialogs.c:598
+#: dialogs.c:682
msgid "Request Text Colors:"
msgstr ""
-#: dialogs.c:599
+#: dialogs.c:683
msgid "Seek Text Colors:"
msgstr ""
-#: dialogs.c:606
+#: dialogs.c:690
msgid "ICS Options"
msgstr "ICS設定"
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Exact position match"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Shown position is subset"
msgstr ""
-#: dialogs.c:611
+#: dialogs.c:695
msgid "Same material with exactly same Pawn chain"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Same material"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material range (top board half optional)"
msgstr ""
-#: dialogs.c:612
+#: dialogs.c:696
msgid "Material difference (optional stuff balanced)"
msgstr ""
-#: dialogs.c:624
+#: dialogs.c:708
msgid "Auto-Display Tags"
msgstr ""
-#: dialogs.c:625
+#: dialogs.c:709
msgid "Auto-Display Comment"
msgstr ""
-#: dialogs.c:626
+#: dialogs.c:710
msgid ""
"Auto-Play speed of loaded games\n"
"(0 = instant, -1 = off):"
msgstr ""
-#: dialogs.c:627
+#: dialogs.c:711
msgid "Seconds per Move:"
msgstr ""
-#: dialogs.c:628
+#: dialogs.c:712
msgid ""
"\n"
"options to use in game-viewer mode:"
msgstr ""
-#: dialogs.c:630
+#: dialogs.c:714
msgid ""
"\n"
"Thresholds for position filtering in game list:"
msgstr ""
-#: dialogs.c:631
+#: dialogs.c:715
msgid "Elo of strongest player at least:"
msgstr ""
-#: dialogs.c:632
+#: dialogs.c:716
msgid "Elo of weakest player at least:"
msgstr ""
-#: dialogs.c:633
+#: dialogs.c:717
#, fuzzy
msgid "No games before year:"
msgstr "尚未有棋局載入"
-#: dialogs.c:634
+#: dialogs.c:718
msgid "Minimum nr consecutive positions:"
msgstr ""
-#: dialogs.c:635
+#: dialogs.c:719
msgid "Search mode:"
msgstr ""
-#: dialogs.c:636
+#: dialogs.c:720
msgid "Also match reversed colors"
msgstr ""
-#: dialogs.c:637
+#: dialogs.c:721
msgid "Also match left-right flipped position"
msgstr ""
-#: dialogs.c:645
+#: dialogs.c:729
msgid "Load Game Options"
msgstr "載入棋局選項"
-#: dialogs.c:657
+#: dialogs.c:741
msgid "Auto-Save Games"
msgstr ""
-#: dialogs.c:658
+#: dialogs.c:742
msgid "Own Games Only"
msgstr ""
-#: dialogs.c:659
+#: dialogs.c:743
msgid "Save Games on File:"
msgstr ""
-#: dialogs.c:660
+#: dialogs.c:744
msgid "Save Final Positions on File:"
msgstr ""
-#: dialogs.c:661
+#: dialogs.c:745
msgid "PGN Event Header:"
msgstr ""
-#: dialogs.c:662
+#: dialogs.c:746
msgid "Old Save Style (as opposed to PGN)"
msgstr ""
-#: dialogs.c:663
+#: dialogs.c:747
msgid "Include Number Tag in tourney PGN"
msgstr ""
-#: dialogs.c:664
+#: dialogs.c:748
msgid "Save Score/Depth Info in PGN"
msgstr ""
-#: dialogs.c:665
+#: dialogs.c:749
msgid "Save Out-of-Book Info in PGN "
msgstr ""
-#: dialogs.c:672
+#: dialogs.c:756
msgid "Save Game Options"
msgstr "儲存棋局選項"
-#: dialogs.c:681
+#: dialogs.c:765
msgid "No Sound"
msgstr "無聲"
-#: dialogs.c:682
+#: dialogs.c:766
msgid "Default Beep"
msgstr "預設聲音"
-#: dialogs.c:683
+#: dialogs.c:767
msgid "Above WAV File"
msgstr ""
-#: dialogs.c:684
+#: dialogs.c:768
msgid "Car Horn"
msgstr ""
-#: dialogs.c:685
+#: dialogs.c:769
msgid "Cymbal"
msgstr ""
-#: dialogs.c:686
+#: dialogs.c:770
msgid "Ding"
msgstr ""
-#: dialogs.c:687
+#: dialogs.c:771
msgid "Gong"
msgstr ""
-#: dialogs.c:688
+#: dialogs.c:772
msgid "Laser"
msgstr ""
-#: dialogs.c:689
+#: dialogs.c:773
msgid "Penalty"
msgstr ""
-#: dialogs.c:690
+#: dialogs.c:774
msgid "Phone"
msgstr ""
-#: dialogs.c:691
+#: dialogs.c:775
msgid "Pop"
msgstr ""
-#: dialogs.c:692
+#: dialogs.c:776
+msgid "Roar"
+msgstr ""
+
+#: dialogs.c:777
msgid "Slap"
msgstr ""
-#: dialogs.c:693
+#: dialogs.c:778
msgid "Wood Thunk"
msgstr ""
-#: dialogs.c:695
+#: dialogs.c:780
msgid "User File"
msgstr ""
-#: dialogs.c:717
+#: dialogs.c:803
msgid "User WAV File:"
msgstr ""
-#: dialogs.c:718
+#: dialogs.c:804
msgid "Sound Program:"
msgstr ""
-#: dialogs.c:719
+#: dialogs.c:805
msgid "Try-Out Sound:"
msgstr ""
-#: dialogs.c:720
+#: dialogs.c:806
msgid "Play"
msgstr "播放"
-#: dialogs.c:721
+#: dialogs.c:807
msgid "Move:"
msgstr ""
-#: dialogs.c:722
+#: dialogs.c:808
msgid "Win:"
msgstr ""
-#: dialogs.c:723
+#: dialogs.c:809
msgid "Lose:"
msgstr ""
-#: dialogs.c:724
+#: dialogs.c:810
msgid "Draw:"
msgstr ""
-#: dialogs.c:725
+#: dialogs.c:811
msgid "Unfinished:"
msgstr ""
-#: dialogs.c:726
+#: dialogs.c:812
msgid "Alarm:"
msgstr ""
-#: dialogs.c:727
+#: dialogs.c:813
msgid "Challenge:"
msgstr ""
-#: dialogs.c:729
+#: dialogs.c:815
msgid "Sounds Directory:"
msgstr ""
-#: dialogs.c:730
+#: dialogs.c:816
msgid "Shout:"
msgstr ""
-#: dialogs.c:731
+#: dialogs.c:817
msgid "S-Shout:"
msgstr ""
-#: dialogs.c:732
+#: dialogs.c:818
msgid "Channel:"
msgstr ""
-#: dialogs.c:733
+#: dialogs.c:819
msgid "Channel 1:"
msgstr ""
-#: dialogs.c:734
+#: dialogs.c:820
msgid "Tell:"
msgstr ""
-#: dialogs.c:735
+#: dialogs.c:821
msgid "Kibitz:"
msgstr ""
-#: dialogs.c:736
+#: dialogs.c:822
msgid "Request:"
msgstr ""
-#: dialogs.c:737
+#: dialogs.c:823
+msgid "Lion roar:"
+msgstr ""
+
+#: dialogs.c:824
msgid "Seek:"
msgstr ""
-#: dialogs.c:753
+#: dialogs.c:840
msgid "Sound Options"
msgstr "聲音"
-#: dialogs.c:774
+#: dialogs.c:861
msgid "White Piece Color:"
msgstr ""
#. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:864 dialogs.c:873 dialogs.c:879 dialogs.c:885 dialogs.c:891
+#: dialogs.c:897
msgid "R"
msgstr ""
#. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:866 dialogs.c:874 dialogs.c:880 dialogs.c:886 dialogs.c:892
+#: dialogs.c:898
msgid "G"
msgstr ""
#. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:868 dialogs.c:875 dialogs.c:881 dialogs.c:887 dialogs.c:893
+#: dialogs.c:899
msgid "B"
msgstr ""
#. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:870 dialogs.c:876 dialogs.c:882 dialogs.c:888 dialogs.c:894
+#: dialogs.c:900
msgid "D"
msgstr ""
-#: dialogs.c:784
+#: dialogs.c:871
msgid "Black Piece Color:"
msgstr "黑子"
-#: dialogs.c:790
+#: dialogs.c:877
msgid "Light Square Color:"
msgstr "白格"
-#: dialogs.c:796
+#: dialogs.c:883
msgid "Dark Square Color:"
msgstr "黑格"
-#: dialogs.c:802
+#: dialogs.c:889
msgid "Highlight Color:"
msgstr "格子標記"
-#: dialogs.c:808
+#: dialogs.c:895
msgid "Premove Highlight Color:"
msgstr "預先走棋標記"
-#: dialogs.c:814
+#: dialogs.c:901
msgid "Flip Pieces Shogi Style (Colored buttons restore default)"
msgstr ""
-#: dialogs.c:816
+#: dialogs.c:903
msgid "Mono Mode"
msgstr "黑白"
-#: dialogs.c:817
-msgid "Line Gap ( -1 = default for board size):"
+#: dialogs.c:904
+msgid "Line Gap (-1 = default for board size):"
msgstr ""
-#: dialogs.c:818
+#: dialogs.c:905
msgid "Use Board Textures"
msgstr ""
-#: dialogs.c:819
+#: dialogs.c:906
msgid "Light-Squares Texture File:"
msgstr ""
-#: dialogs.c:820
+#: dialogs.c:907
msgid "Dark-Squares Texture File:"
msgstr ""
-#: dialogs.c:821
+#: dialogs.c:908
msgid "Use external piece bitmaps with their own colors"
msgstr ""
-#: dialogs.c:822
+#: dialogs.c:909
msgid "Directory with Pieces Images:"
msgstr ""
-#: dialogs.c:872
+#: dialogs.c:959
msgid "Board Options"
msgstr "棋盤選項"
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:1012 menus.c:634
msgid "ICS text menu"
msgstr ""
-#: dialogs.c:947
+#: dialogs.c:1034
msgid "clear"
msgstr ""
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:1035 dialogs.c:1123
msgid "save changes"
msgstr ""
-#: dialogs.c:1051
+#: dialogs.c:1138
#, fuzzy
msgid "Edit book"
msgstr "編輯(E)"
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1138 menus.c:636
msgid "Tags"
msgstr "編輯標籤(T)"
-#: dialogs.c:1193
+#: dialogs.c:1280
msgid "ICS input box"
msgstr ""
-#: dialogs.c:1225
+#: dialogs.c:1312
msgid "Type a move"
msgstr ""
-#: dialogs.c:1251
+#: dialogs.c:1338
msgid "Engine has no options"
msgstr ""
-#: dialogs.c:1253
+#: dialogs.c:1340
msgid "Engine Settings"
msgstr ""
-#: dialogs.c:1278
+#: dialogs.c:1365
msgid "Select engine from list:"
msgstr ""
-#: dialogs.c:1281
+#: dialogs.c:1368
msgid "or specify one below:"
msgstr ""
-#: dialogs.c:1282
+#: dialogs.c:1369
msgid "Nickname (optional):"
msgstr ""
-#: dialogs.c:1283
+#: dialogs.c:1370
msgid "Use nickname in PGN player tags of engine-engine games"
msgstr ""
-#: dialogs.c:1284
+#: dialogs.c:1371
msgid "Engine Directory:"
msgstr ""
-#: dialogs.c:1285
+#: dialogs.c:1372
msgid "Engine Command:"
msgstr ""
-#: dialogs.c:1286
+#: dialogs.c:1373
msgid "(Directory will be derived from engine path when empty)"
msgstr ""
-#: dialogs.c:1287
+#: dialogs.c:1374
msgid "UCI"
msgstr ""
-#: dialogs.c:1288
+#: dialogs.c:1375
msgid "WB protocol v1 (do not wait for engine features)"
msgstr ""
-#: dialogs.c:1289
+#: dialogs.c:1376
msgid "Must not use GUI book"
msgstr ""
-#: dialogs.c:1290
+#: dialogs.c:1377
msgid "Add this engine to the list"
msgstr ""
-#: dialogs.c:1291
+#: dialogs.c:1378
msgid "Force current variant with this engine"
msgstr ""
-#: dialogs.c:1341
+#: dialogs.c:1428
msgid "Load first engine"
msgstr ""
-#: dialogs.c:1347
+#: dialogs.c:1434
msgid "Load second engine"
msgstr ""
-#: dialogs.c:1370
+#: dialogs.c:1457
msgid "shuffle"
msgstr ""
-#: dialogs.c:1371
+#: dialogs.c:1458
msgid "Start-position number:"
msgstr "啟動位置號碼(S)"
-#: dialogs.c:1372
+#: dialogs.c:1459
#, fuzzy
msgid "randomize"
msgstr "隨機"
-#: dialogs.c:1373
+#: dialogs.c:1460
msgid "pick fixed"
msgstr ""
-#: dialogs.c:1390
+#: dialogs.c:1477
msgid "New Shuffle Game"
msgstr "洗牌遊戲(u)..."
-#: dialogs.c:1409
+#: dialogs.c:1496
msgid "classical"
msgstr ""
-#: dialogs.c:1410
+#: dialogs.c:1497
msgid "incremental"
msgstr ""
-#: dialogs.c:1411
+#: dialogs.c:1498
msgid "fixed max"
msgstr ""
-#: dialogs.c:1412
+#: dialogs.c:1499
msgid "Moves per session:"
msgstr ""
-#: dialogs.c:1413
+#: dialogs.c:1500
msgid "Initial time (min):"
msgstr ""
-#: dialogs.c:1414
+#: dialogs.c:1501
msgid "Increment or max (sec/move):"
msgstr ""
-#: dialogs.c:1415
+#: dialogs.c:1502
#, fuzzy
msgid "Time-Odds factors:"
msgstr "時間倍數"
-#: dialogs.c:1416
+#: dialogs.c:1503
#, fuzzy
msgid "Engine #1"
msgstr "引擎輸出"
-#: dialogs.c:1417
+#: dialogs.c:1504
#, fuzzy
msgid "Engine #2 / Human"
msgstr "引擎1有自用庫"
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1544 dialogs.c:1547 dialogs.c:1552 dialogs.c:1553
#: gtk/xoptions.c:194
msgid "Unused"
msgstr ""
-#: dialogs.c:1478
-msgid "Time Control"
-msgstr ""
-
-#: dialogs.c:1507
+#: dialogs.c:1594
msgid "Error writing to chess program"
msgstr "發送訊息給國際象棋程式時出錯"
-#: dialogs.c:1574
+#: dialogs.c:1662 xaw/xoptions.c:1276
#, fuzzy
msgid "Cancel"
msgstr "取消(C)"
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1667 dialogs.c:2061 dialogs.c:2065
msgid "King"
msgstr "王"
-#: dialogs.c:1582
+#: dialogs.c:1670
msgid "Captain"
msgstr ""
-#: dialogs.c:1583
+#: dialogs.c:1671
msgid "Lieutenant"
msgstr ""
-#: dialogs.c:1584
+#: dialogs.c:1672
msgid "General"
msgstr "一般選項(G)..."
-#: dialogs.c:1585
+#: dialogs.c:1673
msgid "Warlord"
msgstr ""
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1675 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Knight"
msgstr "馬"
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1676 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Bishop"
msgstr "象"
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1677 dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Rook"
msgstr "車"
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1681 dialogs.c:2062 dialogs.c:2066
msgid "Archbishop"
msgstr "國師"
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1682 dialogs.c:2062 dialogs.c:2066
msgid "Chancellor"
msgstr "宰相"
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1684 dialogs.c:2061 dialogs.c:2065 dialogs.c:2083
msgid "Queen"
msgstr "后"
-#: dialogs.c:1600
+#: dialogs.c:1686
+msgid "Lion"
+msgstr ""
+
+#: dialogs.c:1690
msgid "Defer"
msgstr ""
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1691 dialogs.c:2062 dialogs.c:2066
msgid "Promote"
msgstr "升變"
-#: dialogs.c:1616
+#: dialogs.c:1706
msgid "Chat partner:"
msgstr ""
-#: dialogs.c:1701
+#: dialogs.c:1791
msgid "Chat box"
msgstr ""
-#: dialogs.c:1742
+#: dialogs.c:1832
msgid "factory"
msgstr ""
-#: dialogs.c:1743
+#: dialogs.c:1833
msgid "up"
msgstr "向上"
-#: dialogs.c:1744
+#: dialogs.c:1834
msgid "down"
msgstr "向下"
-#: dialogs.c:1762
+#: dialogs.c:1852
msgid "No tag selected"
msgstr ""
-#: dialogs.c:1793
+#: dialogs.c:1883
#, fuzzy
msgid "Game-list options"
msgstr "載入棋局選項"
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1959 dialogs.c:1973
msgid "Error"
msgstr "錯誤"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Fatal Error"
msgstr "嚴重錯誤"
-#: dialogs.c:1906
+#: dialogs.c:1996
msgid "Exiting"
msgstr "離開"
-#: dialogs.c:1917
+#: dialogs.c:2007
msgid "Information"
msgstr "資訊"
-#: dialogs.c:1924
+#: dialogs.c:2014
msgid "Note"
msgstr "註解"
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:2060 dialogs.c:2340 dialogs.c:2343
msgid "White"
msgstr "紅方"
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:2060 dialogs.c:2064 dialogs.c:2083
msgid "Pawn"
msgstr "兵"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Elephant"
msgstr "象"
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:2061 dialogs.c:2065
msgid "Cannon"
msgstr "炮"
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:2062 dialogs.c:2066
msgid "Demote"
msgstr "降級"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Empty square"
msgstr "清空格子"
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:2063 dialogs.c:2067
msgid "Clear board"
msgstr "清空棋盤"
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:2064 dialogs.c:2352 dialogs.c:2355
msgid "Black"
msgstr "黑方"
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2163 menus.c:787
msgid "File"
msgstr "檔案(F)"
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2164 menus.c:788
msgid "Edit"
msgstr "編輯(E)"
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2165 menus.c:789
msgid "View"
msgstr ""
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2166 menus.c:790
msgid "Mode"
msgstr "模式(M)"
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2167 menus.c:791
msgid "Action"
msgstr "行為(A)"
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2168 menus.c:792
msgid "Engine"
msgstr ""
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2169 menus.c:793
msgid "Options"
msgstr "選項(O)"
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2170 menus.c:794
msgid "Help"
msgstr "說明(H)"
-#: dialogs.c:2090
+#: dialogs.c:2180
msgid "<<"
msgstr ""
-#: dialogs.c:2091
+#: dialogs.c:2181
msgid "<"
msgstr ""
-#: dialogs.c:2093
+#: dialogs.c:2183
msgid ">"
msgstr ""
-#: dialogs.c:2094
+#: dialogs.c:2184
msgid ">>"
msgstr ""
-#: dialogs.c:2364
+#: dialogs.c:2458
msgid "Directories:"
msgstr ""
-#: dialogs.c:2365
+#: dialogs.c:2459
#, fuzzy
msgid "Files:"
msgstr "檔案(F)"
-#: dialogs.c:2366
+#: dialogs.c:2460
msgid "by name"
msgstr ""
-#: dialogs.c:2367
+#: dialogs.c:2461
msgid "by type"
msgstr ""
-#: dialogs.c:2370
+#: dialogs.c:2464
#, fuzzy
msgid "Filename:"
msgstr "過濾器"
-#: dialogs.c:2371
+#: dialogs.c:2465
msgid "New directory"
msgstr ""
-#: dialogs.c:2372
+#: dialogs.c:2466
#, fuzzy
msgid "File type:"
msgstr "過濾器"
-#: dialogs.c:2447
+#: dialogs.c:2541
#, fuzzy
msgid "Contents of"
msgstr "編輯註解(C) *.*"
-#: dialogs.c:2473
+#: dialogs.c:2567
msgid " next page"
msgstr ""
-#: dialogs.c:2490
+#: dialogs.c:2584
msgid "FIRST TYPE DIRECTORY NAME HERE"
msgstr ""
-#: dialogs.c:2491
+#: dialogs.c:2585
msgid "TRY ANOTHER NAME"
msgstr ""
-#: draw.c:293
+#: draw.c:310
msgid ""
-"No default pieces installed\n"
-"Select your own -pieceImageDirectory"
+"No default pieces installed!\n"
+"Select your own using '-pieceImageDirectory'."
msgstr ""
-#: engineoutput.c:107 menus.c:630
+#: engineoutput.c:110 menus.c:630
#, fuzzy, c-format
msgid "Engine Output"
msgstr "引擎輸出"
-#: engineoutput.c:117
+#: engineoutput.c:120
#, c-format
msgid "%s (%d reversible ply)"
msgid_plural "%s (%d reversible plies)"
msgstr[0] ""
msgstr[1] ""
-#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+#: engineoutput.c:542 engineoutput.c:545 nengineoutput.c:82 nengineoutput.c:90
msgid "NPS"
msgstr "NPS"
msgid "Reading game file (%d)"
msgstr "棋局檔案錯誤"
-#: gtk/xboard.c:844 xaw/xboard.c:1162
+#: gtk/xboard.c:867 xaw/xboard.c:1052
#, c-format
msgid "%s: can't cd to CHESSDIR: "
msgstr ""
-#: gtk/xboard.c:853 xaw/xboard.c:1171
+#: gtk/xboard.c:876 xaw/xboard.c:1061
#, c-format
msgid "Failed to open file '%s'\n"
msgstr ""
-#: gtk/xboard.c:868 xaw/xboard.c:1180
+#: gtk/xboard.c:891 xaw/xboard.c:1070
msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
msgstr ""
-#: gtk/xboard.c:887 xaw/xboard.c:1212
+#: gtk/xboard.c:910 xaw/xboard.c:1102
#, c-format
msgid "%s: bad boardSize syntax %s\n"
msgstr ""
-#: gtk/xboard.c:927 xaw/xboard.c:1249
+#: gtk/xboard.c:950 xaw/xboard.c:1139
#, c-format
msgid "%s: unrecognized boardSize name %s\n"
msgstr ""
-#: gtk/xboard.c:968 xaw/xboard.c:1286
+#: gtk/xboard.c:991 xaw/xboard.c:1176
#, c-format
msgid "%s: too few colors available; trying monochrome mode\n"
msgstr ""
-#: gtk/xboard.c:1258 xaw/xboard.c:1568
+#: gtk/xboard.c:1281 xaw/xboard.c:1458
#, c-format
msgid "Unable to create font set for %s.\n"
msgstr ""
-#: gtk/xboard.c:1283 xaw/xboard.c:1591
+#: gtk/xboard.c:1306 xaw/xboard.c:1481
#, c-format
msgid "%s: no fonts match pattern %s\n"
msgstr ""
-#: gtk/xboard.c:1722 xaw/xboard.c:2081
+#: gtk/xboard.c:1745 xaw/xboard.c:1971
msgid "Can't open temp file"
msgstr ""
-#: gtk/xboard.c:2174
+#: gtk/xboard.c:2199
#, fuzzy
msgid "Failed to open file"
msgstr "呼叫cmail失敗"
msgstr "洗牌遊戲(u)..."
#: menus.c:583
-msgid "New Shuffle Game ..."
+#, fuzzy
+msgid "New Shuffle Game..."
msgstr "洗牌遊戲(u)..."
#: menus.c:584
#, fuzzy
-msgid "New Variant ..."
+msgid "New Variant..."
msgstr "變種"
#: menus.c:586
msgstr "提請仲裁(D)"
#: menus.c:684
-msgid "Load New 1st Engine ..."
+msgid "Load New 1st Engine..."
msgstr ""
#: menus.c:685
-msgid "Load New 2nd Engine ..."
-msgstr ""
+#, fuzzy
+msgid "Load New 2nd Engine..."
+msgstr "通用引擎設定(E)... Alt+Shift+U"
#: menus.c:687
-msgid "Engine #1 Settings ..."
+#, fuzzy
+msgid "Engine #1 Settings..."
msgstr "引擎 #1 設定"
#: menus.c:688
-msgid "Engine #2 Settings ..."
+#, fuzzy
+msgid "Engine #2 Settings..."
msgstr "引擎 #2 設定"
#: menus.c:690
msgstr "悔棋(R) Ctrl+X"
#: menus.c:700
-msgid "General ..."
+#, fuzzy
+msgid "General..."
msgstr "一般選項(G)..."
#: menus.c:702
#, fuzzy
-msgid "Time Control ..."
+msgid "Time Control..."
msgstr "時間設定(T)... Alt+Shift+T"
#: menus.c:703
#, fuzzy
-msgid "Common Engine ..."
+msgid "Common Engine..."
msgstr "通用引擎設定(E)... Alt+Shift+U"
#: menus.c:704
#, fuzzy
-msgid "Adjudications ..."
+msgid "Adjudications..."
msgstr "判決(j)... Alt+Shift+J"
#: menus.c:705
-msgid "ICS ..."
-msgstr "ICS選項..."
+msgid "ICS..."
+msgstr ""
#: menus.c:706
-msgid "Match ..."
+msgid "Tournament..."
msgstr ""
#: menus.c:707
-msgid "Load Game ..."
+#, fuzzy
+msgid "Load Game..."
msgstr "載入棋局選項(L)... Alt+Shift+L"
#: menus.c:708
-msgid "Save Game ..."
+#, fuzzy
+msgid "Save Game..."
msgstr "儲存棋局選項(S)... Alt+Shift+S"
#: menus.c:709
-msgid "Game List ..."
+#, fuzzy
+msgid "Game List..."
msgstr "遊戲列表..."
#: menus.c:710
-msgid "Sounds ..."
+#, fuzzy
+msgid "Sounds..."
msgstr "聲音選項(D)..."
#: menus.c:713
msgid "e-Mail Bug Report"
msgstr ""
-#: nengineoutput.c:78 nengineoutput.c:85
+#: nengineoutput.c:78 nengineoutput.c:86
#, fuzzy
msgid "engine name"
msgstr "引擎輸出"
-#: nengineoutput.c:80 nengineoutput.c:87
+#. TRANSLATORS: noun, as in "the move Nf3"
+#: nengineoutput.c:81 nengineoutput.c:89
#, fuzzy
msgid "move"
msgstr "著法"
-#: nengineoutput.c:153
+#: nengineoutput.c:155
msgid "Engine output"
msgstr "引擎輸出"
-#: nengineoutput.c:157
+#: nengineoutput.c:159
msgid ""
"Mismatch of STRIDE in nengineoutput.c\n"
"Change and recompile!"
#: usystem.c:230
#, c-format
-msgid "%s: can't parse foreground color in `%s'\n"
+msgid "%s: can't parse foreground color in '%s'\n"
msgstr ""
#: usystem.c:259
msgid "%s: can't parse color names; disabling colorization\n"
msgstr ""
-#: usystem.c:371
+#: usystem.c:374
#, c-format
msgid "ERROR: Unknown user %s (in path %s)\n"
msgstr ""
-#: usystem.c:556
+#: usystem.c:557
msgid "Socket support is not configured in"
msgstr ""
-#: usystem.c:645
+#: usystem.c:646
msgid "internal rcmd not implemented for Unix"
msgstr ""
-#: xaw/xboard.c:478
-#, c-format
-msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
-
-#: xaw/xboard.c:499
-#, c-format
-msgid "Available `%s' sizes:\n"
-msgstr ""
-
-#: xaw/xboard.c:532
-#, c-format
-msgid "Error: No `%s' files!\n"
-msgstr ""
-
-#: xaw/xboard.c:545
-#, c-format
-msgid ""
-"Warning: No DIR structure found on this system --\n"
-" Unable to autosize for XPM/XIM pieces.\n"
-" Please report this error to %s.\n"
-" Include system type & operating system in message.\n"
-msgstr ""
-
-#: xaw/xboard.c:1292
+#: xaw/xboard.c:1182
#, c-format
msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
msgstr ""
-#: xaw/xengineoutput.c:115
-#, c-format
-msgid "Error %d loading icon image\n"
-msgstr ""
-
-#: xaw/xoptions.c:321 xaw/xoptions.c:1023
+#: xaw/xoptions.c:321 xaw/xoptions.c:1025
msgid "browse"
msgstr ""
msgid "Shift"
msgstr ""
-#: xaw/xoptions.c:1270
+#: xaw/xoptions.c:1272
msgid "OK"
msgstr "確定"
-#: xaw/xoptions.c:1274
-msgid "cancel"
-msgstr "取消(C)"
+#~ msgid "ICS ..."
+#~ msgstr "ICS選項..."
+
+#~ msgid "cancel"
+#~ msgstr "取消(C)"
#~ msgid "New Game Ctrl+N"
#~ msgstr "開新棋局(N) Ctrl+N"
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteClaw.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2828"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2850"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2872"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2894"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2918"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2940"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2962"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="4.8704322"
+ inkscape:cx="26.42854"
+ inkscape:cy="46.467809"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="726"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <g
+ id="g3788"
+ style="fill:#000000">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccc"
+ id="path2816"
+ d="m 49.667863,1012.1206 2.166994,9.0012 -0.333383,6.3344 -2.333687,8.3346 -4.167298,4.5007 -5.167449,2.5004 -5.334142,0.3334 -6.334292,-3.3339 -3.500529,-4.8341 -1.000152,-7.5011 -2.166995,-4.334 -5.334141,-4.1672 -2.500379,-6.001 2.000304,-6.1675 5.000756,-3.1672 5.500834,-0.8335 6.500984,0.3334 7.667828,1.0002 5.834217,3.0004 3.50053,5.0008 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818"
+ d="m 39.626874,999.80011 -1.847886,-3.07981 0.821283,-5.95429 2.874488,-5.33834 5.338336,-3.07981 5.338334,0.61596 3.901092,3.49045 0,5.74898 -2.669167,5.13301 -4.517054,3.28514 -4.517053,1.0266 -4.722373,-1.84789 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818-3"
+ d="m 70.11698,997.5416 1.847886,3.0798 -0.821283,5.9543 -2.874488,5.3383 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.258526,-5.54356 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818-3-2"
+ d="m 33.569916,981.32129 1.847886,3.07984 -0.821283,5.9543 -2.874488,5.33826 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.74896 2.258526,-5.5436 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818-3-6"
+ d="m 72.375506,1019.9215 2.463848,4.5171 -0.410642,4.7223 -4.106412,4.9277 -5.133015,2.0532 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.669167,-4.7223 4.722375,-2.4639 4.722373,-0.8213 4.311732,1.6426 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908"
+ d="m 34.083217,975.98293 -2.053206,-0.61597 0.821282,-4.51705 2.463847,-2.66917 4.106412,-0.41064 2.053206,0.61596 -3.285129,0.82129 -2.258527,2.46384 -1.847885,4.31174 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908-4"
+ d="m 56.216861,980.17756 -1.915052,-0.96315 1.593184,-4.30582 2.88991,-2.20078 4.115337,0.30866 1.915052,0.96314 -3.37784,0.2383 -2.652056,2.03423 -2.568537,3.92535 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908-4-6"
+ d="m 73.878161,994.50275 0.963152,1.91506 4.30582,-1.59319 2.200779,-2.88991 -0.308659,-4.11533 -0.96314,-1.91506 -0.238295,3.37784 -2.03423,2.65206 -3.92535,2.56854 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908-4-6-3"
+ d="m 77.705679,1018.2026 0.792583,1.9916 4.428292,-1.2118 2.444276,-2.6871 0.05119,-4.1266 -0.792563,-1.9917 -0.531791,3.3443 -2.257627,2.4646 -4.134281,2.2167 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteDolphin.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2826"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2834"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="4.5167464"
+ inkscape:cx="49.318911"
+ inkscape:cy="45.354981"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="726"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <g
+ id="g3632">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+ id="path2832"
+ d="m 25.422502,1009.2837 3.64721,-5.9885 4.085169,-6.56537 5.708527,-7.19404 4.800386,-5.25188 5.245237,-4.27474 5.082411,-3.5041 1.946123,-0.99064 1.6641,-2.73841 0.962415,-3.52748 -0.632865,-2.14233 -0.672599,-2.98178 -0.538857,-1.55972 1.891848,-0.73376 2.890098,0.70676 3.063572,2.96828 1.833675,3.65165 1.576843,3.8397 0.376031,2.33037 5.103703,2.56023 5.548553,3.53738 3.967814,3.8262 4.264383,4.47761 3.345595,4.71602 2.184518,4.04622 2.111695,4.21583 1.08172,4.303 0.394076,2.7853 -0.774149,3.9553 -1.327296,3.8618 0.358095,6.9663 0.220603,4.9517 -2.02898,1.0799 -1.768755,-2.6475 -3.591278,-8.7269 -2.55102,-1.9435 -2.810742,-3.6758 -2.991865,-3.2423 -0.142145,2.7315 c -1.121073,2.1006 -0.689228,2.1788 -1.581243,2.8704 l -2.69519,1.7911 -2.936977,0.2938 -3.51896,-1.444 2.889234,-3.0578 1.147291,-2.2168 0.26874,-3.0564 -1.420295,-3.2124 -5.299117,-2.2551 -6.091307,-0.9685 -7.726322,-0.423 -6.525511,1.0865 -5.838372,2.972 -5.798638,3.8114 -4.543551,5.0637 -4.138435,5.2015 5.420085,1.0098 4.07875,2.9434 3.376311,4.809 -1.331302,3.3423 -5.333223,-3.9007 -5.221783,-1.6086 -4.260732,0.3486 0.558749,-4.1561 -5.121869,4.8579 -3.891237,0.4048 -4.328943,0.8646 -5.5362864,2.5972 -0.4024811,-1.0225 2.2487192,-3.6566 4.5144665,-3.314 4.7424668,-2.0465 4.062579,-1.1241 3.564969,-4.871 3.145565,-5.7562 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2834"
+ d="m 73.483788,1000.6302 -4.875955,-0.5555 -3.848618,-1.30775 -4.184918,-2.79866 -3.765255,-3.75745 -3.088762,-4.90406 6.521615,3.04205 3.566594,-0.43998 3.552051,0.65635"
+ style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2842"
+ d="m 83.218266,1002.246 1.146534,1.7662"
+ style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path2844"
+ d="m 58.132709,974.47627 2.933349,-0.28601 3.031842,-0.0454 3.111499,0.26395"
+ style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2860"
+ d="m 73.834376,1008.1422 4.251769,3.5005"
+ style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackPrincess.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview19"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective21" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="matrix(0,1,-1,0,153.07625,-67.67229)"
+ id="layer1">
+ <g
+ transform="matrix(1.2596048,0,0,1.2596048,289.23085,230.95079)"
+ id="g785"
+ style="display:inline">
+ <path
+ d="m -156.47216,-94.874455 -4.26455,-25.678565 13.9998,24.343464"
+ inkscape:connector-curvature="0"
+ id="path759"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -147.53286,-95.88723 2.24615,-30.00621 9.5955,27.886232 z"
+ inkscape:connector-curvature="0"
+ id="path761"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -115.90261,-94.82073 3.71313,-24.84222 -13.39901,23.408891"
+ inkscape:connector-curvature="0"
+ id="path763"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -124.90445,-95.734359 -2.37837,-29.892061 -8.86156,28.106514 z"
+ inkscape:connector-curvature="0"
+ id="path765"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -119.72211,-75.003615 c 0,2.494743 -7.32288,4.517114 -16.3561,4.517114 -9.03322,0 -16.3561,-2.022371 -16.3561,-4.517114 l 2.32529,-6.475256 -0.0643,-6.631027 -5.81139,-6.453037 4.35812,-3.075207 4.1094,1.001045 5.74678,-2.877825 5.77127,1.347215 5.20349,-1.347215 5.2463,2.877825 4.86129,-1.001045 4.29553,3.075207 -5.81005,6.453037 0.0603,6.631027 z"
+ inkscape:connector-curvature="0"
+ id="path767"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779979;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -148.95013,-88.785387 c 2.99191,-1.065977 7.67325,-1.752122 12.93486,-1.752122 4.87905,0 9.25913,0.589996 12.25587,1.525744"
+ inkscape:connector-curvature="0"
+ id="path769"
+ style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:1.58779979;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,-124.72108,-244.63895)"
+ id="path771"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,-73.5917,-244.56074)"
+ id="path773"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,-89.629862,-250.59195)"
+ id="path775"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,-108.61241,-250.61038)"
+ id="path777"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -147.82599,-82.093587 c 2.97713,-0.857995 7.16803,-1.392212 11.81072,-1.392212 4.27282,0 8.16296,0.452487 11.07644,1.19342"
+ inkscape:connector-curvature="0"
+ id="path781"
+ style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:1.58779979;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -149.85434,-77.004684 a 1.007001,0.53496927 0 1 1 -2.014,0 1.007001,0.53496927 0 1 1 2.014,0 z"
+ transform="matrix(1,0,0,0.95588235,-0.03933598,-3.491672)"
+ id="path783"
+ style="color:#000000;fill:#ffffcc;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackHSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="54.904244"
+ inkscape:cy="34.708552"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g3599"
+ transform="matrix(1,0,0,1.1286567,0,-136.71042)">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -270.42482,1041.7792 -10.32341,-9.3014 -54.35055,-0.1786 0,18.9597 53.89325,0 10.78071,-9.4797 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="335.26187"
+ x="1021.9576"
+ height="7.3214288"
+ width="39.642857"
+ id="rect3689"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="342.71426"
+ x="1036.7313"
+ height="19.202518"
+ width="9.0239458"
+ id="rect3693"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3701"
+ d="m -282.35544,1041.779 -52.24134,0"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3777"
+ d="m -343.5,1037.2908 0,7.8572"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3781"
+ d="m -334.21429,1033.1837 0,17.3214"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackKnight.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="41.498447"
+ inkscape:cy="44.13901"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g3645">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+ id="path2844"
+ d="m -317.73295,1002.1086 10.04546,1.3788 7.87879,3.7424 1.57575,-3.7424 3.34849,-3.54549 3.15151,-1.18182 4.92424,-0.39393 2.36364,2.75754 0.39394,4.5304 -1.57576,3.7424 -1.57575,2.7575 -3.15152,1.1818 1.37879,2.9546 -0.98485,2.7576 -1.18182,1.3788 1.37879,5.909 0.5909,4.5303 -0.39393,5.3182 -1.57576,4.9242 -2.95454,5.5153 -3.9394,3.5453 -3.34848,0.197 -3.54545,2.1667 -0.98485,4.9243 -1.37879,6.6969 -3.74242,3.9394 -4.13636,1.5758 -4.33334,-0.197 -5.12121,-3.1515 -2.36364,-2.5606 0.39394,-2.9545 -1.77273,-3.5455 -1.77272,-4.1364 -0.78788,-2.3636 -4.13637,-3.9394 -4.33333,-2.7576 -4.13636,-5.909 0,-7.288 0.78788,-5.909 1.37879,-5.1212 -2.56061,-3.1516 -0.19697,-5.3181 -2.36363,-3.1516 -0.98485,-4.1363 1.57575,-4.92427 1.9697,-2.75757 1.77273,0.59091 2.95454,2.75758 3.15152,3.74245 0.98484,2.3636 2.56062,0.5909 4.13635,-2.7576 5.71213,-1.1818 4.92423,-0.3939 z"
+ style="fill:#000000;stroke:#000000;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2846"
+ d="m -301.7784,1022.9874 -5.75487,0.2656 -1.33604,0.7452 -4.51354,4.35 3.61418,-1.7986 4.00813,0.4627 2.09794,-0.8734 0.70238,-2.7576 1.18182,-0.3939 z"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccccc"
+ id="path2848"
+ d="m -334.8693,1022.5934 5.71212,0.4627 2.40638,1.1818 1.92695,2.8858 -2.6461,0.085 -2.67208,0.042 -1.74673,-0.8994 -0.89937,-1.3529 -0.30845,-1.8154 1.43076,0.1543 -3.20348,-0.7452 z"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path2850"
+ d="m -318.56357,1039.6016 3.23701,-1.0276 1.42154,0.9421 -1.37879,3.2538 -1.85822,2.3636 -2.08118,0.042 -2.18343,-2.2949 -1.53301,-3.3484 1.02759,-1.0276 3.34849,1.0963 z"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path2854"
+ d="m -308.14094,1049.0989 -3.31497,9.2333 -1.79871,-9.7387 5.11368,1.1227 0,-0.6173 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path2856"
+ d="m -321.31192,1048.8758 -2.30413,8.7967 -1.91018,-2.9897 -0.7024,-4.4022 4.91671,-1.4048 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2858"
+ d="m -311.44668,1062.6898 c 1.06226,-0.731 1.71366,-1.5642 1.79872,-2.3469 l 0.92535,-4.4709 c -1.03934,0.8994 -1.92444,1.953 -2.96377,2.8524 l -1.20782,0.5054 c -0.78907,-0.7043 -2.74549,-0.6155 -2.06441,-1.6873 l -0.47943,3.1348 1.44752,2.2354 2.54384,-0.2229 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2860"
+ d="m -318.77729,1057.2768 -2.10717,1.559 -0.78788,0 -2.43236,-1.756 -0.0688,3.0921 1.86745,2.3041 2.36364,0.6336 1.71322,-1.9268 -0.54816,-3.906 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path2862"
+ d="m -296.85416,1009.0025 1.42154,-3.9989 3.27974,-3.4004 4.40207,-0.069 0.9421,2.9379 -1.05358,3.5881 -1.22455,2.2095 -2.64611,0.8993 -3.34848,-0.197 -1.77273,-1.9697 z"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path2864"
+ d="m -342.74809,1000.3359 2.99729,2.672 1.77273,2.4232 0.54816,3.5714 -2.75758,1.5758 -2.40638,-1.6445 -2.05519,-3.2797 0,-2.3805 1.07034,-2.6293 0.83063,-0.3084 z"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2866"
+ d="m -305.91476,1036.1843 12.40909,-9.2576 10.04545,-6.303 5.71212,-4.5303"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2868"
+ d="m -305.71779,1038.9419 12.21212,-3.5455 8.66667,-0.9848 9.06059,0 2.16668,0.5909"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2870"
+ d="m -304.92991,1042.4874 8.86363,-2.3637 8.86364,-0.7879 5.90908,0.5909 8.66667,1.7728"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2872"
+ d="m -305.91476,1044.851 8.66666,0.5909 7.28788,3.3485"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2874"
+ d="m -331.71779,1037.7601 -8.86364,-4.3333 -6.69696,-2.5607 -7.48485,-1.1818 -8.66667,-0.3939"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2876"
+ d="m -332.11173,1040.9116 -12.01515,-1.7727 -7.87879,0.1969 -10.63636,3.3486 -7.87879,3.7424"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2878"
+ d="m -332.3087,1044.0631 -6.30302,0.7879 -8.66667,3.1515 -7.48485,3.9394 c 0,0 -3.74243,3.3485 -4.53031,3.1515"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2880"
+ d="m -328.17234,1046.4268 -5.71211,2.3636 -5.9091,3.5455 -4.13636,3.9394"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ id="path2852"
+ d="m -314.81361,1048.439 3.60519,0.8186 3.12699,-0.01 c 0.63924,-0.4931 1.12426,-0.1508 1.45505,-0.5481 l -1.25973,6.442 -0.0979,2.9254 -0.74514,3.3592 -2.24894,2.0504 -3.73913,0.2153 -4.55952,0.2636 -3.09631,-0.4736 -1.56653,-1.8231 -1.18941,-2.3543 -1.37714,-4.4627 -1.85392,-4.9183 1.96047,0.2397 4.5303,-1.3787 4.33334,-0.4275 -0.46267,0 3.18503,0.076 0,0.01 z"
+ style="fill:none;stroke:#ffffff;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg3738"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackQueen.svg">
+ <defs
+ id="defs3740">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3746" />
+ <inkscape:perspective
+ id="perspective3800"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.3532769"
+ inkscape:cx="40.467173"
+ inkscape:cy="50.142845"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="716"
+ inkscape:window-height="487"
+ inkscape:window-x="3"
+ inkscape:window-y="71"
+ inkscape:window-maximized="0"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ position="0.17142614,0.85712"
+ orientation="0,744.09448"
+ id="guide4498" />
+ <sodipodi:guide
+ position="744.26591,0.85712"
+ orientation="-1052.3622,0"
+ id="guide4500" />
+ <sodipodi:guide
+ position="744.26591,1053.2193"
+ orientation="0,-744.09448"
+ id="guide4502" />
+ <sodipodi:guide
+ position="0.17142614,1053.2193"
+ orientation="1052.3622,0"
+ id="guide4504" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3743">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0.17142614,-953.2193)">
+ <g
+ id="g4569"
+ transform="matrix(0.97053726,0,0,0.97053726,1.9949493,30.030726)">
+ <path
+ id="path3888"
+ d="m 18.200002,987.30504 2.742858,-6.85715 -1.828571,-4.11428 5.942856,-8.22857 9.142858,-6.4 12.342857,-0.45715 2.285714,-7.31428 7.771429,0 7.314286,4.11428 10.971427,1.82858 -1.371427,5.94285 11.885713,3.2 -1.371428,4.57143 6.857142,6.85714 -2.285713,2.28572 7.314286,10.97143 -2.742858,2.74285 4.571429,10.05711 -0.457144,6.4 0,11.4286 -6.4,-8.2286 0.457144,16.9143 -2.285715,3.2 -6.4,-5.9428 0,9.1428 -5.028571,3.6572 0.914286,-10.0572 -7.314286,12.3429 -4.114285,-5.0286 -4.571429,10.5143 -10.514286,1.3714 -10.057143,-1.3714 -8.685715,-6.8571 -4.571427,-2.2858 -10.971429,6.8572 -0.457144,-12.8 -2.285713,-7.7714 -3.2,2.7428 -5.0285719,-4.1143 0.9142856,-9.1428 -2.2857142,-4.1143 0.9142858,-5.4857 -5.0285716,-3.6572 1.3714287,-3.6571 15.5428566,-13.25716 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccc"
+ id="path3890"
+ d="m 36.94286,989.59075 -8.685715,-1.82857 3.657144,1.37143 -5.485715,4.57143 5.485715,-2.74286 3.857141,0.2 1.17143,-1.57143 z"
+ style="fill:#000000;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3892"
+ d="m 59.34286,988.21932 0,-6.4 -0.457144,-7.77143 -1.828571,-5.02857 -3.2,-2.28571 -6.857143,0.91428 -3.657142,4.11429 -1.828571,3.65714"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3894"
+ d="m 54.771431,984.10504 -0.914286,-4.57143 -2.742856,-3.65714 -3.2,0 -1.828573,4.11428 0,0 0.914286,0.45714 -0.914286,-0.45714"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3896"
+ d="m 12.714289,1003.7622 0,0 z"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path3898"
+ d="M 11.471431,1004.3764 0.82857386,1002.8479"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3900"
+ d="m 6.3142883,1010.1622 2.2857142,-2.7429 2.2857135,-0.4571 0.457144,-2.7429 0,0"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccc"
+ id="path3902"
+ d="m 8.9220373,1018.1269 2.8308047,3.1321 5.565079,0.2674 6.824939,1.4358 5.028571,0.4571 0.457143,0 0,0.4572"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3904"
+ d="m 43.34286,1003.305 -0.457144,8.6858 -3.657142,6.4 -0.914285,7.3142 -5.485715,6.4 -4.114285,6.8572"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3906"
+ d="m 72.600003,997.36218 -3.200001,13.71432 -5.942857,10.9714 -6.857142,8.6857 -5.028572,13.7143"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3908"
+ d="m 66.557145,1040.7193 -0.357143,-7.2428 4.114287,-9.1429 4.571427,-10.0571 2.285715,-10.9715 -0.457142,-7.31425"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3910"
+ d="m 80.371431,996.44789 0,7.31431 0,5.4857 0.914285,7.7714 -4.571427,6.8572 -2.742858,5.4857 -1.371428,6.4"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path3912"
+ d="m 72.14286,976.79075 6.857143,7.31429 8.228571,5.94285 -0.1,20.97141 3.185714,4.0572"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3914"
+ d="m 72.14286,971.30504 7.771429,0.91428 5.028571,2.74286 0,0"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path3916"
+ d="m 19.114289,986.99075 11.885713,-8.37143 4.571429,-2.74285"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path4508"
+ d="m 14.471431,1011.0764 c 8.571429,-1.7857 8.214286,-1.7857 8.214286,-1.7857"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path4510"
+ d="m 15.185717,1013.9336 c 11.785714,-0.3572 11.785714,-0.3572 11.785714,-0.3572"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path4512"
+ d="m 15.542859,1016.4336 c 11.071429,4.2857 11.071429,4.2857 11.071429,4.2857"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackPromoBishop.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview15"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="115.63849"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective17" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g2861">
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path457"
+ d="m 55.21546,11.229857 a 5.2154485,5.2270692 0 0 1 -10.430897,0 5.2154485,5.2270692 0 1 1 10.430897,0 z" />
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path459"
+ inkscape:connector-curvature="0"
+ d="M 35.907425,58.203367 C 33.709813,55.600983 27.938004,54.20094 27.834509,41.315188 27.742075,29.80588 42.868715,17.773397 50.193329,17.67821 57.523654,17.583 72.14423,29.820628 72.165806,41.315188 c 0.02622,13.95243 -5.611021,14.852859 -7.714863,16.888179 z" />
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path461"
+ inkscape:connector-curvature="0"
+ d="m 69.315766,70.339665 c 0,2.158388 -8.648281,3.908094 -19.316459,3.908094 -10.66819,0 -19.316471,-1.749706 -19.316471,-3.908094 0.06829,-1.450802 2.759449,-10.112943 6.706186,-11.445443 6.931028,-2.340042 18.489497,-2.613508 25.675173,0 3.857302,1.402945 6.319871,10.132812 6.251571,11.445443 z" />
+ <path
+ style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path463"
+ inkscape:connector-curvature="0"
+ d="m 35.131354,67.737307 c 3.543362,-0.857773 8.870992,-1.403431 14.828539,-1.403431 6.002673,0 11.365849,0.553958 14.908744,1.422973" />
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path469"
+ inkscape:connector-curvature="0"
+ d="m 9.7679649,84.066302 4.5239711,4.933705 c 2.082446,-1.380292 4.155818,-1.648242 6.836257,-1.648242 l 18.646284,0 c 3.294244,0 7.957334,-4.086424 10.338673,-5.67977 2.349142,1.682334 6.958135,5.67977 10.338673,5.67977 l 19.545817,0 c 2.265965,0 3.637121,0.21467 5.800123,1.648242 L 90.232026,84.16401 C 87.999867,82.458628 79.024912,80.473962 75.08046,80.634393 71.136008,80.794824 63.39618,81.896777 59.919196,80.772564 56.442212,79.648351 53.249061,77.010455 51.83357,75.578552 l -3.610572,0.09771 c -1.763613,1.563783 -4.048493,4.144826 -8.518834,5.096303 -4.470341,0.951476 -10.447841,-0.113862 -14.34174,-0.138171 -3.893912,-0.02443 -12.98049,0.959632 -15.5944591,3.431909 z" />
+ <path
+ style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path491"
+ inkscape:connector-curvature="0"
+ d="m 37.811507,58.504451 c 3.543376,-0.857773 6.021822,-1.403431 11.979356,-1.403431 6.002673,0 8.854713,0.456249 12.397621,1.325264" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackCrownedRook.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview14"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective16" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g2837">
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1402"
+ inkscape:connector-curvature="0"
+ d="m 19.988303,23.445622 0,14.198833 8.215969,6.314278 0,24.361717 -6.811166,6.394709 0,8.26495 -6.811165,0 0,6.019891 70.836118,0 0,-6.019891 -6.811161,0 0,-9.423938 -6.811171,-6.3545 0,-23.283156 8.173399,-6.27406 0,-14.198833 -4.917138,0 L 50.144989,10.953295 24.599353,23.445622 z" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1406"
+ y="35.693176"
+ x="23.309896"
+ height="1.2846808"
+ width="53.148762" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1408"
+ y="42.138672"
+ x="30.139942"
+ height="1.2846808"
+ width="39.488659" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1410"
+ y="66.474022"
+ x="30.106775"
+ height="1.2846808"
+ width="39.554974" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1412"
+ y="81.930573"
+ x="23.309896"
+ height="1.2846808"
+ width="53.148762" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1414"
+ y="72.905128"
+ x="24.669277"
+ height="1.2846808"
+ width="50.430004" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1482"
+ inkscape:connector-curvature="0"
+ d="m 30.88249,22.205315 4.08547,0 6.778405,0 16.328359,0 10.97547,0" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackHSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="54.904244"
+ inkscape:cy="34.708552"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g2827">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -270.42482,1039.1007 -10.32341,-10.4981 -54.35055,-0.2016 0,21.399 53.89325,0 10.78071,-10.6993 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2.12476516;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="335.26187"
+ x="1016.7288"
+ height="7.3214288"
+ width="44.743176"
+ id="rect3689"
+ style="fill:#000000;stroke:#000000;stroke-width:2.12476516;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="342.71426"
+ x="1033.4033"
+ height="19.202518"
+ width="10.184937"
+ id="rect3693"
+ style="fill:#000000;stroke:#000000;stroke-width:2.12476516;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3777"
+ d="m -343.5,1034.0348 0,8.8681"
+ style="fill:none;stroke:#ffffff;stroke-width:2.12476516;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3781"
+ d="m -334.21429,1029.3993 0,19.5499"
+ style="fill:none;stroke:#ffffff;stroke-width:2.12476516;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackCrownedBishop.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview14"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective16" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g2837">
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path900"
+ inkscape:connector-curvature="0"
+ d="M 36.30595,59.417265 24.376483,48.033607 C 20.139397,43.990392 12.237729,46.016232 12.268826,40.407532 12.311717,32.670013 34.907175,27.788378 44.547031,18.103208 l 11.078999,0 c 10.065834,10.160662 32.354717,13.792369 32.370902,22.304324 0.01009,5.621984 -8.151701,3.891832 -12.055165,7.626075 L 64.042286,59.417265 z" />
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path902"
+ inkscape:connector-curvature="0"
+ d="m 68.769536,71.07519 c 0,2.073311 -8.403716,3.754049 -18.770208,3.754049 -10.366505,0 -18.770221,-1.680738 -18.770221,-3.754049 0.06636,-1.393616 2.681415,-9.714324 6.516542,-10.994302 6.735026,-2.247804 17.966632,-2.510491 24.949104,0 3.748221,1.347646 6.141152,9.733411 6.074783,10.994302 z" />
+ <path
+ style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path904"
+ inkscape:connector-curvature="0"
+ d="m 35.551825,68.575408 c 3.44316,-0.823963 8.62013,-1.348112 14.409203,-1.348112 5.832924,0 11.044434,0.532122 14.48714,1.366884" />
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path910"
+ inkscape:connector-curvature="0"
+ d="m 10.905688,84.260767 4.396038,4.739234 c 2.023556,-1.325884 4.038295,-1.583273 6.642934,-1.583273 l 18.118985,0 c 3.201087,0 7.732309,-3.925351 10.046306,-5.455892 2.282711,1.616022 6.761365,5.455892 10.046305,5.455892 l 18.993081,0 c 2.201886,0 3.534267,0.206209 5.636101,1.583273 l 4.308867,-4.645377 C 86.925269,82.716462 78.204117,80.810025 74.37121,80.964133 70.538303,81.11824 63.01735,82.176758 59.638692,81.096858 56.260033,80.016957 53.157182,77.483039 51.781719,76.107577 l -3.508468,0.09386 c -1.71374,1.502144 -3.934006,3.981451 -8.27793,4.895424 -4.343924,0.913972 -10.152387,-0.109374 -13.93617,-0.132725 -3.783796,-0.02347 -12.613414,0.921806 -15.153463,3.296634 z" />
+ <path
+ style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path912"
+ inkscape:connector-curvature="0"
+ d="m 38.156186,59.706481 c 3.443173,-0.823963 5.851531,-1.348112 11.640592,-1.348112 5.832923,0 8.60431,0.438265 12.047028,1.273026" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackRook.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="783"
+ inkscape:window-height="647"
+ id="namedview13"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective15" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g2833">
+ <path
+ sodipodi:nodetypes="ccccccccccccccccc"
+ d="m 19.830741,11.000003 1e-6,13.68421 8.259102,6.713817 0,34.381577 -6.846924,6.79933 0,9.57895 -6.846923,0 0,6.84211 71.208007,0 0,-6.84211 -6.84693,0 0,-9.57895 -6.84692,-6.75657 0,-34.467101 8.21631,-6.671053 0,-13.68421 -60.295723,0 z"
+ inkscape:connector-curvature="0"
+ id="path1039"
+ style="color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.99999988;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1074"
+ y="22.911417"
+ x="22.061972"
+ height="1.4222356"
+ width="55.633793" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1076"
+ y="30.047054"
+ x="29.211357"
+ height="1.4222356"
+ width="41.334999" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1078"
+ y="65.668564"
+ x="29.176641"
+ height="1.4222356"
+ width="41.404411" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1080"
+ y="82.780083"
+ x="22.061972"
+ height="1.4222356"
+ width="55.633793" />
+ <rect
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect1082"
+ y="72.788261"
+ x="23.484905"
+ height="1.4222356"
+ width="52.787918" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="54.904244"
+ inkscape:cy="56.199236"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g2827">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -316.71407,986.20383 -10.33918,10.32341 -0.19853,54.35056 21.07508,0 0,-53.89326 -10.53737,-10.78071 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2.10862303;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1051.0409"
+ x="-338.74722"
+ height="7.3214288"
+ width="44.065918"
+ id="rect3689"
+ style="fill:#000000;stroke:#000000;stroke-width:2.10862303;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1058.4933"
+ x="-322.32513"
+ height="19.202518"
+ width="10.030772"
+ id="rect3693"
+ style="fill:#000000;stroke:#000000;stroke-width:2.10862303;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3777"
+ d="m -321.70324,1059.279 8.73379,0"
+ style="fill:none;stroke:#ffffff;stroke-width:2.10862303;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3781"
+ d="m -326.26863,1049.9933 19.25403,0"
+ style="fill:none;stroke:#ffffff;stroke-width:2.10862303;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="BlackSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="54.904244"
+ inkscape:cy="56.199236"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g3839"
+ transform="matrix(1.1115727,0,0,1,35.336676,0)">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -316.7141,986.20383 -9.3014,10.32341 -0.1786,54.35056 18.9597,0 0,-53.89326 -9.4797,-10.78071 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1051.0409"
+ x="-336.53571"
+ height="7.3214288"
+ width="39.642857"
+ id="rect3689"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1058.4933"
+ x="-321.76196"
+ height="19.202518"
+ width="9.0239458"
+ id="rect3693"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3701"
+ d="m -316.7143,998.13445 0,52.24135"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3777"
+ d="m -321.20249,1059.279 7.85715,0"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3781"
+ d="m -325.30963,1049.9933 17.32143,0"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="New document 1">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2828"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2850"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2872"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2894"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2918"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2940"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2962"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="4.8704322"
+ inkscape:cx="26.42854"
+ inkscape:cy="46.467809"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="726"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <g
+ id="g3788">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccc"
+ id="path2816"
+ d="m 49.667863,1012.1206 2.166994,9.0012 -0.333383,6.3344 -2.333687,8.3346 -4.167298,4.5007 -5.167449,2.5004 -5.334142,0.3334 -6.334292,-3.3339 -3.500529,-4.8341 -1.000152,-7.5011 -2.166995,-4.334 -5.334141,-4.1672 -2.500379,-6.001 2.000304,-6.1675 5.000756,-3.1672 5.500834,-0.8335 6.500984,0.3334 7.667828,1.0002 5.834217,3.0004 3.50053,5.0008 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818"
+ d="m 39.626874,999.80011 -1.847886,-3.07981 0.821283,-5.95429 2.874488,-5.33834 5.338336,-3.07981 5.338334,0.61596 3.901092,3.49045 0,5.74898 -2.669167,5.13301 -4.517054,3.28514 -4.517053,1.0266 -4.722373,-1.84789 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818-3"
+ d="m 70.11698,997.5416 1.847886,3.0798 -0.821283,5.9543 -2.874488,5.3383 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.258526,-5.54356 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818-3-2"
+ d="m 33.569916,981.32129 1.847886,3.07984 -0.821283,5.9543 -2.874488,5.33826 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.74896 2.258526,-5.5436 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path2818-3-6"
+ d="m 72.375506,1019.9215 2.463848,4.5171 -0.410642,4.7223 -4.106412,4.9277 -5.133015,2.0532 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.669167,-4.7223 4.722375,-2.4639 4.722373,-0.8213 4.311732,1.6426 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908"
+ d="m 34.083217,975.98293 -2.053206,-0.61597 0.821282,-4.51705 2.463847,-2.66917 4.106412,-0.41064 2.053206,0.61596 -3.285129,0.82129 -2.258527,2.46384 -1.847885,4.31174 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908-4"
+ d="m 56.216861,980.17756 -1.915052,-0.96315 1.593184,-4.30582 2.88991,-2.20078 4.115337,0.30866 1.915052,0.96314 -3.37784,0.2383 -2.652056,2.03423 -2.568537,3.92535 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908-4-6"
+ d="m 73.878161,994.50275 0.963152,1.91506 4.30582,-1.59319 2.200779,-2.88991 -0.308659,-4.11533 -0.96314,-1.91506 -0.238295,3.37784 -2.03423,2.65206 -3.92535,2.56854 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2908-4-6-3"
+ d="m 77.705679,1018.2026 0.792583,1.9916 4.428292,-1.2118 2.444276,-2.6871 0.05119,-4.1266 -0.792563,-1.9917 -0.531791,3.3443 -2.257627,2.4646 -4.134281,2.2167 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteDolphin.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2826"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2834"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="4.5167464"
+ inkscape:cx="49.318911"
+ inkscape:cy="45.354981"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="726"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-952.36218)">
+ <g
+ id="g2848"
+ transform="matrix(0.94718127,0,0,1,5.1441209,0)">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+ id="path2832"
+ d="m 21.409187,1009.2837 3.850594,-5.9885 4.312974,-6.56537 6.026858,-7.19404 5.068076,-5.25188 5.537733,-4.27474 5.365827,-3.5041 2.054647,-0.99064 1.756897,-2.73841 1.016083,-3.52748 -0.668156,-2.14233 -0.710106,-2.98178 -0.568906,-1.55972 1.997345,-0.73376 3.051262,0.70676 3.23441,2.96828 1.935928,3.65165 1.664774,3.8397 0.397,2.33037 5.388307,2.56023 5.857963,3.53738 4.189076,3.8262 4.502182,4.47761 3.532159,4.71602 2.306336,4.04622 2.229452,4.21583 1.142041,4.303 0.416051,2.7853 -0.817318,3.9553 -1.401312,3.8618 0.378064,6.9663 0.232905,4.9517 -2.142125,1.0799 -1.867388,-2.6475 -3.791542,-8.7269 -2.693276,-1.9435 -2.96748,-3.6758 -3.158704,-3.2423 -0.150072,2.7315 c -1.183588,2.1006 -0.727662,2.1788 -1.669419,2.8704 l -2.845485,1.7911 -3.100755,0.2938 -3.715192,-1.444 3.05035,-3.0578 1.211269,-2.2168 0.283726,-3.0564 -1.499497,-3.2124 -5.594617,-2.2551 -6.430984,-0.9685 -8.157173,-0.423 -6.889401,1.0865 -6.163943,2.972 -6.121994,3.8114 -4.796918,5.0637 -4.369212,5.2015 5.722332,1.0098 4.306198,2.9434 3.564587,4.809 -1.40554,3.3423 -5.630626,-3.9007 -5.512971,-1.6086 -5.433305,0.3486 0.122418,-3.7133 -4.005019,4.6365 -4.1082286,0.1834 -4.5703428,0.8646 -5.8450126,2.5972 -0.4249251,-1.0225 2.37411703,-3.6566 4.76621177,-3.314 5.0069263,-2.0465 4.289125,-1.1241 3.763766,-4.871 3.320975,-5.7562 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2834"
+ d="m 72.150568,1000.6302 -5.147858,-0.5555 -4.063233,-1.30775 -4.418286,-2.79866 -3.975221,-3.75745 -3.261004,-4.90406 6.885287,3.04205 3.765482,-0.43998 3.750128,0.65635"
+ style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2842"
+ d="m 82.427881,1002.246 1.21047,1.7662"
+ style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path2844"
+ d="m 53.83975,975.58326 5.434369,-0.72881 4.135888,-0.0454 3.051264,0.70675"
+ style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2860"
+ d="m 70.183263,1005.0426 7.527542,4.6075"
+ style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhitePrincess.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview19"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective21" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="matrix(0,1,-1,0,153.16323,-67.585316)"
+ id="layer1">
+ <g
+ transform="matrix(1.2568021,0,0,1.2568021,127.4848,230.75324)"
+ id="g799"
+ style="display:inline">
+ <path
+ d="m -28.079531,-94.874455 -4.264552,-25.678565 13.999806,24.343464"
+ inkscape:connector-curvature="0"
+ id="path704"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -19.140231,-95.88723 2.246154,-30.00621 9.5954992,27.886232 z"
+ inkscape:connector-curvature="0"
+ id="path706"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 12.490017,-94.82073 3.713129,-24.84222 -13.3990081,23.408891"
+ inkscape:connector-curvature="0"
+ id="path710"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 3.4881771,-95.734359 -2.37837,-29.892061 -8.8615575,28.106514 z"
+ inkscape:connector-curvature="0"
+ id="path712"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 8.6705152,-75.003615 c 0,2.494743 -7.3228728,4.517114 -16.3560942,4.517114 -9.033223,0 -16.356097,-2.022371 -16.356097,-4.517114 l 2.325288,-6.475256 -0.06428,-6.631027 -5.811396,-6.453037 4.358127,-3.075207 4.109397,1.001045 5.74678,-2.877825 5.7712718,1.347215 5.203493,-1.347215 5.2462981,2.877825 4.8612915,-1.001045 4.2955236,3.075207 -5.8100516,6.453037 0.060254,6.631027 z"
+ inkscape:connector-curvature="0"
+ id="path714"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -21.892448,-88.229599 c 2.801739,-1.37734 8.142276,-2.30791 14.2698066,-2.30791 6.1644171,0 11.5323386,0.94181 14.3201283,2.33283"
+ inkscape:connector-curvature="0"
+ id="path716"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,3.6715495,-244.63895)"
+ id="path718"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,54.80093,-244.56074)"
+ id="path720"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,38.762768,-250.59195)"
+ id="path722"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+ transform="matrix(0.94504751,0,0,0.94166667,19.780217,-250.61038)"
+ id="path726"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -23.978738,-75.003615 c 0,-2.494728 7.322874,-4.517115 16.3560966,-4.517115 9.0332214,0 16.3560942,2.022387 16.3560942,4.517115"
+ inkscape:connector-curvature="0"
+ id="path728"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m -21.669514,-81.284079 c 2.856168,-1.31876 8.078159,-2.20172 14.0468726,-2.20172 6.0282874,0 11.2948691,0.90067 14.1316836,2.24134"
+ inkscape:connector-curvature="0"
+ id="path730"
+ style="color:#000000;fill:none;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteHSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="53.102954"
+ inkscape:cy="37.188247"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g3595"
+ transform="matrix(1,0,0,1.1243568,0,-132.14157)">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -270.42482,1041.7792 -10.32341,-9.3014 -54.35055,-0.1786 0,18.9597 53.89325,0 10.78071,-9.4797 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="335.26187"
+ x="1021.9576"
+ height="7.3214288"
+ width="39.642857"
+ id="rect3689"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="342.71426"
+ x="1036.7313"
+ height="19.202518"
+ width="9.0239458"
+ id="rect3693"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3701"
+ d="m -282.35544,1041.779 -52.24134,0"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteKnight.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="48.583075"
+ inkscape:cy="56.642455"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="678"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g2853"
+ transform="matrix(0.86365412,0,0,0.86365412,-43.631762,139.94886)">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+ id="path2844"
+ d="m -315.51293,998.27067 11.63134,1.59646 9.12262,4.33327 1.82452,-4.33327 3.87712,-4.10518 3.64904,-1.36839 5.70164,-0.45613 2.73679,3.19292 0.45613,5.24555 -1.82453,4.3332 -1.82452,3.1929 -3.64905,1.3684 1.59646,3.421 -1.14033,3.1929 -1.36839,1.5965 1.59646,6.8419 0.68419,5.2455 -0.45613,6.1578 -1.82452,5.7016 -3.42098,6.3859 -4.56131,4.1051 -3.87711,0.2281 -4.10518,2.5087 -1.14033,5.7017 -1.59646,7.7542 -4.33324,4.5613 -4.78937,1.8245 -5.01745,-0.228 -5.9297,-3.6491 -2.73678,-2.9648 0.45613,-3.421 -2.05259,-4.1052 -2.05259,-4.7894 -0.91226,-2.7368 -4.78938,-4.5613 -5.01744,-3.1929 -4.78937,-6.8419 0,-8.4385 0.91226,-6.8419 1.59646,-5.9297 -2.96485,-3.6491 -0.22807,-6.1577 -2.73678,-3.6491 -1.14033,-4.7894 1.82452,-5.70161 2.28066,-3.19291 2.05259,0.68419 3.42098,3.19292 3.64905,4.33324 1.14032,2.73677 2.96486,0.6842 4.78937,-3.1929 6.6139,-1.36839 5.70163,-0.45614 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2846"
+ d="m -297.03962,1022.4456 -6.6634,0.3076 -1.54696,0.8628 -5.2261,5.0368 4.18476,-2.0826 4.64089,0.5358 2.42914,-1.0113 0.81327,-3.193 1.3684,-0.4561 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccccc"
+ id="path2848"
+ d="m -335.35462,1021.9895 6.6139,0.5357 2.78628,1.3684 2.23116,3.3414 -3.06384,0.099 -3.09393,0.049 -2.02249,-1.0414 -1.04135,-1.5664 -0.35714,-2.102 1.65663,0.1786 -3.70922,-0.8628 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path2850"
+ d="m -316.47468,1041.6827 3.74804,-1.1898 1.64595,1.0908 -1.59646,3.7675 -2.15158,2.7368 -2.40973,0.049 -2.52813,-2.6572 -1.77503,-3.8771 1.18982,-1.1898 3.87712,1.2694 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ id="path2852"
+ d="m -315.642,1050.9344 3.50928,0.9811 4.17435,0.9479 3.62065,-0.01 c 0.74016,-0.5709 1.30175,-0.1746 1.68476,-0.6346 l -1.66536,7.8725 -0.73369,2.7669 -0.86277,4.3031 -1.98369,1.547 -3.91591,0.4561 -5.89962,0.099 -2.96485,-0.9619 -1.81383,-1.9041 -1.17043,-2.726 -1.38779,-3.9267 -2.76688,-6.1082 2.26997,0.2775 5.24551,-1.5964 4.6603,-1.3878 0,-10e-5 0,10e-5 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path2854"
+ d="m -304.76376,1053.2151 -3.3026,9.9767 -1.72553,-10.7405 5.38527,0.9429 -0.35714,-0.1791 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path2856"
+ d="m -320.19263,1052.5997 -2.13217,10.0068 -2.21175,-3.4617 -0.81328,-5.0971 5.1572,-1.448 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2858"
+ d="m -308.23424,1068.4159 c 1.22995,-0.8464 1.98419,-1.8111 2.08268,-2.7174 l 1.07144,-5.1767 c -1.20342,1.0414 -2.22826,2.2613 -3.43167,3.3027 l -1.39849,0.5852 c -0.91365,-0.8155 -3.17893,-0.7127 -2.39033,-1.9537 l -0.55511,3.6297 1.67604,2.5883 2.94544,-0.2581 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path2860"
+ d="m -316.72215,1062.1484 -2.43982,1.8051 -0.91227,0 -2.81636,-2.0332 -0.0796,3.5802 2.16226,2.6679 2.73679,0.7336 1.98369,-2.231 -0.6347,-4.5226 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path2862"
+ d="m -291.33799,1006.253 1.64596,-4.6303 3.79752,-3.93723 5.09703,-0.0796 1.09083,3.40163 -1.21991,4.1546 -1.41788,2.5583 -3.06385,1.0413 -3.87711,-0.2281 -2.05259,-2.2806 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ id="path2864"
+ d="m -344.47724,996.21809 3.47048,3.09392 2.05259,2.80569 0.6347,4.1353 -3.19292,1.8245 -2.78628,-1.9041 -2.37964,-3.7975 0,-2.75624 1.23931,-3.04443 0.96176,-0.35714 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2866"
+ d="m -301.829,1037.726 14.36813,-10.7191 11.63133,-7.2981 6.6139,-5.2455"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2868"
+ d="m -301.60093,1040.9189 14.14006,-4.1052 10.03488,-1.1403 10.491,0 2.50873,0.6842"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2870"
+ d="m -300.68867,1045.0241 10.26294,-2.7368 10.26295,-0.9123 6.84196,0.6842 10.03488,2.0526"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2872"
+ d="m -301.829,1047.7609 10.03488,0.6842 8.43842,3.8771"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2874"
+ d="m -331.70557,1039.5505 -10.26295,-5.0174 -7.75422,-2.9649 -8.66649,-1.3684 -10.03488,-0.4561"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2876"
+ d="m -332.1617,1043.1996 -13.912,-2.0526 -9.12262,0.228 -12.31553,3.8772 -9.12262,4.3332"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2878"
+ d="m -332.38977,1046.8486 -7.29809,0.9123 -10.03488,3.649 -8.66649,4.5613 c 0,0 -4.33325,3.8771 -5.24551,3.6491"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path2880"
+ d="m -327.6004,1049.5854 -6.61389,2.7368 -6.84197,4.1052 -4.78937,4.5613"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg3738"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteQueen.svg">
+ <defs
+ id="defs3740">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3746" />
+ <inkscape:perspective
+ id="perspective3800"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="64.212367"
+ inkscape:cy="62.923419"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="716"
+ inkscape:window-height="487"
+ inkscape:window-x="3"
+ inkscape:window-y="71"
+ inkscape:window-maximized="0"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ position="0.17142614,0.85712"
+ orientation="0,744.09448"
+ id="guide4498" />
+ <sodipodi:guide
+ position="744.26591,0.85712"
+ orientation="-1052.3622,0"
+ id="guide4500" />
+ <sodipodi:guide
+ position="744.26591,1053.2193"
+ orientation="0,-744.09448"
+ id="guide4502" />
+ <sodipodi:guide
+ position="0.17142614,1053.2193"
+ orientation="1052.3622,0"
+ id="guide4504" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3743">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0.17142614,-953.2193)">
+ <g
+ id="g4531"
+ transform="matrix(0.97053726,0,0,0.97053726,1.9949493,30.030726)">
+ <path
+ id="path3888"
+ d="m 18.200002,987.30504 2.742858,-6.85715 -1.828571,-4.11428 5.942856,-8.22857 9.142858,-6.4 12.342857,-0.45715 2.285714,-7.31428 7.771429,0 7.314286,4.11428 10.971427,1.82858 -1.371427,5.94285 11.885713,3.2 -1.371428,4.57143 6.857142,6.85714 -2.285713,2.28572 7.314286,10.97143 -2.742858,2.74285 4.571429,10.05711 -0.457144,6.4 0,11.4286 -6.4,-8.2286 0.457144,16.9143 -2.285715,3.2 -6.4,-5.9428 0,9.1428 -5.028571,3.6572 0.914286,-10.0572 -7.314286,12.3429 -4.114285,-5.0286 -4.571429,10.5143 -10.514286,1.3714 -10.057143,-1.3714 -8.685715,-6.8571 -4.571427,-2.2858 -10.971429,6.8572 -0.457144,-12.8 -2.285713,-7.7714 -3.2,2.7428 -5.0285719,-4.1143 0.9142856,-9.1428 -2.2857142,-4.1143 0.9142858,-5.4857 -5.0285716,-3.6572 1.3714287,-3.6571 15.5428566,-13.25716 z"
+ style="fill:#f9f9f9;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccccc"
+ id="path3890"
+ d="m 36.94286,989.59075 -8.685715,-1.82857 3.657144,1.37143 -5.485715,4.57143 5.485715,-2.74286 3.857141,0.2 1.17143,-1.57143 z"
+ style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3892"
+ d="m 59.34286,988.21932 0,-6.4 -0.457144,-7.77143 -1.828571,-5.02857 -3.2,-2.28571 -6.857143,0.91428 -3.657142,4.11429 -1.828571,3.65714"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3894"
+ d="m 54.771431,984.10504 -0.914286,-4.57143 -2.742856,-3.65714 -3.2,0 -1.828573,4.11428 0,0 0.914286,0.45714 -0.914286,-0.45714"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3896"
+ d="m 12.714289,1003.7622 0,0 z"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path3898"
+ d="M 11.471431,1004.3764 0.82857386,1002.8479"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3900"
+ d="m 6.3142883,1010.1622 2.2857142,-2.7429 2.2857135,-0.4571 0.457144,-2.7429 0,0"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3902"
+ d="m 6.3142883,1017.4765 3.2000006,-0.9143 3.6571421,4.1143 4.571429,0 6.4,2.2857 5.028571,0.4571 0.457143,0 0,0.4572"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3904"
+ d="m 43.34286,1003.305 -0.457144,8.6858 -3.657142,6.4 -0.914285,7.3142 -5.485715,6.4 -4.114285,6.8572"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3906"
+ d="m 72.600003,997.36218 -3.200001,13.71432 -5.942857,10.9714 -6.857142,8.6857 -5.028572,13.7143"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3908"
+ d="m 66.557145,1040.7193 -0.357143,-7.2428 4.114287,-9.1429 4.571427,-10.0571 2.285715,-10.9715 -0.457142,-7.31425"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3910"
+ d="m 80.371431,996.44789 0,7.31431 0,5.4857 0.914285,7.7714 -4.571427,6.8572 -2.742858,5.4857 -1.371428,6.4"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path3912"
+ d="m 72.14286,976.79075 6.857143,7.31429 8.228571,5.94285 -0.1,20.97141 3.185714,4.0572"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3914"
+ d="m 72.14286,971.30504 7.771429,0.91428 5.028571,2.74286 0,0"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path3916"
+ d="m 19.114289,986.99075 11.885713,-8.37143 4.571429,-2.74285"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ transform="translate(-0.17142614,952.93361)"
+ id="path4508"
+ d="m 14.642857,58.142833 c 8.571429,-1.785714 8.214286,-1.785714 8.214286,-1.785714"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ transform="translate(-0.17142614,952.93361)"
+ id="path4510"
+ d="M 15.357143,60.999976 C 27.142857,60.642833 27.142857,60.642833 27.142857,60.642833"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path4512"
+ d="m 15.542859,1016.4336 c 11.071429,4.2857 11.071429,4.2857 11.071429,4.2857"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteBishop.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview14"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective16" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path
+ d="m 55.192266,11.163944 a 5.1922815,5.1665922 0 0 1 -10.384563,0 5.1922815,5.1665922 0 1 1 10.384563,0 z"
+ id="path293"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 35.970027,57.593966 c -2.187845,-2.572277 -7.934014,-3.956125 -8.03705,-16.692787 -0.09202,-11.376145 14.967422,-23.269413 22.259497,-23.363498 7.29776,-0.09411 21.85339,12.00193 21.874874,23.363498 0.02609,13.791 -5.586093,14.681011 -7.680588,16.692787 z"
+ inkscape:connector-curvature="0"
+ id="path308"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 69.229975,69.589847 c 0,2.133412 -8.609865,3.862871 -19.230651,3.862871 -10.620805,0 -19.230675,-1.729459 -19.230675,-3.862871 0.06799,-1.434016 2.747191,-9.995935 6.676405,-11.313027 6.900236,-2.312959 18.407359,-2.583263 25.561118,0 3.840166,1.386714 6.291799,10.015582 6.223803,11.313027 z"
+ inkscape:connector-curvature="0"
+ id="path300"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 31.391915,68.632566 c 2.120178,-1.670363 9.65975,-2.90559 18.635579,-2.90559 8.899888,0 16.387721,1.214423 18.580588,2.863284"
+ inkscape:connector-curvature="0"
+ id="path306"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="M 9.2736066,84.219958 13.489016,89 c 2.073196,-1.364321 4.810436,-2.594882 7.478968,-2.594882 l 19.717294,0 c 3.267641,0 6.406491,-2.799742 9.042769,-4.165477 2.908216,1.229164 5.677226,4.165477 9.04275,4.165477 l 20.805133,0 c 2.255902,0 4.101743,1.177894 6.255133,2.594882 l 4.89533,-4.780042 c -2.222249,-1.685656 -6.15317,-4.317929 -9.518695,-4.317929 l -21.757004,0 C 57.150979,79.864738 55.8005,77.746132 53.082247,74.7964 l -6.300479,0 c -1.755773,1.545696 -4.81048,5.13672 -7.45631,5.105629 l -20.397194,0 c -3.535508,0 -7.052299,1.874259 -9.6546574,4.317929 z"
+ inkscape:connector-curvature="0"
+ id="path310"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteCrownedRook.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview14"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="49.614407"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective16" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g2837">
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1388"
+ inkscape:connector-curvature="0"
+ d="m 14.471992,82.594659 71.056004,0 0,6.405345 -71.056004,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1390"
+ inkscape:connector-curvature="0"
+ d="m 21.325261,73.610637 57.349453,0 0,8.977739 -57.349453,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1392"
+ inkscape:connector-curvature="0"
+ d="m 28.146837,67.225346 43.689703,0 6.932502,6.366507 -57.538095,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1394"
+ inkscape:connector-curvature="0"
+ d="m 28.155129,42.633261 43.689731,0 0,24.592098 -43.689745,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1396"
+ inkscape:connector-curvature="0"
+ d="m 19.929584,36.532611 60.140821,0 -8.412112,6.399601 -43.349862,0 z" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1398"
+ inkscape:connector-curvature="0"
+ d="m 19.924707,23.705264 0,12.822282 60.150575,0 0,-12.822282 -12.294795,0 -12.294794,0 -11.014087,0 -12.252105,0 -12.294794,0 z" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path1454"
+ inkscape:connector-curvature="0"
+ d="m 26.531069,23.858503 23.673572,-12.920244 23.673586,12.920244 -6.09774,-0.153239 -12.294794,0 -11.014087,0 -12.252105,0 -5.688432,0.153239 z" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteHSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="53.102954"
+ inkscape:cy="37.188247"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g2823">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -270.42482,1039.19 -10.32341,-10.4581 -54.35055,-0.2008 0,21.3174 53.89325,0 10.78071,-10.6585 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2.12071395;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="335.26187"
+ x="1016.9034"
+ height="7.3214288"
+ width="44.572716"
+ id="rect3689"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2.12071395;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="342.71426"
+ x="1033.5143"
+ height="19.202518"
+ width="10.146134"
+ id="rect3693"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2.12071395;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteCrownedBishop.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview13"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective15" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path
+ d="m 36.534832,58.968047 c -3.243443,-3.154945 -10.214715,-10.374074 -13.03495,-12.09609 -2.820236,-1.722015 -9.813947,-3.834791 -9.997463,-7.098474 1.572767,-7.2769 19.644618,-8.907618 31.169347,-21.564265 l 10.065462,-0.02979 c 12.744832,12.505359 30.015019,14.896149 31.391548,21.594106 -0.557894,3.635787 -4.567159,4.603962 -8.190134,7.098425 -3.622976,2.494463 -10.263803,8.270149 -14.131036,12.09614 z"
+ inkscape:connector-curvature="0"
+ id="path884"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 68.455849,70.439082 c 0,2.040073 -8.263263,3.693867 -18.456498,3.693867 -10.193248,0 -18.456512,-1.653794 -18.456512,-3.693867 0.06525,-1.371275 2.6366,-9.558591 6.407631,-10.81805 6.622461,-2.211769 17.666352,-2.470245 24.532126,0 3.685576,1.326042 6.038513,9.577372 5.973253,10.81805 z"
+ inkscape:connector-curvature="0"
+ id="path886"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 32.141016,69.523687 c 2.034814,-1.597278 9.270883,-2.77846 17.885376,-2.77846 8.541618,0 15.728019,1.161284 17.832608,2.738006"
+ inkscape:connector-curvature="0"
+ id="path888"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ d="m 10.913106,84.429095 4.045713,4.570906 c 1.989736,-1.304629 4.616785,-2.481355 7.177892,-2.481355 l 18.923549,0 c 3.136099,0 6.148589,-2.677244 8.678735,-3.983226 2.791146,1.175385 5.448685,3.983226 8.678723,3.983226 l 19.9676,0 c 2.165085,0 3.936616,1.126367 6.003322,2.481355 l 4.698258,-4.570906 c -2.132784,-1.6119 -5.905464,-4.129005 -9.135502,-4.129005 l -20.881146,0 c -2.207135,-0.03562 -3.503256,-2.061572 -6.112083,-4.882248 l -6.046837,0 c -1.685097,1.478063 -4.616835,4.911978 -7.156147,4.882248 l -19.576081,0 c -3.393181,0 -6.768399,1.792249 -9.265996,4.129005 z"
+ inkscape:connector-curvature="0"
+ id="path894"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="100"
+ height="100"
+ id="svg2833"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteRook.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="487"
+ id="namedview13"
+ showgrid="false"
+ inkscape:zoom="2.36"
+ inkscape:cx="50"
+ inkscape:cy="50"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2833" />
+ <defs
+ id="defs2835">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective15" />
+ </defs>
+ <metadata
+ id="metadata2838">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g2834">
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect204"
+ inkscape:connector-curvature="0"
+ d="m 14.354056,82.157062 71.291888,0 0,6.842936 -71.291888,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect206"
+ inkscape:connector-curvature="0"
+ d="m 21.230076,72.559283 57.539835,0 0,9.591067 -57.539835,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect208"
+ inkscape:connector-curvature="0"
+ d="m 28.074297,65.737771 43.83474,0 6.955516,6.801444 -57.729105,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect210"
+ inkscape:connector-curvature="0"
+ d="m 28.082617,31.497226 43.834767,0 0,34.240572 -43.834781,0 z" />
+ <path
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect212"
+ inkscape:connector-curvature="0"
+ d="m 19.829765,24.626866 60.340471,0 -8.440038,6.8368 -43.49377,0 z" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect214"
+ inkscape:connector-curvature="0"
+ d="m 19.824872,10.923199 0,13.698256 60.350257,0 0,-13.698256 -12.33561,0 -12.335609,0 -11.050651,0 -12.292778,0 -12.335609,0 z" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="35.248447"
+ inkscape:cy="51.239847"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g2823">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -316.26765,986.20384 -10.45897,10.32341 -0.20079,54.35055 21.31911,0 0,-53.89325 -10.65935,-10.78071 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2.12079835;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1051.0409"
+ x="-338.556"
+ height="7.3214288"
+ width="44.576263"
+ id="rect3689"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2.12079835;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1058.4933"
+ x="-321.94376"
+ height="19.202518"
+ width="10.146942"
+ id="rect3693"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2.12079835;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="WhiteSword.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2838"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="35.248447"
+ inkscape:cy="51.239847"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="792"
+ inkscape:window-height="655"
+ inkscape:window-x="62"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(366.71429,-981.93367)">
+ <g
+ id="g3595"
+ transform="matrix(1.1244463,0,0,1,39.257968,0)">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path3687"
+ d="m -316.17839,986.20384 -9.30144,10.32341 -0.17857,54.35055 18.95966,0 0,-53.89325 -9.47965,-10.78071 z"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1051.0409"
+ x="-336"
+ height="7.3214288"
+ width="39.642857"
+ id="rect3689"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ y="1058.4933"
+ x="-321.22629"
+ height="19.202518"
+ width="9.0239458"
+ id="rect3693"
+ style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ id="path3701"
+ d="m -316.17857,998.13446 0,52.24134"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ </g>
+</svg>
#include "frontend.h"
-void
+int
PlaySoundFile (char *name)
{
if (*name == NULLCHAR) {
- return;
+ return 0;
} else if (strcmp(name, "$") == 0) {
putc(BELLCHAR, stderr);
} else {
char buf[2048];
char *prefix = "", *sep = "";
- if(appData.soundProgram[0] == NULLCHAR) return;
+ if(appData.soundProgram[0] == NULLCHAR) return 1;
if(!strchr(name, '/')) { prefix = appData.soundDirectory; sep = "/"; }
snprintf(buf, sizeof(buf), "%s '%s%s%s' &", appData.soundProgram, prefix, sep, name);
system(buf);
}
+ return 1;
}
void
PlaySoundFile(appData.soundTell);
}
+int
+Roar ()
+{
+ return PlaySoundFile(appData.soundRoar);
+}
+
void
PlaySoundForColor (ColorClass cc)
{
parse_cpair (ColorClass cc, char *str)
{
if ((textColors[(int)cc].fg=parse_color(str, 0)) == -2) {
- fprintf(stderr, _("%s: can't parse foreground color in `%s'\n"),
+ fprintf(stderr, _("%s: can't parse foreground color in '%s'\n"),
programName, str);
return -1;
}
}
textColors[ColorNone].fg = textColors[ColorNone].bg = -1;
textColors[ColorNone].attr = 0;
+ SetTextColor(cnames, textColors[ColorNormal].fg - 30, textColors[ColorNormal].bg - 40, -2); // kludge to announce background color to front-end
}
static Boolean noEcho;
char buf[MSG_SIZ];
int count, outCount, error;
+ SetTextColor(cnames, textColors[(int)cc].fg - 30, textColors[(int)cc].bg - 40, textColors[(int)cc].attr); // for GTK widget
+
if (textColors[(int)cc].bg > 0) {
if (textColors[(int)cc].fg > 0) {
snprintf(buf, MSG_SIZ, "\033[0;%d;%d;%dm", textColors[(int)cc].attr,
}
if (*s == '~') {
+ if(s[1] == '~') { // use ~~ for XBoard's private data directory
+ snprintf(d, 4*MSG_SIZ, DATADIR "%s", s+2);
+ } else
if (*(s+1) == '/') {
safeStrCpy(d, getpwuid(getuid())->pw_dir, 4*MSG_SIZ );
strcat(d, s+1);
}
// [HGM] kill: implement the 'hard killing' of AS's Winboard_x
+static int pid;
+
static RETSIGTYPE
AlarmCallBack (int n)
{
+ kill(pid, SIGKILL); // kill forcefully
return;
}
if (cp->kind != CPReal) return;
cp->kind = CPNone;
- if (signalType == 10) { // [HGM] kill: if it does not terminate in 3 sec, kill
- signal(SIGALRM, AlarmCallBack);
- alarm(3);
- if(wait((int *) 0) == -1) { // process does not terminate on its own accord
- kill(cp->pid, SIGKILL); // kill it forcefully
- wait((int *) 0); // and wait again
- }
- } else {
- if (signalType) {
- kill(cp->pid, signalType == 9 ? SIGKILL : SIGTERM); // [HGM] kill: use hard kill if so requested
- }
- /* Process is exiting either because of the kill or because of
- a quit command sent by the backend; either way, wait for it to die.
- */
- wait((int *) 0);
+ if (signalType & 1) {
+ kill(cp->pid, signalType == 9 ? SIGKILL : SIGTERM); // [HGM] kill: for 9 hard-kill immediately
}
+ signal(SIGALRM, AlarmCallBack);
+ pid = cp->pid;
+ if(signalType & 4) alarm(1 + appData.delayAfterQuit); // [HGM] kill: schedule hard kill if so requested
+ /* Process is exiting either because of the kill or because of
+ a quit command sent by the backend; either way, wait for it to die.
+ */
+ wait((int *) 0);
+ alarm(0); // cancel alarm if still pending
close(cp->fdFrom);
close(cp->fdTo);
}
return -1;
}
+Boolean stdoutClosed = FALSE;
+
int
OutputToProcess (ProcRef pr, char *message, int count, int *outError)
{
static int line = 0;
ChildProc *cp = (ChildProc *) pr;
- int outCount;
+ int outCount = count;
if (pr == NoProc)
{
- if (appData.noJoin || !appData.useInternalWrap)
- outCount = fwrite(message, 1, count, stdout);
- else
+ if (appData.noJoin || !appData.useInternalWrap) {
+ if(!stdoutClosed) outCount = fwrite(message, 1, count, stdout);
+ } else
{
int width = get_term_width();
int len = wrap(NULL, message, count, width, &line);
free(msg);
}
}
+ if(*message != '\033') ConsoleWrite(message, count);
}
else
outCount = write(cp->fdTo, message, count);
} ChildProc;
extern char *oldICSInteractionTitle;
+extern Boolean stdoutClosed;
char *ExpandPathName P((char *path));
int MySearchPath P((char *installDir, char *name, char *fullname));
#define PACKAGE_NAME "WinBoard"\r
\r
/* Define to the full name and version of this package. */\r
-#define PACKAGE_STRING "WinBoard 4.7.3"\r
+#define PACKAGE_STRING "WinBoard master-20140119"\r
\r
/* Define to the one symbol short name of this package. */\r
#define PACKAGE_TARNAME "winboard"\r
\r
/* Define to the version of this package. */\r
-#define PACKAGE_VERSION "4.7.3"\r
+#define PACKAGE_VERSION "master-20140119"\r
\r
/* Define the Windows-specific FILE version info. this *MUST* be four comma separated 16-bit integers */\r
-#define PACKAGE_FILEVERSION 4,7,2014,105\r
+/* remember to not start a number with 0 (octal), dates like 2014,0901 would lead to an error */\r
+#define PACKAGE_FILEVERSION 4,7,2014,119\r
\r
#define PTY_ITERATION\r
\r
\r
#ifdef _MSC_VER\r
#define snprintf _snprintf\r
+#define inline __inline\r
#if _MSC_VER < 1500\r
#define vsnprintf _vsnprintf\r
#endif\r
#define BUILT_IN_SOUND_NAMES {\\r
"Beepbeep", "Ching", "Click", "Cymbal", "Ding", "Drip", \\r
"Gong", "Laser", "Move", "Penalty", "Phone", "Pop", "Pop2", \\r
- "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \\r
+ "Roar", "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \\r
"Alarm", "Challenge", "Channel", "Channel1", "Draw", "Kibitz", \\r
"Lose", "Request", "Seek", "Shout", "SShout", "Tell", "Unfinished", \\r
"Win", NULL \\r
}\r
\r
#define SETTINGS_FILE "winboard.ini"\r
-#define DEBUG_FILE "winboard.debug"
+#define DEBUG_FILE "winboard.debug"\r
\r
#define ICS_LOGON "ics.ini"\r
\r
#define IDC_NFG_Edit 1023\r
#define IDC_EpDrawMoveCount 1023\r
#define IDC_PolyglotDir 1023\r
+#define OPT_TagsSave 1023\r
#define OPT_ConsoleText 1024\r
#define OPT_LightSquareColor 1024\r
#define OPT_CommandInput 1025\r
#define OPT_AutoCreate 1352\r
#define OPT_AutoFlag 1353\r
#define OPT_AlwaysQueen 1354\r
-#define OPT_AutoComment 1354\r
+#define OPT_AutoComment 1458\r
#define OPT_AnimateDragging 1355\r
#define OPT_AutoObserve 1355\r
#define OPT_AnimateMoving 1356\r
#define OPT_ExtraInfoInMoveHistory 1437\r
#define OPT_HighlightMoveArrow 1438\r
#define OPT_AutoLogo 1439\r
+#define OPT_AutoTags 1440\r
+#define OPT_Headers 1441\r
+#define OPT_Variations 1442\r
+#define OPT_AutoExtend 1443\r
#define IDC_BUTTON1 1440\r
#define IDC_BrowseForPolyglotDir 1440\r
#define IDC_BrowseForEGTB 1441\r
#define OPT_VariantMakruk 1529\r
#define OPT_VariantSChess 1530\r
#define OPT_VariantSpartan 1531\r
+#define OPT_VariantASEAN 1532\r
#define OPT_VariantGrand 1534\r
+#define OPT_VariantLion 1535\r
+#define OPT_EngineVariant 1560\r
#define IDC_Files 1550\r
#define IDC_Ranks 1551\r
#define IDC_Holdings 1552\r
#define OPT_GameListFind 1981\r
#define OPT_Grid 1983\r
#define IDM_LoadProg2 1984\r
+#define OPT_Counts 1985\r
+#define OPT_Ranget 1986\r
+#define IDM_SaveSelected 1987\r
\r
\r
// Next default values for new objects\r
\r
/* Imports from winboard.c */\r
extern HWND hwndMain;\r
-Boolean ParseFEN(Board b, int *stm, char *FEN);\r
\r
/* File globals */\r
static char *copyTemp;\r
char *fen = NULL;\r
\r
if(gameMode == EditPosition) EditPositionDone(TRUE); // [HGM] mak sure castling rights are set consistently\r
- fen = PositionToFEN(currentMove, NULL);\r
+ fen = PositionToFEN(currentMove, NULL, 1);\r
if (!fen) {\r
DisplayError(_("Unable to convert position to FEN."), 0);\r
return;\r
}\r
\r
// [HGM] paste any: make still smarter, to allow pasting of games without tags, recognize FEN in stead\r
- if(!ParseFEN(dummyBoard, &dummy, buf) ) {\r
+ if(!ParseFEN(dummyBoard, &dummy, buf, 0) ) {\r
PasteGameFromString( buf );\r
}\r
else {\r
#include "config.h"\r
\r
#include <windows.h> /* required for all Windows applications */\r
+#include <richedit.h>\r
#include <stdio.h>\r
#include <stdlib.h>\r
#include <malloc.h>\r
\r
/* Module globals */\r
static char *editTagsText, **resPtr;\r
+static HWND memo;\r
BOOL editTagsUp = FALSE;\r
BOOL canEditTags = FALSE;\r
\r
{\r
static HANDLE hwndText;\r
static int sizeX, sizeY;\r
- int len, newSizeX, newSizeY, flags;\r
+ int len, newSizeX, newSizeY;\r
char *str;\r
RECT rect;\r
MINMAXINFO *mmi;\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Initialize the dialog items */\r
Translate(hDlg, DLG_EditTags);\r
- hwndText = GetDlgItem(hDlg, OPT_TagsText);\r
+ hwndText = memo = GetDlgItem(hDlg, OPT_TagsText);\r
SendMessage(hwndText, WM_SETFONT, \r
(WPARAM)font[boardSize][EDITTAGS_FONT]->hf, MAKELPARAM(FALSE, 0));\r
SetDlgItemText(hDlg, OPT_TagsText, editTagsText);\r
EnableWindow(GetDlgItem(hDlg, OPT_TagsCancel), canEditTags);\r
- EnableWindow(GetDlgItem(hDlg, OPT_EditTags), !canEditTags);\r
+ EnableWindow(GetDlgItem(hDlg, OPT_EditTags), !canEditTags || bookUp);\r
SendMessage(hwndText, EM_SETREADONLY, !canEditTags, 0);\r
if (bookUp) {\r
+ SetDlgItemText(hDlg, OPT_EditTags, _("&Play Move"));\r
SetWindowText(hDlg, _("Edit Book"));\r
SetFocus(hwndText);\r
} else\r
}\r
if (!editTagsDialog) {\r
editTagsDialog = hDlg;\r
- flags = SWP_NOZORDER;\r
GetClientRect(hDlg, &rect);\r
sizeX = rect.right;\r
sizeY = rect.bottom;\r
+ SendDlgItemMessage( hDlg, OPT_TagsText, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS );\r
if (wpTags.x != CW_USEDEFAULT && wpTags.y != CW_USEDEFAULT &&\r
wpTags.width != CW_USEDEFAULT && wpTags.height != CW_USEDEFAULT) {\r
WINDOWPLACEMENT wp;\r
case WM_COMMAND:\r
switch (LOWORD(wParam)) {\r
case IDOK:\r
+ case OPT_TagsSave:\r
if (canEditTags) {\r
char *p, *q;\r
/* Read changed options from the dialog box */\r
}\r
*p = NULLCHAR; err = 0;\r
if(resPtr) *resPtr = strdup(str); else\r
- if(bookUp) SaveToBook(str); else\r
+ if(bookUp) SaveToBook(str), DisplayBook(currentMove); else\r
err = ReplaceTags(str, &gameInfo);\r
if (err) DisplayError(_("Error replacing tags."), err);\r
\r
free(str);\r
}\r
- TagsPopDown();\r
+ if(LOWORD(wParam) == IDOK) TagsPopDown();\r
return TRUE;\r
\r
case IDCANCEL:\r
return TRUE;\r
\r
case OPT_EditTags:\r
+ if(bookUp) addToBookFlag = !addToBookFlag; else\r
EditTagsEvent();\r
return TRUE;\r
\r
}\r
break;\r
\r
+ case WM_NOTIFY: // [HGM] vari: cloned from whistory.c\r
+ if( wParam == OPT_TagsText ) {\r
+ MSGFILTER * lpMF = (MSGFILTER *) lParam;\r
+\r
+ if( lpMF->msg == WM_RBUTTONDOWN ) {\r
+ POINTL pt;\r
+ LRESULT index;\r
+\r
+ pt.x = LOWORD( lpMF->lParam );\r
+ pt.y = HIWORD( lpMF->lParam );\r
+\r
+ index = SendDlgItemMessage( hDlg, OPT_TagsText, EM_CHARFROMPOS, 0, (LPARAM) &pt );\r
+\r
+ hwndText = GetDlgItem(hDlg, OPT_TagsText); // cloned from above\r
+ len = GetWindowTextLength(hwndText);\r
+ str = (char *) malloc(len + 1);\r
+ GetWindowText(hwndText, str, len + 1);\r
+ if(bookUp) PlayBookMove(str, index);\r
+ free(str);\r
+\r
+ /* Zap the message for good: apparently, returning non-zero is not enough */\r
+ lpMF->msg = WM_USER;\r
+\r
+ return TRUE;\r
+ }\r
+ }\r
+ break;\r
+\r
case WM_SIZE:\r
newSizeX = LOWORD(lParam);\r
newSizeY = HIWORD(lParam);\r
return FALSE;\r
}\r
\r
+VOID AddBookMove(char *text)\r
+{\r
+ SendMessage( memo, EM_SETSEL, 999999, 999999 ); // [HGM] multivar: choose insertion point\r
+ SendMessage( memo, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text );\r
+}\r
+\r
VOID TagsPopDown(void)\r
{\r
if (editTagsDialog) ShowWindow(editTagsDialog, SW_HIDE);\r
CheckMenuItem(GetMenu(hwndMain), IDM_Tags, MF_UNCHECKED);\r
- editTagsUp = bookUp = FALSE;\r
+ editTagsUp = bookUp = addToBookFlag = FALSE;\r
}\r
\r
\r
InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo2), NULL, FALSE );\r
}\r
\r
-static int currentPV, highTextStart[2], highTextEnd[2];\r
+static int currentPV;\r
+int highTextStart[2], highTextEnd[2];\r
extern RECT boardRect;\r
\r
VOID\r
\r
if(nItem % 2000 == 0) {\r
snprintf(buf, MSG_SIZ, _("Scanning through games (%d)"), nItem);\r
- SetWindowText(hwndMain, buf);\r
+ SetWindowText(hwndMain, buf); DoEvents();\r
}\r
\r
if(!narrow || lg->position >= 0) {\r
int nItem;\r
RECT rect;\r
static int sizeX, sizeY;\r
- int newSizeX, newSizeY, flags;\r
+ int newSizeX, newSizeY;\r
MINMAXINFO *mmi;\r
static BOOL filterHasFocus = FALSE;\r
int count;\r
/* Size and position the dialog */\r
if (!gameListDialog) {\r
gameListDialog = hDlg;\r
- flags = SWP_NOZORDER;\r
GetClientRect(hDlg, &rect);\r
sizeX = rect.right;\r
sizeY = rect.bottom;\r
gameFileName = StrSave(filename);\r
}\r
CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_CHECKED);\r
+ EnableMenuItem(GetMenu(hwndMain), IDM_SaveSelected, MF_ENABLED);\r
if (gameListDialog) {\r
SendMessage(gameListDialog, WM_INITDIALOG, 0, 0);\r
if (!gameListUp) ShowWindow(gameListDialog, SW_SHOW);\r
VOID GameListPopDown(void)\r
{\r
CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_UNCHECKED);\r
+ EnableMenuItem(GetMenu(hwndMain), IDM_SaveSelected, MF_GRAYED);\r
if (gameListDialog) ShowWindow(gameListDialog, SW_HIDE);\r
gameListUp = FALSE;\r
}\r
VOID GameListHighlight(int index)\r
{\r
char buf[MSG_SIZ];\r
- int i, res = 0;\r
+ int i, j, k, n, res = 0;\r
if (gameListDialog == NULL) return;\r
- for(i=0; res != LB_ERR; i++) {\r
+ for(i=64; ; i+=i) {\r
res = SendDlgItemMessage( gameListDialog, OPT_GameListText, LB_GETTEXT, i, (LPARAM)buf );\r
- if(index <= atoi( buf )) break;\r
+ if(res == LB_ERR || index < atoi( buf )) break;\r
}\r
- SendDlgItemMessage(gameListDialog, OPT_GameListText,\r
- LB_SETCURSEL, i, 0);\r
+ j = i/2;\r
+ while(i-j > 1) {\r
+ n = (i + j) >> 1;\r
+ res = SendDlgItemMessage( gameListDialog, OPT_GameListText, LB_GETTEXT, n, (LPARAM)buf );\r
+ if(res == LB_ERR || index < (k = atoi( buf ))) i = n; else {\r
+ j = n;\r
+ if(index == k) break;\r
+ }\r
+ }\r
+ SendDlgItemMessage(gameListDialog, OPT_GameListText, LB_SETCURSEL, j, 0);\r
}\r
\r
\r
int FinishMove P((ChessMove moveType, int fromX, int fromY, int toX, int toY,\r
/*char*/int promoChar));\r
void DisplayMove P((int moveNumber));\r
-Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen));\r
void ChatPopUp P((char *s));\r
typedef struct {\r
ChessSquare piece; \r
RECT boardRect;\r
COLORREF lightSquareColor, darkSquareColor, whitePieceColor, \r
blackPieceColor, highlightSquareColor, premoveHighlightColor;\r
+COLORREF markerColor[8] = { 0x00FFFF, 0x0000FF, 0x00FF00, 0xFF0000, 0xFFFF00, 0xFF00FF, 0xFFFFFF, 0x000000 };\r
HPALETTE hPal;\r
ColorClass currentColorClass;\r
\r
static HBRUSH lightSquareBrush, darkSquareBrush,\r
blackSquareBrush, /* [HGM] for band between board and holdings */\r
explodeBrush, /* [HGM] atomic */\r
- markerBrush, /* [HGM] markers */\r
+ markerBrush[8], /* [HGM] markers */\r
whitePieceBrush, blackPieceBrush, iconBkgndBrush /*, outlineBrush*/;\r
static POINT gridEndpoints[(BOARD_RANKS + BOARD_FILES + 2) * 2];\r
static DWORD gridVertexCounts[BOARD_RANKS + BOARD_FILES + 2];\r
#define oldDialog 0 /* cygwin doesn't define _winmajor; mingw does */\r
#else\r
\r
-\r
-\r
#if defined(_winmajor)\r
#define oldDialog (_winmajor < 4)\r
#else\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, OPT_Exact, OPT_Subset, OPT_Struct, OPT_Material, OPT_Range, OPT_Difference,\r
- OPT_elo1t, OPT_elo2t, OPT_datet, OPT_Stretch, OPT_Stretcht, OPT_Reversed, OPT_SearchMode, OPT_Mirror, OPT_thresholds, IDOK, IDCANCEL }, \r
+ OPT_elo1t, OPT_elo2t, OPT_datet, OPT_Stretch, OPT_Stretcht, OPT_Reversed, OPT_SearchMode, OPT_Mirror, OPT_thresholds,\r
+ OPT_Ranget, 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
*\r
\*---------------------------------------------------------------------------*/\r
\r
+static void HandleMessage P((MSG *message));\r
+static HANDLE hAccelMain, hAccelNoAlt, hAccelNoICS;\r
+\r
int APIENTRY\r
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,\r
LPSTR lpCmdLine, int nCmdShow)\r
{\r
MSG msg;\r
- HANDLE hAccelMain, hAccelNoAlt, hAccelNoICS;\r
// INITCOMMONCONTROLSEX ex;\r
\r
debugFP = stderr;\r
0, /* lowest message to examine */\r
0)) /* highest message to examine */\r
{\r
+ HandleMessage(&msg);\r
+ }\r
+\r
+\r
+ return (msg.wParam); /* Returns the value from PostQuitMessage */\r
+}\r
+\r
+static void\r
+HandleMessage (MSG *message)\r
+{\r
+ MSG msg = *message;\r
\r
if(msg.message == WM_CHAR && msg.wParam == '\t') {\r
// [HGM] navigate: switch between all windows with tab\r
if(currentElement < 5 && IsIconic(hwndMain)) ShowWindow(hwndMain, SW_RESTORE); // all open together\r
SetFocus(h);\r
\r
- continue; // this message now has been processed\r
+ return; // this message now has been processed\r
}\r
}\r
\r
if(chatHandle[i] && IsDialogMessage(chatHandle[i], &msg)) {\r
done = 1; break;\r
}\r
- if(done) continue; // [HGM] chat: end patch\r
+ if(done) return; // [HGM] chat: end patch\r
TranslateMessage(&msg); /* Translates virtual key codes */\r
DispatchMessage(&msg); /* Dispatches message to window */\r
}\r
- }\r
-\r
+}\r
\r
- return (msg.wParam); /* Returns the value from PostQuitMessage */\r
+void\r
+DoEvents ()\r
+{ /* Dispatch pending messages */\r
+ MSG msg;\r
+ while (PeekMessage(&msg, /* message structure */\r
+ NULL, /* handle of window receiving the message */\r
+ 0, /* lowest message to examine */\r
+ 0, /* highest message to examine */\r
+ PM_REMOVE))\r
+ {\r
+ HandleMessage(&msg);\r
+ }\r
}\r
\r
/*---------------------------------------------------------------------------*\\r
(void) CheckMenuItem(hmenu, IDM_SaveSettingsOnExit,\r
MF_BYCOMMAND|(saveSettingsOnExit ?\r
MF_CHECKED : MF_UNCHECKED));\r
+ EnableMenuItem(hmenu, IDM_SaveSelected, MF_GRAYED);\r
}\r
\r
//---------------------------------------------------------------------------------------------------------\r
COLORREF chroma = RGB(0xFF,0x00,0xFF);\r
RECT rc;\r
SIZE sz;\r
+\r
+\r
POINT pt;\r
int backColor = whitePieceColor; \r
int foreColor = blackPieceColor;\r
VOID\r
InitDrawingColors()\r
{\r
+ int i;\r
if (pLogPal == NULL) {\r
/* Allocate enough memory for a logical palette with\r
* PALETTESIZE entries and set the size and version fields\r
blackPieceBrush = CreateSolidBrush(blackPieceColor);\r
iconBkgndBrush = CreateSolidBrush(GetSysColor(COLOR_BACKGROUND));\r
explodeBrush = CreateSolidBrush(highlightSquareColor); // [HGM] atomic\r
- markerBrush = CreateSolidBrush(premoveHighlightColor); // [HGM] markers\r
- /* [AS] Force rendering of the font-based pieces */\r
+ for(i=0; i<8;i++) markerBrush[i] = CreateSolidBrush(markerColor[i]); // [HGM] markers\r
+\r
+ /* [AS] Force rendering of the font-based pieces */\r
if( fontBitmapSquareSize > 0 ) {\r
fontBitmapSquareSize = 0;\r
}\r
{ // correct board size to one where built-in pieces exist\r
if((v == VariantCapablanca || v == VariantGothic || v == VariantGrand || v == VariantCapaRandom || v == VariantJanus || v == VariantSuper)\r
&& (boardSize < SizePetite || boardSize > SizeBulky) // Archbishop and Chancellor available in entire middle range\r
+\r
|| (v == VariantShogi && boardSize != SizeModerate) // Japanese-style Shogi\r
|| v == VariantKnightmate || v == VariantSChess || v == VariantXiangqi || v == VariantSpartan\r
- || v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy ) {\r
+ || v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy || v == VariantLion ) {\r
if(boardSize < SizeMediocre) boardSize = SizePetite; else\r
if(boardSize > SizeModerate) boardSize = SizeBulky; else\r
boardSize = SizeMiddling;\r
pieceBitmap[0][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "s");\r
pieceBitmap[1][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "o");\r
pieceBitmap[2][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "w");\r
+ pieceBitmap[0][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "s");\r
+ pieceBitmap[1][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "o");\r
+ pieceBitmap[2][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "w");\r
\r
if(gameInfo.variant == VariantShogi) { /* promoted Gold represemtations */\r
pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s");\r
}\r
\r
return result;\r
+\r
+\r
+\r
}\r
\r
BOOL IsDrawArrowEnabled()\r
DisplayHoldingsCount(hdc, x, y, flipView, (int) board[row][column]);\r
else if( column == BOARD_RGHT) /* right align */\r
DisplayHoldingsCount(hdc, x, y, !flipView, (int) board[row][column]);\r
+ else if( piece == DarkSquare) DisplayHoldingsCount(hdc, x, y, 0, 0);\r
else\r
if (appData.monoMode) {\r
if (piece == EmptySquare) {\r
{\r
int square = color & 0x80;\r
HBRUSH oldBrush = SelectObject(hdcSeek, \r
- color == 0 ? markerBrush : color == 1 ? darkSquareBrush : explodeBrush);\r
+ color == 0 ? markerBrush[1] : color == 1 ? darkSquareBrush : explodeBrush);\r
color &= 0x7F;\r
if(square)\r
Rectangle(hdcSeek, boardRect.left+x - squareSize/9, boardRect.top+y - squareSize/9,\r
for (row = 0; row < BOARD_HEIGHT; row++) {\r
for (column = 0; column < BOARD_WIDTH; column++) {\r
if (marker[row][column]) { // marker changes only occur with full repaint!\r
- HBRUSH oldBrush = SelectObject(hdcmem, \r
- marker[row][column] == 2 ? markerBrush : explodeBrush);\r
+ HBRUSH oldBrush = SelectObject(hdcmem, markerBrush[marker[row][column]-1]);\r
SquareToPos(row, column, &x, &y);\r
Ellipse(hdcmem, x + squareSize/4, y + squareSize/4,\r
x + 3*squareSize/4, y + 3*squareSize/4);\r
else\r
if(dragInfo.from.x == BOARD_RGHT+1 )\r
board[dragInfo.from.y][dragInfo.from.x-1]++;\r
+\r
board[dragInfo.from.y][dragInfo.from.x] = dragged_piece;\r
x = dragInfo.pos.x - squareSize / 2;\r
y = dragInfo.pos.y - squareSize / 2;\r
} else if (PtInRect((LPRECT) &blackRect, pt)) {\r
ClockClick(!flipClock); break;\r
}\r
+ if(dragging) { // [HGM] lion: don't destroy dragging info if we are already dragging\r
dragInfo.start.x = dragInfo.start.y = -1;\r
dragInfo.from = dragInfo.start;\r
+ }\r
if(fromX == -1 && frozen) { // not sure where this is for\r
fromX = fromY = -1; \r
DrawPosition(forceFullRepaint || FALSE, NULL); /* [AS] */\r
if(PromoScroll(pt.x - boardRect.left, pt.y - boardRect.top)) break;\r
MovePV(pt.x - boardRect.left, pt.y - boardRect.top, boardRect.bottom - boardRect.top);\r
if ((appData.animateDragging || appData.highlightDragging)\r
- && (wParam & MK_LBUTTON)\r
+ && (wParam & MK_LBUTTON || dragging == 2)\r
&& dragInfo.from.x >= 0) \r
{\r
BOOL full_repaint = FALSE;\r
dragInfo.pos = pt;\r
}\r
if (appData.highlightDragging) {\r
- SetHighlights(fromX, fromY, x, y);\r
+ HoverEvent(highlightInfo.sq[1].x, highlightInfo.sq[1].y, x, y);\r
if( IsDrawArrowEnabled() && (x < 0 || x >= BOARD_WIDTH || y < 0 || y >= BOARD_HEIGHT) ) {\r
full_repaint = TRUE;\r
}\r
return CallWindowProc(buttonDesc[i].wndproc, hwnd, message, wParam, lParam);\r
}\r
\r
+static int promoStyle;\r
+\r
/* Process messages for Promotion dialog box */\r
LRESULT CALLBACK\r
Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
char promoChar;\r
\r
switch (message) {\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
PieceToChar(BlackMarshall) != '~') ) ?\r
SW_SHOW : SW_HIDE);\r
/* [HGM] Hide B & R button in Shogi, use Q as promote, N as defer */\r
- ShowWindow(GetDlgItem(hDlg, PB_Rook),\r
- gameInfo.variant != VariantShogi ?\r
- SW_SHOW : SW_HIDE);\r
- ShowWindow(GetDlgItem(hDlg, PB_Bishop), \r
- gameInfo.variant != VariantShogi ?\r
- SW_SHOW : SW_HIDE);\r
- if(gameInfo.variant == VariantShogi) {\r
+ ShowWindow(GetDlgItem(hDlg, PB_Rook), !promoStyle ? SW_SHOW : SW_HIDE);\r
+ ShowWindow(GetDlgItem(hDlg, PB_Bishop), !promoStyle ? SW_SHOW : SW_HIDE);\r
+ if(promoStyle) {\r
SetDlgItemText(hDlg, PB_Queen, "YES");\r
SetDlgItemText(hDlg, PB_Knight, "NO");\r
SetWindowText(hDlg, "Promote?");\r
promoChar = gameInfo.variant == VariantSuper ? PieceToChar(BlackSilver) : PieceToChar(BlackKing);\r
break;\r
case PB_Queen:\r
- promoChar = gameInfo.variant == VariantShogi ? '+' : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen));\r
+ promoChar = promoStyle ? '+' : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen));\r
break;\r
case PB_Rook:\r
promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteRook : BlackRook));\r
promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteAngel : BlackAngel));\r
break;\r
case PB_Knight:\r
- promoChar = gameInfo.variant == VariantShogi ? '=' : PieceToChar(WhiteOnMove(currentMove) ? WhiteKnight : BlackKnight);\r
+ promoChar = gameInfo.variant == VariantShogi ? '=' : promoStyle ? NULLCHAR : \r
+ ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteKnight : BlackKnight));\r
break;\r
default:\r
return FALSE;\r
}\r
\r
void\r
-PromotionPopUp()\r
+PromotionPopUp(char choice)\r
{\r
+ promoStyle = (choice == '+');\r
DrawPosition(TRUE, NULL);\r
PromotionPopup(hwndMain);\r
}\r
WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
FARPROC lpProc;\r
- int wmId, wmEvent;\r
+ int wmId;\r
char *defName;\r
FILE *f;\r
UINT number;\r
nnew = RealizePalette(hdc);\r
if (nnew > 0) {\r
paletteChanged = TRUE;\r
+\r
InvalidateRect(hwnd, &boardRect, FALSE);\r
}\r
ReleaseDC(hwnd, hdc);\r
\r
case WM_COMMAND: /* message: command from application menu */\r
wmId = LOWORD(wParam);\r
- wmEvent = HIWORD(wParam);\r
\r
switch (wmId) {\r
case IDM_NewGame:\r
}\r
break;\r
\r
+ case IDM_SaveSelected:\r
+ f = OpenFileDialog(hwnd, "a", "",\r
+ "pgn",\r
+ GAME_FILT,\r
+ _("Save Game to File"), NULL, fileTitle, NULL);\r
+ if (f != NULL) {\r
+ SaveSelected(f, 0, "");\r
+ }\r
+ break;\r
+\r
case IDM_CreateBook:\r
CreateBookEvent();\r
break;\r
break;\r
\r
case IDM_Rematch:\r
+\r
RematchEvent();\r
break;\r
\r
default: /* Passes it on if unprocessed */\r
return (DefWindowProc(hwnd, message, wParam, lParam));\r
}\r
+\r
return 0;\r
}\r
\r
SwapEngines(singleList); // temporarily swap first and second, to load a second 'first', ...\r
ParseArgs(StringGet, &p);\r
SwapEngines(singleList); // ... and then make it 'second'\r
+\r
appData.noChessProgram = FALSE;\r
appData.icsActive = FALSE;\r
} else if (IsDlgButtonChecked(hDlg, OPT_ChessServer)) {\r
CommentDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
static HANDLE hwndText = NULL;\r
- int len, newSizeX, newSizeY, flags;\r
+ int len, newSizeX, newSizeY;\r
static int sizeX, sizeY;\r
char *str;\r
RECT rect;\r
/* Size and position the dialog */\r
if (!commentDialog) {\r
commentDialog = hDlg;\r
- flags = SWP_NOZORDER;\r
GetClientRect(hDlg, &rect);\r
sizeX = rect.right;\r
sizeY = rect.bottom;\r
LRESULT CALLBACK\r
ErrorDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
- HANDLE hwndText;\r
RECT rChild;\r
\r
switch (message) {\r
\r
errorDialog = hDlg;\r
SetWindowText(hDlg, errorTitle);\r
- hwndText = GetDlgItem(hDlg, OPT_ErrorText);\r
SetDlgItemText(hDlg, OPT_ErrorText, errorMessage);\r
return FALSE;\r
\r
LRESULT CALLBACK\r
GothicDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
- HANDLE hwndText;\r
RECT rChild;\r
int height = GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYFRAME);\r
\r
*/\r
gothicDialog = hDlg;\r
SetWindowText(hDlg, errorTitle);\r
- hwndText = GetDlgItem(hDlg, OPT_ErrorText);\r
SetDlgItemText(hDlg, OPT_ErrorText, errorMessage);\r
return FALSE;\r
\r
static char *history[HISTORY_SIZE];\r
int histIn = 0, histP = 0;\r
\r
+\r
VOID\r
SaveInHistory(char *cmd)\r
{\r
histIn = (histIn + 1) % HISTORY_SIZE;\r
if (history[histIn] != NULL) {\r
free(history[histIn]);\r
+\r
history[histIn] = NULL;\r
}\r
histP = histIn;\r
else\r
err = GetLastError();\r
}\r
+\r
}\r
return err;\r
}\r
\r
// low-level front-end: clear text edit / list widget\r
void\r
+\r
GLT_ClearList()\r
{\r
SendDlgItemMessage( gameListOptionsDialog, IDC_GameListTags, LB_RESETCONTENT, 0, 0 );\r
}\r
\r
\r
+int\r
+Roar()\r
+{\r
+ MyPlaySound(&sounds[(int)SoundRoar]);\r
+ return 1;\r
+}\r
+\r
VOID\r
RingBell()\r
{\r
HDC hdc;\r
char *flag = blackFlag && gameMode == TwoMachinesPlay ? "(!)" : "";\r
\r
+\r
if(appData.noGUI) return;\r
hdc = GetDC(hwndMain);\r
if (!IsIconic(hwndMain)) {\r
/*!!if (signal) GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, cp->pid);*/\r
\r
/* [AS] Special termination modes for misbehaving programs... */\r
- if( signal == 9 ) { \r
+ if( signal & 8 ) { \r
result = TerminateProcess( cp->hProcess, 0 );\r
\r
if ( appData.debugMode) {\r
fprintf( debugFP, "Terminating process %lu, result=%d\n", cp->pid, result );\r
}\r
}\r
- else if( signal == 10 ) {\r
- DWORD dw = WaitForSingleObject( cp->hProcess, 3*1000 ); // Wait 3 seconds at most\r
+ else if( signal & 4 ) {\r
+ DWORD dw = WaitForSingleObject( cp->hProcess, appData.delayAfterQuit*1000 + 50 ); // Wait 3 seconds at most\r
\r
if( dw != WAIT_OBJECT_0 ) {\r
result = TerminateProcess( cp->hProcess, 0 );\r
int toY;\r
{\r
ChessSquare piece;\r
+ int x = toX, y = toY;\r
POINT start, finish, mid;\r
POINT frames[kFactor * 2 + 1];\r
int nFrames, n;\r
\r
+ if(killX >= 0 && IS_LION(board[fromY][fromX])) Roar();\r
+\r
if (!appData.animate) return;\r
if (doingSizing) return;\r
if (fromY < 0 || fromX < 0) return;\r
piece = board[fromY][fromX];\r
if (piece >= EmptySquare) return;\r
\r
+ if(killX >= 0) toX = killX, toY = killY; // [HGM] lion: first to kill square\r
+\r
+again:\r
+\r
ScreenSquare(fromX, fromY, &start);\r
ScreenSquare(toX, toY, &finish);\r
\r
}\r
animInfo.pos = finish;\r
DrawPosition(FALSE, NULL);\r
+\r
+ if(toX != x || toY != y) { fromX = toX; fromY = toY; toX = x; toY = y; goto again; } // second leg\r
+\r
animInfo.piece = EmptySquare;\r
Explode(board, fromX, fromY, toX, toY);\r
}\r
ov.OffsetHigh = 0;\r
switch(code) {\r
case 1: LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 1024, 0, &ov); break; // LOCK_SH\r
+\r
case 2: LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 1024, 0, &ov); break; // LOCK_EX\r
case 3: UnlockFileEx(hFile, 0, 1024, 0, &ov); break; // LOCK_UN\r
default: return -1;\r
PUSHBUTTON "Cancel",IDCANCEL,195,190,40,14\r
END\r
\r
-DLG_LoadOptions DIALOG DISCARDABLE 10, 18, 170, 261\r
+DLG_LoadOptions DIALOG DISCARDABLE 10, 18, 170, 281\r
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
CAPTION "Load Game Options"\r
FONT 8, "MS Sans Serif"\r
EDITTEXT OPT_date,16,90,28,14,ES_AUTOHSCROLL\r
LTEXT "co&nsecutive positions",OPT_Stretcht,46,114,94,8,NOT WS_GROUP\r
EDITTEXT OPT_Stretch,16,110,28,14,ES_AUTOHSCROLL\r
+ LTEXT "final piece count",OPT_Ranget,46,134,94,8,NOT WS_GROUP\r
+ EDITTEXT OPT_Counts,16,130,28,14,ES_AUTOHSCROLL\r
CONTROL "Match exact &position",OPT_Exact,"Button",\r
- BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,6,136,159,10\r
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,6,156,159,10\r
CONTROL "Match if position is s&ubset",OPT_Subset,"Button",\r
- BS_AUTORADIOBUTTON | WS_TABSTOP,6,149,159,10\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,6,169,159,10\r
CONTROL "Match material with e&xact pawn structure",OPT_Struct,"Button",\r
- BS_AUTORADIOBUTTON | WS_TABSTOP,6,162,159,10\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,6,182,159,10\r
CONTROL "Match &material",OPT_Material,"Button",\r
- BS_AUTORADIOBUTTON | WS_TABSTOP,6,175,159,10\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,6,195,159,10\r
CONTROL "Material &range (upper board-half is optional)",OPT_Range,"Button",\r
- BS_AUTORADIOBUTTON | WS_TABSTOP,6,188,159,10\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,6,208,159,10\r
CONTROL "Material &difference (optional material balanced)",OPT_Difference,"Button",\r
- BS_AUTORADIOBUTTON | WS_TABSTOP,6,201,159,10\r
- GROUPBOX "Search Mode: ",OPT_SearchMode,3,126,164,87,WS_GROUP\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,6,221,159,10\r
+ GROUPBOX "Search Mode: ",OPT_SearchMode,3,146,164,87,WS_GROUP\r
CONTROL "Also match reversed &colors",OPT_Reversed,"Button",\r
- BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,214,160,10\r
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,234,160,10\r
CONTROL "Also match &left-right mirror image",OPT_Mirror,"Button",\r
- BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,227,160,10\r
- PUSHBUTTON "OK",IDOK,56,242,50,14,WS_GROUP\r
- PUSHBUTTON "Cancel",IDCANCEL,112,242,50,14\r
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,247,160,10\r
+ PUSHBUTTON "OK",IDOK,56,262,50,14,WS_GROUP\r
+ PUSHBUTTON "Cancel",IDCANCEL,112,262,50,14\r
END\r
\r
DLG_SaveOptions DIALOG DISCARDABLE 6, 17, 218, 119\r
EDITTEXT IDC_GameListFilter,201,136,78,14,ES_AUTOHSCROLL\r
END\r
\r
-DLG_EditTags DIALOG DISCARDABLE 6, 18, 167, 140\r
+DLG_EditTags DIALOG DISCARDABLE 6, 18, 223, 140\r
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
CAPTION "Edit Tags"\r
FONT 8, "MS Sans Serif"\r
BEGIN\r
- PUSHBUTTON "OK",IDOK,58,122,50,14\r
- PUSHBUTTON "Cancel",OPT_TagsCancel,114,122,50,14\r
+ PUSHBUTTON "OK",IDOK,114,122,50,14\r
+ PUSHBUTTON "Cancel",OPT_TagsCancel,170,122,50,14\r
+ PUSHBUTTON "Save",OPT_TagsSave,58,122,50,14\r
CONTROL "",OPT_TagsText,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | \r
ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | \r
- WS_HSCROLL | WS_TABSTOP,2,2,162,115\r
+ WS_HSCROLL | WS_TABSTOP,2,2,218,115\r
PUSHBUTTON "&Edit",OPT_EditTags,2,122,50,14\r
END\r
\r
PUSHBUTTON "Cancel",IDCANCEL,208,86,50,14\r
END\r
\r
-DLG_GeneralOptions DIALOG DISCARDABLE 0, 0, 300, 197\r
+DLG_GeneralOptions DIALOG DISCARDABLE 0, 0, 300, 225\r
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "General Options"\r
FONT 8, "MS Sans Serif"\r
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,160,151,10\r
CONTROL "One-Click Move",OPT_SmartMove,\r
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,160,151,10\r
- DEFPUSHBUTTON "OK",IDOK,180,178,50,14\r
- PUSHBUTTON "Cancel",IDCANCEL,236,178,50,14\r
+ CONTROL "auto-Display Tags",OPT_AutoTags,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,174,151,10\r
+ CONTROL "auto-Display Comment",OPT_AutoComment,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,174,151,10\r
+ CONTROL "Headers in Engine Output",OPT_Headers,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,188,151,10\r
+ CONTROL "Enable Variation Trees",OPT_Variations,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,188,151,10\r
+ CONTROL "Play Analysis PV on Click",OPT_AutoExtend,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,202,151,10\r
+ DEFPUSHBUTTON "OK",IDOK,180,206,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,236,206,50,14\r
END\r
\r
DLG_IcsOptions DIALOGEX 0, 0, 302, 268\r
70,10\r
CONTROL "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON,\r
9,104,70,10\r
+ CONTROL "&Mighty Lion",OPT_VariantLion,"Button",BS_AUTORADIOBUTTON,\r
+ 9,114,70,10\r
CONTROL "cra&zyhouse",OPT_VariantCrazyhouse,"Button",BS_AUTORADIOBUTTON,80,14,\r
70,10\r
CONTROL "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,80,24,70,\r
94,70,10\r
CONTROL "&makruk",OPT_VariantMakruk,"Button",BS_AUTORADIOBUTTON,80,\r
104,70,10\r
+ CONTROL "&ASEAN",OPT_VariantASEAN,"Button",BS_AUTORADIOBUTTON,80,\r
+ 114,70,10\r
CONTROL "&gothic",OPT_VariantGothic,"Button",BS_AUTORADIOBUTTON,154,14,\r
70,10\r
CONTROL "&capablanca",OPT_VariantCapablanca,"Button",BS_AUTORADIOBUTTON,154,\r
10\r
CONTROL "&xiangqi",OPT_VariantXiangqi,"Button",BS_AUTORADIOBUTTON,154,114,70,\r
10\r
- GROUPBOX "Variant",GPB_Variant,4,4,215,125\r
- LTEXT "Board size:",GPB_Board,10,165,40,8,WS_TABSTOP\r
- LTEXT "ranks",IDC_Height,77,165,38,8\r
- EDITTEXT IDC_Ranks,60,161,14,14,ES_AUTOHSCROLL\r
- LTEXT "files",IDC_Width,133,165,80,8\r
- EDITTEXT IDC_Files,116,161,14,14,ES_AUTOHSCROLL\r
- LTEXT "Holdings with room for:",IDC_Hand,10,183,90,8\r
- EDITTEXT IDC_Holdings,93,179,14,14,ES_AUTOHSCROLL\r
- LTEXT "pieces",IDC_Pieces,110,183,100,8\r
- LTEXT "('-1' means defaults for selected variant)",IDC_Def,10,201,210,8\r
+ CONTROL "",OPT_EngineVariant+0,"Button",BS_AUTORADIOBUTTON,9,134,70,10\r
+ CONTROL "",OPT_EngineVariant+1,"Button",BS_AUTORADIOBUTTON,80,134,70,10\r
+ CONTROL "",OPT_EngineVariant+2,"Button",BS_AUTORADIOBUTTON,154,134,70,10\r
+ CONTROL "",OPT_EngineVariant+3,"Button",BS_AUTORADIOBUTTON,9,144,70,10\r
+ CONTROL "",OPT_EngineVariant+4,"Button",BS_AUTORADIOBUTTON,80,144,70,10\r
+ CONTROL "",OPT_EngineVariant+5,"Button",BS_AUTORADIOBUTTON,154,144,70,10\r
+ CONTROL "",OPT_EngineVariant+6,"Button",BS_AUTORADIOBUTTON,9,154,70,10\r
+ CONTROL "",OPT_EngineVariant+7,"Button",BS_AUTORADIOBUTTON,80,154,70,10\r
+ CONTROL "",OPT_EngineVariant+8,"Button",BS_AUTORADIOBUTTON,154,154,70,10\r
+ GROUPBOX "Variant",GPB_Variant,4,4,215,165\r
+ LTEXT "Board size:",GPB_Board,10,183,40,8,WS_TABSTOP\r
+ LTEXT "ranks",IDC_Height,77,183,38,8\r
+ EDITTEXT IDC_Ranks,60,179,14,14,ES_AUTOHSCROLL\r
+ LTEXT "files",IDC_Width,133,183,80,8\r
+ EDITTEXT IDC_Files,116,179,14,14,ES_AUTOHSCROLL\r
+ LTEXT "Holdings with room for:",IDC_Hand,10,201,90,8\r
+ EDITTEXT IDC_Holdings,93,197,14,14,ES_AUTOHSCROLL\r
+ LTEXT "pieces",IDC_Pieces,110,201,100,8\r
+ LTEXT "('-1' means defaults for selected variant)",IDC_Def,10,217,210,8\r
DEFPUSHBUTTON "OK",IDOK,114,232,50,14\r
PUSHBUTTON "Cancel",IDCANCEL,170,232,50,14\r
END\r
PUSHBUTTON "...",IDC_BrowseForEGTB,226,40,17,14\r
LTEXT "EGTB Size (MB):",IDC_Cache,2,62,78,8\r
EDITTEXT IDC_SizeOfEGTB,82,58,40,14,ES_AUTOHSCROLL\r
+ CONTROL "Ponder Next Move",OPT_PonderNextMove,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,136,62,100,10\r
CONTROL "Use Book:",IDC_UseBook,"Button",BS_AUTOCHECKBOX | \r
WS_TABSTOP,2,80,78,10\r
EDITTEXT IDC_BookFile,82,76,140,14,ES_AUTOHSCROLL\r
MENUITEM "S&ave Position...\tCtrl+Shift+S",IDM_SavePosition\r
MENUITEM SEPARATOR\r
MENUITEM "Save as &Diagram...", IDM_SaveDiagram\r
+ MENUITEM "Save Selected Games...", IDM_SaveSelected\r
MENUITEM "Save Games to &Book", IDM_CreateBook\r
MENUITEM SEPARATOR\r
MENUITEM "&Quit", IDM_Exit\r
S72O BITMAP MOVEABLE PURE "bitmaps/s72o.bmp"\r
L72O BITMAP MOVEABLE PURE "bitmaps/l72o.bmp"\r
DK72O BITMAP MOVEABLE PURE "bitmaps/dk72o.bmp"\r
+LN72O BITMAP MOVEABLE PURE "bitmaps/ln72o.bmp"\r
WP72O BITMAP MOVEABLE PURE "bitmaps/wp72o.bmp"\r
WN72O BITMAP MOVEABLE PURE "bitmaps/wn72o.bmp"\r
WL72O BITMAP MOVEABLE PURE "bitmaps/wl72o.bmp"\r
S72S BITMAP MOVEABLE PURE "bitmaps/s72s.bmp"\r
L72S BITMAP MOVEABLE PURE "bitmaps/l72s.bmp"\r
DK72S BITMAP MOVEABLE PURE "bitmaps/dk72s.bmp"\r
+LN72S BITMAP MOVEABLE PURE "bitmaps/ln72s.bmp"\r
WP72S BITMAP MOVEABLE PURE "bitmaps/wp72s.bmp"\r
WN72S BITMAP MOVEABLE PURE "bitmaps/wn72s.bmp"\r
WL72S BITMAP MOVEABLE PURE "bitmaps/wl72s.bmp"\r
S72W BITMAP MOVEABLE PURE "bitmaps/s72w.bmp"\r
L72W BITMAP MOVEABLE PURE "bitmaps/l72w.bmp"\r
DK72W BITMAP MOVEABLE PURE "bitmaps/dk72w.bmp"\r
+LN72W BITMAP MOVEABLE PURE "bitmaps/ln72w.bmp"\r
E49O BITMAP MOVEABLE PURE "bitmaps/e49o.bmp"\r
A49O BITMAP MOVEABLE PURE "bitmaps/a49o.bmp"\r
AA49O BITMAP MOVEABLE PURE "bitmaps/as49o.bmp"\r
S49O BITMAP MOVEABLE PURE "bitmaps/s49o.bmp"\r
L49O BITMAP MOVEABLE PURE "bitmaps/l49o.bmp"\r
DK49O BITMAP MOVEABLE PURE "bitmaps/dk49o.bmp"\r
+LN49O BITMAP MOVEABLE PURE "bitmaps/ln49o.bmp"\r
WP49O BITMAP MOVEABLE PURE "bitmaps/wp49o.bmp"\r
WN49O BITMAP MOVEABLE PURE "bitmaps/wn49o.bmp"\r
WL49O BITMAP MOVEABLE PURE "bitmaps/wl49o.bmp"\r
S49S BITMAP MOVEABLE PURE "bitmaps/s49s.bmp"\r
L49S BITMAP MOVEABLE PURE "bitmaps/l49s.bmp"\r
DK49S BITMAP MOVEABLE PURE "bitmaps/dk49s.bmp"\r
+LN49S BITMAP MOVEABLE PURE "bitmaps/ln49s.bmp"\r
WP49S BITMAP MOVEABLE PURE "bitmaps/wp49s.bmp"\r
WN49S BITMAP MOVEABLE PURE "bitmaps/wn49s.bmp"\r
WL49S BITMAP MOVEABLE PURE "bitmaps/wl49s.bmp"\r
S49W BITMAP MOVEABLE PURE "bitmaps/s49w.bmp"\r
L49W BITMAP MOVEABLE PURE "bitmaps/l49w.bmp"\r
DK49W BITMAP MOVEABLE PURE "bitmaps/dk49w.bmp"\r
+LN49W BITMAP MOVEABLE PURE "bitmaps/ln49w.bmp"\r
A33O BITMAP MOVEABLE PURE "bitmaps/a33o.bmp"\r
AA33O BITMAP MOVEABLE PURE "bitmaps/as33o.bmp"\r
C33O BITMAP MOVEABLE PURE "bitmaps/c33o.bmp"\r
M33O BITMAP MOVEABLE PURE "bitmaps/m33o.bmp"\r
O33O BITMAP MOVEABLE PURE "bitmaps/o33o.bmp"\r
DK33O BITMAP MOVEABLE PURE "bitmaps/dk33o.bmp"\r
+LN33O BITMAP MOVEABLE PURE "bitmaps/ln33o.bmp"\r
WP33O BITMAP MOVEABLE PURE "bitmaps/wp33o.bmp"\r
WN33O BITMAP MOVEABLE PURE "bitmaps/wn33o.bmp"\r
WL33O BITMAP MOVEABLE PURE "bitmaps/wl33o.bmp"\r
M33W BITMAP MOVEABLE PURE "bitmaps/m33w.bmp"\r
O33W BITMAP MOVEABLE PURE "bitmaps/o33w.bmp"\r
DK33W BITMAP MOVEABLE PURE "bitmaps/dk33w.bmp"\r
+LN33W BITMAP MOVEABLE PURE "bitmaps/ln33w.bmp"\r
A33S BITMAP MOVEABLE PURE "bitmaps/a33s.bmp"\r
AA33S BITMAP MOVEABLE PURE "bitmaps/as33s.bmp"\r
C33S BITMAP MOVEABLE PURE "bitmaps/c33s.bmp"\r
M33S BITMAP MOVEABLE PURE "bitmaps/m33s.bmp"\r
O33S BITMAP MOVEABLE PURE "bitmaps/o33s.bmp"\r
DK33S BITMAP MOVEABLE PURE "bitmaps/dk33s.bmp"\r
+LN33S BITMAP MOVEABLE PURE "bitmaps/ln33s.bmp"\r
WP33S BITMAP MOVEABLE PURE "bitmaps/wp33s.bmp"\r
WN33S BITMAP MOVEABLE PURE "bitmaps/wn33s.bmp"\r
WL33S BITMAP MOVEABLE PURE "bitmaps/wl33s.bmp"\r
TELL WAVE DISCARDABLE "sounds/tell.wav"\r
UNFINISHED WAVE DISCARDABLE "sounds/unfinished.wav"\r
WIN WAVE DISCARDABLE "sounds/win.wav"\r
+ROAR WAVE DISCARDABLE "sounds/roar.wav"\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
CHECK_BOX(OPT_HighlightMoveArrow, appData.highlightMoveWithArrow);\r
CHECK_BOX(OPT_AutoLogo, appData.autoLogo); // [HGM] logo\r
CHECK_BOX(OPT_SmartMove, appData.oneClick); // [HGM] one-click\r
+ CHECK_BOX(OPT_AutoTags, appData.autoDisplayTags); // [HGM]\r
+ CHECK_BOX(OPT_AutoComment, appData.autoDisplayComment); // [HGM]\r
+ CHECK_BOX(OPT_Headers, appData.headers); // [HGM]\r
+ CHECK_BOX(OPT_Variations, appData.variations); // [HGM]\r
+ CHECK_BOX(OPT_AutoExtend, appData.autoExtend); // [HGM]\r
\r
#undef CHECK_BOX\r
\r
appData.highlightMoveWithArrow=IS_CHECKED(OPT_HighlightMoveArrow);\r
appData.autoLogo =IS_CHECKED(OPT_AutoLogo); // [HGM] logo\r
appData.oneClick =IS_CHECKED(OPT_SmartMove); // [HGM] one-click\r
+ appData.autoDisplayTags =IS_CHECKED(OPT_AutoTags); // [HGM]\r
+ appData.autoDisplayComment =IS_CHECKED(OPT_AutoComment); // [HGM]\r
+ appData.headers =IS_CHECKED(OPT_Headers); // [HGM]\r
+ appData.variations =IS_CHECKED(OPT_Variations); // [HGM]\r
+ appData.autoExtend =IS_CHECKED(OPT_AutoExtend); // [HGM]\r
\r
#undef IS_CHECKED\r
\r
/*\r
* clean up\r
*/\r
- SelectObject(hdcMem, oldBrushPiece);\r
+ SelectObject(hdcMem, oldBrushSquare);\r
SelectObject(hdcMem, oldPen);\r
DeleteObject(brushPiece);\r
DeleteObject(brushPieceDetail);\r
}\r
DeleteObject(pieces[0]);\r
DeleteObject(pieces[1]);\r
+\r
DeleteObject(pieces[2]);\r
return TRUE;\r
\r
-1,\r
-1,\r
OPT_VariantShogi,\r
+ -1, // Chu\r
OPT_VariantXiangqi,\r
OPT_VariantCourier,\r
OPT_VariantGothic,\r
OPT_VariantGreat,\r
-1, // Twilight,\r
OPT_VariantMakruk,\r
+ OPT_VariantASEAN,\r
OPT_VariantSChess,\r
OPT_VariantGrand,\r
OPT_VariantSpartan, // Spartan\r
+ OPT_VariantLion,\r
-2 // sentinel\r
};\r
\r
VariantWhichRadio(HWND hDlg)\r
{\r
int i=0, j;\r
+ *engineVariant = NULLCHAR;\r
while((j = radioButton[i++]) != -2) {\r
if(j == -1) continue; // no menu button\r
if(IsDlgButtonChecked(hDlg, j) &&\r
(appData.noChessProgram || strstr(first.variants, VariantName(i-1)))) return (VariantClass) i-1;\r
}\r
+ for(i=0; i<9; i++) { // check for engine-defined variants\r
+ if(IsDlgButtonChecked(hDlg, OPT_EngineVariant+i) ) {\r
+ GetDlgItemText(hDlg, OPT_EngineVariant+i, engineVariant, MSG_SIZ); // remember name, so we can resolve it later\r
+ return VariantUnknown;\r
+ }\r
+ }\r
return gameInfo.variant; // If no button checked, keep old\r
}\r
\r
void\r
VariantShowRadio(HWND hDlg)\r
{\r
+ char c = *engineVariant;\r
int i=0, j;\r
CheckDlgButton(hDlg, radioButton[gameInfo.variant], TRUE);\r
+ *engineVariant = NULLCHAR; // [HGM] kludge to prevent VariantName will always return engineVariant\r
while((j = radioButton[i++]) != -2) {\r
if(j == -1) continue; // no menu button\r
EnableWindow(GetDlgItem(hDlg, j), appData.noChessProgram || strstr(first.variants, VariantName(i-1)));\r
}\r
+ *engineVariant = c;\r
+ for(i=0; i<9; i++) { // initialize engine-defined variants\r
+ char *v = EngineDefinedVariant(&first, i); // get name of #i\r
+ if(v) { // there is such a variant\r
+ EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), TRUE); // and enable the button\r
+ SetDlgItemText(hDlg, OPT_EngineVariant+i, v); // put its name on button\r
+ } else EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), FALSE); // no such variant; disable button\r
+ }\r
}\r
\r
LRESULT CALLBACK\r
UpdateSampleText(hDlg, OPT_SampleSeek, &mca[ColorSeek]);\r
break;\r
\r
+\r
+\r
+\r
case OPT_ChooseNormalColor:\r
ColorizeTextPopup(hDlg, ColorNormal);\r
UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]);\r
SoundComboData soundComboData[] = {\r
{N_("Move"), NULL},\r
{N_("Bell"), NULL},\r
+ {N_("Roar"), NULL},\r
{N_("ICS Alarm"), NULL},\r
{N_("ICS Win"), NULL},\r
{N_("ICS Loss"), NULL},\r
SetDlgItemInt(hDlg, OPT_Stretch, appData.stretch, FALSE);\r
CheckDlgButton(hDlg, OPT_Reversed, appData.ignoreColors);\r
CheckDlgButton(hDlg, OPT_Mirror, appData.findMirror);\r
+ SetDlgItemText(hDlg, OPT_Counts, "");\r
switch (appData.searchMode) {\r
case 1:\r
CheckDlgButton(hDlg, OPT_Exact, TRUE);\r
appData.searchMode = LoadOptionsWhichRadio(hDlg);\r
appData.ignoreColors = IsDlgButtonChecked(hDlg, OPT_Reversed);\r
appData.findMirror = IsDlgButtonChecked(hDlg, OPT_Mirror);\r
+ GetDlgItemText(hDlg, OPT_Counts, buf, MSG_SIZ);\r
+ appData.minPieces = appData.maxPieces = 0;\r
+ sscanf(buf, "%d-%d", &appData.minPieces, &appData.maxPieces);\r
+ if(appData.maxPieces < appData.minPieces) appData.maxPieces = appData.minPieces;\r
EndDialog(hDlg, TRUE);\r
return TRUE;\r
\r
return result;\r
}\r
\r
+int\r
+IsMultiFormat(char *s)\r
+{\r
+ char *p = strchr(s, ':');\r
+ return p && p != s+1;\r
+}\r
+\r
LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
char buf[MAX_PATH];\r
/* Initialize the dialog items */\r
SetDlgItemText( hDlg, IDC_PolyglotDir, appData.polyglotDir );\r
SetDlgItemInt( hDlg, IDC_HashSize, appData.defaultHashSize, TRUE );\r
+ if(appData.defaultPathEGTB[0])\r
SetDlgItemText( hDlg, IDC_PathToEGTB, appData.defaultPathEGTB );\r
+ else\r
+ SetDlgItemText( hDlg, IDC_PathToEGTB, appData.egtFormats );\r
SetDlgItemInt( hDlg, IDC_SizeOfEGTB, appData.defaultCacheSizeEGTB, TRUE );\r
CheckDlgButton( hDlg, IDC_UseBook, (BOOL) appData.usePolyglotBook );\r
SetDlgItemText( hDlg, IDC_BookFile, appData.polyglotBook );\r
SetDlgItemInt( hDlg, IDC_Games, appData.defaultMatchGames, TRUE );\r
\r
SendDlgItemMessage( hDlg, IDC_PolyglotDir, EM_SETSEL, 0, -1 );\r
+ // [HGM] Yet another ponder duplicate\r
+ CheckDlgButton( hDlg, OPT_PonderNextMove, (BOOL) appData.ponderNextMove );\r
\r
return TRUE;\r
\r
appData.defaultHashSize = GetDlgItemInt(hDlg, IDC_HashSize, NULL, FALSE );\r
appData.defaultCacheSizeEGTB = GetDlgItemInt(hDlg, IDC_SizeOfEGTB, NULL, FALSE );\r
GetDlgItemText( hDlg, IDC_PathToEGTB, buf, sizeof(buf) );\r
- appData.defaultPathEGTB = strdup(buf);\r
+ if(IsMultiFormat(buf)) {\r
+ ASSIGN(appData.egtFormats, buf);\r
+ } else {\r
+ ASSIGN(appData.defaultPathEGTB, buf);\r
+ }\r
GetDlgItemText( hDlg, IDC_BookFile, buf, sizeof(buf) );\r
appData.polyglotBook = strdup(buf);\r
appData.usePolyglotBook = (Boolean) IsDlgButtonChecked( hDlg, IDC_UseBook );\r
- // [HGM] smp: get nr of cores:\r
+ // [HGM] smp: get nr of cores and ponder:\r
oldCores = appData.smpCores;\r
appData.smpCores = GetDlgItemInt(hDlg, IDC_Cores, NULL, FALSE );\r
if(appData.smpCores != oldCores) NewSettingEvent(FALSE, &(first.maxCores), "cores", appData.smpCores);\r
+ PonderNextMoveEvent((Boolean) IsDlgButtonChecked( hDlg, OPT_PonderNextMove ));\r
// [HGM] book: read tick boxes for own book use\r
appData.firstHasOwnBookUCI = (Boolean) IsDlgButtonChecked( hDlg, IDC_OwnBook1 );\r
appData.secondHasOwnBookUCI = (Boolean) IsDlgButtonChecked( hDlg, IDC_OwnBook2 );\r
ofn.hwndOwner = hDlg;\r
ofn.hInstance = hInst;\r
ofn.lpstrFilter = filter;\r
+\r
ofn.lpstrFile = buf;\r
ofn.nMaxFile = sizeof(buf);\r
ofn.lpstrTitle = _("Choose Book");\r
LayoutOptions(int firstOption, int endOption, char *groupName, Option *optionList)\r
{\r
int i, b = strlen(groupName), stop, prefix, right, nextOption, firstButton = buttons;\r
- Control lastType, nextType;\r
+ Control lastType, nextType=Label;\r
\r
nextOption = firstOption;\r
while(nextOption < endOption) {\r
GetOptionValues(HWND hDlg, ChessProgramState *cps, Option *optionList)\r
// read out all controls, and if value is altered, remember it and send it to the engine\r
{\r
- HANDLE hwndCombo;\r
int i, k, new=0, changed=0, len;\r
char **choices, newText[MSG_SIZ], buf[MSG_SIZ], *text;\r
BOOL success;\r
break;\r
case ComboBox:\r
choices = (char**) optionList[j].textValue;\r
- hwndCombo = GetDlgItem(hDlg, 2001+2*i);\r
success = GetDlgItemText( hDlg, 2001+2*i, newText, MSG_SIZ );\r
if(!success) break;\r
new = -1;\r
if(j == -2) {\r
char filter[] =\r
"All files\0*.*\0Game files\0*.pgn;*.gam\0Position files\0*.fen;*.epd;*.pos\0"\r
- "EXE files\0*.exe\0Tournament files (*.trn)\0*.trn\0"\r
+ "EXE files\0*.exe;*.jar\0Tournament files (*.trn)\0*.trn\0"\r
"BIN Files\0*.bin\0LOG Files\0*.log\0INI Files\0*.ini\0"\r
"Image files\0*.bmp\0\0";\r
OPENFILENAME ofn;\r
int extra, num = ES_NUMBER;\r
\r
switch(type) {\r
- case Slider+100:\r
- num = 0; // needs text control for accepting negative numbers\r
+// case Slider+100:\r
+// num = 0; // needs text control for accepting negative numbers\r
case Slider:\r
case Spin:\r
AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i);\r
{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("or specify one below:") },\r
{ 0, 0, 0, NULL, (void*) &nickName, NULL, NULL, TextBox, N_("Nickname (optional):") },\r
{ 0, 0, 0, NULL, (void*) &useNick, NULL, NULL, CheckBox, N_("Use nickname in PGN tag") },\r
- { 0, 0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (*.exe):") },\r
+ { 0, 0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (.exe or .jar):") },\r
{ 0, 0, 0, NULL, (void*) ¶ms, NULL, NULL, TextBox, N_("command-line parameters:") },\r
{ 0, 0, 0, NULL, (void*) &wbOptions, NULL, NULL, TextBox, N_("Special WinBoard options:") },\r
{ 0, 0, 0, NULL, (void*) &engineDir, NULL, NULL, PathName, N_("directory:") },\r
\r
void PseudoOK(HWND hDlg)\r
{\r
- void (*saveOK)();\r
- saveOK = okFunc; okFunc = 0;\r
+ okFunc = 0;\r
GetOptionValues(hDlg, activeCps, activeList);\r
EndDialog( hDlg, 0 );\r
comboCallback = NULL; activeCps = NULL;\r
AddSnapPoint( sd->y_grid, &sd->y_grid_len, rc->bottom );\r
}\r
\r
+static RECT activeRect, mainRect;\r
+static int side, loc; // code for edge we were dragging, and its latest coordinate\r
+\r
static void AddSnapWindow( HWND hWndCaller, SnapData * sd, HWND hWndSnapWindow )\r
{\r
- if( hWndSnapWindow != NULL && hWndCaller != hWndSnapWindow && IsWindowVisible(hWndSnapWindow) ) {\r
+ if( hWndSnapWindow != NULL && IsWindowVisible(hWndSnapWindow) ) {\r
RECT rc;\r
\r
GetWindowRect( hWndSnapWindow, &rc );\r
+ if(hWndSnapWindow == hwndMain) mainRect = rc;\r
\r
- AddSnapRectangle( sd, &rc );\r
+ if(hWndCaller != hWndSnapWindow) {\r
+ AddSnapRectangle( sd, &rc );\r
+ } else {\r
+ activeRect = rc; // [HGM] glue: remember original geometry of dragged window\r
+ }\r
}\r
}\r
\r
\r
snapData->x_grid_len = 0;\r
snapData->y_grid_len = 0;\r
+ side = 0;\r
\r
/* Add desktop area */\r
if( SystemParametersInfo( SPI_GETWORKAREA, 0, &rc, 0 ) ) {\r
switch( wParam ) {\r
case WMSZ_BOTTOM:\r
AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y );\r
- lprc->bottom += delta_y;\r
+ lprc->bottom += delta_y; side = 4; loc = lprc->bottom;\r
break;\r
case WMSZ_BOTTOMLEFT:\r
AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y );\r
break;\r
case WMSZ_LEFT:\r
AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x );\r
- lprc->left += delta_x;\r
+ lprc->left += delta_x; side = 1; loc = lprc->left;\r
break;\r
case WMSZ_RIGHT:\r
AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x );\r
- lprc->right += delta_x;\r
+ lprc->right += delta_x; side = 2; loc = lprc->right;\r
break;\r
case WMSZ_TOP:\r
AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y );\r
- lprc->top += delta_y;\r
+ lprc->top += delta_y; side = 3; loc = lprc->top;\r
break;\r
case WMSZ_TOPLEFT:\r
AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y );\r
return TRUE;\r
}\r
\r
+static int Adjust( LONG *data, int new, int old , int vertical)\r
+{\r
+ // protect edges that also touch main window\r
+ if(!vertical && (old == mainRect.left || old == mainRect.right)) return 0;\r
+ if( vertical && (old == mainRect.top || old == mainRect.bottom)) return 0;\r
+ // if the coordinate was the same as the old, now make it the same as the new edge position\r
+ if(*data == old) { *data = new; return 1; }\r
+ return 0;\r
+}\r
+\r
+static void KeepTouching( int side, int new, int old, HWND hWnd )\r
+{ // if the mentioned window was touching on the moved edge, move its touching edge too\r
+ if( IsWindowVisible(hWnd) ) {\r
+ RECT rc;\r
+ int i = 0;\r
+\r
+ GetWindowRect( hWnd, &rc );\r
+\r
+ switch(side) { // figure out which edge we might need to drag along (if any)\r
+ case 1: i = Adjust(&rc.right, new, old, 0); break;\r
+ case 2: i = Adjust(&rc.left, new, old, 0); break;\r
+ case 3: i = Adjust(&rc.bottom, new, old, 1); break;\r
+ case 4: i = Adjust(&rc.top, new, old, 1); break;\r
+ }\r
+\r
+ if(i) { // the correct edge was touching, and is adjusted\r
+ SetWindowPos(hWnd, HWND_TOP, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOZORDER );\r
+ }\r
+ }\r
+}\r
+\r
LRESULT OnExitSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam )\r
{\r
+ if(side && hWnd != hwndMain) { // [HGM] glue: we have been sizing, by dragging an edge\r
+ int *grid = (side > 2 ? snapData->y_grid : snapData->x_grid);\r
+ int i, pos = -1, len = (side > 2 ? snapData->y_grid_len : snapData->x_grid_len);\r
+\r
+ switch(side) {\r
+ case 1: pos = activeRect.left; break;\r
+ case 2: pos = activeRect.right; break;\r
+ case 3: pos = activeRect.top; break;\r
+ case 4: pos = activeRect.bottom; break;\r
+ }\r
+\r
+ for(i=0; i<len; i++) {\r
+ if(grid[i] == pos) break; // the dragged side originally touched another auxiliary window\r
+ }\r
+\r
+ if(i < len) { // we were touching another sticky window: figure out how, and adapt it if needed\r
+ KeepTouching(side, loc, pos, moveHistoryDialog);\r
+ KeepTouching(side, loc, pos, evalGraphDialog);\r
+ KeepTouching(side, loc, pos, engineOutputDialog);\r
+ KeepTouching(side, loc, pos, gameListDialog);\r
+ }\r
+ }\r
return 0;\r
}\r
// [HGM] bitmaps: put before incuding the bitmaps / pixmaps, to know how many piece types there are.
#include "common.h"
-#if HAVE_LIBXPM
-#include <X11/xpm.h>
-#define IMAGE_EXT "xpm"
-#else
-#define IMAGE_EXT "xim"
-#endif
-
#include "bitmaps/icon_white.bm"
#include "bitmaps/icon_black.bm"
#include "bitmaps/checkmark.bm"
/* Max possible square size */
#define MAXSQSIZE 256
-static int xpm_avail[MAXSQSIZE];
-
-#ifdef HAVE_DIR_STRUCT
-
-/* Extract piece size from filename */
-static int
-xpm_getsize (char *name, int len, char *ext)
-{
- char *p, *d;
- char buf[10];
-
- if (len < 4)
- return 0;
-
- if ((p=strchr(name, '.')) == NULL ||
- StrCaseCmp(p+1, ext) != 0)
- return 0;
-
- p = name + 3;
- d = buf;
-
- while (*p && isdigit(*p))
- *(d++) = *(p++);
-
- *d = 0;
- return atoi(buf);
-}
-
-/* Setup xpm_avail */
-static int
-xpm_getavail (char *dirname, char *ext)
-{
- DIR *dir;
- struct dirent *ent;
- int i;
-
- for (i=0; i<MAXSQSIZE; ++i)
- xpm_avail[i] = 0;
-
- if (appData.debugMode)
- fprintf(stderr, "XPM dir:%s:ext:%s:\n", dirname, ext);
-
- dir = opendir(dirname);
- if (!dir)
- {
- fprintf(stderr, _("%s: Can't access XPM directory %s\n"),
- programName, dirname);
- exit(1);
- }
-
- while ((ent=readdir(dir)) != NULL) {
- i = xpm_getsize(ent->d_name, NAMLEN(ent), ext);
- if (i > 0 && i < MAXSQSIZE)
- xpm_avail[i] = 1;
- }
-
- closedir(dir);
-
- return 0;
-}
-
-void
-xpm_print_avail (FILE *fp, char *ext)
-{
- int i;
-
- fprintf(fp, _("Available `%s' sizes:\n"), ext);
- for (i=1; i<MAXSQSIZE; ++i) {
- if (xpm_avail[i])
- printf("%d\n", i);
- }
-}
-
-/* Return XPM piecesize closest to size */
-int
-xpm_closest_to (char *dirname, int size, char *ext)
-{
- int i;
- int sm_diff = MAXSQSIZE;
- int sm_index = 0;
- int diff;
-
- xpm_getavail(dirname, ext);
-
- if (appData.debugMode)
- xpm_print_avail(stderr, ext);
-
- for (i=1; i<MAXSQSIZE; ++i) {
- if (xpm_avail[i]) {
- diff = size - i;
- diff = (diff<0) ? -diff : diff;
- if (diff < sm_diff) {
- sm_diff = diff;
- sm_index = i;
- }
- }
- }
-
- if (!sm_index) {
- fprintf(stderr, _("Error: No `%s' files!\n"), ext);
- exit(1);
- }
-
- return sm_index;
-}
-#else /* !HAVE_DIR_STRUCT */
-/* If we are on a system without a DIR struct, we can't
- read the directory, so we can't collect a list of
- filenames, etc., so we can't do any size-fitting. */
-int
-xpm_closest_to (char *dirname, int size, char *ext)
-{
- fprintf(stderr, _("\
-Warning: No DIR structure found on this system --\n\
- Unable to autosize for XPM/XIM pieces.\n\
- Please report this error to %s.\n\
- Include system type & operating system in message.\n"), PACKAGE_BUGREPORT););
- return size;
-}
-#endif /* HAVE_DIR_STRUCT */
-
-
/* Arrange to catch delete-window events */
Atom wm_delete_window;
void
if(sscanf(name, "size%d:", &size)) {
// [HGM] font: font is meant for specific boardSize (likely from settings file);
// defer processing it until we know if it matches our board size
- if(size >= 0 && size<MAX_SIZE) { // for now, fixed limit
+ if(strstr(name, "-*-") && // only pay attention to things that look like X-fonts
+ size >= 0 && size<MAX_SIZE) { // for now, fixed limit
fontTable[number][size] = strdup(strchr(name, ':')+1);
fontValid[number][size] = True;
}
if(colorVariable[n]) *(char**)colorVariable[n] = strdup(name);
}
+char *
+Col2Text (int n)
+{
+ return *(char**)colorVariable[n];
+}
+
void
ParseTextAttribs (ColorClass cc, char *s)
{
}
void
+GetPlacement (DialogClass dlg, WindowPlacement *wp)
+{ // wrapper to shield back-end from widget type
+ if(shellUp[dlg]) GetActualPlacement(shells[dlg], wp);
+}
+
+void
GetWindowCoords ()
{ // wrapper to shield use of window handles from back-end (make addressible by number?)
// In XBoard this will have to wait until awareness of window parameters is implemented
case ArgTwo:
case ArgNone:
case ArgCommSettings:
+ case ArgMaster:
+ case ArgInstall:
break;
}
return p;
GenerateGlobalTranslationTable (void)
{
/* go through all menu items and extract the keyboard shortcuts, so that X11 can load them */
- char *output;
+ char *output[2];
- int i,j;
+ int i,j,n=0;
MenuItem *mi;
- output = strdup("");
+ output[0] = strdup(""); // build keystrokes with and wo mod keys separately
+ output[1] = strdup(""); // so the more specific can preceed the other
/* loop over all menu entries */
- for( i=0; menuBar[i].mi ; i++)
+ for( i=0; menuBar[i-n].mi || !n++; i++)
{
- mi = menuBar[i].mi;
+ mi = menuBar[i+n].mi; // kludge to access 'noMenu' behind sentinel
for(j=0; mi[j].proc; j++)
{
if (mi[j].accel)
mods[strlen(mods)-1]='\0';
/* get the name for the callback, we can use MenuItem() here that will call KeyBindingProc */
- size_t namesize = snprintf(NULL, 0, "%s.%s", menuBar[i].ref, mi[j].ref);
- char *name = malloc(namesize+1);
- snprintf(name, namesize+1, "%s.%s", menuBar[i].ref, mi[j].ref);
+ char *name = malloc(MSG_SIZ);
+ if(n) snprintf(name, MSG_SIZ, "%s", mi[j].ref);
+ else snprintf(name, MSG_SIZ, "%s.%s", menuBar[i].ref, mi[j].ref);
- size_t buffersize = snprintf(NULL, 0, ":%s<Key>%s: MenuItem(%s) \n ", mods, key, name);
- char *buffer = malloc(buffersize+1);
- snprintf(buffer, buffersize+1, ":%s<Key>%s: MenuItem(%s) \n ", mods, key, name);
+ char *buffer = malloc(MSG_SIZ);
+ snprintf(buffer, MSG_SIZ, ":%s<Key>%s: MenuItem(%s) \n ", mods, key, name);
/* add string to the output */
- output = realloc(output, strlen(output) + strlen(buffer)+1);
- strncat(output, buffer, strlen(buffer));
+ output[shift|alt|ctrl] = realloc(output[shift|alt|ctrl], strlen(output[shift|alt|ctrl]) + strlen(buffer)+1);
+ strncat(output[shift|alt|ctrl], buffer, strlen(buffer));
/* clean up */
free(key);
}
}
}
- return output;
+ output[1] = realloc(output[1], strlen(output[1]) + strlen(output[0])+1);
+ strncat(output[1], output[0], strlen(output[0]));
+ free(output[0]);
+ return output[1];
}
char *p;
int forceMono = False;
+ extern Option chatOptions[]; // FIXME: adapt Chat window, removing ICS pane and Hide button
+ chatOptions[6].type = chatOptions[10].type = Skip;
+
srandom(time(0)); // [HGM] book: make random truly random
setbuf(stdout, NULL);
debugFP = stderr;
if(argc > 1 && (!strcmp(argv[1], "-v" ) || !strcmp(argv[1], "--version" ))) {
- printf("%s version %s\n", PACKAGE_NAME, PACKAGE_VERSION);
+ printf("%s version %s\n\n configure options: %s\n", PACKAGE_NAME, PACKAGE_VERSION, CONFIGURE_OPTIONS);
exit(0);
}
exit(0);
}
+ if(argc > 1 && !strcmp(argv[1], "--show-config")) { // [HGM] install: called to print config info
+ typedef struct {char *name, *value; } Config;
+ static Config configList[] = {
+ { "Datadir", DATADIR },
+ { "Sysconfdir", SYSCONFDIR },
+ { NULL }
+ };
+ int i;
+
+ for(i=0; configList[i].name; i++) {
+ if(argc > 2 && strcmp(argv[2], configList[i].name)) continue;
+ if(argc > 2) printf("%s", configList[i].value);
+ else printf("%-12s: %s\n", configList[i].name, configList[i].value);
+ }
+ exit(0);
+ }
+
programName = strrchr(argv[0], '/');
if (programName == NULL)
programName = argv[0];
programName, appData.boardSize);
exit(2);
}
+ if(BOARD_WIDTH > 8)
+ squareSize = (squareSize*8 + BOARD_WIDTH/2)/BOARD_WIDTH; // scale height
if (i < 7) {
/* Find some defaults; use the nearest known size */
SizeDefaults *szd, *nearest;
} else {
SizeDefaults *szd = sizeDefaults;
if (*appData.boardSize == NULLCHAR) {
- while (DisplayWidth(xDisplay, xScreen) < szd->minScreenSize ||
- DisplayHeight(xDisplay, xScreen) < szd->minScreenSize) {
+ while (DisplayWidth(xDisplay, xScreen) < (szd->minScreenSize*BOARD_WIDTH + 4)/8 ||
+ DisplayHeight(xDisplay, xScreen) < (szd->minScreenSize*BOARD_HEIGHT + 4)/8) {
szd++;
}
if (szd->name == NULL) szd--;
EngineOutputPopUp();
}
+ gameInfo.boardWidth = 0; // [HGM] pieces: kludge to ensure InitPosition() calls InitDrawingSizes()
+ InitPosition(TRUE);
+
InitBackEnd2();
if (errorExitStatus == -1) {
}
}
- gameInfo.boardWidth = 0; // [HGM] pieces: kludge to ensure InitPosition() calls InitDrawingSizes()
- InitPosition(TRUE);
UpdateLogos(TRUE);
// XtSetKeyboardFocus(shellWidget, formWidget);
XSetInputFocus(xDisplay, XtWindow(formWidget), RevertToPointerRoot, CurrentTime);
return 0;
}
+void
+DoEvents ()
+{
+ XtInputMask m;
+ while((m = XtAppPending(appContext))) XtAppProcessEvent(appContext, m);
+}
+
RETSIGTYPE
TermSizeSigHandler (int sig)
{
#define BORDER_X_OFFSET 3
#define BORDER_Y_OFFSET 27
#define FIRST_CHESS_PROGRAM "fairymax"
-#define SECOND_CHESS_PROGRAM "fairymax"
+#define SECOND_CHESS_PROGRAM ""
#define FIRST_DIRECTORY "."
#define SECOND_DIRECTORY "."
#define SOUND_BELL ""
# define N_(s) s
#endif
-#include <X11/xpm.h>
+// [HGM] bitmaps of some ICONS used in the engine-outut window
+
+static unsigned char CLEAR_14[28];
+
+static unsigned char WHITE_14[] = {
+0xe0, 0x01, 0x18, 0x06, 0x04, 0x08, 0x02, 0x10, 0x02, 0x10, 0x01, 0x20, 0x01, 0x20,
+0x01, 0x20, 0x01, 0x20, 0x02, 0x10, 0x02, 0x10, 0x04, 0x08, 0x18, 0x06, 0xe0, 0x01
+};
+
+static unsigned char BLACK_14[] = {
+0xe0, 0x01, 0xf8, 0x07, 0xfc, 0x0f, 0xfe, 0x1f, 0xfe, 0x1f, 0xff, 0x3f, 0xff, 0x3f,
+0xff, 0x3f, 0xff, 0x3f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfc, 0x0f, 0xf8, 0x07, 0xe0, 0x01
+};
+
+static unsigned char ANALYZE_14[] = {
+0x80, 0x03, 0x60, 0x0c, 0x10, 0x10, 0x90, 0x10, 0xc8, 0x20, 0x08, 0x20, 0x08, 0x20,
+0x10, 0x10, 0x10, 0x10, 0x68, 0x0c, 0x94, 0x03, 0x0a, 0x00, 0x07, 0x00, 0x00, 0x00
+};
+
+static unsigned char THINK_14[] = {
+0xe0, 0x00, 0x18, 0x03, 0x44, 0x04, 0x42, 0x08, 0x42, 0x08, 0x41, 0x10, 0xe1, 0x13,
+0x41, 0x10, 0x02, 0x08, 0x02, 0x08, 0x04, 0x04, 0x18, 0x03, 0xe0, 0x00, 0x00, 0x00
+};
+
+static unsigned char PONDER_14[] = {
+0x30, 0x03, 0x8c, 0x0c, 0x02, 0x10, 0x01, 0x08, 0x01, 0x10, 0x06, 0x20, 0x04, 0x20,
+0x02, 0x10, 0x04, 0x0c, 0xc8, 0x04, 0x34, 0x03, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00
+};
+
+static unsigned char UNKNOWN_14[] = {
+0xe0, 0x01, 0x58, 0x07, 0xac, 0x0a, 0x56, 0x15, 0xaa, 0x1a, 0x55, 0x35, 0xab, 0x2a,
+0x55, 0x35, 0xab, 0x2a, 0x56, 0x15, 0xaa, 0x1a, 0x54, 0x0d, 0xb8, 0x06, 0xe0, 0x01
+};
-// [HGM] pixmaps of some ICONS used in the engine-outut window
-#include "pixmaps/WHITE_14.xpm"
-#include "pixmaps/BLACK_14.xpm"
-#include "pixmaps/CLEAR_14.xpm"
-#include "pixmaps/UNKNOWN_14.xpm"
-#include "pixmaps/THINKING_14.xpm"
-#include "pixmaps/PONDER_14.xpm"
-#include "pixmaps/ANALYZING_14.xpm"
/* Module variables */
static void
-ReadIcon (char *pixData[], int iconNr, Widget w)
+ReadIcon (unsigned char pixData[], int iconNr, Widget w)
{
- int r;
-
- if ((r=XpmCreatePixmapFromData(xDisplay, XtWindow(w),
- pixData,
- &(icons[iconNr]),
- NULL, NULL /*&attr*/)) != 0) {
- fprintf(stderr, _("Error %d loading icon image\n"), r);
- exit(1);
- }
+ icons[iconNr] = XCreateBitmapFromData(xDisplay, XtWindow(w), (char*) pixData, 14, 14);
}
void
}
void
+SetTextColor (char **cnames, int fg, int bg, int attr)
+{ // this is not possible in Xaw
+}
+
+void
+AppendColorized (Option *opt, char *message, int count)
+{
+ if(!opt->handle) return;
+ AppendText(opt, message);
+}
+
+void
+Show (Option *opt, int hide)
+{
+ static Dimension h;
+ Arg args[16];
+ Dimension v;
+ int j=0;
+return; // FIXME: it would be nice if the Chat window did have an ICS pane we could hide behind
+printf("Show(%d) %x\n", hide, opt->handle);
+ if(!opt->handle) return;
+ if(hide) { // make sure original size is saved
+ XtSetArg(args[j], XtNheight, &v); j++;
+ XtGetValues(opt->handle, args, j);
+ if(v != 1) h = v;
+ }
+printf("h = %d\n",h);
+ j = 0;
+ XtSetArg(args[j], XtNheight, hide ? 1 : h); j++;
+ XtSetValues(opt->handle, args, j);
+}
+
+void
HighlightText (Option *opt, int start, int end, Boolean on)
{
if(on)
}
static void
+LabelCallback (Widget ww, XtPointer client_data, XEvent *event, Boolean *b)
+{ // called on ButtonPress in label widgets with attached user handler (clocks!)
+ int s, data = (intptr_t) client_data;
+ Option *opt = dialogOptions[data >> 8] + (s = data & 255);
+
+ if(((XButtonEvent*)event)->button != Button1) s = -s;
+ ((ButtonCallback*) opt->target) (s);
+}
+
+static void
CheckCallback (Widget ww, XtPointer client_data, XEvent *event, Boolean *b)
{
int s, data = (intptr_t) client_data;
Option *opt = dialogOptions[data >> 8] + (data & 255);
- if(opt->type == Label) { ((ButtonCallback*) opt->target)(data&255); return; }
-
GetWidgetState(opt, &s);
SetWidgetState(opt, !s);
}
if(--j < opt->min) return;
} else return;
snprintf(buf, MSG_SIZ, "%d", j);
- SetWidgetText(opt, buf, TransientDlg);
+ SetWidgetText(opt, buf, shellUp[TransientDlg] ? TransientDlg : MasterDlg);
}
static void
{ // to cause popdown through a translation (Delete Window button!)
int dlg = atoi(prms[0]);
Widget sh = shells[dlg];
- if(shellUp[BrowserDlg] && dlg != BrowserDlg || dialogError) return; // prevent closing dialog when it has an open file-browse daughter
+ if(shellUp[BrowserDlg] && dlg != BrowserDlg || dialogError || dlg == MasterDlg && shellUp[TransientDlg])
+ return; // prevent closing dialog when it has an open file-browse or transient daughter
shells[dlg] = w;
PopDown(dlg);
shells[dlg] = sh; // restore
shellUp[dlgNr] = True;
return 0;
}
+ if(dlgNr == TransientDlg && parent == BoardWindow && shellUp[MasterDlg]) parent = MasterDlg; // MasterDlg can always take role of main window
dialogOptions[dlgNr] = option; // make available to callback
// post currentOption globally, so Spin and Combo callbacks can already use it
for(h=0; h<height || c == width-1; h++) {
i = h + c*height;
if(option[i].type == EndMark) break;
- if(option[i].type == -1) continue;
+ if(option[i].type == Skip) continue;
lastrow = forelast;
forelast = last;
switch(option[i].type) {
XtSetArg(args[j], XtNlabel, _(msg)); j++;
option[i].handle = (void*) (last = XtCreateManagedWidget("label", labelWidgetClass, form, args, j));
if(option[i].target) // allow user to specify event handler for button presses
- XtAddEventHandler(last, ButtonPressMask, False, CheckCallback, (XtPointer)(intptr_t) i + 256*dlgNr);
+ XtAddEventHandler(last, ButtonPressMask, False, LabelCallback, (XtPointer)(intptr_t) i + 256*dlgNr);
break;
case SaveButton:
case Button:
j = SetPositionAndSize(args, last, lastrow, 3 /* border */,
option[i].max /* w */, shrink ? textHeight : 0 /* h */, option[i].min & 0xE | chain /* chain */);
XtSetArg(args[j], XtNlabel, _(option[i].name)); j++;
- if(option[i].textValue) { // special for buttons of New Variant dialog
+ if(option[i].textValue && *option[i].textValue == '#') { // special for buttons of New Variant dialog
XtSetArg(args[j], XtNsensitive, option[i].value >= 0 && (appData.noChessProgram
|| strstr(first.variants, VariantName(option[i].value)))); j++;
XtSetArg(args[j], XtNborderWidth, (gameInfo.variant == option[i].value)+1); j++;
last = form; lastrow = oldLastRow; form = oldForm; forelast = oldForeLast;
break;
case Break:
+ if(c) break;
width++;
height = i+1;
stack = !(option[i].min & SAME_ROW);
XtAddCallback(b_ok, XtNcallback, GenericCallback, (XtPointer)(intptr_t) (30001 + (dlgNr<<16)));
if(!(option[i].min & NO_CANCEL)) {
XtSetArg(args[1], XtNfromHoriz, b_ok); // overwrites!
- b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
+ b_cancel = XtCreateManagedWidget(_("Cancel"), commandWidgetClass, form, args, j);
XtAddCallback(b_cancel, XtNcallback, GenericCallback, (XtPointer)(intptr_t) (30000 + (dlgNr<<16)));
}
}
SetInsertPos (Option *opt, int pos)
{
Arg args[16];
+ if(pos == 999999) { // this kludge to indicate end in GTK is fatal in Xaw
+ char *s;
+ GetWidgetText(opt, &s);
+ pos = strlen(s) - 1;
+ }
XtSetArg(args[0], XtNinsertPosition, pos);
XtSetValues(opt->handle, args, 1);
// SetFocus(opt->handle, shells[InputBoxDlg], NULL, False); // No idea why this does not work, and the following is needed:
{ // can be used as handler for any text edit in any dialog (from GenericPopUp, that is)
int n = prms[0][0] - '0';
Widget sh = XtParent(XtParent(XtParent(w))); // popup shell
+ extern int hidden;
+ hidden = 0;
if(n<2) { // Enter or Esc typed from primed text widget: treat as if dialog OK or cancel button hit.
int dlgNr; // figure out what the dialog number is by comparing shells (because we must pass it :( )
}
void
-HardSetFocus (Option *opt)
+HardSetFocus (Option *opt, DialogClass dlg)
{
XSetInputFocus(xDisplay, XtWindow(opt->handle), RevertToPointerRoot, CurrentTime);
}
-soundTell phone.wav
-soundChallenge gong.wav
-soundMove woodthunk.wav
+-soundRoar roar.wav
-soundIcsAlarm penalty.wav
-pasteSelection false
-keepLineBreaksICS false
-defaultTourneyName "Tourney_%y%M%d_%h%m.trn"
-variations true
-appendPV true
+-memoHeaders true
;
; PGN format & Game List
;
; Engines & adjudicatons in engine-engine games
;
-firstChessProgram fairymax
--secondChessProgram fairymax
-firstChessProgramNames {fairymax
"Fruit 2.1" -fcp fruit -fUCI
"Crafty" -fcp crafty
}
-niceEngines 0
-polyglotDir ""
--adapterCommand 'polyglot -noini -ec "%fcp" -ed "%fd" -uci NalimovCache=%defaultCacheSizeEGTB'
+-adapterCommand 'polyglot -noini -ec "%fcp" -ed "%fd" -uci NalimovCache=%defaultCacheSizeEGTB -pg ShowTbHits=true'
-defaultPathEGTB "/egtb"
-egtFormats ""
-testClaims true
Tell (name);tell $name $input;
Play (name);play $name;
Message (name);message $name $input;
+Copy;$copy;
+Open Chat Box (name);$chat;
}
;
; Save user settings.
option is true, in which case they are saved in an older,
human-readable format that is specific to XBoard. Both formats
can be read back by the @samp{Load Position} command.
+@item Save Selected Games
+@cindex Save Selected Games
+Will cause all games selected for display in the current Game List
+to be appended to a file of the user's choice.
@item Save Games as Book
@cindex Save Games as Book, Menu Item
-Creates an opening book from the currently loaded game file.
+Creates an opening book from the currently loaded game file,
+incorporating only the games currently selected in the Game List.
The book will be saved on the file specified in the @samp{Common Engine}
options dialog.
The value of @samp{Book Depth} specified in that same dialog will
This command can take a long time to process,
and the size of the buffer is currently limited.
At the end the buffer will be saved as a Polyglot book,
-but the buffer will ot be cleared,
+but the buffer will not be cleared,
so that you can continue adding games from other game files.
@item Mail Move
@itemx Reload CMail Message
Currently no keystroke is assigned to this ReloadPositionProc.
@end table
-You can add or remove shortcut keys using the X resources
-@code{form.translations}. Here is an example of what would go in your
-@file{.Xresources} file:
+In the Xaw build of XBoard you can add or remove shortcut keys
+using the X resources @code{paneA.translations}.
+Here is an example of what could go into your
+@file{.Xdefaults} file:
@example
-XBoard*form.translations: \
- Shift<Key>?: AboutGameProc() \n\
- <Key>y: AcceptProc() \n\
- <Key>n: DeclineProc() \n\
- <Key>i: NothingProc()
+XBoard*paneA.translations: \
+ Shift<Key>?: MenuItem(Help.About) \n\
+ Ctrl<Key>y: MenuItem(Action.Accept) \n\
+ Ctrl<Key>n: MenuItem(Action.Decline) \n\
+ Ctrl<Key>i: MenuItem(Nothing)
@end example
@noindent
-Binding a key to @code{NothingProc} makes it do nothing, thus removing
-it as a shortcut key. The XBoard commands that can be bound to keys
+So the key should always be bound to the action 'MenuItem',
+with the (hierarchical) name of the menu item as argument.
+There are a few actions available for which no menu item exists:
+Binding a key to @code{Nothing} makes it do nothing, thus removing
+it as a shortcut key. Other such functions that can be bound to keys
are:
@example
-AbortProc, AboutGameProc, AboutProc, AcceptProc, AdjournProc,
-AlwaysQueenProc, AnalysisModeProc, AnalyzeFileProc,
-AnimateDraggingProc, AnimateMovingProc, AutobsProc, AutoflagProc,
-AutoflipProc, AutoraiseProc, AutosaveProc, BackwardProc,
-BlindfoldProc, BookProc, CallFlagProc, CopyGameProc, CopyPositionProc,
-DebugProc, DeclineProc, DrawProc, EditCommentProc, EditGameProc,
-EditPositionProc, EditTagsProc, EnterKeyProc, FlashMovesProc,
-FlipViewProc, ForwardProc, GetMoveListProc, HighlightLastMoveProc,
-HintProc, IcsAlarmProc, IcsClientProc, IcsInputBoxProc,
-InfoProc, LoadGameProc, LoadNextGameProc, LoadNextPositionProc,
-LoadPositionProc, LoadPrevGameProc, LoadPrevPositionProc,
-LoadSelectedProc, MachineBlackProc, MachineWhiteProc, MailMoveProc,
-ManProc, MoveNowProc, MoveSoundProc, NothingProc, OldSaveStyleProc,
-PasteGameProc, PastePositionProc, PauseProc, PeriodicUpdatesProc,
-PonderNextMoveProc, PopupExitMessageProc, PopupMoveErrorsProc,
-PremoveProc, QuietPlayProc, QuitProc, ReloadCmailMsgProc,
-ReloadGameProc, ReloadPositionProc, RematchProc, ResetProc,
-ResignProc, RetractMoveProc, RevertProc, SaveGameProc,
-SavePositionProc, ShowCoordsProc, ShowGameListProc, ShowThinkingProc,
-StopExaminingProc, StopObservingProc, TestLegalityProc, ToEndProc,
-ToStartProc, TrainingProc, TruncateGameProc, and TwoMachinesProc.
+AboutGame, DebugProc (switches the -debug option on or off),
+LoadNextGame, LoadPrevGame, ReloadGame, ReloadPosition.
@end example
@node Options
The font used for the clocks. If the option value is a pattern
that does not specify the font size, XBoard tries to choose an
appropriate font for the board size being used.
-Default: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
+Default Xaw: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
+Default GTK: Sans Bold %d.
@item -coordFont font
@cindex coordFont, option
@cindex Font, coordinates
is true. If the option value is a pattern that does not specify
the font size, XBoard tries to choose an appropriate font for
the board size being used.
-Default: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
+Default Xaw: -*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*.
+Default GTK: Sans Bold %d.
@item -messageFont font
@cindex messageFont, option
@cindex Font, message
-The font used for popup dialogs, menus, comments, etc.
+The font used for popup dialogs, menus, etc.
If the option value is a pattern that does not specify
the font size, XBoard tries to choose an appropriate font for
the board size being used.
-Default: -*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*.
+Default Xaw: -*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*.
+Default GTK: Sans Bold %d.
+@cindex tagsFont, option
+@cindex Font, tags
+The font used in the Edit Tags dialog.
+If the option value contains %d, XBoard will replace it by
+an appropriate font for the board size being used.
+(Only used in GTK build.)
+Default: Sans Normal %d.
+@cindex commentFont, option
+@cindex Font, comment
+The font used in the Edit Comment dialog.
+If the option value contains %d, XBoard will replace it by
+an appropriate font for the board size being used.
+(Only used in GTK build.)
+Default: Sans Normal %d.
+@cindex icsFont, option
+@cindex Font, ics
+The font used to display ICS output in the ICS Chat window.
+As ICS output often contains tables aligned by spaces,
+a mono-space font is recommended here.
+If the option value contains %d, XBoard will replace it by
+an appropriate font for the board size being used.
+(Only used in GTK build.)
+Default: Monospace Normal %d.
+@cindex moveHistoryFont, option
+@cindex Font, moveHistory
+The font used in Move History and Engine Output windows.
+As these windows display mainly moves,
+one could use a figurine font here.
+If the option value contains %d, XBoard will replace it by
+an appropriate font for the board size being used.
+(Only used in GTK build.)
+Default: Sans Normal %d.
+@cindex gameListFont, option
+@cindex Font, gameList
+The font used in the listbox of the Game List window.
+If the option value contains %d, XBoard will replace it by
+an appropriate font for the board size being used.
+(Only used in GTK build.)
+Default: Sans Bold %d.
@item -fontSizeTolerance tol
@cindex fontSizeTolerance, option
In the font selection algorithm, a nonscalable font will be preferred
When true, scores will always be printed from the white point-of-view,
rather than the side-to-move point-of-view.
Default: False.
+@item -memoHeaders true|false
+@cindex memoHeaders, option
+When true, column headers will be displayed in the Engine Output window
+for the depth, score, time and nodes data.
+Right-clicking on these headers will hide or show the corresponding data.
+(Not intended for dynamic use, as already printed data of the current search
+will not be affected!)
+Defaul: False.
@end table
@node Adjudication Options
knightmate King moves as Knight, and vice versa
super Superchess (shuffle variant with 4 exo-pieces)
makruk Thai Chess (shatranj-like, P promotes on 6th rank)
+asean ASEAN Chess (a modernized version of Makruk)
spartan Spartan Chess (black has unorthodox pieces)
fairy A catchall variant in which all piece types
known to XBoard can participate (8x8)
@itemx -delayAfterQuit number
@cindex delayBeforeQuit, option
@cindex delayAfterQuit, option
-These options specify how long XBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the 'quit' command. The second one determines the pause after killing the engine, to make sure it dies.
+These options order pauses before and after sending the "quit" command to an engine that must be terminated.
+The pause between quit and the previous command is specified in milliseconds.
+The pause after quit is used to schedule a kill signal to be sent to the engine process after the
+number of specified seconds plus one.
+This signal is a different one as the terminiation signal described in the protocol specs
+which engines can suppress or ignore, and which is sent directly after the "quit" command.
+Setting @code{delayAfterQuit} to -1 will suppress sending of the kill signal.
+Default: 0
@item -searchMode n
@cindex searchMode, option
The integer n encodes the mode for the @samp{find position} function.
* Fairy-Max:: The Fairy-Max chess engine.
* HoiChess:: The HoiChess chess engine.
* Crafty:: The Crafty chess engine.
-* zic2xpm:: The program used to import chess sets from ZIICS.
@end menu
@node GNU Chess
<crafty's directory> is the directory in which you installed Crafty
and placed its book and other support files.
-@node zic2xpm
-@section zic2xpm
-
-The ``zic2xpm'' program is used to import chess sets from the ZIICS(*)
-program into XBoard. ``zic2xpm'' is part of the XBoard distribution.
-ZIICS is available from:
-
-ftp://ftp.freechess.org/pub/chess/DOS/ziics131.exe
-
-To import ZIICS pieces, do this:
-@table @asis
-@item 1. Unzip ziics131.exe into a directory:
-
-@example
-unzip -L ziics131.exe -d ~/ziics
-@end example
-@item 2. Use zic2xpm to convert a set of pieces to XBoard format.
-
-For example, let's say you want to use the
-FRITZ4 set. These files are named ``fritz4.*'' in the ZIICS distribution.
-
-@example
-mkdir ~/fritz4
-cd ~/fritz4
-zic2xpm ~/ziics/fritz4.*
-@end example
-@item 3. Give XBoard the ``-pixmap'' option when starting up, e.g.:
-
-@example
-xboard -pixmap ~/fritz4
-@end example
-@end table
-
-(*) ZIICS is a separate copyrighted work of Andy McFarland.
-The ``ZIICS pieces'' are copyrighted works of their respective
-creators. Files produced by ``zic2xpm'' are for PERSONAL USE ONLY
-and may NOT be redistributed without explicit permission from
-the original creator(s) of the pieces.
-
@ifnottex
@node Copyright
@unnumbered Copyright
extern int squareSize, lineGap, defaultLineGap;
extern int startedFromPositionFile;
extern char *icsTextMenuString;
-
+extern int hi2X, hi2Y;
+++ /dev/null
-/*
- zic2xpm.c
-
- Program to convert pieces from ZIICS format to XPM & XIM format.
- (C version) By Frank McIngvale <frankm@hiwaay.net>.
-
- Copyright (C) 1996, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
-
- NOTICE: The piece images distributed with ZIICS are
- copyrighted works of their original creators. Images
- converted with zic2xpm may not be redistributed without
- the permission of the copyright holders. Do not contact
- the authors of zic2xpm or of ZIICS itself to request
- permission.
-
- NOTICE: The format of the ZIICS piece file was gleaned from
- SHOWSETS.PAS, a part of ZIICS. Thanks to Andy McFarland
- (Zek on ICC) for making this source available! ZIICS is a
- completely separate and copyrighted work of Andy
- McFarland. Use and distribution of ZIICS falls under the
- ZIICS license, NOT the GNU General Public License.
-
- NOTICE: The format of the VGA imageblocks was determined
- by experimentation, and without access to any
- of Borland Inc.'s BGI library source code.
-
-
- GNU XBoard is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public
- License as published by the Free Software Foundation,
- either version 3 of the License, or (at your option) any
- later version.
-
- GNU XBoard is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public
- License along with this program. If not, see
- http://www.gnu.org/licenses/.
-
-
- ** If you find a bug in zic2xpm.c, please report it to me,
- Frank McIngvale (frankm@hiwaay.net) so that I may fix it. **
-*/
-
-/*
- Usage: zic2xpm file1 [file2 ...]
-
- We split the ZIICS file(s) into 24 XPM & 24 XIM files with names:
-
- <piece><type><size>.(xpm|xim).
-
- Where:
- piece = p, n, b, r, q, k
- type = ll, ld, dl, dd
- size = Piece size.
-
- Plus 4 files for the light & dark squares.
-
- This means that you can extract multiple SIZES in one directory
- without name clashes. Extracting two sets of the SAME
- size in a directory will cause the second to overwrite
- the first.
-*/
-
-/*
- Technical note: Yes, this file is huge. I made it by cramming
- `zic2xpm' and `zic2xim' together. This should
- be less confusing to use, though.
-*/
-
-#include "config.h"
-#include <stdio.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#endif
-
-#ifndef SEEK_SET
-#define SEEK_SET 0
-#endif
-
-/*
- XIM file format:
-
- width byte
- height byte
-
- Data (1 byte per pixel, row major)
-*/
-
-/*
- Map colors from ZIICS -> XIM :
-
- 0 0 Dark piece
- 2 1 Dark square
- 15 2 Light piece
- 14 3 Light square
-*/
-
-typedef struct {
- int zval; /* ZIICS value */
- int xval; /* XIM value */
-} z2xim;
-
-/* Associate VGA color with XPM color/sym */
-
-typedef struct {
- int cval; /* VGA pixel value */
- char xchar; /* XPM character for this color */
- char *csym; /* Symbolic name */
- char *cdefault; /* Default color */
-} z2xpm;
-
-#define NR_ZIICS_COLORS 4
-#define BUFLEN 100
-
-/* SHOWSETS.PAS (from ZIICS) states that images may only
- use color numbers 0, 2, 14, and 15 */
-
-z2xim z2xim_tab[NR_ZIICS_COLORS] = {
- { 0, 0 },
- { 2, 1 },
- { 15, 2 },
- { 14, 3 } };
-
-z2xpm z2xpm_tab[NR_ZIICS_COLORS] = {
- { 15, 'X', "light_piece", "white" },
- { 0, ' ', "dark_piece", "black" },
- { 14, '*', "light_square", "gray" },
- { 2, '.', "dark_square", "green" } };
-
-void
-fatal (char *str)
-{
- printf("Fatal error: %s\n", str );
- exit(1);
-}
-
-z2xim *
-lookup_xim_color (int color)
-{
- int i;
-
- for( i=0; i<NR_ZIICS_COLORS; ++i )
- {
- if ( z2xim_tab[i].zval == color )
- return (z2xim_tab + i);
- }
-
- fatal("Illegal color in image.");
-
- /* NOT REACHED */
- return NULL; /* Make compiler happy */
-}
-
-z2xpm *
-lookup_xpm_color (int color)
-{
- int i;
-
- for( i=0; i<NR_ZIICS_COLORS; ++i )
- {
- if ( z2xpm_tab[i].cval == color )
- return (z2xpm_tab + i);
- }
-
- fatal("Illegal color in image.");
-
- /* NOT REACHED */
- return NULL; /* Make compiler happy */
-}
-
-char *src_name;
-
-int
-up8 (int i)
-{
- int r;
-
- r = i % 8;
- if ( r == 0 )
- return i;
-
- return i + 8 - r;
-}
-
-unsigned int
-vga_imagesize (int w, int h)
-{
- int w8;
- unsigned int s;
-
- w8 = up8( w );
-
- s = 4 + w8/2 * h + 2;
-
- return s;
-}
-
-unsigned char *
-decode_byte (unsigned char *dest, unsigned char *b, int w)
-{
- int i, j;
- unsigned char byte, bit;
-
- for( i=7; w > 0; --i, --w )
- {
- byte = 0;
-
- /* 1 bit from each plane */
- for( j=0; j<4; ++j )
- {
- bit = b[j];
- bit &= (1 << i);
- bit >>= i;
- bit <<= 3-j;
- byte |= bit;
- }
-
- *(dest++) = byte;
- }
-
- return dest;
-}
-
-/*
- W is width of image in PIXELS.
- SRC is in packed pixel format.
- DEST is filled with 1 BYTE per PIXEL.
-*/
-unsigned char *
-decode_line (unsigned char *dest, unsigned char *src, int w)
-{
- unsigned int w8;
- unsigned int bpp;
- unsigned char b[4];
- int i;
- unsigned char *p;
-
- p = src;
- w8 = up8( w );
-
- /* 4 planes, bpp BYTES per plane */
- /* Planes are MSB -> LSB */
- bpp = w8 >> 3;
-
- while( w > 0 )
- {
- for( i=0; i<4; ++i )
- b[i] = p[i*bpp];
-
- if ( w > 8 )
- dest = decode_byte( dest, b, 8 );
- else
- dest = decode_byte( dest, b, w );
-
- w -= 8;
- ++p;
- }
-
- return (src + bpp * 4);
-}
-
-int
-write_xim_header (FILE *fp, int w, int h)
-{
- fputc( w, fp );
- fputc( h, fp );
-
- return 0;
-}
-
-int
-write_xpm_header (FILE *fp, int w, int h)
-{
- int i;
- z2xpm *cv;
-
- fprintf(fp, "/* XPM */\n");
- fprintf(fp, "/* This file was automatically generated from the file %s\n",
- src_name );
- fprintf(fp, "using the program ``zic2xpm''.\n");
- fprintf(fp, "\n %s\n %s\n %s\n %s\n %s\n %s */\n",
- "NOTICE: The piece images distributed with ZIICS are",
- " copyrighted works of their original creators. Images",
- " converted with zic2xpm may not be redistributed without",
- " the permission of the copyright holders. Do not contact",
- " the authors of zic2xpm or of ZIICS itself to request",
- " permission.");
- fprintf( fp, "static char * image_name[] = {\n" );
- fprintf( fp, "\"%d %d %d 1\",\n", h, w, NR_ZIICS_COLORS );
-
- cv = z2xpm_tab;
-
- for( i=0; i<NR_ZIICS_COLORS; ++i, ++cv )
- {
- fprintf( fp, "\"%c\tc %s s %s\",\n", cv->xchar,
- cv->cdefault, cv->csym );
- }
-
- return 0;
-}
-
-void
-create_piece_xim (char *outname, FILE *fpin, int W, int H)
-{
- FILE *fpout;
- int w, h, i, j, c;
- unsigned char *lump, *p, *line;
- long size;
- z2xim *ent;
-
- fpout = fopen( outname, "wb" );
- if ( !fpout )
- fatal( "Can't create output file.");
-
- /* Header is two ints -- Width then Height, x86 format */
- c = fgetc( fpin );
- w = (fgetc(fpin) << 8) | c;
-
- c = fgetc( fpin );
- h = (fgetc(fpin) << 8) | c;
-
- ++w; ++h;
-
- if ( w != W || h != H )
- fatal( "Bad header." );
-
- size = vga_imagesize( w, h ) - 4;
- lump = (unsigned char*)malloc( size );
- line = (unsigned char*)malloc( w );
-
- if ( !lump || !line )
- fatal( "Out of memory." );
-
- fread( lump, 1, size, fpin );
-
- /* Write XIM header */
- write_xim_header( fpout, w, h );
-
- p = lump;
-
- /* Write XIM data */
- for( i=0; i<h; ++i )
- {
- p = decode_line( line, p, w );
-
- for( j=0; j<w; ++j )
- {
- ent = lookup_xim_color( line[j] );
- fputc( ent->xval, fpout );
- }
- }
-
- free( lump );
- free( line );
- fclose( fpout );
-}
-
-void
-create_piece_xpm (char *outname, FILE *fpin, int W, int H)
-{
- FILE *fpout;
- int w, h, i, j, c;
- unsigned char *lump, *p, *line;
- long size;
- z2xpm *cv;
-
- fpout = fopen( outname, "wb" );
- if ( !fpout )
- fatal( "Can't create output file.");
-
- /* Header is two ints -- Width then Height, x86 format */
- c = fgetc( fpin );
- w = (fgetc(fpin) << 8) | c;
-
- c = fgetc( fpin );
- h = (fgetc(fpin) << 8) | c;
-
- ++w; ++h;
-
- if ( w != W || h != H )
- fatal( "Bad header." );
-
- size = vga_imagesize( w, h ) - 4;
- lump = (unsigned char*)malloc( size );
- line = (unsigned char*)malloc( w );
-
- if ( !lump || !line )
- fatal( "Out of memory." );
-
- fread( lump, 1, size, fpin );
-
- /* Write XPM header */
- write_xpm_header( fpout, w, h );
-
- p = lump;
-
- /* Write XPM data */
- for( i=0; i<h; ++i )
- {
- p = decode_line( line, p, w );
-
- fprintf( fpout, "\"" );
- for( j=0; j<w; ++j )
- {
- cv = lookup_xpm_color( line[j] );
- fprintf( fpout, "%c", cv->xchar );
- }
- fprintf( fpout, "\",\n" );
- }
-
- fprintf( fpout, "};\n" );
-
- free( lump );
- free( line );
- fclose( fpout );
-}
-
-/* The order of the pieces in the ZIICS piece file (from SHOWSETS.PAS) */
-char *pieces = "prkqbn";
-char *pname[] = { "Pawn", "Rook", "King", "Queen", "Bishop", "Knight" };
-
-/* The suborder - Light/Light, Light/Dark, etc. */
-char *prefixes[] = { "ll", "ld", "dl", "dd" };
-
-int
-process_file_xim (char *filename)
-{
- int w, h, piece, kind, c;
- int nr_pieces = 6;
- int nr_kinds = 4;
- FILE *fp;
- char buf[BUFLEN];
-
- src_name = filename;
-
- fp = fopen( filename, "rb" );
- if ( !fp )
- fatal( "Can't open input file." );
-
- /* Header is two ints -- Width then Height, x86 format */
- c = fgetc( fp );
- w = (fgetc(fp) << 8) | c;
-
- c = fgetc( fp );
- h = (fgetc(fp) << 8) | c;
-
- ++w; ++h;
-
- if ( w != h )
- {
- printf("ERROR: Can only convert square pieces.\n");
- printf(" (This set is %dx%d)\n", w, h );
- exit(1);
- }
-
- printf("Creating XIM files...\n");
- printf("File: %s, W=%d, H=%d\n", filename, w, h );
- fseek( fp, 0, SEEK_SET );
-
- /* Write .XIM files */
- for( piece = 0; piece < nr_pieces; ++piece )
- {
- printf("%s ", pname[piece] );
-
- for( kind = 0; kind < nr_kinds; ++kind )
- {
- printf( "." );
- /* Form output filename -- <piece><kind><size>.xim */
- snprintf(buf, BUFLEN, "%c%s%d.xim", pieces[piece], prefixes[kind], w);
- create_piece_xim( buf, fp, w, h );
- }
- printf("\n");
- }
-
- /* Write the light & dark squares */
- snprintf( buf, BUFLEN, "lsq%d.xim", w );
- printf("Light Square" );
- create_piece_xim( buf, fp, w, h );
-
- snprintf( buf, BUFLEN, "dsq%d.xim", w );
- printf("\nDark Square" );
- create_piece_xim( buf, fp, w, h );
- printf("\n");
-
- printf("Successfully converted!!\n" );
-
- fclose( fp );
-
- return 0;
-}
-
-int
-process_file_xpm (char *filename)
-{
- int w, h, piece, kind, c;
- int nr_pieces = 6;
- int nr_kinds = 4;
- FILE *fp;
- char buf[BUFLEN];
-
- src_name = filename;
-
- fp = fopen( filename, "rb" );
- if ( !fp )
- fatal( "Can't open input file." );
-
- /* Header is two ints -- Width then Height, x86 format */
- c = fgetc( fp );
- w = (fgetc(fp) << 8) | c;
-
- c = fgetc( fp );
- h = (fgetc(fp) << 8) | c;
-
- ++w; ++h;
-
- if ( w != h )
- {
- printf("ERROR: Can only convert square pieces.\n");
- printf(" (This set is %dx%d)\n", w, h );
- exit(1);
- }
-
- printf("Creating XPM files...\n");
- printf("File: %s, W=%d, H=%d\n", filename, w, h );
- fseek( fp, 0, SEEK_SET );
-
- /* Write .XPM files */
- for( piece = 0; piece < nr_pieces; ++piece )
- {
- printf("%s ", pname[piece] );
-
- for( kind = 0; kind < nr_kinds; ++kind )
- {
- printf( "." );
- /* Form output filename -- <piece><kind><size>.xpm */
- snprintf(buf, BUFLEN, "%c%s%d.xpm", pieces[piece], prefixes[kind], w);
- create_piece_xpm( buf, fp, w, h );
- }
- printf("\n");
- }
-
- /* Write the light & dark squares */
- snprintf( buf, BUFLEN, "lsq%d.xpm", w );
- printf("Light Square" );
- create_piece_xpm( buf, fp, w, h );
-
- snprintf( buf, BUFLEN, "dsq%d.xpm", w );
- printf("\nDark Square" );
- create_piece_xpm( buf, fp, w, h );
- printf("\n");
-
- printf("Successfully converted!!\n" );
-
- fclose( fp );
-
- return 0;
-}
-
-int
-main (int argc, char **argv)
-{
- int i;
-
- if ( argc < 2 )
- {
- printf("ZIC2XPM 2.01 - by Frank McIngvale (frankm@hiwaay.net)\n");
- printf("Copyright (C) 1996 Free Software Foundation, Inc.\n\n");
- printf("Usage: zic2xpm file1 [file2 ...]\n\n");
- printf(" Splits each file (ZIICS piece files) into 26 XPM & XIM files\n");
- printf(" suitable for use in XBoard 3.5 or later.\n");
- printf("\n* ZIICS is a copyrighted work of Andy McFarland (Zek on ICC) *\n");
- return 1;
- }
-
-
- setbuf( stdout, NULL );
-
- for( i=1; i<argc; ++i )
- {
- process_file_xpm( argv[i] );
- process_file_xim( argv[i] );
- }
-
- fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
- "NOTICE: The piece images distributed with ZIICS are",
- " copyrighted works of their original creators. Images",
- " converted with zic2xpm may not be redistributed without",
- " the permission of the copyright holders. Do not contact",
- " the authors of zic2xpm or of ZIICS itself to request",
- " permission.");
- return 0;
-}
+++ /dev/null
-.\" Copyright (C) 1996, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
-.\" See section COPYING below.
-.TH zic2xpm 6 "11 Apr 1996" "zic2xpm 2.0" "Games"
-.SH NAME
-zic2xpm \- Tool to convert ZIICS chess pieces into XBoard (XPM/XIM) pieces.
-.SH SYNOPSIS
-zic2xpm
-.B file1 [file2 ...]
-.SH DESCRIPTION
-.B zic2xpm
-converts one or more ZIICS piece files into a format that can
-be used by XBoard.
-If you give more than one filename, be aware that multiple sets
-of the same size cannot exist in one directory. Multiple sets
-of different sizes can exist in a single directory.
-.SH EXAMPLE
-If you wanted to make a directory containing the sets SET2.V32,
-SET2.V40, SET2.V50, and SET2.V56, all of which are located in
-~/ziics, you could do:
-
-.nf
- mkdir Sets
- cd Sets
- zic2xpm ~/ziics/SET2.*
-.fi
-
-You would then run XBoard like this:
-
-.nf
- xboard -pixmap Sets
-.fi
-.SH BUGS
-Please report any bugs to
-.B frankm@hiwaay.net
-.SH "SEE ALSO"
-.BR
-.BR xboard ( 6 ).
-.SH AUTHOR
-Frank McIngvale (frankm@hiwaay.net)
-.SH COPYING
-Copyright (C) 1996,2009 Free Software Foundation, Inc.
-.PP
-NOTICE: The piece images distributed with ZIICS are
-copyrighted works of their original creators. Images
-converted with zic2xpm may not be redistributed without
-the permission of the copyright holders. Do not contact
-the authors of zic2xpm or of ZIICS itself to request
-permission.
-.PP
-NOTICE: The format of the ZIICS piece file was gleaned from
-SHOWSETS.PAS, a part of ZIICS. Thanks to Andy McFarland
-(Zek on ICC) for making this source available! ZIICS is a
-completely separate and copyrighted work of Andy
-McFarland. Use and distribution of ZIICS falls under the
-ZIICS license, NOT the GNU General Public License.
-.PP
-NOTICE: The format of the VGA imageblocks was determined
-by experimentation, and without access to any
-of Borland Inc.'s BGI library source code.
-.PP
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version. However, the above notices
-MUST BE RETAINED in any copy that you redistribute or modify.
-.PP
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-.PP
-You should have received a copy of the GNU General Public License
-along with this program; if not, see http://www.gnu.org/licenses/.