### 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
{ "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) "" },
{ "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 },
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
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
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);
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
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;
*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;
}
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<NrPieces/2-1; i++ ) {
- table[i] = map[i];
- table[i + (int)BlackPawn - (int) WhitePawn] = map[i+NrPieces/2];
+ char *p;
+ if(map[j] == ':' && *escapes) i = CHUPROMOTED WhitePawn, j++;
+ table[i] = map[j++];
+ if(p = strchr(escapes, map[j])) j++, table[i] += 64*(p - escapes + 1);
+ }
+ table[(int) WhiteKing] = map[j++];
+ for( i=0; i<NrPieces/2-1; i++ ) {
+ char *p;
+ if(map[j] == ':' && *escapes) i = CHUPROMOTED WhitePawn, j++;
+ table[WHITE_TO_BLACK i] = map[j++];
+ if(p = strchr(escapes, map[j])) j++, table[WHITE_TO_BLACK i] += 64*(p - escapes + 1);
}
- table[(int) WhiteKing] = map[NrPieces/2-1];
- table[(int) BlackKing] = map[NrPieces-1];
+ table[(int) BlackKing] = map[j++];
result = TRUE;
}
return result;
}
+int
+SetCharTable (unsigned char *table, const char * map)
+{
+ return SetCharTableEsc(table, map, "");
+}
+
void
Prelude (Board board)
{ // [HGM] superchess: random selection of exo-pieces
gameInfo.boardWidth = 12;
gameInfo.boardHeight = 12;
nrCastlingRights = 0;
- SetCharTable(pieceToChar, "P.BRQSEXOGCATHD.VMLIFN+.++.++++++++++.+++++K"
- "p.brqsexogcathd.vmlifn+.++.++++++++++.+++++k");
+ SetCharTableEsc(pieceToChar, "P.BRQSEXOGCATHD.VMLIFN:+.++.++++++++++.+++++K"
+ "p.brqsexogcathd.vmlifn:+.++.++++++++++.+++++k", SUFFIXES);
break;
case VariantCourier:
pieces = CourierArray;
/* User pieceToChar list overrules defaults */
if(appData.pieceToCharTable != NULL)
- SetCharTable(pieceToChar, appData.pieceToCharTable);
+ SetCharTableEsc(pieceToChar, appData.pieceToCharTable, SUFFIXES);
for( j=0; j<BOARD_WIDTH; j++ ) { ChessSquare s = EmptySquare;
int p = piece >= BlackPawn ? BLACK_TO_WHITE piece : piece;
promotionZoneSize = BOARD_HEIGHT/3;
highestPromotingPiece = (p >= WhiteLion || PieceToChar(piece + 22) == '.') ? WhitePawn : WhiteLion;
- } else if(gameInfo.variant == VariantShogi || gameInfo.variant == VariantChuChess) {
- promotionZoneSize = BOARD_HEIGHT/3;
+ } 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;
/* 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) {
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;
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
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)
{
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) {
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
return;
}
}
-
+printf("to click %d,%d\n",x,y);
/* fromX != -1 */
if (clickType == Press && gameMode != EditPosition) {
ChessSquare fromP;
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) &&
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)) {
// 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
/* 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);
}
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;
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) {
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);
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) {
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;
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);
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);
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;
}
}
}
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
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;
}
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;
// 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;
}
}
- 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;
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;
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 ||
} 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
&& (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
} 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) {
&& (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
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];
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);
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);
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--;
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;
}
piece = (ChessSquare)(CHUDEMOTED piece);
}
*p++ = (piece == DarkSquare ? '*' : PieceToChar(piece));
+ if(*p = PieceSuffix(piece)) p++;
if(p[-1] == '~') {
/* [HGM] flag promoted pieces as '<promoted>~' (Crazyhouse) */
p[-1] = PieceToChar((ChessSquare)(CHUDEMOTED piece));
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;
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 */
p++;
}
board[i][(j++)+gameInfo.holdingsWidth] = piece;
+ if(piece == WhiteKing) wKingRank = i;
+ if(piece == BlackKing) bKingRank = i;
} else {
return FALSE;
}
/* [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<nrCastlingRights; i++ ) {
&& board[castlingRank[5]][initialRights[5]] != BlackKing) board[CASTLING][5] = NoRights;
FENrulePlies = 0;
- while(*p==' ') p++;
if(nrCastlingRights) {
int fischer = 0;
if(gameInfo.variant == VariantSChess) for(i=0; i<BOARD_FILES; i++) virgin[i] = 0;
int c = *p++, whiteKingFile=NoRights, blackKingFile=NoRights;
for(i=BOARD_LEFT; i<BOARD_RGHT; i++) {
- if(board[BOARD_HEIGHT-1][i] == BlackKing) blackKingFile = i;
- if(board[0 ][i] == WhiteKing) whiteKingFile = i;
+ if(board[castlingRank[5]][i] == BlackKing) blackKingFile = i;
+ if(board[castlingRank[2]][i] == WhiteKing) whiteKingFile = i;
}
if(gameInfo.variant == VariantTwoKings || gameInfo.variant == VariantKnightmate)
whiteKingFile = blackKingFile = BOARD_WIDTH >> 1; // for these variant scanning fails
&& 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;
if(whiteKingFile != BOARD_WIDTH>>1|| i != BOARD_RGHT-1) fischer = 1;
break;
case'Q':
- for(i=BOARD_LEFT; i<BOARD_RGHT && board[0][i]!=WhiteRook && i<whiteKingFile; i++);
+ for(i=BOARD_LEFT; i<BOARD_RGHT && board[castlingRank[2]][i]!=WhiteRook && i<whiteKingFile; i++);
board[CASTLING][1] = i != whiteKingFile ? i : NoRights;
board[CASTLING][2] = whiteKingFile;
if(board[CASTLING][1] != NoRights) virgin[board[CASTLING][1]] |= VIRGIN_W;
if(whiteKingFile != BOARD_WIDTH>>1|| i != BOARD_LEFT) fischer = 1;
break;
case'k':
- for(i=BOARD_RGHT-1; board[BOARD_HEIGHT-1][i]!=BlackRook && i>blackKingFile; i--);
+ 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;
if(blackKingFile != BOARD_WIDTH>>1|| i != BOARD_RGHT-1) fischer = 1;
break;
case'q':
- for(i=BOARD_LEFT; i<BOARD_RGHT && board[BOARD_HEIGHT-1][i]!=BlackRook && i<blackKingFile; i++);
+ for(i=BOARD_LEFT; i<BOARD_RGHT && board[castlingRank[5]][i]!=BlackRook && i<blackKingFile; i++);
board[CASTLING][4] = i != blackKingFile ? i : NoRights;
board[CASTLING][5] = blackKingFile;
if(board[CASTLING][4] != NoRights) virgin[board[CASTLING][4]] |= VIRGIN_B;
ChessSquare p = boards[moveNr][r][f];
if(f == BOARD_LEFT-1 || f == BOARD_RGHT) continue; // between board and holdings
if(p != EmptySquare){
- int j = (int)p;
+ int j = (int)p, promoted = 0;
j -= (j >= (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);
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;
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
}
}
+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
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;
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.
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);
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<count; i++) totalWeight += entries[i].weight;
*p = 0;
for(i=0; i<count; i++) {
- char buf[MSG_SIZ];
+ char buf[MSG_SIZ], c1, c2, c3; int i1, i2, i3;
move_to_string(algMove, entries[i].move);
+ if(sscanf(algMove, "%c%d%*c%*d,%c%d%c%d", &c1, &i1, &c2, &i2, &c3, &i3) == 6)
+ snprintf(algMove, 12, "%c%dx%c%d-%c%d", c1, i1, c2, i2, c3, i3); // cast double-moves in format SAN parser will understand
buf[0] = NULLCHAR;
if(entries[i].learnCount || entries[i].learnPoints)
snprintf(buf, MSG_SIZ, " {%d/%d}", entries[i].learnPoints, entries[i].learnCount);
int from = fromX - BOARD_LEFT + fromY * width;
for(i=0; promote_pieces[i]; i++) if(promote_pieces[i] == promoChar) break;
if(!promote_pieces[i]) i = 0;
+ else if(i == 9 && gameInfo.variant == VariantChu) i = 1; // on 12x12 only 3 promotion codes available, so use 1 to indicate promotion
if(fromY == DROP_RANK) i = 9, from = ToUpper(PieceToChar(fromX)) - '@';
+ if(killX >= 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;
}
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
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++;
writepos += len2;
} while(len1);
}
+ dirty = 1;
fclose(f);
}
}
if(appData.debugMode) fprintf(debugFP, "add game to book (%d-%d)\n", backwardMostMove, forwardMostMove);
-
for(i=backwardMostMove; i<forwardMostMove && i < 2*appData.bookDepth; i++)
AddToBook(i, WhiteOnMove(i) ? result : 2-result); // flip result when black moves
}
#define EP_FILE CASTLING][(BOARD_FILES-3) /* [HGM] in upper rank */
#define EP_STATUS CASTLING][(BOARD_FILES-2) /* [HGM] in upper rank */
#define HOLDINGS_SET CASTLING][(BOARD_FILES-1) /* [HGM] in upper-right corner*/
-#define ONE ('1'-(BOARD_HEIGHT==10)) /* [HGM] foremost board rank */
+#define ONE ('1'-(BOARD_HEIGHT==10)-appData.rankOffset) /* [HGM] foremost board rank */
#define AAA ('a'-BOARD_LEFT) /* [HGM] leftmost board file */
#define VIRGIN_W 1 /* [HGM] flags in Board[VIRGIN][X] */
#define VIRGIN_B 2
WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan,
WhiteCannon, WhiteNightrider, WhiteCardinal, WhiteDragon, WhiteGrasshopper,
WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteLion,
- WhiteTokin, WhiteDagger, WhitePCardinal, WhitePDragon, WhiteCat,
+ WhiteTokin, WhiteClaw, WhitePCardinal, WhitePDragon, WhiteCat,
WhitePSword, WhiteMonarch, WhiteMother, WhiteNothing, WhitePRook, WhitePDagger,
WhiteDolphin, WhiteStag, WhiteHorned, WhiteEagle, WhiteSword,
WhiteCrown, WhiteHCrown, WhiteHorse, WhiteDrunk, WhitePBishop, WhiteKing,
BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan,
BlackCannon, BlackNightrider, BlackCardinal, BlackDragon, BlackGrasshopper,
BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackLion,
- BlackTokin, BlackDagger, BlackPCardinal, BlackPDragon, BlackCat,
+ BlackTokin, BlackClaw, BlackPCardinal, BlackPDragon, BlackCat,
BlackPSword, BlackMonarch, BlackMother, BlackNothing, BlackPRook, BlackPDagger,
BlackDolphin, BlackStag, BlackHorned, BlackEagle, BlackSword,
BlackCrown, BlackHCrown, BlackHorse, BlackDrunk, BlackPBishop, BlackKing,
/* [HGM] Board size */
int NrFiles;
int NrRanks;
+ int rankOffset;
int holdingsSize;
int matchPause;
char * pieceToCharTable;
Boolean autoCopyPV;
Boolean pieceMenu;
Boolean sweepSelect;
+ Boolean monoMouse;
Boolean whitePOV;
Boolean scoreWhite;
Boolean pvSAN[ENGINES];
;
; make the Lion roar on double captures
;
--roarSound roar.wav
+-soundRoar roar.wav
;
; redefine default engine
;
-trivialDraws false
-materialDraws false
;
+; direct Load Position to handicap positions
+;
+-positionDir ~~/positions/shogihandicaps
+;
; common non-compliant notations
;
-colorNickNames "sg"
FRONTEND_LIBS=""
AC_ARG_WITH([gtk],
- [AS_HELP_STRING([--with-gtk],[use GTK front-end])],
+ [AS_HELP_STRING([--with-gtk],[use GTK front-end (default)])],
[with_GTK=$withval],
- [with_GTK="no"])
+ [with_GTK="yes"])
AC_ARG_WITH([Xaw3d],
[AS_HELP_STRING([--with-Xaw3d],[use Xaw3d front-end (not fully supported anymore)])],
[with_Xaw3d="no"])
AC_ARG_WITH([Xaw],
- [AS_HELP_STRING([--with-Xaw],[use Xaw front-end (default)])],
+ [AS_HELP_STRING([--with-Xaw],[use Xaw front-end])],
[with_Xaw="$withval"],
- [with_Xaw="yes"])
+ [with_Xaw="no"])
AC_ARG_WITH([iconsdir],
[AS_HELP_STRING([--with-iconsdir=DIR],
datadir=$datadir; gamedatadir=$GAMEDATADIR; desktopdir=$DESKTOPDIR; \
mimedir=$MIMEDIR; iconsdir=$ICONSDIR; svgiconsdir=$SVGICONSDIR; infodir=$infodir; \
sysconfigdir=$sysconfigdir; update_mimedb=$enable_mimedb; NLS=$USE_NLS; \
-GKT=$with_GTK; Xaw3d=$with_Xaw3d; Xaw=$with_Xaw; \
+GTK=$with_GTK; Xaw3d=$with_Xaw3d; Xaw=$with_Xaw; \
ptys=$enable_ptys; zippy=$enable_zippy; sigint=$enable_sigint"
AC_SUBST(CONFIGURE_OPTIONS)
if(opt != &chatOptions[CHAT_IN] && !(opt == &chatOptions[CHAT_PARTNER] && n == 33)) return 0;
switch(n) {
+ case 5:
+ if(!hidden) ClearChat();
+ break;
+ case 8:
+ if(!hidden) PaneSwitch();
+ break;
case 33: // <Esc>
+ if(1) BoardToTop(); else
if(hidden) BoardToTop();
else PaneSwitch();
break;
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:
{ // can only be called through <Enter> 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!)
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
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
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
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;
}
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;
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,
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];
}
}
}
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)
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))) {
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);
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);
}
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);
}
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);
ASSIGN(*name, filename);
ScheduleDelayedEvent(DelayedLoad, 50);
}
+ StartDir(filter, filename);
g_free (filename);
- };
+ }
+ else StartDir(filter, "");
gtk_widget_destroy (dialog);
ModeHighlight();
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;
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)
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;
}
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:
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);
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)
#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
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;
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
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
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
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) ||
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;
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;
{
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 ||
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
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; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++)
/* [HGM] Shogi promotions. On input, '=' means defer, '+' promote. Afterwards, c is set to '+' for promotions, NULL other */
if(closure->rfIn != DROP_RANK && closure->kind == NormalMove) {
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) )
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;
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;
}
if(c=='+') *outp++ = c;
*outp++ = ToUpper(PieceToChar(piece));
+ if(*outp = PieceSuffix(piece)) outp++;
if (cl.file || (cl.either && !cl.rank)) {
*outp++ = ff + AAA;
*------------------------------------------------------------------------
** 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;
void
GameListUpdate ()
{
+ if(!DialogExists(GameListDlg)) return;
GameListPrepare(False, False);
GameListReplace(0);
}
+++ /dev/null
-
-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 "*<GtkToolbar>" style "toolbar"
-widget_class "*<GtkHandleBox>" style "toolbar"
-
-# Overlay scrollbar
-widget_class "*<OsScrollbar>" style "overlay_scrollbar"
-widget_class "*<OsThumb>" 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 "*<GtkButton>" style "button"
-widget_class "*<GtkNotebook>" style "notebook"
-
-widget_class "*<GtkSpinButton>.*.<GtkEntry>" style "entry"
-widget_class "*<GtkMenuBar>*" style "menubar"
-widget_class "*<GtkMenu>*" style "menu"
-widget_class "*<GtkMenuItem>*" style "menu_item_white"
-#widget_class "*<GtkMenuBar>.<GtkMenuItem>*" style "menu_item_white"
-#widget_class "*<GtkMenuBar>.<GtkMenuItem>*" style "menu_item_black"
-
-widget_class "*<GtkToolbar>.*.<GtkButton>*" style:highest "toolbar_button"
-
-
-widget_class "*.<GtkFrame>.<GtkLabel>" style "frame_title"
-widget_class "*.<GtkTreeView>*" style "treeview"
-
-class "*GtkExpander*" style "expander"
-
-widget_class "*<GtkProgress>" style "progressbar"
-
-# Treeview headers (and similar stock GTK+ widgets)
-widget_class "*.<GtkTreeView>.<GtkButton>" style "treeview_header"
-widget_class "*.<GtkCTree>.<GtkButton>" style "treeview_header"
-widget_class "*.<GtkList>.<GtkButton>" style "treeview_header"
-widget_class "*.<GtkCList>.<GtkButton>" style "treeview_header"
-
-# The window of the tooltip is called "gtk-tooltip"
-widget "gtk-tooltip*" style "tooltips"
-
-widget_class "*<GtkCheckButton>*" style "checkbutton"
-widget_class "*<GtkDialog>*<GtkCheckButton>*" style:highest "checkbutton"
-widget_class "*<GtkFrame>*<GtkCheckButton>*" style:highest "checkbutton"
-widget_class "*<GtkNotebook>*<GtkCheckButton>*" style:highest "checkbutton"
-widget_class "*<GtkCheckButton>*<GtkLabel>" style:highest "checkradio_label"
-
-widget_class "*<GtkRadioButton>*" style "checkradio"
-widget_class "*<GtkDialog>*<GtkRadioButton>*" style:highest "radiobutton"
-widget_class "*<GtkFrame>*<GtkRadioButton>*" style:highest "radiobutton"
-widget_class "*<GtkNotebook>*<GtkRadioButton>*" style:highest "radiobutton"
-widget_class "*<GtkRadioButton>*<GtkLabel>" 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 "*.<GtkComboBox>.<GtkCellView>" 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 "*<GtkListItem>*" style "fg_is_text_color_workaround"
-widget_class "*<GtkCList>" style "fg_is_text_color_workaround"
-widget_class "*<EelEditableLabel>" 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"
-
-
#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
}
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) {
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;
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
// ********* 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;
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
}
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) ||
*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;
{ // 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];
# 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
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 <byrial@vip.cybercity.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: args.h: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"
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"
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"
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 ""
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"
# Copyright (C) 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the XBoard package.
# Arun Persaud <arun@nubati.net>, 2009,2012,2013
+# Roland Illig <roland.illig@gmx.de>, 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 <arun@nubati.net>\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 <roland.illig@gmx.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\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
#: backend.c:1452
msgid "Starting chess program"
-msgstr "Starte Schachprogramm"
+msgstr "Schachprogramm wird gestartet"
#: backend.c:1475
msgid "Bad game file"
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
#: 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
#: 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"
#: 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
#: 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"
#: backend.c:7588
msgid "only marked squares are legal"
-msgstr ""
+msgstr "Nur markierte Felder sind erlaubt"
#: backend.c:7876
msgid "Swiss tourney finished"
#: 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"
#: 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
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
#: backend.c:10461
#, c-format
msgid ", but %s is"
-msgstr ""
+msgstr ", aber %s ist"
#: backend.c:10616
#, c-format
#: 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"
#: 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
#: backend.c:13707
msgid "Saving position"
-msgstr "Speichere Stellung "
+msgstr "Stellung wird gespeichert"
#: backend.c:13833
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"
#: 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"
#: 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"
#: 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"
#: 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"
#: 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"
#: 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"
#: 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: "
#: 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"
#: 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):"
#: 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):"
#: 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:"
#: 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"
#: 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"
#: 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"
#. 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"
#: 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"
#: 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"
#: 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"
#: dialogs.c:465
msgid "Spartan"
-msgstr ""
+msgstr "Sparta-Schach"
#: dialogs.c:466
msgid "Board size ( -1 = default for selected variant):"
#: 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
#: 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
"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"
#: dialogs.c:622
msgid "Polygot Directory:"
-msgstr "Polyglot-verzeichnis:"
+msgstr "Polyglotverzeichnis:"
#: dialogs.c:623
msgid "Hash-Table Size (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:"
#: 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:"
#: 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:"
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"
#: 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"
#: dialogs.c:685
msgid "Quiet Play"
-msgstr ""
+msgstr "Ruhiges Spiel"
#: dialogs.c:686
msgid "Seek Graph"
#: 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:"
#: dialogs.c:693
msgid "Premove for Black"
-msgstr ""
+msgstr "Vorzeitiges Ziehen für Schwarz"
#: dialogs.c:694
msgid "First Black Move:"
#: dialogs.c:699
msgid "Colorize Messages"
-msgstr "Nachrichten kolorieren"
+msgstr "Nachrichten einfärben"
#: dialogs.c:700
msgid "Shout Text Colors:"
#: 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"
#: 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"
#: 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:"
"\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:"
#: 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"
#: 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"
#: 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"
#: 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"
#: 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"
#: 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:"
#: dialogs.c:853
msgid "Request:"
-msgstr ""
+msgstr "Anfrage:"
#: dialogs.c:854
msgid "Lion roar:"
-msgstr ""
+msgstr "Löwenfauchen:"
#: dialogs.c:855
msgid "Seek:"
#: 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:"
#: 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"
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"
#: 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"
#: 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):"
#: 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:"
#: 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"
#: 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"
#: dialogs.c:1563
msgid "Fischer castling"
-msgstr ""
+msgstr "Fischer-Rochade"
#: dialogs.c:1564
msgid "Start-position number:"
#: dialogs.c:1566
msgid "pick fixed"
-msgstr ""
+msgstr "Feste Aufstellung auswählen"
#: dialogs.c:1583
msgid "New Shuffle Game"
#: 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"
#: 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"
#: 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"
#: dialogs.c:2193
msgid "Game-list options"
-msgstr "Spieleliste-optionen"
+msgstr "Spieleliste-Optionen"
#: dialogs.c:2269 dialogs.c:2283
msgid "Error"
#: dialogs.c:2306
msgid "Exiting"
-msgstr "Beende"
+msgstr "Programm wird beendet"
#: dialogs.c:2317
msgid "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ß"
#: dialogs.c:2372 dialogs.c:2376
msgid "Demote"
-msgstr "degradieren"
+msgstr "Degradieren"
#: dialogs.c:2373 dialogs.c:2377
msgid "Empty square"
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"
#: 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"
"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
#, 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"
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"
"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: <bug-xboard@gnu.org>\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: <bug-xboard@gnu.org>\n"
+"\n"
#: menus.c:379 menus.c:772
msgid "About XBoard"
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…"
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"
#: menus.c:618
msgid "Quit "
-msgstr ""
+msgstr "Beenden"
#: menus.c:623
msgid "Copy Game"
#: menus.c:636
msgid "Revert"
-msgstr ""
+msgstr "Neuladen"
#: menus.c:637
msgid "Annotate"
#: menus.c:659
msgid "ICS/Chat Console"
-msgstr ""
+msgstr "ICS/Chat-Konsole"
#: menus.c:661
msgid "Board..."
#: menus.c:685
msgid "Rematch"
-msgstr ""
+msgstr "Revanche"
#: menus.c:687
msgid "Call Flag"
#: 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"
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…"
#: menus.c:754
msgid "Hide Thinking"
-msgstr ""
+msgstr "Denken verstecken"
#: menus.c:758
msgid "Save Settings Now"
"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"
#: ngamelist.c:88
msgid "narrow"
-msgstr ""
+msgstr "Eng"
#: ngamelist.c:89
msgid "thresholds"
#: 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"
#: 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
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"
#: 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"
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 <aceballos@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\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"
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"
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"
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"
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"
--- /dev/null
+# 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 <flo.ganee@gmail.com>, 2014.
+# Stéphane Aulery <lkppo@free.fr>, 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 <lkppo@free.fr>\n"
+"Language-Team: French <traduc@traduc.org>\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: <bug-xboard@gnu.org>\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 : <bug-xboard@gnu.org>\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"
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h: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 ""
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"
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"
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 ""
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"
# 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 <benno@vertaalt.nl>, 2013, 2014.
+# Benno Schulenberg <benno@vertaalt.nl>, 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 <benno@vertaalt.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
"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"
#: dialogs.c:412
msgid "Headers in Engine Output Window"
-msgstr ""
+msgstr "Kopregels in uitvoervenster van automaat"
#: dialogs.c:413
msgid "Hide Thinking from Human"
#: 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"
#: dialogs.c:426
msgid "Sticky Windows"
-msgstr ""
+msgstr "Kleverige vensters"
#: dialogs.c:427 menus.c:755
msgid "Test Legality"
#: dialogs.c:473
msgid "ASEAN"
-msgstr ""
+msgstr "ASEAN"
#: dialogs.c:474
msgid "Great Shatranj (10x8)"
#: dialogs.c:487
msgid "losers"
-msgstr "verliezers"
+msgstr "Losers"
#: dialogs.c:488
msgid "shogi (9x9)"
#: dialogs.c:688
msgid "Auto-InputBox PopUp"
-msgstr ""
+msgstr "Invoervak vanzelf tonen"
#: dialogs.c:689
msgid "Quit after game"
#: 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"
#: dialogs.c:703
msgid "Other Channel Text Colors:"
-msgstr "Anderekanaal-tekstkleuren:"
+msgstr "Anderekanalen-tekstkleuren:"
#: dialogs.c:704
msgid "Kibitz Text Colors:"
#: 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:"
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"
"\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:"
#: 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"
#: 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"
#: dialogs.c:843
msgid "Alarm:"
-msgstr ""
+msgstr "Wekker:"
#: dialogs.c:844
msgid "Challenge:"
-msgstr ""
+msgstr "Uitdaging:"
#: dialogs.c:846
msgid "Sounds Directory:"
#: dialogs.c:847
msgid "Shout:"
-msgstr ""
+msgstr "Shout:"
#: dialogs.c:848
msgid "S-Shout:"
-msgstr ""
+msgstr "S-Shout:"
#: dialogs.c:849
msgid "Channel:"
#: dialogs.c:851
msgid "Tell:"
-msgstr "Mededeling"
+msgstr "Tell:"
#: dialogs.c:852
msgid "Kibitz:"
#: 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:"
#: 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"
#: 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:"
#: 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:"
#: 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"
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"
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"
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"
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"
"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: <bug-xboard@gnu.org>\n"
"\n"
#: menus.c:659
msgid "ICS/Chat Console"
-msgstr ""
+msgstr "ICS/chat-console"
#: menus.c:661
msgid "Board..."
#: menus.c:685
msgid "Rematch"
-msgstr ""
+msgstr "Revanche"
#: menus.c:687
msgid "Call Flag"
msgstr "Tijdsbeperking..."
#: menus.c:725
-#, fuzzy
msgid "Common Engine..."
-msgstr "Automaten..."
+msgstr "Gemeenschappelijke automaat..."
#: menus.c:726
msgid "Adjudications..."
#: nevalgraph.c:106
msgid "Eval"
-msgstr ""
+msgstr "Eval"
#: ngamelist.c:87
msgid "find position"
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 <pawel@zolnowski.name>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"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"
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"
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"
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Ę"
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"
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h: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 ""
msgid "Note"
msgstr "Примечание"
-#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658
+#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659
msgid "White"
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 "Черные"
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 ""
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"
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ý <alper_atici@yahoo.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: args.h: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 ""
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"
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"
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 ""
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ý"
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 <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-#: args.h: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"
msgid "Note"
msgstr "Нотатка"
-#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658
+#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659
msgid "White"
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 "Чорні"
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 "СПРОБУЙТЕ ІНШУ НАЗВУ"
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 "Не вдалося відкрити файл"
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h: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 ""
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"
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"
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 ""
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 ""
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"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 ""
msgid "Note"
msgstr ""
-#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658
+#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659
msgid "White"
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 ""
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 ""
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 ""
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h: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 ""
msgid "Note"
msgstr "注释"
-#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658
+#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659
msgid "White"
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 "黑方"
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 ""
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"
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h: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 ""
msgid "Note"
msgstr "註解"
-#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658
+#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659
msgid "White"
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 "黑方"
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 ""
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失敗"
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: args.h: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 ""
msgid "Note"
msgstr "註解"
-#: dialogs.c:2370 dialogs.c:2655 dialogs.c:2658
+#: dialogs.c:2370 dialogs.c:2656 dialogs.c:2659
msgid "White"
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 "黑方"
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 ""
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失敗"