From: Arun Persaud Date: Sun, 5 Jan 2014 18:51:08 +0000 (-0800) Subject: Merge branch 'v4.7.x' into master X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=e6e38912837a4fe2464356408d10dee950b3121c;hp=904e6bd26188be8089a74ad9196bc5c2b9479530;p=xboard.git Merge branch 'v4.7.x' into master Conflicts: dialogs.c gtk/xboard.c gtk/xoptions.c po/es.po winboard/config.h winboard/winboard.c --- diff --git a/Makefile.am b/Makefile.am index 61aa1d7..847084a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -57,7 +57,7 @@ xboard_SOURCES = backend.c backend.h backendz.h \ ### 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 \ @@ -69,7 +69,8 @@ DISTCLEANFILES = stamp-h 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 @@ -84,24 +85,26 @@ sysconf_DATA = xboard.conf ### 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 \ @@ -129,12 +132,25 @@ dist_svg_DATA = svg/icon_white.svg svg/icon_black.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\ @@ -151,7 +167,7 @@ dist_shogi_DATA = \ 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 \ @@ -160,22 +176,27 @@ dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg themes/xiangqi/WhiteAdvisor 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 @@ -210,12 +231,12 @@ if ENABLE_UPDATE_MIMEDB $(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 @@ -227,11 +248,11 @@ if ENABLE_UPDATE_MIMEDB $(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 diff --git a/args.h b/args.h index 660e271..d1463ec 100644 --- a/args.h +++ b/args.h @@ -60,7 +60,7 @@ 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; @@ -102,7 +102,10 @@ typedef struct { IcsTextMenuEntry icsTextMenuEntry[ICS_TEXT_MENU_SIZE]; int junk; +unsigned int saveDate; +unsigned int dateStamp; Boolean singleList; +Boolean autoClose; char *homeDir; char *firstEngineLine; char *secondEngineLine; @@ -149,6 +152,9 @@ ArgDescriptor argDescriptors[] = { { "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 }, @@ -468,6 +474,7 @@ ArgDescriptor argDescriptors[] = { { "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) "" }, @@ -506,6 +513,8 @@ ArgDescriptor argDescriptors[] = { { "secondChessProgramNames", ArgString, (void *) &secondChessProgramNames, !XBOARD, (ArgIniType) SCP_NAMES }, { "themeNames", ArgString, (void *) &appData.themeNames, !XBOARD, (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" }, @@ -597,6 +606,7 @@ ArgDescriptor argDescriptors[] = { { "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) "" }, // [HGM] tournament options { "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" }, @@ -687,6 +697,8 @@ ArgDescriptor argDescriptors[] = { { "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 }, #if ZIPPY { "zippyTalk", ArgBoolean, (void *) &appData.zippyTalk, FALSE, (ArgIniType) ZIPPY_TALK }, @@ -822,6 +834,30 @@ ExitArgError(char *msg, char *badArg, Boolean quit) 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) { @@ -873,6 +909,12 @@ ParseSettingsFile(char *name, char **addr) } if (ok) { f = fopen(fullname, "r"); +#ifdef DATADIR + if(f == NULL && *fullname != '/') { // when a relative name did not work + MySearchPath(DATADIR "/themes/conf", name, fullname); // also look in standard place + f = fopen(fullname, "r"); + } +#endif if (f != NULL) { if (addr != NULL) { ASSIGN(*addr, fullname); @@ -1166,6 +1208,20 @@ ParseArgs(GetFunc get, void *cl) 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; @@ -1401,6 +1457,11 @@ InitAppData(char *lpCmdLine) 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(); @@ -1431,8 +1492,11 @@ SaveSettings(char* name) 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)) { @@ -1550,6 +1614,8 @@ SaveSettings(char* name) case ArgNone: case ArgBackupSettingsFile: case ArgSettingsFilename: ; + case ArgMaster: ; + case ArgInstall: ; } } fclose(f); diff --git a/backend.c b/backend.c index c14f438..084c42c 100644 --- a/backend.c +++ b/backend.c @@ -55,14 +55,32 @@ #ifdef WIN32 #include -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 -#define SLASH '/' +# include +# define SLASH '/' + +# include +# 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 @@ -225,7 +243,7 @@ void DisplayTwoMachinesTitle P(()); 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(); @@ -269,11 +287,13 @@ char chatPartner[MAX_CHAT][MSG_SIZ]; /* [HGM] chat: list of chatting partners */ 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]; 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 @@ -388,6 +408,7 @@ PosFlags (index) case VariantShatranj: case VariantCourier: case VariantMakruk: + case VariantASEAN: case VariantGrand: flags &= ~F_ALL_CASTLE_OK; break; @@ -557,6 +578,20 @@ ChessSquare makrukArray[2][BOARD_FILES] = { /* [HGM] (movGen knows about Shatran 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] = { @@ -601,6 +636,13 @@ ChessSquare GrandArray[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, @@ -637,8 +679,23 @@ ChessSquare CourierArray[2][BOARD_FILES] = { { 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) @@ -806,6 +863,7 @@ InitEngine (ChessProgramState *cps, int n) /* [HGM] debug */ cps->debug = FALSE; + cps->drawDepth = appData.drawDepth[n]; cps->supportsNPS = UNKNOWN; cps->memSize = FALSE; cps->maxCores = FALSE; @@ -817,6 +875,7 @@ InitEngine (ChessProgramState *cps, int n) 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) @@ -915,7 +974,7 @@ char *insert, *wbOptions; // point in ChessProgramNames were we should insert ne 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* @@ -939,11 +998,13 @@ Load (ChessProgramState *cps, int i) 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; @@ -1138,6 +1199,7 @@ InitBackEnd1 () 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 */ @@ -1158,6 +1220,7 @@ InitBackEnd1 () 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 */ @@ -1166,6 +1229,8 @@ InitBackEnd1 () case VariantSChess: /* S-Chess, should work */ case VariantGrand: /* should work */ case VariantSpartan: /* should work */ + case VariantLion: /* should work */ + case VariantChuChess: /* should work */ break; } } @@ -1485,7 +1550,7 @@ MatchEvent (int mode) 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; @@ -1518,6 +1583,23 @@ InitBackEnd3 P((void)) 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 */ @@ -1995,10 +2077,12 @@ StripHighlight (char *s) return retbuf; } +char engineVariant[MSG_SIZ]; char *variantNames[] = VARIANT_NAMES; char * VariantName (VariantClass v) { + if(v == VariantUnknown || *engineVariant) return engineVariant; return variantNames[v]; } @@ -2028,7 +2112,8 @@ StringToVariant (char *e) found = TRUE; } else for (i=0; i= VariantShogi && isalpha(p[strlen(variantNames[i])])) continue; v = (VariantClass) i; found = TRUE; break; @@ -3014,8 +3099,10 @@ read_from_ics (InputSourceRef isr, VOIDSTAR closure, char *data, int count, int } 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)); } @@ -4745,7 +4832,7 @@ ParseBoard12 (char *string) default: break; case MT_CHECK: - if(gameInfo.variant != VariantShogi) + if(!IS_SHOGI(gameInfo.variant)) strcat(parseList[moveNum - 1], "+"); break; case MT_CHECKMATE: @@ -4975,6 +5062,11 @@ SendMoveToProgram (int moveNum, ChessProgramState *cps) 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; @@ -5017,6 +5109,13 @@ SendMoveToProgram (int moveNum, ChessProgramState *cps) } 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 @@ -5090,7 +5189,8 @@ SendMoveToICS (ChessMove moveType, int fromX, int fromY, int toX, int toY, char 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)); @@ -5154,7 +5254,7 @@ UploadGameEvent () 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); @@ -5196,6 +5296,8 @@ UploadGameEvent () 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]) { @@ -5207,6 +5309,7 @@ CoordsToComputerAlgebraic (int rf, int ff, int rt, int ft, char promoChar, char 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); @@ -5227,27 +5330,43 @@ ProcessICSInitScript (FILE *f) } -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; @@ -5351,6 +5470,7 @@ ParseOneMove (char *move, int moveNum, ChessMove *moveType, int *fromX, int *fro case WhiteNonPromotion: case BlackNonPromotion: case NormalMove: + case FirstLeg: case WhiteCapturesEnPassant: case BlackCapturesEnPassant: case WhiteKingSideCastle: @@ -5384,7 +5504,8 @@ ParseOneMove (char *move, int moveNum, ChessMove *moveType, int *fromX, int *fro 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); } @@ -5842,7 +5963,7 @@ void 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; @@ -5899,9 +6020,13 @@ InitPosition (int redraw) 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; @@ -5962,6 +6087,14 @@ InitPosition (int redraw) 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; @@ -5976,6 +6109,16 @@ InitPosition (int redraw) 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"); @@ -6030,7 +6173,9 @@ InitPosition (int redraw) 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) @@ -6044,7 +6189,7 @@ InitPosition (int redraw) 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) { @@ -6057,14 +6202,24 @@ InitPosition (int redraw) } } } - 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=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; @@ -6139,7 +6294,7 @@ SendBoard (ChessProgramState *cps, int moveNum) 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); @@ -6322,7 +6477,8 @@ ChessSquare 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 @@ -6341,7 +6497,7 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i /* [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; @@ -6353,10 +6509,14 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i 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 = (p >= WhiteLion || PieceToChar(piece + 22) == '.') ? WhitePawn : WhiteLion; + } else if(gameInfo.variant == VariantShogi || gameInfo.variant == VariantChuChess) { promotionZoneSize = BOARD_HEIGHT/3; - highestPromotingPiece = (int)WhiteFerz; - } else if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand) { + highestPromotingPiece = (int)WhiteAlfil; + } else if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) { promotionZoneSize = 3; } @@ -6370,10 +6530,13 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i 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 @@ -6407,8 +6570,13 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i } // 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... @@ -6418,7 +6586,9 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i } // 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; @@ -6429,7 +6599,8 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i 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; } @@ -6998,27 +7169,66 @@ FinishMove (ChessMove moveType, int fromX, int fromY, int toX, int toY, int prom } void +MarkByFEN(char *fen) +{ + int r, f; + if(!appData.markers || !appData.highlightDragging) return; + for(r=0; r= '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; x1) capt++; @@ -7048,19 +7258,59 @@ ChessSquare gatingPiece = EmptySquare; // exported to front-end, for dragging 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_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 @@ -7270,26 +7525,42 @@ LeftClick (ClickType clickType, int xPix, int yPix) 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; @@ -7304,6 +7575,13 @@ LeftClick (ClickType clickType, int xPix, int yPix) } 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 @@ -7314,6 +7592,18 @@ LeftClick (ClickType clickType, int xPix, int yPix) 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; @@ -7349,6 +7639,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) // 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)); @@ -7368,7 +7659,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) DisplayMessage("Click in holdings to choose piece", ""); return; } - PromotionPopUp(); + PromotionPopUp(promoChoice); } else { int oldMove = currentMove; UserMoveEvent(fromX, fromY, toX, toY, promoChoice); @@ -8001,11 +8292,66 @@ Adjudicate (ChessProgramState *cps) 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= 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) { + loaded = 2; // prepare for failure + char *p, *path = strstr(appData.egtFormats, "scorpio:"), buf[MSG_SIZ]; + HMODULE lib; + PLOAD_EGBB loadBB; + 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 @@ -8088,11 +8434,12 @@ static char stashedInputMove[MSG_SIZ]; 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; @@ -8230,14 +8577,32 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h } 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); @@ -8292,6 +8657,17 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h 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 ) { int count = 0; @@ -8379,10 +8755,12 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats. 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(); } /* @@ -8433,14 +8811,26 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats. } 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; + *buf = NULLCHAR; if(sscanf(message, "setup (%s", buf) == 1) s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTable(pieceToChar, 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; @@ -8453,7 +8843,7 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats. 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 { @@ -8553,6 +8943,36 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats. } } 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; } /* @@ -8895,7 +9315,7 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats. 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.")); } } } @@ -8974,7 +9394,10 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats. 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; @@ -9237,6 +9660,7 @@ ParseGameHistory (char *game) case WhiteNonPromotion: case BlackNonPromotion: case NormalMove: + case FirstLeg: case WhiteCapturesEnPassant: case BlackCapturesEnPassant: case WhiteKingSideCastle: @@ -9360,7 +9784,7 @@ ParseGameHistory (char *game) default: break; case MT_CHECK: - if(gameInfo.variant != VariantShogi) + if(!IS_SHOGI(gameInfo.variant)) strcat(parseList[boardIndex - 1], "+"); break; case MT_CHECKMATE: @@ -9377,7 +9801,7 @@ void 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 */ @@ -9394,11 +9818,23 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) } 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[EP_STATUS] = EP_PAWN_MOVE; // Lance is Pawn-like in most variants @@ -9485,7 +9921,7 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) 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 */ @@ -9546,7 +9982,7 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) 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 */ @@ -9579,8 +10015,9 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) 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; } } @@ -9658,12 +10095,15 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) 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 @@ -9682,19 +10122,24 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) 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; @@ -9781,7 +10226,7 @@ MakeMove (int fromX, int fromY, int toX, int toY, int promoChar) default: break; case MT_CHECK: - if(gameInfo.variant != VariantShogi) + if(!IS_SHOGI(gameInfo.variant)) strcat(parseList[forwardMostMove - 1], "+"); break; case MT_CHECKMATE: @@ -9789,7 +10234,6 @@ MakeMove (int fromX, int fromY, int toX, int toY, int promoChar) strcat(parseList[forwardMostMove - 1], "#"); break; } - } /* Updates currentMove if not pausing */ @@ -9809,6 +10253,8 @@ ShowMove (int fromX, int fromY, int toX, int toY) currentMove = forwardMostMove; } + killX = killY = -1; // [HGM] lion: used up + if (instant) return; DisplayMove(currentMove - 1); @@ -9857,37 +10303,75 @@ SendEgtPath (ChessProgramState *cps) } 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; @@ -9909,33 +10393,15 @@ InitChessProgram (ChessProgramState *cps, int setup) 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); } @@ -9975,7 +10441,7 @@ InitChessProgram (ChessProgramState *cps, int setup) 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; @@ -10334,6 +10800,7 @@ SwapEngines (int n) SWAP(fenOverride, p) SWAP(NPS, h) SWAP(accumulateTC, h) + SWAP(drawDepth, h) SWAP(host, p) } @@ -10615,7 +11082,7 @@ GameEnds (ChessMove result, char *resultDetails, int whosays) 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) @@ -10837,6 +11304,7 @@ GameEnds (ChessMove result, char *resultDetails, int whosays) PlayIcsUnfinishedSound(); } } + if(appData.quitNext) { ExitEvent(0); return; } } else if (gameMode == EditGame || gameMode == PlayFromGameFile || gameMode == AnalyzeMode || @@ -11013,7 +11481,8 @@ FeedMovesToProgram (ChessProgramState *cps, int upto) 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); @@ -11096,6 +11565,7 @@ Reset (int redraw, int init) 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; @@ -11109,6 +11579,7 @@ Reset (int redraw, int init) ClearPremoveHighlights(); gotPremove = FALSE; alarmSounded = FALSE; + killX = killY = -1; // [HGM] lion GameEnds(EndOfFile, NULL, GE_PLAYER); if(appData.serverMovesName != NULL) { @@ -11289,6 +11760,7 @@ LoadGameOneMove (ChessMove readAhead) case WhiteNonPromotion: case BlackNonPromotion: case NormalMove: + case FirstLeg: case WhiteKingSideCastle: case WhiteQueenSideCastle: case BlackKingSideCastle: @@ -11310,6 +11782,7 @@ LoadGameOneMove (ChessMove readAhead) toX = currentMoveString[2] - AAA; toY = currentMoveString[3] - ONE; promoChar = currentMoveString[4]; + if(promoChar == ';') promoChar = NULLCHAR; break; case WhiteDrop: @@ -11476,6 +11949,7 @@ LoadGameOneMove (ChessMove readAhead) thinkOutput[0] = NULLCHAR; MakeMove(fromX, fromY, toX, toY, promoChar); + killX = killY = -1; // [HGM] lion: used up currentMove = forwardMostMove; return TRUE; } @@ -11947,7 +12421,7 @@ GameContainsPosition (FILE *f, ListGame *lg) for(next = WhitePawn; next>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; @@ -11991,6 +12465,7 @@ GameContainsPosition (FILE *f, ListGame *lg) case WhiteNonPromotion: case BlackNonPromotion: case NormalMove: + case FirstLeg: case WhiteKingSideCastle: case WhiteQueenSideCastle: case BlackKingSideCastle: @@ -12055,6 +12530,7 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList) if (gameMode != BeginningOfGame) { Reset(FALSE, TRUE); } + killX = killY = -1; // [HGM] lion: in case we did not Reset gameFileFP = f; if (lastLoadGameFP != NULL && lastLoadGameFP != f) { @@ -12208,6 +12684,7 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList) break; case NormalMove: + case FirstLeg: /* Only a NormalMove can be at the start of a game * without a position diagram. */ if (lastLoadGameStart == EndOfFile ) { @@ -12269,7 +12746,7 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList) 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; @@ -12475,6 +12952,15 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList) 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 @@ -12597,7 +13083,7 @@ LoadPosition (FILE *f, int positionNumber, char *title) } if (fenMode) { - if (!ParseFEN(initial_position, &blackPlaysFirst, line)) { + if (!ParseFEN(initial_position, &blackPlaysFirst, line, TRUE)) { DisplayError(_("Bad FEN position in file"), 0); return FALSE; } @@ -12839,7 +13325,7 @@ SaveGamePGN (FILE *f) 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); @@ -12976,8 +13462,11 @@ SaveGamePGN (FILE *f) /* 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)); } @@ -13108,7 +13597,7 @@ SavePosition (FILE *f, int dummy, char *dummy2) PrintPosition(f, currentMove); fprintf(f, "--------------]\n"); } else { - fen = PositionToFEN(currentMove, NULL); + fen = PositionToFEN(currentMove, NULL, 1); fprintf(f, "%s\n", fen); free(fen); } @@ -14010,7 +14499,7 @@ TwoMachinesEvent P((void)) 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 */ @@ -14045,7 +14534,8 @@ TwoMachinesEvent P((void)) } 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; @@ -14447,11 +14937,15 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y) { 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"); @@ -14459,6 +14953,7 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y) 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++) { @@ -14469,9 +14964,33 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y) SendToICS(buf); } } else { + if(boards[0][y][x] != p) nonEmpty++; boards[0][y][x] = p; } } + menuBoard[1][x] = menuBoard[BOARD_HEIGHT-2][x] = p; + } + if(gameMode != IcsExamining) { // [HGM] editpos: cycle trough boards + for(x = BOARD_LEFT; x < BOARD_RGHT; x++) { // create 'menu board' by removing duplicates + ChessSquare p = menuBoard[0][x]; + for(y = x + 1; y < BOARD_RGHT; y++) if(menuBoard[0][y] == p) menuBoard[0][y] = EmptySquare; + p = menuBoard[BOARD_HEIGHT-1][x]; + for(y = x + 1; y < BOARD_RGHT; y++) if(menuBoard[BOARD_HEIGHT-1][y] == p) menuBoard[BOARD_HEIGHT-1][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) { @@ -14529,6 +15048,7 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y) 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; @@ -15124,7 +15644,7 @@ RetractMoveEvent () 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; @@ -15222,14 +15742,14 @@ HintEvent () 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; @@ -15282,14 +15802,14 @@ BookEvent () 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; @@ -15953,6 +16473,27 @@ SendTimeRemaining (ChessProgramState *cps, int machineWhite) 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) { @@ -16167,6 +16708,7 @@ ParseFeatures (char *args, 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; @@ -16320,7 +16862,7 @@ TypeInDoneEvent (char *move) ChessMove moveType; // [HGM] FENedit - if(gameMode == EditPosition && ParseFEN(board, &n, move) ) { + if(gameMode == EditPosition && ParseFEN(board, &n, move, TRUE) ) { EditPositionPasteFEN(move); return; } @@ -17022,7 +17564,7 @@ PGNDate () char * -PositionToFEN (int move, char *overrideCastling) +PositionToFEN (int move, char *overrideCastling, int moveCounts) { int i, j, fromX, fromY, toX, toY; int whiteToPlay; @@ -17054,7 +17596,7 @@ PositionToFEN (int move, char *overrideCastling) *p++ = '+'; piece = (ChessSquare)(DEMOTED piece); } - *p++ = PieceToChar(piece); + *p++ = (piece == DarkSquare ? '*' : PieceToChar(piece)); if(p[-1] == '~') { /* [HGM] flag promoted pieces as '~' (Crazyhouse) */ p[-1] = PieceToChar((ChessSquare)(DEMOTED piece)); @@ -17152,7 +17694,8 @@ PositionToFEN (int move, char *overrideCastling) } 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; @@ -17184,9 +17727,10 @@ PositionToFEN (int move, char *overrideCastling) } } - /* [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++) @@ -17198,42 +17742,40 @@ PositionToFEN (int move, char *overrideCastling) 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; 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= 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= 10) } else if(*p=='x' || *p=='X') { /* [HGM] X means 10 */ @@ -17242,6 +17784,8 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen) 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 */ @@ -17253,7 +17797,7 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen) 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++); @@ -17271,6 +17815,18 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen) } 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= 0 && IS_LION(board[fromY][fromX])) Roar(); + /* Are we animating? */ if (!appData.animate || appData.blindfold) return; @@ -616,6 +618,10 @@ AnimateMove (Board board, int fromX, int fromY, int toX, int toY) 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 @@ -653,6 +659,8 @@ AnimateMove (Board board, int fromX, int fromY, int toX, int toY) /* 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 @@ -817,6 +825,7 @@ DrawSquare (int row, int column, ChessSquare piece, int do_flash) 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) { diff --git a/common.h b/common.h index 861eefa..f8a521a 100644 --- a/common.h +++ b/common.h @@ -172,7 +172,7 @@ typedef char *String; 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) @@ -182,7 +182,7 @@ typedef char *String; #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 @@ -288,12 +288,20 @@ typedef enum { 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; @@ -304,6 +312,9 @@ typedef enum { #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 IS_SHOGI(V) ((V) == VariantShogi || (V) == VariantChu) +#define IS_LION(V) ((V) == WhiteLion || (V) == BlackLion) typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES]; @@ -319,7 +330,7 @@ typedef enum { 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, @@ -333,7 +344,7 @@ typedef enum { } ColorClass; typedef enum { - SoundMove, SoundBell, SoundAlarm, SoundIcsWin, SoundIcsLoss, + SoundMove, SoundBell, SoundRoar, SoundAlarm, SoundIcsWin, SoundIcsLoss, SoundIcsDraw, SoundIcsUnfinished, NSoundClasses } SoundClass; @@ -363,6 +374,7 @@ typedef enum { 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, @@ -378,9 +390,12 @@ typedef enum { VariantGreat, VariantTwilight, VariantMakruk, + VariantASEAN, VariantSChess, VariantGrand, VariantSpartan, + VariantLion, + VariantChuChess, VariantUnknown /* Catchall for other unknown variants */ } VariantClass; @@ -409,6 +424,7 @@ typedef enum { "wild35", \ "wild36", \ "shogi", \ + "chu", \ "xiangqi", \ "courier", \ "gothic", \ @@ -424,9 +440,12 @@ typedef enum { "great",\ "twilight",\ "makruk",\ + "asean",\ "seirawan",\ "grand",\ "spartan",\ + "lion",\ + "chuchess",\ "unknown" \ } @@ -562,6 +581,7 @@ typedef struct { char *soundSeek; char *soundMove; // [HGM] IMPORTANT: order must be as in SoundClass char *soundBell; + char *soundRoar; char *soundIcsAlarm; char *soundIcsWin; char *soundIcsLoss; @@ -691,13 +711,16 @@ typedef struct { 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]; diff --git a/conf/chu b/conf/chu new file mode 100644 index 0000000..45195ef --- /dev/null +++ b/conf/chu @@ -0,0 +1,42 @@ +; +; 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 + diff --git a/conf/ics b/conf/ics new file mode 100644 index 0000000..9823c73 --- /dev/null +++ b/conf/ics @@ -0,0 +1,10 @@ +; +; settings for Internet Chess Server client +; +-ics +; +; set up own persistence file, used for ICS play +; +-settingsFile ~/.xboard-ics-rc +-saveSettingsFile ~/.xboard-ics-rc + diff --git a/conf/judkins b/conf/judkins new file mode 100644 index 0000000..250369d --- /dev/null +++ b/conf/judkins @@ -0,0 +1,19 @@ +; +; 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" + diff --git a/conf/judkins.fen b/conf/judkins.fen new file mode 100644 index 0000000..d805858 --- /dev/null +++ b/conf/judkins.fen @@ -0,0 +1,2 @@ +rbnsgk/6p/6/6/P5/KGSNBR w 0 1 + diff --git a/conf/mini b/conf/mini new file mode 100644 index 0000000..ee6fce6 --- /dev/null +++ b/conf/mini @@ -0,0 +1,24 @@ +; +; 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" + diff --git a/conf/mini.fen b/conf/mini.fen new file mode 100644 index 0000000..7ddea3a --- /dev/null +++ b/conf/mini.fen @@ -0,0 +1,2 @@ +rbsgk/4p/5/P4/KGSBR w 0 1 + diff --git a/conf/sho b/conf/sho new file mode 100644 index 0000000..7b48f27 --- /dev/null +++ b/conf/sho @@ -0,0 +1,28 @@ +; +; 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 + diff --git a/conf/sho.fen b/conf/sho.fen new file mode 100644 index 0000000..689e5a6 --- /dev/null +++ b/conf/sho.fen @@ -0,0 +1,2 @@ +lnsgkgsnl/1r2e2b1/ppppppppp/9/9/9/PPPPPPPPP/1B2E2R1/LNSGKGSNL w 0 1 + diff --git a/conf/shogi b/conf/shogi new file mode 100644 index 0000000..90cde91 --- /dev/null +++ b/conf/shogi @@ -0,0 +1,41 @@ +; +; 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 + diff --git a/conf/xiangqi b/conf/xiangqi new file mode 100644 index 0000000..23aeb36 --- /dev/null +++ b/conf/xiangqi @@ -0,0 +1,30 @@ +; +; 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 + diff --git a/conf/xq b/conf/xq new file mode 100644 index 0000000..fe659ba --- /dev/null +++ b/conf/xq @@ -0,0 +1,36 @@ +; +; 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 + diff --git a/configure.ac b/configure.ac index 2937474..5189be7 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl| to regenerate configure. Then submit your changes to be folded into dnl| the standard version of xboard. dnl| define second argument as VERSION.PATCHLEVEL. e.g. 4.4.0j -AC_INIT([xboard],[4.7.2],[bug-xboard@gnu.org]) +AC_INIT([xboard],[master-20130828],[bug-xboard@gnu.org]) dnl| need this to be able to compile some files in a subdir (filebrowser) AM_INIT_AUTOMAKE([subdir-objects]) @@ -56,7 +56,6 @@ AH_TEMPLATE([USE_PTYS],[template]) 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]) @@ -138,24 +137,61 @@ FRONTEND_LIBS="" 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 @@ -212,8 +248,7 @@ fi 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"]) +AM_CONDITIONAL([withXaw], [test x"$with_Xaw3d" = x"yes" || test x"$with_Xaw" = x"yes"]) AC_SUBST(FRONTEND_CFLAGS) @@ -400,29 +435,6 @@ dnl| add some libs for OS X ;; 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(PRE_XMULIB) AC_SUBST(POST_XMULIB) AC_SUBST(CONF_CFLAGS) @@ -501,6 +513,17 @@ if test x"$enable_mimedb" = "xyes"; then 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]) @@ -515,8 +538,12 @@ echo " Configurations summary:" 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 "" @@ -528,7 +555,6 @@ echo " GTK: $with_GTK" 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" diff --git a/dialogs.c b/dialogs.c index bb98b3f..57b7142 100644 --- a/dialogs.c +++ b/dialogs.c @@ -184,12 +184,14 @@ GenericReadout (Option *opts, int selected) 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: @@ -228,6 +230,7 @@ GenericReadout (Option *opts, int selected) case SaveButton: case Label: case Break: + case -1: break; } if(opts[i].type == EndMark) break; @@ -257,10 +260,9 @@ MatchOK (int n) 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, @@ -341,7 +343,7 @@ MatchOptionsProc () 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"), TransientDlg, BoardWindow, MODAL, 0); } // ------------------------------------------- General Options -------------------------------------------------- @@ -367,6 +369,7 @@ static Option generalOptions[] = { { 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.hideThinkingFromHuman, "", NULL, CheckBox, N_("Hide Thinking from Human") }, @@ -405,47 +408,66 @@ OptionsProc () 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, -1, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL }, { 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" } }; @@ -453,27 +475,29 @@ static void 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.NrRanks = ranksTmp; + appData.NrFiles = filesTmp; + appData.holdingsSize = sizeTmp; appData.pieceToCharTable = NULL; appData.pieceNickNames = ""; appData.colorNickNames = ""; @@ -485,9 +509,30 @@ Pick (int n) 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 != -1) 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 = -1; + } + if(!(last&1)) { // odd number, add filler + ASSIGN(variantDescriptors[start+last+1].name, " "); + variantDescriptors[start+last+1].type = Button; + variantDescriptors[start+last+1].value = -1; + } + 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 ------------------------------------- @@ -578,6 +623,7 @@ Option icsOptions[] = { { 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:") }, @@ -689,6 +735,7 @@ static char *soundNames[] = { N_("Penalty"), N_("Phone"), N_("Pop"), + N_("Roar"), N_("Slap"), N_("Wood Thunk"), NULL, @@ -707,6 +754,7 @@ static char *soundFiles[] = { // sound files corresponding to above names "penalty.wav", "phone.wav", "pop2.wav", + "roar.wav", "slap.wav", "woodthunk.wav", NULL, @@ -734,6 +782,7 @@ static Option soundOptions[] = { { 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 , "" } }; @@ -814,7 +863,7 @@ static Option boardOptions[] = { { 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,-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:") }, @@ -1026,7 +1075,7 @@ static char *tagsText; static int NewTagsCallback (int n) { - ReplaceTags(tagsText, &gameInfo); + if(!bookUp) ReplaceTags(tagsText, &gameInfo); return 1; } @@ -1041,7 +1090,7 @@ static void changeTags (int n) { GenericReadout(tagsOptions, 1); - if(bookUp) SaveToBook(tagsText); else + if(bookUp) SaveToBook(tagsText), DisplayBook(currentMove); else ReplaceTags(tagsText, &gameInfo); } @@ -1552,6 +1601,7 @@ PromoPick (int n) ClearHighlights(); return; } + if(promoChar == '=' && !IS_SHOGI(gameInfo.variant)) promoChar = NULLCHAR; UserMoveEvent(fromX, fromY, toX, toY, promoChar); if (!appData.highlightLastMove || gotPremove) ClearHighlights(); @@ -1568,11 +1618,11 @@ SetPromo (char *name, int nr, char promoChar) } 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) { @@ -1594,6 +1644,8 @@ PromotionPopUp () SetPromo(_("Chancellor"), --count, 'c'); } SetPromo(_("Queen"), --count, 'q'); + if(gameInfo.variant == VariantChuChess) + SetPromo(_("Lion"), --count, 'l'); } } else // [HGM] shogi { @@ -2136,12 +2188,17 @@ static Option * Exp (int n, int x, int y) { static int but1, but3, oldW, oldH; - int menuNr = -3, sizing; + int menuNr = -3, sizing, f, r; 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 @@ -2339,7 +2396,6 @@ static char *Extensions[] = { ".trn", ".bin", ".wav", -".xpm", ".ini", ".log", "", diff --git a/draw.c b/draw.c index a306aba..f89468d 100644 --- a/draw.c +++ b/draw.c @@ -140,11 +140,12 @@ SelectPieces(VariantClass v) 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) { @@ -155,6 +156,15 @@ SelectPieces(VariantClass v) 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]; + } } } @@ -228,12 +238,16 @@ CreatePNGBoard (char *s, int kind) 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]; @@ -242,7 +256,8 @@ LoadSVG (char *dir, int color, int 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))) { @@ -260,6 +275,8 @@ LoadSVG (char *dir, int color, int piece) 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; @@ -275,22 +292,22 @@ ScaleOnePiece (int color, int piece) 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 @@ -641,6 +658,8 @@ pngDrawPiece (cairo_surface_t *dest, ChessSquare piece, int square_color, int x, 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) { @@ -653,7 +672,7 @@ 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); diff --git a/engine-intf.html b/engine-intf.html index 3e966be..1546cc8 100644 --- a/engine-intf.html +++ b/engine-intf.html @@ -540,6 +540,7 @@ defined variant names are: unknownUnknown variant (not supported) +As of XBoard 4.8, engines can define arbitrary variant names; see the "feature" and "setup" commands in section 9.
quit
@@ -837,7 +838,7 @@ only applies to normal Chess; Obviously in variants that cannot be described by a FEN for normal Chess, e.g. because the board is not 8x8, other pieces then PNBRQK participate, there are holdings that need to be specified, etc., -xboard will use a FEN format that is standard or suitable for that varant. +xboard will use a FEN format that is standard or suitable for that variant. In particular, in FRC or CRC, WinBoard will use Shredder-FEN or X-FEN standard, i.e. it can use the rook-file indicator letter to represent a castling right (like HAha) whenever it wants, but if it uses KQkq, this will always refer @@ -1342,10 +1343,16 @@ correct value for your engine (just "normal" in most cases) rather than leaving the default in place, so that the user will get an appropriate error message if he tries to play a variant that your engine does not support. +As of XBoard 4.8 a variant name not known to the GUI will be +considered an engine-defined variant. +The user will be given the opportunity to select such variants, +but when this happens, the engine should define its meaning +in detail with the aid of a "setup" command defined below, +in order to avoid an error.
If your engine can play variants on a deviating board size, like capablanca on an 8x8 board, or capablanca crazyhouse, -it can list them amongst the variants with a prefix spcifying board size plus +it can list them amongst the variants with a prefix specifying board size plus holdings size, like 8x8+0_capablanca or 10x8+7_capablanca. If it is capable of playing any variant with an arbitrary board size, it should list "boardsize" as one of the variants. @@ -1510,6 +1517,46 @@ in this case, you must set done=1 before xboard will enter normal operation. +
setup FEN
+
setup (PIECETOCHAR) FEN
+
setup (PIECETOCHAR) WxH+S_PARENTVARIANT FEN
+
The engine can optionally send a setup command to the GUI in reply +to the variant command. +In the simplest form this sends the FEN of the initial position. +This can be used to implement engines for non-standard variants +that only differ from standard variants through the initial position. +(E.g. many of the 'wild' boards you can play on an ICS.) +Whether the GUI should obey or ignore this command depends on the situation. +Normally it would ignore it in variants where it knows the standard initial position +and legality testing is on, or when the user specified an initial position. +In other cases it will use the FEN sent by the first engine +for setting up the initial position, as if it was an externally supplied position. +Such a position will always be sent to a second engine that might be involved, +and any setup commands received from the latter will always be ignored. +(This to allow for shuffle games, where the two engines might pick different setups.) +When no initial position is known, such as for 'catch-all' variants like fairy, +or whenever the board width is overruled to a non-standard value, +the FEN will be used as default initial position even when legality testing is on. +
+
Optionally the meaning of the piece ID letters in the FEN can be defined +between parentheses; this will be interpreted as if it was the value of a +-pieceToCharTable command-line option, mapping letters to GUI piece types. +Also optionally behind that, the setup command can specify board width W, +board height H and holdings size S, as well as a 'parent variant'. +This is typically done in response to a variant command with a non-standard name, +about which the GUI is not supposed to know anything at all. +The engine can then specify board size, participating pieces, initial setup, +and other rule details (inherited from the parent variant), +saving the user the trouble to configure the GUI for this non-standard variant. +Example: +
+  setup (PN.RQKpn.rqk) 6x6+0_fairy rnqknr/pppppp/6/6/PPPPPP/RNQKNR w - - 0 1
+
+could be used by an engine for Los-Alamos Chess in response to 'variant losalamos', +and would automatically switch the GUI to this variant as soon as the user +selected it from the GUI menu. +The PIECETOCHAR element would ensure a Bishop would not be accepted as promotion choice. +
Illegal move: MOVE
Illegal move (REASON): MOVE
diff --git a/frontend.h b/frontend.h index 10bb064..6dcc1f7 100644 --- a/frontend.h +++ b/frontend.h @@ -93,13 +93,14 @@ void DrawSeekDot P((int x, int y, int color)); 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)); @@ -128,7 +129,7 @@ DelayedEventCallback GetDelayedEvent 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)); diff --git a/gamelist.c b/gamelist.c index 19bad0b..62b4e83 100644 --- a/gamelist.c +++ b/gamelist.c @@ -305,7 +305,7 @@ GameListBuild (FILE *f) } 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]); diff --git a/gtk/xboard.c b/gtk/xboard.c index d59adf1..750e64f 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -175,6 +175,7 @@ extern char *getenv(); // redefine some defaults # undef ICS_LOGON # undef SYSCONFDIR +# undef DATADIR # define ICS_LOGON "Library/Preferences/XboardICS.conf" # define SYSCONFDIR "../etc" # define DATADIR dataDir @@ -679,6 +680,7 @@ PrintArg (ArgType t) case ArgTwo: case ArgNone: case ArgCommSettings: + default: break; } return p; @@ -761,7 +763,7 @@ main (int argc, char **argv) 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); } diff --git a/gtk/xoptions.c b/gtk/xoptions.c index 8fb5dca..b618013 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -449,7 +449,7 @@ CreateMenuPopup (Option *opt, int n, int def) 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); @@ -1511,7 +1511,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); 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: diff --git a/menus.c b/menus.c index 4d20041..11fe7a9 100644 --- a/menus.c +++ b/menus.c @@ -215,7 +215,7 @@ CopyPositionProc () 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); } @@ -580,8 +580,8 @@ CreateBookDelayed () MenuItem fileMenu[] = { {N_("New Game"), "n", "NewGame", ResetGameEvent}, - {N_("New Shuffle Game ..."), NULL, "NewShuffleGame", ShuffleMenuProc}, - {N_("New Variant ..."), "v", "NewVariant", NewVariantProc},// [HGM] variant: not functional yet + {N_("New Shuffle Game..."), NULL, "NewShuffleGame", ShuffleMenuProc}, + {N_("New Variant..."), "v", "NewVariant", NewVariantProc},// [HGM] variant: not functional yet {"----", NULL, NULL, NothingProc}, {N_("Load Game"), "o", "LoadGame", LoadGameProc, CHECK}, {N_("Load Position"), "o", "LoadPosition", LoadPositionProc}, @@ -681,11 +681,11 @@ MenuItem actionMenu[] = { }; MenuItem engineMenu[100] = { - {N_("Load New 1st Engine ..."), NULL, "LoadNew1stEngine", LoadEngine1Proc}, - {N_("Load New 2nd Engine ..."), NULL, "LoadNew2ndEngine", LoadEngine2Proc}, + {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}, @@ -697,17 +697,17 @@ MenuItem engineMenu[100] = { MenuItem optionsMenu[] = { #ifdef OPTIONSDIALOG - {N_("General ..."), NULL, "General", OptionsProc}, + {N_("General..."), NULL, "General", OptionsProc}, #endif - {N_("Time Control ..."), "t", "TimeControl", TimeControlProc}, - {N_("Common Engine ..."), "u", "CommonEngine", UciMenuProc}, - {N_("Adjudications ..."), "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..."), "t", "TimeControl", TimeControlProc}, + {N_("Common Engine..."), "u", "CommonEngine", UciMenuProc}, + {N_("Adjudications..."), "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"), "q", "AlwaysQueen", AlwaysQueenProc}, diff --git a/moves.c b/moves.c index 4852ee2..7ffe59d 100644 --- a/moves.c +++ b/moves.c @@ -98,7 +98,7 @@ SameColor (ChessSquare piece1, ChessSquare piece2) (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[] = { @@ -165,6 +165,207 @@ CompareBoards (Board board1, Board board2) 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 @@ -181,7 +382,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, 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++) { @@ -195,7 +396,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, 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) { @@ -309,7 +510,6 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, 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++) { @@ -366,47 +566,77 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, /* 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: @@ -422,8 +652,8 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, && !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) @@ -442,6 +672,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, /* 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; @@ -454,36 +685,31 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, /* 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; @@ -496,6 +722,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, break; case SHOGI BlackQueen: + if(gameInfo.variant == VariantChu) goto doQueen; for(i = 1;; i++) { rt = rf - i; ft = ff; @@ -510,6 +737,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, /* 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; @@ -524,112 +752,84 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, /* 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: @@ -649,20 +849,10 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, 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: @@ -697,6 +887,127 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, } 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: @@ -728,6 +1039,8 @@ GenLegalCallback (Board board, int flags, ChessMove kind, int rf, int ff, int rt 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) { @@ -974,6 +1287,9 @@ CheckTestCallback (Board board, int flags, ChessMove kind, int rf, int ff, int r 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 } @@ -989,25 +1305,43 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant { CheckTestClosure cl; ChessSquare king = flags & F_WHITE_ON_MOVE ? WhiteKing : BlackKing; - ChessSquare captured = EmptySquare; + ChessSquare captured = EmptySquare, ep, trampled; /* 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 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 @@ -1042,13 +1376,25 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant 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 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; rkind = 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) { @@ -1402,7 +1768,8 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure) } 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); @@ -1411,6 +1778,12 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure) 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. @@ -1529,7 +1902,7 @@ CoordsToAlgebraic (Board board, int flags, int rf, int ff, int rt, int ft, int p /* 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 { @@ -1606,7 +1979,7 @@ CoordsToAlgebraic (Board board, int flags, int rf, int ff, int rt, int ft, int p */ 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)); @@ -1627,11 +2000,12 @@ CoordsToAlgebraic (Board board, int flags, int rf, int ff, int rt, int ft, int p 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); diff --git a/moves.h b/moves.h index fb1edc8..b4b9eb3 100644 --- a/moves.h +++ b/moves.h @@ -83,10 +83,12 @@ typedef void (*MoveCallback) P((Board board, int flags, ChessMove kind, #define F_MANDATORY_CAPTURE 0x200 /* 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) @@ -172,4 +174,4 @@ ChessMove CoordsToAlgebraic P((Board board, int flags, int rf, int ff, int rt, int ft, int promoChar, char out[MOVE_LEN])); -extern int quickFlag; +extern int quickFlag, killX, killY; diff --git a/nengineoutput.c b/nengineoutput.c index fab7ce6..ce77057 100644 --- a/nengineoutput.c +++ b/nengineoutput.c @@ -74,16 +74,18 @@ int highTextStart[2], highTextEnd[2]; 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, "" }, { 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, "" }, diff --git a/parser.c b/parser.c index 8e31362..481e7b2 100644 --- a/parser.c +++ b/parser.c @@ -151,11 +151,11 @@ PromoSuffix (char **p) { 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 } @@ -240,7 +240,7 @@ NextUnit (char **p) } 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; @@ -261,7 +261,7 @@ NextUnit (char **p) 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; @@ -279,13 +279,25 @@ NextUnit (char **p) 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 @@ -321,6 +333,7 @@ NextUnit (char **p) 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))); diff --git a/pixmaps/ANALYZING_14.xpm b/pixmaps/ANALYZING_14.xpm deleted file mode 100644 index b43e871..0000000 --- a/pixmaps/ANALYZING_14.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char *ANALYZE_14[] = { -/* columns rows colors chars-per-pixel */ -"14 14 3 1", -" c white", -"* c black", -". c None", -/* pixels */ -"....... ....", -"..... ... ..", -".... ....... .", -".... .. .... .", -"... .. ..... ", -"... ......... ", -"... ......... ", -".... ....... .", -".... ....... .", -"... . ... ..", -".. . .. ....", -". . ..........", -" ...........", -".............." -}; diff --git a/pixmaps/BLACK_14.xpm b/pixmaps/BLACK_14.xpm deleted file mode 100644 index cab2a1e..0000000 --- a/pixmaps/BLACK_14.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char *BLACK_14[] = { -/* columns rows colors chars-per-pixel */ -"14 14 3 1", -" c white", -"* c black", -". c None", -/* pixels */ -".....****.....", -"...** **...", -"..* *..", -".* *.", -".* *.", -"* *", -"* *", -"* *", -"* *", -".* *.", -".* *.", -"..* *..", -"...** **...", -".....****....." -}; diff --git a/pixmaps/CLEAR_14.xpm b/pixmaps/CLEAR_14.xpm deleted file mode 100644 index 68a0efd..0000000 --- a/pixmaps/CLEAR_14.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char *CLEAR_14[] = { -/* columns rows colors chars-per-pixel */ -"14 14 3 1", -" c white", -"* c black", -". c None", -/* pixels */ -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -"..............", -".............." -}; diff --git a/pixmaps/PONDER_14.xpm b/pixmaps/PONDER_14.xpm deleted file mode 100644 index 2f732ab..0000000 --- a/pixmaps/PONDER_14.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char *PONDER_14[] = { -/* columns rows colors chars-per-pixel */ -"14 14 3 1", -" c white", -"* c black", -". c None", -/* pixels */ -".... .. ....", -".. ... .. ..", -". .......... .", -" .......... ..", -" ........... .", -". .......... ", -".. .......... ", -". .......... .", -".. ....... ..", -"... .. .. ...", -".. . .. ....", -". ..........", -" .............", -".............." -}; diff --git a/pixmaps/THINKING_14.xpm b/pixmaps/THINKING_14.xpm deleted file mode 100644 index 4b28f19..0000000 --- a/pixmaps/THINKING_14.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char *THINK_14[] = { -/* columns rows colors chars-per-pixel */ -"14 14 3 1", -" c white", -"* c black", -". c None", -/* pixels */ -"..... ......", -"... ... ....", -".. ... ... ...", -". .... .... ..", -". .... .... ..", -" ..... ..... .", -" .... .. .", -" ..... ..... .", -". ......... ..", -". ......... ..", -".. ....... ...", -"... ... ....", -"..... ......", -".............." -}; diff --git a/pixmaps/UNKNOWN_14.xpm b/pixmaps/UNKNOWN_14.xpm deleted file mode 100644 index 9f4c241..0000000 --- a/pixmaps/UNKNOWN_14.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char *UNKNOWN_14[] = { -/* columns rows colors chars-per-pixel */ -"14 14 3 1", -" c white", -"* c black", -". c None", -/* pixels */ -".....****.....", -"...** **...", -"..* . . *..", -".* . . . . *.", -".* . . . . *.", -"* . . . . . *", -"* . . . . . *", -"* . . . . . *", -"* . . . . . *", -".* . . . . *.", -".* . . . . *.", -"..* . . *..", -"...** **...", -".....****....." -}; diff --git a/pixmaps/WHITE_14.xpm b/pixmaps/WHITE_14.xpm deleted file mode 100644 index 3f13936..0000000 --- a/pixmaps/WHITE_14.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char *WHITE_14[] = { -/* columns rows colors chars-per-pixel */ -"14 14 3 1", -" c white", -"* c black", -". c None", -/* pixels */ -".....****.....", -"...** **...", -"..* .... *..", -".* ........ *.", -".* ........ *.", -"* .......... *", -"* .......... *", -"* .......... *", -"* .......... *", -".* ........ *.", -".* ........ *.", -"..* .... *..", -"...** **...", -".....****....." -}; diff --git a/pixmaps/board32.png b/pixmaps/board32.png new file mode 100644 index 0000000..1f2ffa6 Binary files /dev/null and b/pixmaps/board32.png differ diff --git a/pixmaps/board32.xpm b/pixmaps/board32.xpm deleted file mode 100644 index cc92926..0000000 --- a/pixmaps/board32.xpm +++ /dev/null @@ -1,42 +0,0 @@ -/* 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" -}; diff --git a/pixmaps/board48.png b/pixmaps/board48.png new file mode 100644 index 0000000..f47e085 Binary files /dev/null and b/pixmaps/board48.png differ diff --git a/pixmaps/board48.xpm b/pixmaps/board48.xpm deleted file mode 100644 index 5aec594..0000000 --- a/pixmaps/board48.xpm +++ /dev/null @@ -1,58 +0,0 @@ -/* 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", -}; diff --git a/pixmaps/cross32.png b/pixmaps/cross32.png new file mode 100644 index 0000000..ccad759 Binary files /dev/null and b/pixmaps/cross32.png differ diff --git a/pixmaps/cross32.xpm b/pixmaps/cross32.xpm deleted file mode 100644 index 425c3a5..0000000 --- a/pixmaps/cross32.xpm +++ /dev/null @@ -1,42 +0,0 @@ -/* 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" -}; diff --git a/pixmaps/cross48.png b/pixmaps/cross48.png new file mode 100644 index 0000000..5247864 Binary files /dev/null and b/pixmaps/cross48.png differ diff --git a/pixmaps/cross48.xpm b/pixmaps/cross48.xpm deleted file mode 100644 index 47b629b..0000000 --- a/pixmaps/cross48.xpm +++ /dev/null @@ -1,58 +0,0 @@ -/* 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" -}; diff --git a/pixmaps/ini32.png b/pixmaps/ini32.png new file mode 100644 index 0000000..ce8af9c Binary files /dev/null and b/pixmaps/ini32.png differ diff --git a/pixmaps/ini32.xpm b/pixmaps/ini32.xpm deleted file mode 100644 index b6a7968..0000000 --- a/pixmaps/ini32.xpm +++ /dev/null @@ -1,41 +0,0 @@ -/* 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 ..", -".......... ..", -"................................", -"................................" -}; diff --git a/pixmaps/ini48.png b/pixmaps/ini48.png new file mode 100644 index 0000000..ea0415e Binary files /dev/null and b/pixmaps/ini48.png differ diff --git a/pixmaps/ini48.xpm b/pixmaps/ini48.xpm deleted file mode 100644 index 4e0434f..0000000 --- a/pixmaps/ini48.xpm +++ /dev/null @@ -1,57 +0,0 @@ -/* 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 ...", -".............. ....", -"................................................", -"................................................", -"................................................" -}; diff --git a/png/xqboard.png b/png/xqboard.png index 3f9d403..e6ea5ac 100644 Binary files a/png/xqboard.png and b/png/xqboard.png differ diff --git a/po/LINGUAS b/po/LINGUAS index ce00dd2..a985ef3 100755 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,3 +1,3 @@ # 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 diff --git a/po/da.po b/po/da.po index a70db03..bbc5091 100644 --- a/po/da.po +++ b/po/da.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.6.0.20120304\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: 2012-03-06 12:27+0100\n" "Last-Translator: Byrial Ole Jensen \n" "Language-Team: Danish \n" @@ -32,100 +32,100 @@ msgstr "" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "%s i indstillingsfil\n" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "Forkert heltalsværdi %s" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "Ikke genkendt argument %s" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "Ingen værdi givet for argumentet %s" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Ukomplet \\-undvigesekvens i værdi for %s" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "Åbning af inkluderet fil \"%s\" mislykkedes" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "det andet" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "protokolversion %d er ikke understøttet" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "Du angav ikke et kørbart skakprogram" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "forkert timeControl-tilvalg %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "forkert searchTime-tilvalg %s" -#: backend.c:1110 +#: backend.c:1120 #, 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:1138 #, c-format msgid "Unknown variant name %s" msgstr "Ukendt variantnavn %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "Starter skakprogram" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "Fejl i partifil" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "Fejl i stillingsfil" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "Vælg nyt spil" # cycle = runde? -#: backend.c:1488 +#: backend.c:1499 msgid "" "You restarted an already completed tourney\n" "One more cycle will now be added to it\n" @@ -135,123 +135,123 @@ msgstr "" "En mere cyklus vil nu blive tilføjet\n" "Partierne starter om 10 sekunder" -#: backend.c:1495 +#: backend.c:1506 #, 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:1513 msgid "Can't have a match with no chess programs" msgstr "Kan ikke have en match uden skakprogrammer" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "Kunne ikke Ã¥bne seriel port %s" -#: backend.c:1542 +#: backend.c:1553 #, 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:1609 #, c-format msgid "Unknown initialMode %s" msgstr "Ukendt initialMode %s" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "AnalyzeFile-tilstand kræver en partifil" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "Analysetilstand kræver et skakprogram" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "Analysetilstand virker ikke sammen med ICS-tilstand" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "MachineWhite-tilstand kræver et skakprogram" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "MachineWhite-tilstand virker ikke sammen med ICS-tilstand" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "MachineBlack-tilstand kræver et skakprogram" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "MachineBlack-tilstand virker ikke sammen med ICS-tilstand" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "TwoMachines-tilstand kræver et skakprogram" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "TwoMachines-tilstand virker ikke sammen med ICS-tilstand" -#: backend.c:1706 +#: backend.c:1717 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:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "Fejl ved skrivning til ICS" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "Fejl ved læsning fra tastatur" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "Fik filafslutning fra tastatur" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "Ukendt vild type %d" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "Fejl ved skrivning til skærm" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "din modstander kommenterer: %s" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "Fejl ved tolkning af trækliste: to teksthoveder" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "–" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "Ulovligt træk (afvist af ICS)" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "Forbindelse lukket af ICS" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "Fejl ved læsning fra ICS" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" @@ -260,108 +260,112 @@ msgstr "" "Fortolkning af brætstreng mislykkedes:\n" "\"%s\"" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 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:4383 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:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Kunne ikke fortolke \"%s\" fra ICS" -#: backend.c:5063 +#: backend.c:5074 #, 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:5145 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:6046 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:6510 msgid "You are playing Black" msgstr "Du spiller sort" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 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:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 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:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "Det er sorts tur" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "Den viste stilling er ikke den aktuelle" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "Ulovligt træk" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "Slutningen af partiet" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "Ukorrekt træk" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "Træk bonde baglæns for at underforvandle" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "Svejtserturnering afsluttet" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "Ikke tilladt parring fra parringsprogram" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Ulovligt træk \"%s\" fra %s skakprogram" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "Fejl i FEN modtaget fra skakprogram" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s understøtter ikke analyse" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Ulovligt træk \"%s\" (afvist af %s skakprogram)" -#: backend.c:8693 +#: backend.c:8823 #, 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:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "Tip: %s" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" @@ -370,11 +374,11 @@ msgstr "" "Ulovligt tip om træk \"%s\"\n" "fra %s skakprogram" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "Skakprogrammet accepterer dit remistilbud" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" @@ -382,47 +386,47 @@ msgstr "" "Skakprogrammet tilbyder remis\n" "Vælg Handlinger / Remis for at acceptere" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "skrivning af analysevariant mislykkedes" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Flertydigt træk i ICS-output: \"%s\"" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Ulovligt træk i ICS-output: \"%s\"" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "Hul i trækliste" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "Variant %s understøttes ikke af %s" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "Opstartsfejl pÃ¥ \"%s\"" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "Venter pÃ¥ første skakprogram" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "Venter pÃ¥ andet skakprogram" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "Kunne ikke skrive turneringsfil" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." @@ -430,11 +434,11 @@ msgstr "" "Du kan ikke udskifte et skakprogram, mens det bruges!\n" "Afslut dets parti først." -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "Der er ikke installeret et skakprogram med det angivne navn" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" @@ -442,16 +446,16 @@ msgstr "" "Ændr først skakprogram ved at redigere deltagerlisten\n" "i turneringsindstillingerne" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "Du kan kun ændre et skakprogram ad gangen" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, fuzzy, c-format msgid "No engine %s is installed" msgstr "Der er ikke installeret et skakprogram med det angivne navn" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" @@ -459,115 +463,115 @@ msgstr "" "Du skal angive en turneringsfil\n" "til at gemme turneringens afvikling" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "Der er ikke nok deltagere" -#: backend.c:10459 +#: backend.c:10589 msgid "Bad tournament file" msgstr "Fejl i turneringsfil" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "Venter pÃ¥ andet parti/andre partier" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "Der er ikke noget parringsprogram specificeret" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Match %s - %s: slutscore %d-%d-%d" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Ulovligt træk: %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Flertydigt træk: %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "Kan ikke Ã¥bne \"%s\"" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "Kan ikke konstruere partiliste" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "Der er ikke flere partier i denne besked" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "Der er endnu ingen indlæste partier" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "Kan ikke gÃ¥ længere tilbage" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "Partinummer findes ikke" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "Kan ikke spole i partifil" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "Parti ikke fundet i fil" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "Fejl i FEN-stilling i fil" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "Ingen træk i partiet" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "Ingen stilling er endnu indlæst" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "Kan ikke spole i stillingsfil" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "Stilling er ikke fundet i fil" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "Sort i trækket" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "Hvid i trækket" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "Venter pÃ¥ adgang til gemmefil" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "Gemmer parti" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "Søgning mislykkedes" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "Gemmer stilling" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." @@ -575,7 +579,7 @@ msgstr "" "Du har redigeret i parti-historikken.\n" "Genindlæs partiet og udfør trækket igen." -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." @@ -583,7 +587,7 @@ msgstr "" "Du har indtastet for mange træk.\n" "GÃ¥ tilbage til den aktuelle stilling og prøv igen." -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." @@ -591,11 +595,11 @@ msgstr "" "Den viste stilling er ikke den aktuelle.\n" "GÃ¥ fremad til den korrekte stilling og prøv igen." -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "Du har ikke trukket endnu" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." @@ -603,11 +607,11 @@ msgstr "" "Cmail-beskeden er ikke indlæst.\n" "Brug Genindlæs CMail-besked og lav dit træk igen." -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "Der er ingen uafsluttede partier" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -622,78 +626,78 @@ msgstr "" "\"cmail -remail -game %s\"\n" "pÃ¥ kommandolinjen." -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "Start af cmail mislykkedes" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Venter pÃ¥ svar fra modstander\n" -#: backend.c:13380 +#: backend.c:13511 #, 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:13384 +#: backend.c:13515 #, 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:13388 +#: backend.c:13519 #, 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:13395 +#: backend.c:13526 #, 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:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "Der er ingen uafsluttede partier\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "Klar til at sende e-mail\n" -#: backend.c:13408 +#: backend.c:13539 #, 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:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "Redigér kommentar" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Redigér kommentar til %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "Du observerer ikke et parti" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "Hvid er ikke i trækket" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "Sort er ikke i trækket" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "Starter %s skakprogram" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" @@ -701,132 +705,132 @@ msgstr "" "Vent pÃ¥ din tur,\n" "eller vælg Træk nu" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "Træningstilstand fra" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "Træningstilstand til" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "Allerede ved slutningen af partiet" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "Advarsel: Du spiller stadig et parti" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "Advarsel: Du observerer stadig et parti" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "Advarsel: Du undersøger stadig et parti" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "Lukker skakprogram til ICS-analyse ..." -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "Det felt er besat" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "Der er ingen aktuelle tilbud ved dette træk" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "Din modstander har ikke overskredet tiden" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "Du skal trække før du tilbyder remis" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "Du undersøger ikke et parti" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "Du kan ikke annullere variantlinje under pause" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "Det er dig som er i trækket" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "Vent til du kommer i trækket" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "Tip er ikke tilgængeligt" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 msgid "Game list not loaded or empty" msgstr "Partiliste ikke indlæst eller tom" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "Fejl ved skrivning til %s skakprogram" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "%s program afslutter i remisstilling (%s)" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Fejl: %s skakprogram (%s) afsluttede uventet" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Fejl ved læsning fra %s skakprogram (%s)" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "%s skakprogram har for mange tilvalg\n" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "Det viste træk er ikke det aktuelle" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "Kunne ikke fortolke træk" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "Begge flag er faldet" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "Hvids flag er faldet" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "Sorts flag er faldet" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Det er ikke tilladt er stille pÃ¥ uret i auto-flag-tilstand" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "Fejl i FEN-stilling i udklipsholder" @@ -938,7 +942,7 @@ msgstr "Kopiér turnering" 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:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -1008,7 +1012,7 @@ 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:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "Spekulér pÃ¥ næste træk" @@ -1129,7 +1133,7 @@ msgid "Holdings Size:" msgstr "Depotstørrelse:" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1201,279 +1205,284 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, 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:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "Ny variant" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "Maksimalt antal CPU'er pr. skakprogram:" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "Polyglot-katalog:" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "Hashtabel-størrelse (MB):" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "Sti til Nalimov-EGTB:" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "EGTB-cachestørrelse (MB):" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "Brug GUI's Ã¥bningsbog" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "Åbningsbogsfilnavn:" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "Åbningsbogsdybde (træk):" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "Åbningsbogvariation (0) vs. styrke (100):" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "Skakprogram nr. 1 har egen Ã¥bningsbog" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "Skakprogram nr. 2 har egen Ã¥bningsbog" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "Indstillinger for skakprogrammer" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "Find alle matter" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "Efterprøv resultatangivelser fra skakprogrammer" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "Remis ved utilstrækkeligt matsættende materiale" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Døm trivielle remiser (3-træks forsinkelse)" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "N-træksregel:" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "N-gange gentagelser:" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "Remis efter i alt N træk:" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "Gevinst/tabs-tærskel:" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "Negér skakprogram nr. 1's score" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "Negér skakprogram nr. 2's score" -#: dialogs.c:556 +#: dialogs.c:557 msgid "Adjudicate non-ICS Games" msgstr "Døm ikke-ICS partier" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "Send kommentarer fra skakprogram" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "Gem kommentarer til træk" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "Observér automatisk" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "Bræt øverst ved partistart" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "Obsevér i baggrunden nÃ¥r der spilles" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "Andet bræt til baggrundsobservede partier" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "Hent trækliste" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "Stille spil" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "Søgegraf" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "Automatisk opdatering af søgegraf" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +#, fuzzy +msgid "Quit after game" +msgstr "Venter pÃ¥ andet parti/andre partier" + +#: dialogs.c:583 msgid "Premove" msgstr "ForhÃ¥ndstræk" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "ForhÃ¥ndstræk for hvid" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "Hvids første træk:" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "ForhÃ¥ndstræk for sort" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "Sorts første træk:" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "Alarm" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "Alarmtid (millisekunder):" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "Farv meddelelser" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "Tekstfarver for rÃ¥b:" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "Tekstfarver for s-rÃ¥b:" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "Tekstfarver for kanal nr. 1:" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "Tekstfarver for andre kanaler:" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "Tekstfarver for kommentar:" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "Tekstfarver for tale:" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "Tekstfarver for udfordring:" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "Tekstfarver for forespørgsel:" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "Tekstfarver for søgning:" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "ICS-indstillinger" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "Eksakt stilling" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "Viste stilling er en delmængde" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "Samme materiale med samme bondestruktur" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "Samme materiale" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "Materiale-interval (øverste halvdel af brættet valgfrit)" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "Materiale-forskel (balanceret valgfrit materiale)" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "Automatisk visning af partidata" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "Automatisk visning af kommentarer" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" @@ -1481,12 +1490,12 @@ msgstr "" "Hastighed af gennemspilning af indlæste partier\n" "(0 = øjeblikkeligt, -1 fra):" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "Sekunder pr. træk:" # Ingen grund til ikke at bruge stort begyndelsesbogstav her. -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" @@ -1494,7 +1503,7 @@ msgstr "" "\n" "Indstillinger til brug ved gennemkigning af partier:" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" @@ -1502,701 +1511,701 @@ msgstr "" "\n" "Grænseværdier for stillingsfiltrering i partiliste:" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "Stærkeste spillers rating er mindst:" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "Svageste spillers rating er mindst:" -#: dialogs.c:633 +#: dialogs.c:635 msgid "No games before year:" msgstr "Ingen partier før Ã¥r:" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "Mindste antal stillinger i følge ad gangen:" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "Søgemetode:" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "Match ogsÃ¥ omvendte farver" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "Match ogsÃ¥ spejlvendt stilling" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "Indstillinger for indlæsning af parti" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "Gem partier automatisk" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "Gem partier i filen:" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "Gem slutstillinger i filen:" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "Event-tekst i PGN-fil:" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "Gammel gemmestil (i modsætning til PGN)" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "Brug partinumre i PGN-fil for turnering" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "Gem score/dybde-information i PGN" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "Gem ud af Ã¥bningsbog-info i PGN " -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "Indstillinger for gemning af parti" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "Ingen lyd" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "Standard bip" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "WAV-filen ovenfor" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "Bilhorn" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "Bækken" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "Ding" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "Gongon" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "Laser" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "Straffe" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "Telefon" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "Plop" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "Slag" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "Dunk" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "Brugerfil" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "Bruger WAV-fil:" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "Lydprogram:" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "Afprøv lyd:" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "Afspil" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "Træk:" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "Gevinst:" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "Tab:" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "Remis:" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "Uafsluttet:" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "Alarm:" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "Udfodring:" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "Lydkatalog:" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "RÃ¥b:" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "S-rÃ¥b:" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "Kanal:" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "Kanal 1:" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "Tale:" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "Kommentar:" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "Forespøgsel:" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "Søgning:" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "Lydindstillinger" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "M" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "Farve for sorte brikker:" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "Farve for lyse felter:" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "Farve for mørke felter:" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "Farve til fremhævelse:" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "Farve til forhÃ¥ndstræk:" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "Ombyt brikker som i shogi (Farvede knapper gendanner standard)" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "Monokrom-tilstand" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "Mellemrum mellem felter (-1 = standard for brætstørrelsen):" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "Brug brætteksturer" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "Teksturfil for lyse felter:" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "Teksturfil for mørke felter:" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 #, fuzzy msgid "Directory with Pieces Images:" msgstr "Katalog med bitmap-brikker:" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "Brætindstillinger" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "ICS-tekstmenu" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "ryd" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "gem ændringer" -#: dialogs.c:1051 +#: dialogs.c:1053 msgid "Edit book" msgstr "Redigér Ã¥bningsbog" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "Partidata" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "ICS-inputboks" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "Tast et træk" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "Skakprogrammet har ingen tilvalg" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "Indstillinger for skakprogram" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "Vælg skakprogram fra liste:" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "eller specificér en herunder:" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "Kaldenavn (ikke nødvendigt):" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "Brug kaldenavnet som spillerbetegnelse i PGN-filer" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "Skakprogramkatalog:" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "Skakprogramkommando:" -#: dialogs.c:1286 +#: dialogs.c:1288 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:1289 msgid "UCI" msgstr "UCI" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "WB-protokol v1 (brug ikke særlige skakprogramfunktioner)" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "MÃ¥ ikke bruge GUI's Ã¥bningsbog" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "Tilføj dette skakprogram til listen" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "Brug aktuel variant med dette skakprogram" -#: dialogs.c:1341 +#: dialogs.c:1343 #, fuzzy msgid "Load first engine" msgstr "Indlæs skakprogram" -#: dialogs.c:1347 +#: dialogs.c:1349 #, fuzzy msgid "Load second engine" msgstr "Indlæs skakprogrammet som" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "bland brikker" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "Startstillingsnummer:" -#: dialogs.c:1372 +#: dialogs.c:1374 msgid "randomize" msgstr "vælg tilfældigt" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "vælg bestemt" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "Nyt blandet parti" # Stort begyndelsesbogstav med vilje -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "Klassisk" # Stort begyndelsesbogstav med vilje -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "Tillægstid" # Stort begyndelsesbogstav med vilje -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "Maks. pr. træk" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "Træk pr. tidsperiode:" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "Tid fra start (minutter):" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "Tillægstid eller maks. pr. træk (sekunder):" -#: dialogs.c:1415 +#: dialogs.c:1417 msgid "Time-Odds factors:" msgstr "Tidsforkortelses-faktorer:" -#: dialogs.c:1416 +#: dialogs.c:1418 msgid "Engine #1" msgstr "Skakprogram nr. 1" -#: dialogs.c:1417 +#: dialogs.c:1419 msgid "Engine #2 / Human" msgstr "Skakprogram nr. 2 / menneske" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "Ubrugt" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "Betænkningstid" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "Fejl ved skrivning til skakprogram" -#: dialogs.c:1574 +#: dialogs.c:1576 msgid "Cancel" msgstr "Annullér" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "Konge" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "" -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "Springer" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "Løber" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "TÃ¥rn" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "Dronning" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "Bondeforvandling" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "standard" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "op" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "ned" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "Ingen overskrift valgt" -#: dialogs.c:1793 +#: dialogs.c:1795 msgid "Game-list options" msgstr "Indstillinger for partiliste" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "Fejl" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "Fatal fejl" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "Afslutter" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "Meddelelse" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "Notits" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "Hvid" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "Bonde" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "Tomt felt" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "Ryd bræt" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "Sort" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "Fil" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "Redigér" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "Vis" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "Tilstand" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "Handlinger" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "Skakprogram" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "Indstillinger" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "Hjælp" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 #, fuzzy msgid "Directories:" msgstr "Lydkatalog:" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "Fil" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "Filter:" -#: dialogs.c:2371 +#: dialogs.c:2378 #, fuzzy msgid "New directory" msgstr "Skakprogramkatalog:" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "Filter:" -#: dialogs.c:2447 +#: dialogs.c:2454 #, fuzzy msgid "Contents of" msgstr "Kommentarer" -#: dialogs.c:2473 +#: dialogs.c:2480 #, fuzzy msgid " next page" msgstr "næste side" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/de.po b/po/de.po index 1afb241..38f124d 100644 --- a/po/de.po +++ b/po/de.po @@ -5,10 +5,10 @@ # 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: 2013-08-28 21:49-0700\n" -"PO-Revision-Date: 2013-01-20 18:51-0800\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" +"PO-Revision-Date: 2013-11-24 18:22-0800\n" "Last-Translator: Arun Persaud \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -17,99 +17,99 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "Falscher Integer-wert %s" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "Nicht erkanntes Argument %s" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "Fehlender Wert für Argument %s" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Unvollständiges \\ escape im Wert von »%s«" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "Fehler beim Öffnen der Datei »%s«" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "zweites" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "Protokollversion %d nicht unterstützt" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "Das Computerprogramm für das Schachprogramm wurde nicht angegeben" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "falsche timeControl-Option %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "falsche searchTime-Option %s" -#: backend.c:1110 +#: backend.c:1120 #, 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:1138 #, c-format msgid "Unknown variant name %s" msgstr "Unbekannte Variante mit Namen %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "Starte Schachprogramm" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "Fehler in Partiedatei" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "Fehler in Positionsdatei" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "Wähle neues Spiel" -#: backend.c:1488 +#: backend.c:1499 msgid "" "You restarted an already completed tourney\n" "One more cycle will now be added to it\n" @@ -119,124 +119,124 @@ msgstr "" "Eine neue Runde wird hinzugefügt\n" "Die Spiele werden in 10 Sekunden starten" -#: backend.c:1495 +#: backend.c:1506 #, 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:1513 msgid "Can't have a match with no chess programs" msgstr "Partie ohne Schachprogram ist nicht möglich" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "Konnte Kommunikationsport %s nicht öffnen" -#: backend.c:1542 +#: backend.c:1553 #, 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:1609 #, c-format msgid "Unknown initialMode %s" msgstr "Unbekannter initalMode %s" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "»Analysiere Datei«-Modus benötigt eine Partiedatei" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "Analyse-Modus benötigt ein Schachprogramm" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "Analyse-Modus funktioniert nicht im ICS-Modus" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "»Schachprogramm Weiß«-Modus benötigt ein Schachprogramm" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "»Schachprogramm Weiß«-Modus funktioniert nicht im ICS-Modus" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "»Schachprogramm Schwarz«-Modus benötigt ein Schachprogramm" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "»Schachprogramm Schwarz«-Modus funktioniert nicht im ICS-Modus" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "»Zwei Schachprogramme«-Modus benötigt ein Schachprogramm" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "»Zwei Schachprogramme«-Modus funktioniert nicht im ICS-Modus" -#: backend.c:1706 +#: backend.c:1717 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:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "Fehler beim Schreiben zum ICS" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "Fehler beim Lesen der Tastatur" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "Habe Ende-der-Datei von der Tastatur erhalten" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "Unbekannter wild-Variante %d" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "Fehler beim Schreiben auf dem Display" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "Dein Gegner kibitzt: %s" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "Fehler beim Erstellen der Zugliste: zwei Dateiköpfe" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "gegen" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "Illegaler Zug (abgelehnt vom ICS)" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "Verbindung zum ICS beendet" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "Fehler beim Lesen vom ICS" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" @@ -245,108 +245,112 @@ msgstr "" "Konnte Schachbrettzeichenkette nicht parsen:\n" "»%s«" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 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:4383 msgid "Error gathering move list: extra board" msgstr "Fehler beim Erstellen der Zugliste: extra Schachbrett" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Konnte Zug »%s« vom ICS nicht parsen" -#: backend.c:5063 +#: backend.c:5074 #, 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:5145 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:6046 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:6510 msgid "You are playing Black" msgstr "Sie spielen Schwarz" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 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:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 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:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "Schwarz ist am Zug" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "Angezeigte Position ist nicht die Aktuelle" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "Ungültiger Zug" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "Ende des Spiels" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "Ungültiger Zug" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "Bewege Bauern rückwärts zum Unterverwandeln" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "Turnier im Schweizer System beendet" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "Ungültige Paarungen vom Paarungsprogramm" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Illegaler Zug »%s« vom Schachprogramm %s" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "Schlechte FEN vom Schachprogramm erhalten" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s unterstützt keine Analyse" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Illegaler Zug »%s« (abgelehnt vom Schachprogram %s)" -#: backend.c:8693 +#: backend.c:8823 #, 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:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "Hinweis: %s" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" @@ -355,59 +359,59 @@ msgstr "" "Illegaler Zughinweis »%s«\n" "vom Schachprogramm %s" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" -msgstr "Das Schachprogramm akzeptiert dein Remiangebot" +msgstr "Das Schachprogramm akzeptiert dein Remisangebot" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" 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:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "schreiben des PV fehlgeschlagen" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Nicht eindeutiger Zug in der ICS-Ausgabe: »%s«" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Illegaler Zug in der ICS-Ausgabe: \"%s\"" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "Lücke in Zugliste" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "Variante %s wird von %s nicht unterstützt" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "Fehler beim Starten »%s«" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "Warte auf erstes Schachprogramm" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "Warte auf zweites Schachprogramm" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "Schreibzugriff auf Turnierdatei nicht möglich" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." @@ -415,11 +419,11 @@ msgstr "" "Ersetzen eines Schachprogramms während es läuft nicht möglich!\n" "Beenden Sie das Spiel zuerst." -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "Ein Schachprogram mit dem angegebenen Namen ist nicht installiert" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" @@ -427,16 +431,16 @@ msgstr "" "Ändern Sie ein Schachprogramm indem Sie die Liste der Teilnehmner\n" "im Turnieroptionendialog editieren" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "Sie können immer nur ein Schachprogramm ändern" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "Das Schachprogram %s ist nicht installiert" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" @@ -444,115 +448,115 @@ msgstr "" "Sie müssen eine Turnierdatei zum Speichern\n" "der Turnierdaten angeben" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "Nicht genügend Teilnehmer" -#: backend.c:10459 +#: backend.c:10589 msgid "Bad tournament file" msgstr "Fehler in Turnierdatei" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "Warte auf weiter Spiele" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "Kein Paarungsprogram angegeben" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Partie %s gegen %s: Endergebnis %d-%d-%d" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Illegaler Zug: %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Nicht eindeutiger Zug: %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "Kann »%s« nicht öffnen" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "Kann Zugliste nicht erstellen" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "Keine weiteren Partien in dieser Nachricht" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "Noch keine Partie geladen" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "Kann nicht weiter zurückgehen" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "Partienummer außerhalb des Bereichs" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "Kann nicht in der Partiedatei suchen" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "Spiel in Datei nicht gefunden" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "Schlechte FEN-Stellung in Datei" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "Keine Züge in dem Spiel" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "Noch keine Stellung geladen" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "Kann nicht in Stellungsdatei suchen" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "Stellung in Datei nicht gefunden" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "Schwarz am Zug" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "Weiß am Zug" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "Warte auf Zugriff zur Datei zum Speichern" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "Speichere Spiel" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "Fehlerhafte Suche" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "Speichere Stellung " -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." @@ -560,7 +564,7 @@ msgstr "" "Sie haben die Partieentwicklung verändert.\n" "Benutzen Sie »Spiel erneut laden« und führen Sie ihren Zug erneut aus." -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." @@ -568,7 +572,7 @@ msgstr "" "Sie haben zu viele Züge eingegeben.\n" "Gehen Sie zur richtigen Stellung zurück und versuchen Sie es erneut." -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." @@ -576,11 +580,11 @@ msgstr "" "Die angezeigt Stellung ist nicht die aktuelle.\n" "Gehen Sie vorwärts zur richtigen Stellung und versuchen Sie es erneut." -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "Sie haben noch keinen Zug gemacht" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." @@ -589,11 +593,11 @@ msgstr "" "Benutzen sie »CMail Nachricht erneut laden« und führen Sie ihren Zug erneut " "aus." -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "Keine laufenden Partien" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -608,78 +612,78 @@ msgstr "" "»cmail -remail -game %s«\n" "in die Kommandozeile." -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "Fehler beim Aufruf von cmail" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Warte auf Antwort des Gegners\n" -#: backend.c:13380 +#: backend.c:13511 #, 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:13384 +#: backend.c:13515 #, 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:13388 +#: backend.c:13519 #, 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:13395 +#: backend.c:13526 #, 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:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "Keine laufenden Partien\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "Bereit zum Versenden der Mail\n" -#: backend.c:13408 +#: backend.c:13539 #, 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:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "Editiere Kommentar" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Editiere Kommentar für %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "Sie schauen keiner Partie zu" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "Weiß ist nicht am Zug" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "Schwarz ist nicht am Zug" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "Starte %s Schachprogramm" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" @@ -687,132 +691,132 @@ msgstr "" "Warte bis Sie am Zug sind\n" "oder wähle »Ziehe jetzt«" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "Trainier-Modus aus" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "Trainier-Modus ein" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "Schon am Ende der Partie" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "Warnung: Sie spielen noch eine Partie" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "Warnung: Sie schauen noch einer Partie zu" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "Warnung: Sie untersuchen noch eine Partie" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "Klicke auf eine Uhr, um das Brett zu leeren" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "Schließe ICS Programmanalyse…" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "Dieses Feld ist besetzt" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "Es liegt kein unbeantwortes Angebot für diesen Zug vor" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "Ihr Gegner hat die Zeit noch nicht überschritten" -#: backend.c:14753 +#: backend.c:14885 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:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "Sie untersuchen keine Partie" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "Sie können nicht zurücknehmen solange die Partie pausiert" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "Sie sind am Zug" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "Warten Sie bis Sie am Zug sind" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "Kein Hinweis erhältlich" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 msgid "Game list not loaded or empty" msgstr "Noch keine Partie geladen" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "Buchdatei existiert! Versuche erneut zum Überschreiben." -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "Fehler beim Schreiben zum Schachprogramm %s" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, 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:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Fehler: %s Schachprogramm (%s) unerwartet beendet" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Fehler beim Lesen vom Schachprogramm %s (%s)" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "Schachprogramm %s hat zu viele Optionen\n" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "Angezeigter Zug ist nicht aktuell" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "Konnte Zug nicht parsen" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "Beide Zeitkontrollen überschritten" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "Weiß überschritt die Zeitkontrolle" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "Schwarz überschritt die Zeitkontrolle" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Veränderungen an der Uhr sind im »Auto-flag«-Modus nicht erlaubt" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "Schlechte FEN-Stellung in der Zwischenablage" @@ -922,7 +926,7 @@ msgstr "" "Bitte geben Sie zuerst eine existierende Turnierdatei, die geklont werden " "kann" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "# keine Schachprogramme installiert" @@ -964,7 +968,7 @@ msgstr "" #: dialogs.c:371 msgid "Enable Variation Trees" -msgstr "" +msgstr "Erlaube Varianten" #: dialogs.c:372 msgid "Hide Thinking from Human" @@ -990,7 +994,7 @@ msgstr "" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "Nächsten Zug abwägen" @@ -1072,7 +1076,7 @@ msgstr "" #: dialogs.c:416 msgid "no castle" -msgstr "" +msgstr "keine Rochade" #: dialogs.c:417 msgid "cylinder *" @@ -1092,11 +1096,11 @@ msgstr "" #: dialogs.c:421 msgid "two kings" -msgstr "" +msgstr "Zwei Könige" #: dialogs.c:422 msgid "Board size ( -1 = default for selected variant):" -msgstr "" +msgstr "Brettgröße (-1 = default für gewählte Variante):" #: dialogs.c:423 msgid "Number of Board Ranks:" @@ -1111,7 +1115,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1152,7 +1156,7 @@ msgstr "" #: dialogs.c:439 msgid "suicide" -msgstr "" +msgstr "Räuberschach" #: dialogs.c:440 msgid "CRC (10x8)" @@ -1183,984 +1187,988 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " -msgstr " " +msgid "fairy" +msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, 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:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "Neue Variante" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "Maximal Anzahl der CPUs pro Schachprogram:" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "Polyglot-verzeichnis:" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "Größe der Hashtabelle (MB):" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "Dateiname des Eröffnungsbuches:" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "N-Züge Regel:" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 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:548 msgid "Win / Loss Threshold:" msgstr "Gewinn/Verlust Grenzwert:" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "Negiere Bewertung des 1. Schachprogramms" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "Negiere Bewertung des 2. Schachprogramms" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Gewinn Weiß zuerkennen" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "Auto-Kibitz" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "Automatische Kommentare" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "Automatisch Beobachten" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "Automatisch das Brett in den Vordergrung bringen" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "Automatisch Login-skript erzeugen" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "Beobachte im Hintegrund während einer Partie" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "Zweites Brett für beobachtetes Spiel" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "Zugliste abholen" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" -msgstr "" +msgstr "Suchgraph" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +#, fuzzy +msgid "Quit after game" +msgstr "Warte auf weiter Spiele" + +#: dialogs.c:583 msgid "Premove" msgstr "" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "Erster Zug von Weiß:" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "Erster Zug von Schwarz:" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "Alarm" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "Alarmzeit (msek):" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "Nachrichten kolorieren" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "Textfarbe Ruf:" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "Textfarbe S-Ruf:" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "Textfarbe Kanal #1:" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "Textfarbe andere Kanäle:" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "Textfarbe Kibitz:" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "Textfarbe Mitteilung:" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" -msgstr "" +msgstr "Textfarbe Herausforderung:" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" -msgstr "" +msgstr "Textfarbe Spielgesuch:" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "ICS Optionen" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "Gleiches Material mit genau gleicher Bauernstruktur" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "Gleiches Material" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "Sekunden pro Zug:" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "Mind. Elo des stärksten Spielers:" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "Mind. Elo des schwächsten Spielers:" -#: dialogs.c:633 +#: dialogs.c:635 msgid "No games before year:" msgstr "Keine Partie vor Jahr:" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "Such-modus:" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "Spieleinstellungen laden" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "Automatisch Partien speichern" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" -msgstr "" +msgstr "Nur eigene Partien" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "Partien speichern als Datei:" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "Speichere Endstellung in Datei:" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "Spieleinstellungen speichern" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "Kein Ton" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "Hupe" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "Laser" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "Benutzerdatei" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "Teste Geräusch:" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "Spielen" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "Zug:" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "Gewonnen:" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "Verloren:" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" -msgstr "Remi:" +msgstr "Remis:" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "Nicht beendet:" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "Alarm:" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" -msgstr "" +msgstr "Herausforderung:" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" -msgstr "" +msgstr "Klangverzeichnis:" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "Ruf:" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "S-Ruf:" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "Kanal:" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "Kanal 1:" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "Mitteilung:" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "Kibitz:" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "Gesuch:" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "Klangeinstellungen" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "D" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" -msgstr "" +msgstr "Farbe schwarze Figuren:" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "Weißes Feld:" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "Schwarzes Feld:" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "Farbe zum Hervorheben:" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" -msgstr "" +msgstr "Benutze Bretttexturen" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" -msgstr "" +msgstr "Texturedatei für weiße Felder:" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" -msgstr "" +msgstr "Texturdatei für schwarze Felder:" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" -msgstr "" +msgstr "Benutze externe Figurebitmaps mit deren Farben" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" -msgstr "" +msgstr "Verzeichnis mit Bildern für Figuren:" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "Bretteinstellungen" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" -msgstr "ICS-Textmenue" +msgstr "ICS-Textmenü" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "speichere Änderungen" -#: dialogs.c:1051 +#: dialogs.c:1053 msgid "Edit book" -msgstr "Bearbeite Buch" +msgstr "Buch editieren" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "Markierungen" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "ICS Eingabefeld" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "Geben Sie einen Zug ein" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "Schachprogramm hat keine Optionen" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "Schachprogrammeinstellungen" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "Wähle Schachprogram aus der Liste:" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" -msgstr "" +msgstr "Spitzname (optional):" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" -msgstr "" +msgstr "Schachprogramkommando:" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" -msgstr "" +msgstr "(Verzeichnis wird vom Schachprogrampfad genommen, falls leer)" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "Füge diese Schachprogramm zur Liste hinzu" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "Lade erstes Schachprogramm" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "Lade zweites Schachprogramm" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "Shuffle" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "Startposition-Nummer:" -#: dialogs.c:1372 +#: dialogs.c:1374 msgid "randomize" msgstr "zufällig" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "Neue Shuffle-Partie" -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "klassisch" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "Zuwachs" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 msgid "Time-Odds factors:" msgstr "" -#: dialogs.c:1416 +#: dialogs.c:1418 msgid "Engine #1" msgstr "Schachprogramm #1" -#: dialogs.c:1417 +#: dialogs.c:1419 msgid "Engine #2 / Human" msgstr "Schachprogram #2 / Spieler" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "Nicht benutzt" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "Zeitkontrolle" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "Fehler beim Schreiben zum Schachprogramm" -#: dialogs.c:1574 +#: dialogs.c:1576 msgid "Cancel" msgstr "Abbrechen" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "König" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "Kapitän" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "Leutnant" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "General" -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "Kriegsherr" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "Springer" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "Läufer" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "Turm" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "Erzbischof" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "Kanlzer" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "Königin" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "vertagen" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "umwandlung" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "Fabrik" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "hoch" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "runter" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "Keine Markierung selektiert" -#: dialogs.c:1793 +#: dialogs.c:1795 msgid "Game-list options" msgstr "Spieleliste-optionen" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "Fehler" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "Schwerwiegender Fehler" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "Beende" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "Information" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "Notiz" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "Weiß" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "Bauer" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "Elefant" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "Kanone" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "degradieren" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "Leeres Feld" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "Brett leeren" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "Schwarz" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "Datei" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "Bearbeiten" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "Anzeigen" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "Modus" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "Aktion" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "Schachprogramm" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "Optionen" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "Hilfe" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "Verzeichnisse:" -#: dialogs.c:2365 +#: dialogs.c:2372 msgid "Files:" msgstr "Dateien:" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "nach Namen" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "nach Typ" -#: dialogs.c:2370 +#: dialogs.c:2377 msgid "Filename:" msgstr "Dateinname:" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "Neues Verzeichnis" -#: dialogs.c:2372 +#: dialogs.c:2379 msgid "File type:" msgstr "Dateientyp:" -#: dialogs.c:2447 +#: dialogs.c:2454 msgid "Contents of" msgstr "Inhalt von" -#: dialogs.c:2473 -#, fuzzy +#: dialogs.c:2480 msgid " next page" msgstr "nächste Seite" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "VERSUCHE EINEN ANDEREN NAMEN" @@ -2286,52 +2294,44 @@ msgid "About XBoard" msgstr "Über XBoard" #: menus.c:582 -#, fuzzy msgid "New Game" -msgstr "Neue Shuffle-Partie" +msgstr "Neue Partie" #: menus.c:583 msgid "New Shuffle Game ..." msgstr "Neue Shuffle Partie… " #: menus.c:584 -#, fuzzy msgid "New Variant ..." -msgstr "Neue Variante" +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" @@ -2346,38 +2346,32 @@ msgid "Quit " 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" @@ -2400,9 +2394,8 @@ msgid "Annotate" msgstr "Annotieren" #: menus.c:618 -#, fuzzy msgid "Truncate Game" -msgstr "Partie abbrechen End" +msgstr "Partie abbrechen" #: menus.c:620 msgid "Backward" @@ -2413,34 +2406,28 @@ msgid "Forward" 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" @@ -2463,29 +2450,24 @@ msgid "Game List Tags..." 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" @@ -2493,7 +2475,7 @@ msgstr "Training" #: menus.c:655 msgid "ICS Client" -msgstr "ICS-client" +msgstr "ICS-Client" #: menus.c:657 msgid "Machine Match" @@ -2516,14 +2498,12 @@ msgid "Rematch" 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" @@ -2538,14 +2518,12 @@ msgid "Resign" 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" @@ -2553,15 +2531,15 @@ msgstr "Hochladen zum Untersuchen" #: 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 ..." @@ -2581,40 +2559,35 @@ 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 ..." msgstr "Allgemein…" #: menus.c:702 -#, fuzzy msgid "Time Control ..." -msgstr "Zeitkontrolle" +msgstr "Zeitkontrolle…" #: menus.c:703 -#, fuzzy msgid "Common Engine ..." -msgstr "Allemein Schachprogramme… Alt+Umschalt+U" +msgstr "Allgemein Schachprogramme…" #: menus.c:704 -#, fuzzy msgid "Adjudications ..." -msgstr "Zuerkennung… Alt+Umschalt+J" +msgstr "Zuerkennung…" #: menus.c:705 msgid "ICS ..." @@ -2638,7 +2611,7 @@ msgstr "Partieliste…" #: menus.c:710 msgid "Sounds ..." -msgstr "Klang ..." +msgstr "Klang…" #: menus.c:713 msgid "Always Queen" @@ -2686,12 +2659,11 @@ msgstr "Einstellung am Ende speichern" #: 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" @@ -2703,11 +2675,11 @@ msgstr "Online Benutzerhandbuch" #: 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 msgid "engine name" @@ -2870,15 +2842,15 @@ 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:1262 msgid "OK" @@ -2888,6 +2860,9 @@ msgstr "OK" msgid "cancel" msgstr "abbrechen" +#~ msgid " " +#~ msgstr " " + #~ msgid "recognized '%s' (%d) as variant %s\n" #~ msgstr "erkenne '%s' (%d) als Variante %s\n" @@ -3001,7 +2976,7 @@ msgstr "abbrechen" #~ msgstr "Revanche F12" #~ msgid "Draw F6" -#~ msgstr "Remi F6" +#~ msgstr "Remis F6" #~ msgid "Adjourn F7" #~ msgstr "Aussetzen F7" @@ -3084,10 +3059,10 @@ msgstr "abbrechen" #~ 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" diff --git a/po/es.po b/po/es.po index e4fce62..f21854f 100644 --- a/po/es.po +++ b/po/es.po @@ -1,579 +1,605 @@ # 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 , 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: 2013-08-28 21:49-0700\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" +"PO-Revision-Date: 2013-12-07 00:14+0200\n" +"Last-Translator: Antonio Ceballos \n" +"Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" -msgstr "" +msgstr "%s en el fichero de configuración\n" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" -msgstr "" +msgstr "Valor entero malo %s" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" -msgstr "" +msgstr "Argumento no reconocido %s" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" -msgstr "" +msgstr "No se ha dado valor al argumento %s" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" -msgstr "" +msgstr "Carácter de escape \\ incompleto en el valor de %s" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" -msgstr "" +msgstr "Fallo al abrir fichero de indirección %s" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" -msgstr "" +msgstr "segundo" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "versión %d del protocolo no es admitida" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" -msgstr "" +msgstr "No se especificó el ejecutable del motor" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "opción timeControl incorrecta %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "opción searchTime incorrecta %s" -#: backend.c:1110 +#: backend.c:1120 #, 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:1138 #, c-format msgid "Unknown variant name %s" msgstr "Nombre de variante desconocido %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "Iniciando programa de ajedrez" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "archivo de partidas incorrecto" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "archivo de posición incorrecto" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" -msgstr "" +msgstr "Seleccionar una nueva partida" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, 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:1513 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:1550 #, c-format msgid "Could not open comm port %s" msgstr "No se pudo abrir la puerta de comunicaciones %s" -#: backend.c:1542 +#: backend.c:1553 #, 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:1609 #, c-format msgid "Unknown initialMode %s" msgstr "Modo inicial desconocido %s" -#: backend.c:1624 +#: backend.c:1635 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:1662 msgid "Analysis mode requires a chess engine" msgstr "El modo de análisis requiere un motor de ajedrez" -#: backend.c:1655 +#: backend.c:1666 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:1677 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:1682 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:1689 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:1694 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:1701 msgid "TwoMachines mode requires a chess engine" msgstr "El modo de dos máquinas requiere un motor de ajedrez" -#: backend.c:1695 +#: backend.c:1706 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:1717 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:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "Error al escribir a ICS" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "Error al leer el teclado" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "Se obtuvo del teclado un fin de archivo" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" -msgstr "" +msgstr "Tipo «wild» %d desconocido" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 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 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" -msgstr "" +msgstr "información kibitz de su oponente: %s" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "Error al recolectar lista de jugadas: dos encabezados" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." -msgstr "" +msgstr "contra" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" -msgstr "" +msgstr "La jugada no es válida (la ha rechazado ICS)" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "Conexión cerrada por ICS" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "Error al leer de ICS" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" +"Fallo al analizar texto del tablero:\n" +"\"%s\"" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 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:4383 msgid "Error gathering move list: extra board" msgstr "Error al recolectar lista de jugadas: tablero extra" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, 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:5074 #, 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:5145 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:6046 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:6510 msgid "You are playing Black" msgstr "Usted juega negras" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 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:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 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:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "Turno de las negras" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "La posición mostrada no es la actual" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "Jugada ilegal" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "Fin del juego" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "Jugada incorrecta" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" +msgstr "Retrasar el peón a la posición previa a la coronación" + +#: backend.c:7364 +msgid "only marked squares are legal" msgstr "" -#: backend.c:7527 +#: backend.c:7624 msgid "Swiss tourney finished" -msgstr "" +msgstr "Torneo suizo terminado" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" -msgstr "" +msgstr "El bando del otro motor no es válido" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Jugada ilegal \"%s\" del %s motor" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" -msgstr "" +msgstr "El FEN recibido del motor es incorrecto" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s no admite análisis" -#: backend.c:8666 +#: backend.c:8796 #, 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:8693 +#: backend.c:8823 #, 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:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "Sugerencia: %s" -#: backend.c:8719 +#: backend.c:8849 #, 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:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "La máquina acepta su oferta de tablas" -#: backend.c:8897 +# TRANSLATORS: Action / Draw translatable? +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" +"La máquina ofrece tablas\n" +"Seleccione Action / Draw si está de acuerdo" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" -msgstr "" +msgstr "fallo al escribir la PV" -#: backend.c:9274 +#: backend.c:9404 #, 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:9284 +#: backend.c:9414 #, 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:9295 +#: backend.c:9425 msgid "Gap in move list" -msgstr "Hueco en lista de jugadas" +msgstr "Hueco en la lista de jugadas" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "La variante %s no es admitida por %s" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" -msgstr "Falla al iniciar '%s'" +msgstr "Fallo al iniciar '%s'" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "Esperando al primer programa de ajedrez" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "Esperando al segundo programa de ajedrez" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" -msgstr "" +msgstr "No se ha podido escribir en el fichero de torneos" -#: backend.c:10196 +#: backend.c:10326 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:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" -msgstr "" +msgstr "No hay ningún motor instalado con el nombre indicado" -#: backend.c:10212 +#: backend.c:10342 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:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" -msgstr "" +msgstr "Solo se puede cambiar un motor a la vez" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" -msgstr "" +msgstr "No hay ningún motor %s instalado" -#: backend.c:10248 +#: backend.c:10378 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:10258 +#: backend.c:10388 msgid "Not enough participants" -msgstr "" +msgstr "No hay suficientes participantes" -#: backend.c:10459 -#, fuzzy +#: backend.c:10589 msgid "Bad tournament file" -msgstr "archivo de partidas incorrecto" +msgstr "Archivo de torneos incorrecto" -#: backend.c:10471 -#, fuzzy +#: backend.c:10601 msgid "Waiting for other game(s)" -msgstr "Esperando al primer programa de ajedrez" +msgstr "Esperando por otra(s) partida(s)" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" -msgstr "" +msgstr "iNo se ha especificado el otro motor" -#: backend.c:10961 +#: backend.c:11092 #, 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:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Jugada ilegal: %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Jugada ambigua: %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "No se puede abrir \"%s\"" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 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:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "No hay más partidas en este mensaje" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "Ninguna partida se ha cargado aún" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "Ya no se puede ir más atrás" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "Número de partida fuera de rango" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "No se puede buscar en archivo de partidas" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "Partida no hallada en archivo" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "Posición FEN incorrecta en archivo" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "Ninguna jugada en la partida" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "Ninguna posición se ha cargado aún" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 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:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "No se halló la posición en el archivo" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" -msgstr "Las negras juegan" +msgstr "Negras juegan" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" -msgstr "Las blancas juegan" +msgstr "Blancas juegan" -#: backend.c:12703 backend.c:13064 -#, fuzzy +#: backend.c:12834 backend.c:13195 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:12705 +#: backend.c:12836 msgid "Saving game" -msgstr "" +msgstr "Guardando partida" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" -msgstr "" +msgstr "Búsqueda incorrecta" -#: backend.c:13066 -#, fuzzy +#: backend.c:13197 msgid "Saving position" -msgstr "archivo de posición incorrecto" +msgstr "Guardando posición" -#: backend.c:13192 +#: backend.c:13323 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:13197 +#: backend.c:13328 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:13202 +#: backend.c:13333 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:13249 +#: backend.c:13380 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:13270 +#: backend.c:13401 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:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "No hay partidas sin terminar" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -582,340 +608,345 @@ msgid "" "\"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:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" -msgstr "Falla al invocar cmail" +msgstr "Fallo al invocar cmail" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Esperando respuesta del oponente\n" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "Todavía necesita hacer una jugada para la partida\n" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "Todavía necesita hacer jugadas para ambas partidas\n" -#: backend.c:13388 +#: backend.c:13519 #, 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:13395 +#: backend.c:13526 #, 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:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "No hay juegos sin terminar\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "Listo para enviar correo\n" -#: backend.c:13408 +#: backend.c:13539 #, 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:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "Editar comentario" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Editar comentario en %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" -msgstr "" +msgstr "Usted no está observando una partida" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "No es turno de las blancas" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "No es turno de las negras" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" -msgstr "" +msgstr "Iniciando el programa de ajedrez %s" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" +"Espere su turno\n" +"o seleccione «Move Now»" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "Modo de entrenamiento apagado" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "Modo de entrenamiento activo" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "Ya se encuentra al final de la partida" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "Advertencia: Usted todavía está jugando una partida" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "Advertencia: Usted todavía está observando una partida" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "Advertencia: Usted todavía está examinando una partida" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" -msgstr "" +msgstr "Pinche el reloj para limpiar el tablero" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." -msgstr "" +msgstr "Cerrar el modo de análisis del motor ICS..." -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "Ese cuadro está ocupado" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "No hay oferta pendiente para esta jugada" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "Su oponente no está fuera de tiempo" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "Debe hacer su jugada antes de ofrecer tablas" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "Usted no está examinando una partida" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "No puede revertir si está en pausa" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "Es su turno" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "Espero su turno" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "No hay sugerencia disponible" -#: backend.c:15234 ngamelist.c:355 -#, fuzzy +#: backend.c:15366 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:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" +"¡Ya existe el fichero del libro! Inténtelo de nuevo si quiere " +"sobreescribirlo." -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "Error al escribir al %s programa de ajedrez" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" -msgstr "" +msgstr "El programa %s termina en posición de tablas (%s)" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Error: el %s programa de ajedrez (%s) terminó inesperadamente" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Error al leer del %s programa de ajedrez (%s)" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" -msgstr "" +msgstr "El motor %s tiene demasiadas opciones\n" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "La jugada ilustrada no es la actual" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "No se pudo analizar la jugada" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "Ambas banderas cayeron" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "La bandera blanca cayó" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "La bandera negra cayó" -#: backend.c:16613 +#: backend.c:16746 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:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "Posición FEN incorrecta en portapapeles" #: book.c:577 book.c:830 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:833 msgid "Hash keys are different" -msgstr "" +msgstr "Las claves «hash» son diferentes" #: book.c:1000 -#, 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 msgid "Tournament file: " -msgstr "Aplazamiento F7" +msgstr "Fichero de torneos: " #: dialogs.c:260 msgid "Sync after round" -msgstr "" +msgstr "Sincronizar después de la ronda" #: dialogs.c:261 msgid " (for concurrent playing of a single" -msgstr "" +msgstr " (para jugar simultáneamente en un solo" #: dialogs.c:262 msgid "Sync after cycle" -msgstr "" +msgstr "Sincronizar después de una vuelta" #: dialogs.c:263 msgid " tourney with multiple XBoards)" -msgstr "" +msgstr " torneo con múltiples XBoards)" #: dialogs.c:264 msgid "Tourney participants:" -msgstr "" +msgstr "Participantes del torneo:" #: dialogs.c:265 -#, fuzzy msgid "Select Engine:" -msgstr "Motor" +msgstr "Seleccione Motor:" #: dialogs.c:273 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" -msgstr "" +msgstr "Tipo de torneo (0 = liga, 1 = uno contra todos):" #: dialogs.c:274 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 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 msgid "Pause between Match Games (msec):" -msgstr "" +msgstr "Pausa entre partidas del encuentro (ms):" #: dialogs.c:277 -#, fuzzy msgid "Save Tourney Games on:" -msgstr "Opciones al salvar partida" +msgstr "Guardar partidas del torneo en:" #: dialogs.c:278 msgid "Game File with Opening Lines:" -msgstr "" +msgstr "Fichero de partidas con líneas de apertura:" #: dialogs.c:279 msgid "Game Number (-1 or -2 = Auto-Increment):" -msgstr "" +msgstr "Número de la partida (-1 o -2 = incremento automático):" #: dialogs.c:280 msgid "File with Start Positions:" -msgstr "" +msgstr "Fichero con posiciones iniciales:" #: dialogs.c:281 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 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 msgid "Disable own engine books by default" -msgstr "" +msgstr "Inicialmente, desactivar los libros propios del motor" #: dialogs.c:284 -#, fuzzy msgid "Replace Engine" -msgstr "Motor" +msgstr "Reemplazar motor" #: dialogs.c:285 -#, fuzzy msgid "Upgrade Engine" -msgstr "Motor" +msgstr "Actualizar motor" #: dialogs.c:286 msgid "Clone Tourney" -msgstr "" +msgstr "Clonar torneo" #: dialogs.c:316 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:332 dialogs.c:1322 msgid "# no engines are installed" -msgstr "" +msgstr "# no hay ningún motor instalado" #: dialogs.c:344 msgid "Match Options" -msgstr "" +msgstr "Opciones del encuentro" #: dialogs.c:363 msgid "Absolute Analysis Scores" -msgstr "" +msgstr "Puntuaciones absolutas del análisis" #: dialogs.c:364 msgid "Almost Always Queen (Detour Under-Promote)" -msgstr "" +msgstr "Casi siempre dama (rodeo para subcoronar)" #: dialogs.c:365 menus.c:714 msgid "Animate Dragging" @@ -939,11 +970,11 @@ msgstr "A ciegas" #: dialogs.c:370 msgid "Drop Menu" -msgstr "" +msgstr "Menú «drop»" #: dialogs.c:371 msgid "Enable Variation Trees" -msgstr "" +msgstr "Activar árboles de variaciones" #: dialogs.c:372 msgid "Hide Thinking from Human" @@ -967,24 +998,23 @@ msgstr "Actualización periódica (en análisis)" #: dialogs.c:378 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:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "Prever siguente jugada" #: dialogs.c:380 msgid "Popup Exit Messages" -msgstr "Ventana al salir" +msgstr "Ventana emergente al salir" #: dialogs.c:381 menus.c:730 msgid "Popup Move Errors" -msgstr "Ventana si error en jugada" +msgstr "Ventana emergente si error en jugada" #: dialogs.c:382 -#, fuzzy msgid "Scores in Move List" -msgstr "Leer lista jugadas" +msgstr "Puntuaciones de la lista de jugadas" #: dialogs.c:383 msgid "Show Coordinates" @@ -992,36 +1022,35 @@ msgstr "Mostrar coordenadas" #: dialogs.c:384 msgid "Show Target Squares" -msgstr "" +msgstr "Mostrar casillas objetivo" #: dialogs.c:385 msgid "Sticky Windows" -msgstr "" +msgstr "Ventanas adhesivas" #: dialogs.c:386 menus.c:733 msgid "Test Legality" -msgstr "Checar legalidad" +msgstr "Verificar legalidad" #: dialogs.c:387 msgid "Top-Level Dialogs" -msgstr "" +msgstr "Diálogos de alto nivel" #: dialogs.c:388 msgid "Flash Moves (0 = no flashing):" -msgstr "" +msgstr "Destello en las jugadas (0 = sin destello):" #: dialogs.c:389 msgid "Flash Rate (high = fast):" -msgstr "" +msgstr "Velocidad de destello (high = rápido):" #: dialogs.c:390 msgid "Animation Speed (high = slow):" -msgstr "" +msgstr "Velocidad de animación (high = lenta):" #: dialogs.c:391 -#, fuzzy 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" @@ -1033,40 +1062,39 @@ msgstr "normal" #: dialogs.c:411 msgid "makruk" -msgstr "" +msgstr "«makruk» (tailandés)" #: dialogs.c:412 msgid "FRC" -msgstr "" +msgstr "FRC (ajedrez aleatorio de Fischer)" #: dialogs.c:413 msgid "shatranj" -msgstr "" +msgstr "«shatranj»" #: dialogs.c:414 msgid "wild castle" -msgstr "" +msgstr "enroque salvaje" #: dialogs.c:415 msgid "knightmate" -msgstr "" +msgstr "mate al caballo" #: dialogs.c:416 msgid "no castle" -msgstr "" +msgstr "sin enroque" #: dialogs.c:417 -#, fuzzy msgid "cylinder *" -msgstr "cilindro" +msgstr "cilíndrico *" #: dialogs.c:418 msgid "3-checks" -msgstr "" +msgstr "tres jaques" #: dialogs.c:419 msgid "berolina *" -msgstr "" +msgstr "belorina *" #: dialogs.c:420 msgid "atomic" @@ -1074,63 +1102,64 @@ msgstr "atómico" #: dialogs.c:421 msgid "two kings" -msgstr "" +msgstr "dos reyes" #: dialogs.c:422 msgid "Board size ( -1 = default for selected variant):" msgstr "" +"Tamaño del tablero ( -1 = el predeterminado para la variante seleccionada):" #: dialogs.c:423 msgid "Number of Board Ranks:" -msgstr "" +msgstr "Número de filas del tablero:" #: dialogs.c:424 msgid "Number of Board Files:" -msgstr "" +msgstr "Número de columnas del tablero:" #: dialogs.c:425 msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 msgid "Great Shatranj (10x8)" -msgstr "" +msgstr "Gran shatranj (10x8)" #: dialogs.c:431 msgid "Seirawan" -msgstr "" +msgstr "Seirawan" #: dialogs.c:432 msgid "falcon (10x8)" -msgstr "" +msgstr "halcón (10x8)" #: dialogs.c:433 msgid "Superchess" -msgstr "" +msgstr "Superajedrez" #: dialogs.c:434 msgid "Capablanca (10x8)" -msgstr "" +msgstr "Capablanca (10x8)" #: dialogs.c:435 msgid "crazyhouse" -msgstr "" +msgstr "«crazyhouse»" #: dialogs.c:436 msgid "Gothic (10x8)" -msgstr "" +msgstr "Gótico (10x8)" #: dialogs.c:437 msgid "bughouse" -msgstr "" +msgstr "pasapiezas" #: dialogs.c:438 msgid "janus (10x8)" -msgstr "" +msgstr "janus (10x8)" #: dialogs.c:439 msgid "suicide" @@ -1138,1120 +1167,1131 @@ msgstr "suicida" #: dialogs.c:440 msgid "CRC (10x8)" -msgstr "" +msgstr "CRC (10x8)" +# TRANSLATORS: give-away = losers? #: dialogs.c:441 msgid "give-away" -msgstr "" +msgstr "pierde gana" #: dialogs.c:442 msgid "grand (10x10)" -msgstr "" +msgstr "gran ajedrez (10x10)" +# TRANSLATORS: give-away = losers? #: dialogs.c:443 msgid "losers" -msgstr "" +msgstr "pierde gana" #: dialogs.c:444 msgid "shogi (9x9)" -msgstr "" +msgstr "japonés (9x9)" #: dialogs.c:445 msgid "Spartan" -msgstr "" +msgstr "espartano" #: dialogs.c:446 msgid "xiangqi (9x10)" -msgstr "" +msgstr "chino" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" -msgstr "" +msgstr "ajedrez del mensajero (12x8)" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Advertencia: ¡el segundo motor (%s) no admite esto!" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" -msgstr "" +msgstr "Solo pasapiezas no está disponible en el modo visor" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by 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:491 msgid "New Variant" -msgstr "Variantes" +msgstr "Nueva variante" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" -msgstr "Número max. CPUs:" +msgstr "Número max. CPUs por motor:" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" -msgstr "" +msgstr "Directorio de Ployglot:" -#: dialogs.c:517 +#: dialogs.c:518 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:519 msgid "Nalimov EGTB Path:" -msgstr "Carpeta EGTB:" +msgstr "Carpeta de la EGTB Nalimov:" -#: dialogs.c:519 +#: dialogs.c:520 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:521 msgid "Use GUI Book" -msgstr "" +msgstr "Usar el libro de la GUI" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" -msgstr "" +msgstr "Fichero del libro de aperturas:" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" -msgstr "Profundo libro:" +msgstr "Profundidad del libro (jugadas):" -#: dialogs.c:523 +#: dialogs.c:524 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:525 msgid "Engine #1 Has Own Book" -msgstr "Primero tiene libro propio" +msgstr "El motor 1 tiene libro propio" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " -msgstr "" +msgstr "El motor 2 tiene libro propio" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" -msgstr "Configuración común de motor" +msgstr "Configuración general de los motores" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" -msgstr "Detectar mates" +msgstr "Detectar todos los mates" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "Verificar avisos del motor" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" -msgstr "Tablas si hay material insufficiente" +msgstr "Tablas si el material es insuficiente" -#: dialogs.c:543 +#: dialogs.c:544 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:545 msgid "N-Move Rule:" -msgstr "" +msgstr "Regla de las N jugadas:" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "Adjudicar mate después de:" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "Límite para adjudicar juego:" -#: dialogs.c:548 +#: dialogs.c:549 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:550 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:557 msgid "Adjudicate non-ICS Games" -msgstr "Adjudicar a blancas" +msgstr "Adjudicar partidas no ICS" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "Auto Kibitz" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "Auto-comentario" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "Auto-Observar" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "Tablero al frente (automático)" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" -msgstr "" +msgstr "Creación de fichero de registro automática" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" -msgstr "Mirar en el fondo" +msgstr "Seguir observando mientras se juega" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" -msgstr "Tablero dual" +msgstr "Tablero dual para partidas observadas" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" -msgstr "Leer lista jugadas" +msgstr "Leer lista de jugadas" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "Jugar en silencio" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "Buscar gráfica" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" -msgstr "auto-Refresco" +msgstr "Grafo de búsqueda con refresco automático" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" -msgstr "" +msgstr "Ventana emergente de buzón automática" -#: dialogs.c:581 +#: dialogs.c:582 +#, fuzzy +msgid "Quit after game" +msgstr "Esperando por otra(s) partida(s)" + +#: dialogs.c:583 msgid "Premove" -msgstr "Pre-mov." +msgstr "Pre-jugada" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" -msgstr "" +msgstr "Prejugada de las blancas" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "1er. mov. blancas" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" -msgstr "" +msgstr "Prejugada de las negras" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "1er. mov. negras" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "Alarma" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" -msgstr "" +msgstr "Tiempo de la alarma (ms):" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" -msgstr "" +msgstr "Mensajes coloreados" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" -msgstr "" +msgstr "Colores del texto que se expresa en voz alta:" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" -msgstr "" +msgstr "Colores «S» del texto que se expresa en voz alta:" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" -msgstr "" +msgstr "Colores del texto del canal 1:" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" -msgstr "" +msgstr "Colores del texto del otro canal:" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" -msgstr "" +msgstr "Colores del texto kibitz:" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" -msgstr "" +msgstr "Colores del texto de hablar con otros:" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" -msgstr "" +msgstr "Colores del texto de desafíos:" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" -msgstr "" +msgstr "Colores del texto de peticiones:" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" -msgstr "" +msgstr "Colores del texto de búsqueda:" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "Opciones ICS" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" -msgstr "" +msgstr "Coincidencia exacta de la posición" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" -msgstr "" +msgstr "La posición mostrada es un subconjunto" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" -msgstr "" +msgstr "Mismo material con exactamente la misma cadena de peones" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" -msgstr "" +msgstr "Mismo material" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" -msgstr "" +msgstr "Rango de material (mitad superior del tablero opcional)" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" -msgstr "" +msgstr "Diferencia de material (situación equilibrada opcional)" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" -msgstr "" +msgstr "Etiquetas de visualización automática" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" -msgstr "" +msgstr "Comentario de visualización automática" -#: dialogs.c:626 +#: dialogs.c:628 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:629 msgid "Seconds per Move:" -msgstr "" +msgstr "Segundos por jugadas:" -#: dialogs.c:628 +#: dialogs.c:630 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:632 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:633 msgid "Elo of strongest player at least:" -msgstr "" +msgstr "Elo del mejor jugador como mínimo:" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" -msgstr "" +msgstr "Elo del peor jugador como mínimo:" -#: dialogs.c:633 -#, fuzzy +#: dialogs.c:635 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:636 msgid "Minimum nr consecutive positions:" -msgstr "" +msgstr "Número mínimo de posiciones consecutivas:" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" -msgstr "" +msgstr "Modo de búsqueda:" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" -msgstr "" +msgstr "También colores invertidos" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" -msgstr "" +msgstr "También posición volteada izquierda-derecha" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "Opciones al leer partida" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" -msgstr "" +msgstr "Guardar partidas automáticamente" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" -msgstr "" +msgstr "Solo partidas propias" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" -msgstr "" +msgstr "Guardar partidas en fichero" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" -msgstr "" +msgstr "Guardar en fichero posiciones finales:" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" -msgstr "" +msgstr "Cabecera PGN del evento:" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" -msgstr "" +msgstr "Estilo de guardado antiguo (en contraposición a PGN)" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" -msgstr "" +msgstr "Incluir etiqueta de número en el PGN del torneo" -#: dialogs.c:664 +#: dialogs.c:666 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:667 msgid "Save Out-of-Book Info in PGN " -msgstr "" +msgstr "Guardar información fuera-de-libro en PGN " -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "Opciones al salvar partida" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "Sin sonido" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" -msgstr "Bip por defecto" +msgstr "Bip predeterminado" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" -msgstr "" +msgstr "Fichero WAV de arriba" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" -msgstr "" +msgstr "Bocina de coche" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" -msgstr "" +msgstr "Platillos" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" -msgstr "" +msgstr "Timbre" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" -msgstr "" +msgstr "«Gong»" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" -msgstr "" +msgstr "Láser" -#: dialogs.c:689 +# TRANSLATORS +#: dialogs.c:691 msgid "Penalty" -msgstr "" +msgstr "Penalización" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" -msgstr "" +msgstr "Teléfono" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" -msgstr "" +msgstr "«Pop»" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" -msgstr "" +msgstr "Palmada" -#: dialogs.c:693 +# TRANSLATORS +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" -msgstr "" +msgstr "Fichero del usuario" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" -msgstr "" +msgstr "Fichero WAV del usuario:" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" -msgstr "" +msgstr "Programa de sonido:" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" -msgstr "" +msgstr "Sonido de prueba" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "Reproducir" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" -msgstr "" +msgstr "Jugada:" -#: dialogs.c:722 +# TRANSLATORS +#: dialogs.c:724 msgid "Win:" -msgstr "" +msgstr "Victorias:" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" -msgstr "" +msgstr "Derrotas:" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" -msgstr "" +msgstr "Tablas" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" -msgstr "" +msgstr "No terminadas:" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" -msgstr "" +msgstr "Alarma:" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" -msgstr "" +msgstr "Desafío:" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" -msgstr "" +msgstr "Carpeta de sonidos:" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" -msgstr "" +msgstr "En voz alta:" -#: dialogs.c:731 +# TRANSLATORS +#: dialogs.c:733 msgid "S-Shout:" -msgstr "" +msgstr "En voz alta S" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" -msgstr "" +msgstr "Canal:" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" -msgstr "" +msgstr "Canal 1:" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" -msgstr "" +msgstr "Decir:" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" -msgstr "" +msgstr "Kibitz:" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" -msgstr "" +msgstr "Pedir:" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" -msgstr "" +msgstr "Buscar:" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" -msgstr "Sonidos" +msgstr "Opciones de sonido" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" -msgstr "" +msgstr "O" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" -msgstr "Piezas negras" +msgstr "Color de las piezas negras:" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" -msgstr "Cuadros claros" +msgstr "Color de los escaques claros" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" -msgstr "Cuadros obscuros" +msgstr "Color de los escaques oscuros" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" -msgstr "Cuadro iluminado" +msgstr "Color de escaque iluminado" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" -msgstr "Iluminación pre.mov." +msgstr "Color de iluminación de prejugada:" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" -msgstr "" +msgstr "Voltear piezas estilo Shogi (Botones de colores predefinidos)" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" -msgstr "Monocromo" +msgstr "Modo mono" -#: dialogs.c:817 +#: dialogs.c:819 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:820 msgid "Use Board Textures" -msgstr "" +msgstr "Utilizar tablero con texturas" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" -msgstr "" +msgstr "Fichero de texturas para escaques claros:" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" -msgstr "" +msgstr "Fichero de texturas para escaques oscuros:" -#: dialogs.c:821 +#: dialogs.c:823 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:824 msgid "Directory with Pieces Images:" -msgstr "" +msgstr "Carpeta con imágenes de piezas:" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "Opciones de tablero" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" -msgstr "" +msgstr "Menú de texto ICS" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" -msgstr "" +msgstr "borrar" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" -msgstr "" +msgstr "guardar cambios" -#: dialogs.c:1051 -#, fuzzy +#: dialogs.c:1053 msgid "Edit book" -msgstr "Edición" +msgstr "Editar libro" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" -msgstr "Circunstancias" +msgstr "Etiquetas" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" -msgstr "" +msgstr "Cuadro de entrada ICS" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" -msgstr "" +msgstr "Teclear una jugada" -#: dialogs.c:1251 -#, fuzzy +#: dialogs.c:1253 msgid "Engine has no options" -msgstr "Primero tiene libro propio" +msgstr "El motor no tiene opciones" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" -msgstr "" +msgstr "Configuración del motor" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" -msgstr "" +msgstr "Seleccionar un motor de la lista:" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" -msgstr "" +msgstr "o especificar uno debajo:" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" -msgstr "" +msgstr "Sobrenombre (opcional):" -#: dialogs.c:1283 +#: dialogs.c:1285 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:1286 msgid "Engine Directory:" -msgstr "" +msgstr "Carpeta del motor:" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" -msgstr "" +msgstr "Instrucción para el motor:" -#: dialogs.c:1286 +#: dialogs.c:1288 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:1289 msgid "UCI" -msgstr "" +msgstr "UCI" -#: dialogs.c:1288 +#: dialogs.c:1290 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:1291 msgid "Must not use GUI book" -msgstr "" +msgstr "No debe utilizar el libro de la GUI" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" -msgstr "" +msgstr "Añadir este motor a la lista" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" -msgstr "" +msgstr "Forzar la variante actual con este motor" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" -msgstr "" +msgstr "Cargar el primer motor" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" -msgstr "" +msgstr "Cargar el segundo motor" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" -msgstr "" +msgstr "barajar" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "Núm. de pos. inicial:" -#: dialogs.c:1372 -#, fuzzy +#: dialogs.c:1374 msgid "randomize" -msgstr "Aleatorio" +msgstr "aleatorizar" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" -msgstr "" +msgstr "selección fijada" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "Nueva partida revuelta..." -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" -msgstr "" +msgstr "clásica" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" -msgstr "" +msgstr "incremental" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" -msgstr "" +msgstr "máximo fijado" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" -msgstr "" +msgstr "Jugadas por sesión:" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" -msgstr "" +msgstr "Tiempo inicial (min):" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" -msgstr "" +msgstr "Incremento o máximo (s(jugada):" -#: dialogs.c:1415 -#, fuzzy +#: dialogs.c:1417 msgid "Time-Odds factors:" -msgstr "Factores de tiempo:" +msgstr "Factores de tiempo extra:" -#: dialogs.c:1416 -#, fuzzy +#: dialogs.c:1418 msgid "Engine #1" -msgstr "Motor" +msgstr "Motor 1" -#: dialogs.c:1417 -#, fuzzy +#: dialogs.c:1419 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:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" -msgstr "" +msgstr "No se usa" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" -msgstr "" +msgstr "Control de tiempo" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "Error al escribir al programa de ajedrez" -#: dialogs.c:1574 -#, fuzzy +#: dialogs.c:1576 msgid "Cancel" msgstr "Cancelar" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "Rey" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" -msgstr "" +msgstr "Capitán" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" -msgstr "" +msgstr "Teniente" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" -msgstr "Generales..." +msgstr "General" -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" -msgstr "" +msgstr "Caudillo" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "Caballo" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "Alfil" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "Torre" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "Arzobispo" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "Canciller" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "Dama" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" -msgstr "" +msgstr "Diferir" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "Coronar" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" -msgstr "" +msgstr "Charlar con compañero:" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" -msgstr "" +msgstr "Cuadro de charla" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "De fábrica" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" -msgstr "Arriba" +msgstr "arriba" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" -msgstr "Abajo" +msgstr "abajo" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" -msgstr "" +msgstr "Número de la etiqueta seleccionada" -#: dialogs.c:1793 -#, fuzzy +#: dialogs.c:1795 msgid "Game-list options" -msgstr "Opciones al leer partida" +msgstr "Opciones de la lista de partidas" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "Error" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "Error fatal" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "Saliendo" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "Información" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "Nota" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "Blancas" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "Peón" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "Elefante" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "Cañón" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "Degradar" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "Vaciar el escaque" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" -msgstr "Limpiar el tablero " +msgstr "Limpiar el tablero" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "Negras" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "Archivo" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" -msgstr "Edición" +msgstr "Editar" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "Ver" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "Modo" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" -msgstr "Partida" +msgstr "Acción" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "Motor" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "Opciones" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "Ayuda" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" -msgstr "" +msgstr "<<" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" -msgstr "" +msgstr "<" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" -msgstr "" +msgstr ">" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" -msgstr "" +msgstr ">>" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" -msgstr "" +msgstr "Carpetas:" -#: dialogs.c:2365 -#, fuzzy +#: dialogs.c:2372 msgid "Files:" -msgstr "Archivo" +msgstr "Archivos:" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" -msgstr "" +msgstr "por nombre" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" -msgstr "" +msgstr "por tipo" -#: dialogs.c:2370 -#, fuzzy +#: dialogs.c:2377 msgid "Filename:" -msgstr "Filtro" +msgstr "Nombre del fichero:" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" -msgstr "" +msgstr "Nueva carpeta" -#: dialogs.c:2372 -#, fuzzy +#: dialogs.c:2379 msgid "File type:" -msgstr "Filtro" +msgstr "Tipo de fichero:" -#: dialogs.c:2447 -#, fuzzy +#: dialogs.c:2454 msgid "Contents of" -msgstr "Comentarios" +msgstr "Contenido de" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" -msgstr "" +msgstr " siguiente página" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" -msgstr "" +msgstr "INTENTAR OTRO NOMBRE" #: draw.c:293 msgid "" "No default pieces installed\n" "Select your own -pieceImageDirectory" msgstr "" +"No hay piezas predeterminadas instaladas\n" +"Seleccione su propio -pieceImageDirectory" #: engineoutput.c:107 menus.c:630 -#, fuzzy, c-format +#, c-format msgid "Engine Output" -msgstr "Salida de motores" +msgstr "Salida del motor" #: engineoutput.c:117 #, 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 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:787 xaw/xboard.c:1161 #, c-format msgid "%s: can't cd to CHESSDIR: " -msgstr "" +msgstr "%s: no se puede ir a la carpeta CHESSDIR: " #: gtk/xboard.c:796 xaw/xboard.c:1170 #, c-format msgid "Failed to open file '%s'\n" -msgstr "" +msgstr "Fallo al abrir el fichero '%s'\n" +#  TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable? #: gtk/xboard.c:811 xaw/xboard.c:1179 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:830 xaw/xboard.c:1211 #, c-format msgid "%s: bad boardSize syntax %s\n" -msgstr "" +msgstr "%s: sintaxis de boardSize incorrecta %s\n" #: gtk/xboard.c:870 xaw/xboard.c:1248 #, c-format msgid "%s: unrecognized boardSize name %s\n" -msgstr "" +msgstr "%s: nombre de boardSize no reconocido %s\n" #: gtk/xboard.c:911 xaw/xboard.c:1285 #, 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:1201 xaw/xboard.c:1567 #, 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:1226 xaw/xboard.c:1590 #, 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:1665 xaw/xboard.c:2080 msgid "Can't open temp file" -msgstr "" +msgstr "No se puede abrir el fichero temporal" #: gtk/xboard.c:2128 -#, fuzzy 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 @@ -2273,169 +2313,162 @@ msgid "" "Report bugs via email at: \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: \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 ..." msgstr "Nueva partida revuelta..." #: menus.c:584 -#, fuzzy msgid "New Variant ..." -msgstr "Variantes" +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" @@ -2443,44 +2476,39 @@ msgstr "Comentarios" #: 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" @@ -2488,7 +2516,7 @@ msgstr "Entrenamiento" #: menus.c:655 msgid "ICS Client" -msgstr "Conectado a un ICS" +msgstr "Cliente ICS" #: menus.c:657 msgid "Machine Match" @@ -2496,50 +2524,47 @@ msgstr "Torneo de dos programas" #: 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" @@ -2559,87 +2584,83 @@ msgstr "Adjudicar tablas" #: menus.c:684 msgid "Load New 1st Engine ..." -msgstr "" +msgstr "Cargar un nuevo primer motor ..." #: menus.c:685 msgid "Load New 2nd Engine ..." -msgstr "" +msgstr "Cargar un nuevo segundo motor ..." #: menus.c:687 msgid "Engine #1 Settings ..." -msgstr "Configuración motor #1..." +msgstr "Configuración del motor #1..." #: menus.c:688 msgid "Engine #2 Settings ..." -msgstr "Configuración motor #2..." +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..." +msgstr "General..." #: menus.c:702 -#, fuzzy msgid "Time Control ..." msgstr "Controles de tiempo..." #: menus.c:703 -#, fuzzy msgid "Common Engine ..." -msgstr "Para los motores... Alt+Mayús+U" +msgstr "General de los motores..." #: menus.c:704 -#, fuzzy msgid "Adjudications ..." -msgstr "Adjudicaciones... Alt+Mayús+J" +msgstr "Adjudicaciones..." #: menus.c:705 msgid "ICS ..." -msgstr "ICS..." +msgstr "ICS ..." #: menus.c:706 msgid "Match ..." -msgstr "" +msgstr "Encuentro ..." #: menus.c:707 msgid "Load Game ..." -msgstr "Para leer partida... Alt+Mayús+L" +msgstr "Cargar partida ..." #: menus.c:708 msgid "Save Game ..." -msgstr "Para guardar partida... Alt+Mayús+S" +msgstr "Guardar partida ..." #: menus.c:709 msgid "Game List ..." -msgstr "Lista de partidas..." +msgstr "Lista de partidas ..." #: menus.c:710 msgid "Sounds ..." -msgstr "Sonido..." +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" @@ -2651,7 +2672,7 @@ msgstr "Iluminar con flecha" #: menus.c:725 msgid "Move Sound" -msgstr "" +msgstr "Sonido en jugadas" #: menus.c:727 msgid "Periodic Updates" @@ -2659,69 +2680,67 @@ msgstr "Actualización periódica" #: 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 msgid "engine name" -msgstr "Motor" +msgstr "nombre del motor" #: nengineoutput.c:80 nengineoutput.c:87 -#, fuzzy msgid "move" -msgstr "jugadas" +msgstr "jugada" #: nengineoutput.c:153 msgid "Engine output" -msgstr "Salida de motores" +msgstr "Salida del motor" #: nengineoutput.c:157 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" @@ -2729,33 +2748,31 @@ msgstr "Gráfica de evaluación" #: 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" @@ -2768,24 +2785,24 @@ msgstr "Ya no se puede ir más adelante" #: 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" @@ -2793,50 +2810,51 @@ msgstr "No hay lista de partidas" #: 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 "" +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 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" -msgstr "" +msgstr "ERROR: usuario desconocido %s (en carpeta %s)\n" #: usystem.c:556 msgid "Socket support is not configured in" -msgstr "" +msgstr "La capacidad de «socket» no está configurada en" #: usystem.c:645 msgid "internal rcmd not implemented for Unix" -msgstr "" +msgstr "rcmd interno no implementado para Unix" #: xaw/xboard.c:477 #, c-format msgid "%s: Can't access XPM directory %s\n" -msgstr "" +msgstr "%s: No se puede acceder a la carpeta XPM %s\n" #: xaw/xboard.c:498 #, c-format msgid "Available `%s' sizes:\n" -msgstr "" +msgstr "Disponibles `%s' tamaños:\n" #: xaw/xboard.c:531 #, c-format msgid "Error: No `%s' files!\n" -msgstr "" +msgstr "¡Error: no hay ficheros `%s'!\n" #: xaw/xboard.c:544 #, c-format @@ -2846,32 +2864,36 @@ msgid "" " 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" #: xaw/xboard.c:1291 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" -msgstr "" +msgstr "pixel blanco = 0x%lx, pixel negro = 0x%lx\n" #: xaw/xengineoutput.c:114 #, c-format msgid "Error %d loading icon image\n" -msgstr "" +msgstr "Error %d cargando imagen de icono\n" #: xaw/xoptions.c:321 xaw/xoptions.c:1015 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:1262 msgid "OK" @@ -2881,141 +2903,5 @@ msgstr "Aceptar" 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 "Evaluation Graph Alt+Shift+E" -#~ msgstr "Mostrar gráfica de evaluación Alt+Mayús+E" - -#~ 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 "Promotion" -#~ msgstr "Coronación" - -#~ msgid "ok" -#~ msgstr "Aceptar" - -#~ msgid "Highlight Dragging (Show Move Targets)" -#~ msgstr "Iluminar arrastre" - -#~ msgid "White " -#~ msgstr "Blancas " - -#~ msgid "Black " -#~ msgstr "Negras " - -#~ msgid "Close" -#~ msgstr "Cerrar" - -#~ msgid "sec/move" -#~ msgstr "segundos por jugada" +#~ msgid " " +#~ msgstr " " diff --git a/po/it.po b/po/it.po index 65bde87..a7211f8 100644 --- a/po/it.po +++ b/po/it.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110411\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,566 +18,570 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "Versione %d del protocollo non supportata" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "Opzione timeControl non corretta: %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "Opzione searchTime non corretta: %s" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "La variante %s è supportata solo in modalità ICS" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "Nome di variante sconosciuto: %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "Avvio del motore di gioco" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "File partita non riconosciuto" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "File posizione non riconosciuto" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 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:1550 #, c-format msgid "Could not open comm port %s" msgstr "Apertura della porta comm %s fallita" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Connessione all'host %s, porta %s fallita" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "Valore per initialMode non riconosciuto: %s" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "La modalità 'Analizza file' richiede un file partita" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "La modalità Analisi richiede un motore di gioco" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "La funzione di Analisi non è disponibile in modalità ICS" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "La modalità 'Bianco al motore di gioco' richiede almeno un motore" -#: backend.c:1671 +#: backend.c:1682 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:1689 msgid "MachineBlack mode requires a chess engine" msgstr "La modalità 'Nero al motore di gioco' richiede almeno un motore" -#: backend.c:1683 +#: backend.c:1694 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:1701 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:1706 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:1717 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:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "Errore in scrittura sull'ICS" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "Errore in lettura da tastiera" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "Ricevuto carattere di Fine file (EOF) dalla tastiera" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "Errore in scrittura sul display" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "Errore nella lettura della lista mosse: sono presenti due intestazioni" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "Connessione chiusa dal'ICS" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "Errore in lettura dall'ICS" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 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:4383 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:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Impossibile interpretare la mossa dall'ICS: \"%s\"" -#: backend.c:5063 +#: backend.c:5074 #, 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:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "Stai giocando con il Nero" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 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:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 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:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "Il tratto è al Nero" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "La posizione mostrata non è quella corrente" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "Mossa illegale" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "Termine della partita" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "Mossa non corretta" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Mossa illegale \"%s\" dal %s motore di gioco" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s non supporta l'analisi" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Mossa illegale \"%s\" (rifiutata dal %s motore di gioco)" -#: backend.c:8693 +#: backend.c:8823 #, 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:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "Suggerimento: %s" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "Il motore di gioco accetta la tua offerta di patta" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Mossa ambigua nell'output dell'ICS: \"%s\"" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Mossa illegale nell'output dell'ICS: \"%s\"" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "Mosse mancanti nella lista mosse" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "La variante %s non è supportata da %s" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "Avvio di '%s' fallito" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "In attesa del primo motore di gioco" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "In attesa del secondo motore di gioco" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 #, fuzzy msgid "Bad tournament file" msgstr "File partita non riconosciuto" -#: backend.c:10471 +#: backend.c:10601 #, fuzzy msgid "Waiting for other game(s)" msgstr "In attesa del primo motore di gioco" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Match %s vs %s: punteggio finale %d-%d-%d" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Mossa illegale: %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Mossa ambigua: %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "Impossibile aprire \"%s\"" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "Impossibile costruire lista delle partite" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "In questo messaggio non sono presenti altre partite" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "Non è ancora stata caricata nessuna partita" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "Impossibile tornare più indietro" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "Indice superiore al numero di partite" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "Impossibile effettuare la ricerca nel file di partita" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "Partita non trovata nel file" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "Stringa FEN di posizione scorretta nel file" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "Partita senza mosse" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "Non è ancora stata caricata nessuna posizione" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "Impossibile effettuare la ricerca nel file di posizione" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "Posizione non trovata nel file" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "Il tratto è al Nero" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "Il tratto è al Bianco" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 #, fuzzy msgid "Waiting for access to save file" msgstr "In attesa del secondo motore di gioco" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 #, fuzzy msgid "Saving position" msgstr "File posizione non riconosciuto" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "Non hai ancora fatto alcuna mossa" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "Non è presente nessuna partita non terminata" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -587,210 +591,210 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "Impossibile aprire l'applicazione cmail" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "In attesa di risposta dall'avversario\n" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "Occorre ancora eseguire la mossa per la partita\n" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "Occorre ancora eseguire mosse per entrambe le partite\n" -#: backend.c:13388 +#: backend.c:13519 #, 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:13395 +#: backend.c:13526 #, 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:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "Non è presente nessuna partita non terminata\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "Pronto all'invio della posta\n" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Occorre ancora eseguire mosse per le partite %s\n" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "Modifica commento" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Modifica commento a %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "Il tratto non è al Bianco" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "Il tratto non è al Nero" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "Modalità Allenamento disattivata" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "Modalità Allenamento attivata" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "Già alla fine della partita" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "Avviso: Stai ancora giocando una partita" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "Avviso: Stai ancora osservando una partita" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "Avviso: Stai ancora esaminando una partita" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "La casa è già occupata" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "Non vi è alcuna offerta pendente a questa mossa" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "Il tuo avversario non ha ancora esaurito il proprio tempo" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "Devi eseguire la tua mossa prima di offrire la patta" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "Non stai esaminando alcuna partita" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "Non è possibile ripristinare mentre la pausa è attiva" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "E' il tuo turno" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "Attendi il tuo turno" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "Nessun suggerimento disponibile" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 #, fuzzy msgid "Game list not loaded or empty" msgstr "Non è ancora stata caricata nessuna partita" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "Errore in scrittura sul %s motore di gioco" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Errore: il %s motore di gioco (%s) è terminato in maniera inaspettata" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Errore in lettura dal %s motore di gioco (%s)" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "La mossa mostrata non è quella corrente" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "Impossibile leggere mossa" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "Tempo esaurito per entrambi" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "Tempo esaurito per il Bianco" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "Stringa FEN di posizione scorretta negli Appunti" @@ -905,7 +909,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -973,7 +977,7 @@ msgstr "Aggiornamenti continui (per Modalità di analisi)" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "Pensa sul mio tempo" @@ -1097,8 +1101,8 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" -msgstr "Fairy" +msgid "ASEAN" +msgstr "" #: dialogs.c:430 msgid "Great Shatranj (10x8)" @@ -1169,997 +1173,1002 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " -msgstr "" +msgid "fairy" +msgstr "Fairy" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, 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:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "Varianti di gioco" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "Num max di CPU:" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "Dimensione Hash [MB]:" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "Cartella EGTB:" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "Dimensione EGTB [MB]:" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "Profondità Libro:" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "Varianti Libro:" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "Libro proprio per motore 1" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "Impostazioni motori di gioco" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "Individua scacco matto" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "Verifica gli annunci del motore" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "Patta per materiale insufficiente" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Aggiudica patte triviali" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "Aggiudica patta dopo:" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "Limite per aggiudicare vinta/persa:" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "Output motore 1 sempre riferito al Bianco" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "Output motore 2 sempre riferito al Bianco" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Aggiudica al Bianco" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "Auto Kibitz" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "Commenti automatici" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "Osserva automaticamente" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "Porta in primo piano" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "Osserva in bckgnd" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "Doppia scacchiera" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "Scarica lista mosse" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "Non disturbare durante il gioco" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "Grafico delle richieste" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "Auto aggiorna" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +#, fuzzy +msgid "Quit after game" +msgstr "In attesa del primo motore di gioco" + +#: dialogs.c:583 msgid "Premove" msgstr "Premossa" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "1° mossa Bianco" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "1° mossa Nero" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "Allarme" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "Impostazioni ICS" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 #, fuzzy msgid "No games before year:" msgstr "Non è ancora stata caricata nessuna partita" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "Impostazioni apertura partita" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "Impostazioni salvataggio partita" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "Silenzioso" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "Beep" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "Ascolta" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "Impostazioni suoni" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "Pezzi neri" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "Case bianche" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "Case nere" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "Case evidenziate" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "Premosse evidenziate" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "Monocromatico" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "Impostazioni scacchiera" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 #, fuzzy msgid "Edit book" msgstr "Modifica" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "Informazioni partita" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "" -#: dialogs.c:1251 +#: dialogs.c:1253 #, fuzzy msgid "Engine has no options" msgstr "Libro proprio per motore 1" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "Disposizione iniziale:" -#: dialogs.c:1372 +#: dialogs.c:1374 #, fuzzy msgid "randomize" msgstr "Casuale" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "Nuova partita Shuffle..." -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 #, fuzzy msgid "Time-Odds factors:" msgstr "Riduci il tempo di un fattore:" -#: dialogs.c:1416 +#: dialogs.c:1418 #, fuzzy msgid "Engine #1" msgstr "Motore" -#: dialogs.c:1417 +#: dialogs.c:1419 #, 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:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "Errore in scrittura sul motore di gioco" -#: dialogs.c:1574 +#: dialogs.c:1576 #, fuzzy msgid "Cancel" msgstr "Cancella" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "Re" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "Generali..." -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "Cavallo" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "Alfiere" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "Torre" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "Arcivescovo" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "Cancelliere" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "Donna" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "Promuovi" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "Fabbrica" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "Muovi su" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "Muovi giu" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 #, fuzzy msgid "Game-list options" msgstr "Impostazioni apertura partita" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "Errore" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "Errore fatale" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "Chiusura in corso" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "Informazione" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "Nota" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "Bianco" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "Pedone" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "Elefante" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "Cannone" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "Degrada" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "Casa vuota" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "Svuota scacchiera" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "Nero" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "File" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "Modifica" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "Visualizza" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "Modalità" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "Azioni" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "Motore" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "Impostazioni" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "Aiuto" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "File" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "Filtro" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "Filtro" -#: dialogs.c:2447 +#: dialogs.c:2454 #, fuzzy msgid "Contents of" msgstr "Commenti" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" msgstr "" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..c765ba9 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,2886 @@ +# 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 , 2013. +msgid "" +msgstr "" +"Project-Id-Version: GNU xboard 4.7.2\n" +"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" +"PO-Revision-Date: 2013-11-26 12:11+0100\n" +"Last-Translator: Benno Schulenberg \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.0\n" + +#: args.h:821 +#, c-format +msgid "%s in settings file\n" +msgstr "%s in instellingenbestand\n" + +#: args.h:831 +#, c-format +msgid "Bad integer value %s" +msgstr "Ongeldig geheel getal: %s" + +#: args.h:924 args.h:1165 +#, c-format +msgid "Unrecognized argument %s" +msgstr "Niet-herkend argument: %s" + +#: args.h:955 +#, c-format +msgid "No value provided for argument %s" +msgstr "Geen waarde gegeven voor argument %s" + +#: args.h:1015 +#, c-format +msgid "Incomplete \\ escape in value for %s" +msgstr "Onvolledige \\-stuurcode in waarde voor %s" + +#: args.h:1120 +#, c-format +msgid "Failed to open indirection file %s" +msgstr "Kan indirectiebestand %s niet openen" + +#: args.h:1137 +#, 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:753 +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:756 +msgid "second" +msgstr "tweede" + +#: backend.c:837 +#, c-format +msgid "protocol version %d not supported" +msgstr "protocolversie %d wordt niet ondersteund" + +#: backend.c:943 +msgid "You did not specify the engine executable" +msgstr "U hebt geen automaatbestand opgegeven" + +#: backend.c:999 +#, c-format +msgid "bad timeControl option %s" +msgstr "ongeldige timeControl-optie: %s" + +#: backend.c:1014 +#, c-format +msgid "bad searchTime option %s" +msgstr "ongeldige searchTime-optie: %s" + +#: backend.c:1120 +#, c-format +msgid "Variant %s supported only in ICS mode" +msgstr "Variant %s wordt alleen ondersteund in ICS-modus" + +#: backend.c:1138 +#, c-format +msgid "Unknown variant name %s" +msgstr "Onbekende variantnaam: %s" + +#: backend.c:1386 +msgid "Starting chess program" +msgstr "Starten van schaakprogramma" + +#: backend.c:1409 +msgid "Bad game file" +msgstr "Incorrect partijbestand" + +#: backend.c:1416 +msgid "Bad position file" +msgstr "Incorrect positiebestand" + +#: backend.c:1430 +msgid "Pick new game" +msgstr "Kies een nieuwe partij" + +#: backend.c:1499 +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:1506 +#, 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:1513 +msgid "Can't have a match with no chess programs" +msgstr "Er is geen match mogelijk zonder schaakprogramma's." + +#: backend.c:1550 +#, c-format +msgid "Could not open comm port %s" +msgstr "Kan communicatiepoort %s niet openen" + +#: backend.c:1553 +#, c-format +msgid "Could not connect to host %s, port %s" +msgstr "Kan geen verbinding maken met host %s, poort %s" + +#: backend.c:1609 +#, c-format +msgid "Unknown initialMode %s" +msgstr "Onbekende initialMode %s" + +#: backend.c:1635 +msgid "AnalyzeFile mode requires a game file" +msgstr "AnalyzeFile-modus vereist een partijbestand" + +#: backend.c:1662 +msgid "Analysis mode requires a chess engine" +msgstr "Analysemodus vereist een schaakprogramma" + +#: backend.c:1666 +msgid "Analysis mode does not work with ICS mode" +msgstr "Analysemodus werkt niet met ICS-modus" + +#: backend.c:1677 +msgid "MachineWhite mode requires a chess engine" +msgstr "MachineWhite-modus vereist een schaakprogramma" + +#: backend.c:1682 +msgid "MachineWhite mode does not work with ICS mode" +msgstr "MachineWhite-modus werkt niet met ICS-modus" + +#: backend.c:1689 +msgid "MachineBlack mode requires a chess engine" +msgstr "MachineBlack-modus vereist een schaakprogramma" + +#: backend.c:1694 +msgid "MachineBlack mode does not work with ICS mode" +msgstr "MachineBlack-modus werkt niet met ICS-modus" + +#: backend.c:1701 +msgid "TwoMachines mode requires a chess engine" +msgstr "TwoMachines-modus vereist een schaakprogramma" + +#: backend.c:1706 +msgid "TwoMachines mode does not work with ICS mode" +msgstr "TwoMachines-modus werkt niet met ICS-modus" + +#: backend.c:1717 +msgid "Training mode requires a game file" +msgstr "Trainingsmodus vereist een partijbestand" + +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 +msgid "Error writing to ICS" +msgstr "Fout bij schrijven naar ICS" + +#: backend.c:1895 +msgid "Error reading from keyboard" +msgstr "Fout bij lezen van toetsenbord" + +#: backend.c:1898 +msgid "Got end of file from keyboard" +msgstr "Einde-van-bestand ontvangen van toetsenbord" + +#: backend.c:2203 +#, c-format +msgid "Unknown wild type %d" +msgstr "Onbekend wild type %d" + +#: backend.c:2274 usystem.c:329 +msgid "Error writing to display" +msgstr "Fout bij schrijven naar beeldscherm" + +#: backend.c:3030 +#, c-format +msgid "your opponent kibitzes: %s" +msgstr "uw tegenstander kwekt: %s" + +#: backend.c:3559 +msgid "Error gathering move list: two headers" +msgstr "Fout bij lezen van zettenlijst: twee koppen" + +#: backend.c:3606 +msgid "Error gathering move list: nested" +msgstr "Fout bij lezen van zettenlijst: genest" + +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 +msgid "vs." +msgstr "tegen" + +#: backend.c:3838 +msgid "Illegal move (rejected by ICS)" +msgstr "Ongeldige zet (geweigerd door ICS)" + +#: backend.c:4176 +msgid "Connection closed by ICS" +msgstr "Verbinding is gesloten door ICS" + +#: backend.c:4178 +msgid "Error reading from ICS" +msgstr "Fout bij lezen van ICS" + +#: backend.c:4255 +#, c-format +msgid "" +"Failed to parse board string:\n" +"\"%s\"" +msgstr "" +"Ontleden van bordtekenreeks is mislukt:\n" +"\"%s\"" + +#: backend.c:4264 backend.c:9885 +msgid "Game too long; increase MAX_MOVES and recompile" +msgstr "*** Partij is te lang; verhoog MAX_MOVES en hercompileer." + +#: backend.c:4383 +msgid "Error gathering move list: extra board" +msgstr "Fout bij lezen van zettenlijst: extra bord" + +#: backend.c:4815 backend.c:4837 +#, c-format +msgid "Couldn't parse move \"%s\" from ICS" +msgstr "Kan zet \"%s\" van ICS niet ontleden" + +#: backend.c:5074 +#, 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:5145 +msgid "You cannot do this while you are playing or observing" +msgstr "U kunt dit niet doen tijdens het spelen of bekijken." + +#: backend.c:6046 +msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" +msgstr "*** Hercompileer om BOARD_RANKS of BOARD_FILES te ondersteunen." + +#: backend.c:6510 +msgid "You are playing Black" +msgstr "U speelt met zwart" + +#: backend.c:6519 backend.c:6546 +msgid "You are playing White" +msgstr "U speelt met wit" + +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 +msgid "It is White's turn" +msgstr "Wit is aan zet" + +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 +msgid "It is Black's turn" +msgstr "Zwart is aan zet" + +#: backend.c:6571 +msgid "Displayed position is not current" +msgstr "Getoonde positie is niet de huidige" + +#: backend.c:6809 +msgid "Illegal move" +msgstr "Ongeldige zet" + +#: backend.c:6876 +msgid "End of game" +msgstr "Einde van partij" + +#: backend.c:6879 +msgid "Incorrect move" +msgstr "Onjuiste zet" + +#: backend.c:7257 backend.c:7392 +msgid "Pull pawn backwards to under-promote" +msgstr "Beweeg pion terug voor onderpromotie." + +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 +msgid "Swiss tourney finished" +msgstr "Zwitsers toernooi is beëindigd" + +#: backend.c:8199 +msgid "Invalid pairing from pairing engine" +msgstr "Ongeldig koppel van koppelautomaat" + +#: backend.c:8332 +#, c-format +msgid "Illegal move \"%s\" from %s machine" +msgstr "Ongeldige zet \"%s\" van automaat %s" + +#: backend.c:8564 +msgid "Bad FEN received from engine" +msgstr "Ongeldige FEN ontvangen van automaat" + +#: backend.c:8730 backend.c:13793 backend.c:13858 +#, c-format +msgid "%s does not support analysis" +msgstr "%s ondersteunt geen analyse" + +#: backend.c:8796 +#, c-format +msgid "Illegal move \"%s\" (rejected by %s chess program)" +msgstr "Ongeldige zet \"%s\" (geweigerd door schaakprogramma %s)" + +#: backend.c:8823 +#, 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:8844 +#, c-format +msgid "Hint: %s" +msgstr "Hint: %s" + +#: backend.c:8849 +#, c-format +msgid "" +"Illegal hint move \"%s\"\n" +"from %s chess program" +msgstr "" +"Ongeldige hintzet \"%s\"\n" +"van schaakprogramma %s." + +#: backend.c:9024 +msgid "Machine accepts your draw offer" +msgstr "Automaat accepteert uw remise-aanbod" + +# XXX punten +#: backend.c:9027 +msgid "" +"Machine offers a draw\n" +"Select Action / Draw to agree" +msgstr "" +"Automaat biedt remise aan.\n" +"Kies Actie > Remise om te accepteren." + +#: backend.c:9106 +msgid "failed writing PV" +msgstr "schrijven hoofdvariant is mislukt" + +#: backend.c:9404 +#, c-format +msgid "Ambiguous move in ICS output: \"%s\"" +msgstr "Niet-eenduidige zet in ICS-uitvoer: \"%s\"" + +#: backend.c:9414 +#, c-format +msgid "Illegal move in ICS output: \"%s\"" +msgstr "Ongeldige zet in ICS-uitvoer: \"%s\"" + +#: backend.c:9425 +msgid "Gap in move list" +msgstr "Gat in zettenlijst" + +#: backend.c:10046 dialogs.c:461 +#, c-format +msgid "Variant %s not supported by %s" +msgstr "Variant %s wordt niet ondersteund door %s" + +#: backend.c:10167 +#, c-format +msgid "Startup failure on '%s'" +msgstr "Opstartfout bij '%s'" + +#: backend.c:10198 +msgid "Waiting for first chess program" +msgstr "Wachten op eerste schaakprogramma" + +#: backend.c:10203 backend.c:14076 +msgid "Waiting for second chess program" +msgstr "Wachten op tweede schaakprogramma" + +#: backend.c:10252 +msgid "Could not write on tourney file" +msgstr "Kan niet naar toernooibestand schrijven." + +#: backend.c:10326 +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:10340 +msgid "No engine with the name you gave is installed" +msgstr "Er is geen automaat met de gegeven naam geïnstalleerd" + +#: backend.c:10342 +msgid "" +"First change an engine by editing the participants list\n" +"of the Tournament Options dialog" +msgstr "" + +#: backend.c:10343 +msgid "You can only change one engine at the time" +msgstr "U kunt slechts één automaat tegelijk wijzigen" + +#: backend.c:10358 backend.c:10505 +#, c-format +msgid "No engine %s is installed" +msgstr "Automaat '%s' is niet geïnstalleerd" + +#: backend.c:10378 +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:10388 +msgid "Not enough participants" +msgstr "Te weinig deelnemers" + +#: backend.c:10589 +msgid "Bad tournament file" +msgstr "Incorrect toernooibestand" + +#: backend.c:10601 +msgid "Waiting for other game(s)" +msgstr "Wachten op andere partij(en)" + +#: backend.c:10614 +msgid "No pairing engine specified" +msgstr "Geen koppelautomaat gegeven" + +#: backend.c:11092 +#, c-format +msgid "Match %s vs. %s: final score %d-%d-%d" +msgstr "Match van %s tegen %s: eindscore %d-%d-%d" + +#: backend.c:11554 backend.c:11585 +#, c-format +msgid "Illegal move: %d.%s%s" +msgstr "Ongeldige zet: %d.%s%s" + +#: backend.c:11574 +#, c-format +msgid "Ambiguous move: %d.%s%s" +msgstr "Niet-eenduidige zet: %d.%s%s" + +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 +#, c-format +msgid "Can't open \"%s\"" +msgstr "Kan \"%s\" niet openen" + +#: backend.c:11639 menus.c:116 +msgid "Cannot build game list" +msgstr "Kan partijenlijst niet samenstellen" + +#: backend.c:11724 +msgid "No more games in this message" +msgstr "Geen verdere partijen in dit bericht" + +#: backend.c:11764 +msgid "No game has been loaded yet" +msgstr "Er is nog geen partij geladen" + +#: backend.c:11768 backend.c:12617 ngamelist.c:129 +msgid "Can't back up any further" +msgstr "Kan niet nog verder teruggaan" + +#: backend.c:12189 +msgid "Game number out of range" +msgstr "Partijnummer valt buiten bereik" + +#: backend.c:12200 +msgid "Can't seek on game file" +msgstr "Kan niet springen in partijbestand" + +#: backend.c:12258 +msgid "Game not found in file" +msgstr "Partij niet gevonden in bestand" + +#: backend.c:12386 backend.c:12713 +msgid "Bad FEN position in file" +msgstr "Ongeldige FEN-positie in bestand" + +#: backend.c:12538 +msgid "No moves in game" +msgstr "Partij bevat geen zetten" + +#: backend.c:12613 +msgid "No position has been loaded yet" +msgstr "Er is nog geen positie geladen" + +#: backend.c:12674 backend.c:12685 +msgid "Can't seek on position file" +msgstr "Kan niet springen in positiebestand" + +#: backend.c:12692 backend.c:12704 +msgid "Position not found in file" +msgstr "Positie niet gevonden in bestand" + +#: backend.c:12744 +msgid "Black to play" +msgstr "Zwart is aan zet" + +#: backend.c:12747 +msgid "White to play" +msgstr "Wit is aan zet" + +#: backend.c:12834 backend.c:13195 +msgid "Waiting for access to save file" +msgstr "Wachten op toegang om bestand op te slaan" + +#: backend.c:12836 +msgid "Saving game" +msgstr "Opslaan van partij" + +#: backend.c:12837 +msgid "Bad Seek" +msgstr "Ongeldige bestandssprong" + +#: backend.c:13197 +msgid "Saving position" +msgstr "Opslaan van positie" + +# XXX Reload Same Game is not in POT +#: backend.c:13323 +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:13328 +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:13333 +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:13380 +msgid "You have not made a move yet" +msgstr "U hebt nog geen zet gedaan" + +#: backend.c:13401 +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:13406 +msgid "No unfinished games" +msgstr "Geen onafgemaakte partijen" + +#: backend.c:13412 +#, 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:13427 +msgid "Failed to invoke cmail" +msgstr "Aanroepen van 'cmail' is mislukt" + +#: backend.c:13489 +#, c-format +msgid "Waiting for reply from opponent\n" +msgstr "Wachten op antwoord van tegenstander\n" + +#: backend.c:13511 +#, 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:13515 +#, 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:13519 +#, 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:13526 +#, 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:13532 +#, c-format +msgid "No unfinished games\n" +msgstr "Geen onafgemaakte partijen.\n" + +#: backend.c:13534 +#, c-format +msgid "Ready to send mail\n" +msgstr "Klaar om mail te verzenden.\n" + +#: backend.c:13539 +#, 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:13743 +msgid "Edit comment" +msgstr "Opmerking bewerken" + +#: backend.c:13745 +#, c-format +msgid "Edit comment on %d.%s%s" +msgstr "Opmerking op %d.%s%s bewerken" + +#: backend.c:13800 +#, c-format +msgid "You are not observing a game" +msgstr "U bent geen partij aan het bekijken." + +#: backend.c:13908 +msgid "It is not White's turn" +msgstr "Wit is niet aan zet" + +#: backend.c:13989 +msgid "It is not Black's turn" +msgstr "Zwart is niet aan zet" + +#: backend.c:14097 +#, c-format +msgid "Starting %s chess program" +msgstr "Starten van schaakprogramma %s" + +#: backend.c:14125 backend.c:15240 +msgid "" +"Wait until your turn,\n" +"or select Move Now" +msgstr "" +"Wacht op uw beurt,\n" +"of kies «Nu zetten»." + +#: backend.c:14259 +msgid "Training mode off" +msgstr "Trainingsmodus is uitgeschakeld" + +#: backend.c:14267 +msgid "Training mode on" +msgstr "Trainingsmodus is ingeschakeld" + +#: backend.c:14270 +msgid "Already at end of game" +msgstr "Reeds aan einde van partij." + +#: backend.c:14350 +msgid "Warning: You are still playing a game" +msgstr "Waarschuwing: u bent nog een partij aan het spelen." + +#: backend.c:14353 +msgid "Warning: You are still observing a game" +msgstr "Waarschuwing: u bent nog een partij aan het bekijken." + +#: backend.c:14356 +msgid "Warning: You are still examining a game" +msgstr "Waarschuwing: u bent nog een partij aan het bestuderen." + +#: backend.c:14423 +msgid "Click clock to clear board" +msgstr "Klik op klok om bord leeg te maken." + +# XXX analysis? +#: backend.c:14433 +msgid "Close ICS engine analyze..." +msgstr "" + +#: backend.c:14722 +msgid "That square is occupied" +msgstr "Dat veld is bezet." + +#: backend.c:14746 backend.c:14772 +msgid "There is no pending offer on this move" +msgstr "Er is geen aanbod op deze zet." + +#: backend.c:14808 backend.c:14819 +msgid "Your opponent is not out of time" +msgstr "Uw tegenstander heeft nog tijd." + +#: backend.c:14885 +msgid "You must make your move before offering a draw" +msgstr "U dient uw zet te doen alvorens remise aan te bieden." + +#: backend.c:15222 +msgid "You are not examining a game" +msgstr "U bent geen partij aan het bestuderen." + +#: backend.c:15226 +msgid "You can't revert while pausing" +msgstr "U kunt niet terugdraaien tijdens pauze." + +#: backend.c:15280 backend.c:15287 +msgid "It is your turn" +msgstr "U bent aan zet" + +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 +msgid "Wait until your turn" +msgstr "Wacht op uw beurt" + +#: backend.c:15350 +msgid "No hint available" +msgstr "Geen hint beschikbaar" + +#: backend.c:15366 ngamelist.c:355 +msgid "Game list not loaded or empty" +msgstr "Partijenlijst is leeg of niet geladen" + +#: backend.c:15373 +msgid "Book file exists! Try again for overwrite." +msgstr "Bestand bestaat al. Probeer het opnieuw om deze te overschrijven." + +#: backend.c:15851 +#, c-format +msgid "Error writing to %s chess program" +msgstr "Fout bij schrijven naar schaakprogramma %s" + +#: backend.c:15854 backend.c:15885 +#, c-format +msgid "%s program exits in draw position (%s)" +msgstr "" + +#: backend.c:15880 +#, c-format +msgid "Error: %s chess program (%s) exited unexpectedly" +msgstr "" + +#: backend.c:15898 +#, c-format +msgid "Error reading from %s chess program (%s)" +msgstr "Fout bij lezen van schaakprogramma %s (%s)" + +#: backend.c:16301 +#, c-format +msgid "%s engine has too many options\n" +msgstr "automaat %s heeft te veel opties\n" + +#: backend.c:16457 +msgid "Displayed move is not current" +msgstr "Getoonde zet is niet de huidige" + +#: backend.c:16466 +msgid "Could not parse move" +msgstr "Kan zet niet ontleden" + +#: backend.c:16591 backend.c:16613 +msgid "Both flags fell" +msgstr "Beide vlaggen zijn gevallen" + +#: backend.c:16593 +msgid "White's flag fell" +msgstr "Wits vlag is gevallen" + +#: backend.c:16615 +msgid "Black's flag fell" +msgstr "Zwarts vlag is gevallen" + +#: backend.c:16746 +msgid "Clock adjustment not allowed in auto-flag mode" +msgstr "Klokbijstelling is niet toegestaan in auto-vlagmodus" + +#: backend.c:17585 +msgid "Bad FEN position in clipboard" +msgstr "Ongeldige FEN-positie op het klembord" + +#: book.c:577 book.c:830 +msgid "Polyglot book not valid" +msgstr "Polyglot-boek is ongeldig" + +#: book.c:701 +msgid "Book Fault" +msgstr "Fout in boek" + +#: book.c:833 +msgid "Hash keys are different" +msgstr "Hash-sleutels zijn verschillend" + +#: book.c:1000 +msgid "Could not create book" +msgstr "Kan geen boek aanmaken" + +#: dialogs.c:259 +msgid "Tournament file: " +msgstr "Toernooibestand: " + +#: dialogs.c:260 +msgid "Sync after round" +msgstr "" + +#: dialogs.c:261 +msgid " (for concurrent playing of a single" +msgstr "" + +#: dialogs.c:262 +msgid "Sync after cycle" +msgstr "" + +#: dialogs.c:263 +msgid " tourney with multiple XBoards)" +msgstr "" + +#: dialogs.c:264 +msgid "Tourney participants:" +msgstr "Toernooi-deelnemers:" + +#: dialogs.c:265 +msgid "Select Engine:" +msgstr "Kies automaat:" + +#: dialogs.c:273 +msgid "Tourney type (0 = round-robin, 1 = gauntlet):" +msgstr "Toernooitype (0 = op-de-rij-af, 1 = handschoen):" + +#: dialogs.c:274 +#, fuzzy +msgid "Number of tourney cycles (or Swiss rounds):" +msgstr "Aantal toernooirondes:" + +#: dialogs.c:275 +msgid "Default Number of Games in Match (or Pairing):" +msgstr "" + +#: dialogs.c:276 +msgid "Pause between Match Games (msec):" +msgstr "" + +#: dialogs.c:277 +msgid "Save Tourney Games on:" +msgstr "Toernooipartijen bewaren op:" + +#: dialogs.c:278 +msgid "Game File with Opening Lines:" +msgstr "" + +#: dialogs.c:279 +msgid "Game Number (-1 or -2 = Auto-Increment):" +msgstr "" + +#: dialogs.c:280 +msgid "File with Start Positions:" +msgstr "Bestand met startposities:" + +#: dialogs.c:281 +msgid "Position Number (-1 or -2 = Auto-Increment):" +msgstr "" + +#: dialogs.c:282 +msgid "Rewind Index after this many Games (0 = never):" +msgstr "" + +#: dialogs.c:283 +msgid "Disable own engine books by default" +msgstr "" + +#: dialogs.c:284 +msgid "Replace Engine" +msgstr "Automaat vervangen" + +#: dialogs.c:285 +msgid "Upgrade Engine" +msgstr "Automaat upgraden" + +#: dialogs.c:286 +msgid "Clone Tourney" +msgstr "Toernooi klonen" + +#: dialogs.c:316 +msgid "First you must specify an existing tourney file to clone" +msgstr "U dient eerst een bestaand toernooibestand op te geven" + +#: dialogs.c:332 dialogs.c:1322 +#, fuzzy +msgid "# no engines are installed" +msgstr "# er zijn geen automaten geïnstalleerd" + +#: dialogs.c:344 +msgid "Match Options" +msgstr "Match-opties" + +#: dialogs.c:363 +msgid "Absolute Analysis Scores" +msgstr "" + +#: dialogs.c:364 +#, fuzzy +msgid "Almost Always Queen (Detour Under-Promote)" +msgstr "Bijna altijd koningin (soms onderpromoveren)" + +#: dialogs.c:365 menus.c:714 +msgid "Animate Dragging" +msgstr "Slepen animeren" + +#: dialogs.c:366 menus.c:715 +msgid "Animate Moving" +msgstr "Zetten animeren" + +#: dialogs.c:367 menus.c:716 +msgid "Auto Flag" +msgstr "Vanzelf vlaggen" + +#: dialogs.c:368 menus.c:717 +msgid "Auto Flip View" +msgstr "Bord vanzelf draaien" + +#: dialogs.c:369 menus.c:718 +msgid "Blindfold" +msgstr "Geblinddoekt" + +#: dialogs.c:370 +msgid "Drop Menu" +msgstr "Plaatsingsmenu" + +#: dialogs.c:371 +msgid "Enable Variation Trees" +msgstr "Variatiebomen inschakelen" + +#: dialogs.c:372 +msgid "Hide Thinking from Human" +msgstr "Denken verbergen voor mens" + +#: dialogs.c:373 menus.c:723 +msgid "Highlight Last Move" +msgstr "Laatste zet markeren" + +#: dialogs.c:374 +msgid "Highlight with Arrow" +msgstr "Markeren met pijl" + +#: dialogs.c:375 menus.c:726 +msgid "One-Click Moving" +msgstr "Eenkliks zetten" + +#: dialogs.c:376 +msgid "Periodic Updates (in Analysis Mode)" +msgstr "Periodieke updates (in analysemodus)" + +#: dialogs.c:378 +msgid "Play Move(s) of Clicked PV (Analysis)" +msgstr "" + +#: dialogs.c:379 dialogs.c:515 menus.c:728 +msgid "Ponder Next Move" +msgstr "Volgende zet overdenken" + +#: dialogs.c:380 +msgid "Popup Exit Messages" +msgstr "Popup-afsluitberichten" + +#: dialogs.c:381 menus.c:730 +msgid "Popup Move Errors" +msgstr "Popup-zetfouten" + +#: dialogs.c:382 +msgid "Scores in Move List" +msgstr "Scores in zettenlijst" + +#: dialogs.c:383 +msgid "Show Coordinates" +msgstr "Coördinaten tonen" + +#: dialogs.c:384 +msgid "Show Target Squares" +msgstr "Doelvelden tonen" + +#: dialogs.c:385 +msgid "Sticky Windows" +msgstr "" + +#: dialogs.c:386 menus.c:733 +msgid "Test Legality" +msgstr "Geldigheid testen" + +#: dialogs.c:387 +msgid "Top-Level Dialogs" +msgstr "Topniveau-dialogen" + +#: dialogs.c:388 +msgid "Flash Moves (0 = no flashing):" +msgstr "Zetten knipperen (0 = niet knipperen):" + +#: dialogs.c:389 +msgid "Flash Rate (high = fast):" +msgstr "Knippersnelheid (hoog = snel):" + +#: dialogs.c:390 +#, fuzzy +msgid "Animation Speed (high = slow):" +msgstr "Animatiesnelheid (hoog = langzaam):" + +#: dialogs.c:391 +msgid "Zoom factor in Evaluation Graph:" +msgstr "Zoomfactor in evaluatiegrafiek:" + +#: dialogs.c:400 +msgid "General Options" +msgstr "Algemene opties" + +#: dialogs.c:410 +msgid "normal" +msgstr "normaal" + +#: dialogs.c:411 +msgid "makruk" +msgstr "Makruk" + +#: dialogs.c:412 +msgid "FRC" +msgstr "FRC" + +#: dialogs.c:413 +msgid "shatranj" +msgstr "Shatranj" + +#: dialogs.c:414 +msgid "wild castle" +msgstr "wilde rokade" + +#: dialogs.c:415 +msgid "knightmate" +msgstr "paardmat" + +#: dialogs.c:416 +msgid "no castle" +msgstr "geen rokade" + +#: dialogs.c:417 +msgid "cylinder *" +msgstr "cilinder *" + +#: dialogs.c:418 +msgid "3-checks" +msgstr "drie keer schaak" + +#: dialogs.c:419 +msgid "berolina *" +msgstr "berolina *" + +#: dialogs.c:420 +msgid "atomic" +msgstr "atomisch" + +#: dialogs.c:421 +msgid "two kings" +msgstr "twee koningen" + +#: dialogs.c:422 +msgid "Board size ( -1 = default for selected variant):" +msgstr "Bordafmetingen (-1 = standaard voor de variant):" + +#: dialogs.c:423 +msgid "Number of Board Ranks:" +msgstr "Aantal bordrijen:" + +#: dialogs.c:424 +msgid "Number of Board Files:" +msgstr "Aantal bordlijnen:" + +#: dialogs.c:425 +msgid "Holdings Size:" +msgstr "Stalgrootte:" + +#: dialogs.c:429 +msgid "ASEAN" +msgstr "" + +#: dialogs.c:430 +msgid "Great Shatranj (10x8)" +msgstr "Grote Shatranj (10x8)" + +#: dialogs.c:431 +msgid "Seirawan" +msgstr "Seirawan" + +#: dialogs.c:432 +msgid "falcon (10x8)" +msgstr "Falcon (10x8)" + +#: dialogs.c:433 +msgid "Superchess" +msgstr "Superschaak" + +#: dialogs.c:434 +msgid "Capablanca (10x8)" +msgstr "Capablanca (10x8)" + +#: dialogs.c:435 +msgid "crazyhouse" +msgstr "crazyhouse" + +#: dialogs.c:436 +msgid "Gothic (10x8)" +msgstr "Gothic (10x8)" + +#: dialogs.c:437 +msgid "bughouse" +msgstr "bughouse" + +#: dialogs.c:438 +msgid "janus (10x8)" +msgstr "Janus (10x8)" + +#: dialogs.c:439 +msgid "suicide" +msgstr "suicide" + +#: dialogs.c:440 +msgid "CRC (10x8)" +msgstr "CRC (10x8)" + +#: dialogs.c:441 +msgid "give-away" +msgstr "weggever" + +#: dialogs.c:442 +msgid "grand (10x10)" +msgstr "Grand (10x10)" + +#: dialogs.c:443 +msgid "losers" +msgstr "verliezers" + +#: dialogs.c:444 +msgid "shogi (9x9)" +msgstr "Shogi (9x9)" + +#: dialogs.c:445 +msgid "Spartan" +msgstr "Spartaans" + +#: dialogs.c:446 +msgid "xiangqi (9x10)" +msgstr "Xiangqi (9x10)" + +#: dialogs.c:447 +msgid "fairy" +msgstr "Fairy" + +#: dialogs.c:449 +msgid "courier (12x8)" +msgstr "Courier (12x8)" + +#: dialogs.c:466 +#, c-format +msgid "Warning: second engine (%s) does not support this!" +msgstr "Waarschuwing: tweede automaat (%s) ondersteunt dit niet." + +#: dialogs.c:489 +#, c-format +msgid "Only bughouse is not available in viewer mode" +msgstr "" + +#: dialogs.c:490 +#, c-format +msgid "" +"All variants not supported by 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:491 +msgid "New Variant" +msgstr "Varianten" + +#: dialogs.c:516 +msgid "Maximum Number of CPUs per Engine:" +msgstr "Maximum aantal processoren per automaat:" + +#: dialogs.c:517 +msgid "Polygot Directory:" +msgstr "Polygot-map:" + +#: dialogs.c:518 +msgid "Hash-Table Size (MB):" +msgstr "Grootte van hash-tabel (MB):" + +#: dialogs.c:519 +msgid "Nalimov EGTB Path:" +msgstr "Nalimov-EGTB-pad:" + +#: dialogs.c:520 +msgid "EGTB Cache Size (MB):" +msgstr "Grootte van EGTB-cache (MB):" + +#: dialogs.c:521 +msgid "Use GUI Book" +msgstr "" + +#: dialogs.c:522 +msgid "Opening-Book Filename:" +msgstr "Bestandsnaam van openingenboek:" + +#: dialogs.c:523 +msgid "Book Depth (moves):" +msgstr "Boekdiepte (zetten):" + +#: dialogs.c:524 +msgid "Book Variety (0) vs. Strength (100):" +msgstr "" + +#: dialogs.c:525 +msgid "Engine #1 Has Own Book" +msgstr "Automaat #1 heeft eigen boek" + +# XXX why the spaces? +#: dialogs.c:526 +msgid "Engine #2 Has Own Book " +msgstr "Automaat #2 heeft eigen boek" + +#: dialogs.c:535 +msgid "Common Engine Settings" +msgstr "Algemene automaatinstellingen" + +#: dialogs.c:541 +msgid "Detect all Mates" +msgstr "Alle matten detecteren" + +#: dialogs.c:542 +msgid "Verify Engine Result Claims" +msgstr "" + +#: dialogs.c:543 +msgid "Draw if Insufficient Mating Material" +msgstr "Remise bij onvoldoende matmateriaal" + +#: dialogs.c:544 +msgid "Adjudicate Trivial Draws (3-Move Delay)" +msgstr "Eenvoudige remises beslissen (3 zetten uitstel)" + +#: dialogs.c:545 +msgid "N-Move Rule:" +msgstr "" + +#: dialogs.c:546 +msgid "N-fold Repeats:" +msgstr "" + +#: dialogs.c:547 +msgid "Draw after N Moves Total:" +msgstr "" + +#: dialogs.c:548 +msgid "Win / Loss Threshold:" +msgstr "Winst/verlies-grenswaarde:" + +#: dialogs.c:549 +msgid "Negate Score of Engine #1" +msgstr "" + +#: dialogs.c:550 +msgid "Negate Score of Engine #2" +msgstr "" + +#: dialogs.c:557 +msgid "Adjudicate non-ICS Games" +msgstr "" + +#: dialogs.c:570 +msgid "Auto-Kibitz" +msgstr "" + +#: dialogs.c:571 +msgid "Auto-Comment" +msgstr "" + +#: dialogs.c:572 +msgid "Auto-Observe" +msgstr "" + +#: dialogs.c:573 +msgid "Auto-Raise Board" +msgstr "" + +#: dialogs.c:574 +msgid "Auto-Create Logon Script" +msgstr "" + +#: dialogs.c:575 +msgid "Background Observe while Playing" +msgstr "" + +#: dialogs.c:576 +msgid "Dual Board for Background-Observed Game" +msgstr "" + +#: dialogs.c:577 +msgid "Get Move List" +msgstr "Zettenlijst ophalen" + +#: dialogs.c:578 +msgid "Quiet Play" +msgstr "" + +#: dialogs.c:579 +msgid "Seek Graph" +msgstr "" + +#: dialogs.c:580 +msgid "Auto-Refresh Seek Graph" +msgstr "" + +#: dialogs.c:581 +msgid "Auto-InputBox PopUp" +msgstr "" + +#: dialogs.c:582 +#, fuzzy +msgid "Quit after game" +msgstr "Wachten op andere partij(en)" + +#: dialogs.c:583 +msgid "Premove" +msgstr "" + +#: dialogs.c:584 +msgid "Premove for White" +msgstr "" + +#: dialogs.c:585 +msgid "First White Move:" +msgstr "Eerste zet van wit:" + +#: dialogs.c:586 +msgid "Premove for Black" +msgstr "" + +#: dialogs.c:587 +msgid "First Black Move:" +msgstr "Eerste zet van zwart:" + +#: dialogs.c:589 +msgid "Alarm" +msgstr "" + +#: dialogs.c:590 +msgid "Alarm Time (msec):" +msgstr "" + +#: dialogs.c:592 +msgid "Colorize Messages" +msgstr "Berichten kleuren" + +#: dialogs.c:593 +msgid "Shout Text Colors:" +msgstr "" + +#: dialogs.c:594 +msgid "S-Shout Text Colors:" +msgstr "" + +#: dialogs.c:595 +msgid "Channel #1 Text Colors:" +msgstr "Kanaal-1-tekstkleuren:" + +#: dialogs.c:596 +msgid "Other Channel Text Colors:" +msgstr "Anderekanaal-tekstkleuren:" + +#: dialogs.c:597 +msgid "Kibitz Text Colors:" +msgstr "Kwek-tekstkleuren:" + +#: dialogs.c:598 +msgid "Tell Text Colors:" +msgstr "" + +#: dialogs.c:599 +msgid "Challenge Text Colors:" +msgstr "" + +#: dialogs.c:600 +msgid "Request Text Colors:" +msgstr "Verzoek-tekstkleuren:" + +#: dialogs.c:601 +msgid "Seek Text Colors:" +msgstr "" + +#: dialogs.c:608 +msgid "ICS Options" +msgstr "ICS-opties" + +#: dialogs.c:613 +msgid "Exact position match" +msgstr "Exacte positie-overeenkomst" + +#: dialogs.c:613 +msgid "Shown position is subset" +msgstr "Getoonde positie is een subset" + +#: dialogs.c:613 +msgid "Same material with exactly same Pawn chain" +msgstr "Zelfde materiaal met exact dezelfde pionketen" + +#: dialogs.c:614 +msgid "Same material" +msgstr "Zelfde materiaal" + +#: dialogs.c:614 +msgid "Material range (top board half optional)" +msgstr "Materiaalbereik (bovenste bordhelft is optioneel)" + +#: dialogs.c:614 +msgid "Material difference (optional stuff balanced)" +msgstr "Materiaalverschil (optioneel spul is in evenwicht)" + +#: dialogs.c:626 +msgid "Auto-Display Tags" +msgstr "Labels vanzelf tonen" + +#: dialogs.c:627 +msgid "Auto-Display Comment" +msgstr "Opmerkingen vanzelf tonen" + +#: dialogs.c:628 +msgid "" +"Auto-Play speed of loaded games\n" +"(0 = instant, -1 = off):" +msgstr "" +"Speelsnelheid van geladen partijen\n" +"(0 = instantaan, -1 = uit):" + +#: dialogs.c:629 +msgid "Seconds per Move:" +msgstr "Seconden per zet:" + +#: dialogs.c:630 +msgid "" +"\n" +"options to use in game-viewer mode:" +msgstr "" + +#: dialogs.c:632 +msgid "" +"\n" +"Thresholds for position filtering in game list:" +msgstr "" + +#: dialogs.c:633 +msgid "Elo of strongest player at least:" +msgstr "Elo van sterkste speler minstens:" + +#: dialogs.c:634 +msgid "Elo of weakest player at least:" +msgstr "Elo van zwakste speler minstens:" + +#: dialogs.c:635 +msgid "No games before year:" +msgstr "Geen partijen vóór het jaar:" + +#: dialogs.c:636 +msgid "Minimum nr consecutive positions:" +msgstr "Minimum aantal opeenvolgende posities:" + +#: dialogs.c:637 +msgid "Search mode:" +msgstr "Zoekmodus:" + +#: dialogs.c:638 +msgid "Also match reversed colors" +msgstr "Ook matchen met verwisselde kleuren" + +#: dialogs.c:639 +msgid "Also match left-right flipped position" +msgstr "Ook matchen met links-rechts gespiegelde positie" + +#: dialogs.c:647 +msgid "Load Game Options" +msgstr "Partij-opties laden" + +#: dialogs.c:659 +msgid "Auto-Save Games" +msgstr "Partijen auto-opslaan" + +#: dialogs.c:660 +msgid "Own Games Only" +msgstr "Alleen eigen partijen" + +#: dialogs.c:661 +msgid "Save Games on File:" +msgstr "Partijen opslaan in:" + +#: dialogs.c:662 +msgid "Save Final Positions on File:" +msgstr "Eindposities opslaan in:" + +#: dialogs.c:663 +msgid "PGN Event Header:" +msgstr "" + +#: dialogs.c:664 +msgid "Old Save Style (as opposed to PGN)" +msgstr "" + +#: dialogs.c:665 +msgid "Include Number Tag in tourney PGN" +msgstr "Nummerlabel in toernooi-PGN opnemen" + +#: dialogs.c:666 +msgid "Save Score/Depth Info in PGN" +msgstr "" + +#: dialogs.c:667 +msgid "Save Out-of-Book Info in PGN " +msgstr "" + +#: dialogs.c:674 +msgid "Save Game Options" +msgstr "Partij-opties opslaan" + +#: dialogs.c:683 +msgid "No Sound" +msgstr "Geen geluid" + +#: dialogs.c:684 +msgid "Default Beep" +msgstr "Standaardpiep" + +#: dialogs.c:685 +msgid "Above WAV File" +msgstr "" + +#: dialogs.c:686 +msgid "Car Horn" +msgstr "Claxon" + +#: dialogs.c:687 +msgid "Cymbal" +msgstr "Cymbaal" + +#: dialogs.c:688 +msgid "Ding" +msgstr "Ding" + +#: dialogs.c:689 +msgid "Gong" +msgstr "Gong" + +#: dialogs.c:690 +msgid "Laser" +msgstr "Laser" + +#: dialogs.c:691 +msgid "Penalty" +msgstr "Penalty" + +#: dialogs.c:692 +msgid "Phone" +msgstr "Telefoon" + +#: dialogs.c:693 +msgid "Pop" +msgstr "Plop" + +#: dialogs.c:694 +msgid "Slap" +msgstr "Klap" + +#: dialogs.c:695 +msgid "Wood Thunk" +msgstr "Houtplok" + +#: dialogs.c:697 +msgid "User File" +msgstr "Gebruikersbestand" + +#: dialogs.c:719 +msgid "User WAV File:" +msgstr "Gebruikers-WAV-bestand:" + +#: dialogs.c:720 +msgid "Sound Program:" +msgstr "Geluidsprogramma:" + +#: dialogs.c:721 +msgid "Try-Out Sound:" +msgstr "Probeer geluid:" + +#: dialogs.c:722 +#, fuzzy +msgid "Play" +msgstr "Afspelen" + +#: dialogs.c:723 +msgid "Move:" +msgstr "Zet:" + +#: dialogs.c:724 +msgid "Win:" +msgstr "Gewonnen:" + +#: dialogs.c:725 +msgid "Lose:" +msgstr "Verloren:" + +#: dialogs.c:726 +msgid "Draw:" +msgstr "Remise:" + +#: dialogs.c:727 +msgid "Unfinished:" +msgstr "Onafgemaakt:" + +#: dialogs.c:728 +msgid "Alarm:" +msgstr "" + +#: dialogs.c:729 +msgid "Challenge:" +msgstr "" + +#: dialogs.c:731 +msgid "Sounds Directory:" +msgstr "Geluidenmap:" + +#: dialogs.c:732 +msgid "Shout:" +msgstr "" + +#: dialogs.c:733 +msgid "S-Shout:" +msgstr "" + +#: dialogs.c:734 +msgid "Channel:" +msgstr "Kanaal:" + +#: dialogs.c:735 +msgid "Channel 1:" +msgstr "Kanaal 1:" + +#: dialogs.c:736 +msgid "Tell:" +msgstr "" + +#: dialogs.c:737 +msgid "Kibitz:" +msgstr "" + +#: dialogs.c:738 +msgid "Request:" +msgstr "Verzoek:" + +#: dialogs.c:739 +msgid "Seek:" +msgstr "" + +#: dialogs.c:755 +msgid "Sound Options" +msgstr "Geluidsopties" + +#: dialogs.c:776 +msgid "White Piece Color:" +msgstr "Kleur van wit stuk:" + +#. TRANSLATORS: R = single letter for the color red +#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 +msgid "R" +msgstr "R" + +#. TRANSLATORS: G = single letter for the color green +#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 +msgid "G" +msgstr "G" + +#. TRANSLATORS: B = single letter for the color blue +#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 +msgid "B" +msgstr "B" + +#. TRANSLATORS: D = single letter to make a color darker +#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 +msgid "D" +msgstr "D" + +#: dialogs.c:786 +msgid "Black Piece Color:" +msgstr "Kleur van zwart stuk:" + +#: dialogs.c:792 +msgid "Light Square Color:" +msgstr "Kleur van licht veld:" + +#: dialogs.c:798 +msgid "Dark Square Color:" +msgstr "Kleur van donker veld:" + +#: dialogs.c:804 +msgid "Highlight Color:" +msgstr "Markeringskleur:" + +#: dialogs.c:810 +msgid "Premove Highlight Color:" +msgstr "" + +#: dialogs.c:816 +msgid "Flip Pieces Shogi Style (Colored buttons restore default)" +msgstr "" + +#: dialogs.c:818 +msgid "Mono Mode" +msgstr "" + +#: dialogs.c:819 +msgid "Line Gap ( -1 = default for board size):" +msgstr "" + +#: dialogs.c:820 +msgid "Use Board Textures" +msgstr "Bordtexturen gebruiken" + +#: dialogs.c:821 +msgid "Light-Squares Texture File:" +msgstr "Textuurbestand voor lichte velden:" + +#: dialogs.c:822 +msgid "Dark-Squares Texture File:" +msgstr "Textuurbestand voor donkere velden:" + +#: dialogs.c:823 +msgid "Use external piece bitmaps with their own colors" +msgstr "" + +#: dialogs.c:824 +msgid "Directory with Pieces Images:" +msgstr "" + +#: dialogs.c:874 +msgid "Board Options" +msgstr "Bordopties" + +#: dialogs.c:927 menus.c:634 +msgid "ICS text menu" +msgstr "ICS-tekstmenu" + +#: dialogs.c:949 +msgid "clear" +msgstr "wissen" + +#: dialogs.c:950 dialogs.c:1038 +msgid "save changes" +msgstr "wijzigingen opslaan" + +#: dialogs.c:1053 +msgid "Edit book" +msgstr "Boek bewerken" + +#: dialogs.c:1053 menus.c:636 +msgid "Tags" +msgstr "Labels" + +#: dialogs.c:1195 +msgid "ICS input box" +msgstr "ICS-invoervak" + +#: dialogs.c:1227 +msgid "Type a move" +msgstr "Typ een zet" + +#: dialogs.c:1253 +msgid "Engine has no options" +msgstr "Automaat heeft geen opties" + +#: dialogs.c:1255 +msgid "Engine Settings" +msgstr "Automaatinstellingen" + +#: dialogs.c:1280 +msgid "Select engine from list:" +msgstr "Selecteer een automaat uit de lijst:" + +#: dialogs.c:1283 +msgid "or specify one below:" +msgstr "of geef er hieronder een op:" + +#: dialogs.c:1284 +msgid "Nickname (optional):" +msgstr "Bijnaam (optioneel):" + +#: dialogs.c:1285 +msgid "Use nickname in PGN player tags of engine-engine games" +msgstr "" + +#: dialogs.c:1286 +msgid "Engine Directory:" +msgstr "Automatenmap:" + +#: dialogs.c:1287 +msgid "Engine Command:" +msgstr "" + +#: dialogs.c:1288 +msgid "(Directory will be derived from engine path when empty)" +msgstr "" + +#: dialogs.c:1289 +msgid "UCI" +msgstr "UCI" + +#: dialogs.c:1290 +msgid "WB protocol v1 (do not wait for engine features)" +msgstr "" + +#: dialogs.c:1291 +msgid "Must not use GUI book" +msgstr "" + +#: dialogs.c:1292 +msgid "Add this engine to the list" +msgstr "Deze automaat aan de lijst toevoegen" + +#: dialogs.c:1293 +msgid "Force current variant with this engine" +msgstr "" + +#: dialogs.c:1343 +msgid "Load first engine" +msgstr "Eerste automaat laden" + +#: dialogs.c:1349 +msgid "Load second engine" +msgstr "Tweede automaat laden" + +#: dialogs.c:1372 +msgid "shuffle" +msgstr "Husselen" + +#: dialogs.c:1373 +msgid "Start-position number:" +msgstr "Startpositienummer:" + +#: dialogs.c:1374 +msgid "randomize" +msgstr "Willekeurig" + +#: dialogs.c:1375 +msgid "pick fixed" +msgstr "Vaste kiezen" + +#: dialogs.c:1392 +msgid "New Shuffle Game" +msgstr "Husselpartij" + +#: dialogs.c:1411 +msgid "classical" +msgstr "klassiek" + +#: dialogs.c:1412 +#, fuzzy +msgid "incremental" +msgstr "incrementeel" + +#: dialogs.c:1413 +msgid "fixed max" +msgstr "" + +#: dialogs.c:1414 +msgid "Moves per session:" +msgstr "Zetten per sessie:" + +#: dialogs.c:1415 +msgid "Initial time (min):" +msgstr "" + +#: dialogs.c:1416 +msgid "Increment or max (sec/move):" +msgstr "" + +#: dialogs.c:1417 +msgid "Time-Odds factors:" +msgstr "" + +#: dialogs.c:1418 +msgid "Engine #1" +msgstr "" + +#: dialogs.c:1419 +msgid "Engine #2 / Human" +msgstr "" + +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 +#: gtk/xoptions.c:191 +msgid "Unused" +msgstr "Ongebruikt" + +#: dialogs.c:1480 +msgid "Time Control" +msgstr "Tijdsbeperking" + +#: dialogs.c:1509 +msgid "Error writing to chess program" +msgstr "Fout bij schrijven naar schaakprogramma" + +#: dialogs.c:1576 +msgid "Cancel" +msgstr "Annuleren" + +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 +msgid "King" +msgstr "Koning" + +#: dialogs.c:1584 +msgid "Captain" +msgstr "Kapitein" + +#: dialogs.c:1585 +msgid "Lieutenant" +msgstr "Luitenant" + +#: dialogs.c:1586 +msgid "General" +msgstr "Generaal" + +#: dialogs.c:1587 +msgid "Warlord" +msgstr "Krijgsheer" + +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 +msgid "Knight" +msgstr "Paard" + +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 +msgid "Bishop" +msgstr "Loper" + +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 +msgid "Rook" +msgstr "Toren" + +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 +msgid "Archbishop" +msgstr "Aartsbisschop" + +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 +msgid "Chancellor" +msgstr "Kanselier" + +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 +msgid "Queen" +msgstr "Koningin" + +#: dialogs.c:1602 +msgid "Defer" +msgstr "" + +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 +msgid "Promote" +msgstr "Promoveren" + +#: dialogs.c:1618 +msgid "Chat partner:" +msgstr "Chatpartner:" + +#: dialogs.c:1703 +msgid "Chat box" +msgstr "Chatbox" + +#: dialogs.c:1744 +msgid "factory" +msgstr "origineel" + +#: dialogs.c:1745 +msgid "up" +msgstr "omhoog" + +#: dialogs.c:1746 +msgid "down" +msgstr "omlaag" + +#: dialogs.c:1764 +msgid "No tag selected" +msgstr "Geen label geselecteerd" + +#: dialogs.c:1795 +msgid "Game-list options" +msgstr "Partijenlijst-opties" + +#: dialogs.c:1871 dialogs.c:1885 +msgid "Error" +msgstr "Fout" + +#: dialogs.c:1908 +msgid "Fatal Error" +msgstr "Fatale fout" + +#: dialogs.c:1908 +msgid "Exiting" +msgstr "Afsluiten" + +#: dialogs.c:1919 +msgid "Information" +msgstr "Informatie" + +#: dialogs.c:1926 +msgid "Note" +msgstr "Notitie" + +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 +msgid "White" +msgstr "Wit" + +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 +msgid "Pawn" +msgstr "Pion" + +#: dialogs.c:1973 dialogs.c:1977 +msgid "Elephant" +msgstr "Olifant" + +#: dialogs.c:1973 dialogs.c:1977 +msgid "Cannon" +msgstr "Kanon" + +#: dialogs.c:1974 dialogs.c:1978 +msgid "Demote" +msgstr "Degraderen" + +#: dialogs.c:1975 dialogs.c:1979 +msgid "Empty square" +msgstr "Leeg veld" + +#: dialogs.c:1975 dialogs.c:1979 +msgid "Clear board" +msgstr "Bord leegmaken" + +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 +msgid "Black" +msgstr "Zwart" + +#: dialogs.c:2075 menus.c:787 +msgid "File" +msgstr "Bestand" + +#: dialogs.c:2076 menus.c:788 +msgid "Edit" +msgstr "Bewerken" + +#: dialogs.c:2077 menus.c:789 +msgid "View" +msgstr "Beeld" + +#: dialogs.c:2078 menus.c:790 +msgid "Mode" +msgstr "Modus" + +#: dialogs.c:2079 menus.c:791 +msgid "Action" +msgstr "Actie" + +#: dialogs.c:2080 menus.c:792 +msgid "Engine" +msgstr "Automaat" + +#: dialogs.c:2081 menus.c:793 +msgid "Options" +msgstr "Opties" + +#: dialogs.c:2082 menus.c:794 +msgid "Help" +msgstr "Hulp" + +#: dialogs.c:2092 +msgid "<<" +msgstr "<<" + +#: dialogs.c:2093 +msgid "<" +msgstr "<" + +#: dialogs.c:2095 +msgid ">" +msgstr ">" + +#: dialogs.c:2096 +msgid ">>" +msgstr ">>" + +#: dialogs.c:2371 +msgid "Directories:" +msgstr "Mappen:" + +#: dialogs.c:2372 +msgid "Files:" +msgstr "Bestanden:" + +#: dialogs.c:2373 +msgid "by name" +msgstr "op naam" + +#: dialogs.c:2374 +msgid "by type" +msgstr "op type" + +#: dialogs.c:2377 +msgid "Filename:" +msgstr "Bestandsnaam:" + +#: dialogs.c:2378 +msgid "New directory" +msgstr "Nieuwe map" + +#: dialogs.c:2379 +msgid "File type:" +msgstr "Bestandstype:" + +#: dialogs.c:2454 +msgid "Contents of" +msgstr "Inhoud van" + +#: dialogs.c:2480 +msgid " next page" +msgstr " volgende pagina" + +#: dialogs.c:2502 +msgid "FIRST TYPE DIRECTORY NAME HERE" +msgstr "Typ hier eerst een mapnaam" + +#: dialogs.c:2503 +msgid "TRY ANOTHER NAME" +msgstr "Kies een andere naam" + +#: draw.c:293 +msgid "" +"No default pieces installed\n" +"Select your own -pieceImageDirectory" +msgstr "" +"Geen standaardstukken geïnstalleerd.\n" +"Kies uw eigen '-pieceImageDirectory'." + +#: engineoutput.c:107 menus.c:630 +#, c-format +msgid "Engine Output" +msgstr "Automaatuitvoer" + +#: engineoutput.c:117 +#, fuzzy, c-format +msgid "%s (%d reversible ply)" +msgid_plural "%s (%d reversible plies)" +msgstr[0] "omkeerbaar" +msgstr[1] "omkeerbaar" + +#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88 +msgid "NPS" +msgstr "NPS" + +#: gamelist.c:375 +#, c-format +msgid "Reading game file (%d)" +msgstr "Lezen van partijbestand (%d)" + +#: gtk/xboard.c:787 xaw/xboard.c:1161 +#, c-format +msgid "%s: can't cd to CHESSDIR: " +msgstr "" + +#: gtk/xboard.c:796 xaw/xboard.c:1170 +#, c-format +msgid "Failed to open file '%s'\n" +msgstr "Kan bestand '%s' niet openen\n" + +#: gtk/xboard.c:811 xaw/xboard.c:1179 +msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" +msgstr "" + +#: gtk/xboard.c:830 xaw/xboard.c:1211 +#, c-format +msgid "%s: bad boardSize syntax %s\n" +msgstr "" + +#: gtk/xboard.c:870 xaw/xboard.c:1248 +#, c-format +msgid "%s: unrecognized boardSize name %s\n" +msgstr "" + +#: gtk/xboard.c:911 xaw/xboard.c:1285 +#, c-format +msgid "%s: too few colors available; trying monochrome mode\n" +msgstr "" + +#: gtk/xboard.c:1201 xaw/xboard.c:1567 +#, c-format +msgid "Unable to create font set for %s.\n" +msgstr "" + +#: gtk/xboard.c:1226 xaw/xboard.c:1590 +#, 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:1665 xaw/xboard.c:2080 +msgid "Can't open temp file" +msgstr "Kan tijdelijk bestand niet openen" + +#: gtk/xboard.c:2128 +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 +#, c-format +msgid "" +"%s%s\n" +"\n" +"Copyright 1991 Digital Equipment Corporation\n" +"Enhancements Copyright 1992-2013 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: \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 ;\n" +"meld vertaalfouten aan .\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 +msgid "New Shuffle Game ..." +msgstr "Nieuwe husselpartij..." + +# XXX "NEW" is wrong +#: menus.c:584 +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 "Automaten-match" + +#: 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 "" + +#: menus.c:668 +msgid "Draw" +msgstr "Remise" + +#: menus.c:669 +msgid "Adjourn" +msgstr "" + +#: menus.c:670 +msgid "Abort" +msgstr "Afbreken" + +#: menus.c:671 +msgid "Resign" +msgstr "Opgeven" + +#: menus.c:673 +msgid "Stop Observing" +msgstr "Stoppen met bekijken" + +#: 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 +msgid "Load New 1st Engine ..." +msgstr "Nieuwe 1ste automaat laden..." + +#: menus.c:685 +msgid "Load New 2nd Engine ..." +msgstr "Nieuwe 2de automaat laden..." + +#: menus.c:687 +msgid "Engine #1 Settings ..." +msgstr "Instellingen van automaat 1..." + +#: menus.c:688 +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 +msgid "General ..." +msgstr "Algemeen..." + +#: menus.c:702 +msgid "Time Control ..." +msgstr "Tijdsbeperking..." + +#: menus.c:703 +msgid "Common Engine ..." +msgstr "Gemeenschappelijke automaat..." + +#: menus.c:704 +msgid "Adjudications ..." +msgstr "Beslissingen ..." + +#: menus.c:705 +msgid "ICS ..." +msgstr "ICS ..." + +# XXX wedstrijd OF overeenkomen?? +#: menus.c:706 +msgid "Match ..." +msgstr "Match..." + +#: menus.c:707 +msgid "Load Game ..." +msgstr "Partij laden ..." + +#: menus.c:708 +msgid "Save Game ..." +msgstr "Partij opslaan ..." + +#: menus.c:709 +msgid "Game List ..." +msgstr "Partijenlijst ..." + +#: menus.c:710 +msgid "Sounds ..." +msgstr "Geluiden ..." + +#: menus.c:713 +msgid "Always Queen" +msgstr "Altijd koningin" + +#: menus.c:719 +msgid "Flash Moves" +msgstr "Zetten 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:85 +msgid "engine name" +msgstr "automaatnaam" + +#: nengineoutput.c:80 nengineoutput.c:87 +msgid "move" +msgstr "zetten" + +#: nengineoutput.c:153 +msgid "Engine output" +msgstr "Automaatuitvoer" + +#: nengineoutput.c:157 +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 +#, 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:371 +#, c-format +msgid "ERROR: Unknown user %s (in path %s)\n" +msgstr "Fout: onbekende gebruiker %s (in pad %s)\n" + +#: usystem.c:556 +#, fuzzy +msgid "Socket support is not configured in" +msgstr "Ondersteuning voor sockets is niet geconfigureerd" + +#: usystem.c:645 +msgid "internal rcmd not implemented for Unix" +msgstr "interne 'rcmd' is niet geïmplementeerd voor Unix" + +#: xaw/xboard.c:477 +#, c-format +msgid "%s: Can't access XPM directory %s\n" +msgstr "%s: Kan geen toegang krijgen tot XPM-map %s\n" + +#: xaw/xboard.c:498 +#, c-format +msgid "Available `%s' sizes:\n" +msgstr "Beschikbare '%s'-groottes:\n" + +#: xaw/xboard.c:531 +#, c-format +msgid "Error: No `%s' files!\n" +msgstr "Fout: geen '%s'-bestanden!\n" + +#: xaw/xboard.c:544 +#, 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:1291 +#, c-format +msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" +msgstr "" + +#: xaw/xengineoutput.c:114 +#, c-format +msgid "Error %d loading icon image\n" +msgstr "Fout %d tijdens laden van pictogram\n" + +#: xaw/xoptions.c:321 xaw/xoptions.c:1015 +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:1262 +msgid "OK" +msgstr "OK" + +#: xaw/xoptions.c:1266 +msgid "cancel" +msgstr "Annuleren" + +#~ msgid " " +#~ msgstr " " diff --git a/po/ru.po b/po/ru.po index 52b3d30..2cc7e05 100644 --- a/po/ru.po +++ b/po/ru.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110507\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,560 +18,564 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "версия протокола %d не поддерживается" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "timeControl: неверный параметр %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "searchTime: неверный параметр %s" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Вариант %s поддерживается только в режиме ICS" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "Неизвестный вариант %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "Запускается шахматная программа" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "Неправильный формат файла" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "Неправильный формат файла позиции" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 msgid "Can't have a match with no chess programs" msgstr "Не подключено ни одной шахматной программы" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "Не могу открыть COM-порт %s" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Не могу установить связь с %s, порт %s" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "initialMode: неизвестный режим %s" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "Режим анализа: не указан файл для анализа" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "Для анализа необходима шахматная программа" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "Режим анализа не совместим с режимом ICS" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "В режиме \"Компьютер белыми\" нужна шахматная программа" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "Режим \"Компьютер белыми\" не совместим с режимом ICS" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "В режиме \"Компьютер черными\" нужна шахматная программа (движок)" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "Режим \"Компьютер черными\" не совместим с режимом ICS" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "В режиме \"Два движка\" нужна шахматная программа" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "Режим \"Два движка\" не совместим с режимом ICS" -#: backend.c:1706 +#: backend.c:1717 msgid "Training mode requires a game file" msgstr "Для тренировки необходимо загрузить шахматную партию из файла" -#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346 +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "Ошибка записи на вход сервера ICS" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "Ошибка клавиатуры" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "Получен символ конца файла с клавиатуры" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "Ошибка записи на дисплей" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "Ошибка чтения списка ходов: два заголовка" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "Сервер ICS разорвал соединение" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "Ошибка чтения с сервера ICS" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" "Слишком длинная партия: увеличьте значение MAX_MOVES и перекомпилируйте " "программу" -#: backend.c:4372 +#: backend.c:4383 msgid "Error gathering move list: extra board" msgstr "Ошибка чтения списка ходов: лишняя доска" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Странный ход \"%s\" получен с сервера ICS" -#: backend.c:5063 +#: backend.c:5074 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "" -#: backend.c:5133 +#: backend.c:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "Вы играете черными" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 msgid "You are playing White" msgstr "Вы играете белыми" -#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696 -#: backend.c:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 msgid "It is White's turn" msgstr "Ход белых" -#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717 -#: backend.c:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "Ход черных" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "Показанная позиция не соответствует положению в игре" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "Неправильный ход" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "Сыгран последний записанный ход" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "Неверный ход" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Неправильный ход \"%s\" пытается выполнить движок %s" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s не поддерживает режим анализа" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Неправильный ход \"%s\" (не принят движком %s)" -#: backend.c:8693 +#: backend.c:8823 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Не удалось запустить %s движок %s на %s: %s\n" -#: backend.c:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "Подсказка: %s" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "Компьютер согласился на ничью" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Неоднозначный ход с сервера ICS: \"%s\"" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Неправильный ход с сервера ICS: \"%s\"" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "Пропуск в записи ходов" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "Вариант %s не поддерживается %s" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "Ошибка при запуске программы '%s'" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "Ждем первую шахматную программу" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "Ждем вторую шахматную программу" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 msgid "Bad tournament file" msgstr "" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Матч %s против %s: финальный результат %d-%d-%d" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Неправильный ход: %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Неоднозначный ход: %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "Не могу открыть файл \"%s\"" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "Не удалось создать список партий" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "В этом сообщении больше нет шахматных партий" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "Нет загруженных шахматных партий" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "Достигнуто начало списка" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "Номер партии - вне диапазона" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "Поиск в файлах записей партий не предусмотрен" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "Партия не найдена в файле" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "Неправильная позиция формата FEN в файле" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "Нет записанных ходов" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "Нет загруженных позиций" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "Поиск в файлах позиций не предусмотрен" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "Позиция не найдена в файле" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "Ход черных" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "Ход белых" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "Вы еще не сделали ход" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "Нет неоконченных партий" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -581,210 +585,210 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "Ошибка запуска cmail" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Ожидание ответного хода\n" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "Все еще ваша очередь ходить в этой партии\n" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "Все еще ваша очередь ходить в обеих партиях\n" -#: backend.c:13388 +#: backend.c:13519 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Все еще ваш ход во всех %d партиях\n" -#: backend.c:13395 +#: backend.c:13526 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Все еще ваш ход в партии %s\n" -#: backend.c:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "Нет неоконченных партий\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "Можно отсылать почту\n" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Все еще ваша очередь ходить в партиях %s\n" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "Правка комментария" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Правка комментария к %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "Сейчас не ход белых" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "Сейчас не ход черных" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "Тренировка окончена" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "Тренировка" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "Сыграны все ходы данной партии" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "Предупреждение: вы все еще продолжаете играть" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "Предупреждение: вы все еще наблюдаете за игрой" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "Предупреждение: вы все еще изучаете игру" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "Это поле занято" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "К данному ходу никаких предложений не сделано" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "У вашего соперника еще есть время" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "Вы должны сделать свой ход прежде, чем предлагать ничью" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "Не включен режим изучения шахматных партий" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "Нельзя вернуться к началу пока выбрана \"Пауза\"" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "Ваш ход" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "Подождите своей очереди ходить" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "Подсказок нет" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 #, fuzzy msgid "Game list not loaded or empty" msgstr "Нет загруженных шахматных партий" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "Ошибка записи на вход движка %s" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Ошибка: движок %s (%s) завершил работу" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Ошибка чтения с выхода движка %s (%s)" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "Позиция не отвечает положению в игре" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "Невозможно интерпретировать ход" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "У обоих игроков время вышло" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "У белых упал флажок" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "У черных упал флажок" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "Позиция в буфере обмена не соответствует формату FEN" @@ -896,7 +900,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -964,7 +968,7 @@ msgstr "Периодически обновлять (в режиме анали msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "Думать всегда" @@ -1088,7 +1092,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1160,995 +1164,999 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Предупреждение: второй движок (%s) не поддерживает это!" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "Варианты" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "Max число CPU:" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "Размер хеша (МБ):" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "Путь к ЭБД:" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "Кеш ЭБД (МБ):" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "Глубина книги:" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "Варьирование:" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "Своя книга у движка 1" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "Общие настройки движков" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "Определять мат" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "Проверять требования движка" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "Ничья при нехватке материала" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Ничья в технич. окончаниях" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "Присудить ничью после" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "Победа/поражение при перевесе в" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "Оценка движка 1 - абсолютная" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "Оценка движка 2 - абсолютная" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Присудить победу белым" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "Комментарии" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "Следить за игрой" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "Раскрывать доску" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "Следить в фоне" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "Двойная доска" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "Запрашивать запись ходов" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "Спокойная игра" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "График поиска" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "Автообновление" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +msgid "Quit after game" +msgstr "" + +#: dialogs.c:583 msgid "Premove" msgstr "Предварительный ход" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "1-й ход белых" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "1-й ход черных" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "Звонок" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "Настройки соединения с ICS" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 #, fuzzy msgid "No games before year:" msgstr "Нет загруженных шахматных партий" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "Параметры загрузки" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "Настройки сохранения" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "Без звука" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "Простой сигнал" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "Послушать" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "Звуки" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "Черные фигуры" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "Белые поля" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "Черные поля" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "Выделенное поле" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "Предварит. ход" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "Монохромная" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "Настройки доски" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 #, fuzzy msgid "Edit book" msgstr "Правка" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "Описание" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "Номер позиции:" -#: dialogs.c:1372 +#: dialogs.c:1374 #, fuzzy msgid "randomize" msgstr "Случайно" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "Новая в смешанные шахматы..." -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 #, fuzzy msgid "Time-Odds factors:" msgstr "Фактор времени движков:" -#: dialogs.c:1416 +#: dialogs.c:1418 #, fuzzy msgid "Engine #1" msgstr "Движок" -#: dialogs.c:1417 +#: dialogs.c:1419 #, fuzzy msgid "Engine #2 / Human" msgstr "Своя книга у движка 1" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "Ошибка подключения к шахматной программе" -#: dialogs.c:1574 +#: dialogs.c:1576 #, fuzzy msgid "Cancel" msgstr "Отмена" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "Король" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "Общие..." -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "Конь" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "Слон" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "Ладья" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "Архиепископ" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "Канцлер" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "Ферзь" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "Превратить" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "Стандарт" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "Вверх" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "Вниз" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 #, fuzzy msgid "Game-list options" msgstr "Параметры загрузки" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "Ошибка" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "Неисправимая ошибка" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "Выход" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "Информация" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "Примечание" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "Белые" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "Пешка" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "Слон (стар.)" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "Пушка" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "Разжаловать" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "Пустое поле" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "Очистить доску" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "Черные" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "Файл" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "Правка" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "Вид" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "Режим" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "Игра" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "Движок" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "Настройки" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "Справка" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "Файл" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "Фильтр" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "Фильтр" -#: dialogs.c:2447 +#: dialogs.c:2454 #, fuzzy msgid "Contents of" msgstr "Комментарии" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" msgstr "" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/tr.po b/po/tr.po index d06053a..3e490f7 100644 --- a/po/tr.po +++ b/po/tr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: XBoard 4.2.7\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: 2003-12-26 16:38+0200\n" "Last-Translator: A. Alper Atýcý \n" "Language-Team: Turkish \n" @@ -18,559 +18,563 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, fuzzy, c-format msgid "Failed to open indirection file %s" msgstr "Dosya açýlamadý" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 msgid "Can't have a match with no chess programs" msgstr "" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "" -#: backend.c:1706 +#: backend.c:1717 msgid "Training mode requires a game file" msgstr "" -#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346 +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" -#: backend.c:4372 +#: backend.c:4383 msgid "Error gathering move list: extra board" msgstr "" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "" -#: backend.c:5063 +#: backend.c:5074 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "" -#: backend.c:5133 +#: backend.c:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "Siz Siyah'sýnýz" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 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:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 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:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "Sýra Siyah'ta" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "Geçersiz hamle" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "Oyun sonu" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "Yanlýþ hamle" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "" -#: backend.c:8693 +#: backend.c:8823 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "" -#: backend.c:8714 +#: backend.c:8844 #, fuzzy, c-format msgid "Hint: %s" msgstr "Ýpucu" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 #, fuzzy msgid "Bad tournament file" msgstr "Dosya açýlamadý" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -580,209 +584,209 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "" -#: backend.c:13388 +#: backend.c:13519 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "" -#: backend.c:13395 +#: backend.c:13526 #, c-format msgid "Still need to make a move for game %s\n" msgstr "" -#: backend.c:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 msgid "Game list not loaded or empty" msgstr "" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "Berabere" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "Beyaz Þah mat" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "Siyah Þah mat" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "" @@ -892,7 +896,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -961,7 +965,7 @@ msgstr "" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 #, fuzzy msgid "Ponder Next Move" msgstr "Sonraki Oyunu Yükle" @@ -1086,7 +1090,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1159,1010 +1163,1014 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Oyunu Kaydet" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "" -#: dialogs.c:572 +#: dialogs.c:573 #, fuzzy msgid "Auto-Raise Board" msgstr "XBoard Hakkýnda" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "" -#: dialogs.c:576 +#: dialogs.c:577 #, fuzzy msgid "Get Move List" msgstr "Hamle Listesini Göster" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +msgid "Quit after game" +msgstr "" + +#: dialogs.c:583 msgid "Premove" msgstr "" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 #, fuzzy msgid "ICS Options" msgstr "Seçenekler" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 msgid "No games before year:" msgstr "" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 #, fuzzy msgid "Load Game Options" msgstr "Oyun Yükle" -#: dialogs.c:657 +#: dialogs.c:659 #, fuzzy msgid "Auto-Save Games" msgstr "Oyunu Kaydet" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 #, fuzzy msgid "Save Games on File:" msgstr "Oyunu Kaydet" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 #, fuzzy msgid "Save Game Options" msgstr "Oyunu Kaydet" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 #, fuzzy msgid "User File" msgstr "Dosya" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 #, fuzzy msgid "Draw:" msgstr "Berabere" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 #, fuzzy msgid "Channel:" msgstr "iptal" -#: dialogs.c:733 +#: dialogs.c:735 #, fuzzy msgid "Channel 1:" msgstr "iptal" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 #, fuzzy msgid "Sound Options" msgstr "Seçenekler" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 #, fuzzy msgid "Mono Mode" msgstr "Kip" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 #, fuzzy msgid "Board Options" msgstr "Seçenekler" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "temizle" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 #, fuzzy msgid "Edit book" msgstr "Oyunu Düzenle" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "" -#: dialogs.c:1193 +#: dialogs.c:1195 #, fuzzy msgid "ICS input box" msgstr "ICS Ýstemcisi" -#: dialogs.c:1225 +#: dialogs.c:1227 #, fuzzy msgid "Type a move" msgstr "Geçersiz hamle" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "" -#: dialogs.c:1372 +#: dialogs.c:1374 msgid "randomize" msgstr "" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "" -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 msgid "Time-Odds factors:" msgstr "" -#: dialogs.c:1416 +#: dialogs.c:1418 msgid "Engine #1" msgstr "" -#: dialogs.c:1417 +#: dialogs.c:1419 msgid "Engine #2 / Human" msgstr "" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "" -#: dialogs.c:1574 +#: dialogs.c:1576 #, fuzzy msgid "Cancel" msgstr "iptal" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "Þah" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "" -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "At" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "Fil" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "Kale" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 #, fuzzy msgid "Archbishop" msgstr "Fil" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 #, fuzzy msgid "Chancellor" msgstr "iptal" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "Vezir" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 #, fuzzy msgid "Promote" msgstr "Terfi" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 #, fuzzy msgid "Game-list options" msgstr "Oyun Yükle" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "Hata" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "Bilgi" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "Not" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "Beyaz" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "Piyon" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "Kareyi Boþalt" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "Tahtayý Temizle" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "Siyah" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "Dosya" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 #, fuzzy msgid "Edit" msgstr "Oyunu Düzenle" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "Kip" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "Eylem" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "Seçenekler" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "Yardým" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "Dosya" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "Dosya adý giriþi" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "Analiz edilecek dosya" -#: dialogs.c:2447 +#: dialogs.c:2454 msgid "Contents of" msgstr "" -#: dialogs.c:2473 +#: dialogs.c:2480 #, fuzzy msgid " next page" msgstr "sonraki" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/uk.po b/po/uk.po index d1ced58..17a7d1e 100644 --- a/po/uk.po +++ b/po/uk.po @@ -5,10 +5,10 @@ # Yuri Chornoivan , 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: 2013-08-28 21:49-0700\n" -"PO-Revision-Date: 2013-02-26 22:30+0200\n" +"PO-Revision-Date: 2013-11-19 13:57+0200\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -16,8 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.5\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" +"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 #, c-format @@ -175,9 +174,7 @@ msgstr "Робота режиму гри комп’ютером білими р #: backend.c:1690 msgid "TwoMachines mode requires a chess engine" -msgstr "" -"Режимом гри між двома комп’ютерами можна скористатися, лише якщо встановлено " -"шаховий рушій" +msgstr "Режимом гри між двома комп’ютерами можна скористатися, лише якщо встановлено шаховий рушій" #: backend.c:1695 msgid "TwoMachines mode does not work with ICS mode" @@ -250,8 +247,7 @@ msgstr "" #: backend.c:4253 backend.c:9755 msgid "Game too long; increase MAX_MOVES and recompile" -msgstr "" -"Гра є занадто довгою. Збільшіть значення MAX_MOVES і перезберіть програму." +msgstr "Гра є занадто довгою. Збільшіть значення MAX_MOVES і перезберіть програму." #: backend.c:4372 msgid "Error gathering move list: extra board" @@ -273,8 +269,7 @@ msgstr "Ця дія неможлива у режимі гри або спост #: backend.c:6029 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" -msgstr "" -"Повторно зберіть програму з підтримкою цих значень BOARD_RANKS і BOARD_FILES!" +msgstr "Повторно зберіть програму з підтримкою цих значень BOARD_RANKS і BOARD_FILES!" #: backend.c:6491 msgid "You are playing Black" @@ -339,8 +334,7 @@ msgstr "У %s не передбачено аналізу" #: backend.c:8666 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" -msgstr "" -"Недозволений хід «%s» (у реєстрації ходу відмовлено шаховою програмою %s)" +msgstr "Недозволений хід «%s» (у реєстрації ходу відмовлено шаховою програмою %s)" #: backend.c:8693 #, c-format @@ -592,8 +586,7 @@ msgid "" "Use Reload CMail Message and make your move again." msgstr "" "Повідомлення cmail не завантажено.\n" -"Скористайтеся пунктом «Перезавантажити повідомлення CMail» і повторіть ваш " -"хід." +"Скористайтеся пунктом «Перезавантажити повідомлення CMail» і повторіть ваш хід." #: backend.c:13275 msgid "No unfinished games" @@ -904,8 +897,7 @@ msgstr "Номер позиції (-1 або -2 = автоматичне збі #: dialogs.c:282 msgid "Rewind Index after this many Games (0 = never):" -msgstr "" -"Відновлювати початковий номер після вказаної кількості ігор (0=ніколи):" +msgstr "Відновлювати початковий номер після вказаної кількості ігор (0=ніколи):" #: dialogs.c:283 msgid "Disable own engine books by default" @@ -1848,8 +1840,7 @@ msgstr "Команда рушія:" #: dialogs.c:1286 msgid "(Directory will be derived from engine path when empty)" -msgstr "" -"(Каталог буде визначено на основі шляху до рушія, якщо каталог не вказано)" +msgstr "(Каталог буде визначено на основі шляху до рушія, якщо каталог не вказано)" #: dialogs.c:1287 msgid "UCI" @@ -2165,9 +2156,8 @@ msgid "Contents of" msgstr "Вміст" #: dialogs.c:2473 -#, fuzzy msgid " next page" -msgstr " наступна сторінка" +msgstr " наступна сторінка" #: dialogs.c:2495 msgid "FIRST TYPE DIRECTORY NAME HERE" @@ -2220,9 +2210,7 @@ msgstr "Не вдалося відкрити файл «%s»\n" #: gtk/xboard.c:811 xaw/xboard.c:1179 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" -msgstr "" -"Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з " -"більшими значеннями BOARD_RANKS або BOARD_FILES" +msgstr "Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з більшими значеннями BOARD_RANKS або BOARD_FILES" #: gtk/xboard.c:830 xaw/xboard.c:1211 #, c-format @@ -2286,13 +2274,11 @@ msgid "" "Enhancements Copyright 1992-2013 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" +"%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" +"Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" @@ -2303,14 +2289,11 @@ msgstr "" "© Free Software Foundation, 1992–2012\n" "© Alessandro Scotti, 2005\n" "\n" -"%s є вільним програмним забезпеченням, його працездатність не гарантується. " -"Докладніше про це у файлі COPYING.\n" +"%s є вільним програмним забезпеченням, його працездатність не гарантується. Докладніше про це у файлі COPYING.\n" "Збірка з GTK цієї версії є експериментальною і нестабільною\n" "\n" -"Відвідайте сторінку XBoard у мережі за адресою: http://www.gnu.org/software/" -"xboard/\n" -"Ознайомтеся з найсвіжішими можливостями програми: http://www.gnu.org/" -"software/xboard/whats_new.html\n" +"Відвідайте сторінку XBoard у мережі за адресою: http://www.gnu.org/software/xboard/\n" +"Ознайомтеся з найсвіжішими можливостями програми: http://www.gnu.org/software/xboard/whats_new.html\n" "\n" "Надішліть повідомлення про ваду на адресу: \n" "\n" @@ -3039,8 +3022,7 @@ msgstr "скасувати" #~ msgstr "XsraSelFile: не вдалося отримати назву поточного каталогу" #~ msgid "%s: titleWidget geometry error %d %d %d %d %d\n" -#~ msgstr "" -#~ "%s: помилка у геометричних параметрах titleWidget — %d %d %d %d %d\n" +#~ msgstr "%s: помилка у геометричних параметрах titleWidget — %d %d %d %d %d\n" #~ msgid "Error expanding path name \"%s\"\n" #~ msgstr "Помилка під час спроби розгортання адреси каталогу «%s»\n" @@ -3056,8 +3038,7 @@ msgstr "скасувати" #~ msgstr "Найближчий розмір %s: %d\n" #~ msgid "%s: messageWidget geometry error %d %d %d %d %d\n" -#~ msgstr "" -#~ "%s: помилка у геометричних параметрах messageWidget — %d %d %d %d %d\n" +#~ msgstr "%s: помилка у геометричних параметрах messageWidget — %d %d %d %d %d\n" #~ msgid "%s: error loading XIM!\n" #~ msgstr "%s: помилка завантаження XIM!\n" @@ -3113,8 +3094,7 @@ msgstr "скасувати" #~ msgstr "Некоректне растрове зображення у файлі %s" #~ msgid "Ran out of memory reading bitmap file %s" -#~ msgstr "" -#~ "Під час читання растрового зображення %s було вичерпано обсяг пам’яті" +#~ msgstr "Під час читання растрового зображення %s було вичерпано обсяг пам’яті" #~ msgid "Unknown XReadBitmapFile error %d on file %s" #~ msgstr "Невідома помилка XReadBitmapFile %d під час обробки файла %s" @@ -3123,9 +3103,7 @@ msgstr "скасувати" #~ msgstr "%s: %s… використовуємо вбудоване\n" #~ msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n" -#~ msgstr "" -#~ "%s: розміри растрового зображення %s дорівнюють %dx%d, а не %dx%d… " -#~ "використовуємо вбудоване\n" +#~ msgstr "%s: розміри растрового зображення %s дорівнюють %dx%d, а не %dx%d… використовуємо вбудоване\n" #~ msgid "----" #~ msgstr "----" diff --git a/po/vi.po b/po/vi.po index d3dff27..df85d21 100644 --- a/po/vi.po +++ b/po/vi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110507\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,558 +18,562 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 msgid "Can't have a match with no chess programs" msgstr "" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "" -#: backend.c:1706 +#: backend.c:1717 msgid "Training mode requires a game file" msgstr "" -#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346 +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" -#: backend.c:4372 +#: backend.c:4383 msgid "Error gathering move list: extra board" msgstr "" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "" -#: backend.c:5063 +#: backend.c:5074 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "" -#: backend.c:5133 +#: backend.c:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 msgid "You are playing White" msgstr "" -#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696 -#: backend.c:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 msgid "It is White's turn" msgstr "" -#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717 -#: backend.c:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "" -#: backend.c:8693 +#: backend.c:8823 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "" -#: backend.c:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 msgid "Bad tournament file" msgstr "" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -579,209 +583,209 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "" -#: backend.c:13388 +#: backend.c:13519 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "" -#: backend.c:13395 +#: backend.c:13526 #, c-format msgid "Still need to make a move for game %s\n" msgstr "" -#: backend.c:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 msgid "Game list not loaded or empty" msgstr "" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "" @@ -890,7 +894,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -958,7 +962,7 @@ msgstr "" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "" @@ -1079,7 +1083,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1151,991 +1155,995 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Phân Xá»­ Trắng Thắng" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "Tá»± Động Hiện Bàn Cờ" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +msgid "Quit after game" +msgstr "" + +#: dialogs.c:583 msgid "Premove" msgstr "" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 msgid "No games before year:" msgstr "" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "Các Lá»±a Chọn Tải Ván Cờ" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "Các Lá»±a Chọn LÆ°u Ván Cờ" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "Không âm thanh" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "Tiếng tút ngầm định" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "ChÆ¡i" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "Âm thanh" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 #, fuzzy msgid "Edit book" msgstr "Soạn" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "Các Thẻ" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "" -#: dialogs.c:1372 +#: dialogs.c:1374 msgid "randomize" msgstr "" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "Tráo Bên..." -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 #, fuzzy msgid "Time-Odds factors:" msgstr "Hệ số thời gian lẻ" -#: dialogs.c:1416 +#: dialogs.c:1418 msgid "Engine #1" msgstr "" -#: dialogs.c:1417 +#: dialogs.c:1419 msgid "Engine #2 / Human" msgstr "" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "" -#: dialogs.c:1574 +#: dialogs.c:1576 #, fuzzy msgid "Cancel" msgstr "Bỏ" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "Vua" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "Chung..." -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "Mã" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "Tượng" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "Xe" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "SÄ©" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "Xe" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "Hoàng Hậu" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "Phong Cấp" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 #, 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:1871 dialogs.c:1885 msgid "Error" msgstr "" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "Trắng" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "Tốt" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "Tượng" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "Pháo" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "Ô Trống" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "Xóa Bàn Cờ" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "Đen" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "Soạn" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "Hướng Dẫn" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "Lọc" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "Lọc" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "Lọc" -#: dialogs.c:2447 +#: dialogs.c:2454 #, fuzzy msgid "Contents of" msgstr "Bình Chú" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" msgstr "" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/xboard.pot b/po/xboard.pot index 9330a03..01d1543 100644 --- a/po/xboard.pot +++ b/po/xboard.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: GNU xboard 4.7.2\n" +"Project-Id-Version: GNU xboard master-20130828\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,558 +18,562 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 msgid "Can't have a match with no chess programs" msgstr "" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "" -#: backend.c:1706 +#: backend.c:1717 msgid "Training mode requires a game file" msgstr "" -#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346 +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" -#: backend.c:4372 +#: backend.c:4383 msgid "Error gathering move list: extra board" msgstr "" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "" -#: backend.c:5063 +#: backend.c:5074 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "" -#: backend.c:5133 +#: backend.c:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 msgid "You are playing White" msgstr "" -#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696 -#: backend.c:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 msgid "It is White's turn" msgstr "" -#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717 -#: backend.c:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "" -#: backend.c:8693 +#: backend.c:8823 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "" -#: backend.c:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 msgid "Bad tournament file" msgstr "" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -579,209 +583,209 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "" -#: backend.c:13388 +#: backend.c:13519 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "" -#: backend.c:13395 +#: backend.c:13526 #, c-format msgid "Still need to make a move for game %s\n" msgstr "" -#: backend.c:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 msgid "Game list not loaded or empty" msgstr "" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "" @@ -889,7 +893,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -957,7 +961,7 @@ msgstr "" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "" @@ -1078,7 +1082,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1150,982 +1154,986 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "" -#: dialogs.c:556 +#: dialogs.c:557 msgid "Adjudicate non-ICS Games" msgstr "" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +msgid "Quit after game" +msgstr "" + +#: dialogs.c:583 msgid "Premove" msgstr "" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 msgid "No games before year:" msgstr "" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 msgid "Edit book" msgstr "" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "" -#: dialogs.c:1372 +#: dialogs.c:1374 msgid "randomize" msgstr "" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "" -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 msgid "Time-Odds factors:" msgstr "" -#: dialogs.c:1416 +#: dialogs.c:1418 msgid "Engine #1" msgstr "" -#: dialogs.c:1417 +#: dialogs.c:1419 msgid "Engine #2 / Human" msgstr "" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "" -#: dialogs.c:1574 +#: dialogs.c:1576 msgid "Cancel" msgstr "" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "" -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 msgid "Game-list options" msgstr "" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 msgid "Files:" msgstr "" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 msgid "Filename:" msgstr "" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 msgid "File type:" msgstr "" -#: dialogs.c:2447 +#: dialogs.c:2454 msgid "Contents of" msgstr "" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" msgstr "" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index aa4257d..e5d907e 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110507\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,558 +18,562 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "协议版本 %d 不被支持" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "非法的\"timeControl\"(时间控制)选项 %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "非法的\"searchTime\"(搜索时间)选项 %s" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "变体 %s 只在ICS模式下支持" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "未知的变体名 %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "启动国际象棋程序" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "棋局文件错误" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "局面文件错误" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 msgid "Can't have a match with no chess programs" msgstr "没有象棋程序时无法进行比赛" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "无法打开通讯端口 %s" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "无法连接主机 %s 端口 %s" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "未知的\"initialMode\"(初始模式)选项 %s" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "\"AnalyzeFile\"(分析文件)模式必须指定一个棋局文件" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "\"Analysis\"(分析)模式必须启动国际象棋引擎" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "\"Analysis\"(分析)模式无法在ICS模式下工作" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "\"MachineWhite\"(电脑执白)模式必须启动国际象棋引擎" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "\"MachineWhite\"(电脑执白)模式无法在ICS模式下运行" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "\"MachineBlack\"(电脑执黑)模式必须启动国际象棋引擎" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "\"MachineBlack\"(电脑执黑)模式无法在ICS模式下运行" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "\"TwoMachines\"(分析)模式必须启动国际象棋引擎" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "\"TwoMachines\"(电脑对弈)模式无法在ICS模式下运行" -#: backend.c:1706 +#: backend.c:1717 msgid "Training mode requires a game file" msgstr "\"Training\"(训练)模式必须指定一个棋局文件" -#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346 +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "发送信息给ICS时出错" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "读取键盘时出错" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "读取键盘时遇到文件尾" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "发送信息给显示器时出错" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "读取着法时出错,出现两个开头" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "连接被ICS关闭" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "读取ICS信息时出错" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "棋局太长,需要增加\"MAX_MOVES\"并重新编译" -#: backend.c:4372 +#: backend.c:4383 msgid "Error gathering move list: extra board" msgstr "读取着法时出错,超出棋盘" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "无法解析从ICS读到的着法\"%s\"" -#: backend.c:5063 +#: backend.c:5074 #, 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:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "你在执黑" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 msgid "You are playing White" msgstr "你在执白" -#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696 -#: backend.c:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 msgid "It is White's turn" msgstr "轮到白方走棋" -#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717 -#: backend.c:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "轮到黑方走棋" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "显示的局面不是当前局面" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "着法错误" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "棋局结束" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "着法错误" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "从%s机器读到不合理着法\"%s\"" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s 不支持分析功能" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "不合理着法\"%s\" (%s国际象棋程序拒绝接受该着法)" -#: backend.c:8693 +#: backend.c:8823 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "无法启动%s国际象棋程序 %s(在主机 %s 上),%s\n" -#: backend.c:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "提示 %s" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr " *.*" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "ICS输出不明确的着法\"%s\"" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "ICS输出不明确的着法\"%s\"" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "着法断开" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "变体 %s 不被 %s 所支持" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "无法启动'%s'" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "等待第一个国际象棋程序" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "等待第二个国际象棋程序" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 msgid "Bad tournament file" msgstr "" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "比赛 %s vs. %s: 最终比分 %d-%d-%d" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "不合理着法 %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "不明确的着法 %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "无法打开\"%s\"" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "无法建立棋局列表" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "这条信息不包含更多的棋局" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "尚未有棋局载入" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "无法再后退了" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "棋局数量超出范围" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "无法搜索棋局文件" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "文件中没有找到棋局" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "文件中的FEN局面错误" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "棋局中没有着法" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "尚未有局面载入" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "无法搜索局面文件" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "文件中没有着到局面" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "轮到黑方走棋" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "轮到白方走棋" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "一步棋也没走过" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "No unfinished games" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -579,210 +583,210 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "Failed to invoke cmail" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Waiting for reply from opponent\n" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "Still need to make move for game\n" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "Still need to make moves for both games\n" -#: backend.c:13388 +#: backend.c:13519 #, 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:13395 +#: backend.c:13526 #, 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:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "No unfinished games\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "Ready to send mail\n" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Still need to make moves for games %s\n" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "编辑注释" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "编辑注释 %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "没有轮到白方走棋" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "没有轮到黑方走棋" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "训练模式已关闭" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "训练模式已打开" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "棋局已经结束" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "注意:你正在进行棋局" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "注意:你正在旁观棋局" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "注意:你正在研究棋局" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "格子已放棋子" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "该着法没有待定的提议" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "对手没有超时" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "必须走完棋才能提和" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "没有分析棋局" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "暂停时不能复原棋局" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "轮到你走棋" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "等待对手走棋" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "没有可用的提示" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 #, fuzzy msgid "Game list not loaded or empty" msgstr "尚未有棋局载入" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "发送信息到%s国际象棋程序时出错" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "错误:%s国际象棋程序(%s)突然退出了" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "从%s国际象棋程序(%s)接收信息时出错" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "显示的着法不是当前着法" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "无法解析着法" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "双方都超时了" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "白方超时" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "黑方超时" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "剪贴板的FEN局面错误" @@ -894,7 +898,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -962,7 +966,7 @@ msgstr "定期更新(分析模式)" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "同步思考(N)" @@ -1085,7 +1089,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1157,995 +1161,999 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "警告: 第二个引擎(%s) 不支持此!" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "变种" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "最大CPU数" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "Hash 大小(MB)" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "EGTB 路径" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "EGTB 大小(MB)" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "库着法深度" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "库变例" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "引擎1有自用库" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "通用引擎设置" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "检测将杀(M)" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "验证引擎声明(V)" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "子力不足时判和(I)" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "一般和棋判决(T)" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "几着后判决" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "输/赢判决阈值" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "引擎 #1 是绝对分数" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "引擎 #2 是绝对分数" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "裁决白赢 (W)" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "自动\"kibitz\"(A)" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "自动注释(A)" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "自动旁观(O)" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "自动改变棋盘大小(R)" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "后台观察(v)" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "双棋盘(D)" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "获取着法列表(G)" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "落子无声(Q)" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "可选对手图表(k)" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "自动刷新图表(R)" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +msgid "Quit after game" +msgstr "" + +#: dialogs.c:583 msgid "Premove" msgstr "预先走棋(P)" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "白方先行(W)" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "黑方先行(B)" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "提示" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "ICS设置" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 #, fuzzy msgid "No games before year:" msgstr "尚未有棋局载入" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "载入棋局选项" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "保存棋局选项" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "无声" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "默认声音" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "播放" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "声音" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "黑子" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "白格" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "黑格" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "格子标记" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "预先走棋标记" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "黑白" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "棋盘选项" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 #, fuzzy msgid "Edit book" msgstr "编辑(E)" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "编辑标签(T)" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "启动位置号码(S)" -#: dialogs.c:1372 +#: dialogs.c:1374 #, fuzzy msgid "randomize" msgstr "随机" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "洗牌游戏(u)..." -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 #, fuzzy msgid "Time-Odds factors:" msgstr "时间倍数" -#: dialogs.c:1416 +#: dialogs.c:1418 #, fuzzy msgid "Engine #1" msgstr "引擎(N)" -#: dialogs.c:1417 +#: dialogs.c:1419 #, fuzzy msgid "Engine #2 / Human" msgstr "引擎1有自用库" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "发送信息给国际象棋程序时出错" -#: dialogs.c:1574 +#: dialogs.c:1576 #, fuzzy msgid "Cancel" msgstr "取消(C)" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "王" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "常规选项(G)..." -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "马" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "象" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "车" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "国师" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "宰相" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "后" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "升变" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "向上" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "向下" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 #, fuzzy msgid "Game-list options" msgstr "载入棋局选项" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "错误" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "严重错误" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "退出" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "注释" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "白方" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "兵" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "象" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "炮" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "降级" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "清空格子" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "清空棋盘" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "黑方" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "文件(F)" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "编辑(E)" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "外观(V)" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "模式(M)" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "行为(A)" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "引擎(N)" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "选项(O)" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "帮助(H)" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "文件(F)" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "过滤器" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "过滤器" -#: dialogs.c:2447 +#: dialogs.c:2454 #, fuzzy msgid "Contents of" msgstr "编辑注释(C) *.*" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" msgstr "" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/zh_HK.po b/po/zh_HK.po index 0b8df9e..0dc1563 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110411\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,562 +18,566 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "通訊協定版本 %d 不被支持" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "非法的\"timeControl\"(時間控制)選項 %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "非法的\"searchTime\"(搜尋時間)選項 %s" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "變體 %s 只在ICS模式下支持" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "未知的變體名 %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "啟動國際象棋程式" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "棋局檔案錯誤" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "盤面檔案錯誤" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 msgid "Can't have a match with no chess programs" msgstr "沒有象棋程式時無法進行比賽" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "無法打開通訊連接埠 %s" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "無法連接主機 %s 連接埠 %s" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "未知的\"initialMode\"(初始模式)選項 %s" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行" -#: backend.c:1706 +#: backend.c:1717 msgid "Training mode requires a game file" msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案" -#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346 +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "發送訊息給ICS時出錯" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "讀取鍵盤時出錯" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "讀取鍵盤時遇到檔案尾" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "發送訊息給顯示器時出錯" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "讀取著法時出錯,出現兩個開頭" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "連接被ICS關閉" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "讀取ICS訊息時出錯" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯" -#: backend.c:4372 +#: backend.c:4383 msgid "Error gathering move list: extra board" msgstr "讀取著法時出錯,超出棋盤" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "無法解析從ICS讀到的著法\"%s\"" -#: backend.c:5063 +#: backend.c:5074 #, 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:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "你在執黑" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 msgid "You are playing White" msgstr "你在執紅" -#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696 -#: backend.c:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 msgid "It is White's turn" msgstr "輪到紅方走棋" -#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717 -#: backend.c:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "輪到黑方走棋" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "顯示的盤面不是當前盤面" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "著法錯誤" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "棋局結束" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "著法錯誤" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "從%s機器讀到不合法著法\"%s\"" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s 不支持分析功能" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)" -#: backend.c:8693 +#: backend.c:8823 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n" -#: backend.c:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "提示 %s" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "電腦同意和棋" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "著法斷開" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "變體 %s 不被 %s 所支持" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "無法啟動'%s'" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "等待第一個國際象棋程式" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "等待第二個國際象棋程式" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 #, fuzzy msgid "Bad tournament file" msgstr "棋局檔案錯誤" -#: backend.c:10471 +#: backend.c:10601 #, fuzzy msgid "Waiting for other game(s)" msgstr "等待第一個國際象棋程式" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "不合法著法 %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "不明確的著法 %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "無法打開\"%s\"" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "無法建立棋局列表" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "這條訊息不包含更多的棋局" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "尚未有棋局載入" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "無法再後退了" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "棋局數量超出範圍" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "無法搜尋棋局檔案" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "檔案中沒有找到棋局" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "檔案中的FEN盤面錯誤" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "棋局中沒有著法" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "尚未有盤面載入" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "無法搜尋盤面檔案" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "檔案中沒有找到盤面" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "輪到黑方走棋" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "輪到紅方走棋" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 #, fuzzy msgid "Waiting for access to save file" msgstr "等待第二個國際象棋程式" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 #, fuzzy msgid "Saving position" msgstr "盤面檔案錯誤" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "你尚未走棋" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "不存在未完成棋局" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -583,210 +587,210 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "呼叫cmail失敗" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "等待對手回應\n" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "本棋局仍需走棋\n" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "兩棋局皆仍需走棋\n" -#: backend.c:13388 +#: backend.c:13519 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "所有 %d 棋局皆仍需走棋\n" -#: backend.c:13395 +#: backend.c:13526 #, c-format msgid "Still need to make a move for game %s\n" msgstr "棋局 %s 仍需走棋\n" -#: backend.c:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "不存在未完成棋局\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "準備送信就緒\n" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "棋局 %s 仍需走棋\n" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "編輯註解" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "編輯註解 %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "沒有輪到紅方走棋" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "沒有輪到黑方走棋" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "訓練模式已關閉" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "訓練模式已打開" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "棋局已經結束" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "注意:你正在進行棋局" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "注意:你正在觀棋棋局" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "注意:你正在研究棋局" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "格子已有棋子" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "該著法沒有待定的提議" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "對手沒有超時" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "必須走完棋才能提和" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "沒有分析棋局" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "暫停時不能復原棋局" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "輪到你走棋" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "等待對手走棋" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "沒有可用的提示" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 #, fuzzy msgid "Game list not loaded or empty" msgstr "尚未有棋局載入" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "發送訊息到%s國際象棋程式時出錯" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "錯誤:%s國際象棋程式(%s)異常終止" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "從%s國際象棋程式(%s)接收訊息時出錯" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "顯示的著法不是當前著法" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "無法解析著法" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "雙方都超時了" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "紅方超時" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "黑方超時" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "剪貼簿的FEN盤面錯誤" @@ -898,7 +902,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -966,7 +970,7 @@ msgstr "定期更新(分析模式)" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "同步思考(N)" @@ -1089,7 +1093,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1161,996 +1165,1001 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "警告: 第二個引擎(%s) 不支持此!" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "變種" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "最大CPU數" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "雜湊表大小(MB)" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "EGTB 路徑" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "EGTB 大小(MB)" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "庫著法深度" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "庫變例" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "引擎1有自用庫" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "通用引擎設定" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "檢測將殺(M)" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "驗證引擎聲明(V)" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "子力不足時判和(I)" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "簡易和棋判決(T)" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "幾著後判和" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "輸/贏判決門檻" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "引擎 #1 是絕對分數" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "引擎 #2 是絕對分數" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "裁決紅贏 (W)" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "自動\"kibitz\"(A)" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "自動註解(A)" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "自動觀棋(O)" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "自動改變棋盤大小(R)" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "背景觀察(v)" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "雙棋盤(D)" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "取得著法列表(G)" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "落子無聲(Q)" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "可選對手圖表(k)" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "自動刷新圖表(R)" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +#, fuzzy +msgid "Quit after game" +msgstr "等待第一個國際象棋程式" + +#: dialogs.c:583 msgid "Premove" msgstr "預先走棋(P)" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "紅方先走(W)" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "黑方先走(B)" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "提示" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "ICS設定" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 #, fuzzy msgid "No games before year:" msgstr "尚未有棋局載入" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "載入棋局選項" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "儲存棋局選項" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "無聲" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "預設聲音" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "播放" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "聲音" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "黑子" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "白格" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "黑格" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "格子標記" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "預先走棋標記" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "黑白" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "棋盤選項" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 #, fuzzy msgid "Edit book" msgstr "編輯(E)" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "編輯標籤(T)" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "" -#: dialogs.c:1251 +#: dialogs.c:1253 #, fuzzy msgid "Engine has no options" msgstr "引擎1有自用庫" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "啟動位置號碼(S)" -#: dialogs.c:1372 +#: dialogs.c:1374 #, fuzzy msgid "randomize" msgstr "隨機" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "洗牌遊戲(u)..." -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 #, fuzzy msgid "Time-Odds factors:" msgstr "時間倍數" -#: dialogs.c:1416 +#: dialogs.c:1418 #, fuzzy msgid "Engine #1" msgstr "引擎輸出" -#: dialogs.c:1417 +#: dialogs.c:1419 #, fuzzy msgid "Engine #2 / Human" msgstr "引擎1有自用庫" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "發送訊息給國際象棋程式時出錯" -#: dialogs.c:1574 +#: dialogs.c:1576 #, fuzzy msgid "Cancel" msgstr "取消(C)" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "王" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "一般選項(G)..." -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "馬" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "象" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "車" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "國師" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "宰相" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "后" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "升變" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "向上" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "向下" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 #, fuzzy msgid "Game-list options" msgstr "載入棋局選項" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "錯誤" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "嚴重錯誤" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "離開" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "資訊" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "註解" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "紅方" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "兵" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "象" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "炮" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "降級" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "清空格子" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "清空棋盤" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "黑方" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "檔案(F)" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "編輯(E)" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "模式(M)" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "行為(A)" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "選項(O)" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "說明(H)" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "檔案(F)" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "過濾器" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "過濾器" -#: dialogs.c:2447 +#: dialogs.c:2454 #, fuzzy msgid "Contents of" msgstr "編輯註解(C) *.*" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" msgstr "" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/po/zh_TW.po b/po/zh_TW.po index 70dc4d5..cf92a29 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110507\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2013-08-28 21:49-0700\n" +"POT-Creation-Date: 2013-08-28 22:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,558 +18,562 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:820 +#: args.h:821 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:830 +#: args.h:831 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:923 args.h:1164 +#: args.h:924 args.h:1165 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:954 +#: args.h:955 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1014 +#: args.h:1015 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1119 +#: args.h:1120 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1136 +#: args.h:1137 #, 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:753 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:756 msgid "second" msgstr "" -#: backend.c:827 +#: backend.c:837 #, c-format msgid "protocol version %d not supported" msgstr "通訊協定版本 %d 不被支持" -#: backend.c:933 +#: backend.c:943 msgid "You did not specify the engine executable" msgstr "" -#: backend.c:989 +#: backend.c:999 #, c-format msgid "bad timeControl option %s" msgstr "非法的\"timeControl\"(時間控制)選項 %s" -#: backend.c:1004 +#: backend.c:1014 #, c-format msgid "bad searchTime option %s" msgstr "非法的\"searchTime\"(搜尋時間)選項 %s" -#: backend.c:1110 +#: backend.c:1120 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "變體 %s 只在ICS模式下支持" -#: backend.c:1128 +#: backend.c:1138 #, c-format msgid "Unknown variant name %s" msgstr "未知的變體名 %s" -#: backend.c:1375 +#: backend.c:1386 msgid "Starting chess program" msgstr "啟動國際象棋程式" -#: backend.c:1398 +#: backend.c:1409 msgid "Bad game file" msgstr "棋局檔案錯誤" -#: backend.c:1405 +#: backend.c:1416 msgid "Bad position file" msgstr "盤面檔案錯誤" -#: backend.c:1419 +#: backend.c:1430 msgid "Pick new game" msgstr "" -#: backend.c:1488 +#: backend.c:1499 msgid "" "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:1506 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" -#: backend.c:1502 +#: backend.c:1513 msgid "Can't have a match with no chess programs" msgstr "沒有象棋程式時無法進行比賽" -#: backend.c:1539 +#: backend.c:1550 #, c-format msgid "Could not open comm port %s" msgstr "無法打開通訊連接埠 %s" -#: backend.c:1542 +#: backend.c:1553 #, c-format msgid "Could not connect to host %s, port %s" msgstr "無法連接主機 %s 連接埠 %s" -#: backend.c:1598 +#: backend.c:1609 #, c-format msgid "Unknown initialMode %s" msgstr "未知的\"initialMode\"(初始模式)選項 %s" -#: backend.c:1624 +#: backend.c:1635 msgid "AnalyzeFile mode requires a game file" msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案" -#: backend.c:1651 +#: backend.c:1662 msgid "Analysis mode requires a chess engine" msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎" -#: backend.c:1655 +#: backend.c:1666 msgid "Analysis mode does not work with ICS mode" msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作" -#: backend.c:1666 +#: backend.c:1677 msgid "MachineWhite mode requires a chess engine" msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎" -#: backend.c:1671 +#: backend.c:1682 msgid "MachineWhite mode does not work with ICS mode" msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行" -#: backend.c:1678 +#: backend.c:1689 msgid "MachineBlack mode requires a chess engine" msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎" -#: backend.c:1683 +#: backend.c:1694 msgid "MachineBlack mode does not work with ICS mode" msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行" -#: backend.c:1690 +#: backend.c:1701 msgid "TwoMachines mode requires a chess engine" msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎" -#: backend.c:1695 +#: backend.c:1706 msgid "TwoMachines mode does not work with ICS mode" msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行" -#: backend.c:1706 +#: backend.c:1717 msgid "Training mode requires a game file" msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案" -#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346 +#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357 msgid "Error writing to ICS" msgstr "發送訊息給ICS時出錯" -#: backend.c:1884 +#: backend.c:1895 msgid "Error reading from keyboard" msgstr "讀取鍵盤時出錯" -#: backend.c:1887 +#: backend.c:1898 msgid "Got end of file from keyboard" msgstr "讀取鍵盤時遇到檔案尾" -#: backend.c:2192 +#: backend.c:2203 #, c-format msgid "Unknown wild type %d" msgstr "" -#: backend.c:2263 usystem.c:329 +#: backend.c:2274 usystem.c:329 msgid "Error writing to display" msgstr "發送訊息給顯示器時出錯" -#: backend.c:3019 +#: backend.c:3030 #, c-format msgid "your opponent kibitzes: %s" msgstr "" -#: backend.c:3548 +#: backend.c:3559 msgid "Error gathering move list: two headers" msgstr "讀取著法時出錯,出現兩個開頭" -#: backend.c:3595 +#: backend.c:3606 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:12082 backend.c:13797 backend.c:13874 -#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936 +#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895 +#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005 +#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067 msgid "vs." msgstr "" -#: backend.c:3827 +#: backend.c:3838 msgid "Illegal move (rejected by ICS)" msgstr "" -#: backend.c:4165 +#: backend.c:4176 msgid "Connection closed by ICS" msgstr "連接被ICS關閉" -#: backend.c:4167 +#: backend.c:4178 msgid "Error reading from ICS" msgstr "讀取ICS訊息時出錯" -#: backend.c:4244 +#: backend.c:4255 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" -#: backend.c:4253 backend.c:9755 +#: backend.c:4264 backend.c:9885 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯" -#: backend.c:4372 +#: backend.c:4383 msgid "Error gathering move list: extra board" msgstr "讀取著法時出錯,超出棋盤" -#: backend.c:4804 backend.c:4826 +#: backend.c:4815 backend.c:4837 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "無法解析從ICS讀到的著法\"%s\"" -#: backend.c:5063 +#: backend.c:5074 #, 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:5145 msgid "You cannot do this while you are playing or observing" msgstr "" -#: backend.c:6029 +#: backend.c:6046 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" -#: backend.c:6491 +#: backend.c:6510 msgid "You are playing Black" msgstr "你在執黑" -#: backend.c:6500 backend.c:6527 +#: backend.c:6519 backend.c:6546 msgid "You are playing White" msgstr "你在執紅" -#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696 -#: backend.c:14573 +#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715 +#: backend.c:14705 msgid "It is White's turn" msgstr "輪到紅方走棋" -#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717 -#: backend.c:14565 +#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736 +#: backend.c:14697 msgid "It is Black's turn" msgstr "輪到黑方走棋" -#: backend.c:6552 +#: backend.c:6571 msgid "Displayed position is not current" msgstr "顯示的盤面不是當前盤面" -#: backend.c:6790 +#: backend.c:6809 msgid "Illegal move" msgstr "著法錯誤" -#: backend.c:6857 +#: backend.c:6876 msgid "End of game" msgstr "棋局結束" -#: backend.c:6860 +#: backend.c:6879 msgid "Incorrect move" msgstr "著法錯誤" -#: backend.c:7169 backend.c:7296 +#: backend.c:7257 backend.c:7392 msgid "Pull pawn backwards to under-promote" msgstr "" -#: backend.c:7527 +#: backend.c:7364 +msgid "only marked squares are legal" +msgstr "" + +#: backend.c:7624 msgid "Swiss tourney finished" msgstr "" -#: backend.c:8102 +#: backend.c:8199 msgid "Invalid pairing from pairing engine" msgstr "" -#: backend.c:8235 +#: backend.c:8332 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "從%s機器讀到不合法著法\"%s\"" -#: backend.c:8456 +#: backend.c:8564 msgid "Bad FEN received from engine" msgstr "" -#: backend.c:8600 backend.c:13662 backend.c:13727 +#: backend.c:8730 backend.c:13793 backend.c:13858 #, c-format msgid "%s does not support analysis" msgstr "%s 不支持分析功能" -#: backend.c:8666 +#: backend.c:8796 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)" -#: backend.c:8693 +#: backend.c:8823 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n" -#: backend.c:8714 +#: backend.c:8844 #, c-format msgid "Hint: %s" msgstr "提示 %s" -#: backend.c:8719 +#: backend.c:8849 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" -#: backend.c:8894 +#: backend.c:9024 msgid "Machine accepts your draw offer" msgstr "電腦同意和棋" -#: backend.c:8897 +#: backend.c:9027 msgid "" "Machine offers a draw\n" "Select Action / Draw to agree" msgstr "" -#: backend.c:8976 +#: backend.c:9106 msgid "failed writing PV" msgstr "" -#: backend.c:9274 +#: backend.c:9404 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" -#: backend.c:9284 +#: backend.c:9414 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" -#: backend.c:9295 +#: backend.c:9425 msgid "Gap in move list" msgstr "著法斷開" -#: backend.c:9916 dialogs.c:460 +#: backend.c:10046 dialogs.c:461 #, c-format msgid "Variant %s not supported by %s" msgstr "變體 %s 不被 %s 所支持" -#: backend.c:10037 +#: backend.c:10167 #, c-format msgid "Startup failure on '%s'" msgstr "無法啟動'%s'" -#: backend.c:10068 +#: backend.c:10198 msgid "Waiting for first chess program" msgstr "等待第一個國際象棋程式" -#: backend.c:10073 backend.c:13945 +#: backend.c:10203 backend.c:14076 msgid "Waiting for second chess program" msgstr "等待第二個國際象棋程式" -#: backend.c:10122 +#: backend.c:10252 msgid "Could not write on tourney file" msgstr "" -#: backend.c:10196 +#: backend.c:10326 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" -#: backend.c:10210 +#: backend.c:10340 msgid "No engine with the name you gave is installed" msgstr "" -#: backend.c:10212 +#: backend.c:10342 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" -#: backend.c:10213 +#: backend.c:10343 msgid "You can only change one engine at the time" msgstr "" -#: backend.c:10228 backend.c:10375 +#: backend.c:10358 backend.c:10505 #, c-format msgid "No engine %s is installed" msgstr "" -#: backend.c:10248 +#: backend.c:10378 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" -#: backend.c:10258 +#: backend.c:10388 msgid "Not enough participants" msgstr "" -#: backend.c:10459 +#: backend.c:10589 msgid "Bad tournament file" msgstr "" -#: backend.c:10471 +#: backend.c:10601 msgid "Waiting for other game(s)" msgstr "" -#: backend.c:10484 +#: backend.c:10614 msgid "No pairing engine specified" msgstr "" -#: backend.c:10961 +#: backend.c:11092 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d" -#: backend.c:11423 backend.c:11454 +#: backend.c:11554 backend.c:11585 #, c-format msgid "Illegal move: %d.%s%s" msgstr "不合法著法 %d.%s%s" -#: backend.c:11443 +#: backend.c:11574 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "不明確的著法 %d.%s%s" -#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059 +#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190 #, c-format msgid "Can't open \"%s\"" msgstr "無法打開\"%s\"" -#: backend.c:11508 menus.c:116 +#: backend.c:11639 menus.c:116 msgid "Cannot build game list" msgstr "無法建立棋局列表" -#: backend.c:11593 +#: backend.c:11724 msgid "No more games in this message" msgstr "這條訊息不包含更多的棋局" -#: backend.c:11633 +#: backend.c:11764 msgid "No game has been loaded yet" msgstr "尚未有棋局載入" -#: backend.c:11637 backend.c:12486 ngamelist.c:129 +#: backend.c:11768 backend.c:12617 ngamelist.c:129 msgid "Can't back up any further" msgstr "無法再後退了" -#: backend.c:12058 +#: backend.c:12189 msgid "Game number out of range" msgstr "棋局數量超出範圍" -#: backend.c:12069 +#: backend.c:12200 msgid "Can't seek on game file" msgstr "無法搜尋棋局檔案" -#: backend.c:12127 +#: backend.c:12258 msgid "Game not found in file" msgstr "檔案中沒有找到棋局" -#: backend.c:12255 backend.c:12582 +#: backend.c:12386 backend.c:12713 msgid "Bad FEN position in file" msgstr "檔案中的FEN盤面錯誤" -#: backend.c:12407 +#: backend.c:12538 msgid "No moves in game" msgstr "棋局中沒有著法" -#: backend.c:12482 +#: backend.c:12613 msgid "No position has been loaded yet" msgstr "尚未有盤面載入" -#: backend.c:12543 backend.c:12554 +#: backend.c:12674 backend.c:12685 msgid "Can't seek on position file" msgstr "無法搜尋盤面檔案" -#: backend.c:12561 backend.c:12573 +#: backend.c:12692 backend.c:12704 msgid "Position not found in file" msgstr "檔案中沒有找到盤面" -#: backend.c:12613 +#: backend.c:12744 msgid "Black to play" msgstr "輪到黑方走棋" -#: backend.c:12616 +#: backend.c:12747 msgid "White to play" msgstr "輪到紅方走棋" -#: backend.c:12703 backend.c:13064 +#: backend.c:12834 backend.c:13195 msgid "Waiting for access to save file" msgstr "" -#: backend.c:12705 +#: backend.c:12836 msgid "Saving game" msgstr "" -#: backend.c:12706 +#: backend.c:12837 msgid "Bad Seek" msgstr "" -#: backend.c:13066 +#: backend.c:13197 msgid "Saving position" msgstr "" -#: backend.c:13192 +#: backend.c:13323 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" -#: backend.c:13197 +#: backend.c:13328 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" -#: backend.c:13202 +#: backend.c:13333 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" -#: backend.c:13249 +#: backend.c:13380 msgid "You have not made a move yet" msgstr "你尚未走棋" -#: backend.c:13270 +#: backend.c:13401 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" -#: backend.c:13275 +#: backend.c:13406 msgid "No unfinished games" msgstr "不存在未完成棋局" -#: backend.c:13281 +#: backend.c:13412 #, c-format msgid "" "You have already mailed a move.\n" @@ -579,210 +583,210 @@ msgid "" "on the command line." msgstr "" -#: backend.c:13296 +#: backend.c:13427 msgid "Failed to invoke cmail" msgstr "呼叫cmail失敗" -#: backend.c:13358 +#: backend.c:13489 #, c-format msgid "Waiting for reply from opponent\n" msgstr "等待對手回應\n" -#: backend.c:13380 +#: backend.c:13511 #, c-format msgid "Still need to make move for game\n" msgstr "本棋局仍需走棋\n" -#: backend.c:13384 +#: backend.c:13515 #, c-format msgid "Still need to make moves for both games\n" msgstr "兩棋局皆仍需走棋\n" -#: backend.c:13388 +#: backend.c:13519 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "所有 %d 棋局皆仍需走棋\n" -#: backend.c:13395 +#: backend.c:13526 #, c-format msgid "Still need to make a move for game %s\n" msgstr "棋局 %s 仍需走棋\n" -#: backend.c:13401 +#: backend.c:13532 #, c-format msgid "No unfinished games\n" msgstr "不存在未完成棋局\n" -#: backend.c:13403 +#: backend.c:13534 #, c-format msgid "Ready to send mail\n" msgstr "準備送信就緒\n" -#: backend.c:13408 +#: backend.c:13539 #, c-format msgid "Still need to make moves for games %s\n" msgstr "棋局 %s 仍需走棋\n" -#: backend.c:13612 +#: backend.c:13743 msgid "Edit comment" msgstr "編輯註解" -#: backend.c:13614 +#: backend.c:13745 #, c-format msgid "Edit comment on %d.%s%s" msgstr "編輯註解 %d.%s%s" -#: backend.c:13669 +#: backend.c:13800 #, c-format msgid "You are not observing a game" msgstr "" -#: backend.c:13777 +#: backend.c:13908 msgid "It is not White's turn" msgstr "沒有輪到紅方走棋" -#: backend.c:13858 +#: backend.c:13989 msgid "It is not Black's turn" msgstr "沒有輪到黑方走棋" -#: backend.c:13966 +#: backend.c:14097 #, c-format msgid "Starting %s chess program" msgstr "" -#: backend.c:13994 backend.c:15108 +#: backend.c:14125 backend.c:15240 msgid "" "Wait until your turn,\n" "or select Move Now" msgstr "" -#: backend.c:14128 +#: backend.c:14259 msgid "Training mode off" msgstr "訓練模式已關閉" -#: backend.c:14136 +#: backend.c:14267 msgid "Training mode on" msgstr "訓練模式已打開" -#: backend.c:14139 +#: backend.c:14270 msgid "Already at end of game" msgstr "棋局已經結束" -#: backend.c:14219 +#: backend.c:14350 msgid "Warning: You are still playing a game" msgstr "注意:你正在進行棋局" -#: backend.c:14222 +#: backend.c:14353 msgid "Warning: You are still observing a game" msgstr "注意:你正在觀棋棋局" -#: backend.c:14225 +#: backend.c:14356 msgid "Warning: You are still examining a game" msgstr "注意:你正在研究棋局" -#: backend.c:14292 +#: backend.c:14423 msgid "Click clock to clear board" msgstr "" -#: backend.c:14302 +#: backend.c:14433 msgid "Close ICS engine analyze..." msgstr "" -#: backend.c:14590 +#: backend.c:14722 msgid "That square is occupied" msgstr "格子已有棋子" -#: backend.c:14614 backend.c:14640 +#: backend.c:14746 backend.c:14772 msgid "There is no pending offer on this move" msgstr "該著法沒有待定的提議" -#: backend.c:14676 backend.c:14687 +#: backend.c:14808 backend.c:14819 msgid "Your opponent is not out of time" msgstr "對手沒有超時" -#: backend.c:14753 +#: backend.c:14885 msgid "You must make your move before offering a draw" msgstr "必須走完棋才能提和" -#: backend.c:15090 +#: backend.c:15222 msgid "You are not examining a game" msgstr "沒有分析棋局" -#: backend.c:15094 +#: backend.c:15226 msgid "You can't revert while pausing" msgstr "暫停時不能復原棋局" -#: backend.c:15148 backend.c:15155 +#: backend.c:15280 backend.c:15287 msgid "It is your turn" msgstr "輪到你走棋" -#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273 +#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405 msgid "Wait until your turn" msgstr "等待對手走棋" -#: backend.c:15218 +#: backend.c:15350 msgid "No hint available" msgstr "沒有可用的提示" -#: backend.c:15234 ngamelist.c:355 +#: backend.c:15366 ngamelist.c:355 #, fuzzy msgid "Game list not loaded or empty" msgstr "尚未有棋局載入" -#: backend.c:15241 +#: backend.c:15373 msgid "Book file exists! Try again for overwrite." msgstr "" -#: backend.c:15719 +#: backend.c:15851 #, c-format msgid "Error writing to %s chess program" msgstr "發送訊息到%s國際象棋程式時出錯" -#: backend.c:15722 backend.c:15753 +#: backend.c:15854 backend.c:15885 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" -#: backend.c:15748 +#: backend.c:15880 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "錯誤:%s國際象棋程式(%s)異常終止" -#: backend.c:15766 +#: backend.c:15898 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "從%s國際象棋程式(%s)接收訊息時出錯" -#: backend.c:16168 +#: backend.c:16301 #, c-format msgid "%s engine has too many options\n" msgstr "" -#: backend.c:16324 +#: backend.c:16457 msgid "Displayed move is not current" msgstr "顯示的著法不是當前著法" -#: backend.c:16333 +#: backend.c:16466 msgid "Could not parse move" msgstr "無法解析著法" -#: backend.c:16458 backend.c:16480 +#: backend.c:16591 backend.c:16613 msgid "Both flags fell" msgstr "雙方都超時了" -#: backend.c:16460 +#: backend.c:16593 msgid "White's flag fell" msgstr "紅方超時" -#: backend.c:16482 +#: backend.c:16615 msgid "Black's flag fell" msgstr "黑方超時" -#: backend.c:16613 +#: backend.c:16746 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" -#: backend.c:17448 +#: backend.c:17585 msgid "Bad FEN position in clipboard" msgstr "剪貼簿的FEN盤面錯誤" @@ -892,7 +896,7 @@ msgstr "" msgid "First you must specify an existing tourney file to clone" msgstr "" -#: dialogs.c:332 dialogs.c:1320 +#: dialogs.c:332 dialogs.c:1322 msgid "# no engines are installed" msgstr "" @@ -960,7 +964,7 @@ msgstr "定期更新(分析模式)" msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" -#: dialogs.c:379 dialogs.c:514 menus.c:728 +#: dialogs.c:379 dialogs.c:515 menus.c:728 msgid "Ponder Next Move" msgstr "同步思考(N)" @@ -1083,7 +1087,7 @@ msgid "Holdings Size:" msgstr "" #: dialogs.c:429 -msgid "fairy" +msgid "ASEAN" msgstr "" #: dialogs.c:430 @@ -1155,995 +1159,999 @@ msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:447 -msgid " " +msgid "fairy" msgstr "" -#: dialogs.c:448 +#: dialogs.c:449 msgid "courier (12x8)" msgstr "" -#: dialogs.c:465 +#: dialogs.c:466 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "警告: 第二個引擎(%s) 不支持此!" -#: dialogs.c:488 +#: dialogs.c:489 #, c-format msgid "Only bughouse is not available in viewer mode" msgstr "" -#: dialogs.c:489 +#: dialogs.c:490 #, c-format msgid "" "All variants not supported by first engine\n" "(currently %s) are disabled" msgstr "" -#: dialogs.c:490 +#: dialogs.c:491 msgid "New Variant" msgstr "變種" -#: dialogs.c:515 +#: dialogs.c:516 msgid "Maximum Number of CPUs per Engine:" msgstr "最大CPU數" -#: dialogs.c:516 +#: dialogs.c:517 msgid "Polygot Directory:" msgstr "" -#: dialogs.c:517 +#: dialogs.c:518 msgid "Hash-Table Size (MB):" msgstr "雜湊表大小(MB)" -#: dialogs.c:518 +#: dialogs.c:519 msgid "Nalimov EGTB Path:" msgstr "EGTB 路徑" -#: dialogs.c:519 +#: dialogs.c:520 msgid "EGTB Cache Size (MB):" msgstr "EGTB 大小(MB)" -#: dialogs.c:520 +#: dialogs.c:521 msgid "Use GUI Book" msgstr "" -#: dialogs.c:521 +#: dialogs.c:522 msgid "Opening-Book Filename:" msgstr "" -#: dialogs.c:522 +#: dialogs.c:523 msgid "Book Depth (moves):" msgstr "庫著法深度" -#: dialogs.c:523 +#: dialogs.c:524 msgid "Book Variety (0) vs. Strength (100):" msgstr "庫變例" -#: dialogs.c:524 +#: dialogs.c:525 msgid "Engine #1 Has Own Book" msgstr "引擎1有自用庫" -#: dialogs.c:525 +#: dialogs.c:526 msgid "Engine #2 Has Own Book " msgstr "" -#: dialogs.c:534 +#: dialogs.c:535 msgid "Common Engine Settings" msgstr "通用引擎設定" -#: dialogs.c:540 +#: dialogs.c:541 msgid "Detect all Mates" msgstr "檢測將殺(M)" -#: dialogs.c:541 +#: dialogs.c:542 msgid "Verify Engine Result Claims" msgstr "驗證引擎聲明(V)" -#: dialogs.c:542 +#: dialogs.c:543 msgid "Draw if Insufficient Mating Material" msgstr "子力不足時判和(I)" -#: dialogs.c:543 +#: dialogs.c:544 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "簡易和棋判決(T)" -#: dialogs.c:544 +#: dialogs.c:545 msgid "N-Move Rule:" msgstr "" -#: dialogs.c:545 +#: dialogs.c:546 msgid "N-fold Repeats:" msgstr "" -#: dialogs.c:546 +#: dialogs.c:547 msgid "Draw after N Moves Total:" msgstr "幾著後判和" -#: dialogs.c:547 +#: dialogs.c:548 msgid "Win / Loss Threshold:" msgstr "輸/贏判決門檻" -#: dialogs.c:548 +#: dialogs.c:549 msgid "Negate Score of Engine #1" msgstr "引擎 #1 是絕對分數" -#: dialogs.c:549 +#: dialogs.c:550 msgid "Negate Score of Engine #2" msgstr "引擎 #2 是絕對分數" -#: dialogs.c:556 +#: dialogs.c:557 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "裁決紅贏 (W)" -#: dialogs.c:569 +#: dialogs.c:570 msgid "Auto-Kibitz" msgstr "自動\"kibitz\"(A)" -#: dialogs.c:570 +#: dialogs.c:571 msgid "Auto-Comment" msgstr "自動註解(A)" -#: dialogs.c:571 +#: dialogs.c:572 msgid "Auto-Observe" msgstr "自動觀棋(O)" -#: dialogs.c:572 +#: dialogs.c:573 msgid "Auto-Raise Board" msgstr "自動改變棋盤大小(R)" -#: dialogs.c:573 +#: dialogs.c:574 msgid "Auto-Create Logon Script" msgstr "" -#: dialogs.c:574 +#: dialogs.c:575 msgid "Background Observe while Playing" msgstr "背景觀察(v)" -#: dialogs.c:575 +#: dialogs.c:576 msgid "Dual Board for Background-Observed Game" msgstr "雙棋盤(D)" -#: dialogs.c:576 +#: dialogs.c:577 msgid "Get Move List" msgstr "取得著法列表(G)" -#: dialogs.c:577 +#: dialogs.c:578 msgid "Quiet Play" msgstr "落子無聲(Q)" -#: dialogs.c:578 +#: dialogs.c:579 msgid "Seek Graph" msgstr "可選對手圖表(k)" -#: dialogs.c:579 +#: dialogs.c:580 msgid "Auto-Refresh Seek Graph" msgstr "自動刷新圖表(R)" -#: dialogs.c:580 +#: dialogs.c:581 msgid "Auto-InputBox PopUp" msgstr "" -#: dialogs.c:581 +#: dialogs.c:582 +msgid "Quit after game" +msgstr "" + +#: dialogs.c:583 msgid "Premove" msgstr "預先走棋(P)" -#: dialogs.c:582 +#: dialogs.c:584 msgid "Premove for White" msgstr "" -#: dialogs.c:583 +#: dialogs.c:585 msgid "First White Move:" msgstr "紅方先走(W)" -#: dialogs.c:584 +#: dialogs.c:586 msgid "Premove for Black" msgstr "" -#: dialogs.c:585 +#: dialogs.c:587 msgid "First Black Move:" msgstr "黑方先走(B)" -#: dialogs.c:587 +#: dialogs.c:589 msgid "Alarm" msgstr "提示" -#: dialogs.c:588 +#: dialogs.c:590 msgid "Alarm Time (msec):" msgstr "" -#: dialogs.c:590 +#: dialogs.c:592 msgid "Colorize Messages" msgstr "" -#: dialogs.c:591 +#: dialogs.c:593 msgid "Shout Text Colors:" msgstr "" -#: dialogs.c:592 +#: dialogs.c:594 msgid "S-Shout Text Colors:" msgstr "" -#: dialogs.c:593 +#: dialogs.c:595 msgid "Channel #1 Text Colors:" msgstr "" -#: dialogs.c:594 +#: dialogs.c:596 msgid "Other Channel Text Colors:" msgstr "" -#: dialogs.c:595 +#: dialogs.c:597 msgid "Kibitz Text Colors:" msgstr "" -#: dialogs.c:596 +#: dialogs.c:598 msgid "Tell Text Colors:" msgstr "" -#: dialogs.c:597 +#: dialogs.c:599 msgid "Challenge Text Colors:" msgstr "" -#: dialogs.c:598 +#: dialogs.c:600 msgid "Request Text Colors:" msgstr "" -#: dialogs.c:599 +#: dialogs.c:601 msgid "Seek Text Colors:" msgstr "" -#: dialogs.c:606 +#: dialogs.c:608 msgid "ICS Options" msgstr "ICS設定" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Exact position match" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Shown position is subset" msgstr "" -#: dialogs.c:611 +#: dialogs.c:613 msgid "Same material with exactly same Pawn chain" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Same material" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material range (top board half optional)" msgstr "" -#: dialogs.c:612 +#: dialogs.c:614 msgid "Material difference (optional stuff balanced)" msgstr "" -#: dialogs.c:624 +#: dialogs.c:626 msgid "Auto-Display Tags" msgstr "" -#: dialogs.c:625 +#: dialogs.c:627 msgid "Auto-Display Comment" msgstr "" -#: dialogs.c:626 +#: dialogs.c:628 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" -#: dialogs.c:627 +#: dialogs.c:629 msgid "Seconds per Move:" msgstr "" -#: dialogs.c:628 +#: dialogs.c:630 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" -#: dialogs.c:630 +#: dialogs.c:632 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" -#: dialogs.c:631 +#: dialogs.c:633 msgid "Elo of strongest player at least:" msgstr "" -#: dialogs.c:632 +#: dialogs.c:634 msgid "Elo of weakest player at least:" msgstr "" -#: dialogs.c:633 +#: dialogs.c:635 #, fuzzy msgid "No games before year:" msgstr "尚未有棋局載入" -#: dialogs.c:634 +#: dialogs.c:636 msgid "Minimum nr consecutive positions:" msgstr "" -#: dialogs.c:635 +#: dialogs.c:637 msgid "Search mode:" msgstr "" -#: dialogs.c:636 +#: dialogs.c:638 msgid "Also match reversed colors" msgstr "" -#: dialogs.c:637 +#: dialogs.c:639 msgid "Also match left-right flipped position" msgstr "" -#: dialogs.c:645 +#: dialogs.c:647 msgid "Load Game Options" msgstr "載入棋局選項" -#: dialogs.c:657 +#: dialogs.c:659 msgid "Auto-Save Games" msgstr "" -#: dialogs.c:658 +#: dialogs.c:660 msgid "Own Games Only" msgstr "" -#: dialogs.c:659 +#: dialogs.c:661 msgid "Save Games on File:" msgstr "" -#: dialogs.c:660 +#: dialogs.c:662 msgid "Save Final Positions on File:" msgstr "" -#: dialogs.c:661 +#: dialogs.c:663 msgid "PGN Event Header:" msgstr "" -#: dialogs.c:662 +#: dialogs.c:664 msgid "Old Save Style (as opposed to PGN)" msgstr "" -#: dialogs.c:663 +#: dialogs.c:665 msgid "Include Number Tag in tourney PGN" msgstr "" -#: dialogs.c:664 +#: dialogs.c:666 msgid "Save Score/Depth Info in PGN" msgstr "" -#: dialogs.c:665 +#: dialogs.c:667 msgid "Save Out-of-Book Info in PGN " msgstr "" -#: dialogs.c:672 +#: dialogs.c:674 msgid "Save Game Options" msgstr "儲存棋局選項" -#: dialogs.c:681 +#: dialogs.c:683 msgid "No Sound" msgstr "無聲" -#: dialogs.c:682 +#: dialogs.c:684 msgid "Default Beep" msgstr "預設聲音" -#: dialogs.c:683 +#: dialogs.c:685 msgid "Above WAV File" msgstr "" -#: dialogs.c:684 +#: dialogs.c:686 msgid "Car Horn" msgstr "" -#: dialogs.c:685 +#: dialogs.c:687 msgid "Cymbal" msgstr "" -#: dialogs.c:686 +#: dialogs.c:688 msgid "Ding" msgstr "" -#: dialogs.c:687 +#: dialogs.c:689 msgid "Gong" msgstr "" -#: dialogs.c:688 +#: dialogs.c:690 msgid "Laser" msgstr "" -#: dialogs.c:689 +#: dialogs.c:691 msgid "Penalty" msgstr "" -#: dialogs.c:690 +#: dialogs.c:692 msgid "Phone" msgstr "" -#: dialogs.c:691 +#: dialogs.c:693 msgid "Pop" msgstr "" -#: dialogs.c:692 +#: dialogs.c:694 msgid "Slap" msgstr "" -#: dialogs.c:693 +#: dialogs.c:695 msgid "Wood Thunk" msgstr "" -#: dialogs.c:695 +#: dialogs.c:697 msgid "User File" msgstr "" -#: dialogs.c:717 +#: dialogs.c:719 msgid "User WAV File:" msgstr "" -#: dialogs.c:718 +#: dialogs.c:720 msgid "Sound Program:" msgstr "" -#: dialogs.c:719 +#: dialogs.c:721 msgid "Try-Out Sound:" msgstr "" -#: dialogs.c:720 +#: dialogs.c:722 msgid "Play" msgstr "播放" -#: dialogs.c:721 +#: dialogs.c:723 msgid "Move:" msgstr "" -#: dialogs.c:722 +#: dialogs.c:724 msgid "Win:" msgstr "" -#: dialogs.c:723 +#: dialogs.c:725 msgid "Lose:" msgstr "" -#: dialogs.c:724 +#: dialogs.c:726 msgid "Draw:" msgstr "" -#: dialogs.c:725 +#: dialogs.c:727 msgid "Unfinished:" msgstr "" -#: dialogs.c:726 +#: dialogs.c:728 msgid "Alarm:" msgstr "" -#: dialogs.c:727 +#: dialogs.c:729 msgid "Challenge:" msgstr "" -#: dialogs.c:729 +#: dialogs.c:731 msgid "Sounds Directory:" msgstr "" -#: dialogs.c:730 +#: dialogs.c:732 msgid "Shout:" msgstr "" -#: dialogs.c:731 +#: dialogs.c:733 msgid "S-Shout:" msgstr "" -#: dialogs.c:732 +#: dialogs.c:734 msgid "Channel:" msgstr "" -#: dialogs.c:733 +#: dialogs.c:735 msgid "Channel 1:" msgstr "" -#: dialogs.c:734 +#: dialogs.c:736 msgid "Tell:" msgstr "" -#: dialogs.c:735 +#: dialogs.c:737 msgid "Kibitz:" msgstr "" -#: dialogs.c:736 +#: dialogs.c:738 msgid "Request:" msgstr "" -#: dialogs.c:737 +#: dialogs.c:739 msgid "Seek:" msgstr "" -#: dialogs.c:753 +#: dialogs.c:755 msgid "Sound Options" msgstr "聲音" -#: dialogs.c:774 +#: dialogs.c:776 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:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806 +#: dialogs.c:812 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:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807 +#: dialogs.c:813 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:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808 +#: dialogs.c:814 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:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809 +#: dialogs.c:815 msgid "D" msgstr "" -#: dialogs.c:784 +#: dialogs.c:786 msgid "Black Piece Color:" msgstr "黑子" -#: dialogs.c:790 +#: dialogs.c:792 msgid "Light Square Color:" msgstr "白格" -#: dialogs.c:796 +#: dialogs.c:798 msgid "Dark Square Color:" msgstr "黑格" -#: dialogs.c:802 +#: dialogs.c:804 msgid "Highlight Color:" msgstr "格子標記" -#: dialogs.c:808 +#: dialogs.c:810 msgid "Premove Highlight Color:" msgstr "預先走棋標記" -#: dialogs.c:814 +#: dialogs.c:816 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" -#: dialogs.c:816 +#: dialogs.c:818 msgid "Mono Mode" msgstr "黑白" -#: dialogs.c:817 +#: dialogs.c:819 msgid "Line Gap ( -1 = default for board size):" msgstr "" -#: dialogs.c:818 +#: dialogs.c:820 msgid "Use Board Textures" msgstr "" -#: dialogs.c:819 +#: dialogs.c:821 msgid "Light-Squares Texture File:" msgstr "" -#: dialogs.c:820 +#: dialogs.c:822 msgid "Dark-Squares Texture File:" msgstr "" -#: dialogs.c:821 +#: dialogs.c:823 msgid "Use external piece bitmaps with their own colors" msgstr "" -#: dialogs.c:822 +#: dialogs.c:824 msgid "Directory with Pieces Images:" msgstr "" -#: dialogs.c:872 +#: dialogs.c:874 msgid "Board Options" msgstr "棋盤選項" -#: dialogs.c:925 menus.c:634 +#: dialogs.c:927 menus.c:634 msgid "ICS text menu" msgstr "" -#: dialogs.c:947 +#: dialogs.c:949 msgid "clear" msgstr "" -#: dialogs.c:948 dialogs.c:1036 +#: dialogs.c:950 dialogs.c:1038 msgid "save changes" msgstr "" -#: dialogs.c:1051 +#: dialogs.c:1053 #, fuzzy msgid "Edit book" msgstr "編輯(E)" -#: dialogs.c:1051 menus.c:636 +#: dialogs.c:1053 menus.c:636 msgid "Tags" msgstr "編輯標籤(T)" -#: dialogs.c:1193 +#: dialogs.c:1195 msgid "ICS input box" msgstr "" -#: dialogs.c:1225 +#: dialogs.c:1227 msgid "Type a move" msgstr "" -#: dialogs.c:1251 +#: dialogs.c:1253 msgid "Engine has no options" msgstr "" -#: dialogs.c:1253 +#: dialogs.c:1255 msgid "Engine Settings" msgstr "" -#: dialogs.c:1278 +#: dialogs.c:1280 msgid "Select engine from list:" msgstr "" -#: dialogs.c:1281 +#: dialogs.c:1283 msgid "or specify one below:" msgstr "" -#: dialogs.c:1282 +#: dialogs.c:1284 msgid "Nickname (optional):" msgstr "" -#: dialogs.c:1283 +#: dialogs.c:1285 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" -#: dialogs.c:1284 +#: dialogs.c:1286 msgid "Engine Directory:" msgstr "" -#: dialogs.c:1285 +#: dialogs.c:1287 msgid "Engine Command:" msgstr "" -#: dialogs.c:1286 +#: dialogs.c:1288 msgid "(Directory will be derived from engine path when empty)" msgstr "" -#: dialogs.c:1287 +#: dialogs.c:1289 msgid "UCI" msgstr "" -#: dialogs.c:1288 +#: dialogs.c:1290 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" -#: dialogs.c:1289 +#: dialogs.c:1291 msgid "Must not use GUI book" msgstr "" -#: dialogs.c:1290 +#: dialogs.c:1292 msgid "Add this engine to the list" msgstr "" -#: dialogs.c:1291 +#: dialogs.c:1293 msgid "Force current variant with this engine" msgstr "" -#: dialogs.c:1341 +#: dialogs.c:1343 msgid "Load first engine" msgstr "" -#: dialogs.c:1347 +#: dialogs.c:1349 msgid "Load second engine" msgstr "" -#: dialogs.c:1370 +#: dialogs.c:1372 msgid "shuffle" msgstr "" -#: dialogs.c:1371 +#: dialogs.c:1373 msgid "Start-position number:" msgstr "啟動位置號碼(S)" -#: dialogs.c:1372 +#: dialogs.c:1374 #, fuzzy msgid "randomize" msgstr "隨機" -#: dialogs.c:1373 +#: dialogs.c:1375 msgid "pick fixed" msgstr "" -#: dialogs.c:1390 +#: dialogs.c:1392 msgid "New Shuffle Game" msgstr "洗牌遊戲(u)..." -#: dialogs.c:1409 +#: dialogs.c:1411 msgid "classical" msgstr "" -#: dialogs.c:1410 +#: dialogs.c:1412 msgid "incremental" msgstr "" -#: dialogs.c:1411 +#: dialogs.c:1413 msgid "fixed max" msgstr "" -#: dialogs.c:1412 +#: dialogs.c:1414 msgid "Moves per session:" msgstr "" -#: dialogs.c:1413 +#: dialogs.c:1415 msgid "Initial time (min):" msgstr "" -#: dialogs.c:1414 +#: dialogs.c:1416 msgid "Increment or max (sec/move):" msgstr "" -#: dialogs.c:1415 +#: dialogs.c:1417 #, fuzzy msgid "Time-Odds factors:" msgstr "時間倍數" -#: dialogs.c:1416 +#: dialogs.c:1418 #, fuzzy msgid "Engine #1" msgstr "引擎輸出" -#: dialogs.c:1417 +#: dialogs.c:1419 #, fuzzy msgid "Engine #2 / Human" msgstr "引擎1有自用庫" -#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466 +#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468 #: gtk/xoptions.c:191 msgid "Unused" msgstr "" -#: dialogs.c:1478 +#: dialogs.c:1480 msgid "Time Control" msgstr "" -#: dialogs.c:1507 +#: dialogs.c:1509 msgid "Error writing to chess program" msgstr "發送訊息給國際象棋程式時出錯" -#: dialogs.c:1574 +#: dialogs.c:1576 #, fuzzy msgid "Cancel" msgstr "取消(C)" -#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977 msgid "King" msgstr "王" -#: dialogs.c:1582 +#: dialogs.c:1584 msgid "Captain" msgstr "" -#: dialogs.c:1583 +#: dialogs.c:1585 msgid "Lieutenant" msgstr "" -#: dialogs.c:1584 +#: dialogs.c:1586 msgid "General" msgstr "一般選項(G)..." -#: dialogs.c:1585 +#: dialogs.c:1587 msgid "Warlord" msgstr "" -#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Knight" msgstr "馬" -#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Bishop" msgstr "象" -#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Rook" msgstr "車" -#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978 msgid "Archbishop" msgstr "國師" -#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978 msgid "Chancellor" msgstr "宰相" -#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993 +#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995 msgid "Queen" msgstr "后" -#: dialogs.c:1600 +#: dialogs.c:1602 msgid "Defer" msgstr "" -#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978 msgid "Promote" msgstr "升變" -#: dialogs.c:1616 +#: dialogs.c:1618 msgid "Chat partner:" msgstr "" -#: dialogs.c:1701 +#: dialogs.c:1703 msgid "Chat box" msgstr "" -#: dialogs.c:1742 +#: dialogs.c:1744 msgid "factory" msgstr "" -#: dialogs.c:1743 +#: dialogs.c:1745 msgid "up" msgstr "向上" -#: dialogs.c:1744 +#: dialogs.c:1746 msgid "down" msgstr "向下" -#: dialogs.c:1762 +#: dialogs.c:1764 msgid "No tag selected" msgstr "" -#: dialogs.c:1793 +#: dialogs.c:1795 #, fuzzy msgid "Game-list options" msgstr "載入棋局選項" -#: dialogs.c:1869 dialogs.c:1883 +#: dialogs.c:1871 dialogs.c:1885 msgid "Error" msgstr "錯誤" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Fatal Error" msgstr "嚴重錯誤" -#: dialogs.c:1906 +#: dialogs.c:1908 msgid "Exiting" msgstr "離開" -#: dialogs.c:1917 +#: dialogs.c:1919 msgid "Information" msgstr "資訊" -#: dialogs.c:1924 +#: dialogs.c:1926 msgid "Note" msgstr "註解" -#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248 +#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255 msgid "White" msgstr "紅方" -#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993 +#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995 msgid "Pawn" msgstr "兵" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Elephant" msgstr "象" -#: dialogs.c:1971 dialogs.c:1975 +#: dialogs.c:1973 dialogs.c:1977 msgid "Cannon" msgstr "炮" -#: dialogs.c:1972 dialogs.c:1976 +#: dialogs.c:1974 dialogs.c:1978 msgid "Demote" msgstr "降級" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Empty square" msgstr "清空格子" -#: dialogs.c:1973 dialogs.c:1977 +#: dialogs.c:1975 dialogs.c:1979 msgid "Clear board" msgstr "清空棋盤" -#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260 +#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267 msgid "Black" msgstr "黑方" -#: dialogs.c:2073 menus.c:787 +#: dialogs.c:2075 menus.c:787 msgid "File" msgstr "檔案(F)" -#: dialogs.c:2074 menus.c:788 +#: dialogs.c:2076 menus.c:788 msgid "Edit" msgstr "編輯(E)" -#: dialogs.c:2075 menus.c:789 +#: dialogs.c:2077 menus.c:789 msgid "View" msgstr "" -#: dialogs.c:2076 menus.c:790 +#: dialogs.c:2078 menus.c:790 msgid "Mode" msgstr "模式(M)" -#: dialogs.c:2077 menus.c:791 +#: dialogs.c:2079 menus.c:791 msgid "Action" msgstr "行為(A)" -#: dialogs.c:2078 menus.c:792 +#: dialogs.c:2080 menus.c:792 msgid "Engine" msgstr "" -#: dialogs.c:2079 menus.c:793 +#: dialogs.c:2081 menus.c:793 msgid "Options" msgstr "選項(O)" -#: dialogs.c:2080 menus.c:794 +#: dialogs.c:2082 menus.c:794 msgid "Help" msgstr "說明(H)" -#: dialogs.c:2090 +#: dialogs.c:2092 msgid "<<" msgstr "" -#: dialogs.c:2091 +#: dialogs.c:2093 msgid "<" msgstr "" -#: dialogs.c:2093 +#: dialogs.c:2095 msgid ">" msgstr "" -#: dialogs.c:2094 +#: dialogs.c:2096 msgid ">>" msgstr "" -#: dialogs.c:2364 +#: dialogs.c:2371 msgid "Directories:" msgstr "" -#: dialogs.c:2365 +#: dialogs.c:2372 #, fuzzy msgid "Files:" msgstr "檔案(F)" -#: dialogs.c:2366 +#: dialogs.c:2373 msgid "by name" msgstr "" -#: dialogs.c:2367 +#: dialogs.c:2374 msgid "by type" msgstr "" -#: dialogs.c:2370 +#: dialogs.c:2377 #, fuzzy msgid "Filename:" msgstr "過濾器" -#: dialogs.c:2371 +#: dialogs.c:2378 msgid "New directory" msgstr "" -#: dialogs.c:2372 +#: dialogs.c:2379 #, fuzzy msgid "File type:" msgstr "過濾器" -#: dialogs.c:2447 +#: dialogs.c:2454 #, fuzzy msgid "Contents of" msgstr "編輯註解(C) *.*" -#: dialogs.c:2473 +#: dialogs.c:2480 msgid " next page" msgstr "" -#: dialogs.c:2495 +#: dialogs.c:2502 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2496 +#: dialogs.c:2503 msgid "TRY ANOTHER NAME" msgstr "" diff --git a/sounds/roar.wav b/sounds/roar.wav new file mode 100644 index 0000000..16b0af7 Binary files /dev/null and b/sounds/roar.wav differ diff --git a/svg/BlackClaw.svg b/svg/BlackClaw.svg new file mode 100644 index 0000000..1dcffea --- /dev/null +++ b/svg/BlackClaw.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/svg/BlackDolphin.svg b/svg/BlackDolphin.svg new file mode 100644 index 0000000..b24af4a --- /dev/null +++ b/svg/BlackDolphin.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/svg/BlackHCrown.svg b/svg/BlackHCrown.svg new file mode 100644 index 0000000..6c28d67 --- /dev/null +++ b/svg/BlackHCrown.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/BlackHSword.svg b/svg/BlackHSword.svg new file mode 100644 index 0000000..abb38d1 --- /dev/null +++ b/svg/BlackHSword.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/svg/BlackLeopard.svg b/svg/BlackLeopard.svg new file mode 100644 index 0000000..91bb34e --- /dev/null +++ b/svg/BlackLeopard.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/BlackLion.svg b/svg/BlackLion.svg new file mode 100644 index 0000000..1ed2cd8 --- /dev/null +++ b/svg/BlackLion.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/BlackPromoBishop.svg b/svg/BlackPromoBishop.svg new file mode 100644 index 0000000..df5dc67 --- /dev/null +++ b/svg/BlackPromoBishop.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/svg/BlackPromoDragon.svg b/svg/BlackPromoDragon.svg new file mode 100644 index 0000000..e483ebd --- /dev/null +++ b/svg/BlackPromoDragon.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/svg/BlackPromoHSword.svg b/svg/BlackPromoHSword.svg new file mode 100644 index 0000000..a506ead --- /dev/null +++ b/svg/BlackPromoHSword.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/svg/BlackPromoHorse.svg b/svg/BlackPromoHorse.svg new file mode 100644 index 0000000..9ddda1d --- /dev/null +++ b/svg/BlackPromoHorse.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/svg/BlackPromoRook.svg b/svg/BlackPromoRook.svg new file mode 100644 index 0000000..03a5919 --- /dev/null +++ b/svg/BlackPromoRook.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/svg/BlackPromoSword.svg b/svg/BlackPromoSword.svg new file mode 100644 index 0000000..f5a9e94 --- /dev/null +++ b/svg/BlackPromoSword.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/svg/BlackSword.svg b/svg/BlackSword.svg new file mode 100644 index 0000000..71887a1 --- /dev/null +++ b/svg/BlackSword.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/svg/WhiteClaw.svg b/svg/WhiteClaw.svg new file mode 100644 index 0000000..99c4a68 --- /dev/null +++ b/svg/WhiteClaw.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/svg/WhiteDolphin.svg b/svg/WhiteDolphin.svg new file mode 100644 index 0000000..c01d573 --- /dev/null +++ b/svg/WhiteDolphin.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/svg/WhiteHCrown.svg b/svg/WhiteHCrown.svg new file mode 100644 index 0000000..07bc6c9 --- /dev/null +++ b/svg/WhiteHCrown.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/WhiteHSword.svg b/svg/WhiteHSword.svg new file mode 100644 index 0000000..90df377 --- /dev/null +++ b/svg/WhiteHSword.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/svg/WhiteLeopard.svg b/svg/WhiteLeopard.svg new file mode 100644 index 0000000..62e318c --- /dev/null +++ b/svg/WhiteLeopard.svg @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/WhiteLion.svg b/svg/WhiteLion.svg new file mode 100644 index 0000000..e5af5af --- /dev/null +++ b/svg/WhiteLion.svg @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/WhitePromoBishop.svg b/svg/WhitePromoBishop.svg new file mode 100644 index 0000000..ab93a93 --- /dev/null +++ b/svg/WhitePromoBishop.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/svg/WhitePromoDragon.svg b/svg/WhitePromoDragon.svg new file mode 100644 index 0000000..f2e21ad --- /dev/null +++ b/svg/WhitePromoDragon.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/svg/WhitePromoHSword.svg b/svg/WhitePromoHSword.svg new file mode 100644 index 0000000..09fe10a --- /dev/null +++ b/svg/WhitePromoHSword.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/svg/WhitePromoHorse.svg b/svg/WhitePromoHorse.svg new file mode 100644 index 0000000..d678fe9 --- /dev/null +++ b/svg/WhitePromoHorse.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/svg/WhitePromoRook.svg b/svg/WhitePromoRook.svg new file mode 100644 index 0000000..e75c0b3 --- /dev/null +++ b/svg/WhitePromoRook.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/svg/WhitePromoSword.svg b/svg/WhitePromoSword.svg new file mode 100644 index 0000000..cefeb40 --- /dev/null +++ b/svg/WhitePromoSword.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/svg/WhiteSword.svg b/svg/WhiteSword.svg new file mode 100644 index 0000000..cdcc108 --- /dev/null +++ b/svg/WhiteSword.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/usounds.c b/usounds.c index 5fe4338..eb006b1 100644 --- a/usounds.c +++ b/usounds.c @@ -76,21 +76,22 @@ extern char *getenv(); #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 @@ -135,6 +136,12 @@ PlayTellSound () PlaySoundFile(appData.soundTell); } +int +Roar () +{ + return PlaySoundFile(appData.soundRoar); +} + void PlaySoundForColor (ColorClass cc) { diff --git a/usystem.c b/usystem.c index af83b60..2334572 100644 --- a/usystem.c +++ b/usystem.c @@ -227,7 +227,7 @@ static int 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; } @@ -358,6 +358,9 @@ ExpandPathName (char *path) } 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); diff --git a/winboard/bitmaps/ln33o.bmp b/winboard/bitmaps/ln33o.bmp new file mode 100644 index 0000000..1e369b2 Binary files /dev/null and b/winboard/bitmaps/ln33o.bmp differ diff --git a/winboard/bitmaps/ln33s.bmp b/winboard/bitmaps/ln33s.bmp new file mode 100644 index 0000000..4f4b4fe Binary files /dev/null and b/winboard/bitmaps/ln33s.bmp differ diff --git a/winboard/bitmaps/ln33w.bmp b/winboard/bitmaps/ln33w.bmp new file mode 100644 index 0000000..8498503 Binary files /dev/null and b/winboard/bitmaps/ln33w.bmp differ diff --git a/winboard/bitmaps/ln49o.bmp b/winboard/bitmaps/ln49o.bmp new file mode 100644 index 0000000..70f760e Binary files /dev/null and b/winboard/bitmaps/ln49o.bmp differ diff --git a/winboard/bitmaps/ln49s.bmp b/winboard/bitmaps/ln49s.bmp new file mode 100644 index 0000000..b9ecc7b Binary files /dev/null and b/winboard/bitmaps/ln49s.bmp differ diff --git a/winboard/bitmaps/ln49w.bmp b/winboard/bitmaps/ln49w.bmp new file mode 100644 index 0000000..16f45eb Binary files /dev/null and b/winboard/bitmaps/ln49w.bmp differ diff --git a/winboard/bitmaps/ln72o.bmp b/winboard/bitmaps/ln72o.bmp new file mode 100644 index 0000000..cb23356 Binary files /dev/null and b/winboard/bitmaps/ln72o.bmp differ diff --git a/winboard/bitmaps/ln72s.bmp b/winboard/bitmaps/ln72s.bmp new file mode 100644 index 0000000..f0a88ce Binary files /dev/null and b/winboard/bitmaps/ln72s.bmp differ diff --git a/winboard/bitmaps/ln72w.bmp b/winboard/bitmaps/ln72w.bmp new file mode 100644 index 0000000..e55a5e8 Binary files /dev/null and b/winboard/bitmaps/ln72w.bmp differ diff --git a/winboard/config.h b/winboard/config.h index bd928ca..259a7d0 100644 --- a/winboard/config.h +++ b/winboard/config.h @@ -46,16 +46,16 @@ #define PACKAGE_NAME "WinBoard" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "WinBoard 4.7.2" +#define PACKAGE_STRING "WinBoard master-20130828" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "winboard" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.7.2" +#define PACKAGE_VERSION "master-20130828" /* Define the Windows-specific FILE version info. this *MUST* be four comma separated 16-bit integers */ -#define PACKAGE_FILEVERSION 4,7,2013,828 +#define PACKAGE_FILEVERSION 4,7,2013,0829 #define PTY_ITERATION diff --git a/winboard/defaults.h b/winboard/defaults.h index f9171a2..0d04e0f 100644 --- a/winboard/defaults.h +++ b/winboard/defaults.h @@ -205,14 +205,14 @@ #define BUILT_IN_SOUND_NAMES {\ "Beepbeep", "Ching", "Click", "Cymbal", "Ding", "Drip", \ "Gong", "Laser", "Move", "Penalty", "Phone", "Pop", "Pop2", \ - "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \ + "Roar", "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \ "Alarm", "Challenge", "Channel", "Channel1", "Draw", "Kibitz", \ "Lose", "Request", "Seek", "Shout", "SShout", "Tell", "Unfinished", \ "Win", NULL \ } #define SETTINGS_FILE "winboard.ini" -#define DEBUG_FILE "winboard.debug" +#define DEBUG_FILE "winboard.debug" #define ICS_LOGON "ics.ini" diff --git a/winboard/resource.h b/winboard/resource.h index 7ad0f61..efa3068 100644 --- a/winboard/resource.h +++ b/winboard/resource.h @@ -216,6 +216,7 @@ #define IDC_NFG_Edit 1023 #define IDC_EpDrawMoveCount 1023 #define IDC_PolyglotDir 1023 +#define OPT_TagsSave 1023 #define OPT_ConsoleText 1024 #define OPT_LightSquareColor 1024 #define OPT_CommandInput 1025 @@ -442,6 +443,7 @@ #define OPT_ExtraInfoInMoveHistory 1437 #define OPT_HighlightMoveArrow 1438 #define OPT_AutoLogo 1439 +#define OPT_AutoTags 1440 #define IDC_BUTTON1 1440 #define IDC_BrowseForPolyglotDir 1440 #define IDC_BrowseForEGTB 1441 @@ -504,7 +506,10 @@ #define OPT_VariantMakruk 1529 #define OPT_VariantSChess 1530 #define OPT_VariantSpartan 1531 +#define OPT_VariantASEAN 1532 #define OPT_VariantGrand 1534 +#define OPT_VariantLion 1535 +#define OPT_EngineVariant 1560 #define IDC_Files 1550 #define IDC_Ranks 1551 #define IDC_Holdings 1552 diff --git a/winboard/wclipbrd.c b/winboard/wclipbrd.c index a2532a5..e46647d 100644 --- a/winboard/wclipbrd.c +++ b/winboard/wclipbrd.c @@ -42,7 +42,6 @@ /* Imports from winboard.c */ extern HWND hwndMain; -Boolean ParseFEN(Board b, int *stm, char *FEN); /* File globals */ static char *copyTemp; @@ -54,7 +53,7 @@ CopyFENToClipboard() char *fen = NULL; if(gameMode == EditPosition) EditPositionDone(TRUE); // [HGM] mak sure castling rights are set consistently - fen = PositionToFEN(currentMove, NULL); + fen = PositionToFEN(currentMove, NULL, 1); if (!fen) { DisplayError(_("Unable to convert position to FEN."), 0); return; @@ -305,7 +304,7 @@ VOID PasteGameOrFENFromClipboard() } // [HGM] paste any: make still smarter, to allow pasting of games without tags, recognize FEN in stead - if(!ParseFEN(dummyBoard, &dummy, buf) ) { + if(!ParseFEN(dummyBoard, &dummy, buf, 0) ) { PasteGameFromString( buf ); } else { diff --git a/winboard/wedittags.c b/winboard/wedittags.c index 823d7dd..b3cf334 100644 --- a/winboard/wedittags.c +++ b/winboard/wedittags.c @@ -118,6 +118,7 @@ EditTagsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: + case OPT_TagsSave: if (canEditTags) { char *p, *q; /* Read changed options from the dialog box */ @@ -133,13 +134,13 @@ EditTagsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) } *p = NULLCHAR; err = 0; if(resPtr) *resPtr = strdup(str); else - if(bookUp) SaveToBook(str); else + if(bookUp) SaveToBook(str), DisplayBook(currentMove); else err = ReplaceTags(str, &gameInfo); if (err) DisplayError(_("Error replacing tags."), err); free(str); } - TagsPopDown(); + if(LOWORD(wParam) == IDOK) TagsPopDown(); return TRUE; case IDCANCEL: diff --git a/winboard/winboard.c b/winboard/winboard.c index 6a51191..1b8460b 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -112,7 +112,6 @@ VOID NewVariantPopup(HWND hwnd); int FinishMove P((ChessMove moveType, int fromX, int fromY, int toX, int toY, /*char*/int promoChar)); void DisplayMove P((int moveNumber)); -Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen)); void ChatPopUp P((char *s)); typedef struct { ChessSquare piece; @@ -190,6 +189,7 @@ Boolean alwaysOnTop = FALSE; RECT boardRect; COLORREF lightSquareColor, darkSquareColor, whitePieceColor, blackPieceColor, highlightSquareColor, premoveHighlightColor; +COLORREF markerColor[8] = { 0x00FFFF, 0x0000FF, 0x00FF00, 0xFF0000, 0xFFFF00, 0xFF00FF, 0xFFFFFF, 0x000000 }; HPALETTE hPal; ColorClass currentColorClass; @@ -200,7 +200,7 @@ static HBITMAP pieceBitmap[3][(int) BlackPawn]; /* [HGM] nr of bitmaps referred static HBRUSH lightSquareBrush, darkSquareBrush, blackSquareBrush, /* [HGM] for band between board and holdings */ explodeBrush, /* [HGM] atomic */ - markerBrush, /* [HGM] markers */ + markerBrush[8], /* [HGM] markers */ whitePieceBrush, blackPieceBrush, iconBkgndBrush /*, outlineBrush*/; static POINT gridEndpoints[(BOARD_RANKS + BOARD_FILES + 2) * 2]; static DWORD gridVertexCounts[BOARD_RANKS + BOARD_FILES + 2]; @@ -226,8 +226,6 @@ static struct { int x; int y; int mode; } backTextureSquareInfo[BOARD_RANKS][BOA #define oldDialog 0 /* cygwin doesn't define _winmajor; mingw does */ #else - - #if defined(_winmajor) #define oldDialog (_winmajor < 4) #else @@ -2195,6 +2193,7 @@ InsertInPalette(COLORREF color) VOID InitDrawingColors() { + int i; if (pLogPal == NULL) { /* Allocate enough memory for a logical palette with * PALETTESIZE entries and set the size and version fields @@ -2226,8 +2225,9 @@ InitDrawingColors() blackPieceBrush = CreateSolidBrush(blackPieceColor); iconBkgndBrush = CreateSolidBrush(GetSysColor(COLOR_BACKGROUND)); explodeBrush = CreateSolidBrush(highlightSquareColor); // [HGM] atomic - markerBrush = CreateSolidBrush(premoveHighlightColor); // [HGM] markers - /* [AS] Force rendering of the font-based pieces */ + for(i=0; i<8;i++) markerBrush[i] = CreateSolidBrush(markerColor[i]); // [HGM] markers + + /* [AS] Force rendering of the font-based pieces */ if( fontBitmapSquareSize > 0 ) { fontBitmapSquareSize = 0; } @@ -2301,7 +2301,7 @@ InitDrawingSizes(BoardSize boardSize, int flags) && (boardSize < SizePetite || boardSize > SizeBulky) // Archbishop and Chancellor available in entire middle range || (v == VariantShogi && boardSize != SizeModerate) // Japanese-style Shogi || v == VariantKnightmate || v == VariantSChess || v == VariantXiangqi || v == VariantSpartan - || v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy ) { + || v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy || v == VariantLion ) { if(boardSize < SizeMediocre) boardSize = SizePetite; else if(boardSize > SizeModerate) boardSize = SizeBulky; else boardSize = SizeMiddling; @@ -2657,6 +2657,9 @@ InitDrawingSizes(BoardSize boardSize, int flags) pieceBitmap[0][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "s"); pieceBitmap[1][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "o"); pieceBitmap[2][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "w"); + pieceBitmap[0][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "s"); + pieceBitmap[1][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "o"); + pieceBitmap[2][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "w"); if(gameInfo.variant == VariantShogi) { /* promoted Gold represemtations */ pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s"); @@ -3278,6 +3281,9 @@ BOOL HasHighlightInfo() } return result; + + + } BOOL IsDrawArrowEnabled() @@ -3469,6 +3475,7 @@ DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc) DisplayHoldingsCount(hdc, x, y, flipView, (int) board[row][column]); else if( column == BOARD_RGHT) /* right align */ DisplayHoldingsCount(hdc, x, y, !flipView, (int) board[row][column]); + else if( piece == DarkSquare) DisplayHoldingsCount(hdc, x, y, 0, 0); else if (appData.monoMode) { if (piece == EmptySquare) { @@ -3651,7 +3658,7 @@ void DrawSeekDot(int x, int y, int color) { int square = color & 0x80; HBRUSH oldBrush = SelectObject(hdcSeek, - color == 0 ? markerBrush : color == 1 ? darkSquareBrush : explodeBrush); + color == 0 ? markerBrush[1] : color == 1 ? darkSquareBrush : explodeBrush); color &= 0x7F; if(square) Rectangle(hdcSeek, boardRect.left+x - squareSize/9, boardRect.top+y - squareSize/9, @@ -3944,8 +3951,7 @@ HDCDrawPosition(HDC hdc, BOOLEAN repaint, Board board) for (row = 0; row < BOARD_HEIGHT; row++) { for (column = 0; column < BOARD_WIDTH; column++) { if (marker[row][column]) { // marker changes only occur with full repaint! - HBRUSH oldBrush = SelectObject(hdcmem, - marker[row][column] == 2 ? markerBrush : explodeBrush); + HBRUSH oldBrush = SelectObject(hdcmem, markerBrush[marker[row][column]-1]); SquareToPos(row, column, &x, &y); Ellipse(hdcmem, x + squareSize/4, y + squareSize/4, x + 3*squareSize/4, y + 3*squareSize/4); @@ -4301,8 +4307,10 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } else if (PtInRect((LPRECT) &blackRect, pt)) { ClockClick(!flipClock); break; } + if(dragging) { // [HGM] lion: don't destroy dragging info if we are already dragging dragInfo.start.x = dragInfo.start.y = -1; dragInfo.from = dragInfo.start; + } if(fromX == -1 && frozen) { // not sure where this is for fromX = fromY = -1; DrawPosition(forceFullRepaint || FALSE, NULL); /* [AS] */ @@ -4322,7 +4330,7 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) if(PromoScroll(pt.x - boardRect.left, pt.y - boardRect.top)) break; MovePV(pt.x - boardRect.left, pt.y - boardRect.top, boardRect.bottom - boardRect.top); if ((appData.animateDragging || appData.highlightDragging) - && (wParam & MK_LBUTTON) + && (wParam & MK_LBUTTON || dragging == 2) && dragInfo.from.x >= 0) { BOOL full_repaint = FALSE; @@ -4331,7 +4339,7 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) dragInfo.pos = pt; } if (appData.highlightDragging) { - SetHighlights(fromX, fromY, x, y); + HoverEvent(highlightInfo.sq[1].x, highlightInfo.sq[1].y, x, y); if( IsDrawArrowEnabled() && (x < 0 || x >= BOARD_WIDTH || y < 0 || y >= BOARD_HEIGHT) ) { full_repaint = TRUE; } @@ -4466,6 +4474,8 @@ ButtonProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) return CallWindowProc(buttonDesc[i].wndproc, hwnd, message, wParam, lParam); } +static int promoStyle; + /* Process messages for Promotion dialog box */ LRESULT CALLBACK Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) @@ -4496,13 +4506,9 @@ Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) PieceToChar(BlackMarshall) != '~') ) ? SW_SHOW : SW_HIDE); /* [HGM] Hide B & R button in Shogi, use Q as promote, N as defer */ - ShowWindow(GetDlgItem(hDlg, PB_Rook), - gameInfo.variant != VariantShogi ? - SW_SHOW : SW_HIDE); - ShowWindow(GetDlgItem(hDlg, PB_Bishop), - gameInfo.variant != VariantShogi ? - SW_SHOW : SW_HIDE); - if(gameInfo.variant == VariantShogi) { + ShowWindow(GetDlgItem(hDlg, PB_Rook), !promoStyle ? SW_SHOW : SW_HIDE); + ShowWindow(GetDlgItem(hDlg, PB_Bishop), !promoStyle ? SW_SHOW : SW_HIDE); + if(promoStyle) { SetDlgItemText(hDlg, PB_Queen, "YES"); SetDlgItemText(hDlg, PB_Knight, "NO"); SetWindowText(hDlg, "Promote?"); @@ -4523,7 +4529,7 @@ Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) promoChar = gameInfo.variant == VariantSuper ? PieceToChar(BlackSilver) : PieceToChar(BlackKing); break; case PB_Queen: - promoChar = gameInfo.variant == VariantShogi ? '+' : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen)); + promoChar = promoStyle ? '+' : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen)); break; case PB_Rook: promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteRook : BlackRook)); @@ -4540,7 +4546,8 @@ Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteAngel : BlackAngel)); break; case PB_Knight: - promoChar = gameInfo.variant == VariantShogi ? '=' : PieceToChar(WhiteOnMove(currentMove) ? WhiteKnight : BlackKnight); + promoChar = gameInfo.variant == VariantShogi ? '=' : promoStyle ? NULLCHAR : + ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteKnight : BlackKnight)); break; default: return FALSE; @@ -4571,8 +4578,9 @@ PromotionPopup(HWND hwnd) } void -PromotionPopUp() +PromotionPopUp(char choice) { + promoStyle = (choice == '+'); DrawPosition(TRUE, NULL); PromotionPopup(hwndMain); } @@ -4789,6 +4797,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) nnew = RealizePalette(hdc); if (nnew > 0) { paletteChanged = TRUE; + InvalidateRect(hwnd, &boardRect, FALSE); } ReleaseDC(hwnd, hdc); @@ -5131,6 +5140,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) break; case IDM_Rematch: + RematchEvent(); break; @@ -6288,6 +6298,7 @@ StartupDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) SwapEngines(singleList); // temporarily swap first and second, to load a second 'first', ... ParseArgs(StringGet, &p); SwapEngines(singleList); // ... and then make it 'second' + appData.noChessProgram = FALSE; appData.icsActive = FALSE; } else if (IsDlgButtonChecked(hDlg, OPT_ChessServer)) { @@ -6865,6 +6876,7 @@ GothicPopUp(char *title, VariantClass variant) static char *history[HISTORY_SIZE]; int histIn = 0, histP = 0; + VOID SaveInHistory(char *cmd) { @@ -6877,6 +6889,7 @@ SaveInHistory(char *cmd) histIn = (histIn + 1) % HISTORY_SIZE; if (history[histIn] != NULL) { free(history[histIn]); + history[histIn] = NULL; } histP = histIn; @@ -7687,6 +7700,7 @@ DoWriteFile(HANDLE hFile, char *buf, int count, DWORD *outCount, else err = GetLastError(); } + } return err; } @@ -8552,6 +8566,7 @@ HWND gameListOptionsDialog; // low-level front-end: clear text edit / list widget void + GLT_ClearList() { SendDlgItemMessage( gameListOptionsDialog, IDC_GameListTags, LB_RESETCONTENT, 0, 0 ); @@ -8743,6 +8758,13 @@ EditCommentPopUp(int index, char *title, char *str) } +int +Roar() +{ + MyPlaySound(&sounds[(int)SoundRoar]); + return 1; +} + VOID RingBell() { @@ -8900,6 +8922,7 @@ DisplayBlackClock(long timeRemaining, int highlight) HDC hdc; char *flag = blackFlag && gameMode == TwoMachinesPlay ? "(!)" : ""; + if(appData.noGUI) return; hdc = GetDC(hwndMain); if (!IsIconic(hwndMain)) { @@ -9918,16 +9941,23 @@ AnimateMove(board, fromX, fromY, toX, toY) int toY; { ChessSquare piece; + int x = toX, y = toY; POINT start, finish, mid; POINT frames[kFactor * 2 + 1]; int nFrames, n; + if(killX >= 0 && IS_LION(board[fromY][fromX])) Roar(); + if (!appData.animate) return; if (doingSizing) return; if (fromY < 0 || fromX < 0) return; piece = board[fromY][fromX]; if (piece >= EmptySquare) return; + if(killX >= 0) toX = killX, toY = killY; // [HGM] lion: first to kill square + +again: + ScreenSquare(fromX, fromY, &start); ScreenSquare(toX, toY, &finish); @@ -9966,6 +9996,9 @@ AnimateMove(board, fromX, fromY, toX, toY) } animInfo.pos = finish; DrawPosition(FALSE, NULL); + + if(toX != x || toY != y) { fromX = toX; fromY = toY; toX = x; toY = y; goto again; } // second leg + animInfo.piece = EmptySquare; Explode(board, fromX, fromY, toX, toY); } diff --git a/winboard/winboard.rc b/winboard/winboard.rc index b52ed5a..334a624 100644 --- a/winboard/winboard.rc +++ b/winboard/winboard.rc @@ -275,16 +275,17 @@ BEGIN EDITTEXT IDC_GameListFilter,201,136,78,14,ES_AUTOHSCROLL END -DLG_EditTags DIALOG DISCARDABLE 6, 18, 167, 140 +DLG_EditTags DIALOG DISCARDABLE 6, 18, 223, 140 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Edit Tags" FONT 8, "MS Sans Serif" BEGIN - PUSHBUTTON "OK",IDOK,58,122,50,14 - PUSHBUTTON "Cancel",OPT_TagsCancel,114,122,50,14 + PUSHBUTTON "OK",IDOK,114,122,50,14 + PUSHBUTTON "Cancel",OPT_TagsCancel,170,122,50,14 + PUSHBUTTON "Save",OPT_TagsSave,58,122,50,14 CONTROL "",OPT_TagsText,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP,2,2,162,115 + WS_HSCROLL | WS_TABSTOP,2,2,218,115 PUSHBUTTON "&Edit",OPT_EditTags,2,122,50,14 END @@ -444,7 +445,7 @@ BEGIN PUSHBUTTON "Cancel",IDCANCEL,208,86,50,14 END -DLG_GeneralOptions DIALOG DISCARDABLE 0, 0, 300, 197 +DLG_GeneralOptions DIALOG DISCARDABLE 0, 0, 300, 211 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "General Options" FONT 8, "MS Sans Serif" @@ -497,8 +498,12 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,160,151,10 CONTROL "One-Click Move",OPT_SmartMove, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,160,151,10 - DEFPUSHBUTTON "OK",IDOK,180,178,50,14 - PUSHBUTTON "Cancel",IDCANCEL,236,178,50,14 + CONTROL "auto-Display Tags",OPT_AutoTags, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,174,151,10 + CONTROL "auto-Display Comment",OPT_AutoComment, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,174,151,10 + DEFPUSHBUTTON "OK",IDOK,180,192,50,14 + PUSHBUTTON "Cancel",IDCANCEL,236,192,50,14 END DLG_IcsOptions DIALOGEX 0, 0, 302, 268 @@ -708,6 +713,8 @@ BEGIN 70,10 CONTROL "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON, 9,104,70,10 + CONTROL "&Mighty Lion",OPT_VariantLion,"Button",BS_AUTORADIOBUTTON, + 9,114,70,10 CONTROL "cra&zyhouse",OPT_VariantCrazyhouse,"Button",BS_AUTORADIOBUTTON,80,14, 70,10 CONTROL "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,80,24,70, @@ -728,6 +735,8 @@ BEGIN 94,70,10 CONTROL "&makruk",OPT_VariantMakruk,"Button",BS_AUTORADIOBUTTON,80, 104,70,10 + CONTROL "&ASEAN",OPT_VariantASEAN,"Button",BS_AUTORADIOBUTTON,80, + 114,70,10 CONTROL "&gothic",OPT_VariantGothic,"Button",BS_AUTORADIOBUTTON,154,14, 70,10 CONTROL "&capablanca",OPT_VariantCapablanca,"Button",BS_AUTORADIOBUTTON,154, @@ -750,16 +759,25 @@ BEGIN 10 CONTROL "&xiangqi",OPT_VariantXiangqi,"Button",BS_AUTORADIOBUTTON,154,114,70, 10 - GROUPBOX "Variant",GPB_Variant,4,4,215,125 - LTEXT "Board size:",GPB_Board,10,165,40,8,WS_TABSTOP - LTEXT "ranks",IDC_Height,77,165,38,8 - EDITTEXT IDC_Ranks,60,161,14,14,ES_AUTOHSCROLL - LTEXT "files",IDC_Width,133,165,80,8 - EDITTEXT IDC_Files,116,161,14,14,ES_AUTOHSCROLL - LTEXT "Holdings with room for:",IDC_Hand,10,183,90,8 - EDITTEXT IDC_Holdings,93,179,14,14,ES_AUTOHSCROLL - LTEXT "pieces",IDC_Pieces,110,183,100,8 - LTEXT "('-1' means defaults for selected variant)",IDC_Def,10,201,210,8 + CONTROL "",OPT_EngineVariant+0,"Button",BS_AUTORADIOBUTTON,9,134,70,10 + CONTROL "",OPT_EngineVariant+1,"Button",BS_AUTORADIOBUTTON,80,134,70,10 + CONTROL "",OPT_EngineVariant+2,"Button",BS_AUTORADIOBUTTON,154,134,70,10 + CONTROL "",OPT_EngineVariant+3,"Button",BS_AUTORADIOBUTTON,9,144,70,10 + CONTROL "",OPT_EngineVariant+4,"Button",BS_AUTORADIOBUTTON,80,144,70,10 + CONTROL "",OPT_EngineVariant+5,"Button",BS_AUTORADIOBUTTON,154,144,70,10 + CONTROL "",OPT_EngineVariant+6,"Button",BS_AUTORADIOBUTTON,9,154,70,10 + CONTROL "",OPT_EngineVariant+7,"Button",BS_AUTORADIOBUTTON,80,154,70,10 + CONTROL "",OPT_EngineVariant+8,"Button",BS_AUTORADIOBUTTON,154,154,70,10 + GROUPBOX "Variant",GPB_Variant,4,4,215,165 + LTEXT "Board size:",GPB_Board,10,183,40,8,WS_TABSTOP + LTEXT "ranks",IDC_Height,77,183,38,8 + EDITTEXT IDC_Ranks,60,179,14,14,ES_AUTOHSCROLL + LTEXT "files",IDC_Width,133,183,80,8 + EDITTEXT IDC_Files,116,179,14,14,ES_AUTOHSCROLL + LTEXT "Holdings with room for:",IDC_Hand,10,201,90,8 + EDITTEXT IDC_Holdings,93,197,14,14,ES_AUTOHSCROLL + LTEXT "pieces",IDC_Pieces,110,201,100,8 + LTEXT "('-1' means defaults for selected variant)",IDC_Def,10,217,210,8 DEFPUSHBUTTON "OK",IDOK,114,232,50,14 PUSHBUTTON "Cancel",IDCANCEL,170,232,50,14 END @@ -1900,6 +1918,7 @@ V72O BITMAP MOVEABLE PURE "bitmaps/v72o.bmp" S72O BITMAP MOVEABLE PURE "bitmaps/s72o.bmp" L72O BITMAP MOVEABLE PURE "bitmaps/l72o.bmp" DK72O BITMAP MOVEABLE PURE "bitmaps/dk72o.bmp" +LN72O BITMAP MOVEABLE PURE "bitmaps/ln72o.bmp" WP72O BITMAP MOVEABLE PURE "bitmaps/wp72o.bmp" WN72O BITMAP MOVEABLE PURE "bitmaps/wn72o.bmp" WL72O BITMAP MOVEABLE PURE "bitmaps/wl72o.bmp" @@ -1920,6 +1939,7 @@ V72S BITMAP MOVEABLE PURE "bitmaps/v72s.bmp" S72S BITMAP MOVEABLE PURE "bitmaps/s72s.bmp" L72S BITMAP MOVEABLE PURE "bitmaps/l72s.bmp" DK72S BITMAP MOVEABLE PURE "bitmaps/dk72s.bmp" +LN72S BITMAP MOVEABLE PURE "bitmaps/ln72s.bmp" WP72S BITMAP MOVEABLE PURE "bitmaps/wp72s.bmp" WN72S BITMAP MOVEABLE PURE "bitmaps/wn72s.bmp" WL72S BITMAP MOVEABLE PURE "bitmaps/wl72s.bmp" @@ -1940,6 +1960,7 @@ V72W BITMAP MOVEABLE PURE "bitmaps/v72w.bmp" S72W BITMAP MOVEABLE PURE "bitmaps/s72w.bmp" L72W BITMAP MOVEABLE PURE "bitmaps/l72w.bmp" DK72W BITMAP MOVEABLE PURE "bitmaps/dk72w.bmp" +LN72W BITMAP MOVEABLE PURE "bitmaps/ln72w.bmp" E49O BITMAP MOVEABLE PURE "bitmaps/e49o.bmp" A49O BITMAP MOVEABLE PURE "bitmaps/a49o.bmp" AA49O BITMAP MOVEABLE PURE "bitmaps/as49o.bmp" @@ -1956,6 +1977,7 @@ V49O BITMAP MOVEABLE PURE "bitmaps/v49o.bmp" S49O BITMAP MOVEABLE PURE "bitmaps/s49o.bmp" L49O BITMAP MOVEABLE PURE "bitmaps/l49o.bmp" DK49O BITMAP MOVEABLE PURE "bitmaps/dk49o.bmp" +LN49O BITMAP MOVEABLE PURE "bitmaps/ln49o.bmp" WP49O BITMAP MOVEABLE PURE "bitmaps/wp49o.bmp" WN49O BITMAP MOVEABLE PURE "bitmaps/wn49o.bmp" WL49O BITMAP MOVEABLE PURE "bitmaps/wl49o.bmp" @@ -1976,6 +1998,7 @@ V49S BITMAP MOVEABLE PURE "bitmaps/v49s.bmp" S49S BITMAP MOVEABLE PURE "bitmaps/s49s.bmp" L49S BITMAP MOVEABLE PURE "bitmaps/l49s.bmp" DK49S BITMAP MOVEABLE PURE "bitmaps/dk49s.bmp" +LN49S BITMAP MOVEABLE PURE "bitmaps/ln49s.bmp" WP49S BITMAP MOVEABLE PURE "bitmaps/wp49s.bmp" WN49S BITMAP MOVEABLE PURE "bitmaps/wn49s.bmp" WL49S BITMAP MOVEABLE PURE "bitmaps/wl49s.bmp" @@ -1996,6 +2019,7 @@ V49W BITMAP MOVEABLE PURE "bitmaps/v49w.bmp" S49W BITMAP MOVEABLE PURE "bitmaps/s49w.bmp" L49W BITMAP MOVEABLE PURE "bitmaps/l49w.bmp" DK49W BITMAP MOVEABLE PURE "bitmaps/dk49w.bmp" +LN49W BITMAP MOVEABLE PURE "bitmaps/ln49w.bmp" A33O BITMAP MOVEABLE PURE "bitmaps/a33o.bmp" AA33O BITMAP MOVEABLE PURE "bitmaps/as33o.bmp" C33O BITMAP MOVEABLE PURE "bitmaps/c33o.bmp" @@ -2010,6 +2034,7 @@ W33O BITMAP MOVEABLE PURE "bitmaps/w33o.bmp" M33O BITMAP MOVEABLE PURE "bitmaps/m33o.bmp" O33O BITMAP MOVEABLE PURE "bitmaps/o33o.bmp" DK33O BITMAP MOVEABLE PURE "bitmaps/dk33o.bmp" +LN33O BITMAP MOVEABLE PURE "bitmaps/ln33o.bmp" WP33O BITMAP MOVEABLE PURE "bitmaps/wp33o.bmp" WN33O BITMAP MOVEABLE PURE "bitmaps/wn33o.bmp" WL33O BITMAP MOVEABLE PURE "bitmaps/wl33o.bmp" @@ -2028,6 +2053,7 @@ W33W BITMAP MOVEABLE PURE "bitmaps/w33w.bmp" M33W BITMAP MOVEABLE PURE "bitmaps/m33w.bmp" O33W BITMAP MOVEABLE PURE "bitmaps/o33w.bmp" DK33W BITMAP MOVEABLE PURE "bitmaps/dk33w.bmp" +LN33W BITMAP MOVEABLE PURE "bitmaps/ln33w.bmp" A33S BITMAP MOVEABLE PURE "bitmaps/a33s.bmp" AA33S BITMAP MOVEABLE PURE "bitmaps/as33s.bmp" C33S BITMAP MOVEABLE PURE "bitmaps/c33s.bmp" @@ -2042,6 +2068,7 @@ W33S BITMAP MOVEABLE PURE "bitmaps/w33s.bmp" M33S BITMAP MOVEABLE PURE "bitmaps/m33s.bmp" O33S BITMAP MOVEABLE PURE "bitmaps/o33s.bmp" DK33S BITMAP MOVEABLE PURE "bitmaps/dk33s.bmp" +LN33S BITMAP MOVEABLE PURE "bitmaps/ln33s.bmp" WP33S BITMAP MOVEABLE PURE "bitmaps/wp33s.bmp" WN33S BITMAP MOVEABLE PURE "bitmaps/wn33s.bmp" WL33S BITMAP MOVEABLE PURE "bitmaps/wl33s.bmp" @@ -2208,6 +2235,7 @@ SSHOUT WAVE DISCARDABLE "sounds/sshout.wav" TELL WAVE DISCARDABLE "sounds/tell.wav" UNFINISHED WAVE DISCARDABLE "sounds/unfinished.wav" WIN WAVE DISCARDABLE "sounds/win.wav" +ROAR WAVE DISCARDABLE "sounds/roar.wav" ///////////////////////////////////////////////////////////////////////////// // diff --git a/winboard/woptions.c b/winboard/woptions.c index 84733de..6f2adeb 100644 --- a/winboard/woptions.c +++ b/winboard/woptions.c @@ -210,6 +210,8 @@ GeneralOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) CHECK_BOX(OPT_HighlightMoveArrow, appData.highlightMoveWithArrow); CHECK_BOX(OPT_AutoLogo, appData.autoLogo); // [HGM] logo CHECK_BOX(OPT_SmartMove, appData.oneClick); // [HGM] one-click + CHECK_BOX(OPT_AutoTags, appData.autoDisplayTags); // [HGM] + CHECK_BOX(OPT_AutoComment, appData.autoDisplayComment); // [HGM] #undef CHECK_BOX @@ -259,6 +261,8 @@ GeneralOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) appData.highlightMoveWithArrow=IS_CHECKED(OPT_HighlightMoveArrow); appData.autoLogo =IS_CHECKED(OPT_AutoLogo); // [HGM] logo appData.oneClick =IS_CHECKED(OPT_SmartMove); // [HGM] one-click + appData.autoDisplayTags =IS_CHECKED(OPT_AutoTags); // [HGM] + appData.autoDisplayComment =IS_CHECKED(OPT_AutoComment); // [HGM] #undef IS_CHECKED @@ -695,6 +699,7 @@ BoardOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) } DeleteObject(pieces[0]); DeleteObject(pieces[1]); + DeleteObject(pieces[2]); return TRUE; @@ -838,6 +843,7 @@ int radioButton[] = { -1, -1, OPT_VariantShogi, + -1, // Chu OPT_VariantXiangqi, OPT_VariantCourier, OPT_VariantGothic, @@ -853,9 +859,11 @@ int radioButton[] = { OPT_VariantGreat, -1, // Twilight, OPT_VariantMakruk, + OPT_VariantASEAN, OPT_VariantSChess, OPT_VariantGrand, OPT_VariantSpartan, // Spartan + OPT_VariantLion, -2 // sentinel }; @@ -863,23 +871,40 @@ VariantClass VariantWhichRadio(HWND hDlg) { int i=0, j; + *engineVariant = NULLCHAR; while((j = radioButton[i++]) != -2) { if(j == -1) continue; // no menu button if(IsDlgButtonChecked(hDlg, j) && (appData.noChessProgram || strstr(first.variants, VariantName(i-1)))) return (VariantClass) i-1; } + for(i=0; i<9; i++) { // check for engine-defined variants + if(IsDlgButtonChecked(hDlg, OPT_EngineVariant+i) ) { + GetDlgItemText(hDlg, OPT_EngineVariant+i, engineVariant, MSG_SIZ); // remember name, so we can resolve it later + return VariantUnknown; + } + } return gameInfo.variant; // If no button checked, keep old } void VariantShowRadio(HWND hDlg) { + char c = *engineVariant; int i=0, j; CheckDlgButton(hDlg, radioButton[gameInfo.variant], TRUE); + *engineVariant = NULLCHAR; // [HGM] kludge to prevent VariantName will always return engineVariant while((j = radioButton[i++]) != -2) { if(j == -1) continue; // no menu button EnableWindow(GetDlgItem(hDlg, j), appData.noChessProgram || strstr(first.variants, VariantName(i-1))); } + *engineVariant = c; + for(i=0; i<9; i++) { // initialize engine-defined variants + char *v = EngineDefinedVariant(&first, i); // get name of #i + if(v) { // there is such a variant + EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), TRUE); // and enable the button + SetDlgItemText(hDlg, OPT_EngineVariant+i, v); // put its name on button + } else EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), FALSE); // no such variant; disable button + } } LRESULT CALLBACK @@ -1397,6 +1422,9 @@ IcsOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) UpdateSampleText(hDlg, OPT_SampleSeek, &mca[ColorSeek]); break; + + + case OPT_ChooseNormalColor: ColorizeTextPopup(hDlg, ColorNormal); UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]); @@ -1775,6 +1803,7 @@ FontsOptionsPopup(HWND hwnd) SoundComboData soundComboData[] = { {N_("Move"), NULL}, {N_("Bell"), NULL}, + {N_("Roar"), NULL}, {N_("ICS Alarm"), NULL}, {N_("ICS Win"), NULL}, {N_("ICS Loss"), NULL}, @@ -3003,6 +3032,13 @@ BOOL BrowseForFolder( const char * title, char * path ) return result; } +int +IsMultiFormat(char *s) +{ + char *p = strchr(s, ':'); + return p && p != s+1; +} + LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MAX_PATH]; @@ -3018,7 +3054,10 @@ LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM /* Initialize the dialog items */ SetDlgItemText( hDlg, IDC_PolyglotDir, appData.polyglotDir ); SetDlgItemInt( hDlg, IDC_HashSize, appData.defaultHashSize, TRUE ); + if(appData.defaultPathEGTB[0]) SetDlgItemText( hDlg, IDC_PathToEGTB, appData.defaultPathEGTB ); + else + SetDlgItemText( hDlg, IDC_PathToEGTB, appData.egtFormats ); SetDlgItemInt( hDlg, IDC_SizeOfEGTB, appData.defaultCacheSizeEGTB, TRUE ); CheckDlgButton( hDlg, IDC_UseBook, (BOOL) appData.usePolyglotBook ); SetDlgItemText( hDlg, IDC_BookFile, appData.polyglotBook ); @@ -3043,7 +3082,11 @@ LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM appData.defaultHashSize = GetDlgItemInt(hDlg, IDC_HashSize, NULL, FALSE ); appData.defaultCacheSizeEGTB = GetDlgItemInt(hDlg, IDC_SizeOfEGTB, NULL, FALSE ); GetDlgItemText( hDlg, IDC_PathToEGTB, buf, sizeof(buf) ); - appData.defaultPathEGTB = strdup(buf); + if(IsMultiFormat(buf)) { + ASSIGN(appData.egtFormats, buf); + } else { + ASSIGN(appData.defaultPathEGTB, buf); + } GetDlgItemText( hDlg, IDC_BookFile, buf, sizeof(buf) ); appData.polyglotBook = strdup(buf); appData.usePolyglotBook = (Boolean) IsDlgButtonChecked( hDlg, IDC_UseBook ); diff --git a/winboard/wsettings.c b/winboard/wsettings.c index f32fc94..99efab5 100644 --- a/winboard/wsettings.c +++ b/winboard/wsettings.c @@ -495,7 +495,7 @@ LRESULT CALLBACK SettingsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa if(j == -2) { char filter[] = "All files\0*.*\0Game files\0*.pgn;*.gam\0Position files\0*.fen;*.epd;*.pos\0" - "EXE files\0*.exe\0Tournament files (*.trn)\0*.trn\0" + "EXE files\0*.exe;*.jar\0Tournament files (*.trn)\0*.trn\0" "BIN Files\0*.bin\0LOG Files\0*.log\0INI Files\0*.ini\0" "Image files\0*.bmp\0\0"; OPENFILENAME ofn; @@ -712,7 +712,7 @@ Option installOptions[] = { { 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("or specify one below:") }, { 0, 0, 0, NULL, (void*) &nickName, NULL, NULL, TextBox, N_("Nickname (optional):") }, { 0, 0, 0, NULL, (void*) &useNick, NULL, NULL, CheckBox, N_("Use nickname in PGN tag") }, - { 0, 0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (*.exe):") }, + { 0, 0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (.exe or .jar):") }, { 0, 0, 0, NULL, (void*) ¶ms, NULL, NULL, TextBox, N_("command-line parameters:") }, { 0, 0, 0, NULL, (void*) &wbOptions, NULL, NULL, TextBox, N_("Special WinBoard options:") }, { 0, 0, 0, NULL, (void*) &engineDir, NULL, NULL, PathName, N_("directory:") }, diff --git a/xaw/xboard.c b/xaw/xboard.c index 4b2b915..d3d6ba2 100644 --- a/xaw/xboard.c +++ b/xaw/xboard.c @@ -183,13 +183,6 @@ extern char *getenv(); // [HGM] bitmaps: put before incuding the bitmaps / pixmaps, to know how many piece types there are. #include "common.h" -#if HAVE_LIBXPM -#include -#define IMAGE_EXT "xpm" -#else -#define IMAGE_EXT "xim" -#endif - #include "bitmaps/icon_white.bm" #include "bitmaps/icon_black.bm" #include "bitmaps/checkmark.bm" @@ -430,128 +423,6 @@ String xboardResources[] = { /* 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; id_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 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); } diff --git a/xaw/xengineoutput.c b/xaw/xengineoutput.c index 4f54902..d39c604 100644 --- a/xaw/xengineoutput.c +++ b/xaw/xengineoutput.c @@ -85,16 +85,40 @@ extern char *getenv(); # define N_(s) s #endif -#include +// [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 */ @@ -104,17 +128,9 @@ static Widget memoWidget; 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 diff --git a/xaw/xoptions.c b/xaw/xoptions.c index 91baa04..1f406cb 100644 --- a/xaw/xoptions.c +++ b/xaw/xoptions.c @@ -1271,7 +1271,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent 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))); } } diff --git a/xboard.conf.in b/xboard.conf.in index 38186c2..4d312f4 100644 --- a/xboard.conf.in +++ b/xboard.conf.in @@ -43,6 +43,7 @@ -soundTell phone.wav -soundChallenge gong.wav -soundMove woodthunk.wav +-soundRoar roar.wav -soundIcsAlarm penalty.wav -pasteSelection false -keepLineBreaksICS false diff --git a/xboard.texi b/xboard.texi index d59246f..d631405 100644 --- a/xboard.texi +++ b/xboard.texi @@ -3429,6 +3429,7 @@ cylinder Pieces wrap around the board edge 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) @@ -4146,7 +4147,6 @@ Here are some other programs you can use with XBoard * 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 @@ -4203,45 +4203,6 @@ To use Crafty with XBoard, give the -fcp and -fd options as follows, where 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 diff --git a/xboard2.h b/xboard2.h index babb9f0..1616749 100644 --- a/xboard2.h +++ b/xboard2.h @@ -28,4 +28,4 @@ extern int searchTime; extern int squareSize, lineGap, defaultLineGap; extern int startedFromPositionFile; extern char *icsTextMenuString; - +extern int hi2X, hi2Y; diff --git a/zic2xpm.c b/zic2xpm.c deleted file mode 100644 index 2fdd078..0000000 --- a/zic2xpm.c +++ /dev/null @@ -1,597 +0,0 @@ -/* - zic2xpm.c - - Program to convert pieces from ZIICS format to XPM & XIM format. - (C version) By Frank McIngvale . - - 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: - - .(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 -#if STDC_HEADERS -#include -#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 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; ixchar, - 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; ixval, 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; ixchar ); - } - 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 -- .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 -- .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