From: Arun Persaud Date: Fri, 8 May 2015 15:00:11 +0000 (-0700) Subject: Merge branch 'v4.8.x' into master X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=ba12e63149a003b88b8525d6eb50d48539c660b6;hp=dd94bfa89dd6dd1238c3f7063e532ab3ed2d0858;p=xboard.git Merge branch 'v4.8.x' into master --- diff --git a/Makefile.am b/Makefile.am index 61bf260..eaba7f4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -179,7 +179,7 @@ dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg themes/xiangqi/WhiteAdvisor ### 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 +dist_themes_DATA = conf/shogi conf/xq conf/ics conf/mini conf/mini.fen conf/sho conf/sho.fen ### directory and files for pixmaps diff --git a/args.h b/args.h index 8e824a5..7e39735 100644 --- a/args.h +++ b/args.h @@ -230,6 +230,7 @@ ArgDescriptor argDescriptors[] = { { "dropMenu", ArgBoolean, (void *) &appData.dropMenu, TRUE, (ArgIniType) FALSE }, { "pieceMenu", ArgBoolean, (void *) &appData.pieceMenu, TRUE, (ArgIniType) TRUE }, { "sweepPromotions", ArgBoolean, (void *) &appData.sweepSelect, TRUE, (ArgIniType) FALSE }, + { "monoMouse", ArgBoolean, (void *) &appData.monoMouse, XBOARD, (ArgIniType) FALSE }, { "remoteShell", ArgFilename, (void *) &appData.remoteShell, FALSE, (ArgIniType) REMOTE_SHELL }, { "rsh", ArgFilename, (void *) &appData.remoteShell, FALSE, INVALID }, { "remoteUser", ArgString, (void *) &appData.remoteUser, FALSE, (ArgIniType) "" }, @@ -633,6 +634,7 @@ ArgDescriptor argDescriptors[] = { { "oneClickMove", ArgBoolean, (void *) &appData.oneClick, TRUE, (ArgIniType) FALSE }, { "boardWidth", ArgInt, (void *) &appData.NrFiles, FALSE, (ArgIniType) -1 }, { "boardHeight", ArgInt, (void *) &appData.NrRanks, FALSE, (ArgIniType) -1 }, + { "rankOffset", ArgInt, (void *) &appData.rankOffset, FALSE, (ArgIniType) 0 }, { "holdingsSize", ArgInt, (void *) &appData.holdingsSize, FALSE, (ArgIniType) -1 }, { "defaultMatchGames", ArgInt, (void *) &appData.defaultMatchGames, TRUE, (ArgIniType) 10 }, { "matchPause", ArgInt, (void *) &appData.matchPause, TRUE, (ArgIniType) 10000 }, diff --git a/backend.c b/backend.c index e68b3af..295b600 100644 --- a/backend.c +++ b/backend.c @@ -5141,10 +5141,17 @@ 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'); + char *m = moveList[moveNum]; + if((boards[moveNum][m[6]-ONE][m[5]-AAA] < BlackPawn) == (boards[moveNum][m[1]-ONE][m[0]-AAA] < BlackPawn)) // move is kludge to indicate castling + snprintf(buf, MSG_SIZ, "%c%d%c%d,%c%d%c%d\n", m[0], m[1] - '0', // convert to two moves + m[2], m[3] - '0', + m[5], m[6] - '0', + m[2] + (m[0] > m[5] ? 1 : -1), m[3] - '0'); + else + snprintf(buf, MSG_SIZ, "%c%d%c%d,%c%d%c%d\n", m[0], m[1] - '0', // convert to two moves + m[5], m[6] - '0', + m[5], m[6] - '0', + m[2], m[3] - '0'); SendToProgram(buf, cps); } else if(BOARD_HEIGHT > 10) { // [HGM] big: convert ranks to double-digit where needed @@ -5327,11 +5334,11 @@ 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 +int killX = -1, killY = -1, kill2X, kill2Y; // [HGM] lion: used for passing e.p. capture square to MakeMove int legNr = 1; void -CoordsToComputerAlgebraic (int rf, int ff, int rt, int ft, char promoChar, char move[7]) +CoordsToComputerAlgebraic (int rf, int ff, int rt, int ft, char promoChar, char move[9]) { if (rf == DROP_RANK) { if(ff == EmptySquare) sprintf(move, "@@@@\n"); else // [HGM] pass @@ -5341,7 +5348,10 @@ 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); + if(killX >= 0 && killY >= 0) { + sprintf(move+4, ";%c%c\n", AAA + killX, ONE + killY); + if(kill2X >= 0 && kill2Y >= 0) sprintf(move+7, "%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); @@ -5392,8 +5402,8 @@ Sweep (int 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; + else if(promoSweep == BlackPawn && step < 0 && !toggleFlag) promoSweep = WhitePawn; + else if(promoSweep == WhiteKing && step > 0 && !toggleFlag) promoSweep = BlackKing; if(!step) step = -1; } while(PieceToChar(promoSweep) == '.' || PieceToChar(promoSweep) == '~' || promoSweep == pawn || !toggleFlag && PieceToChar(promoSweep) == '+' || // skip promoted versions of other @@ -5520,6 +5530,12 @@ ParseOneMove (char *move, int moveNum, ChessMove *moveType, int *fromX, int *fro case BlackASideCastleFR: /* End of code added by Tord */ case IllegalMove: /* bug or odd chess variant */ + if(currentMoveString[1] == '@') { // illegal drop + *fromX = WhiteOnMove(moveNum) ? + (int) CharToPiece(ToUpper(currentMoveString[0])) : + (int) CharToPiece(ToLower(currentMoveString[0])); + goto drop; + } *fromX = currentMoveString[0] - AAA; *fromY = currentMoveString[1] - ONE; *toX = currentMoveString[2] - AAA; @@ -5546,6 +5562,7 @@ ParseOneMove (char *move, int moveNum, ChessMove *moveType, int *fromX, int *fro *fromX = *moveType == WhiteDrop ? (int) CharToPiece(ToUpper(currentMoveString[0])) : (int) CharToPiece(ToLower(currentMoveString[0])); + drop: *fromY = DROP_RANK; *toX = currentMoveString[2] - AAA; *toY = currentMoveString[3] - ONE; @@ -5933,23 +5950,40 @@ SetUpShuffle (Board board, int number) } int -SetCharTable (char *table, const char * map) +ptclen (const char *s, char *escapes) +{ + int n = 0; + if(!*escapes) return strlen(s); + while(*s) n += (*s != ':' && !strchr(escapes, *s)), s++; + return n; +} + +int +SetCharTableEsc (unsigned char *table, const char * map, char * escapes) /* [HGM] moved here from winboard.c because of its general usefulness */ /* Basically a safe strcpy that uses the last character as King */ { int result = FALSE; int NrPieces; - if( map != NULL && (NrPieces=strlen(map)) <= (int) EmptySquare + if( map != NULL && (NrPieces=ptclen(map, escapes)) <= (int) EmptySquare && NrPieces >= 12 && !(NrPieces&1)) { - int i; /* [HGM] Accept even length from 12 to 34 */ + int i, j = 0; /* [HGM] Accept even length from 12 to 88 */ for( i=0; i<(int) EmptySquare; i++ ) table[i] = '.'; for( i=0; i= 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; + } else if(gameInfo.variant == VariantShogi) { + promotionZoneSize = BOARD_HEIGHT/3 +(BOARD_HEIGHT == 8); highestPromotingPiece = (int)WhiteAlfil; } else if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) { promotionZoneSize = 3; @@ -6950,7 +6990,7 @@ UserMoveEvent(int fromX, int fromY, int toX, int toY, int promoChar) /* EditPosition, empty square, or different color piece; click-click move is possible */ if (toX == -2 || toY == -2) { - boards[0][fromY][fromX] = EmptySquare; + boards[0][fromY][fromX] = (boards[0][fromY][fromX] == EmptySquare ? DarkSquare : EmptySquare); DrawPosition(FALSE, boards[currentMove]); return; } else if (toX >= 0 && toY >= 0) { @@ -7021,6 +7061,7 @@ UserMoveEvent(int fromX, int fromY, int toX, int toY, int promoChar) if(addToBookFlag) { // adding moves to book char buf[MSG_SIZ], move[MSG_SIZ]; CoordsToAlgebraic(boards[currentMove], PosFlags(currentMove), fromY, fromX, toY, toX, promoChar, move); + if(killX >= 0) snprintf(move, MSG_SIZ, "%c%dx%c%d-%c%d", fromX + AAA, fromY + ONE - '0', killX + AAA, killY + ONE - '0', toX + AAA, toY + ONE - '0'); snprintf(buf, MSG_SIZ, " 0.0%% 1 %s\n", move); AddBookMove(buf); addToBookFlag = FALSE; @@ -7325,8 +7366,8 @@ CanPromote (ChessSquare piece, int y) gameInfo.variant == VariantMakruk) return FALSE; return (piece == BlackPawn && y <= zone || piece == WhitePawn && y >= BOARD_HEIGHT-1-zone || - piece == BlackLance && y == 1 || - piece == WhiteLance && y == BOARD_HEIGHT-2 ); + piece == BlackLance && y <= zone || + piece == WhiteLance && y >= BOARD_HEIGHT-1-zone ); } void @@ -7369,6 +7410,8 @@ void ReportClick(char *action, int x, int y) SendToProgram(buf, &first); } +Boolean right; // instructs front-end to use button-1 events as if they were button 3 + void LeftClick (ClickType clickType, int xPix, int yPix) { @@ -7379,13 +7422,6 @@ LeftClick (ClickType clickType, int xPix, int yPix) ChessSquare piece; static TimeMark lastClickTime, prevClickTime; - if(SeekGraphClick(clickType, xPix, yPix, 0)) return; - - prevClickTime = lastClickTime; GetTimeMark(&lastClickTime); - - if (clickType == Press) ErrorPopDown(); - lastClickType = clickType, lastLeftX = xPix, lastLeftY = yPix; // [HGM] alien: remember state - x = EventToSquare(xPix, BOARD_WIDTH); y = EventToSquare(yPix, BOARD_HEIGHT); if (!flipView && y >= 0) { @@ -7395,6 +7431,20 @@ LeftClick (ClickType clickType, int xPix, int yPix) x = BOARD_WIDTH - 1 - x; } + if(appData.monoMouse && gameMode == EditPosition && fromX < 0 && clickType == Press && boards[currentMove][y][x] == EmptySquare) { + static int dummy; + RightClick(clickType, xPix, yPix, &dummy, &dummy); + right = TRUE; + return; + } + + if(SeekGraphClick(clickType, xPix, yPix, 0)) return; + + prevClickTime = lastClickTime; GetTimeMark(&lastClickTime); + + if (clickType == Press) ErrorPopDown(); + lastClickType = clickType, lastLeftX = xPix, lastLeftY = yPix; // [HGM] alien: remember state + if(promoSweep != EmptySquare) { // up-click during sweep-select of promo-piece defaultPromoChoice = promoSweep; promoSweep = EmptySquare; // terminate sweep @@ -7488,7 +7538,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) return; } } - +printf("to click %d,%d\n",x,y); /* fromX != -1 */ if (clickType == Press && gameMode != EditPosition) { ChessSquare fromP; @@ -7503,6 +7553,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) toP = boards[currentMove][y][x]; frc = appData.fischerCastling || gameInfo.variant == VariantSChess; if( (killX < 0 || x != fromX || y != fromY) && // [HGM] lion: do not interpret igui as deselect! + marker[y][x] == 0 && // if engine told we can move to here, do it even if own piece ((WhitePawn <= fromP && fromP <= WhiteKing && WhitePawn <= toP && toP <= WhiteKing && !(fromP == WhiteKing && toP == WhiteRook && frc) && @@ -7534,7 +7585,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) else gatingPiece = doubleClick ? fromP : EmptySquare; fromX = x; fromY = y; dragging = 1; - ReportClick("lift", x, y); + if(!second) ReportClick("lift", x, y); MarkTargetSquares(0); DragPieceBegin(xPix, yPix, FALSE); if(appData.sweepSelect && CanPromote(piece = boards[currentMove][y][x], y)) { @@ -7550,8 +7601,14 @@ LeftClick (ClickType clickType, int xPix, int yPix) // ignore clicks on holdings if(x < BOARD_LEFT || x >= BOARD_RGHT) return; } +printf("A type=%d\n",clickType); - if (clickType == Release && x == fromX && y == fromY && killX < 0) { + if(x == fromX && y == fromY && gameMode == EditPosition && SubtractTimeMarks(&lastClickTime, &prevClickTime) < 200) { + gatingPiece = boards[currentMove][fromY][fromX]; // prepare to copy rather than move + return; + } + + if (clickType == Release && x == fromX && y == fromY && killX < 0 && !sweepSelecting) { DragPieceEnd(xPix, yPix); dragging = 0; if(clearFlag) { // a deferred attempt to click-click move an empty square on top of a piece @@ -7565,10 +7622,9 @@ LeftClick (ClickType clickType, int xPix, int yPix) /* Undo animation damage if any */ DrawPosition(FALSE, NULL); } - if (second || sweepSelecting) { + if (second) { /* Second up/down in same square; just abort move */ - if(sweepSelecting) DrawPosition(FALSE, boards[currentMove]); - second = sweepSelecting = 0; + second = 0; fromX = fromY = -1; gatingPiece = EmptySquare; MarkTargetSquares(1); @@ -7583,7 +7639,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) } clearFlag = 0; - +printf("B\n"); if(gameMode != EditPosition && !appData.testLegality && !legal[y][x] && fromX >= BOARD_LEFT && fromX < BOARD_RGHT && (x != killX || y != killY) && !sweepSelecting) { if(dragging) DragPieceEnd(xPix, yPix), dragging = 0; @@ -7591,7 +7647,7 @@ LeftClick (ClickType clickType, int xPix, int yPix) DrawPosition(TRUE, NULL); return; // ignore to-click } - +printf("(%d,%d)-(%d,%d) %d %d\n",fromX,fromY,toX,toY,x,y); /* we now have a different from- and (possibly off-board) to-square */ /* Completed move */ if(!sweepSelecting) { @@ -7656,7 +7712,9 @@ LeftClick (ClickType clickType, int xPix, int yPix) 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 { + if(x == killX && y == killY) killX = kill2X, killY = kill2Y, kill2X = kill2Y = -1; // cancel last kill + else { + kill2X = killX; kill2Y = killY; killX = x; killY = y; //remeber this square as intermediate ReportClick("put", x, y); // and inform engine ReportClick("lift", x, y); @@ -7703,7 +7761,9 @@ LeftClick (ClickType clickType, int xPix, int yPix) if(gatingPiece != EmptySquare && gameInfo.variant == VariantSChess) promoChoice = ToLower(PieceToChar(gatingPiece)); - if (HasPromotionChoice(fromX, fromY, toX, toY, &promoChoice, appData.sweepSelect)) { + if(legal[toY][toX] == 2) promoChoice = ToLower(PieceToChar(defaultPromoChoice)); // highlight-induced promotion + + if (legal[toY][toX] == 2 && !appData.sweepSelect || HasPromotionChoice(fromX, fromY, toX, toY, &promoChoice, appData.sweepSelect)) { SetHighlights(fromX, fromY, toX, toY); MarkTargetSquares(1); if(gameInfo.variant == VariantSuper || gameInfo.variant == VariantGreat || gameInfo.variant == VariantGrand) { @@ -8639,17 +8699,23 @@ 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; + killX = killY = kill2X = kill2Y = -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!) + } + if(p = strchr(machineMove, ',')) { // we got both legs in one (happens on book move) + safeStrCpy(firstLeg, machineMove, 20); // kludge: fake we received the first leg earlier, and clip it off + safeStrCpy(machineMove, firstLeg + (p - machineMove) + 1, 20); + } + if(firstLeg[0]) { // there was a previous leg; + // only support case where same piece makes two step 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++; + while(isdigit(*p)) p++; // to-square of first leg (which is now copied to machineMove) + if(*p == *buf) // if first-leg to not equal to second-leg from first leg says unmodified (assume it ia King move of castling) 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; @@ -8661,8 +8727,8 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h 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 via %c%c) res=%d", - machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, killX+AAA, killY+ONE, moveType); + snprintf(buf1, MSG_SIZ*10, "Xboard: Forfeit due to invalid move: %s (%c%c%c%c via %c%c, %c%c) res=%d", + machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, killX+AAA, killY+ONE, kill2X+AAA, kill2Y+ONE, moveType); if (gameMode == TwoMachinesPlay) { GameEnds(machineWhite ? BlackWins : WhiteWins, buf1, GE_XBOARD); @@ -8877,7 +8943,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h 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); + s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTableEsc(pieceToChar, buf, SUFFIXES); ASSIGN(appData.pieceToCharTable, buf); } dummy = sscanf(message+s, "%dx%d+%d_%s", &w, &h, &hand, varName); @@ -8888,7 +8954,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h 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 + if(*buf) SetCharTableEsc(pieceToChar, buf, SUFFIXES); // do again, for it was spoiled by InitPosition startedFromSetupPosition = FALSE; } } @@ -8901,9 +8967,10 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h } if(sscanf(message, "piece %s %s", buf2, buf1) == 2) { ChessSquare piece = WhitePawn; - char *p=buf2; - if(*p == '+') piece = CHUPROMOTED WhitePawn, p++; - piece += CharToPiece(*p) - WhitePawn; + char *p=buf2, *q, *s = SUFFIXES, ID = *p; + if(*p == '+') piece = CHUPROMOTED WhitePawn, ID = *++p; + if(q = strchr(s, p[1])) ID += 64*(q - s + 1), p++; + piece += CharToPiece(ID) - WhitePawn; if(cps != &first || appData.testLegality && *engineVariant == NULLCHAR /* always accept definition of */ && piece != WhiteFalcon && piece != BlackFalcon /* wild-card pieces. */ && piece != WhiteCobra && piece != BlackCobra @@ -9038,7 +9105,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h return; } if(!strncmp(message, "highlight ", 10)) { - if(appData.testLegality && appData.markers) return; + if(appData.testLegality && !*engineVariant && appData.markers) return; MarkByFEN(message+10); // [HGM] alien: allow engine to mark board squares return; } @@ -9891,14 +9958,14 @@ ParseGameHistory (char *game) 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; + ChessSquare captured = board[toY][toX], piece, pawn, king, killed, killed2; int p, rookX, oldEP, epRank, berolina = 0; 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 */ if(gameInfo.variant == VariantBerolina) berolina = EP_BEROLIN_A; - oldEP = (signed char)board[EP_STATUS]; + oldEP = (signed char)board[EP_FILE]; epRank = board[EP_RANK]; board[EP_STATUS] = EP_NONE; board[EP_FILE] = board[EP_RANK] = 100; @@ -9913,10 +9980,14 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) // ChessSquare victim; int i; - if( killX >= 0 && killY >= 0 ) // [HGM] lion: Lion trampled over something + if( killX >= 0 && killY >= 0 ) { // [HGM] lion: Lion trampled over something // victim = board[killY][killX], + killed = board[killY][killX], board[killY][killX] = EmptySquare, board[EP_STATUS] = EP_CAPTURE; + if( kill2X >= 0 && kill2Y >= 0) + killed2 = board[kill2Y][kill2X], board[kill2Y][kill2X] = EmptySquare; + } if( board[toY][toX] != EmptySquare ) { board[EP_STATUS] = EP_CAPTURE; @@ -9927,15 +9998,18 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) } } - 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 - } else - if( board[fromY][fromX] == WhitePawn ) { + pawn = board[fromY][fromX]; + if( pawn == WhiteLance || pawn == BlackLance ) { + if( gameInfo.variant != VariantSuper && gameInfo.variant != VariantChu ) { + if(gameInfo.variant == VariantSpartan) board[EP_STATUS] = EP_PAWN_MOVE; // in Spartan no e.p. rights must be set + else pawn += WhitePawn - WhiteLance; // Lance is Pawn-like in most variants, so let Pawn code treat it by this kludge + } + } + if( pawn == WhitePawn ) { if(fromY != toY) // [HGM] Xiangqi sideway Pawn moves should not count as 50-move breakers board[EP_STATUS] = EP_PAWN_MOVE; - if( toY-fromY==2) { - board[EP_FILE] = (fromX + toX)/2; board[EP_RANK] = (fromY + toY)/2; + if( toY-fromY>=2) { + board[EP_FILE] = (fromX + toX)/2; board[EP_RANK] = toY - 1 | 128*(toY - fromY > 2); if(toX>BOARD_LEFT && board[toY][toX-1] == BlackPawn && gameInfo.variant != VariantBerolina || toX < fromX) board[EP_STATUS] = toX | berolina; @@ -9944,11 +10018,11 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) board[EP_STATUS] = toX; } } else - if( board[fromY][fromX] == BlackPawn ) { + if( pawn == BlackPawn ) { if(fromY != toY) // [HGM] Xiangqi sideway Pawn moves should not count as 50-move breakers board[EP_STATUS] = EP_PAWN_MOVE; - if( toY-fromY== -2) { - board[EP_FILE] = (fromX + toX)/2; board[EP_RANK] = (fromY + toY)/2; + if( toY-fromY<= -2) { + board[EP_FILE] = (fromX + toX)/2; board[EP_RANK] = toY + 1 | 128*(fromY - toY > 2); if(toX>BOARD_LEFT && board[toY][toX-1] == WhitePawn && gameInfo.variant != VariantBerolina || toX < fromX) board[EP_STATUS] = toX | berolina; @@ -9983,6 +10057,12 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) if(gameInfo.variant == VariantKnightmate) king += (int) WhiteUnicorn - (int) WhiteKing; + if(pieceDesc[piece] && killX >= 0 && strchr(pieceDesc[piece], 'O') // Betza castling-enabled + && (piece < BlackPawn ? killed < BlackPawn : killed >= BlackPawn)) { // and tramples own + board[toY][toX] = piece; board[fromY][fromX] = EmptySquare; + board[toY][toX + (killX < fromX ? 1 : -1)] = killed; + board[EP_STATUS] = EP_NONE; // capture was fake! + } else /* Code added by Tord: */ /* FRC castling assumed when king captures friendly rook. [HGM] or RxK for S-Chess */ if (board[fromY][fromX] == WhiteKing && board[toY][toX] == WhiteRook || @@ -10010,17 +10090,19 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) } else if (board[fromY][fromX] == king && fromX != BOARD_LEFT && fromX != BOARD_RGHT-1 // [HGM] cylinder */ && toY == fromY && toX > fromX+1) { + for(rookX=fromX+1; board[toY][rookX] == EmptySquare && rookX < BOARD_RGHT-1; rookX++); // castle with nearest piece + board[fromY][toX-1] = board[fromY][rookX]; + board[fromY][rookX] = EmptySquare; board[fromY][fromX] = EmptySquare; board[toY][toX] = king; - board[toY][toX-1] = board[fromY][BOARD_RGHT-1]; - board[fromY][BOARD_RGHT-1] = EmptySquare; } else if (board[fromY][fromX] == king && fromX != BOARD_LEFT && fromX != BOARD_RGHT-1 // [HGM] cylinder */ && toY == fromY && toX < fromX-1) { + for(rookX=fromX-1; board[toY][rookX] == EmptySquare && rookX > 0; rookX--); // castle with nearest piece + board[fromY][toX+1] = board[fromY][rookX]; + board[fromY][rookX] = EmptySquare; board[fromY][fromX] = EmptySquare; board[toY][toX] = king; - 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 != VariantChu) && toY >= BOARD_HEIGHT-promoRank && promoChar // defaulting to Q is done elsewhere @@ -10035,12 +10117,14 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) && (toX != fromX) && gameInfo.variant != VariantXiangqi && gameInfo.variant != VariantBerolina - && (board[fromY][fromX] == WhitePawn) + && (pawn == WhitePawn) && (board[toY][toX] == EmptySquare)) { board[fromY][fromX] = EmptySquare; - board[toY][toX] = WhitePawn; - captured = board[toY - 1][toX]; - board[toY - 1][toX] = EmptySquare; + board[toY][toX] = piece; + if(toY == epRank - 128 + 1) + captured = board[toY - 2][toX], board[toY - 2][toX] = EmptySquare; + else + captured = board[toY - 1][toX], board[toY - 1][toX] = EmptySquare; } else if ((fromY == BOARD_HEIGHT-4) && (toX == fromX) && gameInfo.variant == VariantBerolina @@ -10057,17 +10141,19 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) } else if (board[fromY][fromX] == king && fromX != BOARD_LEFT && fromX != BOARD_RGHT-1 // [HGM] cylinder */ && toY == fromY && toX > fromX+1) { + for(rookX=toX+1; board[toY][rookX] == EmptySquare && rookX < BOARD_RGHT - 1; rookX++); + board[fromY][toX-1] = board[fromY][rookX]; + board[fromY][rookX] = EmptySquare; board[fromY][fromX] = EmptySquare; board[toY][toX] = king; - board[toY][toX-1] = board[fromY][BOARD_RGHT-1]; - board[fromY][BOARD_RGHT-1] = EmptySquare; } else if (board[fromY][fromX] == king && fromX != BOARD_LEFT && fromX != BOARD_RGHT-1 // [HGM] cylinder */ && toY == fromY && toX < fromX-1) { + for(rookX=toX-1; board[toY][rookX] == EmptySquare && rookX > 0; rookX--); + board[fromY][toX+1] = board[fromY][rookX]; + board[fromY][rookX] = EmptySquare; board[fromY][fromX] = EmptySquare; board[toY][toX] = king; - board[toY][toX+1] = board[fromY][BOARD_LEFT]; - board[fromY][BOARD_LEFT] = EmptySquare; } else if (fromY == 7 && fromX == 3 && board[fromY][fromX] == BlackKing && toY == 7 && toX == 5) { @@ -10096,12 +10182,14 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) && (toX != fromX) && gameInfo.variant != VariantXiangqi && gameInfo.variant != VariantBerolina - && (board[fromY][fromX] == BlackPawn) + && (pawn == BlackPawn) && (board[toY][toX] == EmptySquare)) { board[fromY][fromX] = EmptySquare; - board[toY][toX] = BlackPawn; - captured = board[toY + 1][toX]; - board[toY + 1][toX] = EmptySquare; + board[toY][toX] = piece; + if(toY == epRank - 128 - 1) + captured = board[toY + 2][toX], board[toY + 2][toX] = EmptySquare; + else + captured = board[toY + 1][toX], board[toY + 1][toX] = EmptySquare; } else if ((fromY == 3) && (toX == fromX) && gameInfo.variant == VariantBerolina @@ -12027,8 +12115,13 @@ LoadGameOneMove (ChessMove readAhead) if (appData.debugMode) fprintf(debugFP, "Parsed %s into IllegalMove %s\n", yy_text, currentMoveString); - fromX = currentMoveString[0] - AAA; - fromY = currentMoveString[1] - ONE; + if(currentMoveString[1] == '@') { + fromX = CharToPiece(WhiteOnMove(currentMove) ? ToUpper(currentMoveString[0]) : ToLower(currentMoveString[0])); + fromY = DROP_RANK; + } else { + fromX = currentMoveString[0] - AAA; + fromY = currentMoveString[1] - ONE; + } toX = currentMoveString[2] - AAA; toY = currentMoveString[3] - ONE; promoChar = currentMoveString[4]; @@ -12645,7 +12738,10 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList) int numPGNTags = 0; int err, pos = -1; GameMode oldGameMode; - VariantClass oldVariant = gameInfo.variant; /* [HGM] PGNvariant */ + VariantClass v, oldVariant = gameInfo.variant; /* [HGM] PGNvariant */ + char oldName[MSG_SIZ]; + + safeStrCpy(oldName, engineVariant, MSG_SIZ); v = oldVariant; if (appData.debugMode) fprintf(debugFP, "LoadGame(): on entry, gameMode %d\n", gameMode); @@ -13003,6 +13099,10 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList) StartChessProgram(&first); } InitChessProgram(&first, FALSE); + if(gameInfo.variant == VariantUnknown && *oldName) { + safeStrCpy(engineVariant, oldName, MSG_SIZ); + gameInfo.variant = v; + } SendToProgram("force\n", &first); if (startedFromSetupPosition) { SendBoard(&first, forwardMostMove); @@ -13195,8 +13295,8 @@ LoadPosition (FILE *f, int positionNumber, char *title) DisplayError(_("Position not found in file"), 0); return FALSE; } - // [HGM] FEN can begin with digit, any piece letter valid in this variant, or a + for Shogi promoted pieces - fenMode = line[0] >= '0' && line[0] <= '9' || line[0] == '+' || CharToPiece(line[0]) != EmptySquare; + // [HGM] FEN can begin with digit, any piece letter valid in this variant, or a + for Shogi promoted pieces (or * for blackout) + fenMode = line[0] >= '0' && line[0] <= '9' || line[0] == '+' || line[0] == '*' || CharToPiece(line[0]) != EmptySquare; if (pn >= 2) { if (fenMode || line[0] == '#') pn--; @@ -15104,7 +15204,7 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y) AAA + x, ONE + y); SendToICS(buf); } - } else { + } else if(boards[0][y][x] != DarkSquare) { if(boards[0][y][x] != p) nonEmpty++; boards[0][y][x] = p; } @@ -17788,6 +17888,7 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) piece = (ChessSquare)(CHUDEMOTED piece); } *p++ = (piece == DarkSquare ? '*' : PieceToChar(piece)); + if(*p = PieceSuffix(piece)) p++; if(p[-1] == '~') { /* [HGM] flag promoted pieces as '~' (Crazyhouse) */ p[-1] = PieceToChar((ChessSquare)(CHUDEMOTED piece)); @@ -17957,7 +18058,7 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) Boolean ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) { - int i, j, k, w=0, subst=0, shuffle=0; + int i, j, k, w=0, subst=0, shuffle=0, wKingRank = -1, bKingRank = -1; char *p, c; int emptycount, virgin[BOARD_FILES]; ChessSquare piece; @@ -18007,13 +18108,20 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) if (i != 0 && i != BOARD_HEIGHT-1) return FALSE; // only on back-rank board[i][(j++)+gameInfo.holdingsWidth] = ClearBoard; p++; subst++; // placeHolder } else if (*p == '+' || isalpha(*p)) { + char *q, *s = SUFFIXES; if (j >= gameInfo.boardWidth) return FALSE; if(*p=='+') { - piece = CharToPiece(*++p); + char c = *++p; + if(q = strchr(s, p[1])) p++; + piece = CharToPiece(c + (q ? 64*(q - s + 1) : 0)); if(piece == EmptySquare) return FALSE; /* unknown piece */ piece = (ChessSquare) (CHUPROMOTED piece ); p++; if(PieceToChar(piece) != '+') return FALSE; /* unpromotable piece */ - } else piece = CharToPiece(*p++); + } else { + char c = *p++; + if(q = strchr(s, *p)) p++; + piece = CharToPiece(c + (q ? 64*(q - s + 1) : 0)); + } if(piece==EmptySquare) return FALSE; /* unknown piece */ if(*p == '~') { /* [HGM] make it a promoted piece for Crazyhouse */ @@ -18022,6 +18130,8 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) p++; } board[i][(j++)+gameInfo.holdingsWidth] = piece; + if(piece == WhiteKing) wKingRank = i; + if(piece == BlackKing) bKingRank = i; } else { return FALSE; } @@ -18121,6 +18231,13 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) /* [HGM] We NO LONGER ignore the rest of the FEN notation */ /* return the extra info in global variiables */ + while(*p==' ') p++; + + if(!isdigit(*p) && *p != '-') { // we seem to have castling rights. Make sure they are on the rank the King actually is. + if(wKingRank >= 0) for(i=0; i<3; i++) castlingRank[i] = wKingRank; + if(bKingRank >= 0) for(i=3; i<6; i++) castlingRank[i] = bKingRank; + } + /* set defaults in case FEN is incomplete */ board[EP_STATUS] = EP_UNKNOWN; for(i=0; i> 1; // for these variant scanning fails @@ -18165,7 +18281,7 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) && board[BOARD_HEIGHT-1][blackKingFile] != BlackKing) blackKingFile = NoRights; switch(c) { case'K': - for(i=BOARD_RGHT-1; board[0][i]!=WhiteRook && i>whiteKingFile; i--); + for(i=BOARD_RGHT-1; board[castlingRank[2]][i]!=WhiteRook && i>whiteKingFile; i--); board[CASTLING][0] = i != whiteKingFile ? i : NoRights; board[CASTLING][2] = whiteKingFile; if(board[CASTLING][0] != NoRights) virgin[board[CASTLING][0]] |= VIRGIN_W; @@ -18173,7 +18289,7 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) if(whiteKingFile != BOARD_WIDTH>>1|| i != BOARD_RGHT-1) fischer = 1; break; case'Q': - for(i=BOARD_LEFT; i>1|| i != BOARD_LEFT) fischer = 1; break; case'k': - for(i=BOARD_RGHT-1; board[BOARD_HEIGHT-1][i]!=BlackRook && i>blackKingFile; i--); + for(i=BOARD_RGHT-1; board[castlingRank[5]][i]!=BlackRook && i>blackKingFile; i--); board[CASTLING][3] = i != blackKingFile ? i : NoRights; board[CASTLING][5] = blackKingFile; if(board[CASTLING][3] != NoRights) virgin[board[CASTLING][3]] |= VIRGIN_B; @@ -18189,7 +18305,7 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) if(blackKingFile != BOARD_WIDTH>>1|| i != BOARD_RGHT-1) fischer = 1; break; case'q': - for(i=BOARD_LEFT; i= (int)BlackPawn) ? (int)BlackPawn :(int)WhitePawn; + if(j >= CHUPROMOTED WhitePawn) promoted++, j -= CHUPROMOTED WhitePawn; if(j > (int)WhiteQueen) j++; // make space for King if(j > (int) WhiteKing) j = (int)WhiteQueen + 1; p_enc = 2*j + ((int)p < (int)BlackPawn); @@ -328,7 +329,8 @@ hash (int moveNr) pieceGroup = p_enc / 12; p_enc = p_enc % 12; Zobrist = RandomPiece[64*p_enc + (squareNr & 63)]; - switch(pieceGroup) { + if(pieceGroup & 4) Zobrist *= 987654321; + switch(pieceGroup & 3) { case 1: // pieces 5-10 (FEACWM) Zobrist = (Zobrist << 16) ^ (Zobrist >> 48); break; @@ -339,7 +341,9 @@ hash (int moveNr) Zobrist = (Zobrist << 48) ^ (Zobrist >> 16); break; } - if(squareNr >= 64) Zobrist = (Zobrist << 8) ^ (Zobrist >> 56); + if(promoted) Zobrist ^= 123456789*RandomPiece[squareNr & 63]; + if(squareNr & 64) Zobrist = (Zobrist << 8) ^ (Zobrist >> 56); + if(squareNr & 128) Zobrist = (Zobrist << 4) ^ (Zobrist >> 60); // holdings have separate (additive) key, to encode presence of multiple pieces on same square if(f == BOARD_LEFT-2) holdingsKey += Zobrist * boards[moveNr][r][f+1]; else if(f == BOARD_RGHT+1) holdingsKey += Zobrist * boards[moveNr][r][f-1]; else @@ -480,8 +484,11 @@ find_key (FILE *f, uint64 key, entry_t *entry) } } +static int xStep[] = { 0, 1, 1, 1, 0,-1,-1,-1 }; +static int yStep[] = { 1, 1, 0,-1,-1,-1, 0, 1 }; + void -move_to_string (char move_s[6], uint16 move) +move_to_string (char move_s[20], uint16 move) { int f,fr,ff,t,tr,tf,p; int width = BOARD_RGHT - BOARD_LEFT, size; // allow for alternative board formats @@ -495,24 +502,33 @@ move_to_string (char move_s[6], uint16 move) t = move % size; tr = t / width; tf = t % width; - move_s[0] = ff + 'a'; - move_s[1] = fr + '1' - (BOARD_HEIGHT > 9); - move_s[2] = tf + 'a'; - move_s[3] = tr + '1' - (BOARD_HEIGHT > 9); + snprintf(move_s, 9, "%c%d%c%d", ff + 'a', fr + 1 - (BOARD_HEIGHT == 10), tf + 'a', tr + 1 - (BOARD_HEIGHT == 10)); + + if(IS_SHOGI(gameInfo.variant) && p) { + if(p == 2) p = 10; // Lion moves, for boards so big that 10 is out of range + else if(p != 7) p = 8; // use '+' for all others that do not explicitly defer + } // kludge: encode drops as special promotion code if(gameInfo.holdingsSize && p == 9) { move_s[0] = f + '@'; // from square encodes piece type move_s[1] = '@'; // drop symbol p = 0; + } else if(p == 10) { // decode Lion move + int i = t & 7, j = t >> 3 & 7; + tf = ff + xStep[i] + xStep[j]; tr = fr + yStep[i] + yStep[j]; // calculate true to-square + snprintf(move_s, 20, "%c%d%c%d,%c%d%c%d", ff + 'a', fr + 1 - (BOARD_HEIGHT == 10), + ff + xStep[i] + 'a', fr + yStep[i] + 1 - (BOARD_HEIGHT == 10), + ff + xStep[i] + 'a', fr + yStep[i] + 1 - (BOARD_HEIGHT == 10), + tf + 'a', tr + 1 - (BOARD_HEIGHT == 10) ); + p = 0; } // add promotion piece, if any if(p){ - move_s[4] = promote_pieces[p]; - move_s[5] = '\0'; - }else{ - move_s[4] = '\0'; + int len = strlen(move_s); + move_s[len] = promote_pieces[p]; + move_s[len+1] = '\0'; } if(gameInfo.variant != VariantNormal) return; @@ -563,6 +579,8 @@ GetBookMoves (FILE *f, int moveNr, entry_t entries[], int max) return count; } +static int dirty; + int ReadFromBookFile (int moveNr, char *book, entry_t entries[]) { // retrieve all entries for given position from book in 'entries', return number. @@ -570,6 +588,7 @@ ReadFromBookFile (int moveNr, char *book, entry_t entries[]) static char curBook[MSG_SIZ]; if(book == NULL) return -1; + if(dirty) { if(f) fclose(f); dirty = 0; f = NULL; } if(!f || strcmp(book, curBook)){ // keep book file open until book changed strncpy(curBook, book, MSG_SIZ); if(f) fclose(f); @@ -714,13 +733,15 @@ char * MovesToText(int count, entry_t *entries) { int i, totalWeight = 0; - char algMove[6]; + char algMove[12]; char *p = (char*) malloc(40*count+1); for(i=0; i= 0) { // multi-leg move + int dx = killX - fromX, dy = killY - fromY; + for(i=0; i<8; i++) if(dx == xStep[i] && dy == yStep[i]) { + int j; + dx = toX - killX; dy = toY - killY; + for(j=0; j<8; j++) if(dx == xStep[j] && dy == yStep[j]) { + // special encoding in to-square, with promoType = 2. Assumes board >= 64 squares! + return i + 8*j + (2 * width * BOARD_HEIGHT + from) * width * BOARD_HEIGHT; + } + } + i = 0; // if not a valid Lion move, ignore kill-square and promoChar + } return to + (i * width * BOARD_HEIGHT + from) * width * BOARD_HEIGHT; } @@ -760,6 +794,7 @@ TextToMoves (char *text, int moveNum, entry_t *entries) valid = ParseOneMove(text, moveNum, &moveType, &fromX, &fromY, &toX, &toY, &promoChar); text = strstr(text, yy_textstr) + strlen(yy_textstr); // skip what we parsed if(!valid || moveType != NormalMove && moveType != WhiteDrop && moveType != BlackDrop + && moveType != FirstLeg && moveType != WhitePromotion && moveType != BlackPromotion && moveType != WhiteCapturesEnPassant && moveType != BlackCapturesEnPassant && moveType != WhiteKingSideCastle && moveType != BlackKingSideCastle @@ -771,7 +806,7 @@ TextToMoves (char *text, int moveNum, entry_t *entries) entries[count].learnPoints = 0; entries[count].learnCount = 0; } - entries[count].move = CoordsToMove(fromX, fromY, toX, toY, promoChar); + entries[count].move = CoordsToMove(fromX, fromY, toX, toY, promoChar); killX = killY = -1; entries[count].key = hashKey; entries[count].weight = w; count++; @@ -860,6 +895,7 @@ SaveToBook (char *text) writepos += len2; } while(len1); } + dirty = 1; fclose(f); } @@ -981,7 +1017,6 @@ AddGameToBook (int always) } if(appData.debugMode) fprintf(debugFP, "add game to book (%d-%d)\n", backwardMostMove, forwardMostMove); - for(i=backwardMostMove; i + if(1) BoardToTop(); else if(hidden) BoardToTop(); else PaneSwitch(); break; @@ -1916,7 +1923,7 @@ IcsHist (int n, Option *opt, DialogClass dlg) while(!dirty[chat = (chat + 1)%MAX_CHAT]) if(chat == start) break; if(!dirty[chat]) while(!chatPartner[chat = (chat + 1)%MAX_CHAT][0]) if(chat == start) break; - if(chat == start && hidden) chat = 0; // if all unused, start left + if(!chatPartner[chat][0]) break; // if all unused, ignore ChatSwitch(chat + 1); break; case 1: @@ -1955,11 +1962,12 @@ ChatOK (int n) { // can only be called through in chat-partner text-edit, as there is no OK button char buf[MSG_SIZ]; - if(!hidden && (!partner || strcmp(partner, chatPartner[activePartner]))) { + if(!hidden && (!partner || strcmp(partner, chatPartner[activePartner]) || !*partner)) { safeStrCpy(chatPartner[activePartner], partner, MSG_SIZ); SetWidgetText(&chatOptions[CHAT_OUT], "", -1); // clear text if we alter partner SetWidgetText(&chatOptions[CHAT_IN], "", ChatDlg); // clear text if we alter partner SetWidgetLabel(&chatOptions[activePartner+1], chatPartner[activePartner][0] ? chatPartner[activePartner] : _("New Chat")); + if(!*partner) PaneSwitch(); HardSetFocus(&chatOptions[CHAT_IN], 0); } if(line[0] || hidden) { // something was typed (for ICS commands we also allow empty line!) @@ -1972,6 +1980,10 @@ ChatOK (int n) snprintf(buf, MSG_SIZ, "whisper %s\n", line); // WHISPER box uses "whisper" to send else if(!strcmp("shouts", chatPartner[activePartner])) snprintf(buf, MSG_SIZ, "shout %s\n", line); // SHOUT box uses "shout" to send + else if(!strcmp("c-shouts", chatPartner[activePartner])) + snprintf(buf, MSG_SIZ, "cshout %s\n", line); // C-SHOUT box uses "cshout" to send + else if(!strcmp("kibitzes", chatPartner[activePartner])) + snprintf(buf, MSG_SIZ, "kibitz %s\n", line); // KIBITZ box uses "kibitz" to send else { if(!atoi(chatPartner[activePartner])) { snprintf(buf, MSG_SIZ, "> %s\n", line); // echo only tells to handle, not channel @@ -2094,6 +2106,7 @@ ChatProc () void ConsoleAutoPopUp (char *buf) { + if(*buf == 27) { if(appData.icsActive && DialogExists(ChatDlg)) HardSetFocus (&chatOptions[CHAT_IN], ChatDlg); return; } if(!appData.autoBox) return; if(appData.icsActive) { // text typed to board in ICS mode: divert to ICS input box if(DialogExists(ChatDlg)) { // box already exists: append to current contents @@ -2476,14 +2489,14 @@ CCB (int n) Option mainOptions[] = { // description of main window in terms of generic dialog creator { 0, 0xCA, 0, NULL, NULL, "", NULL, BarBegin, "" }, // menu bar - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("File") }, - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Edit") }, - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("View") }, - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Mode") }, - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Action") }, - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Engine") }, - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Options") }, - { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("Help") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_File") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Edit") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_View") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Mode") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Action") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("E_ngine") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Options") }, + { 0, COMBO_CALLBACK, 0, NULL, (void*)&MenuCallback, NULL, NULL, DropDown, N_("_Help") }, { 0, 0, 0, NULL, (void*)&SizeKludge, "", NULL, BarEnd, "" }, { 0, LR|T2T|BORDER|SAME_ROW, 0, NULL, NULL, NULL, NULL, Label, "1" }, // optional title in window { 50, LL|TT, 100, NULL, (void*) &LogoW, NULL, NULL, Skip, "" }, // white logo @@ -2544,6 +2557,12 @@ Exp (int n, int x, int y) static int but1, but3, oldW, oldH; int menuNr = -3, sizing, f, r; TimeMark now; + extern Boolean right; + + if(right) { // kludgy way to let button 1 double as button 3 when back-end requests this + if(but1 && n == 0) but1 = 0, but3 = 1; + else if(n == -1) n = -3, right = FALSE; + } if(n == 0) { // motion if(SeekGraphClick(Press, x, y, 1)) return NULL; @@ -2961,6 +2980,34 @@ DirSelProc (int n, int sel) } void +StartDir (char *filter, char *newName) +{ + static char *gamesDir, *trnDir, *imgDir, *bookDir; + static char curDir[MSG_SIZ]; + char **res = NULL; + if(!filter || !*filter) return; + if(strstr(filter, "pgn")) res = &gamesDir; else + if(strstr(filter, "bin")) res = &bookDir; else + if(strstr(filter, "png")) res = &imgDir; else + if(strstr(filter, "trn")) res = &trnDir; else + if(strstr(filter, "fen")) res = &appData.positionDir; + if(res) { + if(newName) { + char *p, *q; + if(*newName) { + ASSIGN(*res, newName); + for(p=*res; q=strchr(p, '/');) p = q + 1; *p = NULLCHAR; + } + if(*curDir) chdir(curDir); + *curDir = NULLCHAR; + } else { + getcwd(curDir, MSG_SIZ); + if(*res && **res) chdir(*res); + } + } +} + +void Browse (DialogClass dlg, char *label, char *proposed, char *ext, Boolean pathFlag, char *mode, char **name, FILE **fp) { int j=0; diff --git a/dialogs.h b/dialogs.h index 9c00356..36cd212 100644 --- a/dialogs.h +++ b/dialogs.h @@ -169,6 +169,7 @@ void SetScroll P((Option *opt, float f)); void AddHandler P((Option *opt, DialogClass dlg, int nr)); void SendText P((int n)); void DisplayLogos P((Option *left, Option *right)); +void StartDir P((char *filter, char *newName)); void Browse P((DialogClass dlg, char *label, char *proposed, char *ext, Boolean pathFlag, char *mode, char **name, FILE **fp)); void FileNamePopUpWrapper P((char *label, char *def, char *filter, FileProc proc, diff --git a/draw.c b/draw.c index d0b3eda..3cb5727 100644 --- a/draw.c +++ b/draw.c @@ -162,10 +162,14 @@ SelectPieces(VariantClass v) 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]; + pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteClaw]; + pngPieceBitmaps[i][(int)WhiteClaw] = pngPieceBitmaps2[i][(int)WhiteNightrider]; + pngPieceBitmaps[i][(int)WhiteUnicorn] = pngPieceBitmaps2[i][(int)WhiteHorned]; + pngPieceBitmaps[i][(int)WhiteSilver] = pngPieceBitmaps2[i][(int)WhiteStag]; + pngPieceBitmaps[i][(int)WhiteFalcon] = pngPieceBitmaps2[i][(int)WhiteEagle]; + pngPieceBitmaps[i][(int)WhiteHorned] = pngPieceBitmaps2[i][(int)WhiteUnicorn]; + pngPieceBitmaps[i][(int)WhiteStag] = pngPieceBitmaps2[i][(int)WhiteSilver]; + pngPieceBitmaps[i][(int)WhiteEagle] = pngPieceBitmaps2[i][(int)WhiteFalcon]; } } } @@ -282,13 +286,14 @@ 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", "Lion", - "GoldPawn", "HSword", "PromoHorse", "PromoDragon", "Leopard", "PromoSword", "Prince", "Phoenix", "Kylin", "PromoRook", "PromoHSword", - "Dolphin", "Chancellor", "Unicorn", "Hawk", "Sword", "Princess", "HCrown", "Knight", "Elephant", "PromoBishop", "King", + "Canon", "Nightrider", "CrownedBishop", "CrownedRook", "Crown", "Chancellor", "Hawk", "Lance", "Cobra", "Unicorn", "Lion", + "GoldPawn", "Claw", "PromoHorse", "PromoDragon", "GoldLance", "PromoSword", "Prince", "Phoenix", "Kylin", "PromoRook", "PromoHSword", + "Dolphin", "Sword", "Leopard", "HSword", "GoldSilver", "Princess", "HCrown", "Knight", "Elephant", "PromoBishop", "King", "Claw", "GoldKnight", "GoldLance", "GoldSilver", NULL }; -char *backupPiece[] = { "King", "Queen", "Lion" }; // pieces that map on other when not kanji +char *backupPiece[] = { "Princess", NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, "King", "Queen", "Lion" }; // pieces that map on other when not kanji RsvgHandle * LoadSVG (char *dir, int color, int piece, int retry) @@ -299,9 +304,11 @@ LoadSVG (char *dir, int color, int piece, int retry) GError *svgerror=NULL; cairo_surface_t *img; cairo_t *cr; + char *name = (retry ? backupPiece[piece - WhiteGrasshopper] : pngPieceNames[piece]); - snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White", - retry ? backupPiece[piece - WhiteMonarch] : pngPieceNames[piece]); + if(!name) return NULL; + + snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White", name); if(svg || *dir && (svg = rsvg_handle_new_from_file(buf, &svgerror))) { @@ -319,7 +326,7 @@ LoadSVG (char *dir, int color, int piece, int retry) return svg; } - if(!retry && piece >= WhiteMonarch && piece <= WhiteNothing) // pieces that are only different in kanji sets + if(!retry && piece >= WhiteGrasshopper && piece <= WhiteNothing) // pieces that are only different in kanji sets return LoadSVG(dir, color, piece, 1); if(svgerror) g_error_free(svgerror); diff --git a/gamelist.c b/gamelist.c index a6c688c..8976164 100644 --- a/gamelist.c +++ b/gamelist.c @@ -359,6 +359,8 @@ GameListBuild (FILE *f) case GameIsDrawn: case GameUnfinished: if(!currentListGame) break; + if(currentListGame->gameInfo.result == GameUnfinished) + currentListGame->gameInfo.result = cm; // correct result tag with actual result if (currentListGame->gameInfo.resultDetails != NULL) { free(currentListGame->gameInfo.resultDetails); } diff --git a/gtk/xboard.c b/gtk/xboard.c index ef35f2a..dbcc9e5 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -1930,7 +1930,7 @@ void MoveTypeInProc(eventkey) buf[0]=eventkey->keyval; buf[1]='\0'; - if (eventkey->keyval > 32 && eventkey->keyval < 256) + if (eventkey->keyval > 32 && eventkey->keyval < 256 || *buf == 27) ConsoleAutoPopUp (buf); } @@ -2319,11 +2319,14 @@ void FileNamePopUpWrapper(label, def, filter, proc, pathFlag, openMode, name, fp char *cp; char curDir[MSG_SIZ]; + StartDir(filter, NULL); // change to start directory for this file type + if(def && *def && def[strlen(def)-1] == '/') { getcwd(curDir, MSG_SIZ); chdir(def); } + /* make a copy of the filter string, so that strtok can work with it*/ cp = strdup(filter); @@ -2396,8 +2399,10 @@ void FileNamePopUpWrapper(label, def, filter, proc, pathFlag, openMode, name, fp ASSIGN(*name, filename); ScheduleDelayedEvent(DelayedLoad, 50); } + StartDir(filter, filename); g_free (filename); - }; + } + else StartDir(filter, ""); gtk_widget_destroy (dialog); ModeHighlight(); diff --git a/gtk/xoptions.c b/gtk/xoptions.c index 67675ff..48da90b 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -502,6 +502,8 @@ TypeInProc (GtkWidget *widget, GdkEventKey *event, gpointer gdata) shiftState = event->state & GDK_SHIFT_MASK; controlState = event->state & GDK_CONTROL_MASK; switch(event->keyval) { + case 'e': return (controlState && IcsHist( 5, opt, dlg)); + case 'h': return (controlState && IcsHist( 8, opt, dlg)); case 'n': return (controlState && IcsHist(14, opt, dlg)); case 'o': return (controlState && IcsHist(15, opt, dlg)); case GDK_Tab: IcsHist(10, opt, dlg); break; @@ -1016,7 +1018,9 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata) gtkfilter = gtk_file_filter_new(); gtkfilter_all = gtk_file_filter_new(); - char fileext[MSG_SIZ]; + char fileext[MSG_SIZ], *filter = currentOption[opt_i].textValue; + + StartDir(filter, NULL); // change to start directory for this file type /* select file or folder depending on option_type */ if (currentOption[opt_i].type == PathName) @@ -1060,9 +1064,10 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata) filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); entry = currentOption[opt_i].handle; gtk_entry_set_text (GTK_ENTRY (entry), filename); + StartDir(filter, filename); // back to original, and remember this one g_free (filename); - } + else StartDir(filter, ""); // change back to original directory gtk_widget_destroy (dialog); dialog = NULL; } @@ -1430,7 +1435,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); g_signal_connect(label, "button-press-event", G_CALLBACK(MemoEvent), (gpointer) &option[i]); gtk_widget_set_sensitive(label, TRUE); } - Pack(hbox, table, label, left, left+3, top, 0); + Pack(hbox, table, label, left, left+r, top, 0); break; case SaveButton: case Button: @@ -1563,12 +1568,16 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); top--; msg = _(option[i].name); // write name on the menu button #ifndef OSXAPP - if(tinyLayout) { strcpy(def, msg); def[tinyLayout] = NULLCHAR; msg = def; } // clip menu text to keep menu bar small + if(tinyLayout) { // clip menu text to keep menu bar small + int clip = tinyLayout + 1; + strcpy(def, msg + (msg[clip-1] == '_')); + def[clip] = NULLCHAR; msg = def; + } #endif // XtSetArg(args[j], XtNmenuName, XtNewString(option[i].name)); j++; // XtSetArg(args[j], XtNlabel, msg); j++; option[i].handle = (void*) - (menuButton = gtk_menu_item_new_with_label(msg)); + (menuButton = gtk_menu_item_new_with_mnemonic(msg)); gtk_widget_show(menuButton); option[i].textValue = (char*) (menu = CreateMenuPopup(option + i, i + 256*dlgNr, -1)); gtk_menu_item_set_submenu(GTK_MENU_ITEM (menuButton), menu); diff --git a/menus.c b/menus.c index 653d978..9ddfbad 100644 --- a/menus.c +++ b/menus.c @@ -105,6 +105,7 @@ extern char *getenv(); char *gameCopyFilename, *gamePasteFilename; Boolean saveSettingsOnExit; char *settingsFileName; +char gamesDir[MSG_SIZ], positionsDir[MSG_SIZ], textureDir[MSG_SIZ], bookDir[MSG_SIZ], piecesDir[MSG_SIZ]; static int LoadGamePopUp (FILE *f, int gameNumber, char *title) diff --git a/moves.c b/moves.c index b276ded..e560d34 100644 --- a/moves.c +++ b/moves.c @@ -114,19 +114,32 @@ SameColor (ChessSquare piece1, ChessSquare piece2) #define SameColor(piece1, piece2) (piece1 < EmptySquare && piece2 < EmptySquare && (piece1 < BlackPawn) == (piece2 < BlackPawn) || piece1 == DarkSquare || piece2 == DarkSquare) #endif -char pieceToChar[] = { +unsigned char pieceToChar[EmptySquare+1] = { 'P', 'N', 'B', 'R', 'Q', 'F', 'E', 'A', 'C', 'W', 'M', 'O', 'H', 'I', 'J', 'G', 'D', 'V', 'L', 'S', 'U', 'K', 'p', 'n', 'b', 'r', 'q', 'f', 'e', 'a', 'c', 'w', 'm', 'o', 'h', 'i', 'j', 'g', 'd', 'v', 'l', 's', 'u', 'k', 'x' }; -char pieceNickName[EmptySquare]; +unsigned char pieceNickName[EmptySquare]; char PieceToChar (ChessSquare p) { + int c; if((int)p < 0 || (int)p >= (int)EmptySquare) return('x'); /* [HGM] for safety */ - return pieceToChar[(int) p]; + c = pieceToChar[(int) p]; + if(c & 128) c = c & 63 | 64; + return c; +} + +char +PieceSuffix (ChessSquare p) +{ + int c; + if((int)p < 0 || (int)p >= (int)EmptySquare) return 0; /* [HGM] for safety */ + c = pieceToChar[(int) p]; + if(c < 128) return 0; + return SUFFIXES[c - 128 >> 6]; } int @@ -265,8 +278,9 @@ void MovesFromString (Board board, int flags, int f, int r, int tx, int ty, int angle, char *desc, MoveCallback cb, VOIDSTAR cl) { char buf[80], *p = desc, *atom = NULL; - int mine, his, dir, bit, occup, i, promoRank = -1; + int mine, his, dir, bit, occup, i, ep, promoRank = -1; ChessMove promo= NormalMove; ChessSquare pc = board[r][f]; + if(pc == DarkSquare) return; // this is not a piece, but a 'hole' in the board if(flags & F_WHITE_ON_MOVE) his = 2, mine = 1; else his = 1, mine = 2; if(pc == WhitePawn || pc == WhiteLance) promo = WhitePromotion, promoRank = BOARD_HEIGHT-1; else if(pc == BlackPawn || pc == BlackLance) promo = BlackPromotion, promoRank = 0; @@ -384,7 +398,7 @@ MovesFromString (Board board, int flags, int f, int r, int tx, int ty, int angle for(dir=0, bit=1; dir<8; dir++, bit += bit) { // loop over directions int i = expo, j = skip, hop = mode, vx, vy, loop = 0; if(!(bit & dirSet)) continue; // does not move in this direction - if(dy != 1) j = 0; // + if(dy != 1 || mode & 1024) j = 0; // vx = dx*rot[dir][0] + dy*rot[dir][1]; // rotate step vector vy = dx*rot[dir][2] + dy*rot[dir][3]; if(tx < 0) x = f, y = r; // start square @@ -394,6 +408,7 @@ MovesFromString (Board board, int flags, int f, int r, int tx, int ty, int angle if(y < 0 || y >= BOARD_HEIGHT) break; // vertically off-board: always done if(x < BOARD_LEFT) { if(mode & 128) x += BOARD_RGHT - BOARD_LEFT, loop++; else break; } if(x >= BOARD_RGHT) { if(mode & 128) x -= BOARD_RGHT - BOARD_LEFT, loop++; else break; } + if(board[y][x] == DarkSquare) break; // black squares are supposed to be off board if(j) { j--; continue; } // skip irrespective of occupation if(!jump && board[y - vy + vy/2][x - vx + vx/2] != EmptySquare) break; // blocked if(jump > 1 && board[y - vy + vy/2][x - vx + vx/2] == EmptySquare) break; // no hop @@ -424,16 +439,29 @@ MovesFromString (Board board, int flags, int f, int r, int tx, int ty, int angle continue; } if(hop & 32+64) { if(occup != 4) { if(hop & 64 && i != 1) i = 2; hop &= 31; } continue; } // hopper - if(mode & 8 && y == board[EP_RANK] && occup == 4 && board[EP_FILE] == x) { // to e.p. square + ep = board[EP_RANK]; + if(mode & 8 && occup == 4 && board[EP_FILE] == x && (y == (ep & 127) || y - vy == ep - 128)) { // to e.p. square (or 2nd e.p. square) cb(board, flags, mine == 1 ? WhiteCapturesEnPassant : BlackCapturesEnPassant, r, f, y, x, cl); } if(mode & 1024) { // castling i = 2; // kludge to elongate move indefinitely if(occup == 4) continue; // skip empty squares - if(x == BOARD_LEFT && board[y][x] == initialPosition[y][x]) // reached initial corner piece + if((x == BOARD_LEFT + skip || x > BOARD_LEFT + skip && vx < 0 && board[y][x-1-skip] == DarkSquare) + && board[y][x] == initialPosition[y][x]) { // reached initial corner piece + if(pc != WhiteKing && pc != BlackKing) { // non-royal castling (to be entered as two-leg move via 'Rook') + if(killX < 0) cb(board, flags, FirstLeg, r, f, y, x, cl); if(killX < f) + legNr <<= 1, cb(board, flags, NormalMove, r, f, y, f - expo, cl), legNr >>= 1; + } else cb(board, flags, mine == 1 ? WhiteQueenSideCastle : BlackQueenSideCastle, r, f, y, f - expo, cl); - if(x == BOARD_RGHT-1 && board[y][x] == initialPosition[y][x]) + } + if((x == BOARD_RGHT-1-skip || x < BOARD_RGHT-1-skip && vx > 0 && board[y][x+1+skip] == DarkSquare) + && board[y][x] == initialPosition[y][x]) { + if(pc != WhiteKing && pc != BlackKing) { + if(killX < 0) cb(board, flags, FirstLeg, r, f, y, x, cl); if(killX > f) + legNr <<= 1, cb(board, flags, NormalMove, r, f, y, f + expo, cl), legNr >>= 1; + } else cb(board, flags, mine == 1 ? WhiteKingSideCastle : BlackKingSideCastle, r, f, y, f + expo, cl); + } break; } if(mode & 16 && (board[y][x] == WhiteKing || board[y][x] == BlackKing)) break; // tame piece, cannot capture royal @@ -1801,13 +1829,17 @@ LegalityTest (Board board, int flags, int rf, int ff, int rt, int ft, int promoC if(cl.kind != NormalMove || promoChar == NULLCHAR || promoChar == '=') return cl.kind; if(promoChar != '+') return CharToPiece(promoChar) == EmptySquare ? ImpossibleMove : IllegalMove; - if(PieceToChar(CHUPROMOTED board[rf][ff]) != '+') return ImpossibleMove; + if(PieceToChar(CHUPROMOTED board[rf][ff]) != '+') { + if(PieceToChar(CHUPROMOTED (board[rf][ff] < BlackPawn ? WhitePawn : BlackPawn)) != '.') + return ImpossibleMove; + } return flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion; } else if(gameInfo.variant == VariantShogi) { /* [HGM] Shogi promotions. '=' means defer */ if(rf != DROP_RANK && cl.kind == NormalMove) { ChessSquare piece = board[rf][ff]; + int zone = BOARD_HEIGHT/3 + (BOARD_HEIGHT == 8); if(promoChar == PieceToChar(BlackQueen)) promoChar = NULLCHAR; /* [HGM] Kludge */ if(promoChar == 'd' && (piece == WhiteRook || piece == BlackRook) || @@ -1819,7 +1851,7 @@ if(appData.debugMode)fprintf(debugFP,"SHOGI promoChar = %c\n", promoChar ? promo return CharToPiece(promoChar) == EmptySquare ? ImpossibleMove : IllegalMove; else if(flags & F_WHITE_ON_MOVE) { if( (int) piece < (int) WhiteWazir && - (rf >= BOARD_HEIGHT - BOARD_HEIGHT/3 || rt >= BOARD_HEIGHT - BOARD_HEIGHT/3) ) { + (rf >= BOARD_HEIGHT - zone || rt >= BOARD_HEIGHT - zone) ) { if( (piece == WhitePawn || piece == WhiteQueen) && rt > BOARD_HEIGHT-2 || piece == WhiteKnight && rt > BOARD_HEIGHT-3) /* promotion mandatory */ cl.kind = promoChar == '=' ? IllegalMove : WhitePromotion; @@ -1827,7 +1859,7 @@ if(appData.debugMode)fprintf(debugFP,"SHOGI promoChar = %c\n", promoChar ? promo cl.kind = promoChar == '+' ? WhitePromotion : WhiteNonPromotion; } else cl.kind = promoChar == '+' ? IllegalMove : NormalMove; } else { - if( (int) piece < (int) BlackWazir && (rf < BOARD_HEIGHT/3 || rt < BOARD_HEIGHT/3) ) { + if( (int) piece < (int) BlackWazir && (rf < zone || rt < zone) ) { if( (piece == BlackPawn || piece == BlackQueen) && rt < 1 || piece == BlackKnight && rt < 2 ) /* promotion obligatory */ cl.kind = promoChar == '=' ? IllegalMove : BlackPromotion; @@ -1957,6 +1989,7 @@ DisambiguateCallback (Board board, int flags, ChessMove kind, int rf, int ff, in { register DisambiguateClosure *cl = (DisambiguateClosure *) closure; int wildCard = FALSE; ChessSquare piece = board[rf][ff]; + extern int kifu; // in parser.c // [HGM] wild: for wild-card pieces rt and rf are dummies if(piece == WhiteFalcon || piece == BlackFalcon || @@ -1974,6 +2007,18 @@ DisambiguateCallback (Board board, int flags, ChessMove kind, int rf, int ff, in if(cl->count && rf == cl->rf && ff == cl->ff) return; // duplicate move + if(cl->count == 1 && kifu & 0x7E && cl->rfIn == -1 && cl->ffIn == -1) { // traditional Shogi disambiguation required + int this = 1, other = 1; + if(kifu & 2) this &= (flags & 1 ? rt > rf : rt < rf), other &= (flags & 1 ? cl->rt > cl->rf : cl->rt < cl->rf); + if(kifu & 4) this &= (flags & 1 ? rt < rf : rt > rf), other &= (flags & 1 ? cl->rt < cl->rf : cl->rt > cl->rf); + if(kifu & 8) this &= (rf == rt), other &= (cl->rt == cl->rf); + if(kifu & 0x10) this &= (flags & 1 ? ft <= ff : ft >= ff), other &= (flags & 1 ? cl->ft <= cl->ff : cl->ft >= cl->ff); + if(kifu & 0x20) this &= (flags & 1 ? ft >= ff : ft <= ff), other &= (flags & 1 ? cl->ft >= cl->ff : cl->ft <= cl->ff); + if(kifu & 0x40) this &= (ft == ff), other &= (cl->ft == cl->ff); // should never be used + if(!other) cl->count--; // the old move did not satisfy the requested relative position, erase it + if(!this) return; // the current move does not satisfy the requested relative position, ignore it + } + cl->count++; if(cl->count == 1 || board[rt][ft] != EmptySquare) { // [HGM] oneclick: if multiple moves, be sure we remember capture @@ -2015,7 +2060,7 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure) GenLegal(board, flags|F_IGNORE_CHECK, DisambiguateCallback, (VOIDSTAR) closure, closure->pieceIn); if (closure->count == 0) { /* No, it's not even that */ - if(!appData.testLegality && closure->pieceIn != EmptySquare) { + if(!appData.testLegality && !pieceDefs && closure->pieceIn != EmptySquare) { int f, r; // if there is only a single piece of the requested type on the board, use that closure->rt = closure->rtIn, closure->ft = closure->ftIn; for(r=0; rrfIn != DROP_RANK && closure->kind == NormalMove) { ChessSquare piece = closure->piece; + int zone = BOARD_HEIGHT/3 + (BOARD_HEIGHT == 8); if (c == 'd' && (piece == WhiteRook || piece == BlackRook) || c == 'h' && (piece == WhiteBishop || piece == BlackBishop) || c == 'g' && (piece <= WhiteFerz || piece <= BlackFerz && piece >= BlackPawn) ) @@ -2071,7 +2117,7 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure) if(c != NULLCHAR && c != '+' && c != '=') closure->kind = IllegalMove; // otherwise specifying a piece is illegal else if(flags & F_WHITE_ON_MOVE) { if( (int) piece < (int) WhiteWazir && - (closure->rf >= BOARD_HEIGHT-(BOARD_HEIGHT/3) || closure->rt >= BOARD_HEIGHT-(BOARD_HEIGHT/3)) ) { + (closure->rf >= BOARD_HEIGHT-zone || closure->rt >= BOARD_HEIGHT-zone) ) { if( (piece == WhitePawn || piece == WhiteQueen) && closure->rt > BOARD_HEIGHT-2 || piece == WhiteKnight && closure->rt > BOARD_HEIGHT-3) /* promotion mandatory */ closure->kind = c == '=' ? IllegalMove : WhitePromotion; @@ -2079,7 +2125,7 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure) closure->kind = c == '+' ? WhitePromotion : WhiteNonPromotion; } else closure->kind = c == '+' ? IllegalMove : NormalMove; } else { - if( (int) piece < (int) BlackWazir && (closure->rf < BOARD_HEIGHT/3 || closure->rt < BOARD_HEIGHT/3) ) { + if( (int) piece < (int) BlackWazir && (closure->rf < zone || closure->rt < zone) ) { if( (piece == BlackPawn || piece == BlackQueen) && closure->rt < 1 || piece == BlackKnight && closure->rt < 2 ) /* promotion obligatory */ closure->kind = c == '=' ? IllegalMove : BlackPromotion; @@ -2311,6 +2357,7 @@ CoordsToAlgebraic (Board board, int flags, int rf, int ff, int rt, int ft, int p } if(c=='+') *outp++ = c; *outp++ = ToUpper(PieceToChar(piece)); + if(*outp = PieceSuffix(piece)) outp++; if (cl.file || (cl.either && !cl.rank)) { *outp++ = ff + AAA; diff --git a/moves.h b/moves.h index 6be5299..c162ffa 100644 --- a/moves.h +++ b/moves.h @@ -51,16 +51,19 @@ *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ +#define SUFFIXES "'!" + extern ChessSquare PromoPiece P((ChessMove moveType)); extern ChessMove PromoCharToMoveType P((int whiteOnMove, int promoChar)); extern char PieceToChar P((ChessSquare p)); +extern char PieceSuffix P((ChessSquare p)); extern ChessSquare CharToPiece P((int c)); extern int PieceToNumber P((ChessSquare p)); extern void CopyBoard P((Board to, Board from)); extern int CompareBoards P((Board board1, Board board2)); -extern char pieceToChar[(int)EmptySquare+1]; -extern char pieceNickName[(int)EmptySquare]; +extern unsigned char pieceToChar[(int)EmptySquare+1]; +extern unsigned char pieceNickName[(int)EmptySquare]; extern char *pieceDesc[(int)EmptySquare]; extern Board initialPosition; extern Boolean pieceDefs; diff --git a/ngamelist.c b/ngamelist.c index d202ad6..53df236 100644 --- a/ngamelist.c +++ b/ngamelist.c @@ -223,6 +223,7 @@ GameListReplace (int page) void GameListUpdate () { + if(!DialogExists(GameListDlg)) return; GameListPrepare(False, False); GameListReplace(0); } diff --git a/osxapp/OSX-theme/gtk-2.0/assets/handle.png b/osxapp/OSX-theme/gtk-2.0/assets/handle.png deleted file mode 100755 index 51978ae..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/handle.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-18.png deleted file mode 100755 index 269e90b..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-insensitive-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-insensitive-18.png deleted file mode 100644 index 3a46e46..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-insensitive-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-18.png deleted file mode 100755 index 72c1d48..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-insensitive-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-insensitive-18.png deleted file mode 100644 index 4d4f6ab..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-insensitive-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-18.png deleted file mode 100755 index fd0a398..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-insensitive-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-insensitive-18.png deleted file mode 100644 index bae1909..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-insensitive-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-18.png deleted file mode 100755 index c7d8751..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-insensitive-18.png b/osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-insensitive-18.png deleted file mode 100644 index 9ba70fc..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-insensitive-18.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-bottom.png b/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-bottom.png deleted file mode 100755 index 70fffda..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-bottom.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-left.png b/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-left.png deleted file mode 100755 index 747c57b..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-left.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-right.png b/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-right.png deleted file mode 100755 index 04fd5dc..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-right.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-top.png b/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-top.png deleted file mode 100755 index 138f1cd..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-top.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/notebook.png b/osxapp/OSX-theme/gtk-2.0/assets/notebook.png deleted file mode 100755 index e8f03f6..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/notebook.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/null.png b/osxapp/OSX-theme/gtk-2.0/assets/null.png deleted file mode 100755 index 013d98b..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/null.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/scroll-background.png b/osxapp/OSX-theme/gtk-2.0/assets/scroll-background.png deleted file mode 100755 index dbe3655..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/scroll-background.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/slider-horizontal.png b/osxapp/OSX-theme/gtk-2.0/assets/slider-horizontal.png deleted file mode 100755 index 975822c..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/slider-horizontal.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-bottom-active.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-bottom-active.png deleted file mode 100755 index e2c8024..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-bottom-active.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-bottom.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-bottom.png deleted file mode 100755 index 4d0d72f..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-bottom.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-left-active.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-left-active.png deleted file mode 100755 index 593dc35..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-left-active.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-left.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-left.png deleted file mode 100755 index 4841bba..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-left.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-right-active.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-right-active.png deleted file mode 100755 index 8394854..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-right-active.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-right.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-right.png deleted file mode 100755 index c82bee8..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-right.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-top-active.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-top-active.png deleted file mode 100755 index b3f6f9b..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-top-active.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/tab-top.png b/osxapp/OSX-theme/gtk-2.0/assets/tab-top.png deleted file mode 100755 index e01f001..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/tab-top.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/assets/toolbar.png b/osxapp/OSX-theme/gtk-2.0/assets/toolbar.png deleted file mode 100755 index 364f896..0000000 Binary files a/osxapp/OSX-theme/gtk-2.0/assets/toolbar.png and /dev/null differ diff --git a/osxapp/OSX-theme/gtk-2.0/gtkrc b/osxapp/OSX-theme/gtk-2.0/gtkrc deleted file mode 100755 index fceba6e..0000000 --- a/osxapp/OSX-theme/gtk-2.0/gtkrc +++ /dev/null @@ -1,798 +0,0 @@ - -gtk-color-scheme = "base_color:#ffffff\nfg_color:#202020\ntooltip_fg_color:#ffffff\nselected_bg_color:#3b6eeb\nselected_fg_color:#ffffff\ntext_color:#202020\nbg_color:#ededed\ntooltip_bg_color:#000000\nlink_color:#0033ff" - -gtk_color_scheme = "menu_gradient:#4455F6" - -gtk-auto-mnemonics = 1 - -gtk-button-images = 0 - -style "default" { - xthickness = 1 - ythickness = 1 - - ####################### - # Style Properties - ####################### - GtkButton::child-displacement-x = 0 - GtkButton::child-displacement-y = 0 - GtkButton::default-border = {0, 0, 0, 0} - GtkButton::image-spacing = 4 - GtkToolButton::icon-spacing = 4 - - GtkCheckButton::indicator-size = 18 - GtkRadioButton::indicator-size = 18 - - GtkEntry::honors-transparent-bg-hint = 1 - GtkEntry::invisible-char = 0x2022 - GtkEntry::progress-border = {2, 2, 2, 2} - GtkEntry::state-hint = 0 - - GtkProgressBar::min-vertical-bar-width = 13 - GtkProgressBar::min-horizontal-bar-height = 13 - - GtkExpander::expander-size = 14 - - GtkMenuBar::internal-padding = 0 - GtkMenuBar::window-dragging = 1 - # GtkMenuBar::shadow-type = GTK_SHADOW_NONE # En Unity se habilita esta linea - - GtkMenu::horizontal-padding = 0 - GtkMenu::vertical-padding = 0 - GtkSeparatorMenuItem::horizontal-padding = 7 - - GtkNotebook::tab-overlap = 2 # Default = 2 - GtkNotebook::tab-curvature = 1 # Default = 1 - - GtkPaned::handle-size = 6 - - GtkRange::trough-border = 0 - GtkRange::trough-side-details = 0 - GtkRange::slider-width = 15 - GtkRange::stepper-size = 1 - - GtkScale::slider-length = 14 - GtkScale::slider-width = 14 - GtkScale::trough-side-details = 0 - - GtkScrollbar::has-backward-stepper = 0 - GtkScrollbar::has-forward-stepper = 1 # El maldito rollo de gtk2 y las scrollbars - GtkScrollbar::min-slider-length = 30 - GtkScrollbar::slider-width = 9 - GtkScrollbar::trough-border = 3 - GtkScrollbar::activate-slider = 0 - GtkScrollbar::trough-side-details = 0 - GtkScrollbar::stepper-size = 1 - - GtkScrolledWindow::scrollbar-spacing = 0 - GtkScrolledWindow::scrollbars-within-bevel = 1 - - GtkToolbar::internal-padding = 0 - GtkToolbar::window-dragging = 1 - - GtkTreeView::expander-size = 7 - GtkTreeView::odd_row_color = "#F4F6FA" - # en eclipse afecta backcolor de "Quick Type Hierarchy (CTRL+T)" - # GtkTreeView::even_row_color = "#FFF" - - GtkWidget::link-color = @link_color - GtkWidget::focus-padding = 0 - WnckTasklist::fade-overlay-rect = 0 - - GtkWindow::resize-grip-height = 0 # Ocultar resize-grip - GtkWindow::resize-grip-width = 0 - - #################### - # Color Definitions - #################### - bg[NORMAL] = @bg_color - bg[PRELIGHT] = shade (1.02, @bg_color) - bg[SELECTED] = @selected_bg_color - bg[INSENSITIVE] = @bg_color - bg[ACTIVE] = shade (0.9, @bg_color) - - fg[NORMAL] = @text_color - fg[PRELIGHT] = @fg_color - fg[SELECTED] = @selected_fg_color - fg[INSENSITIVE] = darker (@bg_color) - fg[ACTIVE] = @fg_color - - text[NORMAL] = @text_color - text[PRELIGHT] = @text_color - text[SELECTED] = @selected_fg_color - text[INSENSITIVE] = darker (@bg_color) - text[ACTIVE] = @selected_fg_color - - base[NORMAL] = @base_color - base[PRELIGHT] = shade (0.95, @bg_color) - base[SELECTED] = @selected_bg_color - base[INSENSITIVE] = @bg_color - base[ACTIVE] = shade (0.9, @selected_bg_color) - - engine "murrine" { - animation = FALSE - arrowstyle = 1 # Estilo flechas menu (triangulos) - colorize_scrollbar = TRUE - contrast = 1.0 - default_button_color = shade (1.05, "#66a3e3") - expanderstyle = 0 # Treview expander (triangulo) - cellstyle = 0 - focusstyle = 0 - glazestyle = 0 # 0 = flat highlight, 1 = curved highlight, 2 = concave style, 3 = top curved highlight, 4 = beryl highlight - glowstyle = 4 # 0 = top, 1 = bottom, 2 = top and bottom, 3 = horizontal, 4 = centered glow - gradient_shades = {1.00, 0.91, 0.92, 0.81} - highlight_shade = 1.0 - lightborder_shade = 1.0 - lightborderstyle = 1 # 0 = top side, 1 = all sides - listviewstyle = 0 # 0 = nothing, 1 = dotted, 2 = line - menubaritemstyle = 0 # 0 = menuitem look, 1 = button look - menubarstyle = 1 # 0 = flat, 1 = glassy, 2 = gradient, 3 = striped - menuitemstyle = 1 # 0 = flat, 1 = glassy, 2 = striped - menustyle = 3 # 0 = no vertical menu stripe, 1 = display vertical menu stripe, 2 = faint? 3 = borderless - progressbarstyle = 1 - reliefstyle = 3 # 0 = flat, 1 = inset, 2 = shadow, 3 = shadow with gradient, 4 = stronger shadow with gradient - rgba = FALSE # alpha transparency - roundness = 3 # 0 = square - scrollbarstyle = 0 # 0 = nothing - separatorstyle = 0 - shadow_shades = {2.0, 1.0} - sliderstyle = 0 # 0 = nothing added - stepperstyle = 1 # 0 = standard, 1 = integrated stepper handles, 2 = unknown - toolbarstyle = 1 # 0 = flat, 1 = glassy, 2 = gradient - trough_shades = {0.85, 1.0} - } -} - -style "wide" { - xthickness = 2 - ythickness = 2 -} - -style "wider" { - xthickness = 3 - ythickness = 3 -} - -style "button" { - xthickness = 3 - ythickness = 3 - - bg[ACTIVE] = shade (1.15, "#5c8fe9") # Pulsado #80B8EA - bg[NORMAL] = shade (0.93, "#FFF") - bg[PRELIGHT] = shade (0.95, "#FFF") - bg[SELECTED] = shade (1.25, "#5c8fe9") # Default - bg[INSENSITIVE] = shade (0.88, "#FFF") - - engine "murrine" { - border_shades = {1.0, 0.90} - contrast = 0.90 - gradient_shades = {1.25,1.02,1.01,1.05} - lightborderstyle = 1 - lightborder_shade = 1.1 - textstyle = 1 - } -} - -style "checkradio_label" { - fg[ACTIVE] = @text_color # Forzar color texto en radiobutton-eclipse -} - -style "checkbutton" { - engine "pixmap" { - image { - function = CHECK - recolorable = TRUE - state = NORMAL - shadow = OUT - overlay_file = "assets/l-checkbox-unchecked-18.png" - overlay_stretch = FALSE - } - - image { - function = CHECK - recolorable = TRUE - state = PRELIGHT - shadow = OUT - overlay_file = "assets/l-checkbox-unchecked-18.png" - overlay_stretch = FALSE - } - - image { - function = CHECK - recolorable = TRUE - state = ACTIVE - shadow = OUT - overlay_file = "assets/l-checkbox-unchecked-18.png" - overlay_stretch = FALSE - } - - image { - function = CHECK - recolorable = TRUE - state = INSENSITIVE - shadow = OUT - overlay_file = "assets/l-checkbox-unchecked-insensitive-18.png" - overlay_stretch = FALSE - } - - image { - function = CHECK - recolorable = TRUE - state = NORMAL - shadow = IN - overlay_file = "assets/l-checkbox-checked-18.png" - overlay_stretch = FALSE - } - - image { - function = CHECK - recolorable = TRUE - state = PRELIGHT - shadow = IN - overlay_file = "assets/l-checkbox-checked-18.png" - overlay_stretch = FALSE - } - - image { - function = CHECK - recolorable = TRUE - state = ACTIVE - shadow = IN - overlay_file = "assets/l-checkbox-checked-18.png" - overlay_stretch = FALSE - } - - - image { - function = CHECK - recolorable = TRUE - state = INSENSITIVE - shadow = IN - overlay_file = "assets/l-checkbox-checked-insensitive-18.png" - overlay_stretch = FALSE - } - - image { - function = FLAT_BOX - recolorable = TRUE - stretch = TRUE - file = "assets/null.png" - border = {2, 2, 2, 2} - } - } -} - -style "entry" { # text - xthickness = 3 - ythickness = 3 - - bg[SELECTED] = mix (0.5, @selected_bg_color, @base_color) - fg[SELECTED] = @text_color - - engine "murrine" { - contrast = 1.0 - roundness = 3 - border_shades = {1.45, 1.35} - focusstyle = 3 - - } -} - -style "expander" { - bg[NORMAL] = "#FFF" - fg[NORMAL] = shade (2.0, @text_color) - fg[PRELIGHT] = shade (2.0, @text_color) - - engine "murrine" { - contrast = 1.2 - gradient_shades = {1.0, 1.0, 1.0, 1.0} - } -} - -style "frame_title" { - fg[NORMAL] = lighter (@fg_color) -} - -style "handle" { - engine "pixmap" { - image { - function = HANDLE - overlay_file = "assets/handle.png" - overlay_border = {0, 0, 0, 0} - overlay_stretch = FALSE - orientation = HORIZONTAL - file = "assets/null.png" - border = {0, 0, 0, 0} - stretch = TRUE - } - - image { - function = HANDLE - overlay_file = "assets/handle.png" - overlay_border = {0, 0, 0, 0} - overlay_stretch = FALSE - orientation = VERTICAL - file = "assets/null.png" - border = {0, 0, 0, 0} - stretch = TRUE - } - } -} -class "GtkPaned" style "handle" - -style "menubar" { - # Modificado - xthickness = 3 - ythickness = 3 - - fg[NORMAL] = shade (1.99, @fg_color) - bg[NORMAL] = shade (0.90, @bg_color) - - engine "murrine" { - gradient_shades = {1.00,0.96,0.96,0.89} - border_shades = {1.1, 0.9} - contrast = 1.10 - lightborderstyle = 1 - } -} - -style "menu" { - xthickness = 0 - ythickness = 0 - - bg[NORMAL] = shade (1.05, "#ededed") - - GtkMenuItem::arrow-scaling = 0.5 - - engine "murrine" { - gradient_shades = {1.0, 1.0, 1.0, 1.0} - border_shades = {1.1, 0.9} - roundness = 0 # 0 = squared - contrast = 0.8 - } -} - -style "menu_item_white" { - xthickness = 2 - ythickness = 3 - - fg[PRELIGHT] = @selected_fg_color - bg[PRELIGHT] = @menu_gradient - bg[SELECTED] = @menu_gradient - - engine "murrine" { - gradient_shades = {1.20, 1.10, 1.10, 1.00} - roundness = 1 - border_shades = {1.60, 1.0} - roundness = 1 - contrast = 0.9 - } -} - -style "menu_item_black" { - xthickness = 2 - ythickness = 3 - - fg[PRELIGHT] = @selected_fg_color - bg[PRELIGHT] = shade (0.94, "#3C3CF0") - bg[SELECTED] = shade (0.94, "#3C3CF0") - - engine "murrine" { - gradient_shades = {1.30, 1.15, 1.15, 1.00} - roundness = 1 - #contrast = 0.0 - } -} - -style "notebook" { - xthickness = 2 - ythickness = 2 - - bg[NORMAL] = shade (0.96, @bg_color) # selected tab entire - bg[ACTIVE] = shade (1.12, @bg_color) # unselected tab - - engine "murrine" { - gradient_shades = {1.20,0.98,0.92,0.65} - contrast = 0.75 - roundness = 3 - } - -} - -style "progressbar" { - xthickness = 0 - ythickness = 0 - - fg[PRELIGHT] = @selected_fg_color - #bg[SELECTED] = "#7088CA" - bg[SELECTED] =shade (0.90, "#80B8EA") - - engine "murrine" { - gradient_shades = {1.30, 1.15, 1.15, 1.0} - roundness = 4 - } -} - -style "radiobutton" { - engine "pixmap" { - image { - function = OPTION - recolorable = TRUE - state = NORMAL - shadow = OUT - overlay_file = "assets/l-radio-unselected-18.png" - overlay_stretch = FALSE - } - - image { - function = OPTION - recolorable = TRUE - state = PRELIGHT - shadow = OUT - overlay_file = "assets/l-radio-unselected-18.png" - overlay_stretch = FALSE - } - - image { - function = OPTION - recolorable = TRUE - state = ACTIVE - shadow = OUT - overlay_file = "assets/l-radio-unselected-18.png" - overlay_stretch = FALSE - } - - image { - function = OPTION - recolorable = TRUE - state = INSENSITIVE - shadow = OUT - overlay_file = "assets/l-radio-unselected-insensitive-18.png" - overlay_stretch = FALSE - } - - image { - function = OPTION - recolorable = TRUE - state = NORMAL - shadow = IN - overlay_file = "assets/l-radio-selected-18.png" - overlay_stretch = FALSE - } - - image { - function = OPTION - recolorable = TRUE - state = PRELIGHT - shadow = IN - overlay_file = "assets/l-radio-selected-18.png" - overlay_stretch = FALSE - } - - image { - function = OPTION - recolorable = TRUE - state = ACTIVE - shadow = IN - overlay_file = "assets/l-radio-selected-18.png" - overlay_stretch = FALSE - } - - - image { - function = OPTION - recolorable = TRUE - state = INSENSITIVE - shadow = IN - overlay_file = "assets/l-radio-selected-insensitive-18.png" - overlay_stretch = FALSE - } - - image { - function = FLAT_BOX - recolorable = TRUE - stretch = TRUE - file = "assets/null.png" - border = {2, 2, 2, 2} - } - } -} - -style "scale" { # slider - # Modificado - xthickness = 2 - ythickness = 2 - - bg[NORMAL] = shade (0.90, "#8EBDDB") - bg[SELECTED] = shade (0.90, "#8EBDDB") - bg[PRELIGHT] = shade (0.90, "#8EBDDB") - bg[INSENSITIVE] = shade (0.90, @bg_color) - - bg[ACTIVE] = shade (0.95, @bg_color) - - engine "murrine" { - #gradient_shades = {0.65,1.00,1.00,1.35} - gradient_shades = {0.95,1.05,1.10,1.30} - glowstyle = 2 # 0 = top, 1 = bottom, 2 = top and bottom, 3 = horizontal, 4 = centered glow - glow_shade = 1.99 - roundness = 18 - border_shades = {0.7, 1.2} - contrast = 0.6 - lightborderstyle = 1 - trough_shades = {0.9, 1.1} - } -} - -style "scrollbar" { - bg[SELECTED] = shade (0.74, @base_color) - bg[ACTIVE] = shade (0.96, @base_color) - - # color flechas (stepper) - fg[NORMAL] = shade (1.00, @base_color) - fg[PRELIGHT] = shade (1.00, @base_color) - fg[ACTIVE] = shade (1.00, @base_color) - fg[SELECTED] = shade (1.00, @base_color) - fg[INSENSITIVE] = shade (1.00, @base_color) - - engine "murrine" { - roundness = 8 - gradient_shades = {1.0,1.0,1.0,1.0} - highlight_shade = 1.0 - glow_shade = 1.0 - #reliefstyle = 0 - prelight_shade = .75 - gradient_colors = FALSE - lightborder_shade = 1.0 - lightborderstyle = 0 - trough_shades = {1.06, 1.11} - border_shades = {1.24, 1.24} - contrast = 0.00 - } -} - -style "overlay_scrollbar" -{ - bg[SELECTED] = shade (1.0, @selected_bg_color) - bg[INSENSITIVE] = shade (0.85, @bg_color) - bg[ACTIVE] = shade (0.6, @bg_color) -} - -style "spinbutton" = "button" { # input/stepper - #bg[NORMAL] = "#FFF" - engine "murrine" { - contrast = 0.90 - lightborderstyle = 0 - border_shades = {1.1, 0.9} - lightborder_shade = 1.30 - } -} - -style "toolbar" { - - engine "murrine" { - contrast = 0.80 - lightborder_shade = 1.00 - gradient_shades = {0.98,1.00,1.00,1.02} - # gradient_shades = {1.00,0.98,0.98,0.96} # En Unity - } -} - -style "toolbar_button" { - xthickness = 3 - ythickness = 3 - - bg[PRELIGHT] = shade (1.05, "#BBCCEE") - bg[ACTIVE] = shade (1.00, "#BBCCEE") # Pulsado - bg[SELECTED] = shade (0.95, "#BBCCEE") # Default enter - bg[INSENSITIVE] = shade (0.95, "#FFF") - - engine "murrine" { - border_shades = {1.00, 1.00} - contrast = 0.8 - gradient_shades = {1.00,0.96,0.96,0.92} - lightborderstyle = 1 - textstyle = 1 - } - -} - -style "tooltips" { - xthickness = 8 - ythickness = 4 - - bg[NORMAL] = @tooltip_bg_color - fg[NORMAL] = @tooltip_fg_color - - GtkWidget::new-tooltip-style = 0 - - engine "murrine" { - border_colors = { "#343434", "#343434" } - } -} - -style "treeview" { - - engine "murrine" { - gradient_shades = {1.0, 1.0, 1.0, 1.0} - separatorstyle = 0 - } -} - -style "treeview_header" = "button" { - ythickness = 1 - GtkWidget ::focus-padding = 0 - - bg[ACTIVE] = shade (1.00, "#80B8EA") # Pulsado - bg[NORMAL] = shade (0.96, "#FFF") - bg[PRELIGHT] = shade (1.05, "#80B8EA") - bg[SELECTED] = shade (0.95, "#80B8EA") # Default enter - bg[INSENSITIVE] = shade (1.00, "#FFF") - - engine "murrine" { - border_shades = {1.2, 1.05} - contrast = 1.22 - gradient_shades = {1.25,1.02,0.99,1.15} - - lightborderstyle = 1 - textstyle = 1 - } -} - -style "checkradio" = "button" { - xthickness = 3 - ythickness = 3 - GtkRadioButton::indicator-size = 16 - GtkCheckButton::indicator-size = 16 - - base[NORMAL] = shade (0.95, @base_color) # radiocheck normal - bg[SELECTED] = shade (1.25, "#5c8fe9") # radiocheck color checked - - text[NORMAL] = shade (0.50, @selected_bg_color) # indicador normal - text[PRELIGHT] = shade (0.35, @selected_bg_color) # indicador hover - text[ACTIVE] = shade (0.15, @selected_bg_color) # indicador click - - bg[ACTIVE] = shade (0.80, @bg_color) # button option "#80B8EA" - - engine "murrine" { - reliefstyle = 3 - } -} - -############################################################################### -# The following part of the gtkrc applies the different styles to the widgets. -############################################################################### - -# The default style is applied to every widget -class "GtkWidget" style "default" -class "GtkSeparator" style "wide" -class "GtkFrame" style "wide" -class "GtkCalendar" style "wide" -class "GtkEntry" style "entry" - - -class "GtkSpinButton" style "spinbutton" -class "GtkScale" style "scale" -class "GtkVScale" style "scale" -class "GtkHScale" style "scale" - -class "GtkScrollbar" style "scrollbar" -#widget "*ToggleSwitch*" style "toolbar_button" -widget_class "*" style "toolbar" -widget_class "*" style "toolbar" - -# Overlay scrollbar -widget_class "*" style "overlay_scrollbar" -widget_class "*" style "overlay_scrollbar" -# General matching follows. The order is choosen so that the right styles override -# each other. EG. progressbar needs to be more important than the menu match. -widget_class "*" style "button" -widget_class "*" style "notebook" - -widget_class "*.*." style "entry" -widget_class "**" style "menubar" -widget_class "**" style "menu" -widget_class "**" style "menu_item_white" -#widget_class "*.*" style "menu_item_white" -#widget_class "*.*" style "menu_item_black" - -widget_class "*.*.*" style:highest "toolbar_button" - - -widget_class "*.." style "frame_title" -widget_class "*.*" style "treeview" - -class "*GtkExpander*" style "expander" - -widget_class "*" style "progressbar" - -# Treeview headers (and similar stock GTK+ widgets) -widget_class "*.." style "treeview_header" -widget_class "*.." style "treeview_header" -widget_class "*.." style "treeview_header" -widget_class "*.." style "treeview_header" - -# The window of the tooltip is called "gtk-tooltip" -widget "gtk-tooltip*" style "tooltips" - -widget_class "**" style "checkbutton" -widget_class "***" style:highest "checkbutton" -widget_class "***" style:highest "checkbutton" -widget_class "***" style:highest "checkbutton" -widget_class "**" style:highest "checkradio_label" - -widget_class "**" style "checkradio" -widget_class "***" style:highest "radiobutton" -widget_class "***" style:highest "radiobutton" -widget_class "***" style:highest "radiobutton" -widget_class "**" style:highest "checkradio_label" - -widget "MozillaGtkWidget*GtkCheck*" style:highest "checkbutton" -widget "MozillaGtkWidget*GtkRadio*" style:highest "radiobutton" - -########################################################################## -# Following are special cases and workarounds for issues in applications. -########################################################################## -# For Google Chrome/Chromium integration. -style "chrome-gtk-frame" { - ChromeGtkFrame::frame-gradient-size = 120 - ChromeGtkFrame::frame-color = shade (0.46, @bg_color) - ChromeGtkFrame::inactive-frame-color = shade (0.46, @bg_color) - ChromeGtkFrame::frame-gradient-color = shade (0.96, @bg_color) - ChromeGtkFrame::inactive-frame-gradient-color = shade (0.96, @bg_color) - ChromeGtkFrame::scrollbar-trough-color = shade (1.00, @bg_color) - ChromeGtkFrame::scrollbar-slider-prelight-color = shade (0.85, @bg_color) - ChromeGtkFrame::scrollbar-slider-normal-color = shade (0.78, @bg_color) -} -class "ChromeGtkFrame" style "chrome-gtk-frame" - -# For places where the text color is used instead of the fg color. -style "text_is_fg_color_workaround" { - text[NORMAL] = @fg_color - text[PRELIGHT] = @fg_color - text[SELECTED] = @selected_fg_color - text[ACTIVE] = @fg_color - text[INSENSITIVE] = darker (@bg_color) -} -widget_class "*.." style "text_is_fg_color_workaround" - -# For menus where the text color is used instead of the fg color. -style "menuitem_text_is_fg_color_workaround" { - text[NORMAL] = @fg_color - text[PRELIGHT] = @selected_fg_color - text[SELECTED] = @selected_fg_color - text[ACTIVE] = @fg_color - text[INSENSITIVE] = darker (@bg_color) -} -widget "*.gtk-combobox-popup-menu.*" style "menuitem_text_is_fg_color_workaround" - -# For places where the fg color is used instead of the text color. -style "fg_is_text_color_workaround" { - fg[NORMAL] = @text_color - fg[PRELIGHT] = @text_color - fg[SELECTED] = @selected_fg_color - fg[ACTIVE] = @selected_fg_color - fg[INSENSITIVE] = darker (@bg_color) -} -widget_class "**" style "fg_is_text_color_workaround" -widget_class "*" style "fg_is_text_color_workaround" -widget_class "*" style "fg_is_text_color_workaround" - -# For gvim scrollbars. -style "vim-scrollbar" = "scrollbar" { - GtkScrollbar ::slider_width = 16 - GtkScrollbar ::stepper_size = 16 - - engine "pixmap" { - image { - function = BOX - orientation = VERTICAL - file = "assets/scroll-background.png" - } - } -} -widget "vim-main-window.*Scrollbar*" style "vim-scrollbar" - -# For Eclipse (swt) toolbars. -widget "*swt*toolbar*" style "default" - - diff --git a/parser.c b/parser.c index c5b79fa..13caa9f 100644 --- a/parser.c +++ b/parser.c @@ -51,6 +51,236 @@ static char fromString = 0, lastChar = '\n'; #define ALPHABETIC 2 #define BADNUMBER (-2000000000) +#define XCO 0 +#define YCO 53 +#define PIECE 94 +#define MISC 155 +#define JIS 200 + +unsigned char kanjiTab[] = { + '1', 0357, 0274, 0221, // kanji notation for arabic digits + '2', 0357, 0274, 0222, + '3', 0357, 0274, 0223, + '4', 0357, 0274, 0224, + '5', 0357, 0274, 0225, + '6', 0357, 0274, 0226, + '7', 0357, 0274, 0227, + '8', 0357, 0274, 0230, + '9', 0357, 0274, 0231, + 'x', 0345, 0220, 0214, + 's', 0345, 0205, 0210, // sente + 'g', 0345, 0276, 0214, // gote + '-', 0346, 0212, 0225, // resign + 0, + 'a', 0344, 0270, 0200, // in reality these are numbers in Japanese a=1, b=2 etc. + 'b', 0344, 0272, 0214, + 'c', 0344, 0270, 0211, + 'd', 0345, 0233, 0233, + 'e', 0344, 0272, 0224, + 'f', 0345, 0205, 0255, + 'g', 0344, 0270, 0203, + 'h', 0345, 0205, 0253, + 'i', 0344, 0271, 0235, + ' ', 0343, 0200, 0200, + 0, + 'K', 0347, 0216, 0211, // piece names + 'K', 0347, 0216, 0213, + 'G', 0351, 0207, 0221, + 'S', 0351, 0212, 0200, + 'R', 0351, 0243, 0233, + 'B', 0350, 0247, 0222, + 'N', 0346, 0241, 0202, + 'L', 0351, 0246, 0231, + 'P', 0346, 0255, 0251, + 'r', 0351, 0276, 0215, + 'b', 0351, 0246, 0254, + 'p', 0343, 0201, 0250, + 'r', 0347, 0253, 0234, + '+', 0346, 0210, 0220, + 'G', 0, 0, 0, + 0, + '+', 0346, 0210, 0220, // helper + '@', 0346, 0211, 0223, + 'p', 0346, 0211, 0213, // player + ':', 0357, 0274, 0232, + '-', 0344, 0272, 0206, + 'f', 0344, 0270, 0212, + 's', 0345, 0257, 0204, + 'b', 0345, 0274, 0225, + 'r', 0345, 0267, 0246, + 'l', 0345, 0217, 0263, + 'v', 0347, 0233, 0264, + 0, + // shift-JIS + '1', 0202, 0120, 0, + '2', 0202, 0121, 0, + '3', 0202, 0122, 0, + '4', 0202, 0123, 0, + '5', 0202, 0124, 0, + '6', 0202, 0125, 0, + '7', 0202, 0126, 0, + '8', 0202, 0127, 0, + '9', 0202, 0130, 0, + 'x', 0223, 0257, 0, + 's', 0220, 0346, 0, + 'g', 0214, 0343, 0, + '-', 0223, 0212, 0, + 0, + 'a', 0210, 0352, 0, + 'b', 0223, 0361, 0, + 'c', 0216, 0117, 0, + 'd', 0216, 0154, 0, + 'e', 0214, 0334, 0, + 'f', 0230, 0132, 0, + 'g', 0216, 0265, 0, + 'h', 0224, 0252, 0, + 'i', 0213, 0343, 0, + ' ', 0201, 0100, 0, + 0, + 'K', 0213, 0312, 0, + 'K', 0213, 0312, 0, + 'G', 0213, 0340, 0, + 'S', 0213, 0342, 0, + 'R', 0224, 0362, 0, + 'B', 0212, 0160, 0, + 'N', 0214, 0152, 0, + 'L', 0215, 0201, 0, + 'P', 0225, 0340, 0, + 'r', 0227, 0264, 0, + 'b', 0224, 0156, 0, + 'p', 0202, 0306, 0, + 'r', 0227, 0263, 0, + '+', 0220, 0254, 0, + 'G', 0, 0, 0, + 0, + '+', 0220, 0254, 0, + '@', 0221, 0305, 0, +// 'p', 0214, 0343, 0, + 'p', 0216, 0350, 0, + ':', 0201, 0106, 0, + '-', 0227, 0271, 0, + 'f', 0217, 0343, 0, + 's', 0212, 0361, 0, + 'b', 0210, 0370, 0, + 'r', 0215, 0266, 0, + 'l', 0211, 0105, 0, + 'v', 0222, 0274, 0, + 0, + +}; + +int NextUnit P((char **p)); + +int kifu = 0; + +char +GetKanji (char **p, int start) +{ + unsigned char *q = *(unsigned char **) p; + int i; + + if((*q & 0x80) == 0) return 0; // plain ASCII, refuse to parse + if((**p & 0xC0) == 0x80) { // this is an illegal starting code in utf-8, so assume shift-JIS + for(i=start+JIS; kanjiTab[i]; i+=4) { + if(q[0] == kanjiTab[i+1] && q[1] == kanjiTab[i+2]) { + (*p) += 2; kifu = 0x80; + return kanjiTab[i]; + } + } + (*p) += (kifu ? 2 : 1); // assume this is an unrecognized kanji when reading kif files + return 0; + } + + for(i=start; kanjiTab[i]; i+=4) { + if(q[0] == kanjiTab[i+1] && q[1] == kanjiTab[i+2] && q[2] == kanjiTab[i+3]) { + (*p) += 3; kifu = 0x80; + return kanjiTab[i]; + } + } + + if((q[0] & 0xE0) == 0xC0 && (q[1] & 0xC0) == 0x80) (*p) += 2; else // for now skip unrecognized utf-8 characters + if((q[0] & 0xF0) == 0xE0 && (q[1] & 0xC0) == 0x80 && (q[2] & 0xC0) == 0x80) (*p) += 3; else + if((q[0] & 0xF8) == 0xF0 && (q[1] & 0xC0) == 0x80 && (q[2] & 0xC0) == 0x80 && (q[3] & 0xC0) == 0x80) (*p) += 4; + else if(**p & 0x80) return -1; // not valid utf-8 + + return 0; // unrecognized but valid kanji (skipped), or plain ASCII +} + +int +KifuMove (char **p) +{ + static char buf[MSG_SIZ]; + char *ptr = buf+3, *q, k; + int wom = quickFlag ? quickFlag&1 : WhiteOnMove(yyboardindex); + k = GetKanji(p, XCO); + if(k < 0) { (*p)++; return Nothing; } // must try shift-JIS here + if(k >= '1' && k <= '9') { + buf[0] = k; buf[1] = GetKanji(p, YCO); // to-square coords + } else if(k == 'x') { + if(GetKanji(p, YCO) != ' ') (*p) -= 3; // skip spacer kanji after recapture + } else if((k == 's' || k == 'g') && GetKanji(p, MISC) == 'p' && GetKanji(p, MISC) == ':') { // player name + snprintf(yytext, MSG_SIZ, "[%s \"", k == 's' ? "White" : "Black"); // construct PGN tag + for(q=yytext+8; **p && **p != '\n' && **p != '\r' && q < yytext + MSG_SIZ; ) *q++ = *(*p)++; + strcpy(q, "\"]\n"); parseStart = yytext; lastChar = '\n'; + return PGNTag; + } else if(k == '-' && GetKanji(p, MISC) == '-') { // resign + int res; + parseStart = yytext; + if(wom) + res = BlackWins, strcpy(yytext, "{sente resigns} 0-1"); + else res = WhiteWins, strcpy(yytext, "{gote resigns} 1-0"); + return res; + } else { + while(**p && **p != '\n') (*p)++; // unrecognized Japanese kanji: skip to end of line + return Nothing; + } + buf[3] = GetKanji(p, PIECE); // piece ID + if(buf[3] == '+') buf[2] = '+', buf[3] = GetKanji(p, PIECE); // +N, +L, +S + k = GetKanji(p, MISC); + if(k == '@') { // drop move + buf[4] = '@', buf[5] = buf[0], buf[6] = buf[1]; buf[7] = NULLCHAR; + if(appData.debugMode) fprintf(debugFP, "kifu drop %s\n", ptr); + return NextUnit(&ptr); + } + + kifu = 0x80; + do { // read disambiguation (and promotion) kanji + switch(k) { + case '+': kifu |= 1; break; + case 'f': kifu |= 2; break; + case 'b': kifu |= 4; break; + case 's': kifu |= 8; break; + case 'l': kifu |= 0x10; break; + case 'r': kifu |= 0x20; break; + case 'v': kifu |= 0x40; break; + } + } while(k = GetKanji(p, MISC)); + + if(**p == '(' && (*p)[3] == ')') { // kif disambiguation + buf[4] = (*p)[1]; buf[5] = (*p)[2] + 'a' - '1'; buf[6] = buf[0]; buf[7] = buf[1]; buf[8] = (kifu & 1)*'+'; buf[9] = NULLCHAR; + (*p) += 4; ptr++; // strip off piece name if we know full from-square + if(appData.debugMode) fprintf(debugFP, "kifu move %s\n", ptr); + return NextUnit(&ptr); + } else { // kif2 + char *q = buf+4; + if(islower(buf[3])) // kludge: kanji for promoted types translate as lower case + buf[3] += 'A' - 'a', buf[2] = '+', ptr--; // so prefix with '+' + if(kifu * ~1) { // disambiguation was given, and thus is probably needed + if(buf[3] != 'B' && buf[3] != 'R') { // stepper, so distance must be <= 1 (N or L never need vertical disambiguation!) + if(kifu & 0x10) *q++ = buf[0] - (wom ? -1 : 1); // translate left/right/straight to PSN file disambiguators + if(kifu & 0x20) *q++ = buf[0] + (wom ? -1 : 1); + if(kifu & 0x40) *q++ = buf[0], kifu |= 2; // kludge: 'straight' only needs disambiguation if forward! + if(kifu & 2) *q++ = buf[1] + (wom ? -1 : 1); // translate forward/backward/sideway to PSN rank disambiguators + if(kifu & 4) *q++ = buf[1] - (wom ? -1 : 1); + if(kifu & 8) *q++ = buf[1]; + } // for B, R, +B and +R it gets ugly, as we cannot deduce the distance, and the Disambiguate callback has to directly look at 'kifu' + } + *q++ = buf[0]; *q++ = buf[1]; *q++ = (kifu & 1)*'+'; *q = NULLCHAR; + if(appData.debugMode) fprintf(debugFP, "kif2 move %s\n", ptr); + return NextUnit(&ptr); + } +} + int ReadLine () { // Read one line from the input file, and append to the buffer @@ -181,14 +411,17 @@ NextUnit (char **p) } parseStart = oldp = *p; // remember where we begin - // ********* attempt to recognize a SAN move in the leading non-blank text ***** piece = separator = promoted = slash = n = 0; for(i=0; i<4; i++) coord[i] = -1, type[i] = NOTHING; + if(**p & 0x80) return KifuMove(p); // non-ascii. Could be some kanj notation for Shogi or Xiangqi if(**p == '+') (*p)++, promoted++; if(**p >= 'a' && **p <= 'z' && (*p)[1]== '@') piece =*(*p)++ + 'A' - 'a'; else if(**p >= 'A' && **p <= 'Z') { + static char s[] = SUFFIXES; + char *q; piece = *(*p)++; // Note we could test for 2-byte non-ascii names here + if(q = strchr(s, **p)) (*p)++, piece += 64*(q - s + 1); if(**p == '/') slash = *(*p)++; } while(n < 4) { @@ -259,7 +492,7 @@ NextUnit (char **p) else if(toY >= BOARD_HEIGHT || toY < 0) return ImpossibleMove; // vert off-board to-square if(toX < BOARD_LEFT || toX >= BOARD_RGHT) return ImpossibleMove; if(piece) { - cl.pieceIn = CharToPiece(wom ? piece : ToLower(piece)); + cl.pieceIn = CharToPiece(wom ? piece : piece + 'a' - 'A'); if(cl.pieceIn == EmptySquare) return ImpossibleMove; // non-existent piece if(promoted) cl.pieceIn = (ChessSquare) (CHUPROMOTED cl.pieceIn); } else cl.pieceIn = EmptySquare; @@ -267,6 +500,7 @@ NextUnit (char **p) fromY = DROP_RANK; fromX = cl.pieceIn; currentMoveString[0] = piece; currentMoveString[1] = '@'; + currentMoveString[4] = NULLCHAR; return LegalityTest(boards[yyboardindex], PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, fromY, fromX, toY, toX, NULLCHAR); } if(type[1] == NOTHING && type[0] != NOTHING) { // there is a disambiguator @@ -349,7 +583,7 @@ badMove:// we failed to find algebraic move // ********* PGN tags ****************************************** if(**p == '[') { - oldp = ++(*p); + oldp = ++(*p); kifu = 0; if(Match("--", p)) { // "[--" could be start of position diagram if(!Scan(']', p) && (*p)[-3] == '-' && (*p)[-2] == '-') return PositionDiagram; *p = oldp; @@ -418,7 +652,7 @@ badMove:// we failed to find algebraic move return (int) LegalityTest(boards[yyboardindex], PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.! rf, ff, rt, ft, promo); - } + } else if(Match("01", p)) return Nothing; // prevent this from being mistaken for move number 1 } @@ -443,6 +677,12 @@ badMove:// we failed to find algebraic move commentEnd = *p; if(i) return Comment; // return comment that runs to EOF immediately } if(commentEnd) SkipWhite(p); + if(kifu && **p == '*') { // .kif comment + char *q = yytext; + while(**p && **p != '\n') { if(q < yytext + 10*MSG_SIZ-3) *q++ = **p; (*p)++; } + parseStart = yytext; *yytext = '{'; strcpy(q, "}\n"); // wrap in braces + return Comment; + } if(Match("*", p)) result = GameUnfinished; else if(**p == '0') { if( Match("0-1", p) || Match("0/1", p) || Match("0:1", p) || @@ -528,6 +768,7 @@ badMove:// we failed to find algebraic move *p = oldp; // we might need to re-match the skipped stuff } + if(Match("---", p)) { while(**p == '-') (*p)++; return Nothing; } // prevent separators parsing as null move if(Match("@@@@", p) || Match("--", p) || Match("Z0", p) || Match("pass", p) || Match("null", p)) { strncpy(currentMoveString, "@@@@", 5); return yyboardindex & F_WHITE_ON_MOVE ? WhiteDrop : BlackDrop; @@ -589,6 +830,7 @@ yylex () { // this replaces the flex-generated parser int result = NextUnit(&parsePtr); char *p = parseStart, *q = yytext; + if(p == yytext) return result; // kludge to allow kanji expansion while(p < parsePtr) *q++ = *p++; // copy the matched text to yytext[] *q = NULLCHAR; lastChar = q[-1]; diff --git a/po/LINGUAS b/po/LINGUAS index 80d877b..c2e114e 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 nl pl ru sr tr uk vi zh_CN zh_HK zh_TW +da de es fr it nl pl ru sr tr uk vi zh_CN zh_HK zh_TW diff --git a/po/da.po b/po/da.po index 0ad0efd..b483787 100644 --- a/po/da.po +++ b/po/da.po @@ -21,48 +21,48 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.6.0.20120304\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: 2012-03-06 12:27+0100\n" "Last-Translator: Byrial Ole Jensen \n" "Language-Team: Danish \n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "%s i indstillingsfil\n" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "Forkert heltalsværdi %s" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "Ikke genkendt argument %s" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "Ingen værdi givet for argumentet %s" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Ukomplet \\-undvigesekvens i værdi for %s" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "Åbning af inkluderet fil \"%s\" mislykkedes" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Ikke genkendt boolesk argumentværdi %s" @@ -2203,7 +2203,7 @@ msgstr "Meddelelse" msgid "Note" msgstr "Notits" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Hvid" @@ -2231,7 +2231,7 @@ msgstr "Tomt felt" msgid "Clear board" msgstr "Ryd bræt" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Sort" @@ -2283,54 +2283,54 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 #, fuzzy msgid "Directories:" msgstr "Lydkatalog:" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "Fil" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "Filter:" -#: dialogs.c:2780 +#: dialogs.c:2781 #, fuzzy msgid "New directory" msgstr "Skakprogramkatalog:" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "Filter:" -#: dialogs.c:2856 +#: dialogs.c:2857 #, fuzzy msgid "Contents of" msgstr "Kommentarer" -#: dialogs.c:2882 +#: dialogs.c:2883 #, fuzzy msgid " next page" msgstr "næste side" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2363,52 +2363,52 @@ msgstr "SPS" msgid "Reading game file (%d)" msgstr "Læser partifil (%d)" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: kan ikke cd til CHESSDIR: " -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "Åbning af filen \"%s\" mislykkedes\n" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Genoversæt med større BOARD_RANKS eller BOARD_FILES for at understøtte denne " "størrelse" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: forkert boardSize-syntaks %s\n" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: ikke genkendt boardSize-navn %s\n" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: for fÃ¥ farver tilgængelige; prøver monokrom tilstand\n" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Kan ikke lave skrifttypegruppe for %s.\n" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: Ingen skrifttyper matcher mønstret %s\n" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "Kan ikke Ã¥bne midlertidig fil" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "Åbning af fil mislykkedes" diff --git a/po/de.po b/po/de.po index 2964070..e2593b0 100644 --- a/po/de.po +++ b/po/de.po @@ -2,55 +2,57 @@ # Copyright (C) 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # Arun Persaud , 2009,2012,2013 +# Roland Illig , 2015 # msgid "" msgstr "" -"Project-Id-Version: xboard 4.7.2\n" +"Project-Id-Version: xboard 4.8.0\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2014-10-17 21:25-0700\n" -"PO-Revision-Date: 2013-11-24 18:22-0800\n" -"Last-Translator: Arun Persaud \n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" +"PO-Revision-Date: 2015-04-28 19:26+0100\n" +"Last-Translator: Roland Illig \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.7.5\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" -msgstr "" +msgstr "%s in der Konfigurationsdatei\n" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" -msgstr "Falscher Integer-wert %s" +msgstr "Falscher ganzzahliger Wert %s" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "Nicht erkanntes Argument %s" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "Fehlender Wert für Argument %s" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" -msgstr "Unvollständiges \\ escape im Wert von »%s«" +msgstr "Unvollständiges \\-Escape im Wert von »%s«" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "Fehler beim Öffnen der Datei »%s«" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" -msgstr "Nicht anerkannter logischer Wert für Argument %s" +msgstr "Unbekannter 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 @@ -95,7 +97,7 @@ msgstr "Unbekannte Variante mit Namen %s" #: backend.c:1452 msgid "Starting chess program" -msgstr "Starte Schachprogramm" +msgstr "Schachprogramm wird gestartet" #: backend.c:1475 msgid "Bad game file" @@ -110,15 +112,14 @@ msgid "Pick new game" msgstr "Wähle neues Spiel" #: backend.c:1565 -#, fuzzy msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" -"Ein schon beendetes Turnier wurde neu gestartet\n" -"Eine neue Runde wird hinzugefügt\n" -"Die Spiele werden in 10 Sekunden starten" +"Sie haben ein Turnier neu gestartet, das schon beendet war.\n" +"Eine neue Runde wird hinzugefügt.\n" +"Die Spiele werden in 10 Sekunden starten." #: backend.c:1572 #, c-format @@ -137,8 +138,7 @@ msgstr "Konnte Kommunikationsport %s nicht öffnen" #: backend.c:1636 #, c-format msgid "Could not connect to host %s, port %s" -msgstr "" -"Verbindung zu Hostrechner %s, Portnummer %s konnte nicht hergestellt werden" +msgstr "Verbindung zu Hostrechner %s, Portnummer %s konnte nicht hergestellt werden" #: backend.c:1692 #, c-format @@ -147,7 +147,7 @@ msgstr "Unbekannter initalMode %s" #: backend.c:1718 msgid "AnalyzeFile mode requires a game file" -msgstr "»Analysiere Datei«-Modus benötigt eine Partiedatei" +msgstr "»Datei analysieren«-Modus benötigt eine Partiedatei" #: backend.c:1745 msgid "Analysis mode requires a chess engine" @@ -195,7 +195,7 @@ msgstr "Fehler beim Lesen der Tastatur" #: backend.c:1981 msgid "Got end of file from keyboard" -msgstr "Habe Ende-der-Datei von der Tastatur erhalten" +msgstr "Ende-der-Datei von der Tastatur erhalten" #: backend.c:2289 #, c-format @@ -293,7 +293,7 @@ msgstr "Schwarz ist am Zug" #: backend.c:6761 msgid "Displayed position is not current" -msgstr "Angezeigte Position ist nicht die Aktuelle" +msgstr "Angezeigte Position ist nicht die aktuelle" #: backend.c:7007 msgid "Illegal move" @@ -313,7 +313,7 @@ msgstr "Bewege Bauern rückwärts zum Unterverwandeln" #: backend.c:7588 msgid "only marked squares are legal" -msgstr "" +msgstr "Nur markierte Felder sind erlaubt" #: backend.c:7876 msgid "Swiss tourney finished" @@ -321,11 +321,11 @@ msgstr "Turnier im Schweizer System beendet" #: backend.c:8392 msgid "could not load EGBB library" -msgstr "" +msgstr "EGBB-Bibliothek konnte nicht geladen werden" #: backend.c:8395 msgid "wrong EGBB version" -msgstr "" +msgstr "Falsche EGBB-Version" #: backend.c:8508 msgid "Invalid pairing from pairing engine" @@ -342,7 +342,7 @@ msgstr "Schlechte FEN vom Schachprogramm erhalten" #: backend.c:9030 msgid "Engine did not send setup for non-standard variant" -msgstr "" +msgstr "Engine hat die Startaufstellung für die Spielvariante nicht gesendet" #: backend.c:9103 backend.c:14302 backend.c:14370 #, c-format @@ -378,13 +378,12 @@ msgid "Machine accepts your draw offer" msgstr "Das Schachprogramm akzeptiert dein Remisangebot" #: backend.c:9404 -#, fuzzy msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" -"Das Schachprogramm bietet Remis an\n" -"Wähle Aktion/Remis, um anzunehmen" +"Das Schachprogramm bietet Remis an.\n" +"Wähle Aktion/Remis, um anzunehmen." #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9489 @@ -413,7 +412,7 @@ msgstr "Variante %s wird von %s nicht unterstützt" #: backend.c:10461 #, c-format msgid ", but %s is" -msgstr "" +msgstr ", aber %s ist" #: backend.c:10616 #, c-format @@ -479,7 +478,7 @@ msgstr "Fehler in Turnierdatei" #: backend.c:11052 msgid "Waiting for other game(s)" -msgstr "Warte auf weiter Spiele" +msgstr "Warte auf weitere Spiele" #: backend.c:11065 msgid "No pairing engine specified" @@ -493,12 +492,12 @@ msgstr "Partie %s gegen %s: Endergebnis %d-%d-%d" #: backend.c:12019 backend.c:12050 #, c-format msgid "Illegal move: %d.%s%s" -msgstr "Illegaler Zug: %d.%s%s" +msgstr "Unerlaubter Zug: %d.%s%s" #: backend.c:12039 #, c-format msgid "Ambiguous move: %d.%s%s" -msgstr "Nicht eindeutiger Zug: %d.%s%s" +msgstr "Mehrdeutiger Zug: %d.%s%s" #: backend.c:12093 backend.c:13137 backend.c:13330 backend.c:13700 #, c-format @@ -575,7 +574,7 @@ msgstr "Fehlerhafte Suche" #: backend.c:13707 msgid "Saving position" -msgstr "Speichere Stellung " +msgstr "Stellung wird gespeichert" #: backend.c:13833 msgid "" @@ -611,8 +610,7 @@ msgid "" "Use Reload CMail Message and make your move again." msgstr "" "Die CMail-Nachricht wurde noch nicht geladen.\n" -"Benutzen sie »CMail Nachricht erneut laden« und führen Sie ihren Zug erneut " -"aus." +"Benutzen sie »CMail Nachricht erneut laden« und führen Sie ihren Zug erneut aus." #: backend.c:13916 msgid "No unfinished games" @@ -702,16 +700,15 @@ msgstr "Schwarz ist nicht am Zug" #: backend.c:14609 #, c-format msgid "Starting %s chess program" -msgstr "Starte %s Schachprogramm" +msgstr "Schachprogramm %s wird gestartet" #: backend.c:14637 backend.c:15799 -#, fuzzy msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" -"Warte bis Sie am Zug sind\n" -"oder wähle »Ziehe jetzt«" +"Warten Sie, bis Sie am Zug sind,\n" +"oder wählen Sie »Jetzt ziehen«." #: backend.c:14774 msgid "Training mode off" @@ -759,7 +756,7 @@ msgstr "Ihr Gegner hat die Zeit noch nicht überschritten" #: backend.c:15433 msgid "You must make your move before offering a draw" -msgstr "Sie müssem erst ziehen bevor Sie Remis anbieten können" +msgstr "Sie müssen erst ziehen, bevor Sie Remis anbieten können" #: backend.c:15781 msgid "You are not examining a game" @@ -767,16 +764,15 @@ msgstr "Sie untersuchen keine Partie" #: backend.c:15785 msgid "You can't revert while pausing" -msgstr "Sie können nicht zurücknehmen solange die Partie pausiert" +msgstr "Sie können nicht zurücknehmen, solange die Partie pausiert" #: backend.c:15839 backend.c:15846 msgid "It is your turn" msgstr "Sie sind am Zug" #: backend.c:15897 backend.c:15904 backend.c:15990 backend.c:15997 -#, fuzzy msgid "Wait until your turn." -msgstr "Warten Sie bis Sie am Zug sind" +msgstr "Warten Sie, bis Sie am Zug sind." #: backend.c:15909 msgid "No hint available" @@ -817,7 +813,7 @@ msgstr "Schachprogramm %s hat zu viele Optionen\n" #: backend.c:17074 msgid "Displayed move is not current" -msgstr "Angezeigter Zug ist nicht aktuell" +msgstr "Der angezeigte Zug ist nicht der aktuelle" #: backend.c:17083 msgid "Could not parse move" @@ -825,15 +821,15 @@ msgstr "Konnte Zug nicht parsen" #: backend.c:17208 backend.c:17230 msgid "Both flags fell" -msgstr "Beide Zeitkontrollen überschritten" +msgstr "Beide Plättchen sind gefallen" #: backend.c:17210 msgid "White's flag fell" -msgstr "Weiß überschritt die Zeitkontrolle" +msgstr "Das weiße Plättchen ist gefallen" #: backend.c:17232 msgid "Black's flag fell" -msgstr "Schwarz überschritt die Zeitkontrolle" +msgstr "Das schwarze Plättchen ist gefallen" #: backend.c:17363 msgid "Clock adjustment not allowed in auto-flag mode" @@ -841,11 +837,11 @@ msgstr "Veränderungen an der Uhr sind im »Auto-flag«-Modus nicht erlaubt" #: backend.c:18275 msgid "Bad FEN position in clipboard" -msgstr "Schlechte FEN-Stellung in der Zwischenablage" +msgstr "Fehlerhafte FEN-Stellung in der Zwischenablage" #: book.c:579 book.c:836 msgid "Polyglot book not valid" -msgstr "Polyglot-buch nicht zulässig" +msgstr "Polyglotbuch nicht zulässig" #: book.c:703 msgid "Book Fault" @@ -853,11 +849,11 @@ msgstr "Buchfehler" #: book.c:839 msgid "Hash keys are different" -msgstr "Hash-schlüssel verschieden" +msgstr "Hashschlüssel sind verschieden" #: book.c:1015 msgid "Could not create book" -msgstr "Konnte Buch nicht erzeugen" +msgstr "Buch konnte nicht erzeugt werden" #: dialogs.c:283 msgid "Tournament file: " @@ -865,7 +861,7 @@ msgstr "Turnierdatei: " #: dialogs.c:284 msgid "For concurrent playing of tourney with multiple XBoards:" -msgstr "" +msgstr "Zum gleichzeitigen Durchführen eines Turniers mit mehreren XBoards:" #: dialogs.c:285 msgid "Sync after round" @@ -881,7 +877,7 @@ msgstr "Tunierteilnehmer:" #: dialogs.c:288 msgid "Select Engine:" -msgstr "Wähle Schachprogramm:" +msgstr "Schachprogramm auswählen:" #: dialogs.c:296 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" @@ -893,7 +889,7 @@ msgstr "Anzahl der Turnierrunden:" #: dialogs.c:298 msgid "Default Number of Games in Match (or Pairing):" -msgstr "" +msgstr "Standardanzahl der Spiele pro Match (oder Paarung):" #: dialogs.c:299 msgid "Pause between Match Games (msec):" @@ -905,11 +901,11 @@ msgstr "Speichere Turnierspiele:" #: dialogs.c:301 msgid "Game File with Opening Lines:" -msgstr "" +msgstr "Spieldatei mit Eröffnungen:" #: dialogs.c:302 msgid "Game Number (-1 or -2 = Auto-Increment):" -msgstr "" +msgstr "Spielnummer (-1 oder -2 bedeutet automatische Zählung):" #: dialogs.c:303 msgid "File with Start Positions:" @@ -917,24 +913,23 @@ msgstr "Datei mit Startstellung:" #: dialogs.c:304 msgid "Position Number (-1 or -2 = Auto-Increment):" -msgstr "" +msgstr "Positionsnummer (-1 oder -2 bedeutet automatische Zählung):" #: dialogs.c:305 msgid "Rewind Index after this many Games (0 = never):" -msgstr "" +msgstr "Index nach so vielen Spielen zurücksetzen (0 = niemals):" #: dialogs.c:306 msgid "Disable own engine books by default" -msgstr "" +msgstr "Eigene Eröffnungsbücher standardmäßig deaktivieren" #: dialogs.c:307 dialogs.c:1671 msgid "Time Control" msgstr "Zeitkontrolle" #: dialogs.c:308 -#, fuzzy msgid "Common Engine" -msgstr "Allgemein Schachprogramme…" +msgstr "Allgemeines Schachprogramm" #: dialogs.c:309 dialogs.c:441 msgid "General Options" @@ -942,25 +937,23 @@ msgstr "Allgemeine Einstellungen" #: dialogs.c:310 msgid "Continue Later" -msgstr "" +msgstr "Später fortsetzen" #: dialogs.c:311 msgid "Replace Engine" -msgstr "Ersetze Schachprogramm" +msgstr "Schachprogramm ersetzen" #: dialogs.c:312 msgid "Upgrade Engine" -msgstr "Ersetze Schachprogramm" +msgstr "Schachprogramm aktualisieren" #: dialogs.c:313 msgid "Clone Tourney" -msgstr "Klone Turnier" +msgstr "Turnier klonen" #: dialogs.c:351 msgid "First you must specify an existing tourney file to clone" -msgstr "" -"Bitte geben Sie zuerst eine existierende Turnierdatei, die geklont werden " -"kann" +msgstr "Bitte geben Sie zuerst eine existierende Turnierdatei an, die geklont werden soll" #: dialogs.c:367 dialogs.c:1512 msgid "# no engines are installed" @@ -968,20 +961,19 @@ msgstr "# keine Schachprogramme installiert" #: dialogs.c:375 msgid "Internal error: PARTICIPANTS set wrong" -msgstr "" +msgstr "Interner Fehler: PARTICIPANTS falsch" #: dialogs.c:383 -#, fuzzy msgid "Tournament Options" -msgstr "Klangeinstellungen" +msgstr "Turniereinstellungen" #: dialogs.c:402 msgid "Absolute Analysis Scores" -msgstr "" +msgstr "Absolute Analysepunkte" #: dialogs.c:403 msgid "Almost Always Queen (Detour Under-Promote)" -msgstr "" +msgstr "Fast immer Dame (Unterverwandlung vermeiden)" #: dialogs.c:404 menus.c:736 msgid "Animate Dragging" @@ -1006,7 +998,7 @@ msgstr "Blindschach" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:410 msgid "Drop Menu" -msgstr "" +msgstr "Loslassmenü" #: dialogs.c:411 msgid "Enable Variation Trees" @@ -1014,11 +1006,11 @@ msgstr "Erlaube Varianten" #: dialogs.c:412 msgid "Headers in Engine Output Window" -msgstr "" +msgstr "Kopfzeilen im Schachprogramm-Ausgabefenster" #: dialogs.c:413 msgid "Hide Thinking from Human" -msgstr "" +msgstr "Nachdenken vor dem Menschen verstecken" #: dialogs.c:414 menus.c:745 msgid "Highlight Last Move" @@ -1034,11 +1026,11 @@ msgstr "Ein-Klick Züge" #: dialogs.c:417 msgid "Periodic Updates (in Analysis Mode)" -msgstr "" +msgstr "Regelmäßige Aktualisierung (im Analysemodus)" #: dialogs.c:419 msgid "Play Move(s) of Clicked PV (Analysis)" -msgstr "" +msgstr "Züge der angeklickten Variante spielen (Analyse)" #: dialogs.c:420 dialogs.c:620 menus.c:750 msgid "Ponder Next Move" @@ -1066,79 +1058,75 @@ msgstr "Zeige Zielfeld" #: dialogs.c:426 msgid "Sticky Windows" -msgstr "" +msgstr "Haftende Fenster" #: dialogs.c:427 menus.c:755 msgid "Test Legality" -msgstr "" +msgstr "Auf erlaubte Züge prüfen" #: dialogs.c:428 msgid "Top-Level Dialogs" -msgstr "" +msgstr "Haupt-Dialoge" #: dialogs.c:429 msgid "Flash Moves (0 = no flashing):" -msgstr "" +msgstr "Züge blinken lassen (0 = nicht blinken):" #: dialogs.c:430 msgid "Flash Rate (high = fast):" -msgstr "" +msgstr "Blinkgeschwindigkeit (hoch = schnell):" #: dialogs.c:431 msgid "Animation Speed (high = slow):" -msgstr "" +msgstr "Animationsgeschwindigkeit (hoch = langsam):" #: dialogs.c:432 msgid "Zoom factor in Evaluation Graph:" msgstr "Vergrößerungsfaktor in Auswertungsgraph:" #: dialogs.c:452 -#, fuzzy msgid "Normal" msgstr "Normal" #: dialogs.c:453 msgid "Makruk" -msgstr "" +msgstr "Makruk" #: dialogs.c:454 msgid "FRC" -msgstr "" +msgstr "Schach960" #: dialogs.c:455 msgid "Shatranj" -msgstr "" +msgstr "Schatrandsch" #: dialogs.c:456 -#, fuzzy msgid "Wild castle" -msgstr "keine Rochade" +msgstr "Wilde Rochade" #: dialogs.c:457 -#, fuzzy msgid "Knightmate" -msgstr "Springer" +msgstr "Springermatt" #: dialogs.c:458 -#, fuzzy msgid "No castle" -msgstr "keine Rochade" +msgstr "Keine Rochade" #: dialogs.c:459 msgid "Cylinder *" -msgstr "" +msgstr "Zylinder *" #: dialogs.c:460 msgid "3-checks" -msgstr "" +msgstr "3-fach-Schach" #: dialogs.c:461 msgid "berolina *" -msgstr "" +msgstr "Berolina *" #: dialogs.c:462 msgid "atomic" -msgstr "" +msgstr "Atomschach" #: dialogs.c:463 msgid "two kings" @@ -1150,7 +1138,7 @@ msgstr " " #: dialogs.c:465 msgid "Spartan" -msgstr "" +msgstr "Sparta-Schach" #: dialogs.c:466 msgid "Board size ( -1 = default for selected variant):" @@ -1166,103 +1154,103 @@ msgstr "Anzahl der Linien:" #: dialogs.c:469 msgid "Holdings Size:" -msgstr "" +msgstr "Vorrats-Größe:" #: dialogs.c:471 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" +"Varianten, die mit * markiert sind, können nur gespielt\n" +"werden, wenn die Prüfung auf erlaubte Züge ausgeschaltet ist." #: dialogs.c:473 msgid "ASEAN" -msgstr "" +msgstr "ASEAN-Schach" #: dialogs.c:474 msgid "Great Shatranj (10x8)" -msgstr "" +msgstr "Groß-Schatrandsch (10×8)" #: dialogs.c:475 msgid "Seirawan" -msgstr "" +msgstr "Seiwaran" #: dialogs.c:476 msgid "Falcon (10x8)" -msgstr "" +msgstr "Falken-Schach" #: dialogs.c:477 msgid "Superchess" -msgstr "" +msgstr "Superschach" #: dialogs.c:478 msgid "Capablanca (10x8)" -msgstr "" +msgstr "Capablanca (10×8)" #: dialogs.c:479 msgid "Crazyhouse" -msgstr "" +msgstr "Crazyhouse" #: dialogs.c:480 msgid "Gothic (10x8)" -msgstr "" +msgstr "Gothic (10×8)" #: dialogs.c:481 -#, fuzzy msgid "Bughouse" -msgstr "Tandemschach" +msgstr "Bughouse" #: dialogs.c:482 msgid "Janus (10x8)" -msgstr "" +msgstr "Janusschach (10×8)" #: dialogs.c:483 -#, fuzzy msgid "Suicide" msgstr "Räuberschach" #: dialogs.c:484 msgid "CRC (10x8)" -msgstr "" +msgstr "CRC (10×8)" #: dialogs.c:485 msgid "give-away" -msgstr "" +msgstr "Verzichten" #: dialogs.c:486 msgid "grand (10x10)" -msgstr "" +msgstr "groß (10×10)" #: dialogs.c:487 msgid "losers" -msgstr "" +msgstr "Losers" #: dialogs.c:488 msgid "shogi (9x9)" -msgstr "" +msgstr "Shogi (9×9)" #: dialogs.c:489 msgid "fairy" -msgstr "" +msgstr "Feenschach" #: dialogs.c:490 msgid "xiangqi (9x10)" -msgstr "" +msgstr "Xiangqi (9×10)" #: dialogs.c:491 msgid "mighty lion" -msgstr "" +msgstr "Mächtiger Löwe" #: dialogs.c:492 msgid "courier (12x8)" -msgstr "" +msgstr "Kurier (12×8)" #: dialogs.c:493 msgid "elven chess (10x10)" -msgstr "" +msgstr "Elfenschach (10×10)" #: dialogs.c:494 msgid "chu shogi (12x12)" -msgstr "" +msgstr "Chu-Shogi (12×12)" #: dialogs.c:538 #, c-format @@ -1272,7 +1260,7 @@ msgstr "Warnung: zweites Schachprogramm (%s) unterstützt dies nicht!" #: dialogs.c:566 #, c-format msgid "Only bughouse is not available in viewer mode." -msgstr "" +msgstr "Nur Bughouse ist nicht im Partieansicht-Modus verfügbar." #: dialogs.c:567 #, c-format @@ -1280,6 +1268,8 @@ msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" +"Alle Varianten, die das erste Schachprogramm nicht kann\n" +"(derzeit %s) sind deaktiviert." #: dialogs.c:589 msgid "New Variant" @@ -1291,7 +1281,7 @@ msgstr "Maximal Anzahl der CPUs pro Schachprogram:" #: dialogs.c:622 msgid "Polygot Directory:" -msgstr "Polyglot-verzeichnis:" +msgstr "Polyglotverzeichnis:" #: dialogs.c:623 msgid "Hash-Table Size (MB):" @@ -1299,15 +1289,15 @@ msgstr "Größe der Hashtabelle (MB):" #: dialogs.c:624 msgid "EGTB Path:" -msgstr "" +msgstr "EGTB-Pfad:" #: dialogs.c:625 msgid "EGTB Cache Size (MB):" -msgstr "" +msgstr "EGTB-Cachegröße (MB):" #: dialogs.c:626 msgid "Use GUI Book" -msgstr "" +msgstr "GUI-Buch benutzen" #: dialogs.c:627 msgid "Opening-Book Filename:" @@ -1315,39 +1305,39 @@ msgstr "Dateiname des Eröffnungsbuches:" #: dialogs.c:628 msgid "Book Depth (moves):" -msgstr "" +msgstr "Buchtiefe (Züge):" #: dialogs.c:629 msgid "Book Variety (0) vs. Strength (100):" -msgstr "" +msgstr "Buchvielfalt (0) gegenüber Spielstärke (100):" #: dialogs.c:630 msgid "Engine #1 Has Own Book" -msgstr "" +msgstr "Engine #1 hat eigenes Buch" #: dialogs.c:631 msgid "Engine #2 Has Own Book " -msgstr "" +msgstr "Engine #2 hat eigenes Buch" #: dialogs.c:642 msgid "Common Engine Settings" -msgstr "" +msgstr "Allgemeine Schachprogramm-Einstellungen" #: dialogs.c:648 msgid "Detect all Mates" -msgstr "" +msgstr "Alle Mattbilder erkennen" #: dialogs.c:649 msgid "Verify Engine Result Claims" -msgstr "" +msgstr "Partieergebnisse des Schachprogramms kontrollieren" #: dialogs.c:650 msgid "Draw if Insufficient Mating Material" -msgstr "" +msgstr "Remis bei zuwenig Material zum Mattsetzen" #: dialogs.c:651 msgid "Adjudicate Trivial Draws (3-Move Delay)" -msgstr "" +msgstr "Triviale Remis entscheiden (nach 3 Zügen)" #: dialogs.c:652 msgid "N-Move Rule:" @@ -1355,11 +1345,11 @@ msgstr "N-Züge Regel:" #: dialogs.c:653 msgid "N-fold Repeats:" -msgstr "" +msgstr "N-fache Stellungswiederholung:" #: dialogs.c:654 msgid "Draw after N Moves Total:" -msgstr "Remis nach N Zügen (total):" +msgstr "Remis nach N Zügen (insgesamt):" #: dialogs.c:655 msgid "Win / Loss Threshold:" @@ -1374,9 +1364,8 @@ msgid "Negate Score of Engine #2" msgstr "Negiere Bewertung des 2. Schachprogramms" #: dialogs.c:664 -#, fuzzy msgid "Adjudicate non-ICS Games" -msgstr "Gewinn Weiß zuerkennen" +msgstr "Nicht-ICS-Spiele entscheiden" #: dialogs.c:677 msgid "Auto-Kibitz" @@ -1396,7 +1385,7 @@ msgstr "Automatisch das Brett in den Vordergrung bringen" #: dialogs.c:681 msgid "Auto-Create Logon Script" -msgstr "Automatisch Login-skript erzeugen" +msgstr "Automatisch Login-Skript erzeugen" #: dialogs.c:682 msgid "Background Observe while Playing" @@ -1412,7 +1401,7 @@ msgstr "Zugliste abholen" #: dialogs.c:685 msgid "Quiet Play" -msgstr "" +msgstr "Ruhiges Spiel" #: dialogs.c:686 msgid "Seek Graph" @@ -1420,24 +1409,23 @@ msgstr "Suchgraph" #: dialogs.c:687 msgid "Auto-Refresh Seek Graph" -msgstr "" +msgstr "Suchgraph automatisch aktualisieren" #: dialogs.c:688 msgid "Auto-InputBox PopUp" -msgstr "" +msgstr "Automatisches Eingabefenster einblenden" #: dialogs.c:689 -#, fuzzy msgid "Quit after game" -msgstr "Warte auf weiter Spiele" +msgstr "Nach der Partie beenden" #: dialogs.c:690 msgid "Premove" -msgstr "" +msgstr "Vorzeitiges Ziehen" #: dialogs.c:691 msgid "Premove for White" -msgstr "" +msgstr "Vorzeitiges Ziehen für Weiß" #: dialogs.c:692 msgid "First White Move:" @@ -1445,7 +1433,7 @@ msgstr "Erster Zug von Weiß:" #: dialogs.c:693 msgid "Premove for Black" -msgstr "" +msgstr "Vorzeitiges Ziehen für Schwarz" #: dialogs.c:694 msgid "First Black Move:" @@ -1461,7 +1449,7 @@ msgstr "Alarmzeit (msek):" #: dialogs.c:699 msgid "Colorize Messages" -msgstr "Nachrichten kolorieren" +msgstr "Nachrichten einfärben" #: dialogs.c:700 msgid "Shout Text Colors:" @@ -1493,16 +1481,15 @@ msgstr "Textfarbe Herausforderung:" #: dialogs.c:707 msgid "Request Text Colors:" -msgstr "" +msgstr "Textfarbe für Anfragen:" #: dialogs.c:708 msgid "Seek Text Colors:" msgstr "Textfarbe Spielgesuch:" #: dialogs.c:709 -#, fuzzy msgid "Other Text Colors:" -msgstr "Textfarbe andere Kanäle:" +msgstr "Andere Textfarben:" #: dialogs.c:716 msgid "ICS Options" @@ -1510,11 +1497,11 @@ msgstr "ICS Optionen" #: dialogs.c:721 msgid "Exact position match" -msgstr "" +msgstr "Exakte Stellungsübereinstimmung" #: dialogs.c:721 msgid "Shown position is subset" -msgstr "" +msgstr "Die angezeigte Stellung ist eine Teilstellung" #: dialogs.c:721 msgid "Same material with exactly same Pawn chain" @@ -1526,25 +1513,27 @@ msgstr "Gleiches Material" #: dialogs.c:722 msgid "Material range (top board half optional)" -msgstr "" +msgstr "Materialstärke (obere Bretthälfte ist optional)" #: dialogs.c:722 msgid "Material difference (optional stuff balanced)" -msgstr "" +msgstr "Materialunterschied (optionale Figuren ausgeglichen)" #: dialogs.c:737 msgid "Auto-Display Tags" -msgstr "" +msgstr "Markierungen automatisch anzeigen" #: dialogs.c:738 msgid "Auto-Display Comment" -msgstr "" +msgstr "Kommentar automatisch anzeigen" #: dialogs.c:739 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" +"Abspielgeschwindigkeit von geladenen Spielen\n" +"(0 = sofort, -1 = aus):" #: dialogs.c:740 msgid "Seconds per Move:" @@ -1555,12 +1544,16 @@ msgid "" "\n" "options to use in game-viewer mode:" msgstr "" +"\n" +"Einstellungen für den Spielbetrachten-Modus:" #: dialogs.c:743 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" +"\n" +"Schwellwert für Stellungsfilter in Partieliste:" #: dialogs.c:744 msgid "Elo of strongest player at least:" @@ -1572,23 +1565,23 @@ msgstr "Mind. Elo des schwächsten Spielers:" #: dialogs.c:746 msgid "No games before year:" -msgstr "Keine Partie vor Jahr:" +msgstr "Nur Partien ab Jahr:" #: dialogs.c:747 msgid "Minimum nr consecutive positions:" -msgstr "" +msgstr "Mindestanzahl von aufeinanderfolgenden Stellungen:" #: dialogs.c:749 msgid "Search mode:" -msgstr "Such-modus:" +msgstr "Suchmodus:" #: dialogs.c:750 msgid "Also match reversed colors" -msgstr "" +msgstr "Auch mit vertauschten Farben suchen" #: dialogs.c:751 msgid "Also match left-right flipped position" -msgstr "" +msgstr "Auch gespiegelte Positionen suchen" #: dialogs.c:760 msgid "Load Game Options" @@ -1612,23 +1605,23 @@ msgstr "Speichere Endstellung in Datei:" #: dialogs.c:776 msgid "PGN Event Header:" -msgstr "" +msgstr "PGN-Veranstaltungs-Kopfzeile:" #: dialogs.c:777 msgid "Old Save Style (as opposed to PGN)" -msgstr "" +msgstr "Alter Speichermodus (im Gegensatz zu PGN)" #: dialogs.c:778 msgid "Include Number Tag in tourney PGN" -msgstr "" +msgstr "Nummernkennzeichen in Turnier-PGN einschließen" #: dialogs.c:779 msgid "Save Score/Depth Info in PGN" -msgstr "" +msgstr "Stellungsbewertung/Rechentiefe in PGN speichern" #: dialogs.c:780 msgid "Save Out-of-Book Info in PGN " -msgstr "" +msgstr "Eröffnungsbuch-Daten in PGN speichern" #: dialogs.c:787 msgid "Save Game Options" @@ -1640,11 +1633,11 @@ msgstr "Kein Ton" #: dialogs.c:797 msgid "Default Beep" -msgstr "" +msgstr "Standard-Piepton" #: dialogs.c:798 msgid "Above WAV File" -msgstr "" +msgstr "Obige WAV-Datei" #: dialogs.c:799 msgid "Car Horn" @@ -1652,15 +1645,15 @@ msgstr "Hupe" #: dialogs.c:800 msgid "Cymbal" -msgstr "" +msgstr "Becken" #: dialogs.c:801 msgid "Ding" -msgstr "" +msgstr "Ding" #: dialogs.c:802 msgid "Gong" -msgstr "" +msgstr "Gong" #: dialogs.c:803 msgid "Laser" @@ -1668,27 +1661,27 @@ msgstr "Laser" #: dialogs.c:804 msgid "Penalty" -msgstr "" +msgstr "Strafe" #: dialogs.c:805 msgid "Phone" -msgstr "" +msgstr "Telefon" #: dialogs.c:806 msgid "Pop" -msgstr "" +msgstr "Pop" #: dialogs.c:807 msgid "Roar" -msgstr "" +msgstr "Fauchen" #: dialogs.c:808 msgid "Slap" -msgstr "" +msgstr "Schlagbass" #: dialogs.c:809 msgid "Wood Thunk" -msgstr "" +msgstr "Holzblock" #: dialogs.c:811 msgid "User File" @@ -1696,11 +1689,11 @@ msgstr "Benutzerdatei" #: dialogs.c:834 msgid "User WAV File:" -msgstr "" +msgstr "Eigene WAV-Datei:" #: dialogs.c:835 msgid "Sound Program:" -msgstr "" +msgstr "Abspielprogramm:" #: dialogs.c:836 msgid "Try-Out Sound:" @@ -1768,11 +1761,11 @@ msgstr "Kibitz:" #: dialogs.c:853 msgid "Request:" -msgstr "" +msgstr "Anfrage:" #: dialogs.c:854 msgid "Lion roar:" -msgstr "" +msgstr "Löwenfauchen:" #: dialogs.c:855 msgid "Seek:" @@ -1784,11 +1777,11 @@ msgstr "Klangeinstellungen" #: dialogs.c:887 msgid "Selectable themes:" -msgstr "" +msgstr "Wählbare Designs:" #: dialogs.c:889 msgid "New name for current theme:" -msgstr "" +msgstr "Neuer Name für aktuelles Design:" #: dialogs.c:892 msgid "White Piece Color:" @@ -1836,23 +1829,23 @@ msgstr "Farbe zum Hervorheben:" #: dialogs.c:926 msgid "Premove Highlight Color:" -msgstr "" +msgstr "Farbe zum Hervorheben vorzeitiger Züge:" #: dialogs.c:932 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" -msgstr "" +msgstr "Figuren im Shogi-Stil umdrehen (Farbige Schaltflächen setzen die Einstellung zurück)" #: dialogs.c:934 msgid "Mono Mode" -msgstr "" +msgstr "Mono-Modus" #: dialogs.c:935 msgid "Logo Size (0=off, requires restart):" -msgstr "" +msgstr "Logo-Größe (0=aus, benötigt Neustart):" #: dialogs.c:936 msgid "Line Gap (-1 = default for board size):" -msgstr "" +msgstr "Linienabstand (-1 = Vorgabewert für Brettgröße):" #: dialogs.c:937 msgid "Use Board Textures" @@ -1875,9 +1868,8 @@ msgid "Directory with Pieces Images:" msgstr "Verzeichnis mit Bildern für Figuren:" #: dialogs.c:1012 -#, fuzzy msgid "# no themes are defined" -msgstr "# keine Schachprogramme installiert" +msgstr "# keine Designs installiert" #: dialogs.c:1024 msgid "Board Options" @@ -1889,16 +1881,15 @@ msgstr "ICS-Textmenü" #: dialogs.c:1124 msgid "clear" -msgstr "" +msgstr "Leeren" #: dialogs.c:1125 dialogs.c:1224 msgid "save changes" -msgstr "speichere Änderungen" +msgstr "Änderungen speichern" #: dialogs.c:1223 -#, fuzzy msgid "add next move" -msgstr "Nächstes Spiel laden" +msgstr "Nächsten Zug hinzufügen" #: dialogs.c:1247 msgid "Edit book" @@ -1926,11 +1917,11 @@ msgstr "Schachprogrammeinstellungen" #: dialogs.c:1470 msgid "Select engine from list:" -msgstr "Wähle Schachprogram aus der Liste:" +msgstr "Schachprogram aus der Liste auswählen:" #: dialogs.c:1473 msgid "or specify one below:" -msgstr "" +msgstr "Oder geben Sie unten eins an:" #: dialogs.c:1474 msgid "Nickname (optional):" @@ -1938,11 +1929,11 @@ msgstr "Spitzname (optional):" #: dialogs.c:1475 msgid "Use nickname in PGN player tags of engine-engine games" -msgstr "" +msgstr "Spitzname in PGN-Spieler-Kennzeichen bei Spielen zwischen Schachprogrammen benutzen" #: dialogs.c:1476 msgid "Engine Directory:" -msgstr "" +msgstr "Schachprogramm-Verzeichnis:" #: dialogs.c:1477 msgid "Engine Command:" @@ -1954,15 +1945,15 @@ msgstr "(Verzeichnis wird vom Schachprogrampfad genommen, falls leer)" #: dialogs.c:1479 msgid "UCI" -msgstr "" +msgstr "UCI" #: dialogs.c:1480 msgid "WB protocol v1 (do not wait for engine features)" -msgstr "" +msgstr "WB-Protokoll Version 1 (nicht auf Features des Schachprogramms warten)" #: dialogs.c:1481 msgid "Must not use GUI book" -msgstr "" +msgstr "Kein GUI-Buch benutzen" #: dialogs.c:1482 msgid "Add this engine to the list" @@ -1970,7 +1961,7 @@ msgstr "Füge diese Schachprogramm zur Liste hinzu" #: dialogs.c:1483 msgid "Force current variant with this engine" -msgstr "" +msgstr "Aktuelle Variante mit diesem Schachprogramm erzwingen" #: dialogs.c:1533 msgid "Load first engine" @@ -1986,7 +1977,7 @@ msgstr "Shuffle" #: dialogs.c:1563 msgid "Fischer castling" -msgstr "" +msgstr "Fischer-Rochade" #: dialogs.c:1564 msgid "Start-position number:" @@ -1998,7 +1989,7 @@ msgstr "zufällig" #: dialogs.c:1566 msgid "pick fixed" -msgstr "" +msgstr "Feste Aufstellung auswählen" #: dialogs.c:1583 msgid "New Shuffle Game" @@ -2014,23 +2005,23 @@ msgstr "Zuwachs" #: dialogs.c:1604 msgid "fixed max" -msgstr "" +msgstr "Feste Maximalbedenkzeit" #: dialogs.c:1605 msgid "Moves per session:" -msgstr "" +msgstr "Züge pro Sitzung:" #: dialogs.c:1606 msgid "Initial time (min):" -msgstr "" +msgstr "Grundbedenkzeit (min):" #: dialogs.c:1607 msgid "Increment or max (sec/move):" -msgstr "" +msgstr "Zeitbonus oder Maximalbedenkzeit (sek/Zug):" #: dialogs.c:1608 msgid "Time-Odds factors:" -msgstr "" +msgstr "Ungleiche Zeitverteilung:" #: dialogs.c:1609 msgid "Engine #1" @@ -2091,7 +2082,7 @@ msgstr "Erzbischof" #: dialogs.c:1788 dialogs.c:2372 dialogs.c:2376 msgid "Chancellor" -msgstr "Kanlzer" +msgstr "Kanzler" #: dialogs.c:1790 dialogs.c:2371 dialogs.c:2375 dialogs.c:2393 msgid "Queen" @@ -2099,42 +2090,40 @@ msgstr "Königin" #: dialogs.c:1792 msgid "Lion" -msgstr "" +msgstr "Löwe" #: dialogs.c:1796 msgid "Defer" -msgstr "vertagen" +msgstr "Vertagen" #: dialogs.c:1797 dialogs.c:2372 dialogs.c:2376 msgid "Promote" -msgstr "umwandlung" +msgstr "Umwandeln" #: dialogs.c:1854 msgid "Chats:" -msgstr "" +msgstr "Chats:" #: dialogs.c:1855 dialogs.c:1856 dialogs.c:1857 dialogs.c:1858 dialogs.c:1859 #: dialogs.c:1957 dialogs.c:2017 dialogs.c:2049 -#, fuzzy msgid "New Chat" -msgstr "Neue Variante" +msgstr "Neuer Chat" #: dialogs.c:1862 msgid "Chat partner:" -msgstr "" +msgstr "Chatpartner:" #: dialogs.c:1863 msgid "End Chat" -msgstr "" +msgstr "Chat beenden" #: dialogs.c:1864 msgid "Hide" -msgstr "" +msgstr "Verstecken" #: dialogs.c:2074 -#, fuzzy msgid "ICS Interaction" -msgstr "ICS Optionen" +msgstr "ICS-Interaktion" #: dialogs.c:2141 msgid "factory" @@ -2154,7 +2143,7 @@ msgstr "Keine Markierung selektiert" #: dialogs.c:2193 msgid "Game-list options" -msgstr "Spieleliste-optionen" +msgstr "Spieleliste-Optionen" #: dialogs.c:2269 dialogs.c:2283 msgid "Error" @@ -2166,7 +2155,7 @@ msgstr "Schwerwiegender Fehler" #: dialogs.c:2306 msgid "Exiting" -msgstr "Beende" +msgstr "Programm wird beendet" #: dialogs.c:2317 msgid "Information" @@ -2176,7 +2165,7 @@ msgstr "Information" msgid "Note" msgstr "Notiz" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Weiß" @@ -2194,7 +2183,7 @@ msgstr "Kanone" #: dialogs.c:2372 dialogs.c:2376 msgid "Demote" -msgstr "degradieren" +msgstr "Degradieren" #: dialogs.c:2373 dialogs.c:2377 msgid "Empty square" @@ -2204,7 +2193,7 @@ msgstr "Leeres Feld" msgid "Clear board" msgstr "Brett leeren" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Schwarz" @@ -2242,61 +2231,61 @@ msgstr "Hilfe" #: dialogs.c:2491 msgid "<<" -msgstr "" +msgstr "<<" #: dialogs.c:2492 msgid "<" -msgstr "" +msgstr "<" #: dialogs.c:2494 msgid ">" -msgstr "" +msgstr ">" #: dialogs.c:2495 msgid ">>" -msgstr "" +msgstr ">>" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "Verzeichnisse:" -#: dialogs.c:2774 +#: dialogs.c:2775 msgid "Files:" msgstr "Dateien:" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "nach Namen" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "nach Typ" -#: dialogs.c:2779 +#: dialogs.c:2780 msgid "Filename:" msgstr "Dateinname:" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "Neues Verzeichnis" -#: dialogs.c:2781 +#: dialogs.c:2782 msgid "File type:" -msgstr "Dateientyp:" +msgstr "Dateityp:" -#: dialogs.c:2856 +#: dialogs.c:2857 msgid "Contents of" msgstr "Inhalt von" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" -msgstr "nächste Seite" +msgstr " nächste Seite" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" -msgstr "" +msgstr "Geben Sie zuerst hier den Verzeichnisnamen an" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "VERSUCHE EINEN ANDEREN NAMEN" @@ -2305,6 +2294,8 @@ msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" +"Kein Standard-Figurensatz installiert!\n" +"Wählen Sie mit der Option »-pieceImageDirectory« Ihren eigenen." #: engineoutput.c:111 menus.c:650 #, c-format @@ -2315,8 +2306,8 @@ msgstr "Schachprogrammausgabe" #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%s (%d rücknehmbarer Halbzug)" +msgstr[1] "%s (%d rücknehmbare Halbzüge)" #: engineoutput.c:552 engineoutput.c:555 nengineoutput.c:82 nengineoutput.c:90 msgid "NPS" @@ -2327,52 +2318,50 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "Lese Partiedatei (%d)" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: cd zu CHESSDIR funktioniert nicht: " -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "Fehler beim Öffnen der Datei '%s'\n" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" -msgstr "" -"Kompiliere erneut mit größeren BOARD_RANKS oder BOARD_FILES, um diese Größe " -"zu unterstützen" +msgstr "Kompiliere erneut mit größeren BOARD_RANKS oder BOARD_FILES, um diese Größe zu unterstützen" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: falsche boardSize Syntax %s\n" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: unbekannter Name fuer boardSize %s\n" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: nicht genügend Farben vorhanden; versuche monochrom Modus\n" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Nicht in der Lage Schriftsatz für %s zu generieren.\n" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: keine Schriften stimmen mit Muster %s überein\n" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "Kann temporäre Datei nicht öffnen" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "Fehler beim Öffnen der Datei" @@ -2405,17 +2394,30 @@ msgid "" "Enhancements Copyright 1992-2014 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" -"%s is free software and carries NO WARRANTY;see the file COPYING for more " -"information.\n" +"%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" msgstr "" +"%s%s\n" +"\n" +"Copyright 1991 Digital Equipment Corporation\n" +"Verbesserungen Copyright 1992-2014 Free Software Foundation\n" +"Verbesserungen Copyright 2005 Alessandro Scotti\n" +"\n" +"%s ist freie Software und gewährt keinerlei Garantie; weitere Details\n" +"finden Sie in der Datei COPYING.\n" +"Die GTK-Ausgabe dieser Version ist experimentell und instabil\n" +"\n" +"Besuchen Sie XBoard im Web unter: http://www.gnu.org/software/xboard/\n" +"Die neuesten Features finden Sie unter: http://www.gnu.org/software/xboard/whats_new.html\n" +"\n" +"Fehler melden Sie bitte (auf Englisch) per E-Mail an: \n" +"\n" #: menus.c:379 menus.c:772 msgid "About XBoard" @@ -2426,12 +2428,10 @@ msgid "New Game" msgstr "Neue Partie" #: menus.c:602 -#, fuzzy msgid "New Shuffle Game..." -msgstr "Neue Shuffle Partie… " +msgstr "Neue zufällige Partie…" #: menus.c:603 -#, fuzzy msgid "New Variant..." msgstr "Neue Variante…" @@ -2460,9 +2460,8 @@ msgid "Save Position" msgstr "Speichere Stellung" #: menus.c:612 -#, fuzzy msgid "Save Selected Games" -msgstr "Partie speichern…" +msgstr "Ausgewählte Partien speichern" #: menus.c:613 msgid "Save Games as Book" @@ -2478,7 +2477,7 @@ msgstr "CMail Nachricht erneut laden" #: menus.c:618 msgid "Quit " -msgstr "" +msgstr "Beenden" #: menus.c:623 msgid "Copy Game" @@ -2522,7 +2521,7 @@ msgstr "Editiere Buch" #: menus.c:636 msgid "Revert" -msgstr "" +msgstr "Neuladen" #: menus.c:637 msgid "Annotate" @@ -2574,7 +2573,7 @@ msgstr "ICS Eingabefeld" #: menus.c:659 msgid "ICS/Chat Console" -msgstr "" +msgstr "ICS/Chat-Konsole" #: menus.c:661 msgid "Board..." @@ -2630,7 +2629,7 @@ msgstr "Ablehnen" #: menus.c:685 msgid "Rematch" -msgstr "" +msgstr "Revanche" #: menus.c:687 msgid "Call Flag" @@ -2674,32 +2673,27 @@ msgstr "Schwarz den Gewinn zuerkennnen" #: menus.c:699 msgid "Adjudicate Draw" -msgstr "Als Remis abschätzen" +msgstr "Auf Remis entscheiden" #: menus.c:704 -#, fuzzy msgid "Edit Engine List..." -msgstr "Schachprogram #1 Einstellungen…" +msgstr "Schachprogramm-Liste bearbeiten…" #: menus.c:706 -#, fuzzy msgid "Load New 1st Engine..." msgstr "Neues erstes Schachprogramm laden…" #: menus.c:707 -#, fuzzy msgid "Load New 2nd Engine..." msgstr "Neues zweites Schachprogramm laden…" #: menus.c:709 -#, fuzzy msgid "Engine #1 Settings..." -msgstr "Schachprogram #1 Einstellungen…" +msgstr "Einstellungen für Schachprogramm #1…" #: menus.c:710 -#, fuzzy msgid "Engine #2 Settings..." -msgstr "Schachprogram #2 Einstellungen…" +msgstr "Einstellungen für Schachprogramm #2…" #: menus.c:712 msgid "Hint" @@ -2718,50 +2712,42 @@ msgid "Retract Move" msgstr "Zug zurücknehmen" #: menus.c:722 -#, fuzzy msgid "General..." msgstr "Allgemein…" #: menus.c:724 -#, fuzzy msgid "Time Control..." -msgstr "Zeitkontrolle…" +msgstr "Zeitnahme…" #: menus.c:725 -#, fuzzy msgid "Common Engine..." -msgstr "Allgemein Schachprogramme…" +msgstr "Allgemeine Schachprogramm-Einstellungen" #: menus.c:726 -#, fuzzy msgid "Adjudications..." -msgstr "Zuerkennung…" +msgstr "Entscheidungen…" #: menus.c:727 msgid "ICS..." -msgstr "" +msgstr "ICS…" #: menus.c:728 msgid "Tournament..." -msgstr "" +msgstr "Turnier…" #: menus.c:729 -#, fuzzy msgid "Load Game..." msgstr "Partie laden…" #: menus.c:730 -#, fuzzy msgid "Save Game..." msgstr "Partie speichern…" #: menus.c:731 -#, fuzzy msgid "Game List..." msgstr "Partieliste…" #: menus.c:732 -#, fuzzy msgid "Sounds..." msgstr "Klang…" @@ -2799,7 +2785,7 @@ msgstr "Zeige Koordinaten" #: menus.c:754 msgid "Hide Thinking" -msgstr "" +msgstr "Denken verstecken" #: menus.c:758 msgid "Save Settings Now" @@ -2851,23 +2837,25 @@ msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" +"Interner Fehler:\n" +"Mismatch of STRIDE in nengineoutput.c\n" +"Change and recompile!" #: nevalgraph.c:68 msgid "Evaluation graph" msgstr "Auswertungsgraph" #: nevalgraph.c:68 -#, fuzzy msgid "Blunder graph" -msgstr "Auswertungsgraph" +msgstr "Patzer-Graph" #: nevalgraph.c:106 msgid "Blunder" -msgstr "" +msgstr "Patzer" #: nevalgraph.c:106 msgid "Eval" -msgstr "" +msgstr "Stellungsbewertung" #: ngamelist.c:87 msgid "find position" @@ -2875,7 +2863,7 @@ msgstr "Suche Stellung" #: ngamelist.c:88 msgid "narrow" -msgstr "" +msgstr "Eng" #: ngamelist.c:89 msgid "thresholds" @@ -2883,19 +2871,19 @@ msgstr "Schwellenwert" #: ngamelist.c:90 msgid "tags" -msgstr "" +msgstr "Kennzeichen" #: ngamelist.c:91 msgid "next" -msgstr "nächste" +msgstr "Nächste" #: ngamelist.c:92 msgid "close" -msgstr "schließen" +msgstr "Schließen" #: ngamelist.c:116 msgid "No game selected" -msgstr "Keine Partie selektiert" +msgstr "Keine Partie ausgewählt" #: ngamelist.c:122 msgid "Can't go forward any further" @@ -2908,15 +2896,15 @@ msgstr "Durchsuche Spiele (%d)" #: ngamelist.c:211 msgid "previous page" -msgstr "Vorheriges Spiel" +msgstr "Vorherige Seite" #: ngamelist.c:214 msgid "next page" -msgstr "nächste Seite" +msgstr "Nächste Seite" #: ngamelist.c:217 msgid "no games matched your request" -msgstr "Keine Spiele stimmten mit ihrer Anfrage überein" +msgstr "Keine zu Ihrer Anfrage passenden Spiele gefunden" #: ngamelist.c:219 #, c-format @@ -2937,7 +2925,7 @@ msgid "%s: unrecognized color %s\n" msgstr "%s: nicht erkannte Farbe %s\n" #: usystem.c:230 -#, fuzzy, c-format +#, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: Kann Vordergrundfarbe in »%s« nicht parsen\n" @@ -2983,376 +2971,3 @@ msgstr "Umschalt" #: xaw/xoptions.c:1314 msgid "OK" msgstr "OK" - -#~ msgid "Match Options" -#~ msgstr "Partieeinstellungen" - -#~ msgid "ICS ..." -#~ msgstr "ICS…" - -#~ msgid "Match ..." -#~ msgstr "Partie…" - -#~ msgid "%s: Can't access XPM directory %s\n" -#~ msgstr "%s: XPM-Ordner nicht erreichbar %s\n" - -#~ msgid "Available `%s' sizes:\n" -#~ msgstr "Mögliche »%s« Größen:\n" - -#~ msgid "Error: No `%s' files!\n" -#~ msgstr "Fehler: Keine »%s« Datein!\n" - -#~ msgid "" -#~ "Warning: No DIR structure found on this system --\n" -#~ " Unable to autosize for XPM/XIM pieces.\n" -#~ " Please report this error to %s.\n" -#~ " Include system type & operating system in message.\n" -#~ msgstr "" -#~ "Warnung: Keine DIR-Struktur auf dem Rechner gefunden --\n" -#~ " wählen einer automatischen Größe für XPM/XIM Figuren " -#~ "fehlgeschlagen.\n" -#~ " Bitte schicken Sie einen Bug-report and %s.\n" -#~ " Geben Sie dabei den Rechnertyp und das Betriebsystem an.\n" - -#~ msgid "Error %d loading icon image\n" -#~ msgstr "Fehler %d beim Laden von Icon\n" - -#~ msgid "cancel" -#~ msgstr "abbrechen" - -#~ msgid "recognized '%s' (%d) as variant %s\n" -#~ msgstr "erkenne '%s' (%d) als Variante %s\n" - -#~ msgid "Ratings from header: W %d, B %d\n" -#~ msgstr "Spielstärke vom Dateikopf: W %d, S %d\n" - -#~ msgid "Parsing board: %s\n" -#~ msgstr "Parse Schachbrett: %s\n" - -#~ msgid "Found unexpected active ICS engine analyze \n" -#~ msgstr "Habe unerwartete aktive ICS Analyse vom Schachprogramm gefunden\n" - -#~ msgid "ICS engine analyze starting... \n" -#~ msgstr "Schachprogramm started ICS Analyse…\n" - -#~ msgid "" -#~ "resolved %s at pixel size %d\n" -#~ " to %s\n" -#~ msgstr "" -#~ "Für %s mit Pixelgröße %d\n" -#~ " verwende %s\n" - -#~ msgid "New Game Ctrl+N" -#~ msgstr "Neue Partie Strg+N" - -#~ msgid "New Variant ... Alt+Shift+V" -#~ msgstr "Neue Variante… Alt+Umschalt+V" - -#~ msgid "Load Game Ctrl+O" -#~ msgstr "Partie Laden Strg+O" - -#~ msgid "Load Position Ctrl+Shift+O" -#~ msgstr "Stellung laden Strg+Umschalt+O" - -#~ msgid "Next Position Shift+PgDn" -#~ msgstr "Nächste Stellung Umschalt+Pgdn" - -#~ msgid "Prev Position Shift+PgUp" -#~ msgstr "Vorherige Stellung Umschalt+PgUp" - -#~ msgid "Save Game Ctrl+S" -#~ msgstr "Partie speichern Strg+S" - -#~ msgid "Save Position Ctrl+Shift+S" -#~ msgstr "Stellung speichern Strg+Shift+S" - -#~ msgid "Quit Ctr+Q" -#~ msgstr "Beenden Strg+Q" - -#~ msgid "Copy Game Ctrl+C" -#~ msgstr "Partie kopieren Strg+C" - -#~ msgid "Paste Game Ctrl+V" -#~ msgstr "Partie einfügen Strg+V" - -#~ msgid "Paste Position Ctrl+Shift+V" -#~ msgstr "Stellung einfügen Strg+Umschalt+V" - -#~ msgid "Edit Game Ctrl+E" -#~ msgstr "Partie bearbeiten Strg+E" - -#~ msgid "Edit Position Ctrl+Shift+E" -#~ msgstr "Stellung bearbeiten Strg+Umschalt+E" - -#~ msgid "Revert Home" -#~ msgstr "Zurücksetzen Home" - -#~ msgid "Backward Alt+Left" -#~ msgstr "Zurück Alt+links" - -#~ msgid "Forward Alt+Right" -#~ msgstr "Vorwärts Alt+rechts" - -#~ msgid "Back to Start Alt+Home" -#~ msgstr "Zurück zum Anfang Alt+Home" - -#~ msgid "Flip View F2" -#~ msgstr "Brett drehen F2" - -#~ msgid "Engine Output Alt+Shift+O" -#~ msgstr "Schachprogramm-Ausgabe Alt+Umschalt+O" - -#~ msgid "Move History Alt+Shift+H" -#~ msgstr "Zugliste Alt+Umschalt+H" - -#~ msgid "Evaluation Graph Alt+Shift+E" -#~ msgstr "Auswertungsgraph Alt+Umschalt+E" - -#~ msgid "Game List Alt+Shift+G" -#~ msgstr "Partieliste Alt+Umschalt+G" - -#~ msgid "Machine Black Ctrl+B" -#~ msgstr "Schachprogramm schwarz Strg+B" - -#~ msgid "Edit Game Ctrl+E" -#~ msgstr "Partie editieren Strg+E" - -#~ msgid "Edit Position Ctrl+Shift+E" -#~ msgstr "Stellung editieren Strg+Umschalt+E" - -#~ msgid "Pause Pause" -#~ msgstr "Pause Pause" - -#~ msgid "Accept F3" -#~ msgstr "Annehmen F3" - -#~ msgid "Decline F4" -#~ msgstr "Ablehnen F4" - -#~ msgid "Rematch F12" -#~ msgstr "Revanche F12" - -#~ msgid "Draw F6" -#~ msgstr "Remis F6" - -#~ msgid "Adjourn F7" -#~ msgstr "Aussetzen F7" - -#~ msgid "Abort F8" -#~ msgstr "Abbrechen F8" - -#~ msgid "Resign F9" -#~ msgstr "Aufgeben F9" - -#~ msgid "Move Now Ctrl+M" -#~ msgstr "Jetzt ziehen Strg+M" - -#~ msgid "Time Control ... Alt+Shift+T" -#~ msgstr "Zeitkontrolle… Alt+Umschalt+T" - -#~ msgid "Always Queen Ctrl+Shift+Q" -#~ msgstr "Immer Königin Strg+Umschalt+Q" - -#~ msgid "Animate Moving Ctrl+Shift+A" -#~ msgstr "Züge animieren Strg+Umschalt+A" - -#~ msgid "Auto Flag Ctrl+Shift+F" -#~ msgstr "Automatische Zeitreklamation Strg+Umschalt+F" - -#~ msgid "Ponder Next Move Ctrl+Shift+P" -#~ msgstr "Nächsten Zug abwägen Strg+Umschalt+P" - -#~ msgid "Hide Thinking Ctrl+Shift+H" -#~ msgstr "Blende Zugsuche aus Strg+Umschalt+H" - -#~ msgid "Test Legality Ctrl+Shift+L" -#~ msgstr "Gültigkeit testen Strg+Umschalt+L" - -#~ msgid "Browse" -#~ msgstr "Durchsuchen" - -#~ msgid "Filter on extensions:" -#~ msgstr "filtere nach Dateinendung:" - -#~ msgid "Pathname:" -#~ msgstr "Pfadname:" - -#~ msgid "XsraSelFile: can't get current directory" -#~ msgstr "XsraSelFile: kann aktuelles Verzeichnis nicht laden" - -#~ msgid "%s: titleWidget geometry error %d %d %d %d %d\n" -#~ msgstr "%s: titleWidget Geometriefehler %d %d %d %d %d\n" - -#~ msgid "Error expanding path name \"%s\"\n" -#~ msgstr "Fehler beim Expandieren des Pfadnamens \"%s\"\n" - -#~ msgid "" -#~ "XBoard square size (hint): %d\n" -#~ "%s fulldir:%s:\n" -#~ msgstr "" -#~ "XBoard Feldgröße (Hinweis): %d\n" -#~ "%s voller Pfad: %s\n" - -#~ msgid "Closest %s size: %d\n" -#~ msgstr "Nächste %s Größe: %d\n" - -#~ msgid "%s: messageWidget geometry error %d %d %d %d %d\n" -#~ msgstr "%s: messageWidget Geometriefehler %d %d %d %d %d\n" - -#~ msgid "%s: error loading XIM!\n" -#~ msgstr "%s: Fehler beim Laden von XIM!\n" - -#~ msgid "XIM pieces cannot be used in monochrome mode" -#~ msgstr "XIM Figuren können nicht im Monochrom-modus benutzt werden" - -#~ msgid "" -#~ "\n" -#~ "Loading XIMs...\n" -#~ msgstr "" -#~ "\n" -#~ "Lade XIMs…\n" - -#~ msgid "(File:%s:) " -#~ msgstr "(Datei:%s) " - -#~ msgid "light square " -#~ msgstr "weißes Feld " - -#~ msgid "dark square " -#~ msgstr "schwarzes Feld " - -#~ msgid "Done.\n" -#~ msgstr "Fertig.\n" - -#~ msgid "XPM pieces cannot be used in monochrome mode" -#~ msgstr "XPM Figuren können nicht im Monochrom-modus benutzt werden" - -#~ msgid "No builtin XPM pieces of size %d\n" -#~ msgstr "Keine XPM-Figuren der Größe %d vorhanden\n" - -#~ msgid "Error %d loading XPM image \"%s\"\n" -#~ msgstr "Fehler %d beim Laden von XPM-Bild »%s«\n" - -#~ msgid "" -#~ "\n" -#~ "Loading XPMs...\n" -#~ msgstr "" -#~ "\n" -#~ "Lade XPMs…\n" - -#~ msgid "(Replace by File:%s:) " -#~ msgstr "(Ersetze mit Datei:%s:) " - -#~ msgid "Error %d loading XPM file \"%s\"\n" -#~ msgstr "Fehler %d beim Laden der XPM-Datei »%s«\n" - -#~ msgid "Can't open bitmap file %s" -#~ msgstr "Bitmap file %s kann nicht geöffnet werden" - -#~ msgid "Invalid bitmap in file %s" -#~ msgstr "Ungültiges Bitmap in Datei %s" - -#~ msgid "Ran out of memory reading bitmap file %s" -#~ msgstr "Nicht genug Speicher, um Bitmapdatei %s zu laden" - -#~ msgid "Unknown XReadBitmapFile error %d on file %s" -#~ msgstr "Unbekannter XReadBitmapFile-Fehler %d bei Datei %s" - -#~ msgid "%s: %s...using built-in\n" -#~ msgstr "%s: %s… benutze integrierte\n" - -#~ msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n" -#~ msgstr "%s: Bitmap %s ist %dx%d und nicht %dx%d... benutze integrierte\n" - -#~ msgid "----" -#~ msgstr "----" - -#~ msgid "Drop" -#~ msgstr "Absetzen" - -#~ msgid "could not open: " -#~ msgstr "Konnte nicht öffnen: " - -#~ msgid "Can't open file" -#~ msgstr "Datei kann nicht geöffnet werden" - -#~ msgid "Promotion" -#~ msgstr "Umwandlung" - -#~ msgid "Promote to what?" -#~ msgstr "In Was soll umgewandelt werden?" - -#~ msgid "ok" -#~ msgstr "Ok" - -#~ msgid "AskQuestionProc needed 4 parameters, got %d\n" -#~ msgstr "AskQuestionProc braucht 4 Parameter, habe %d erhlaten\n" - -#~ msgid "enter" -#~ msgstr "Eingabe" - -#~ msgid "This feature is experimental" -#~ msgstr "Dieses Feature is experimentell" - -#~ msgid "Filter:" -#~ msgstr "Filter:" - -#~ msgid "filtertext" -#~ msgstr "Filtertext" - -#~ msgid "apply" -#~ msgstr "anwenden" - -#~ msgid "load" -#~ msgstr "lade" - -#~ msgid "prev" -#~ msgstr "vorh." - -#~ msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n" -#~ msgstr "Animiere Züge: Figur %d hüpft von %d,%d zu %d,%d\n" - -#~ msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n" -#~ msgstr "Animiere Züge: Figur %d gleitet von %d,%d zu %d,%d\n" - -#~ msgid "White " -#~ msgstr "Weiss" - -#~ msgid "Black " -#~ msgstr "Schwarz" - -#~ msgid "Close" -#~ msgstr "Schließen" - -#~ msgid "off" -#~ msgstr "aus" - -#~ msgid "minutes for each" -#~ msgstr "Minuten pro" - -#~ msgid " " -#~ msgstr " " - -#~ msgid "moves " -#~ msgstr "Züge " - -#~ msgid "You can only start a match from the initial position." -#~ msgstr "Sie können eine Partie nur von der Startaufstellunge starten." - -#~ msgid "Reload Same Game" -#~ msgstr "Spiel erneut laden" - -#~ msgid "Reload Same Position" -#~ msgstr "Stellung erneut laden" - -#~ msgid "Exit" -#~ msgstr "Beenden" - -#~ msgid "Step" -#~ msgstr "Züge" - -#~ msgid "P" -#~ msgstr "P" - -#~ msgid "Analysis" -#~ msgstr "Analyse" diff --git a/po/es.po b/po/es.po index 4068a17..8600dbd 100644 --- a/po/es.po +++ b/po/es.po @@ -8,47 +8,47 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.8.0-pre1\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: 2014-10-01 23:14+0200\n" "Last-Translator: Antonio Ceballos \n" "Language-Team: Spanish \n" +"Language: es\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:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "%s en el fichero de configuración\n" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "Valor entero malo %s" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "Argumento no reconocido %s" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "No se ha dado valor al argumento %s" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Carácter de escape \\ incompleto en el valor de %s" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "Fallo al abrir fichero de indirección %s" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Valor del argumento lógico %s no reconocido" @@ -2184,7 +2184,7 @@ msgstr "Información" msgid "Note" msgstr "Nota" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Blancas" @@ -2212,7 +2212,7 @@ msgstr "Vaciar el escaque" msgid "Clear board" msgstr "Limpiar el tablero" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Negras" @@ -2264,47 +2264,47 @@ msgstr ">" msgid ">>" msgstr ">>" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "Carpetas:" -#: dialogs.c:2774 +#: dialogs.c:2775 msgid "Files:" msgstr "Archivos:" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "por nombre" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "por tipo" -#: dialogs.c:2779 +#: dialogs.c:2780 msgid "Filename:" msgstr "Nombre del fichero:" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "Nueva carpeta" -#: dialogs.c:2781 +#: dialogs.c:2782 msgid "File type:" msgstr "Tipo de fichero:" -#: dialogs.c:2856 +#: dialogs.c:2857 msgid "Contents of" msgstr "Contenido de" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr " siguiente página" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "NOMBRE DEL DIRECTORIO PRIMERO AQUÍ" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "INTENTAR OTRO NOMBRE" @@ -2337,52 +2337,52 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "Leyendo fichero de partidas (%d)" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: no se puede ir a la carpeta CHESSDIR: " -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "Fallo al abrir el fichero '%s'\n" #  TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable? -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 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:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: sintaxis de boardSize incorrecta %s\n" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: nombre de boardSize no reconocido %s\n" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: insuficientes colores disponibles: probando modo monocromo\n" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "No se ha podido crear conjunto de fuentes para %s.\n" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: ninguna fuente concuerda con el patrón %s\n" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "No se puede abrir el fichero temporal" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "Fallo al abrir fichero" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..b5af98b --- /dev/null +++ b/po/fr.po @@ -0,0 +1,2972 @@ +# French translation for xboard. +# Copyright (C) 2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the xboard package. +# +# Florian Ganee , 2014. +# Stéphane Aulery , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: xboard 4.8.0-pre1\n" +"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" +"POT-Creation-Date: 2014-09-29 21:06-0700\n" +"PO-Revision-Date: 2015-04-26 15:27+0200\n" +"Last-Translator: Stéphane Aulery \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: args.h:839 +#, c-format +msgid "%s in settings file\n" +msgstr "%s dans le fichier de configuration\n" + +#: args.h:873 +#, c-format +msgid "Bad integer value %s" +msgstr "Valeur de l'entier %s incorrecte" + +#: args.h:979 args.h:1240 +#, c-format +msgid "Unrecognized argument %s" +msgstr "Argument %s non reconnu" + +#: args.h:1010 +#, c-format +msgid "No value provided for argument %s" +msgstr "Aucune valeur donnée pour l'argument %s" + +#: args.h:1070 +#, c-format +msgid "Incomplete \\ escape in value for %s" +msgstr "Incomplet \\ fuite en valeur pour %s" + +#: args.h:1181 +#, c-format +msgid "Failed to open indirection file %s" +msgstr "Impossible d'ouvrir le fichier des indirections %s" + +#: args.h:1198 +#, c-format +msgid "Unrecognized boolean argument value %s" +msgstr "Valeur de l'argument booléen %s non reconnue " + +#. 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:808 +msgid "first" +msgstr "Premier" + +#. 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:811 +msgid "second" +msgstr "Deuxième" + +#: backend.c:894 +#, c-format +msgid "protocol version %d not supported" +msgstr "Version %d du protocole non supportée" + +#: backend.c:1000 +msgid "You did not specify the engine executable" +msgstr "Vous n'avez pas précisé l'exécutable du moteur / moteur exécutable ?" + +#: backend.c:1058 +#, c-format +msgid "bad timeControl option %s" +msgstr "Option %s du timeControl incorrecte " + +#: backend.c:1073 +#, c-format +msgid "bad searchTime option %s" +msgstr "Option %s de searchTime incorrecte " + +#: backend.c:1179 +#, c-format +msgid "Variant %s supported only in ICS mode" +msgstr "La variante %s n'est supporté qu'en mode ICS" + +#: backend.c:1197 +#, c-format +msgid "Unknown variant name %s" +msgstr "Nom divers %s inconnu" + +#: backend.c:1448 +msgid "Starting chess program" +msgstr "Démarrage du jeu d'échecs" + +#: backend.c:1471 +msgid "Bad game file" +msgstr "Fichier de jeu incorrect" + +#: backend.c:1478 +msgid "Bad position file" +msgstr "Chemin de fichier incorrect" + +#: backend.c:1492 +msgid "Pick new game" +msgstr "Choisissez nouveau jeu" + +#: backend.c:1561 +msgid "" +"You restarted an already completed tourney.\n" +"One more cycle will now be added to it.\n" +"Games commence in 10 sec." +msgstr "" +"Vous avez redémarré un tournoi déjà terminé.\n" +"Une nouvelle manche va y être ajoutée.\n" +"Les jeux débutent dans 10 secondes." + +#: backend.c:1568 +#, c-format +msgid "All games in tourney '%s' are already played or playing" +msgstr "Tous les jeux du tournoi '%s' sont déjà terminés ou sont en cours" + +#: backend.c:1575 +msgid "Can't have a match with no chess programs" +msgstr "Impossible d'obtenir un match sans programme d'échecs" + +#: backend.c:1629 +#, c-format +msgid "Could not open comm port %s" +msgstr "Impossible d'ouvrir le port de communication %s" + +#: backend.c:1632 +#, c-format +msgid "Could not connect to host %s, port %s" +msgstr "Impossible de se connecter à l'hôte %s, au port %s" + +#: backend.c:1688 +#, c-format +msgid "Unknown initialMode %s" +msgstr "initialMode %s inconnu" + +#: backend.c:1714 +msgid "AnalyzeFile mode requires a game file" +msgstr "Le mode AnalyzeFile nécessite un fichier de jeu" + +#: backend.c:1741 +msgid "Analysis mode requires a chess engine" +msgstr "Le mode Analyse nécessite un moteur d'échecs" + +#: backend.c:1745 +msgid "Analysis mode does not work with ICS mode" +msgstr "Le mode Analyse n'est pas compatible avec le mode ICS" + +#: backend.c:1756 +msgid "MachineWhite mode requires a chess engine" +msgstr "Le mode MachineWhite nécessite un moteur d'échecs" + +#: backend.c:1761 +msgid "MachineWhite mode does not work with ICS mode" +msgstr "Le mode MachineWhite n'est pas compatible avec le mode ICS" + +#: backend.c:1768 +msgid "MachineBlack mode requires a chess engine" +msgstr "Le mode MachineBlack nécessite un moteur d'échecs" + +#: backend.c:1773 +msgid "MachineBlack mode does not work with ICS mode" +msgstr "Le mode MachineBlack n'est pas compatible avec le mode ICS" + +#: backend.c:1780 +msgid "TwoMachines mode requires a chess engine" +msgstr "Le mode Versus requiert un moteur d'échecs" + +#: backend.c:1785 +msgid "TwoMachines mode does not work with ICS mode" +msgstr "Le mode multi-joueurs n'est pas compatible avec le mode ICS" + +#: backend.c:1796 +msgid "Training mode requires a game file" +msgstr "Le mode d'entraînement nécessite un fichier de jeu" + +#: backend.c:1959 backend.c:2014 backend.c:2037 backend.c:2439 +msgid "Error writing to ICS" +msgstr "Erreur dans l'écriture vers ICS" + +#: backend.c:1974 +msgid "Error reading from keyboard" +msgstr "Erreur dans la lecture du clavier" + +#: backend.c:1977 +msgid "Got end of file from keyboard" +msgstr "Fin de fichier obtenue du clavier" + +#: backend.c:2285 +#, c-format +msgid "Unknown wild type %d" +msgstr "Type étranger %d inconnu" + +#: backend.c:2356 usystem.c:332 +msgid "Error writing to display" +msgstr "Erreur lors d'écriture sur l'écran" + +#. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers +#: backend.c:3124 +#, c-format +msgid "your opponent kibitzes: %s" +msgstr "Votre adversaire vous conseille : %s" + +#: backend.c:3663 +msgid "Error gathering move list: two headers" +msgstr "Erreur lors du rassemblement de la liste des mouvements : deux en-têtes" + +#: backend.c:3710 +msgid "Error gathering move list: nested" +msgstr "Erreur lors du rassemblement de la liste des mouvements : enchevêtrement " + +#: backend.c:3814 backend.c:4232 backend.c:4436 backend.c:4995 backend.c:4999 +#: backend.c:7122 backend.c:12692 backend.c:14428 backend.c:14505 +#: backend.c:14551 backend.c:14557 backend.c:14562 backend.c:14567 +msgid "vs." +msgstr "contre" + +#: backend.c:3942 +msgid "Illegal move (rejected by ICS)" +msgstr "Mouvement non autorisé (rejeté par l'ICS)" + +#: backend.c:4280 +msgid "Connection closed by ICS" +msgstr "Connexion terminée par l'ICS" + +#: backend.c:4282 +msgid "Error reading from ICS" +msgstr "Erreur lors de la lecture de l'ICS" + +#: backend.c:4359 +#, c-format +msgid "" +"Failed to parse board string:\n" +"\"%s\"" +msgstr "" +"Échec lors de l'analyse la chaîne du plateau :\n" +"\"%s\"" + +#: backend.c:4368 backend.c:10290 +msgid "Game too long; increase MAX_MOVES and recompile" +msgstr "Jeu trop long; augmentez MAX_MOVES et recompilez" + +#: backend.c:4487 +msgid "Error gathering move list: extra board" +msgstr "Erreur lors du rassemblement de la liste des mouvements : plateau superflu" + +#: backend.c:4919 backend.c:4941 +#, c-format +msgid "Couldn't parse move \"%s\" from ICS" +msgstr "Impossible d'analyser le mouvement \"%s\" de l'ICS" + +#: backend.c:5189 +#, c-format +msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" +msgstr "Une erreur interne est survenue; moveType %d (%d,%d-%d,%d) incorrect" + +#: backend.c:5260 +msgid "You cannot do this while you are playing or observing" +msgstr "Vous ne pouvez pas exécuter cette action en tant que joueur ou observateur" + +#: backend.c:6205 +msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" +msgstr "Recompilez pour supporter ce BOARD_RANKS ou BOARD_FILES !" + +#: backend.c:6695 +msgid "You are playing Black" +msgstr "Vous jouez les Noirs" + +#: backend.c:6704 backend.c:6731 +msgid "You are playing White" +msgstr "Vous jouez les Blancs" + +#: backend.c:6713 backend.c:6739 backend.c:6860 backend.c:6885 backend.c:6901 +#: backend.c:15237 +msgid "It is White's turn" +msgstr "Au tour des Blancs de jouer" + +#: backend.c:6717 backend.c:6743 backend.c:6868 backend.c:6891 backend.c:6922 +#: backend.c:15229 +msgid "It is Black's turn" +msgstr "Au tour des Noirs de jouer" + +#: backend.c:6756 +msgid "Displayed position is not current" +msgstr "La position affichée n'est pas la position courante" + +#: backend.c:7002 +msgid "Illegal move" +msgstr "Mouvement interdit" + +#: backend.c:7079 +msgid "End of game" +msgstr "Fin de partie" + +#: backend.c:7082 +msgid "Incorrect move" +msgstr "Mouvement incorrect" + +#: backend.c:7473 backend.c:7620 +msgid "Pull pawn backwards to under-promote" +msgstr "Amenez le pion en arrière pour le sous-promouvoir" + +#: backend.c:7583 +msgid "only marked squares are legal" +msgstr "Seuls les cases marquées sont autorisées" + +#: backend.c:7871 +msgid "Swiss tourney finished" +msgstr "Le tournoi à système suisse est terminé" + +#: backend.c:8387 +msgid "could not load EGBB library" +msgstr "Impossible de charger la bibliothèque EGBB" + +#: backend.c:8390 +msgid "wrong EGBB version" +msgstr "Version d'EGBB incorrecte" + +#: backend.c:8503 +msgid "Invalid pairing from pairing engine" +msgstr "Jumelage invalide de la part du moteur de jumelage" + +#: backend.c:8654 +#, c-format +msgid "Illegal move \"%s\" from %s machine" +msgstr "Mouvement \"%s\" interdit de la machine %s" + +#: backend.c:8919 +msgid "Bad FEN received from engine" +msgstr "FEN reçue du moteur incorrecte " + +#: backend.c:9020 +msgid "Engine did not send setup for non-standard variant" +msgstr "Le moteur n'a pas fourni de d'installation pour une variante non-standard " + +#: backend.c:9093 backend.c:14290 backend.c:14358 +#, c-format +msgid "%s does not support analysis" +msgstr "%s ne supporte pas l'analyse" + +#: backend.c:9159 +#, c-format +msgid "Illegal move \"%s\" (rejected by %s chess program)" +msgstr "Mouvement \"%s\" interdit (rejeté par le programme d'échecs %s)" + +#: backend.c:9190 +#, c-format +msgid "Failed to start %s chess program %s on %s: %s\n" +msgstr "Échec dans le démarrage du programme d'échec %s %s sur %s: %s\n" + +#: backend.c:9211 +#, c-format +msgid "Hint: %s" +msgstr "Indice : %s" + +#: backend.c:9216 +#, c-format +msgid "" +"Illegal hint move \"%s\"\n" +"from %s chess program" +msgstr "" +"Mouvement d'indice \"%s\" interdit\n" +"dans le programme d'échecs %s" + +#: backend.c:9391 +msgid "Machine accepts your draw offer" +msgstr "La machine accepte votre proposition de match nul" + +#: backend.c:9394 +msgid "" +"Machine offers a draw.\n" +"Select Action / Draw to accept." +msgstr "" +"La machine propose un match nul.\n" +"Sélectionnez Action / Égalité pour accepter." + +#. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone +#: backend.c:9479 +msgid "failed writing PV" +msgstr "Écriture de PV échouée" + +#: backend.c:9778 +#, c-format +msgid "Ambiguous move in ICS output: \"%s\"" +msgstr "Mouvement ambigu dans la sortie ICS : \"%s\"" + +#: backend.c:9788 +#, c-format +msgid "Illegal move in ICS output: \"%s\"" +msgstr "Mouvement interdit dans la sortie ICS : \"%s\"" + +#: backend.c:9799 +msgid "Gap in move list" +msgstr "Il y a un trou dans la liste des mouvements " + +#: backend.c:10444 +#, c-format +msgid "Variant %s not supported by %s" +msgstr "La variante %s n'est pas supportée par %s" + +#: backend.c:10451 +#, c-format +msgid ", but %s is" +msgstr ", mais %s est" + +#: backend.c:10606 +#, c-format +msgid "Startup failure on '%s'" +msgstr "Échec de démarrage sur '%s'" + +#: backend.c:10637 +msgid "Waiting for first chess program" +msgstr "En attente du premier programme d'échecs" + +#: backend.c:10642 backend.c:14576 +msgid "Waiting for second chess program" +msgstr "En attente du second programme d'échecs" + +#: backend.c:10691 +msgid "Could not write on tourney file" +msgstr "Impossible d'écrire dans le fichier du tournoi" + +#: backend.c:10765 +msgid "" +"You cannot replace an engine while it is engaged!\n" +"Terminate its game first." +msgstr "" +"Vous ne pouvez pas remplacer un moteur pendant qu'il est engagé !\n" +"Veuillez d'abord clôturer le jeu associé. " + +#: backend.c:10779 +msgid "No engine with the name you gave is installed" +msgstr "Aucun moteur portant le nom fourni n'est installé" + +#: backend.c:10781 +msgid "" +"First change an engine by editing the participants list\n" +"of the Tournament Options dialog" +msgstr "" +"Tout d'abord, changez le moteur d'échecs en éditant la liste des participants\n" +"de la boîte de dialogue Options du Tournoi" + +#: backend.c:10782 +msgid "You can only change one engine at the time" +msgstr "Vous ne pouvez changer qu'un seul moteur à la fois " + +#: backend.c:10797 backend.c:10946 +#, c-format +msgid "No engine %s is installed" +msgstr "Aucun moteur %s n'est installé" + +#: backend.c:10817 +msgid "" +"You must supply a tournament file,\n" +"for storing the tourney progress" +msgstr "" +"Vous devez fournir un fichier de tournoi,\n" +"afin de conserver la progression du tournoi" + +#: backend.c:10827 +msgid "Not enough participants" +msgstr "Pas assez de participants" + +#: backend.c:11030 +msgid "Bad tournament file" +msgstr "Mauvais fichier de tournoi" + +#: backend.c:11042 +msgid "Waiting for other game(s)" +msgstr "En attente d'autres parties" + +#: backend.c:11055 +msgid "No pairing engine specified" +msgstr "Aucun moteur de jumelage n'est spécifié" + +#: backend.c:11531 +#, c-format +msgid "Match %s vs. %s: final score %d-%d-%d" +msgstr "Match %s contre %s : score final %d-%d-%d" + +#: backend.c:12009 backend.c:12040 +#, c-format +msgid "Illegal move: %d.%s%s" +msgstr "Mouvement interdit : %d.%s%s" + +#: backend.c:12029 +#, c-format +msgid "Ambiguous move: %d.%s%s" +msgstr "Mouvement ambigu : %d.%s%s" + +#: backend.c:12083 backend.c:13125 backend.c:13318 backend.c:13688 +#, c-format +msgid "Can't open \"%s\"" +msgstr "Impossible d'ouvrir \"%s\"" + +#: backend.c:12095 menus.c:116 +msgid "Cannot build game list" +msgstr "Impossible de construire la liste de jeu" + +#: backend.c:12180 +msgid "No more games in this message" +msgstr "Plus de jeux dans ce message" + +#: backend.c:12220 +msgid "No game has been loaded yet" +msgstr "Aucun jeu n'a encore été chargé " + +#: backend.c:12224 backend.c:13106 ngamelist.c:129 +msgid "Can't back up any further" +msgstr "Impossible de reculer davantage" + +#: backend.c:12668 +msgid "Game number out of range" +msgstr "Numéro de la partie hors de la plage" + +#: backend.c:12679 +msgid "Can't seek on game file" +msgstr "Impossible d'appeler le fichier de jeu" + +#: backend.c:12737 +msgid "Game not found in file" +msgstr "Partie non trouvée dans le fichier" + +#: backend.c:12866 backend.c:13202 +msgid "Bad FEN position in file" +msgstr "Position de FEN incorrecte dans le fichier" + +#: backend.c:13018 +msgid "No moves in game" +msgstr "Aucun mouvement dans le jeu" + +#: backend.c:13102 +msgid "No position has been loaded yet" +msgstr "Aucune position n'a encore été chargée" + +#: backend.c:13163 backend.c:13174 +msgid "Can't seek on position file" +msgstr "Impossible d'appeler le fichier de position" + +#: backend.c:13181 backend.c:13193 +msgid "Position not found in file" +msgstr "Position non trouvée dans le fichier" + +#: backend.c:13233 +msgid "Black to play" +msgstr "Aux noirs de jouer" + +#: backend.c:13236 +msgid "White to play" +msgstr "Aux blancs de jouer" + +#: backend.c:13323 backend.c:13693 +msgid "Waiting for access to save file" +msgstr "En attente de l'accès au fichier de sauvegarde" + +#: backend.c:13325 +msgid "Saving game" +msgstr "Sauvegarde du jeu en cours" + +#: backend.c:13326 +msgid "Bad Seek" +msgstr "Mauvaise recherche" + +#: backend.c:13695 +msgid "Saving position" +msgstr "Sauvegarde de la position en cours" + +#: backend.c:13821 +msgid "" +"You have edited the game history.\n" +"Use Reload Same Game and make your move again." +msgstr "" +"Vous avez modifié l'historique de la partie.\n" +"Utilisez Recharger la Même Partie et faites votre mouvement encore une fois. " + +#: backend.c:13826 +msgid "" +"You have entered too many moves.\n" +"Back up to the correct position and try again." +msgstr "" +"Vous avez entré trop de mouvements.\n" +"Veuillez retourner à une position correcte and veuillez réessayer. " + +#: backend.c:13831 +msgid "" +"Displayed position is not current.\n" +"Step forward to the correct position and try again." +msgstr "" +"La position affichée n'est pas la position courante.\n" +"Avancez d'un pas vers la position correcte et veuillez réessayer. " + +#: backend.c:13878 +msgid "You have not made a move yet" +msgstr "Vous n'avez pas encore fait de mouvement" + +#: backend.c:13899 +msgid "" +"The cmail message is not loaded.\n" +"Use Reload CMail Message and make your move again." +msgstr "" +"Le message cmail n'est pas chargé.\n" +"Utilisez Recharger le Message CMail et veuillez refaire votre mouvement." + +#: backend.c:13904 +msgid "No unfinished games" +msgstr "Aucune partie non terminée" + +#: backend.c:13910 +#, 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 "" +"Vous avez déjà envoyé un mouvement par mail.\n" +"Veuillez attendre que votre adversaire vous envoie un mouvement.\n" +"Pour renvoyer le même mouvement, tapez\n" +"\"cmail -remail -game %s\"\n" +"dans la ligne de commande." + +#: backend.c:13925 +msgid "Failed to invoke cmail" +msgstr "Échec lors de l'invocation de cmail" + +#: backend.c:13987 +#, c-format +msgid "Waiting for reply from opponent\n" +msgstr "En attente de la réponse de votre adversaire\n" + +#: backend.c:14009 +#, c-format +msgid "Still need to make move for game\n" +msgstr "Il est encore nécessaire de faire un mouvement pour la partie restante\n" + +#: backend.c:14013 +#, c-format +msgid "Still need to make moves for both games\n" +msgstr "Il est encore nécessaire de faire des mouvements pour les deux parties restantes\n" + +#: backend.c:14017 +#, c-format +msgid "Still need to make moves for all %d games\n" +msgstr "Il est encore nécessaire de faire des mouvements pour les %d parties restantes\n" + +#: backend.c:14024 +#, c-format +msgid "Still need to make a move for game %s\n" +msgstr "Il est encore nécessaire de faire un mouvement pour la partie %s\n" + +#: backend.c:14030 +#, c-format +msgid "No unfinished games\n" +msgstr "Aucun jeu non terminé\n" + +#: backend.c:14032 +#, c-format +msgid "Ready to send mail\n" +msgstr "Prêt à envoyer le mai\n" + +#: backend.c:14037 +#, c-format +msgid "Still need to make moves for games %s\n" +msgstr "Il est encore nécessaire de faire des mouvements pour les parties %s\n" + +#: backend.c:14240 +msgid "Edit comment" +msgstr "Édit un commentaire" + +#: backend.c:14242 +#, c-format +msgid "Edit comment on %d.%s%s" +msgstr "Édit un commentaire sur %d.%s%s" + +#: backend.c:14297 +#, c-format +msgid "You are not observing a game" +msgstr "Vous n'observez aucune partie " + +#: backend.c:14408 +msgid "It is not White's turn" +msgstr "C'est maintenant au tour des Blancs" + +#: backend.c:14489 +msgid "It is not Black's turn" +msgstr "C'est maintenant au tour des Noirs" + +#: backend.c:14597 +#, c-format +msgid "Starting %s chess program" +msgstr "Démarrage du programme d'échecs %s" + +#: backend.c:14625 backend.c:15783 +msgid "" +"Wait until your turn,\n" +"or select 'Move Now'." +msgstr "" +"Veuillez attendre votre tour,\n" +"ou sélectionnez 'Bouger maintenant'." + +#: backend.c:14762 +msgid "Training mode off" +msgstr "Mode d'entraînement éteint " + +#: backend.c:14770 +msgid "Training mode on" +msgstr "Mode d'entraînement démarré" + +#: backend.c:14773 +msgid "Already at end of game" +msgstr "Déjà à la fin de la partie" + +#: backend.c:14853 +msgid "Warning: You are still playing a game" +msgstr "Attention : Vous êtes encore en train de jouer une partie " + +#: backend.c:14856 +msgid "Warning: You are still observing a game" +msgstr "Attention : Vous êtes encore en train d'observer une partie " + +#: backend.c:14859 +msgid "Warning: You are still examining a game" +msgstr "Attention : Vous êtes encore en train d'examiner une partie " + +#: backend.c:14926 +msgid "Click clock to clear board" +msgstr "Cliquez sur le chronomètre pour nettoyer le plateau" + +#: backend.c:14936 +msgid "Close ICS engine analyze..." +msgstr "Fermer l'analyse du moteur ICS..." + +#: backend.c:15254 +msgid "That square is occupied" +msgstr "La case est occupée" + +#: backend.c:15278 backend.c:15304 +msgid "There is no pending offer on this move" +msgstr "Il n'y a aucune offre en suspens pour ce mouvement " + +#: backend.c:15340 backend.c:15351 +msgid "Your opponent is not out of time" +msgstr "Votre adversaire n'est pas en retard" + +#: backend.c:15419 +msgid "You must make your move before offering a draw" +msgstr "Vous devez faire votre mouvement avec de proposer un match nul" + +#: backend.c:15765 +msgid "You are not examining a game" +msgstr "Vous n'êtes pas en train d'étudier le jeu" + +#: backend.c:15769 +msgid "You can't revert while pausing" +msgstr "Vous ne pouvez pas revenir en arrière lorsque vous êtes en pause" + +#: backend.c:15823 backend.c:15830 +msgid "It is your turn" +msgstr "C'est à vous de jouer" + +#: backend.c:15881 backend.c:15888 backend.c:15974 backend.c:15981 +msgid "Wait until your turn." +msgstr "Veuillez patienter jusqu'à votre tour" + +#: backend.c:15893 +msgid "No hint available" +msgstr "Aucun indice n'est disponible" + +#: backend.c:15908 backend.c:15939 ngamelist.c:357 +msgid "Game list not loaded or empty" +msgstr "Liste de jeux non chargée ou vide" + +#: backend.c:15946 +msgid "Book file exists! Try again for overwrite." +msgstr "Fichier de bibliothèque existant ! Essayez encore pour écraser." + +#: backend.c:16427 +#, c-format +msgid "Error writing to %s chess program" +msgstr "Erreur lors de l'écriture dans le programme d'échecs %s" + +#: backend.c:16430 backend.c:16461 +#, c-format +msgid "%s program exits in draw position (%s)" +msgstr "Le programme %s quitte sur un match nul (%s)" + +#: backend.c:16456 +#, c-format +msgid "Error: %s chess program (%s) exited unexpectedly" +msgstr "Erreur : le programme d'échec %s (%s) a quitté de façon inattendue" + +#: backend.c:16474 +#, c-format +msgid "Error reading from %s chess program (%s)" +msgstr "Erreur de lecture dans le programme d'échecs %s (%s)" + +#: backend.c:16902 +#, c-format +msgid "%s engine has too many options\n" +msgstr "Le moteur %s possède trop d'options\n" + +#: backend.c:17058 +msgid "Displayed move is not current" +msgstr "Le mouvement affiché n'est pas celui qui est courant " + +#: backend.c:17067 +msgid "Could not parse move" +msgstr "Impossible d'analyser le mouvement " + +#: backend.c:17192 backend.c:17214 +msgid "Both flags fell" +msgstr "Les deux drapeaux ont chuté" + +#: backend.c:17194 +msgid "White's flag fell" +msgstr "Le drapeau des Blancs a chuté" + +#: backend.c:17216 +msgid "Black's flag fell" +msgstr "Le drapeau des Noirs a chuté" + +#: backend.c:17347 +msgid "Clock adjustment not allowed in auto-flag mode" +msgstr "Le réajustement d'horloge n'est pas autorisé dans le mode drapeau automatique" + +#: backend.c:18246 +msgid "Bad FEN position in clipboard" +msgstr "Mauvaise position FEN dans le presse-papier" + +#: book.c:579 book.c:836 +msgid "Polyglot book not valid" +msgstr "Bibliothèque d'ouverture invalide" + +#: book.c:703 +msgid "Book Fault" +msgstr "Défaut de bibliothèque" + +#: book.c:839 +msgid "Hash keys are different" +msgstr "Les clés de hashage sont différentes" + +#: book.c:1015 +msgid "Could not create book" +msgstr "Impossible de créer la bibliothèque" + +#: dialogs.c:283 +msgid "Tournament file: " +msgstr "Fichier de tournoi :" + +#: dialogs.c:284 +msgid "For concurrent playing of tourney with multiple XBoards:" +msgstr "Pour les parties de tournoi simultanées avec plusieurs XBoards :" + +#: dialogs.c:285 +msgid "Sync after round" +msgstr "Synchronisation après le tour" + +#: dialogs.c:286 +msgid "Sync after cycle" +msgstr "Synchronisation après le cycle" + +#: dialogs.c:287 +msgid "Tourney participants:" +msgstr "Participants du tournoi : " + +#: dialogs.c:288 +msgid "Select Engine:" +msgstr "Sélectionnez le moteur :" + +#: dialogs.c:296 +msgid "Tourney type (0 = round-robin, 1 = gauntlet):" +msgstr "Type du tournoi (0 = toutes rondes, 1 = gantelet) : " + +#: dialogs.c:297 +msgid "Number of tourney cycles (or Swiss rounds):" +msgstr "Nombre de cycles du tournoi (ou rondes suisses) : " + +#: dialogs.c:298 +msgid "Default Number of Games in Match (or Pairing):" +msgstr "Nombre de jeux par défaut dans le match (ou appariement ) :" + +#: dialogs.c:299 +msgid "Pause between Match Games (msec):" +msgstr "Pause entre les jeux de match (msec) :" + +#: dialogs.c:300 +msgid "Save Tourney Games on:" +msgstr "Sauvegarder les jeux de tournoi sur :" + +#: dialogs.c:301 +msgid "Game File with Opening Lines:" +msgstr "Fichier de jeu avec ouverture de lignes :" + +#: dialogs.c:302 +msgid "Game Number (-1 or -2 = Auto-Increment):" +msgstr "Nombre de jeux (-1 ou -2 = incrémentation automatique) : " + +#: dialogs.c:303 +msgid "File with Start Positions:" +msgstr "Fichier avec les positions de départ : " + +#: dialogs.c:304 +msgid "Position Number (-1 or -2 = Auto-Increment):" +msgstr "Nombre de positions (-1 ou -2 = incrémentation automatique) :" + +#: dialogs.c:305 +msgid "Rewind Index after this many Games (0 = never):" +msgstr "Rebobinage d'index après ce nombre de jeux (0 = jamais) :" + +#: dialogs.c:306 +msgid "Disable own engine books by default" +msgstr "Désactiver ses propres bibliothèques de moteurs par défaut" + +#: dialogs.c:307 dialogs.c:1655 +msgid "Time Control" +msgstr "Contrôle temporel" + +#: dialogs.c:308 +msgid "Common Engine" +msgstr "Moteur commun" + +#: dialogs.c:309 dialogs.c:441 +msgid "General Options" +msgstr "Options générales" + +#: dialogs.c:310 +msgid "Continue Later" +msgstr "Poursuivre ultérieurement " + +#: dialogs.c:311 +msgid "Replace Engine" +msgstr "Remplacer le moteur" + +#: dialogs.c:312 +msgid "Upgrade Engine" +msgstr "Mettre à niveau le moteur" + +#: dialogs.c:313 +msgid "Clone Tourney" +msgstr "Fermer le tournoi" + +#: dialogs.c:351 +msgid "First you must specify an existing tourney file to clone" +msgstr "Tout d'abord, vous devez spécifier un fichier de tournoi existant à cloner " + +#: dialogs.c:367 dialogs.c:1496 +msgid "# no engines are installed" +msgstr "# aucun moteur n'est installé" + +#: dialogs.c:375 +msgid "Internal error: PARTICIPANTS set wrong" +msgstr "Erreur interne : réglage PARTICIPANTS erroné" + +#: dialogs.c:383 +msgid "Tournament Options" +msgstr "Options du tournoi" + +#: dialogs.c:402 +msgid "Absolute Analysis Scores" +msgstr "Analyse absolue des scores " + +#: dialogs.c:403 +msgid "Almost Always Queen (Detour Under-Promote)" +msgstr "Presque toujours une Reine (voire une sous-promotion)" + +#: dialogs.c:404 menus.c:736 +msgid "Animate Dragging" +msgstr "Traînée animée" + +#: dialogs.c:405 menus.c:737 +msgid "Animate Moving" +msgstr "Mouvement animé" + +#: dialogs.c:406 menus.c:738 +msgid "Auto Flag" +msgstr "Drapeau automatique" + +#: dialogs.c:407 menus.c:739 +msgid "Auto Flip View" +msgstr "Retournement de vue automatique" + +#: dialogs.c:408 menus.c:740 +msgid "Blindfold" +msgstr "Aveugle" + +#. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position +#: dialogs.c:410 +msgid "Drop Menu" +msgstr "Menu déroulant" + +#: dialogs.c:411 +msgid "Enable Variation Trees" +msgstr "Autoriser les arbres de variation" + +#: dialogs.c:412 +msgid "Headers in Engine Output Window" +msgstr "En-têtes dans la fenêtre de sortie du moteur" + +#: dialogs.c:413 +msgid "Hide Thinking from Human" +msgstr "Cacher la pensée de l'Humain" + +#: dialogs.c:414 menus.c:745 +msgid "Highlight Last Move" +msgstr "Surligner le dernier mouvement " + +#: dialogs.c:415 +msgid "Highlight with Arrow" +msgstr "Surligner avec une flèche" + +#: dialogs.c:416 menus.c:748 +msgid "One-Click Moving" +msgstr "Déplacement en un clic" + +#: dialogs.c:417 +msgid "Periodic Updates (in Analysis Mode)" +msgstr "Mises à jour périodiques (en mode d'analyse)" + +#: dialogs.c:419 +msgid "Play Move(s) of Clicked PV (Analysis)" +msgstr "Mouvement(s) de jeu du PV sélectionné (Analyse)" + +#: dialogs.c:420 dialogs.c:604 menus.c:750 +msgid "Ponder Next Move" +msgstr "Réfléchir au mouvement suivant" + +#: dialogs.c:421 +msgid "Popup Exit Messages" +msgstr "Faire apparaître les messages de sortie" + +#: dialogs.c:422 menus.c:752 +msgid "Popup Move Errors" +msgstr "Faire apparaître les erreurs de mouvement" + +#: dialogs.c:423 +msgid "Scores in Move List" +msgstr "Scores dans la liste des mouvements" + +#: dialogs.c:424 +msgid "Show Coordinates" +msgstr "Montrer les coordonnées" + +#: dialogs.c:425 +msgid "Show Target Squares" +msgstr "Montrer les cases cibles" + +#: dialogs.c:426 +msgid "Sticky Windows" +msgstr "Fenêtres collantes" + +#: dialogs.c:427 menus.c:755 +msgid "Test Legality" +msgstr "Tester la légalité" + +#: dialogs.c:428 +msgid "Top-Level Dialogs" +msgstr "Dialogues de haut-niveau" + +#: dialogs.c:429 +msgid "Flash Moves (0 = no flashing):" +msgstr "Mouvements clignotants (0 = pas de clignotement) :" + +#: dialogs.c:430 +msgid "Flash Rate (high = fast):" +msgstr "Taux de clignotement (haut = rapide) :" + +#: dialogs.c:431 +msgid "Animation Speed (high = slow):" +msgstr "Vitesse des animations (haut = lent) :" + +#: dialogs.c:432 +msgid "Zoom factor in Evaluation Graph:" +msgstr "Facteur de zoom dans le graphique d'évaluation :" + +#: dialogs.c:452 +msgid "Normal" +msgstr "Normal" + +#: dialogs.c:453 +msgid "Makruk" +msgstr "Makruk" + +#: dialogs.c:454 +msgid "FRC" +msgstr "FRC" + +#: dialogs.c:455 +msgid "Shatranj" +msgstr "Chatrang" + +#: dialogs.c:456 +msgid "Wild castle" +msgstr "Roque furieux" + +#: dialogs.c:457 +msgid "Knightmate" +msgstr "Compagnon du roi" + +#: dialogs.c:458 +msgid "No castle" +msgstr "Sans roque" + +#: dialogs.c:459 +msgid "Cylinder *" +msgstr "Cylindre *" + +#: dialogs.c:460 +msgid "3-checks" +msgstr "Tri-échecs" + +#: dialogs.c:461 +msgid "berolina *" +msgstr "Berolina *" + +#: dialogs.c:462 +msgid "atomic" +msgstr "Atomique" + +#: dialogs.c:463 +msgid "two kings" +msgstr "Deux rois" + +#: dialogs.c:464 +msgid " " +msgstr " " + +#: dialogs.c:465 +msgid "Spartan" +msgstr "Spartan" + +#: dialogs.c:466 +msgid "Board size ( -1 = default for selected variant):" +msgstr "Taille de l'échiquier (-1 = par défaut pour la variante sélectionnée) :" + +#: dialogs.c:467 +msgid "Number of Board Ranks:" +msgstr "Nombre de rangées :" + +#: dialogs.c:468 +msgid "Number of Board Files:" +msgstr "Nombre de colonnes : " + +#: dialogs.c:469 +msgid "Holdings Size:" +msgstr "Taille de la zone de stockage :" + +#: dialogs.c:471 +msgid "" +"Variants marked with * can only be played\n" +"with legality testing off." +msgstr "" +"Les variantes marquées d'une * ne peuvent être jouées\n" +" qu'avec la vérification de la légalité désactivée." + +#: dialogs.c:473 +msgid "ASEAN" +msgstr "ASEAN" + +#: dialogs.c:474 +msgid "Great Shatranj (10x8)" +msgstr "Grand Chatrang" + +#: dialogs.c:475 +msgid "Seirawan" +msgstr "Seirawan" + +#: dialogs.c:476 +msgid "Falcon (10x8)" +msgstr "Faucon (10x8)" + +#: dialogs.c:477 +msgid "Superchess" +msgstr "Super échec" + +#: dialogs.c:478 +msgid "Capablanca (10x8)" +msgstr "Capablanca (10x8)" + +#: dialogs.c:479 +msgid "Crazyhouse" +msgstr "Maison de fous" + +#: dialogs.c:480 +msgid "Gothic (10x8)" +msgstr "Gothique (10x8)" + +#: dialogs.c:481 +msgid "Bughouse" +msgstr "Blitz à quatre" + +#: dialogs.c:482 +msgid "Janus (10x8)" +msgstr "Janus (10x8)" + +#: dialogs.c:483 +msgid "Suicide" +msgstr "Qui perd gagne" + +#: dialogs.c:484 +msgid "CRC (10x8)" +msgstr "Échecs aléatoires Capablanca (10x8)" + +#: dialogs.c:485 +msgid "give-away" +msgstr "Qui perd gagne" + +#: dialogs.c:486 +msgid "grand (10x10)" +msgstr "Grand (10x10)" + +#: dialogs.c:487 +msgid "losers" +msgstr "Qui perd gagne" + +#: dialogs.c:488 +msgid "shogi (9x9)" +msgstr "Shogi (9x9)" + +#: dialogs.c:489 +msgid "fairy" +msgstr "Féerique" + +#: dialogs.c:490 +msgid "xiangqi (9x10)" +msgstr "Xianggi (9x10)" + +#: dialogs.c:491 +msgid "mighty lion" +msgstr "Mat du lion " + +#: dialogs.c:492 +msgid "courier (12x8)" +msgstr "Coursier (12x8)" + +#: dialogs.c:493 +msgid "elven chess (10x10)" +msgstr "Échecs elfiques (10x10)" + +#: dialogs.c:494 +msgid "chu shogi (12x12)" +msgstr "Chu Shogi (12x12)" + +#: dialogs.c:526 +#, c-format +msgid "Warning: second engine (%s) does not support this!" +msgstr "Attention : le second moteur (%s) ne supporte pas cela !" + +#: dialogs.c:555 +#, c-format +msgid "Only bughouse is not available in viewer mode." +msgstr "Seul le Blitz à quatre n'est pas disponible en mode spectateur." + +#: dialogs.c:556 +#, c-format +msgid "" +"All variants not supported by the first engine\n" +"(currently %s) are disabled." +msgstr "" +"Toutes les variantes non supportées par le premier moteur\n" +"(actuellement %s) sont désactivées." + +#: dialogs.c:573 +msgid "New Variant" +msgstr "Nouvelle variante" + +#: dialogs.c:605 +msgid "Maximum Number of CPUs per Engine:" +msgstr "Nombre maximum de CPUs par moteur :" + +#: dialogs.c:606 +msgid "Polygot Directory:" +msgstr "Répertoire multilingue : " + +#: dialogs.c:607 +msgid "Hash-Table Size (MB):" +msgstr "Taille du tableau de hashage (Mo) : " + +#: dialogs.c:608 +msgid "EGTB Path:" +msgstr "Chemin EGTB : " + +#: dialogs.c:609 +msgid "EGTB Cache Size (MB):" +msgstr "Taille du cache EGTB (Mo) :" + +#: dialogs.c:610 +msgid "Use GUI Book" +msgstr "Utiliser le livre graphique" + +#: dialogs.c:611 +msgid "Opening-Book Filename:" +msgstr "Nom de fichier de bibliothèque d'ouverture : " + +#: dialogs.c:612 +msgid "Book Depth (moves):" +msgstr "Profondeur de la bibliothèque (mouvements) :" + +#: dialogs.c:613 +msgid "Book Variety (0) vs. Strength (100):" +msgstr "Diversité de la bibliothèque (0) face à la force (100) :" + +#: dialogs.c:614 +msgid "Engine #1 Has Own Book" +msgstr "Le moteur #1 possède sa propre bibliothèque" + +#: dialogs.c:615 +msgid "Engine #2 Has Own Book " +msgstr "Le moteur #1 possède sa propre bibliothèque" + +#: dialogs.c:626 +msgid "Common Engine Settings" +msgstr "Paramètres communs aux moteurs" + +#: dialogs.c:632 +msgid "Detect all Mates" +msgstr "Détecter tous les partenaires" + +#: dialogs.c:633 +msgid "Verify Engine Result Claims" +msgstr "Vérifier les déclarations du résultat du moteur" + +#: dialogs.c:634 +msgid "Draw if Insufficient Mating Material" +msgstr "Faire match nul si les moyens de mat sont insuffisants" + +#: dialogs.c:635 +msgid "Adjudicate Trivial Draws (3-Move Delay)" +msgstr "Arbitrer les matchs nuls évidents (retard de 3 mouvements)" + +#: dialogs.c:636 +msgid "N-Move Rule:" +msgstr "Règle des N coups :" + +#: dialogs.c:637 +msgid "N-fold Repeats:" +msgstr "N répétitions de position :" + +#: dialogs.c:638 +msgid "Draw after N Moves Total:" +msgstr "Match nul après un total de N coups :" + +#: dialogs.c:639 +msgid "Win / Loss Threshold:" +msgstr "Seuil de victoire / défaite :" + +#: dialogs.c:640 +msgid "Negate Score of Engine #1" +msgstr "Annuler le score du moteur #1" + +#: dialogs.c:641 +msgid "Negate Score of Engine #2" +msgstr "Annuler le score du moteur #2" + +#: dialogs.c:648 +msgid "Adjudicate non-ICS Games" +msgstr "Arbitrer les jeux non-ICS" + +#: dialogs.c:661 +msgid "Auto-Kibitz" +msgstr "Kibitz automatique" + +#: dialogs.c:662 +msgid "Auto-Comment" +msgstr "Commentaire automatique" + +#: dialogs.c:663 +msgid "Auto-Observe" +msgstr "Observation automatique" + +#: dialogs.c:664 +msgid "Auto-Raise Board" +msgstr "Échiquier au premier plan automatique" + +#: dialogs.c:665 +msgid "Auto-Create Logon Script" +msgstr "Création automatique du script de connexion" + +#: dialogs.c:666 +msgid "Background Observe while Playing" +msgstr "Observation en second plan lors du jeu" + +#: dialogs.c:667 +msgid "Dual Board for Background-Observed Game" +msgstr "Échiquier parallèle pour les jeux observés en second plan" + +#: dialogs.c:668 +msgid "Get Move List" +msgstr "Obtenir la liste des coups" + +#: dialogs.c:669 +msgid "Quiet Play" +msgstr "Jeu tranquille" + +#: dialogs.c:670 +msgid "Seek Graph" +msgstr "Graphique de recherche" + +#: dialogs.c:671 +msgid "Auto-Refresh Seek Graph" +msgstr "Rafraîchissement automatique du graphique de recherche" + +#: dialogs.c:672 +msgid "Auto-InputBox PopUp" +msgstr "Pop-up de saisi automatique" + +#: dialogs.c:673 +msgid "Quit after game" +msgstr "Quitter à la fin du jeu" + +#: dialogs.c:674 +msgid "Premove" +msgstr "Pré-coup" + +#: dialogs.c:675 +msgid "Premove for White" +msgstr "Pré-coup pour les Blancs" + +#: dialogs.c:676 +msgid "First White Move:" +msgstr "Premier coup des Blancs :" + +#: dialogs.c:677 +msgid "Premove for Black" +msgstr "Pré-coup pour les Noirs" + +#: dialogs.c:678 +msgid "First Black Move:" +msgstr "Premier coup des Noirs :" + +#: dialogs.c:680 +msgid "Alarm" +msgstr "Alarme" + +#: dialogs.c:681 +msgid "Alarm Time (msec):" +msgstr "Temps de l'alarme (msec) :" + +#: dialogs.c:683 +msgid "Colorize Messages" +msgstr "Messages colorés" + +#: dialogs.c:684 +msgid "Shout Text Colors:" +msgstr "Couleurs du texte Crier:" + +#: dialogs.c:685 +msgid "S-Shout Text Colors:" +msgstr "Couleurs du texte S-Crier:" + +#: dialogs.c:686 +msgid "Channel #1 Text Colors:" +msgstr "Couleurs du texte du Canal #1 :" + +#: dialogs.c:687 +msgid "Other Channel Text Colors:" +msgstr "Couleurs du texte Autre Canal :" + +#: dialogs.c:688 +msgid "Kibitz Text Colors:" +msgstr "Couleurs du texte Kibitz :" + +#: dialogs.c:689 +msgid "Tell Text Colors:" +msgstr "Couleurs du texte Dire:" + +#: dialogs.c:690 +msgid "Challenge Text Colors:" +msgstr "Couleurs du texte Défi :" + +#: dialogs.c:691 +msgid "Request Text Colors:" +msgstr "Couleurs du texte Requête : " + +#: dialogs.c:692 +msgid "Seek Text Colors:" +msgstr "Couleurs du texte Recherche :" + +#: dialogs.c:693 +msgid "Other Text Colors:" +msgstr "Couleurs du texte Autre :" + +#: dialogs.c:700 +msgid "ICS Options" +msgstr "Options de l'ICS" + +#: dialogs.c:705 +msgid "Exact position match" +msgstr "Correspondance de la position exacte" + +#: dialogs.c:705 +msgid "Shown position is subset" +msgstr "La position montrée est un sous-ensemble" + +#: dialogs.c:705 +msgid "Same material with exactly same Pawn chain" +msgstr "Même matériel avec exactement la même structure de pions" + +#: dialogs.c:706 +msgid "Same material" +msgstr "Même matériel" + +#: dialogs.c:706 +msgid "Material range (top board half optional)" +msgstr "Rangée du matériel (moitié supérieure de l'échiquier optionnelle)" + +#: dialogs.c:706 +msgid "Material difference (optional stuff balanced)" +msgstr "Différence matérielle (équipement optionnel équilibré)" + +#: dialogs.c:721 +msgid "Auto-Display Tags" +msgstr "Affichage automatique des étiquettes" + +#: dialogs.c:722 +msgid "Auto-Display Comment" +msgstr "Affichage automatique des commentaires " + +#: dialogs.c:723 +msgid "" +"Auto-Play speed of loaded games\n" +"(0 = instant, -1 = off):" +msgstr "" +"Vitesse de jeu automatique des jeux chargés\n" +"(0 = instantané, -1 = désactivé) :" + +#: dialogs.c:724 +msgid "Seconds per Move:" +msgstr "Secondes par coup :" + +#: dialogs.c:725 +msgid "" +"\n" +"options to use in game-viewer mode:" +msgstr "" +"\n" +"Options à utiliser en mode spectateur de jeu: " + +#: dialogs.c:727 +msgid "" +"\n" +"Thresholds for position filtering in game list:" +msgstr "" +"\n" +"Seuils pour le filtrage des positions dans la liste de jeux :" + +#: dialogs.c:728 +msgid "Elo of strongest player at least:" +msgstr "Elo du meilleur joueur en dernier :" + +#: dialogs.c:729 +msgid "Elo of weakest player at least:" +msgstr "Elo du joueur le plus faible en dernier :" + +#: dialogs.c:730 +msgid "No games before year:" +msgstr "Aucun jeu précédant l'année : " + +#: dialogs.c:731 +msgid "Minimum nr consecutive positions:" +msgstr "Nombre minimum de positions consécutives :" + +#: dialogs.c:733 +msgid "Search mode:" +msgstr "Mode de recherche :" + +#: dialogs.c:734 +msgid "Also match reversed colors" +msgstr "Associer aussi les couleurs inversées" + +#: dialogs.c:735 +msgid "Also match left-right flipped position" +msgstr "Associer aussi la position inversée verticalement" + +#: dialogs.c:744 +msgid "Load Game Options" +msgstr "Charger les options de jeu" + +#: dialogs.c:756 +msgid "Auto-Save Games" +msgstr "Sauvegarder automatiquement les parties " + +#: dialogs.c:757 +msgid "Own Games Only" +msgstr "Uniquement mes parties " + +#: dialogs.c:758 +msgid "Save Games on File:" +msgstr "Sauvegarder les parties dans le fichier :" + +#: dialogs.c:759 +msgid "Save Final Positions on File:" +msgstr "Sauvegarder les positions finales dans le fichier :" + +#: dialogs.c:760 +msgid "PGN Event Header:" +msgstr "En-têtes des résultats PGN :" + +#: dialogs.c:761 +msgid "Old Save Style (as opposed to PGN)" +msgstr "Ancien type de sauvegarde (contrairement au PGN)" + +#: dialogs.c:762 +msgid "Include Number Tag in tourney PGN" +msgstr "Inclure l'identifiant numérique dans le tournoi PGN" + +#: dialogs.c:763 +msgid "Save Score/Depth Info in PGN" +msgstr "Sauvegarder la donnée Score / Profondeur dans le PGN" + +#: dialogs.c:764 +msgid "Save Out-of-Book Info in PGN " +msgstr "Sauvegarder la donnée Sortie de la Bibliothèque dans le PGN" + +#: dialogs.c:771 +msgid "Save Game Options" +msgstr "Sauvegarder les options de jeu" + +#: dialogs.c:780 +msgid "No Sound" +msgstr "Muet" + +#: dialogs.c:781 +msgid "Default Beep" +msgstr "Bip par défaut" + +#: dialogs.c:782 +msgid "Above WAV File" +msgstr "Fichier WAV ci-dessus" + +#: dialogs.c:783 +msgid "Car Horn" +msgstr "Klaxon de voiture" + +#: dialogs.c:784 +msgid "Cymbal" +msgstr "Cymbale" + +#: dialogs.c:785 +msgid "Ding" +msgstr "Ding" + +#: dialogs.c:786 +msgid "Gong" +msgstr "Gong" + +#: dialogs.c:787 +msgid "Laser" +msgstr "Laser" + +#: dialogs.c:788 +msgid "Penalty" +msgstr "Penalty" + +#: dialogs.c:789 +msgid "Phone" +msgstr "Téléphone" + +#: dialogs.c:790 +msgid "Pop" +msgstr "Pop" + +#: dialogs.c:791 +msgid "Roar" +msgstr "Rugissement" + +#: dialogs.c:792 +msgid "Slap" +msgstr "Claquement " + +#: dialogs.c:793 +msgid "Wood Thunk" +msgstr "Wood Thunk" + +#: dialogs.c:795 +msgid "User File" +msgstr "Fichier utilisateur" + +#: dialogs.c:818 +msgid "User WAV File:" +msgstr "Fichier WAV de l'utilisateur :" + +#: dialogs.c:819 +msgid "Sound Program:" +msgstr "Lecteur de son :" + +#: dialogs.c:820 +msgid "Try-Out Sound:" +msgstr "Son d'essai : " + +#: dialogs.c:821 +msgid "Play" +msgstr "Jouer " + +#: dialogs.c:822 +msgid "Move:" +msgstr "Coup :" + +#: dialogs.c:823 +msgid "Win:" +msgstr "Gagner :" + +#: dialogs.c:824 +msgid "Lose:" +msgstr "Perdre :" + +#: dialogs.c:825 +msgid "Draw:" +msgstr "Match nul :" + +#: dialogs.c:826 +msgid "Unfinished:" +msgstr "Non terminé :" + +#: dialogs.c:827 +msgid "Alarm:" +msgstr "Alarme :" + +#: dialogs.c:828 +msgid "Challenge:" +msgstr "Défi :" + +#: dialogs.c:830 +msgid "Sounds Directory:" +msgstr "Répertoire de sons :" + +#: dialogs.c:831 +msgid "Shout:" +msgstr "Cri :" + +#: dialogs.c:832 +msgid "S-Shout:" +msgstr "S-Cri : " + +#: dialogs.c:833 +msgid "Channel:" +msgstr "Canal :" + +#: dialogs.c:834 +msgid "Channel 1:" +msgstr "Canal 1 :" + +#: dialogs.c:835 +msgid "Tell:" +msgstr "Dire :" + +#: dialogs.c:836 +msgid "Kibitz:" +msgstr "Kibitz :" + +#: dialogs.c:837 +msgid "Request:" +msgstr "Requêtes :" + +#: dialogs.c:838 +msgid "Lion roar:" +msgstr "Rugissement de lion :" + +#: dialogs.c:839 +msgid "Seek:" +msgstr "Recherche :" + +#: dialogs.c:855 +msgid "Sound Options" +msgstr "Options sonores" + +#: dialogs.c:871 +msgid "Selectable themes:" +msgstr "Thèmes sélectionnables :" + +#: dialogs.c:873 +msgid "New name for current theme:" +msgstr "Nouveau nom pour le thème courant :" + +#: dialogs.c:876 +msgid "White Piece Color:" +msgstr "Couleur du pion blanc :" + +#. TRANSLATORS: R = single letter for the color red +#: dialogs.c:879 dialogs.c:888 dialogs.c:894 dialogs.c:900 dialogs.c:906 +#: dialogs.c:912 +msgid "R" +msgstr "R" + +#. TRANSLATORS: G = single letter for the color green +#: dialogs.c:881 dialogs.c:889 dialogs.c:895 dialogs.c:901 dialogs.c:907 +#: dialogs.c:913 +msgid "G" +msgstr "G" + +#. TRANSLATORS: B = single letter for the color blue +#: dialogs.c:883 dialogs.c:890 dialogs.c:896 dialogs.c:902 dialogs.c:908 +#: dialogs.c:914 +msgid "B" +msgstr "B" + +#. TRANSLATORS: D = single letter to make a color darker +#: dialogs.c:885 dialogs.c:891 dialogs.c:897 dialogs.c:903 dialogs.c:909 +#: dialogs.c:915 +msgid "D" +msgstr "D" + +#: dialogs.c:886 +msgid "Black Piece Color:" +msgstr "Couleur du pion noir : " + +#: dialogs.c:892 +msgid "Light Square Color:" +msgstr "Couleur de la case claire :" + +#: dialogs.c:898 +msgid "Dark Square Color:" +msgstr "Couleur de la case foncée :" + +#: dialogs.c:904 +msgid "Highlight Color:" +msgstr "Couleur de surbrillance :" + +#: dialogs.c:910 +msgid "Premove Highlight Color:" +msgstr "Couleur de surbrillance de pré-coup :" + +#: dialogs.c:916 +msgid "Flip Pieces Shogi Style (Colored buttons restore default)" +msgstr "Retourner les pièces style Shogi (Les boutons colorés restaurent la valeur par défaut)" + +#: dialogs.c:918 +msgid "Mono Mode" +msgstr "Mode solo" + +#: dialogs.c:919 +msgid "Logo Size (0=off, requires restart):" +msgstr "Taille du logo (0 = pas de logo, redémarrage requis) :" + +#: dialogs.c:920 +msgid "Line Gap (-1 = default for board size):" +msgstr "Ligne d'ouverture (-1 = taille de plateau par défaut) :" + +#: dialogs.c:921 +msgid "Use Board Textures" +msgstr "Utiliser les textures de l'échiquier" + +#: dialogs.c:922 +msgid "Light-Squares Texture File:" +msgstr "Fichier de texture des cases blanches :" + +#: dialogs.c:923 +msgid "Dark-Squares Texture File:" +msgstr "Fichier de texture des cases noires :" + +#: dialogs.c:924 +msgid "Use external piece bitmaps with their own colors" +msgstr "Utiliser des bitmaps de pièce externes avec leurs propres couleurs" + +#: dialogs.c:925 +msgid "Directory with Pieces Images:" +msgstr "Répertoire contenant les images des pièces :" + +#: dialogs.c:996 +msgid "# no themes are defined" +msgstr "# Aucun thème n'est défini" + +#: dialogs.c:1008 +msgid "Board Options" +msgstr "Options de l'échiquier" + +#: dialogs.c:1079 menus.c:654 +msgid "ICS text menu" +msgstr "Menu texte de l'ICS" + +#: dialogs.c:1108 +msgid "clear" +msgstr "Nettoyer" + +#: dialogs.c:1109 dialogs.c:1208 +msgid "save changes" +msgstr "Sauvegarder les changements" + +#: dialogs.c:1207 +msgid "add next move" +msgstr "Ajouter le prochain mouvement" + +#: dialogs.c:1231 +msgid "Edit book" +msgstr "Éditer la bibliothèque" + +#: dialogs.c:1231 menus.c:656 +msgid "Tags" +msgstr "Étiquettes" + +#: dialogs.c:1369 +msgid "ICS input box" +msgstr "Boîte de saisie ICS" + +#: dialogs.c:1401 +msgid "Type a move" +msgstr "Entrez un mouvement " + +#: dialogs.c:1427 +msgid "Engine has no options" +msgstr "Le moteur n'a aucune option" + +#: dialogs.c:1429 +msgid "Engine Settings" +msgstr "Réglages du moteur" + +#: dialogs.c:1454 +msgid "Select engine from list:" +msgstr "Sélectionnez un moteur dans la liste :" + +#: dialogs.c:1457 +msgid "or specify one below:" +msgstr "ou indiquez en un ci-dessous :" + +#: dialogs.c:1458 +msgid "Nickname (optional):" +msgstr "Pseudonyme (optionnel) :" + +#: dialogs.c:1459 +msgid "Use nickname in PGN player tags of engine-engine games" +msgstr "Utiliser le pseudonyme dans les étiquettes du joueur en PGN des jeux moteur-moteur" + +#: dialogs.c:1460 +msgid "Engine Directory:" +msgstr "Répertoire du moteur :" + +#: dialogs.c:1461 +msgid "Engine Command:" +msgstr "Commande du moteur : " + +#: dialogs.c:1462 +msgid "(Directory will be derived from engine path when empty)" +msgstr "(Le répertoire sera dérivé du chemin du moteur s'il est vide)" + +#: dialogs.c:1463 +msgid "UCI" +msgstr "UCI" + +#: dialogs.c:1464 +msgid "WB protocol v1 (do not wait for engine features)" +msgstr "Protocole WB v1 (ne vous attendez pas à des fonctionnalités du moteur)" + +#: dialogs.c:1465 +msgid "Must not use GUI book" +msgstr "Vous ne devez pas utiliser la bibliothèque graphique" + +#: dialogs.c:1466 +msgid "Add this engine to the list" +msgstr "Ajouter ce moteur à la liste " + +#: dialogs.c:1467 +msgid "Force current variant with this engine" +msgstr "Forcer la variante courante avec ce moteur" + +#: dialogs.c:1517 +msgid "Load first engine" +msgstr "Charger le premier moteur" + +#: dialogs.c:1523 +msgid "Load second engine" +msgstr "Charger le second moteur" + +#: dialogs.c:1546 +msgid "shuffle" +msgstr "Brassage" + +#: dialogs.c:1547 +msgid "Fischer castling" +msgstr "Roque de Fischer" + +#: dialogs.c:1548 +msgid "Start-position number:" +msgstr "Numéro de la position de départ : " + +#: dialogs.c:1549 +msgid "randomize" +msgstr "Randomiser" + +#: dialogs.c:1550 +msgid "pick fixed" +msgstr "Choix truqué" + +#: dialogs.c:1567 +msgid "New Shuffle Game" +msgstr "Nouveau Jeu Aléatoire" + +#: dialogs.c:1586 +msgid "classical" +msgstr "Classique" + +#: dialogs.c:1587 +msgid "incremental" +msgstr "Incrémental" + +#: dialogs.c:1588 +msgid "fixed max" +msgstr "Maximum fixé" + +#: dialogs.c:1589 +msgid "Moves per session:" +msgstr "Mouvements par session :" + +#: dialogs.c:1590 +msgid "Initial time (min):" +msgstr "Temps initial (min) :" + +#: dialogs.c:1591 +msgid "Increment or max (sec/move):" +msgstr "Incrémentation ou maximum (sec/mouvement) :" + +#: dialogs.c:1592 +msgid "Time-Odds factors:" +msgstr "Facteurs temps d'handicap : " + +#: dialogs.c:1593 +msgid "Engine #1" +msgstr "Moteur #1" + +#: dialogs.c:1594 +msgid "Engine #2 / Human" +msgstr "Moteur #2 / Humain" + +#: dialogs.c:1634 dialogs.c:1637 dialogs.c:1642 dialogs.c:1643 +#: gtk/xoptions.c:184 +msgid "Unused" +msgstr "Non utilisé" + +#: dialogs.c:1684 +msgid "Error writing to chess program" +msgstr "Erreur lors de l'écriture dans le programme d'échecs" + +#: dialogs.c:1752 xaw/xoptions.c:1318 +msgid "Cancel" +msgstr "Annuler" + +#: dialogs.c:1757 dialogs.c:2354 dialogs.c:2358 +msgid "King" +msgstr "Roi " + +#: dialogs.c:1760 +msgid "Captain" +msgstr "Capitaine " + +#: dialogs.c:1761 +msgid "Lieutenant" +msgstr "Lieutenant" + +#: dialogs.c:1762 +msgid "General" +msgstr "Général" + +#: dialogs.c:1763 +msgid "Warlord" +msgstr "Seigneur de guerre" + +#: dialogs.c:1765 dialogs.c:2353 dialogs.c:2357 dialogs.c:2376 +msgid "Knight" +msgstr "Cavalier" + +#: dialogs.c:1766 dialogs.c:2353 dialogs.c:2357 dialogs.c:2376 +msgid "Bishop" +msgstr "Fou" + +#: dialogs.c:1767 dialogs.c:2353 dialogs.c:2357 dialogs.c:2376 +msgid "Rook" +msgstr "Tour" + +#: dialogs.c:1771 dialogs.c:2355 dialogs.c:2359 +msgid "Archbishop" +msgstr "Archevêque " + +#: dialogs.c:1772 dialogs.c:2355 dialogs.c:2359 +msgid "Chancellor" +msgstr "Chancelier " + +#: dialogs.c:1774 dialogs.c:2354 dialogs.c:2358 dialogs.c:2376 +msgid "Queen" +msgstr "Reine" + +#: dialogs.c:1776 +msgid "Lion" +msgstr "Lion" + +#: dialogs.c:1780 +msgid "Defer" +msgstr "Ajourner" + +#: dialogs.c:1781 dialogs.c:2355 dialogs.c:2359 +msgid "Promote" +msgstr "Promouvoir " + +#: dialogs.c:1838 +msgid "Chats:" +msgstr "Tchats : " + +#: dialogs.c:1839 dialogs.c:1840 dialogs.c:1841 dialogs.c:1842 dialogs.c:1843 +#: dialogs.c:1941 dialogs.c:2001 dialogs.c:2033 +msgid "New Chat" +msgstr "Nouveau tchat" + +#: dialogs.c:1846 +msgid "Chat partner:" +msgstr "Partenaire de tchat :" + +#: dialogs.c:1847 +msgid "End Chat" +msgstr "Terminer le tchat" + +#: dialogs.c:1848 +msgid "Hide" +msgstr "Cacher" + +#: dialogs.c:2058 +msgid "ICS Interaction" +msgstr "Interaction ICS" + +#: dialogs.c:2125 +msgid "factory" +msgstr "Fabrique" + +#: dialogs.c:2126 +msgid "up" +msgstr "Haut" + +#: dialogs.c:2127 +msgid "down" +msgstr "Bas" + +#: dialogs.c:2145 +msgid "No tag selected" +msgstr "Aucune étiquette n'est sélectionnée" + +#: dialogs.c:2176 +msgid "Game-list options" +msgstr "Options de la liste de jeu" + +#: dialogs.c:2252 dialogs.c:2266 +msgid "Error" +msgstr "Erreur" + +#: dialogs.c:2289 +msgid "Fatal Error" +msgstr "Erreur fatale" + +#: dialogs.c:2289 +msgid "Exiting" +msgstr "En cours de fermeture" + +#: dialogs.c:2300 +msgid "Information" +msgstr "Information" + +#: dialogs.c:2307 +msgid "Note" +msgstr "Note" + +#: dialogs.c:2353 dialogs.c:2637 dialogs.c:2640 +msgid "White" +msgstr "Blancs" + +#: dialogs.c:2353 dialogs.c:2357 dialogs.c:2376 +msgid "Pawn" +msgstr "Pion" + +#: dialogs.c:2354 dialogs.c:2358 +msgid "Elephant" +msgstr "Éléphant" + +#: dialogs.c:2354 dialogs.c:2358 +msgid "Cannon" +msgstr "Canon " + +#: dialogs.c:2355 dialogs.c:2359 +msgid "Demote" +msgstr "Rétrograder" + +#: dialogs.c:2356 dialogs.c:2360 +msgid "Empty square" +msgstr "Case vide" + +#: dialogs.c:2356 dialogs.c:2360 +msgid "Clear board" +msgstr "Vider l'échiquier" + +#: dialogs.c:2357 dialogs.c:2649 dialogs.c:2652 +msgid "Black" +msgstr "Noirs" + +#: dialogs.c:2456 menus.c:809 +msgid "File" +msgstr "Fichier" + +#: dialogs.c:2457 menus.c:810 +msgid "Edit" +msgstr "Éditer" + +#: dialogs.c:2458 menus.c:811 +msgid "View" +msgstr "Vue" + +#: dialogs.c:2459 menus.c:812 +msgid "Mode" +msgstr "Mode" + +#: dialogs.c:2460 menus.c:813 +msgid "Action" +msgstr "Action " + +#: dialogs.c:2461 menus.c:814 +msgid "Engine" +msgstr "Moteur" + +#: dialogs.c:2462 menus.c:815 +msgid "Options" +msgstr "Options " + +#: dialogs.c:2463 menus.c:816 +msgid "Help" +msgstr "Aide" + +#: dialogs.c:2473 +msgid "<<" +msgstr "<<" + +#: dialogs.c:2474 +msgid "<" +msgstr "<" + +#: dialogs.c:2476 +msgid ">" +msgstr ">" + +#: dialogs.c:2477 +msgid ">>" +msgstr ">>" + +#: dialogs.c:2755 +msgid "Directories:" +msgstr "Répertoires : " + +#: dialogs.c:2756 +msgid "Files:" +msgstr "Fichiers :" + +#: dialogs.c:2757 +msgid "by name" +msgstr "Par nom" + +#: dialogs.c:2758 +msgid "by type" +msgstr "Par type" + +#: dialogs.c:2761 +msgid "Filename:" +msgstr "Nom du fichier : " + +#: dialogs.c:2762 +msgid "New directory" +msgstr "Nouveau répertoire" + +#: dialogs.c:2763 +msgid "File type:" +msgstr "Type du fichier : " + +#: dialogs.c:2838 +msgid "Contents of" +msgstr "Sommaire de " + +#: dialogs.c:2864 +msgid " next page" +msgstr "Page suivante" + +#: dialogs.c:2881 +msgid "FIRST TYPE DIRECTORY NAME HERE" +msgstr "TOUT D'ABORD ENTREZ LE NOM DE REPERTOIRE ICI " + +#: dialogs.c:2882 +msgid "TRY ANOTHER NAME" +msgstr "ESSAYEZ UN AUTRE NOM" + +#: draw.c:354 +msgid "" +"No default pieces installed!\n" +"Select your own using '-pieceImageDirectory'." +msgstr "" +"Aucune pièce par défaut n'est installée !\n" +"Sélectionnez la vôtre en utilisant '-pieceImageDirectory'." + +#: engineoutput.c:111 menus.c:650 +#, c-format +msgid "Engine Output" +msgstr "Sortie du moteur " + +#: engineoutput.c:121 +#, c-format +msgid "%s (%d reversible ply)" +msgid_plural "%s (%d reversible plies)" +msgstr[0] "%s (%d tour réversible)" +msgstr[1] "%s (%d tours réversibles)" + +#: engineoutput.c:552 engineoutput.c:555 nengineoutput.c:82 nengineoutput.c:90 +msgid "NPS" +msgstr "NPS" + +#: gamelist.c:375 +#, c-format +msgid "Reading game file (%d)" +msgstr "Lecture du fichier de jeu (%d)" + +#: gtk/xboard.c:959 xaw/xboard.c:1071 +#, c-format +msgid "%s: can't cd to CHESSDIR: " +msgstr "%s : impossible d'accéder au dossier CHESSDIR :" + +#: gtk/xboard.c:968 xaw/xboard.c:1080 +#, c-format +msgid "Failed to open file '%s'\n" +msgstr "Échec dans l'ouverture du fichier '%s'\n" + +#: gtk/xboard.c:983 xaw/xboard.c:1089 +msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" +msgstr "Recompilez avec BOARD_RANKS ou BOARD_FILES plus grand pour supporter cette taille" + +#: gtk/xboard.c:1002 xaw/xboard.c:1121 +#, c-format +msgid "%s: bad boardSize syntax %s\n" +msgstr "%s : Mauvaise syntaxe %s pour boardSize\n" + +#: gtk/xboard.c:1045 xaw/xboard.c:1160 +#, c-format +msgid "%s: unrecognized boardSize name %s\n" +msgstr "%s : Nom %s de la boardSize non reconnu\n" + +#: gtk/xboard.c:1084 xaw/xboard.c:1197 +#, c-format +msgid "%s: too few colors available; trying monochrome mode\n" +msgstr "%s: Trop peu de couleurs sont disponibles; tentative du mode monochrome\n" + +#: gtk/xboard.c:1395 xaw/xboard.c:1487 +#, c-format +msgid "Unable to create font set for %s.\n" +msgstr "Incapable de créer l'ensemble des polices pour %s.\n" + +#: gtk/xboard.c:1420 xaw/xboard.c:1510 +#, c-format +msgid "%s: no fonts match pattern %s\n" +msgstr "%s : aucune police ne correspond au motif %s\n" + +#: gtk/xboard.c:1872 xaw/xboard.c:2000 +msgid "Can't open temp file" +msgstr "Impossible d'ouvrir le fichier temporaire" + +#: gtk/xboard.c:2346 +msgid "Failed to open file" +msgstr "Échec lors de l'ouverture du fichier" + +#: menus.c:134 +msgid "Load game file name?" +msgstr "Charger le nom du fichier de jeu ?" + +#: menus.c:179 +msgid "Load position file name?" +msgstr "Charger la position du fichier de jeu ?" + +#: menus.c:185 menus.c:590 +msgid "Save game file name?" +msgstr "Sauvegarder le nom du fichier de jeu ?" + +#: menus.c:194 +msgid "Save position file name?" +msgstr "Sauvegarder la position du fichier de jeu ?" + +#: menus.c:362 +msgid " (with Zippy code)" +msgstr "(avec le code)" + +#: menus.c:367 +#, c-format +msgid "" +"%s%s\n" +"\n" +"Copyright 1991 Digital Equipment Corporation\n" +"Enhancements Copyright 1992-2014 Free Software Foundation\n" +"Enhancements Copyright 2005 Alessandro Scotti\n" +"\n" +"%s is free software and carries NO WARRANTY;see the file COPYING for more information.\n" +"The GTK build of this version is experimental and unstable\n" +"\n" +"Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" +"Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html\n" +"\n" +"Report bugs via email at: \n" +"\n" +msgstr "" +"%s%s\n" +"\n" +"Copyright 1991 Digital Equipment Corporation\n" +"Copyright d'améliorations 1992-2014 Free Software Foundation\n" +"Copyright d'améliorations 2005 Alessandro Scotti\n" +"\n" +"%s est un logiciel gratuit et ne transporte AUCUNE GARANTIE; veuillez vous référer au fichier COPYING pour plus d'informations.\n" +"La version GTK de cette version est expérimentale et instable\n" +"\n" +"Visitez XBoard à l'adresse : http://www.gnu.org/software/xboard/\n" +"Regardez les dernières fonctionnalités à l'adresse : http://www.gnu.org/software/xboard/whats_new.html\n" +"\n" +"Reportez les bogues par mail à l'adresse : \n" +"\n" + +#: menus.c:379 menus.c:772 +msgid "About XBoard" +msgstr "À propos de XBoard" + +#: menus.c:601 +msgid "New Game" +msgstr "Nouveau jeu" + +#: menus.c:602 +msgid "New Shuffle Game..." +msgstr "Nouveau jeu aléatoire..." + +#: menus.c:603 +msgid "New Variant..." +msgstr "Nouvelle variante..." + +#: menus.c:605 +msgid "Load Game" +msgstr "Charger une partie" + +#: menus.c:606 +msgid "Load Position" +msgstr "Charger une position" + +#: menus.c:607 +msgid "Next Position" +msgstr "Position suivante" + +#: menus.c:608 +msgid "Prev Position" +msgstr "Position précédente" + +#: menus.c:610 +msgid "Save Game" +msgstr "Sauvegarder la partie" + +#: menus.c:611 +msgid "Save Position" +msgstr "Sauvegarder la position" + +#: menus.c:612 +msgid "Save Selected Games" +msgstr "Sauvegarder les parties sélectionnées" + +#: menus.c:613 +msgid "Save Games as Book" +msgstr "Sauvegarder les parties comme bibliothèques" + +#: menus.c:615 +msgid "Mail Move" +msgstr "Envoyer par mail le mouvement" + +#: menus.c:616 +msgid "Reload CMail Message" +msgstr "Recharger le message CMail" + +#: menus.c:618 +msgid "Quit " +msgstr "Quitter" + +#: menus.c:623 +msgid "Copy Game" +msgstr "Copier la partie" + +#: menus.c:624 +msgid "Copy Position" +msgstr "Copier la position" + +#: menus.c:625 +msgid "Copy Game List" +msgstr "Copier la liste des parties" + +#: menus.c:627 +msgid "Paste Game" +msgstr "Coller le jeu" + +#: menus.c:628 +msgid "Paste Position" +msgstr "Coller la position" + +#: menus.c:630 menus.c:672 +msgid "Edit Game" +msgstr "Éditer la partie" + +#: menus.c:631 menus.c:673 +msgid "Edit Position" +msgstr "Éditer la position " + +#: menus.c:632 +msgid "Edit Tags" +msgstr "Éditer les étiquettes" + +#: menus.c:633 +msgid "Edit Comment" +msgstr "Éditer le commentaire" + +#: menus.c:634 +msgid "Edit Book" +msgstr "Éditer la bibliothèque" + +#: menus.c:636 +msgid "Revert" +msgstr "Revenir" + +#: menus.c:637 +msgid "Annotate" +msgstr "Annoter" + +#: menus.c:638 +msgid "Truncate Game" +msgstr "Tronquer le jeu" + +#: menus.c:640 +msgid "Backward" +msgstr "En arrière" + +#: menus.c:641 +msgid "Forward" +msgstr "En avant" + +#: menus.c:642 +msgid "Back to Start" +msgstr "Retour au début" + +#: menus.c:643 +msgid "Forward to End" +msgstr "Avancer vers la fin" + +#: menus.c:648 +msgid "Flip View" +msgstr "Renverser la vue" + +#: menus.c:651 +msgid "Move History" +msgstr "Historique des mouvements " + +#: menus.c:652 +msgid "Evaluation Graph" +msgstr "Graphique des évaluations" + +#: menus.c:653 +msgid "Game List" +msgstr "Liste des parties" + +#: menus.c:657 +msgid "Comments" +msgstr "Commentaires" + +#: menus.c:658 +msgid "ICS Input Box" +msgstr "Boe de dialogue ICS" + +#: menus.c:659 +msgid "ICS/Chat Console" +msgstr "ICS / Console de tchat" + +#: menus.c:661 +msgid "Board..." +msgstr "Échiquier..." + +#: menus.c:662 +msgid "Game List Tags..." +msgstr "Étiquettes de la liste des parties..." + +#: menus.c:667 +msgid "Machine White" +msgstr "Blancs Machine" + +#: menus.c:668 +msgid "Machine Black" +msgstr "Noirs Machine" + +#: menus.c:669 +msgid "Two Machines" +msgstr "Deux machines" + +#: menus.c:670 +msgid "Analysis Mode" +msgstr "Mode d'analyse" + +#: menus.c:671 +msgid "Analyze Game" +msgstr "Analyser le jeu" + +#: menus.c:674 +msgid "Training" +msgstr "Entraînement" + +#: menus.c:675 +msgid "ICS Client" +msgstr "Client ICS" + +#: menus.c:677 +msgid "Machine Match" +msgstr "Match de machines" + +#: menus.c:678 +msgid "Pause" +msgstr "Pause" + +#: menus.c:683 +msgid "Accept" +msgstr "Accepter" + +#: menus.c:684 +msgid "Decline" +msgstr "Décliner" + +#: menus.c:685 +msgid "Rematch" +msgstr "Nouvelle partie" + +#: menus.c:687 +msgid "Call Flag" +msgstr "Demander un drapeau" + +#: menus.c:688 +msgid "Draw" +msgstr "Match nul" + +#: menus.c:689 +msgid "Adjourn" +msgstr "Ajourner" + +#: menus.c:690 +msgid "Abort" +msgstr "Annuler" + +#: menus.c:691 +msgid "Resign" +msgstr "Abandonner" + +#: menus.c:693 +msgid "Stop Observing" +msgstr "Arrêter d'observer" + +#: menus.c:694 +msgid "Stop Examining" +msgstr "Arrêter d'examiner" + +#: menus.c:695 +msgid "Upload to Examine" +msgstr "Télécharger pour examiner" + +#: menus.c:697 +msgid "Adjudicate to White" +msgstr "Arbitrer pour les Blancs" + +#: menus.c:698 +msgid "Adjudicate to Black" +msgstr "Arbitrer pour les Noirs" + +#: menus.c:699 +msgid "Adjudicate Draw" +msgstr "Arbitrer match nul" + +#: menus.c:704 +msgid "Edit Engine List..." +msgstr "Éditer la liste des moteurs..." + +#: menus.c:706 +msgid "Load New 1st Engine..." +msgstr "Charger un nouveau premier moteur... " + +#: menus.c:707 +msgid "Load New 2nd Engine..." +msgstr "Charger un nouveau second moteur..." + +#: menus.c:709 +msgid "Engine #1 Settings..." +msgstr "Réglages du moteur # 1..." + +#: menus.c:710 +msgid "Engine #2 Settings..." +msgstr "Réglages du moteur # 2..." + +#: menus.c:712 +msgid "Hint" +msgstr "Indice" + +#: menus.c:713 +msgid "Book" +msgstr "Bibliothèque" + +#: menus.c:715 +msgid "Move Now" +msgstr "Bouger maintenant" + +#: menus.c:716 +msgid "Retract Move" +msgstr "Rétracter le mouvement " + +#: menus.c:722 +msgid "General..." +msgstr "Général..." + +#: menus.c:724 +msgid "Time Control..." +msgstr "Contrôle du temps" + +#: menus.c:725 +msgid "Common Engine..." +msgstr "Moteur commun..." + +#: menus.c:726 +msgid "Adjudications..." +msgstr "Décisions..." + +#: menus.c:727 +msgid "ICS..." +msgstr "ICS..." + +#: menus.c:728 +msgid "Tournament..." +msgstr "Tournoi..." + +#: menus.c:729 +msgid "Load Game..." +msgstr "Charger le jeu..." + +#: menus.c:730 +msgid "Save Game..." +msgstr "Sauvegarder le jeu..." + +#: menus.c:731 +msgid "Game List..." +msgstr "Liste des jeux..." + +#: menus.c:732 +msgid "Sounds..." +msgstr "Sons..." + +#: menus.c:735 +msgid "Always Queen" +msgstr "Toujours Reine" + +#: menus.c:741 +msgid "Flash Moves" +msgstr "Mouvements rapides" + +#: menus.c:743 +msgid "Highlight Dragging" +msgstr "Surligner la traînée" + +#: menus.c:746 +msgid "Highlight With Arrow" +msgstr "Surligner avec une flèche" + +#: menus.c:747 +msgid "Move Sound" +msgstr "Son du mouvement " + +#: menus.c:749 +msgid "Periodic Updates" +msgstr "Mises à jour périodiques" + +#: menus.c:751 +msgid "Popup Exit Message" +msgstr "Afficher un message de sortie" + +#: menus.c:753 +msgid "Show Coords" +msgstr "Montrer les coordonnées" + +#: menus.c:754 +msgid "Hide Thinking" +msgstr "Cacher l'opinion" + +#: menus.c:758 +msgid "Save Settings Now" +msgstr "Sauvegarder les réglages maintenant" + +#: menus.c:759 +msgid "Save Settings on Exit" +msgstr "Sauvegarder les réglages à la sortie" + +#: menus.c:764 +msgid "Info XBoard" +msgstr "Informations XBoard" + +#: menus.c:765 +msgid "Man XBoard" +msgstr "Manuel XBoard" + +#: menus.c:767 +msgid "XBoard Home Page" +msgstr "Page d'Accueil XBoard" + +#: menus.c:768 +msgid "On-line User Guide" +msgstr "Guide Utilisateur en ligne" + +#: menus.c:769 +msgid "Development News" +msgstr "Nouvelles de développement " + +#: menus.c:770 +msgid "e-Mail Bug Report" +msgstr "Reporter un bogue par mail " + +#: nengineoutput.c:78 nengineoutput.c:86 +msgid "engine name" +msgstr "Nom du moteur" + +#. TRANSLATORS: noun, as in "the move Nf3" +#: nengineoutput.c:81 nengineoutput.c:89 +msgid "move" +msgstr "Mouvement " + +#: nengineoutput.c:155 +msgid "Engine output" +msgstr "Sortie du moteur" + +#: nengineoutput.c:159 +msgid "" +"Mismatch of STRIDE in nengineoutput.c\n" +"Change and recompile!" +msgstr "" +"Mauvaise association de STRIDE dans nengineoutput.c\n" +"Modifiez et recompilez !" + +#: nevalgraph.c:68 +msgid "Evaluation graph" +msgstr "Graphique des évaluations" + +#: nevalgraph.c:68 +msgid "Blunder graph" +msgstr "Graphique des gaffes" + +#: nevalgraph.c:106 +msgid "Blunder" +msgstr "Gaffe" + +#: nevalgraph.c:106 +msgid "Eval" +msgstr "Évaluer" + +#: ngamelist.c:87 +msgid "find position" +msgstr "Trouver la position" + +#: ngamelist.c:88 +msgid "narrow" +msgstr "Restreindre" + +#: ngamelist.c:89 +msgid "thresholds" +msgstr "Seuils" + +#: ngamelist.c:90 +msgid "tags" +msgstr "Étiquettes" + +#: ngamelist.c:91 +msgid "next" +msgstr "Suivant" + +#: ngamelist.c:92 +msgid "close" +msgstr "Fermer" + +#: ngamelist.c:116 +msgid "No game selected" +msgstr "Aucun jeu n'est sélectionné" + +#: ngamelist.c:122 +msgid "Can't go forward any further" +msgstr "Ne peut pas avancer plus loin " + +#: ngamelist.c:192 +#, c-format +msgid "Scanning through games (%d)" +msgstr "Balayage parmi les parties (%d)" + +#: ngamelist.c:211 +msgid "previous page" +msgstr "Page précédente" + +#: ngamelist.c:214 +msgid "next page" +msgstr "Page suivante" + +#: ngamelist.c:217 +msgid "no games matched your request" +msgstr "Aucun jeu n'a correspondu à votre requête" + +#: ngamelist.c:219 +#, c-format +msgid "%s - %d/%d games (%d-%d-%d)" +msgstr "jeux %s - %d/%d (%d-%d-%d)" + +#: ngamelist.c:276 +msgid "There is no game list" +msgstr "Il n'y a aucun jeu dans la liste" + +#: nhistory.c:109 +msgid "Move list" +msgstr "Liste des mouvements" + +#: usystem.c:222 +#, c-format +msgid "%s: unrecognized color %s\n" +msgstr "%s : couleur %s non reconnue\n" + +#: usystem.c:230 +#, c-format +msgid "%s: can't parse foreground color in '%s'\n" +msgstr "%s : impossible d'analyser la couleur de premier plan dans '%s'\n" + +#: usystem.c:259 +#, c-format +msgid "%s: can't parse color names; disabling colorization\n" +msgstr "%s : impossible d'analyser les noms de couleurs; désactivation de la colorisation\n" + +#: usystem.c:377 +#, c-format +msgid "ERROR: Unknown user %s (in path %s)\n" +msgstr "ERREUR : Utilisateur %s inconnu (dans le chemin %s)\n" + +#: usystem.c:560 +msgid "Socket support is not configured in" +msgstr "Le support socket n'est pas configuré" + +#: usystem.c:649 +msgid "internal rcmd not implemented for Unix" +msgstr "rcmd interne non implémenté pour Unix" + +#: xaw/xboard.c:1203 +#, c-format +msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" +msgstr "Pixel blanc = 0x%lx, pixel noir = 0x%lx\n" + +#: xaw/xoptions.c:362 xaw/xoptions.c:1066 +msgid "browse" +msgstr "Naviguer" + +#: xaw/xoptions.c:428 xaw/xoptions.c:429 +msgid "Ctrl" +msgstr "Ctrl" + +#: xaw/xoptions.c:434 xaw/xoptions.c:435 +msgid "Alt" +msgstr "Alt" + +#: xaw/xoptions.c:440 xaw/xoptions.c:441 +msgid "Shift" +msgstr "Shift" + +#: xaw/xoptions.c:1314 +msgid "OK" +msgstr "OK" diff --git a/po/it.po b/po/it.po index 75b8a7b..c27b5cc 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: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2169,7 +2169,7 @@ msgstr "Informazione" msgid "Note" msgstr "Nota" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Bianco" @@ -2197,7 +2197,7 @@ msgstr "Casa vuota" msgid "Clear board" msgstr "Svuota scacchiera" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Nero" @@ -2249,51 +2249,51 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "File" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "Filtro" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "Filtro" -#: dialogs.c:2856 +#: dialogs.c:2857 #, fuzzy msgid "Contents of" msgstr "Commenti" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr "" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2324,50 +2324,50 @@ msgstr "" msgid "Reading game file (%d)" msgstr "File partita non riconosciuto" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 #, fuzzy msgid "Failed to open file" msgstr "Impossibile aprire l'applicazione cmail" diff --git a/po/nl.po b/po/nl.po index 9ba581e..c69a7af 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,16 +1,16 @@ # Dutch translations for GNU XBoard. -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the xboard package. # # "She makes her living brewing coffee for strangers..." # -# Benno Schulenberg , 2013, 2014. +# Benno Schulenberg , 2013, 2014, 2015. msgid "" msgstr "" -"Project-Id-Version: GNU xboard 4.8.0-pre1\n" +"Project-Id-Version: GNU xboard 4.8.0\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2014-10-17 21:25-0700\n" -"PO-Revision-Date: 2014-10-02 10:54+0200\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" +"PO-Revision-Date: 2015-04-27 20:38+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -20,37 +20,37 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.0\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "%s in instellingenbestand\n" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "Ongeldig geheel getal: %s" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "Niet-herkend argument: %s" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "Geen waarde gegeven voor argument %s" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Onvolledige \\-stuurcode in waarde voor %s" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "Kan indirectiebestand %s niet openen" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Niet-herkende booleaanse waarde: %s" @@ -1010,7 +1010,7 @@ msgstr "Variatiebomen inschakelen" #: dialogs.c:412 msgid "Headers in Engine Output Window" -msgstr "" +msgstr "Kopregels in uitvoervenster van automaat" #: dialogs.c:413 msgid "Hide Thinking from Human" @@ -1034,7 +1034,7 @@ msgstr "Periodieke updates (in analysemodus)" #: dialogs.c:419 msgid "Play Move(s) of Clicked PV (Analysis)" -msgstr "" +msgstr "Zet(ten) spelen van aangeklikte PV (Analyse)" #: dialogs.c:420 dialogs.c:620 menus.c:750 msgid "Ponder Next Move" @@ -1062,7 +1062,7 @@ msgstr "Doelvelden tonen" #: dialogs.c:426 msgid "Sticky Windows" -msgstr "" +msgstr "Kleverige vensters" #: dialogs.c:427 menus.c:755 msgid "Test Legality" @@ -1171,7 +1171,7 @@ msgstr "" #: dialogs.c:473 msgid "ASEAN" -msgstr "" +msgstr "ASEAN" #: dialogs.c:474 msgid "Great Shatranj (10x8)" @@ -1227,7 +1227,7 @@ msgstr "Grand (10x10)" #: dialogs.c:487 msgid "losers" -msgstr "verliezers" +msgstr "Losers" #: dialogs.c:488 msgid "shogi (9x9)" @@ -1422,7 +1422,7 @@ msgstr "Zoekgrafiek vanzelf verversen" #: dialogs.c:688 msgid "Auto-InputBox PopUp" -msgstr "" +msgstr "Invoervak vanzelf tonen" #: dialogs.c:689 msgid "Quit after game" @@ -1450,11 +1450,11 @@ msgstr "Eerste zet van zwart:" #: dialogs.c:696 msgid "Alarm" -msgstr "" +msgstr "Wekker" #: dialogs.c:697 msgid "Alarm Time (msec):" -msgstr "" +msgstr "Wektijd (msec):" #: dialogs.c:699 msgid "Colorize Messages" @@ -1474,7 +1474,7 @@ msgstr "Kanaal-1-tekstkleuren:" #: dialogs.c:703 msgid "Other Channel Text Colors:" -msgstr "Anderekanaal-tekstkleuren:" +msgstr "Anderekanalen-tekstkleuren:" #: dialogs.c:704 msgid "Kibitz Text Colors:" @@ -1482,11 +1482,11 @@ msgstr "Kibitz-tekstkleuren:" #: dialogs.c:705 msgid "Tell Text Colors:" -msgstr "" +msgstr "Tell-tekstkleuren:" #: dialogs.c:706 msgid "Challenge Text Colors:" -msgstr "" +msgstr "Uitdagings-tekstkleuren:" #: dialogs.c:707 msgid "Request Text Colors:" @@ -1497,9 +1497,8 @@ msgid "Seek Text Colors:" msgstr "Tekstkleuren voor zoeken:" #: dialogs.c:709 -#, fuzzy msgid "Other Text Colors:" -msgstr "Anderekanaal-tekstkleuren:" +msgstr "Kleuren voor andere tekst:" #: dialogs.c:716 msgid "ICS Options" @@ -1554,12 +1553,16 @@ msgid "" "\n" "options to use in game-viewer mode:" msgstr "" +"\n" +"Te gebruiken opties in viewer-modus:" #: dialogs.c:743 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" +"\n" +"Drempelwaarden voor positiefiltering in partijenlijst:" #: dialogs.c:744 msgid "Elo of strongest player at least:" @@ -1611,11 +1614,11 @@ msgstr "Eindposities opslaan in:" #: dialogs.c:776 msgid "PGN Event Header:" -msgstr "" +msgstr "PGN-gebeurtenis-kopregel:" #: dialogs.c:777 msgid "Old Save Style (as opposed to PGN)" -msgstr "" +msgstr "Oude opslagstijl (in plaats van PGN)" #: dialogs.c:778 msgid "Include Number Tag in tourney PGN" @@ -1623,11 +1626,11 @@ msgstr "Nummerlabel in toernooi-PGN opnemen" #: dialogs.c:779 msgid "Save Score/Depth Info in PGN" -msgstr "" +msgstr "Score-/diepte-informatie opslaan in PGN" #: dialogs.c:780 msgid "Save Out-of-Book Info in PGN " -msgstr "" +msgstr "Uit-het-boek-informatie opslaan in PGN " #: dialogs.c:787 msgid "Save Game Options" @@ -1731,11 +1734,11 @@ msgstr "Onafgemaakt:" #: dialogs.c:843 msgid "Alarm:" -msgstr "" +msgstr "Wekker:" #: dialogs.c:844 msgid "Challenge:" -msgstr "" +msgstr "Uitdaging:" #: dialogs.c:846 msgid "Sounds Directory:" @@ -1743,11 +1746,11 @@ msgstr "Geluidenmap:" #: dialogs.c:847 msgid "Shout:" -msgstr "" +msgstr "Shout:" #: dialogs.c:848 msgid "S-Shout:" -msgstr "" +msgstr "S-Shout:" #: dialogs.c:849 msgid "Channel:" @@ -1759,7 +1762,7 @@ msgstr "Kanaal 1:" #: dialogs.c:851 msgid "Tell:" -msgstr "Mededeling" +msgstr "Tell:" #: dialogs.c:852 msgid "Kibitz:" @@ -1787,7 +1790,7 @@ msgstr "Selecteerbare thema's:" #: dialogs.c:889 msgid "New name for current theme:" -msgstr "Nieuwe naam voor huidige thema:" +msgstr "Nieuwe naam voor huidig thema:" #: dialogs.c:892 msgid "White Piece Color:" @@ -1835,23 +1838,23 @@ msgstr "Markeringskleur:" #: dialogs.c:926 msgid "Premove Highlight Color:" -msgstr "" +msgstr "Voorzet-markeringskleur:" #: dialogs.c:932 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" -msgstr "" +msgstr "Stukken op Shogi-manier omdraaien (gekleurde knoppen herstellen standaard)" #: dialogs.c:934 msgid "Mono Mode" -msgstr "" +msgstr "Mono-modus" #: dialogs.c:935 msgid "Logo Size (0=off, requires restart):" -msgstr "" +msgstr "Logogrootte (0=uit, vereist een herstart):" #: dialogs.c:936 msgid "Line Gap (-1 = default for board size):" -msgstr "" +msgstr "Regeltussenruimte (-1 = standaard voor bordgrootte):" #: dialogs.c:937 msgid "Use Board Textures" @@ -1867,7 +1870,7 @@ msgstr "Textuurbestand voor donkere velden:" #: dialogs.c:940 msgid "Use external piece bitmaps with their own colors" -msgstr "" +msgstr "Externe bitmaps met eigen kleuren voor stukken gebruiken" #: dialogs.c:941 msgid "Directory with Pieces Images:" @@ -1935,7 +1938,7 @@ msgstr "Bijnaam (optioneel):" #: dialogs.c:1475 msgid "Use nickname in PGN player tags of engine-engine games" -msgstr "" +msgstr "Bijnaam gebruiken in PGN-spelerlabels van automaat-automaat-partijen" #: dialogs.c:1476 msgid "Engine Directory:" @@ -1955,11 +1958,11 @@ msgstr "UCI" #: dialogs.c:1480 msgid "WB protocol v1 (do not wait for engine features)" -msgstr "" +msgstr "WB-protocol v1 (niet op automaateigenschappen wachten)" #: dialogs.c:1481 msgid "Must not use GUI book" -msgstr "" +msgstr "Hoort geen GUI-boek te gebruiken" #: dialogs.c:1482 msgid "Add this engine to the list" @@ -2173,7 +2176,7 @@ msgstr "Informatie" msgid "Note" msgstr "Notitie" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Wit" @@ -2201,7 +2204,7 @@ msgstr "Leeg veld" msgid "Clear board" msgstr "Bord leegmaken" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Zwart" @@ -2254,47 +2257,47 @@ msgstr ">" msgid ">>" msgstr ">>" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "Mappen:" -#: dialogs.c:2774 +#: dialogs.c:2775 msgid "Files:" msgstr "Bestanden:" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "op naam" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "op type" -#: dialogs.c:2779 +#: dialogs.c:2780 msgid "Filename:" msgstr "Bestandsnaam:" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "Nieuwe map" -#: dialogs.c:2781 +#: dialogs.c:2782 msgid "File type:" msgstr "Bestandstype:" -#: dialogs.c:2856 +#: dialogs.c:2857 msgid "Contents of" msgstr "Inhoud van" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr " volgende pagina" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "Typ hier eerst een mapnaam" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "Kies een andere naam" @@ -2327,50 +2330,50 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "Lezen van partijbestand (%d)" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: Kan huidige map niet wijzigen naar CHESSDIR: " -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "Kan bestand '%s' niet openen\n" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" -msgstr "" +msgstr "*** Hercompileer met grotere BOARD_RANKS of BOARD_FILES om deze grootte te ondersteunen" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: onjuiste syntax %s voor 'boardSize'\n" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: onbekende naam %s voor 'boardSize'\n" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: te weinig kleuren beschikbaar; monochroommodus wordt geprobeerd\n" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Kan geen lettertypenset aanmaken voor %s.\n" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, 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:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "Kan tijdelijk bestand niet openen" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "Kan bestand niet openen" @@ -2403,13 +2406,11 @@ msgid "" "Enhancements Copyright 1992-2014 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" -"%s is free software and carries NO WARRANTY;see the file COPYING for more " -"information.\n" +"%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" @@ -2586,7 +2587,7 @@ msgstr "ICS-invoervak" #: menus.c:659 msgid "ICS/Chat Console" -msgstr "" +msgstr "ICS/chat-console" #: menus.c:661 msgid "Board..." @@ -2642,7 +2643,7 @@ msgstr "Weigeren" #: menus.c:685 msgid "Rematch" -msgstr "" +msgstr "Revanche" #: menus.c:687 msgid "Call Flag" @@ -2733,9 +2734,8 @@ msgid "Time Control..." msgstr "Tijdsbeperking..." #: menus.c:725 -#, fuzzy msgid "Common Engine..." -msgstr "Automaten..." +msgstr "Gemeenschappelijke automaat..." #: menus.c:726 msgid "Adjudications..." @@ -2868,7 +2868,7 @@ msgstr "Blunder" #: nevalgraph.c:106 msgid "Eval" -msgstr "" +msgstr "Eval" #: ngamelist.c:87 msgid "find position" diff --git a/po/pl.po b/po/pl.po index 6dc1ebf..6920b92 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.7.2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: 2014-03-03 14:20+0100\n" "Last-Translator: Paweł Å»ołnowski \n" "Language-Team: Polish \n" @@ -19,37 +19,37 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "%s w pliku konfiguracyjnym\n" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "Błędna wartość całkowita %s" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "Nieznany parametr %s" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "Brak wartości parametru %s" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Niepełna sekwencja specjalna \\ w wartości dla %s" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "Nie udało się otworzyć pliku pośredniego %s" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Nieznana wartość parametru logicznego %s" @@ -2200,7 +2200,7 @@ msgstr "Informacje" msgid "Note" msgstr "Uwaga" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Białe" @@ -2228,7 +2228,7 @@ msgstr "Puste pole" msgid "Clear board" msgstr "Wyczyść szachownicę" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Czarne" @@ -2280,47 +2280,47 @@ msgstr ">" msgid ">>" msgstr ">>" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "Katalogi:" -#: dialogs.c:2774 +#: dialogs.c:2775 msgid "Files:" msgstr "Pliki:" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "wg nazwy" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "wg typu" -#: dialogs.c:2779 +#: dialogs.c:2780 msgid "Filename:" msgstr "Nazwa pliku:" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "Nowy katalog" -#: dialogs.c:2781 +#: dialogs.c:2782 msgid "File type:" msgstr "Typ pliku:" -#: dialogs.c:2856 +#: dialogs.c:2857 msgid "Contents of" msgstr "Zawartość" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr " następna strona" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "NAJPIERW NALEÅ»Y TU WPISAĆ NAZWĘ KATALOGU" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "PROSZĘ SPRÓBOWAĆ INNĄ NAZWĘ" @@ -2355,53 +2355,53 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "Czytanie pliku gry (%d)" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: nie można wejść do CHESSDIR: " -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "Nie udało się otworzyć pliku \"%s\"\n" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Należy skompilować ponownie z większą wartością dla BOARD_RANKS lub " "BOARD_FILES, aby obsługiwać ten rozmiar" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: błędna składnia boardSize %s\n" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: nieznana nazwa boardSize %s\n" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" "%s: za mało dostępnych kolorów; próba użycia trybu monochromatycznego\n" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Nie można utworzyć zestawu czcionek dla %s.\n" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: żadna czcionka nie pasuje do wzoru %s\n" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "Nie można otworzyć pliku temp" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "Nie udało się otworzyć pliku" diff --git a/po/ru.po b/po/ru.po index 5a6191a..8926e24 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: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2155,7 +2155,7 @@ msgstr "Информация" msgid "Note" msgstr "Примечание" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Белые" @@ -2183,7 +2183,7 @@ msgstr "Пустое поле" msgid "Clear board" msgstr "Очистить доску" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Черные" @@ -2235,51 +2235,51 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "Файл" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "Фильтр" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "Фильтр" -#: dialogs.c:2856 +#: dialogs.c:2857 #, fuzzy msgid "Contents of" msgstr "Комментарии" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr "" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2310,50 +2310,50 @@ msgstr "NPS (Узл./сек.)" msgid "Reading game file (%d)" msgstr "Неправильный формат файла" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 #, fuzzy msgid "Failed to open file" msgstr "Ошибка запуска cmail" diff --git a/po/tr.po b/po/tr.po index 2106403..8b2635f 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: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: 2003-12-26 16:38+0200\n" "Last-Translator: A. Alper Atýcý \n" "Language-Team: Turkish \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, fuzzy, c-format msgid "Failed to open indirection file %s" msgstr "Dosya açýlamadý" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2159,7 +2159,7 @@ msgstr "Bilgi" msgid "Note" msgstr "Not" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Beyaz" @@ -2187,7 +2187,7 @@ msgstr "Kareyi Bo msgid "Clear board" msgstr "Tahtayý Temizle" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Siyah" @@ -2240,51 +2240,51 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "Dosya" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "Dosya adý giriþi" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "Analiz edilecek dosya" -#: dialogs.c:2856 +#: dialogs.c:2857 msgid "Contents of" msgstr "" -#: dialogs.c:2882 +#: dialogs.c:2883 #, fuzzy msgid " next page" msgstr "sonraki" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2314,50 +2314,50 @@ msgstr "" msgid "Reading game file (%d)" msgstr "" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, fuzzy, c-format msgid "Failed to open file '%s'\n" msgstr "Dosya açýlamadý" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "Dosya açýlamadý" diff --git a/po/uk.po b/po/uk.po index 4844459..8a9d43a 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard-4.8.0-pre1\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: 2014-09-30 22:13+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -19,37 +19,37 @@ msgstr "" "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:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "%s у файлі параметрів\n" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "Помилкове ціле значення %s" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "Невідомий аргумент %s" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "Не вказано значення для аргументу %s" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Неповне екранування \\ у значенні для %s" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "Не вдалося відкрити файл переспрямування %s" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Невідоме значення булевого аргументу %s" @@ -2173,7 +2173,7 @@ msgstr "Інформація" msgid "Note" msgstr "Нотатка" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Білі" @@ -2201,7 +2201,7 @@ msgstr "Порожня клітинка" msgid "Clear board" msgstr "Спорожнити дошку" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Чорні" @@ -2253,47 +2253,47 @@ msgstr ">" msgid ">>" msgstr ">>" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "Каталоги:" -#: dialogs.c:2774 +#: dialogs.c:2775 msgid "Files:" msgstr "Файли:" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "за назвою" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "за типом" -#: dialogs.c:2779 +#: dialogs.c:2780 msgid "Filename:" msgstr "Назва файла:" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "Новий каталог" -#: dialogs.c:2781 +#: dialogs.c:2782 msgid "File type:" msgstr "Тип файлів:" -#: dialogs.c:2856 +#: dialogs.c:2857 msgid "Contents of" msgstr "Вміст" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr " наступна сторінка" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "СПОЧАТКУ ВКАЖІТЬ ТУТ НАЗВУ КАТАЛОГУ" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "СПРОБУЙТЕ ІНШУ НАЗВУ" @@ -2328,52 +2328,52 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "Читання файла гри (%d)" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: не вдалося перейти до каталогу CHESSDIR: " -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "Не вдалося відкрити файл «%s»\n" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з " "більшими значеннями BOARD_RANKS або BOARD_FILES" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: помилковий синтаксис boardSize %s\n" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: невідома назва boardSize %s\n" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: занадто мало кольорів; спробуємо монохромний режим\n" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Не вдалося створити набір шрифтів для %s.\n" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: взірцеві %s не відповідає жоден шрифт\n" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "Не вдалося відкрити тимчасовий файл даних" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "Не вдалося відкрити файл" diff --git a/po/vi.po b/po/vi.po index 602da81..dbac5fb 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: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2134,7 +2134,7 @@ msgstr "" msgid "Note" msgstr "" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "Trắng" @@ -2162,7 +2162,7 @@ msgstr "Ô Trống" msgid "Clear board" msgstr "Xóa Bàn Cờ" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "Đen" @@ -2214,51 +2214,51 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "Lọc" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "Lọc" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "Lọc" -#: dialogs.c:2856 +#: dialogs.c:2857 #, fuzzy msgid "Contents of" msgstr "Bình Chú" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr "" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2289,50 +2289,50 @@ msgstr "" msgid "Reading game file (%d)" msgstr "" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "" diff --git a/po/xboard.pot b/po/xboard.pot index 12be8b8..d97ab3f 100644 --- a/po/xboard.pot +++ b/po/xboard.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.8.0\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" -"POT-Creation-Date: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2124,7 +2124,7 @@ msgstr "" msgid "Note" msgstr "" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "" @@ -2152,7 +2152,7 @@ msgstr "" msgid "Clear board" msgstr "" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "" @@ -2204,47 +2204,47 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 msgid "Files:" msgstr "" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 msgid "Filename:" msgstr "" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 msgid "File type:" msgstr "" -#: dialogs.c:2856 +#: dialogs.c:2857 msgid "Contents of" msgstr "" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr "" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2275,50 +2275,50 @@ msgstr "" msgid "Reading game file (%d)" msgstr "" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 msgid "Failed to open file" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index d07de6c..da80db7 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: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2149,7 +2149,7 @@ msgstr "" msgid "Note" msgstr "注释" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "白方" @@ -2177,7 +2177,7 @@ msgstr "清空格子" msgid "Clear board" msgstr "清空棋盘" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "黑方" @@ -2229,51 +2229,51 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "文件(F)" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "过滤器" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "过滤器" -#: dialogs.c:2856 +#: dialogs.c:2857 #, fuzzy msgid "Contents of" msgstr "编辑注释(C) *.*" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr "" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2304,50 +2304,50 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "棋局文件错误" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 #, fuzzy msgid "Failed to open file" msgstr "Failed to invoke cmail" diff --git a/po/zh_HK.po b/po/zh_HK.po index 8012622..8c8d4d7 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: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2155,7 +2155,7 @@ msgstr "資訊" msgid "Note" msgstr "註解" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "紅方" @@ -2183,7 +2183,7 @@ msgstr "清空格子" msgid "Clear board" msgstr "清空棋盤" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "黑方" @@ -2235,51 +2235,51 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "檔案(F)" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "過濾器" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "過濾器" -#: dialogs.c:2856 +#: dialogs.c:2857 #, fuzzy msgid "Contents of" msgstr "編輯註解(C) *.*" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr "" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2310,50 +2310,50 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "棋局檔案錯誤" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 #, fuzzy msgid "Failed to open file" msgstr "呼叫cmail失敗" diff --git a/po/zh_TW.po b/po/zh_TW.po index c237ea3..33fba3d 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: 2014-10-17 21:25-0700\n" +"POT-Creation-Date: 2014-10-24 08:20-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,37 +18,37 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: args.h:839 +#: args.h:840 #, c-format msgid "%s in settings file\n" msgstr "" -#: args.h:873 +#: args.h:874 #, c-format msgid "Bad integer value %s" msgstr "" -#: args.h:979 args.h:1240 +#: args.h:980 args.h:1241 #, c-format msgid "Unrecognized argument %s" msgstr "" -#: args.h:1010 +#: args.h:1011 #, c-format msgid "No value provided for argument %s" msgstr "" -#: args.h:1070 +#: args.h:1071 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" -#: args.h:1181 +#: args.h:1182 #, c-format msgid "Failed to open indirection file %s" msgstr "" -#: args.h:1198 +#: args.h:1199 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" @@ -2147,7 +2147,7 @@ msgstr "資訊" msgid "Note" msgstr "註解" -#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658 +#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659 msgid "White" msgstr "紅方" @@ -2175,7 +2175,7 @@ msgstr "清空格子" msgid "Clear board" msgstr "清空棋盤" -#: dialogs.c:2374 dialogs.c:2667 dialogs.c:2670 +#: dialogs.c:2374 dialogs.c:2668 dialogs.c:2671 msgid "Black" msgstr "黑方" @@ -2227,51 +2227,51 @@ msgstr "" msgid ">>" msgstr "" -#: dialogs.c:2773 +#: dialogs.c:2774 msgid "Directories:" msgstr "" -#: dialogs.c:2774 +#: dialogs.c:2775 #, fuzzy msgid "Files:" msgstr "檔案(F)" -#: dialogs.c:2775 +#: dialogs.c:2776 msgid "by name" msgstr "" -#: dialogs.c:2776 +#: dialogs.c:2777 msgid "by type" msgstr "" -#: dialogs.c:2779 +#: dialogs.c:2780 #, fuzzy msgid "Filename:" msgstr "過濾器" -#: dialogs.c:2780 +#: dialogs.c:2781 msgid "New directory" msgstr "" -#: dialogs.c:2781 +#: dialogs.c:2782 #, fuzzy msgid "File type:" msgstr "過濾器" -#: dialogs.c:2856 +#: dialogs.c:2857 #, fuzzy msgid "Contents of" msgstr "編輯註解(C) *.*" -#: dialogs.c:2882 +#: dialogs.c:2883 msgid " next page" msgstr "" -#: dialogs.c:2899 +#: dialogs.c:2900 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" -#: dialogs.c:2900 +#: dialogs.c:2901 msgid "TRY ANOTHER NAME" msgstr "" @@ -2302,50 +2302,50 @@ msgstr "NPS" msgid "Reading game file (%d)" msgstr "棋局檔案錯誤" -#: gtk/xboard.c:972 xaw/xboard.c:1072 +#: gtk/xboard.c:975 xaw/xboard.c:1072 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" -#: gtk/xboard.c:981 xaw/xboard.c:1081 +#: gtk/xboard.c:984 xaw/xboard.c:1081 #, c-format msgid "Failed to open file '%s'\n" msgstr "" -#: gtk/xboard.c:996 xaw/xboard.c:1090 +#: gtk/xboard.c:999 xaw/xboard.c:1090 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" -#: gtk/xboard.c:1015 xaw/xboard.c:1122 +#: gtk/xboard.c:1018 xaw/xboard.c:1122 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" -#: gtk/xboard.c:1058 xaw/xboard.c:1161 +#: gtk/xboard.c:1061 xaw/xboard.c:1161 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" -#: gtk/xboard.c:1097 xaw/xboard.c:1198 +#: gtk/xboard.c:1100 xaw/xboard.c:1198 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" -#: gtk/xboard.c:1411 xaw/xboard.c:1490 +#: gtk/xboard.c:1414 xaw/xboard.c:1490 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" -#: gtk/xboard.c:1436 xaw/xboard.c:1513 +#: gtk/xboard.c:1439 xaw/xboard.c:1513 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" -#: gtk/xboard.c:1888 xaw/xboard.c:2003 +#: gtk/xboard.c:1900 xaw/xboard.c:2003 msgid "Can't open temp file" msgstr "" -#: gtk/xboard.c:2371 +#: gtk/xboard.c:2383 #, fuzzy msgid "Failed to open file" msgstr "呼叫cmail失敗"