From 313853b6e3feebfe83555864237adf3b05b2d994 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Thu, 24 Mar 2016 22:37:10 +0000 Subject: [PATCH] fpspreadsheet: Activate i16n for translation of strings. Add German translation. Some cleanup (hints & warnings). git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4592 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/visual/shared/fpssylk.pas | 9 +- components/fpspreadsheet/fpscsv.pas | 4 +- components/fpspreadsheet/fpsexprparser.pas | 113 ++-- components/fpspreadsheet/fpsfunc.pas | 2 +- components/fpspreadsheet/fpshtml.pas | 4 +- components/fpspreadsheet/fpsopendocument.pas | 6 +- components/fpspreadsheet/fpspreadsheet.pas | 19 +- .../fpspreadsheet/fpspreadsheetgrid.pas | 4 +- components/fpspreadsheet/fpsstrings.pas | 208 ++++--- components/fpspreadsheet/fpstypes.pas | 38 ++ components/fpspreadsheet/fpsutils.pas | 44 +- components/fpspreadsheet/fpszipper.pp | 2 +- .../fpspreadsheet/languages/fpsstrings.de.po | 573 ++++++++++++++++++ .../fpspreadsheet/languages/fpsstrings.po | 563 +++++++++++++++++ .../fpspreadsheet/laz_fpspreadsheet.lpk | 5 + components/fpspreadsheet/wikitable.pas | 4 +- components/fpspreadsheet/xlsbiff2.pas | 2 +- components/fpspreadsheet/xlsbiff5.pas | 6 +- components/fpspreadsheet/xlsbiff8.pas | 2 +- components/fpspreadsheet/xlsescher.pas | 2 +- components/fpspreadsheet/xlsxml.pas | 2 +- components/fpspreadsheet/xlsxooxml.pas | 6 +- 22 files changed, 1396 insertions(+), 222 deletions(-) create mode 100644 components/fpspreadsheet/languages/fpsstrings.de.po create mode 100644 components/fpspreadsheet/languages/fpsstrings.po diff --git a/components/fpspreadsheet/examples/visual/shared/fpssylk.pas b/components/fpspreadsheet/examples/visual/shared/fpssylk.pas index 187e9b195..6ded4c683 100644 --- a/components/fpspreadsheet/examples/visual/shared/fpssylk.pas +++ b/components/fpspreadsheet/examples/visual/shared/fpssylk.pas @@ -70,6 +70,9 @@ type DateMode: TDateMode; // R/W end; +const + STR_FILEFORMAT_SYLK = 'SYLK'; + var {@@ Default settings for reading/writing of SYLK files } SYLKSettings: TSYLKSettings = ( @@ -83,7 +86,7 @@ var implementation uses - fpsStrings, fpsRegFileFormats, fpsUtils, fpsNumFormat; + fpsRegFileFormats, fpsUtils, fpsNumFormat; {==============================================================================} { TsSYLKReader } @@ -253,7 +256,7 @@ begin TryStrToFloat(sval, val, FPointSeparatorSettings) then begin for col := col1-1 to col2-1 do - FWorksheet.WriteColWidth(col, val); + FWorksheet.WriteColWidth(col, val, suChars); end; end; end; @@ -663,7 +666,7 @@ initialization sfidSYLK := RegisterSpreadFormat(sfUser, TsSYLKReader, TsSYLKWriter, - rsFileFormatSYLK, 'SYLK', ['.slk', '.sylk'] + STR_FILEFORMAT_SYLK, 'SYLK', ['.slk', '.sylk'] ); end. diff --git a/components/fpspreadsheet/fpscsv.pas b/components/fpspreadsheet/fpscsv.pas index cbbb9a826..a5b807404 100644 --- a/components/fpspreadsheet/fpscsv.pas +++ b/components/fpspreadsheet/fpscsv.pas @@ -93,7 +93,7 @@ implementation uses DateUtils, LConvEncoding, Math, - fpsStrings, fpsRegFileFormats, fpsUtils, fpsNumFormat; + fpsRegFileFormats, fpsUtils, fpsNumFormat; function LineEndingAsString(ALineEnding: TsCSVLineEnding): String; begin @@ -448,7 +448,7 @@ initialization // Registers this reader / writer in fpSpreadsheet sfidCSV := RegisterSpreadFormat(sfCSV, TsCSVReader, TsCSVWriter, - rsFileFormatCSV, 'CSV', [STR_COMMA_SEPARATED_EXTENSION, '.txt'] + STR_FILEFORMAT_CSV, 'CSV', [STR_COMMA_SEPARATED_EXTENSION, '.txt'] ); end. diff --git a/components/fpspreadsheet/fpsexprparser.pas b/components/fpspreadsheet/fpsexprparser.pas index ea455b5bd..f21d77b9e 100644 --- a/components/fpspreadsheet/fpsexprparser.pas +++ b/components/fpspreadsheet/fpsexprparser.pas @@ -278,7 +278,7 @@ type destructor Destroy; override; property Operand: TsExprNode read FOperand; end; - + (* { TsNotExprNode } TsNotExprNode = class(TsUnaryOperationExprNode) protected @@ -289,7 +289,7 @@ type procedure Check; override; function NodeType: TsResultType; override; end; - + *) (* { TsConvertExprNode } TsConvertExprNode = class(TsUnaryOperationExprNode) @@ -836,7 +836,7 @@ const implementation uses - typinfo, math, lazutf8, dateutils, fpsutils, fpsfunc; + typinfo, math, lazutf8, dateutils, fpsutils, fpsfunc, fpsStrings; const cNull = #0; @@ -850,43 +850,6 @@ const Symbols = Delimiters; WordDelimiters = WhiteSpace + Symbols; -resourcestring - SBadQuotes = 'Unterminated string'; - SUnknownDelimiter = 'Unknown delimiter character: "%s"'; - SErrUnknownCharacter = 'Unknown character at pos %d: "%s"'; - SErrUnexpectedEndOfExpression = 'Unexpected end of expression'; - SErrUnknownComparison = 'Internal error: Unknown comparison'; - SErrBracketExpected = 'Expected ) bracket at position %d, but got %s'; - SerrUnknownTokenAtPos = 'Unknown token at pos %d : %s'; - SErrLeftBracketExpected = 'Expected ( bracket at position %d, but got %s'; - SErrInvalidFloat = '%s is not a valid floating-point value'; - SErrUnknownIdentifier = 'Unknown identifier: %s'; - SErrInExpression = 'Cannot evaluate: error in expression'; - SErrInExpressionEmpty = 'Cannot evaluate: empty expression'; - SErrCommaExpected = 'Expected comma (,) at position %d, but got %s'; - SErrInvalidNumberChar = 'Unexpected character in number : %s'; - SErrInvalidNumber = 'Invalid numerical value : %s'; - SErrInvalidCell = 'No valid cell address specification : %s'; - SErrInvalidCellRange = 'No valid cell range specification : %s'; - SErrNoOperand = 'No operand for unary operation %s'; - { -- currently not used: - SErrNoLeftOperand = 'No left operand for binary operation %s'; - SErrNoRightOperand = 'No left operand for binary operation %s'; - SErrNoNegation = 'Cannot negate expression of type %s: %s'; - SErrNoUPlus = 'Cannot perform unary plus operation on type %s: %s'; - SErrTypesDoNotMatch = 'Type mismatch: %s<>%s for expressions "%s" and "%s".'; - SErrNoNodeToCheck = 'Internal error: No node to check !'; - SInvalidNodeType = 'Node type (%s) not in allowed types (%s) for expression: %s'; - } - SErrNoNOTOperation = 'Cannot perform NOT operation on expression of type %s: %s'; - SErrNoPercentOperation = 'Cannot perform percent operation on expression of type %s: %s'; - SErrUnterminatedExpression = 'Badly terminated expression. Found token at position %d : %s'; - SErrDuplicateIdentifier = 'An identifier with name "%s" already exists.'; - SErrInvalidResultCharacter = '"%s" is not a valid return type indicator'; - ErrInvalidArgumentCount = 'Invalid argument count for function %s'; - SErrInvalidResultType = 'Invalid result type: %s'; - SErrNotVariable = 'Identifier %s is not a variable'; - SErrCircularReference = 'Circular reference found when calculating worksheet formula in cell %s'; { --------------------------------------------------------------------- Auxiliary functions @@ -924,7 +887,7 @@ begin 'C' : Result := rtCell; '?' : Result := rtAny; else - RaiseParserError(SErrInvalidResultCharacter, [C]); + RaiseParserError(rsInvalidResultCharacter, [C]); end; end; @@ -995,7 +958,7 @@ begin ')' : Result := ttRight; // ',' : Result := ttComma; else - ScanError(Format(SUnknownDelimiter, [D])); + ScanError(Format(rsUnknownDelimiter, [D])); end; end; @@ -1056,13 +1019,13 @@ begin or ((FToken <> '') and (C in ['+', '-']) and (prevC = 'E')) ) then - ScanError(Format(SErrInvalidNumberChar, [C])); + ScanError(Format(rsInvalidNumberChar, [C])); FToken := FToken+C; prevC := Upcase(C); C := NextPos; end; if not TryStrToFloat(FToken, X, FParser.FFormatSettings) then - ScanError(Format(SErrInvalidNumber, [FToken])); + ScanError(Format(rsInvalidNumber, [FToken])); Result := ttNumber; end; @@ -1081,7 +1044,7 @@ begin while (C <> ']') do begin case C of - cNull: ScanError(SErrUnexpectedEndOfExpression); + cNull: ScanError(rsUnexpectedEndOfExpression); '.' : ; // ignore ':' : begin isRange := true; FToken := FToken + C; end; else FToken := FToken + C; @@ -1128,7 +1091,7 @@ begin C := NextPos; end; if (C = cNull) then - ScanError(SBadQuotes); + ScanError(rsBadQuotes); Result := ttString; FTokenType := Result; NextPos; @@ -1164,7 +1127,7 @@ begin else if IsAlpha(C) or (C = '$') then Result := DoIdentifier else - ScanError(Format(SErrUnknownCharacter, [FPos, C])); + ScanError(Format(rsUnknownCharacter, [FPos, C])); FTokenType := Result; end; @@ -1266,14 +1229,14 @@ end; procedure TsExpressionParser.CheckEOF; begin if (TokenType = ttEOF) then - ParserError(SErrUnexpectedEndOfExpression); + ParserError(rsUnexpectedEndOfExpression); end; procedure TsExpressionParser.CheckResultType(const Res: TsExpressionResult; AType: TsResultType); inline; begin if (Res.ResultType <> AType) then - RaiseParserError(SErrInvalidResultType, [ResultTypeName(Res.ResultType)]); + RaiseParserError(rsInvalidResultType, [ResultTypeName(Res.ResultType)]); end; procedure TsExpressionParser.Clear; @@ -1346,9 +1309,9 @@ end; procedure TsExpressionParser.EvaluateExpression(out Result: TsExpressionResult); begin if (FExpression = '') then - ParserError(SErrInExpressionEmpty); + ParserError(rsExpressionEmpty); if not Assigned(FExprNode) then - ParserError(SErrInExpression); + ParserError(rsErrorInExpression); FExprNode.GetNodeValue(Result); end; @@ -1480,7 +1443,7 @@ begin ttEqual : C := TsEqualExprNode; ttNotEqual : C := TsNotEqualExprNode; else - ParserError(SErrUnknownComparison) + ParserError(rsUnknownComparison) end; Result := C.Create(self, Result, right); end; @@ -1602,7 +1565,7 @@ begin if (TokenType <> ttRight) then begin currToken := CurrentToken; if TokenType = ttEOF then currToken := 'end of formula'; - ParserError(Format(SErrBracketExpected, [SCanner.Pos, currToken])); + ParserError(Format(rsRightBracketExpected, [SCanner.Pos, currToken])); end; GetToken; except @@ -1642,7 +1605,7 @@ begin if TryStrToFloat(CurrentToken, X, FFormatSettings) then Result := TsConstExprNode.CreateFloat(self, X) else - ParserError(Format(SErrInvalidFloat, [CurrentToken])); + ParserError(Format(rsInvalidFloat, [CurrentToken])); end; end else if (TokenType = ttTrue) then @@ -1658,13 +1621,13 @@ begin else if (TokenType = ttError) then Result := TsConstExprNode.CreateError(self, CurrentToken) else if not (TokenType in [ttIdentifier]) then - ParserError(Format(SerrUnknownTokenAtPos, [Scanner.Pos, CurrentToken])) + ParserError(Format(rsUnknownTokenAtPos, [Scanner.Pos, CurrentToken])) else begin token := Uppercase(CurrentToken); ID := self.IdentifierByName(token); if (ID = nil) then - ParserError(Format(SErrUnknownIdentifier, [token])); + ParserError(Format(rsUnknownIdentifier, [token])); if (ID.IdentifierType in [itFunctionCallBack, itFunctionHandler]) then begin lCount := ID.ArgumentCount; @@ -1672,10 +1635,10 @@ begin begin GetToken; if (TokenType <> ttLeft) then - ParserError(Format(SErrLeftBracketExpected, [Scanner.Pos, CurrentOrEOFToken])); + ParserError(Format(rsLeftBracketExpected, [Scanner.Pos, CurrentOrEOFToken])); GetToken; if (TokenType <> ttRight) then - ParserError(Format(SErrBracketExpected, [Scanner.Pos, CurrentOrEOFToken])); + ParserError(Format(rsRightBracketExpected, [Scanner.Pos, CurrentOrEOFToken])); SetLength(Args, 0); end; end @@ -1688,7 +1651,7 @@ begin begin GetToken; if (TokenType <> ttLeft) then - ParserError(Format(SErrLeftBracketExpected, [Scanner.Pos, CurrentOrEofToken])); + ParserError(Format(rsLeftBracketExpected, [Scanner.Pos, CurrentOrEofToken])); SetLength(Args, abs(lCount)); AI := 0; try @@ -1714,11 +1677,11 @@ begin begin if (TokenType <> ttListSep) then if (AI < abs(lCount)) then - ParserError(Format(SErrCommaExpected, [Scanner.Pos, CurrentOrEofToken])) + ParserError(Format(rsCommaExpected, [Scanner.Pos, CurrentOrEofToken])) end; until (AI = lCount) or (((lCount < 0) or optional) and (TokenType = ttRight)); if TokenType <> ttRight then - ParserError(Format(SErrBracketExpected, [Scanner.Pos, CurrentOrEofToken])); + ParserError(Format(rsRightBracketExpected, [Scanner.Pos, CurrentOrEofToken])); if AI < abs(lCount) then SetLength(Args, AI); except @@ -1749,7 +1712,7 @@ end; function TsExpressionParser.ResultType: TsResultType; begin if not Assigned(FExprNode) then - ParserError(SErrInExpression); + ParserError(rsErrorInExpression); Result := FExprNode.NodeType;; end; @@ -1805,7 +1768,7 @@ begin GetToken; FExprNode := Level1; if (TokenType <> ttEOF) then - ParserError(Format(SErrUnterminatedExpression, [Scanner.Pos, CurrentToken])); + ParserError(Format(rsUnterminatedExpression, [Scanner.Pos, CurrentToken])); FExprNode.Check; end; end; @@ -1935,7 +1898,7 @@ procedure TsExpressionParser.SetRPNFormula(const AFormula: TsRPNFormula); ID := self.IdentifierByName(AFormula[AIndex].FuncName); if ID = nil then begin - ParserError(Format(SErrUnknownIdentifier,[AFormula[AIndex].FuncName])); + ParserError(Format(rsUnknownIdentifier, [AFormula[AIndex].FuncName])); dec(AIndex); end else begin @@ -2122,7 +2085,7 @@ function TsExprIdentifierDefs.IdentifierByName(const AName: ShortString begin Result := FindIdentifier(AName); if (Result = nil) then - RaiseParserError(SErrUnknownIdentifier, [AName]); + RaiseParserError(rsUnknownIdentifier, [AName]); end; function TsExprIdentifierDefs.IndexOfIdentifier(const AName: ShortString): Integer; @@ -2194,13 +2157,13 @@ end; procedure TsExprIdentifierDef.CheckResultType(const AType: TsResultType); begin if (FValue.ResultType <> AType) then - RaiseParserError(SErrInvalidResultType, [ResultTypeName(AType)]) + RaiseParserError(rsInvalidResultType, [ResultTypeName(AType)]) end; procedure TsExprIdentifierDef.CheckVariable; begin if Identifiertype <> itVariable then - RaiseParserError(SErrNotVariable, [Name]); + RaiseParserError(rsNoVariable, [Name]); end; function TsExprIdentifierDef.GetAsBoolean: Boolean; @@ -2341,7 +2304,7 @@ begin exit; if (AValue <> '') then if Assigned(Collection) and (TsExprIdentifierDefs(Collection).IndexOfIdentifier(AValue) <> -1) then - RaiseParserError(SErrDuplicateIdentifier,[AValue]); + RaiseParserError(rsDuplicateIdentifier,[AValue]); FName := AValue; end; @@ -2537,7 +2500,7 @@ end; procedure TsUnaryOperationExprNode.Check; begin if not Assigned(Operand) then - RaiseParserError(SErrNoOperand, [Self.ClassName]); + RaiseParserError(rsNoOperand, [Self.ClassName]); end; @@ -2840,7 +2803,7 @@ const begin inherited; if not (Operand.NodeType in AllowedTokens) then - RaiseParserError(SErrNoPercentOperation, [ResultTypeName(Operand.NodeType), Operand.AsString]) + RaiseParserError(rsNoPercentOperation, [ResultTypeName(Operand.NodeType), Operand.AsString]) end; procedure TsPercentExprNode.GetNodeValue(out Result: TsExpressionResult); @@ -2887,7 +2850,7 @@ begin Result := Operand.NodeValue; end; - + (* { TsNotExprNode } function TsNotExprNode.AsRPNItem(ANext: PRPNItem): PRPNItem; @@ -2924,7 +2887,7 @@ function TsNotExprNode.NodeType: TsResultType; begin Result := Operand.NodeType; end; - + *) { TsBooleanResultExprNode } @@ -3459,7 +3422,7 @@ begin begin for i:=Length(FArgumentNodes)+1 to FID.ArgumentCount do if not FID.IsOptionalArgument(i) then - RaiseParserError(ErrInvalidArgumentCount, [FID.Name]); + RaiseParserError(rsInvalidArgumentCount, [FID.Name]); end; for i := 0 to Length(FArgumentNodes)-1 do @@ -3618,7 +3581,7 @@ begin csNotCalculated: Worksheet.CalcFormula(cell); csCalculating: - raise ECalcEngine.CreateFmt(SErrCircularReference, [GetCellString(cell^.Row, cell^.Col)]); + raise ECalcEngine.CreateFmt(rsCircularReference, [GetCellString(cell^.Row, cell^.Col)]); end; Result.ResultType := rtCell; @@ -3706,7 +3669,7 @@ begin csNotCalculated: FWorksheet.CalcFormula(cell); csCalculating: - raise ECalcEngine.Create(SErrCircularReference); + raise ECalcEngine.Create(rsCircularReference); end; end; diff --git a/components/fpspreadsheet/fpsfunc.pas b/components/fpspreadsheet/fpsfunc.pas index add033d29..5416d866e 100644 --- a/components/fpspreadsheet/fpsfunc.pas +++ b/components/fpspreadsheet/fpsfunc.pas @@ -1710,7 +1710,7 @@ begin Result := StringResult('v'); end else if stype = 'width' then - Result := FloatResult(Args[1].Worksheet.GetColWidth(c1)) + Result := FloatResult(Args[1].Worksheet.GetColWidth(c1, suChars)) else Result := ErrorResult(errWrongType); end; diff --git a/components/fpspreadsheet/fpshtml.pas b/components/fpspreadsheet/fpshtml.pas index ea4a778ab..8ea9c8004 100644 --- a/components/fpspreadsheet/fpshtml.pas +++ b/components/fpspreadsheet/fpshtml.pas @@ -142,7 +142,7 @@ implementation uses LConvEncoding, LazUTF8, URIParser, StrUtils, Math, - fpsStrings, fpsRegFileFormats, fpsUtils, fpsXMLCommon, fpsNumFormat; + fpsRegFileFormats, fpsUtils, fpsXMLCommon, fpsNumFormat; const MIN_FONTSIZE = 6; @@ -1909,7 +1909,7 @@ initialization // Registers this reader / writer in fpSpreadsheet sfidHTML := RegisterSpreadFormat(sfHTML, TsHTMLReader, TsHTMLWriter, - rsFileFormatHTML, 'HTML', [STR_HTML_EXTENSION, '.htm'] + STR_FILEFORMAT_HTML, 'HTML', [STR_HTML_EXTENSION, '.htm'] ); diff --git a/components/fpspreadsheet/fpsopendocument.pas b/components/fpspreadsheet/fpsopendocument.pas index 47cd6bfc0..514fbca72 100755 --- a/components/fpspreadsheet/fpsopendocument.pas +++ b/components/fpspreadsheet/fpsopendocument.pas @@ -5596,11 +5596,11 @@ begin if AValue then begin StrValue := 'true'; - DisplayStr := rsTRUE; + DisplayStr := STR_TRUE; end else begin strValue := 'false'; - DisplayStr := rsFALSE; + DisplayStr := STR_FALSE; end; // Hyperlink @@ -6976,7 +6976,7 @@ initialization // Registers this reader / writer in fpSpreadsheet sfidOpenDocument := RegisterSpreadFormat(sfOpenDocument, TsSpreadOpenDocReader, TsSpreadOpenDocWriter, - rsFileFormatOpenDocument, 'ODS', [STR_OPENDOCUMENT_CALC_EXTENSION] + STR_FILEFORMAT_OPENDOCUMENT, 'ODS', [STR_OPENDOCUMENT_CALC_EXTENSION] ); end. diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas index 3d8d8818a..1e7407e76 100755 --- a/components/fpspreadsheet/fpspreadsheet.pas +++ b/components/fpspreadsheet/fpspreadsheet.pas @@ -2578,19 +2578,10 @@ begin end; cctBool: - Result := StrUtils.IfThen(BoolValue, rsTRUE, rsFALSE); + Result := StrUtils.IfThen(BoolValue, STR_TRUE, STR_FALSE); cctError: - case TsErrorValue(ErrorValue) of - errEmptyIntersection : Result := rsErrEmptyIntersection; - errDivideByZero : Result := rsErrDivideByZero; - errWrongType : Result := rsErrWrongType; - errIllegalRef : Result := rsErrIllegalRef; - errWrongName : Result := rsErrWrongName; - errOverflow : Result := rsErrOverflow; - errArgError : Result := rsErrArgError; - errFormulaNotSupported: Result := rsErrFormulaNotSupported; - end; + Result := GetErrorValueStr(TsErrorValue(ErrorValue)); else // blank --> display hyperlink target if available Result := ''; @@ -3413,7 +3404,7 @@ var img: TsImage; obj: TsEmbeddedObj; colW, rowH: Double; - totH, totW: Double; + totH: Double; r, c: Integer; w_px, h_px: Integer; totH_px, rowH_px: Integer; @@ -7403,7 +7394,7 @@ begin // The file could not be opened successfully --> Error. if not success then - raise Exception.CreateFmt(rsNoValidSpreadsheetFile, [AFileName]); + raise Exception.CreateFmt(rsInvalidSpreadsheetFile, [AFileName]); end; {@@ ---------------------------------------------------------------------------- @@ -7427,7 +7418,7 @@ begin end; end; if not success then - raise Exception.CreateFmt(rsNoValidSpreadsheetFile, [AFileName]); + raise Exception.CreateFmt(rsInvalidSpreadsheetFile, [AFileName]); end; {@@ ---------------------------------------------------------------------------- diff --git a/components/fpspreadsheet/fpspreadsheetgrid.pas b/components/fpspreadsheet/fpspreadsheetgrid.pas index afb40c1fe..181f8700a 100644 --- a/components/fpspreadsheet/fpspreadsheetgrid.pas +++ b/components/fpspreadsheet/fpspreadsheetgrid.pas @@ -708,7 +708,9 @@ implementation uses Types, LCLType, LCLIntf, LCLProc, Math, StrUtils, - fpCanvas, fpsStrings, fpsUtils, fpsVisualUtils, fpsNumFormat, fpsHTMLUtils; + fpCanvas, + fpsStrings, fpsUtils, fpsVisualUtils, fpsHTMLUtils, + fpsNumFormat; const {@@ Default number of columns prepared for a new empty worksheet } diff --git a/components/fpspreadsheet/fpsstrings.pas b/components/fpspreadsheet/fpsstrings.pas index 122369430..8227c9592 100644 --- a/components/fpspreadsheet/fpsstrings.pas +++ b/components/fpspreadsheet/fpsstrings.pas @@ -6,40 +6,28 @@ unit fpsStrings; {$mode delphi}{$H+} {$endif} - interface resourcestring - rsDefaultSheetName = 'Sheet%d'; - - // File formats - rsFileFormatExcel2 = 'Excel 2.1'; - rsFileFormatExcel5 = 'Excel 5'; - rsFileFormatExcel8 = 'Excel 97-2003'; - rsFileFormatExcelXML = 'Excel XP/2003 XML'; - rsFileFormatExcelXLSX = 'Excel 2007+ XML'; - rsFileFormatOpenDocument = 'OpenDocument'; - rsFileFormatSYLK = 'SYLK'; - rsFileFormatCSV = 'CSV'; - rsFileFormatHTML = 'HTML'; - rsFileFormatWikiTablePipes = 'WikiTable (Pipes)'; - rsFileFormatWikiTableWikiMedia = 'WikiTable (WikiMedia)'; - rsFiles = 'files'; + // Files & file formats rsAllSpreadsheetFiles = 'All spreadsheet files'; rsAllExcelFiles = 'All Excel files'; - - // Reading / writing - rsCannotReadFile = 'Cannot read file "%s".' + LineEnding + 'Wrong, unknown or defective file format?'; + rsCannotReadFile = 'Cannot read file "%s". Wrong, unknown or defective file format?'; + rsDefectiveInternalFileStructure = 'Defective internal structure of %s file.'; + rsFileAlreadyExists = 'File "%s" already exists.'; + rsFileFormatNotSupported = 'File format of "%s" not supported.'; + rsFileNotFound = 'File "%s" not found.'; + rsFiles = 'files'; + rsFileStructureError = 'File structure error in %s record, position %d.'; + rsIndexInSSTOutOfRange = 'Index %d in SST out of range (0-%d).'; + rsInvalidExtension = 'Attempting to save a spreadsheet by extension, ' + + 'but the extension %s is not valid.'; + rsInvalidSpreadsheetFile = '"%s" is not a valid spreadsheet file'; + rsReaderNotFound = 'Reader not found for file "%s"'; rsUnsupportedReadFormat = 'Tried to read a spreadsheet using an unsupported format'; rsUnsupportedWriteFormat = 'Tried to write a spreadsheet using an unsupported format'; - rsNoValidSpreadsheetFile = '"%s" is not a valid spreadsheet file'; - rsUnknownSpreadsheetFormat = 'unknown format'; - rsReaderNotFound = 'Reader not found for file "%s"'; - rsExportFileIsRequired = 'Export file name is required'; - rsFPSExportDescription = 'Spreadsheet file'; - rsMultipleSheetsOnlyWithRestorePosition = 'Export to multiple sheets is possible '+ - 'only if position is restored.'; + // File format limitations rsMaxRowsExceeded = 'This workbook contains %d rows, but the selected ' + 'file format does not support more than %d rows.'; rsMaxColsExceeded = 'This workbook contains %d columns, but the selected ' + @@ -47,60 +35,19 @@ resourcestring rsTooManyPaletteColors = 'This workbook contains more colors (%d) than ' + 'supported by the file format (%d). The additional colors are replaced by '+ 'the best-matching palette colors.'; - rsInvalidExtension = 'Attempting to save a spreadsheet by extension, ' + - 'but the extension %s is not valid.'; - rsInvalidFontIndex = 'Invalid font index'; - rsInvalidNumberFormat = 'Trying to use an incompatible number format.'; - rsInvalidDateTimeFormat = 'Trying to use an incompatible date/time format.'; - rsNoValidNumberFormatString = 'No valid number format string.'; - rsIsNoValidNumberFormatString = '%s is not a valid number format string.'; + rsTruncateTooLongCellText = 'Text value exceeds the %d character limit in ' + + 'cell %s and has been truncated.'; + + // Cells + rsInvalidCharacterInCell = 'Invalid character(s) in cell %s.'; rsNoValidCellAddress = '"%s" is not a valid cell address.'; rsNoValidCellRangeAddress = '"%s" is not a valid cell range address.'; rsNoValidCellRangeOrCellAddress = '"%s" is not a valid cell or cell range address.'; - rsSpecifyNumberOfParams = 'Specify number of parameters for function %s'; - rsIncorrectParamCount = 'Funtion %s requires at least %d and at most %d parameters.'; - rsCircularReference = 'Circular reference found when calculating worksheet formulas'; - rsFileNotFound = 'File "%s" not found.'; - rsFileFormatNotSupported = 'File format of "%s" not supported.'; - rsImageFormatNotSupported = 'Image format not supported.'; - rsFileAlreadyExists = 'File "%s" already exists.'; - rsWorksheetNotFound = 'Worksheet "%s" not found.'; - rsWorksheetNotFound1 = 'Worksheet not found.'; - rsInvalidWorksheetName = '"%s" is not a valid worksheet name.'; - rsDefectiveInternalStructure = 'Defective internal structure of %s file.'; - rsFileStructureError = 'File structure error in %s record, position %d.'; - rsUnknownDataType = 'Unknown data type.'; - rsUnknownErrorType = 'Unknown error type.'; - rsTruncateTooLongCellText = 'Text value exceeds %d character limit in cell %s '+ - 'and has been truncated.'; - rsColumnStyleNotFound = 'Column style not found.'; - rsRowStyleNotFound = 'Row style not found.'; - rsInvalidCharacterInCell = 'Invalid character(s) in cell %s.'; - rsInvalidCharacterInCellComment = 'Invalid character(s) in cell comment "%s".'; - rsUTF8TextExpectedButANSIFoundInCell = 'Expected UTF8 text but probably ANSI '+ - 'text found in cell %s.'; - rsIndexInSSTOutOfRange = 'Index %d in SST out of range (0-%d).'; - rsAmbiguousDecThouSeparator = 'Assuming usage of decimal separator in "%s".'; + rsUTF8TextExpectedButANSIFoundInCell = 'Expected UTF8 text, '+ + 'but probably ANSI text found in cell %s.'; + + // Code page rsCodePageNotSupported = 'Code page "%s" is not supported. Using "cp1252" (Latin 1) instead.'; - rsFormulaNotSupported = 'The formula in cell %s is not supported by this file format: %s'; - - rsCannotSortMerged = 'The cell range cannot be sorted because it contains merged cells.'; - - // Hyperlinks - rsNoValidHyperlinkInternal = 'The hyperlink "%s" is not a valid cell address.'; - rsNoValidHyperlinkURI = 'The hyperlink "%s" is not a valid URI.'; - rsLocalFileHyperlinkAbs = 'The hyperlink "%s" points to a local file. ' + - 'In case of an absolute path the protocol "file:" must be specified.'; - rsEmptyHyperlink = 'The hyperlink is not specified.'; - rsODSHyperlinksOfTextCellsOnly = 'Cell %s: OpenDocument supports hyperlinks for text cells only.'; - rsStdHyperlinkTooltip = 'Hold the left mouse button down for a short time to activate the hyperlink.'; - - // PageLayout - rsDifferentSheetPrintRange = 'Print range "%s" requires a different worksheet.'; - rsFooter = 'Footer'; - rsHeader = 'Header'; - rsIncorrectPositionOfImageInHeaderFooter = 'Incorrect position of %%G code in %s'; - rsOnlyOneHeaderFooterImageAllowed = 'Only one image per %s section allowed.'; // Colors rsAqua = 'aqua'; @@ -163,20 +110,109 @@ resourcestring rsTransparent = 'transparent'; rsPaletteIndex = 'Palette index %d'; - rsTRUE = 'TRUE'; // wp: Do we really want to translate these strings? - rsFALSE = 'FALSE'; - rsErrEmptyIntersection = '#NULL!'; - rsErrDivideByZero = '#DIV/0!'; - rsErrWrongType = '#VALUE!'; - rsErrIllegalRef = '#REF!'; - rsErrWrongName = '#NAME?'; - rsErrOverflow = '#NUM!'; - rsErrArgError = '#N/A'; - rsErrFormulaNotSupported = ''; + // Columns + rsColumnStyleNotFound = 'Column style not found.'; + // Comments + rsInvalidCharacterInCellComment = 'Invalid character(s) in cell comment "%s".'; + + // Expression parser + // These strings are mostly taken or adapted from fpexprpars + rsBadQuotes = 'Unterminated string'; + rsCircularReference = 'Circular reference found when calculating worksheet '+ + 'formula in cell %s'; + rsCommaExpected = 'Expected comma (,) at position %d, but got %s'; + rsDuplicateIdentifier = 'An identifier with name "%s" already exists.'; + rsErrorInExpression = 'Cannot evaluate: error in expression'; + rsExpressionEmpty = 'Cannot evaluate: empty expression'; + rsInvalidArgumentCount = 'Invalid argument count for function %s'; + rsInvalidFloat = '%s is not a valid floating-point value'; + rsInvalidNumber = 'Invalid numerical value : %s'; + rsInvalidNumberChar = 'Unexpected character in number : %s'; + rsInvalidResultCharacter = '"%s" is not a valid return type indicator'; + rsInvalidResultType = 'Invalid result type: %s'; + rsLeftBracketExpected = 'Expected left bracket at position %d, but got %s'; + rsNoOperand = 'No operand for unary operation %s'; + rsNoPercentOperation = 'Cannot perform percent operation on expression ' + + 'of type %s: %s'; + rsNoVariable = 'Identifier %s is not a variable'; + rsRightBracketExpected = 'Expected right bracket at position %d, but got %s'; + rsUnexpectedEndOfExpression = 'Unexpected end of expression'; + rsUnknownCharacter = 'Unknown character at pos %d: "%s"'; + rsUnknownComparison = 'Internal error: Unknown comparison'; + rsUnknownDelimiter = 'Unknown delimiter character: "%s"'; + rsUnknownIdentifier = 'Unknown identifier: %s'; + rsUnknownTokenAtPos = 'Unknown token at pos %d : %s'; + rsUnterminatedExpression = 'Badly terminated expression. Found token at '+ + 'position %d : %s'; + + { -- currently not used: + SErrNoLeftOperand = 'No left operand for binary operation %s'; + SErrNoRightOperand = 'No left operand for binary operation %s'; + SErrNoNegation = 'Cannot negate expression of type %s: %s'; + SErrNoUPlus = 'Cannot perform unary plus operation on type %s: %s'; + SErrTypesDoNotMatch = 'Type mismatch: %s<>%s for expressions "%s" and "%s".'; + SErrNoNodeToCheck = 'Internal error: No node to check !'; + SInvalidNodeType = 'Node type (%s) not in allowed types (%s) for expression: %s'; + SErrNoNOTOperation = 'Cannot perform NOT operation on expression of type %s: %s'; + } + + // Format + rsAmbiguousDecThouSeparator = 'Assuming usage of decimal separator in "%s".'; + rsInvalidDateTimeFormat = 'Trying to use an incompatible date/time format.'; + rsInvalidFontIndex = 'Invalid font index'; + rsInvalidNumberFormat = 'Trying to use an incompatible number format.'; + rsNoValidNumberFormatString = 'No valid number format string.'; + + // Formulas + rsFormulaNotSupported = 'The formula in cell %s is not supported by this file format: %s'; + rsUnknownDataType = 'Unknown data type.'; + rsUnknownErrorType = 'Unknown error type.'; + + // Hyperlinks + rsEmptyHyperlink = 'The hyperlink is not specified.'; + rsLocalFileHyperlinkAbs = 'The hyperlink "%s" points to a local file. ' + + 'In case of an absolute path the protocol "file:" must be specified.'; + rsNoValidHyperlinkInternal = 'The hyperlink "%s" is not a valid cell address.'; + rsNoValidHyperlinkURI = 'The hyperlink "%s" is not a valid URI.'; + rsODSHyperlinksOfTextCellsOnly = 'Cell %s: OpenDocument supports hyperlinks '+ + 'for text cells only.'; + rsStdHyperlinkTooltip = 'Hold the left mouse button down for a short time '+ + 'to activate the hyperlink.'; + + // Images + rsImageFormatNotSupported = 'Image format not supported.'; + + // PageLayout + rsDifferentSheetPrintRange = 'Print range "%s" requires a different worksheet.'; + rsFooter = 'Footer'; + rsHeader = 'Header'; + rsIncorrectPositionOfImageInHeaderFooter = 'Incorrect position of %%G code in %s'; + rsOnlyOneHeaderFooterImageAllowed = 'Only one image per %s section allowed.'; + + // Rows + rsRowStyleNotFound = 'Row style not found.'; + + // Sorting + rsCannotSortMerged = 'The cell range cannot be sorted because it contains merged cells.'; + + // Worksheets + rsDefaultSheetName = 'Sheet%d'; + rsInvalidWorksheetName = '"%s" is not a valid worksheet name.'; + rsWorksheetNotFound = 'Worksheet "%s" not found.'; + rsWorksheetNotFound1 = 'Worksheet not found.'; + + // WorksheetGrid rsOperationExceedsColCount = 'This operation exceeds the range of defined grid columns.'; rsOperationExceedsRowCount = 'This operation exceeds the range of defined grid rows.'; + // Export + rsExportFileIsRequired = 'Export file name is required.'; + rsFPSExportDescription = 'Spreadsheet file'; + rsMultipleSheetsOnlyWithRestorePosition = 'Export to multiple sheets is possible '+ + 'only if position is restored.'; + + implementation end. diff --git a/components/fpspreadsheet/fpstypes.pas b/components/fpspreadsheet/fpstypes.pas index d51ee3f86..aad4288ba 100644 --- a/components/fpspreadsheet/fpstypes.pas +++ b/components/fpspreadsheet/fpstypes.pas @@ -47,6 +47,27 @@ type end; const + {@@ Explanatory name of sfBiff2 file format } + STR_FILEFORMAT_EXCEL_2 = 'Excel 2.1'; + {@@ Explanatory name of sfBiff5 file format } + STR_FILEFORMAT_EXCEL_5 = 'Excel 5'; + {@@ Explanatory name of sfBiff8 file format } + STR_FILEFORMAT_EXCEL_8 = 'Excel 97-2003'; + {@@ Explanatory name of sfExcelXML file format } + STR_FILEFORMAT_EXCEL_XML = 'Excel XP/2003 XML'; + {@@ Explanatory name of sfOOXLM file format } + STR_FILEFORMAT_EXCEL_XLSX = 'Excel 2007+ XML'; + {@@ Explanatory name of sfOpenDocument file format } + STR_FILEFORMAT_OPENDOCUMENT = 'OpenDocument'; + {@@ Explanatory name of sfCSV file format } + STR_FILEFORMAT_CSV = 'CSV'; + {@@ Explanatory name of sfHTML file format } + STR_FILEFORMAT_HTML = 'HTML'; + {@@ Explanatory name of sfWikiTablePipes file format } + STR_FILEFORMAT_WIKITABLE_PIPES = 'WikiTable (Pipes)'; + {@@ Explanatory name of sfWikiTableWikiMedia file format } + STR_FILEFORMAT_WIKITABLE_WIKIMEDIA = 'WikiTable (WikiMedia)'; + {@@ Default binary Excel file extension (<= Excel 97) } STR_EXCEL_EXTENSION = '.xls'; {@@ Default xml Excel file extension (Excel XP, 2003) } @@ -64,6 +85,23 @@ const {@@ Default extension of wikitable files in wikimedia format } STR_WIKITABLE_WIKIMEDIA_EXTENSION = '.wikitable_wikimedia'; + {@@ String for boolean value TRUE } + STR_TRUE = 'TRUE'; + {@@ String for boolean value FALSE } + STR_FALSE = 'FALSE'; + + {@@ Error values } + STR_ERR_EMPTY_INTERSECTION = '#NULL!'; + STR_ERR_DIVIDE_BY_ZERO = '#DIV/0!'; + STR_ERR_WRONG_TYPE = '#VALUE!'; + STR_ERR_ILLEGAL_REF = '#REF!'; + STR_ERR_WRONG_NAME = '#NAME?'; + STR_ERR_OVERFLOW = '#NUM!'; + STR_ERR_ARG_ERROR = '#N/A'; + // No Excel errors + STR_ERR_FORMULA_NOT_SUPPORTED= ''; + STR_ERR_UNKNOWN = '#UNKNWON!'; + {@@ Maximum count of worksheet columns} MAX_COL_COUNT = 65535; diff --git a/components/fpspreadsheet/fpsutils.pas b/components/fpspreadsheet/fpsutils.pas index c93bc0b87..9ebde77f0 100644 --- a/components/fpspreadsheet/fpsutils.pas +++ b/components/fpspreadsheet/fpsutils.pas @@ -856,10 +856,10 @@ begin for j := j1 to Length(AStr) do begin if AStr[j] in ['A'..'Z'] then - ACol := ACol * INT_NUM_LETTERS + ord(AStr[j]) - ord('A') + 1 + ACol := LongInt(ACol) * INT_NUM_LETTERS + ord(AStr[j]) - ord('A') + 1 else if AStr[j] in ['a'..'z'] then - ACol := ACol * INT_NUM_LETTERS + ord(AStr[j]) - ord('a') + 1 + ACol := LongInt(ACol) * INT_NUM_LETTERS + ord(AStr[j]) - ord('a') + 1 else exit; end; @@ -1046,16 +1046,16 @@ function TryStrToErrorValue(AErrorStr: String; out AErr: TsErrorValue): boolean; begin Result := true; case AErrorStr of - '#NULL!' : AErr := errEmptyIntersection; - '#DIV/0!' : AErr := errDivideByZero; - '#VALUE!' : AErr := errWrongType; - '#REF!' : AErr := errIllegalRef; - '#NAME?' : AErr := errWrongName; - '#NUM!' : AErr := errOverflow; - '#N/A' : AErr := errArgError; - '#FORMULA?': AErr := errFormulaNotSupported; - '' : AErr := errOK; - else Result := false; + STR_ERR_EMPTY_INTERSECTION : AErr := errEmptyIntersection; // #NULL! + STR_ERR_DIVIDE_BY_ZERO : AErr := errDivideByZero; // #DIV/0! + STR_ERR_WRONG_TYPE : AErr := errWrongType; // #VALUE! + STR_ERR_ILLEGAL_REF : AErr := errIllegalRef; // #REF! + STR_ERR_WRONG_NAME : AErr := errWrongName; // #NAME? + STR_ERR_OVERFLOW : AErr := errOverflow; // #NUM! + STR_ERR_ARG_ERROR : AErr := errArgError; // #N/A + STR_ERR_FORMULA_NOT_SUPPORTED : AErr := errFormulaNotSupported; // #FMLA? + '' : AErr := errOK; + else Result := false; end; end; @@ -1068,17 +1068,17 @@ end; function GetErrorValueStr(AErrorValue: TsErrorValue): String; begin case AErrorValue of - errOK : Result := ''; - errEmptyIntersection : Result := '#NULL!'; - errDivideByZero : Result := '#DIV/0!'; - errWrongType : Result := '#VALUE!'; - errIllegalRef : Result := '#REF!'; - errWrongName : Result := '#NAME?'; - errOverflow : Result := '#NUM!'; - errArgError : Result := '#N/A'; + errOK : Result := ''; + errEmptyIntersection : Result := STR_ERR_EMPTY_INTERSECTION; // #NULL! + errDivideByZero : Result := STR_ERR_DIVIDE_BY_ZERO; // #DIV/0! + errWrongType : Result := STR_ERR_WRONG_TYPE; // #VALUE! + errIllegalRef : Result := STR_ERR_ILLEGAL_REF; // #REF! + errWrongName : Result := STR_ERR_WRONG_NAME; // #NAME? + errOverflow : Result := STR_ERR_OVERFLOW; // #NUM! + errArgError : Result := STR_ERR_ARG_ERROR; // #N/A // --- no Excel errors -- - errFormulaNotSupported : Result := '#FORMULA?'; - else Result := '#UNKNOWN ERROR'; + errFormulaNotSupported : Result := STR_ERR_FORMULA_NOT_SUPPORTED; // #FMLA? + else Result := STR_ERR_UNKNOWN; // #UNKNOWN! end; end; diff --git a/components/fpspreadsheet/fpszipper.pp b/components/fpspreadsheet/fpszipper.pp index 217d2929a..c2b480bad 100644 --- a/components/fpspreadsheet/fpszipper.pp +++ b/components/fpspreadsheet/fpszipper.pp @@ -44,7 +44,7 @@ unit fpszipper; Interface Uses - zipper; + {%H-}zipper; Implementation End. diff --git a/components/fpspreadsheet/languages/fpsstrings.de.po b/components/fpspreadsheet/languages/fpsstrings.de.po new file mode 100644 index 000000000..2d5f5aa20 --- /dev/null +++ b/components/fpspreadsheet/languages/fpsstrings.de.po @@ -0,0 +1,573 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: laz_fpspreadsheet\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: de\n" + +#: fpsstrings.rsallexcelfiles +msgid "All Excel files" +msgstr "Alle Excel-Dateien" + +#: fpsstrings.rsallspreadsheetfiles +msgid "All spreadsheet files" +msgstr "Alle Spreadsheet-Dateien" + +#: fpsstrings.rsambiguousdecthouseparator +msgid "Assuming usage of decimal separator in \"%s\"." +msgstr "Verwendung eines Dezimaltrennzeichens in \"%s\" wird angenommen." + +#: fpsstrings.rsaqua +msgid "aqua" +msgstr "wasserblau" + +#: fpsstrings.rsbadquotes +msgid "Unterminated string" +msgstr "Begrenzungszeichen des Strings fehlt." + +#: fpsstrings.rsbeige +msgid "beige" +msgstr "beige" + +#: fpsstrings.rsblack +msgid "black" +msgstr "schwarz" + +#: fpsstrings.rsblue +msgid "blue" +msgstr "balu" + +#: fpsstrings.rsbluegray +msgid "blue gray" +msgstr "blaugrau" + +#: fpsstrings.rsbrown +msgid "brown" +msgstr "braun" + +#: fpsstrings.rscannotreadfile +msgid "Cannot read file \"%s\". Wrong, unknown or defective file format?" +msgstr "Kann Datei \"%s\" nicht lesen. Falsches, unbekanntes oder defektes Dateiformat?" + +#: fpsstrings.rscannotsortmerged +msgid "The cell range cannot be sorted because it contains merged cells." +msgstr "Der Zellbereich kann nicht sortiert werden, weil er verbundene Zellen enthält." + +#: fpsstrings.rscircularreference +msgid "Circular reference found when calculating worksheet formula in cell %s" +msgstr "Zirkulär-Referenz gefunden beim Berechnen der Formel in Zelle %s" + +#: fpsstrings.rscodepagenotsupported +msgid "Code page \"%s\" is not supported. Using \"cp1252\" (Latin 1) instead." +msgstr "Code-Seite \"%s\" wird nicht unterstützt. Verwende stattdessen \"cp1252\" (Latin 1)." + +#: fpsstrings.rscolumnstylenotfound +msgid "Column style not found." +msgstr "Spalten-Stil nicht gefunden." + +#: fpsstrings.rscommaexpected +msgid "Expected comma (,) at position %d, but got %s" +msgstr "Komma erwartet an Position %d, aber %s gefunden." + +#: fpsstrings.rscoral +msgid "coral" +msgstr "korall" + +#: fpsstrings.rscyan +msgid "cyan" +msgstr "cyan" + +#: fpsstrings.rsdarkblue +msgid "dark blue" +msgstr "dunkelblau" + +#: fpsstrings.rsdarkgreen +msgid "dark green" +msgstr "dunkelgrün" + +#: fpsstrings.rsdarkpurple +msgid "dark purple" +msgstr "dunkelpurpur" + +#: fpsstrings.rsdarkred +msgid "dark red" +msgstr "dunkelrot" + +#: fpsstrings.rsdarkteal +msgid "dark teal" +msgstr "dunkel-türkis" + +#: fpsstrings.rsdefaultsheetname +msgid "Sheet%d" +msgstr "Tabelle%d" + +#: fpsstrings.rsdefectiveinternalfilestructure +msgid "Defective internal structure of %s file." +msgstr "Defekte innere Struktur der %s Datei." + +#: fpsstrings.rsdifferentsheetprintrange +msgid "Print range \"%s\" requires a different worksheet." +msgstr "Der Druckbereich \"%s\" benötigt ein anderes Arbeitsblatt." + +#: fpsstrings.rsduplicateidentifier +msgid "An identifier with name \"%s\" already exists." +msgstr "Ein Bezeichner mit dem Namen \"%s\" existiert bereits." + +#: fpsstrings.rsemptyhyperlink +msgid "The hyperlink is not specified." +msgstr "Der Hyperlink ist nicht angegeben." + +#: fpsstrings.rserrorinexpression +msgid "Cannot evaluate: error in expression" +msgstr "Fehler im Ausdruck" + +#: fpsstrings.rsexportfileisrequired +msgid "Export file name is required." +msgstr "Export-Dateiname erforderlich." + +#: fpsstrings.rsexpressionempty +msgid "Cannot evaluate: empty expression" +msgstr "Leerer Ausdruck" + +#: fpsstrings.rsfilealreadyexists +msgid "File \"%s\" already exists." +msgstr "Datei \"%s\" existiert bereits." + +#: fpsstrings.rsfileformatnotsupported +msgid "File format of \"%s\" not supported." +msgstr "Dateiformat von \"%s\" nicht unterstützt." + +#: fpsstrings.rsfilenotfound +msgid "File \"%s\" not found." +msgstr "Datei \"%s\" nicht gefunden." + +#: fpsstrings.rsfiles +msgid "files" +msgstr "Dateien" + +#: fpsstrings.rsfilestructureerror +msgid "File structure error in %s record, position %d." +msgstr "Dateistruktur-Fehler im Datensatz %s an Position %d." + +#: fpsstrings.rsfooter +msgid "Footer" +msgstr "Fußzeile" + +#: fpsstrings.rsformulanotsupported +msgid "The formula in cell %s is not supported by this file format: %s" +msgstr "Die Formel in Zelle %s wird in diesem Dateiformat nicht unterstützt: %s" + +#: fpsstrings.rsfpsexportdescription +msgid "Spreadsheet file" +msgstr "Spreadsheet-Datei" + +#: fpsstrings.rsgold +msgid "gold" +msgstr "golden" + +#: fpsstrings.rsgray +msgid "gray" +msgstr "grau" + +#: fpsstrings.rsgray10pct +msgid "10% gray" +msgstr "10% grau" + +#: fpsstrings.rsgray20pct +msgid "20% gray" +msgstr "20% grau" + +#: fpsstrings.rsgray25pct +msgid "25% gray" +msgstr "25% grau" + +#: fpsstrings.rsgray40pct +msgid "40% gray" +msgstr "40% grau" + +#: fpsstrings.rsgray50pct +msgid "50% gray" +msgstr "50% grau" + +#: fpsstrings.rsgray80pct +msgid "80% gray" +msgstr "80% grau" + +#: fpsstrings.rsgreen +msgid "green" +msgstr "grün" + +#: fpsstrings.rsheader +msgid "Header" +msgstr "Kopfzeile" + +#: fpsstrings.rsiceblue +msgid "ice blue" +msgstr "eisblau" + +#: fpsstrings.rsimageformatnotsupported +msgid "Image format not supported." +msgstr "Bild-Format nicht unterstützt." + +#: fpsstrings.rsincorrectpositionofimageinheaderfooter +msgid "Incorrect position of %%G code in %s" +msgstr "Falsche Position des %%G-Codes in %s" + +#: fpsstrings.rsindexinsstoutofrange +msgid "Index %d in SST out of range (0-%d)." +msgstr "Index %d in der SST liegt außerhalb des gültigen Bereichs (0-%d)." + +#: fpsstrings.rsindigo +msgid "indigo" +msgstr "indigo" + +#: fpsstrings.rsinvalidargumentcount +msgid "Invalid argument count for function %s" +msgstr "Ungültige Anzahl von Argumenten für die Funktion %s" + +#: fpsstrings.rsinvalidcharacterincell +msgid "Invalid character(s) in cell %s." +msgstr "Ungültige(s) Zeichen in Zelle %s." + +#: fpsstrings.rsinvalidcharacterincellcomment +msgid "Invalid character(s) in cell comment \"%s\"." +msgstr "Ungültige(s) Zeichen im Zellkommentar \"%s\"." + +#: fpsstrings.rsinvaliddatetimeformat +msgid "Trying to use an incompatible date/time format." +msgstr "Versuch ein inkompabibles Datum/Zeit-Format zu verwenden" + +#: fpsstrings.rsinvalidextension +msgid "Attempting to save a spreadsheet by extension, but the extension %s is not valid." +msgstr "Versuch, das Format ein Arbeitsbuches anhand der Dateiendung zu erkennen, aber die Endung %s ist nicht gültig. " + +#: fpsstrings.rsinvalidfloat +msgid "%s is not a valid floating-point value" +msgstr "%s ist kein gültiger Gleitkomma-Wert." + +#: fpsstrings.rsinvalidfontindex +msgid "Invalid font index" +msgstr "Ungültiger Font-Index" + +#: fpsstrings.rsinvalidnumber +msgid "Invalid numerical value : %s" +msgstr "Ungültiger Zahlenwert: %s" + +#: fpsstrings.rsinvalidnumberchar +msgid "Unexpected character in number : %s" +msgstr "Unerwartetes Zeichen in Zahl: %s" + +#: fpsstrings.rsinvalidnumberformat +msgid "Trying to use an incompatible number format." +msgstr "Versuch ein inkompatibles Zahlenformat zu verwenden" + +#: fpsstrings.rsinvalidresultcharacter +msgid "\"%s\" is not a valid return type indicator" +msgstr "\"%s\" ist kein gültiger Indikator für einen Ergebnistyp." + +#: fpsstrings.rsinvalidresulttype +msgid "Invalid result type: %s" +msgstr "Ungültiger Ergebnistyp: %s" + +#: fpsstrings.rsinvalidspreadsheetfile +msgid "\"%s\" is not a valid spreadsheet file" +msgstr "\"%s\" ist keine gültige Spreadsheet-Datei." + +#: fpsstrings.rsinvalidworksheetname +msgid "\"%s\" is not a valid worksheet name." +msgstr "\"%s\" ist kein gültiger Name für ein Arbeitsblatt." + +#: fpsstrings.rsivory +msgid "ivory" +msgstr "elfenbein" + +#: fpsstrings.rslavander +msgid "lavander" +msgstr "lavendel" + +#: fpsstrings.rsleftbracketexpected +msgid "Expected left bracket at position %d, but got %s" +msgstr "Linke Klammer erwartet an Position %d, aber %s gefunden." + +#: fpsstrings.rslightblue +msgid "light blue" +msgstr "hellblau" + +#: fpsstrings.rslightgreen +msgid "light green" +msgstr "hellgrün" + +#: fpsstrings.rslightorange +msgid "light orange" +msgstr "hell-orange" + +#: fpsstrings.rslightturquoise +msgid "light turquoise" +msgstr "hell-türkis" + +#: fpsstrings.rslightyellow +msgid "light yellow" +msgstr "hellgelb" + +#: fpsstrings.rslime +msgid "lime" +msgstr "hellgrün-limone" + +#: fpsstrings.rslocalfilehyperlinkabs +msgid "The hyperlink \"%s\" points to a local file. In case of an absolute path the protocol \"file:\" must be specified." +msgstr "Der Hyperlink \"%s\" bezieht sich auf eine lokale Datei. Bei einem absoluten Pfad muss das Protokoll \"file:\" angegeben werden." + +#: fpsstrings.rsmagenta +msgid "magenta" +msgstr "magenta" + +#: fpsstrings.rsmaxcolsexceeded +msgid "This workbook contains %d columns, but the selected file format does not support more than %d columns." +msgstr "Das Arbeitsbuch enthält %d Spalten, aber das ausgewählte Dateiformat unterstützt höchstens %d Spalten." + +#: fpsstrings.rsmaxrowsexceeded +msgid "This workbook contains %d rows, but the selected file format does not support more than %d rows." +msgstr "Das Arbeitsbuch enthält %d Zeilen, aber das ausgewählte Dateiformat untersützt höchstens %d Zeilen." + +#: fpsstrings.rsmultiplesheetsonlywithrestoreposition +msgid "Export to multiple sheets is possible only if position is restored." +msgstr "Ein Export in mehrere Arbeitsblätter is nur dann möglich, wenn die Position wiederhergestellt wird." + +#: fpsstrings.rsnavy +msgid "navy" +msgstr "marine-blau" + +#: fpsstrings.rsnooperand +msgid "No operand for unary operation %s" +msgstr "Kein Operand für die unäre Operation %s" + +#: fpsstrings.rsnopercentoperation +msgid "Cannot perform percent operation on expression of type %s: %s" +msgstr "Prozent-Operation kann an dem Ausdruck vom Typ %s nicht ausgeführt werden: %s" + +#: fpsstrings.rsnotdefined +msgid "not defined" +msgstr "Nicht definiert" + +#: fpsstrings.rsnovalidcelladdress +msgid "\"%s\" is not a valid cell address." +msgstr "\"%s\" ist keine gültige Zell-Adresse." + +#: fpsstrings.rsnovalidcellrangeaddress +msgid "\"%s\" is not a valid cell range address." +msgstr "\"%s\" ist keine gültige Adresse für einen Zellbereich." + +#: fpsstrings.rsnovalidcellrangeorcelladdress +msgid "\"%s\" is not a valid cell or cell range address." +msgstr "\"%s\" ist keine gültige Adresse für eine Zelle oder einen Zellbereich." + +#: fpsstrings.rsnovalidhyperlinkinternal +msgid "The hyperlink \"%s\" is not a valid cell address." +msgstr "Der Hyperlink \"%s\" bezieht sich auf keine gültige Zelladresse." + +#: fpsstrings.rsnovalidhyperlinkuri +msgid "The hyperlink \"%s\" is not a valid URI." +msgstr "Der Hyperlink \"%s\" ist keine gültiger URI." + +#: fpsstrings.rsnovalidnumberformatstring +msgid "No valid number format string." +msgstr "Kein gültiges Zahlenformat" + +#: fpsstrings.rsnovariable +msgid "Identifier %s is not a variable" +msgstr "Der Bezeichnis %s ist keine Variable." + +#: fpsstrings.rsoceanblue +msgid "ocean blue" +msgstr "Meerblau" + +#: fpsstrings.rsodshyperlinksoftextcellsonly +msgid "Cell %s: OpenDocument supports hyperlinks for text cells only." +msgstr "Zelle %s: Das OpenDocument-Format unterstützt Hyperlinks nur für Text-Zellen." + +#: fpsstrings.rsolive +msgid "olive" +msgstr "oliv" + +#: fpsstrings.rsolivegreen +msgid "olive green" +msgstr "olivgrün" + +#: fpsstrings.rsonlyoneheaderfooterimageallowed +msgid "Only one image per %s section allowed." +msgstr "Nur ein Bild ist erlaubt pro %s Abschnitt." + +#: fpsstrings.rsoperationexceedscolcount +msgid "This operation exceeds the range of defined grid columns." +msgstr "Diese Operation überschreitet den Bereich der definierten Spalten." + +#: fpsstrings.rsoperationexceedsrowcount +msgid "This operation exceeds the range of defined grid rows." +msgstr "Diese Operation überschreitet den Bereich der definierten Zeilen." + +#: fpsstrings.rsorange +msgid "orange" +msgstr "orange" + +#: fpsstrings.rspaleblue +msgid "pale blue" +msgstr "blassblau" + +#: fpsstrings.rspaletteindex +msgid "Palette index %d" +msgstr "Palettenindex %d" + +#: fpsstrings.rsperiwinkle +msgid "periwinkle" +msgstr "lavendelblau" + +#: fpsstrings.rspink +msgid "pink" +msgstr "pink" + +#: fpsstrings.rsplum +msgid "plum" +msgstr "pflaume" + +#: fpsstrings.rspurple +msgid "purple" +msgstr "purpur" + +#: fpsstrings.rsreadernotfound +msgid "Reader not found for file \"%s\"" +msgstr "Lese-Prozedur nicht gefunden für Datei \"%s\"." + +#: fpsstrings.rsred +msgid "red" +msgstr "rot" + +#: fpsstrings.rsrightbracketexpected +msgid "Expected right bracket at position %d, but got %s" +msgstr "Rechte Klammer erwartet an Position, aber %s gefunden." + +#: fpsstrings.rsrose +msgid "rose" +msgstr "rosa" + +#: fpsstrings.rsrowstylenotfound +msgid "Row style not found." +msgstr "Zeilenstil nicht gefunden." + +#: fpsstrings.rsseagreen +msgid "sea green" +msgstr "seegrün" + +#: fpsstrings.rssilver +msgid "silver" +msgstr "silber" + +#: fpsstrings.rsskyblue +msgid "sky blue" +msgstr "himmelblau" + +#: fpsstrings.rsstdhyperlinktooltip +msgid "Hold the left mouse button down for a short time to activate the hyperlink." +msgstr "Halten Sie die linke Maustaste für kurze Zeit gedrückt, um den Hyperlink zu aktivieren." + +#: fpsstrings.rstan +msgid "tan" +msgstr "hautfarben" + +#: fpsstrings.rsteal +msgid "teal" +msgstr "türkis" + +#: fpsstrings.rstoomanypalettecolors +msgid "This workbook contains more colors (%d) than supported by the file format (%d). The additional colors are replaced by the best-matching palette colors." +msgstr "Das Arbeitsbuch enthält mehr Farben (%d) als vom Dateiformat unterstützt (%d). Die zusätzlichen Farben werden durch ersetzt durch die nächsten Palettenfarben." + +#: fpsstrings.rstransparent +msgid "transparent" +msgstr "transparent" + +#: fpsstrings.rstruncatetoolongcelltext +msgid "Text value exceeds the %d character limit in cell %s and has been truncated." +msgstr "Der Text überschreitet die Grenze von %d Zeichen in Zelle %s und wurde abgeschnitten." + +#: fpsstrings.rsunexpectedendofexpression +msgid "Unexpected end of expression" +msgstr "Unerwartetes Ende des Ausdrucks" + +#: fpsstrings.rsunknowncharacter +msgid "Unknown character at pos %d: \"%s\"" +msgstr "Unerwartetes Zeichen an Positon %d: \"%s\"" + +#: fpsstrings.rsunknowncomparison +msgid "Internal error: Unknown comparison" +msgstr "Interner Fehler: Unbekannter Vergleich" + +#: fpsstrings.rsunknowndatatype +msgid "Unknown data type." +msgstr "Unbekannter Datentyp" + +#: fpsstrings.rsunknowndelimiter +msgid "Unknown delimiter character: \"%s\"" +msgstr "Unbekanntes Trennzeichen: \"%s\"" + +#: fpsstrings.rsunknownerrortype +msgid "Unknown error type." +msgstr "Unbekannter Fehler-Typ" + +#: fpsstrings.rsunknownidentifier +msgid "Unknown identifier: %s" +msgstr "Unbekannter Bezeichner: %s" + +#: fpsstrings.rsunknowntokenatpos +msgid "Unknown token at pos %d : %s" +msgstr "Unbekanntes Symbol an Position %d: %s" + +#: fpsstrings.rsunsupportedreadformat +msgid "Tried to read a spreadsheet using an unsupported format" +msgstr "Versuch ein Spreadsheet mit einem nicht unterstützten Format zu lesen" + +#: fpsstrings.rsunsupportedwriteformat +msgid "Tried to write a spreadsheet using an unsupported format" +msgstr "Versuch eine Spreadsheet mit einem nicht unterstützten Format zu schreiben" + +#: fpsstrings.rsunterminatedexpression +msgid "Badly terminated expression. Found token at position %d : %s" +msgstr "Schlecht terminierter Ausdruck. Symbol gefunden an Position %d : %s" + +#: fpsstrings.rsutf8textexpectedbutansifoundincell +msgid "Expected UTF8 text, but probably ANSI text found in cell %s." +msgstr "In Zelle %s UTF8-Text erwartet, aber wahrscheinlich ANSI-Text gefunden" + +#: fpsstrings.rsverydarkgreen +msgid "very dark green" +msgstr "sehr dunkles Grün" + +#: fpsstrings.rsviolet +msgid "violet" +msgstr "violett" + +#: fpsstrings.rswheat +msgid "wheat" +msgstr "weizen" + +#: fpsstrings.rswhite +msgid "white" +msgstr "weiß" + +#: fpsstrings.rsworksheetnotfound +msgid "Worksheet \"%s\" not found." +msgstr "Arbeitsblatt \"%s\" nicht gefunden" + +#: fpsstrings.rsworksheetnotfound1 +msgid "Worksheet not found." +msgstr "Arbeitsblatt nicht gefunden." + +#: fpsstrings.rsyellow +msgid "yellow" +msgstr "gelb" diff --git a/components/fpspreadsheet/languages/fpsstrings.po b/components/fpspreadsheet/languages/fpsstrings.po new file mode 100644 index 000000000..b3b7dc644 --- /dev/null +++ b/components/fpspreadsheet/languages/fpsstrings.po @@ -0,0 +1,563 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: fpsstrings.rsallexcelfiles +msgid "All Excel files" +msgstr "" + +#: fpsstrings.rsallspreadsheetfiles +msgid "All spreadsheet files" +msgstr "" + +#: fpsstrings.rsambiguousdecthouseparator +msgid "Assuming usage of decimal separator in \"%s\"." +msgstr "" + +#: fpsstrings.rsaqua +msgid "aqua" +msgstr "" + +#: fpsstrings.rsbadquotes +msgid "Unterminated string" +msgstr "" + +#: fpsstrings.rsbeige +msgid "beige" +msgstr "" + +#: fpsstrings.rsblack +msgid "black" +msgstr "" + +#: fpsstrings.rsblue +msgid "blue" +msgstr "" + +#: fpsstrings.rsbluegray +msgid "blue gray" +msgstr "" + +#: fpsstrings.rsbrown +msgid "brown" +msgstr "" + +#: fpsstrings.rscannotreadfile +msgid "Cannot read file \"%s\". Wrong, unknown or defective file format?" +msgstr "" + +#: fpsstrings.rscannotsortmerged +msgid "The cell range cannot be sorted because it contains merged cells." +msgstr "" + +#: fpsstrings.rscircularreference +msgid "Circular reference found when calculating worksheet formula in cell %s" +msgstr "" + +#: fpsstrings.rscodepagenotsupported +msgid "Code page \"%s\" is not supported. Using \"cp1252\" (Latin 1) instead." +msgstr "" + +#: fpsstrings.rscolumnstylenotfound +msgid "Column style not found." +msgstr "" + +#: fpsstrings.rscommaexpected +msgid "Expected comma (,) at position %d, but got %s" +msgstr "" + +#: fpsstrings.rscoral +msgid "coral" +msgstr "" + +#: fpsstrings.rscyan +msgid "cyan" +msgstr "" + +#: fpsstrings.rsdarkblue +msgid "dark blue" +msgstr "" + +#: fpsstrings.rsdarkgreen +msgid "dark green" +msgstr "" + +#: fpsstrings.rsdarkpurple +msgid "dark purple" +msgstr "" + +#: fpsstrings.rsdarkred +msgid "dark red" +msgstr "" + +#: fpsstrings.rsdarkteal +msgid "dark teal" +msgstr "" + +#: fpsstrings.rsdefaultsheetname +msgid "Sheet%d" +msgstr "" + +#: fpsstrings.rsdefectiveinternalfilestructure +msgid "Defective internal structure of %s file." +msgstr "" + +#: fpsstrings.rsdifferentsheetprintrange +msgid "Print range \"%s\" requires a different worksheet." +msgstr "" + +#: fpsstrings.rsduplicateidentifier +msgid "An identifier with name \"%s\" already exists." +msgstr "" + +#: fpsstrings.rsemptyhyperlink +msgid "The hyperlink is not specified." +msgstr "" + +#: fpsstrings.rserrorinexpression +msgid "Cannot evaluate: error in expression" +msgstr "" + +#: fpsstrings.rsexportfileisrequired +msgid "Export file name is required." +msgstr "" + +#: fpsstrings.rsexpressionempty +msgid "Cannot evaluate: empty expression" +msgstr "" + +#: fpsstrings.rsfilealreadyexists +msgid "File \"%s\" already exists." +msgstr "" + +#: fpsstrings.rsfileformatnotsupported +msgid "File format of \"%s\" not supported." +msgstr "" + +#: fpsstrings.rsfilenotfound +msgid "File \"%s\" not found." +msgstr "" + +#: fpsstrings.rsfiles +msgid "files" +msgstr "" + +#: fpsstrings.rsfilestructureerror +msgid "File structure error in %s record, position %d." +msgstr "" + +#: fpsstrings.rsfooter +msgid "Footer" +msgstr "" + +#: fpsstrings.rsformulanotsupported +msgid "The formula in cell %s is not supported by this file format: %s" +msgstr "" + +#: fpsstrings.rsfpsexportdescription +msgid "Spreadsheet file" +msgstr "" + +#: fpsstrings.rsgold +msgid "gold" +msgstr "" + +#: fpsstrings.rsgray +msgid "gray" +msgstr "" + +#: fpsstrings.rsgray10pct +msgid "10% gray" +msgstr "" + +#: fpsstrings.rsgray20pct +msgid "20% gray" +msgstr "" + +#: fpsstrings.rsgray25pct +msgid "25% gray" +msgstr "" + +#: fpsstrings.rsgray40pct +msgid "40% gray" +msgstr "" + +#: fpsstrings.rsgray50pct +msgid "50% gray" +msgstr "" + +#: fpsstrings.rsgray80pct +msgid "80% gray" +msgstr "" + +#: fpsstrings.rsgreen +msgid "green" +msgstr "" + +#: fpsstrings.rsheader +msgid "Header" +msgstr "" + +#: fpsstrings.rsiceblue +msgid "ice blue" +msgstr "" + +#: fpsstrings.rsimageformatnotsupported +msgid "Image format not supported." +msgstr "" + +#: fpsstrings.rsincorrectpositionofimageinheaderfooter +msgid "Incorrect position of %%G code in %s" +msgstr "" + +#: fpsstrings.rsindexinsstoutofrange +msgid "Index %d in SST out of range (0-%d)." +msgstr "" + +#: fpsstrings.rsindigo +msgid "indigo" +msgstr "" + +#: fpsstrings.rsinvalidargumentcount +msgid "Invalid argument count for function %s" +msgstr "" + +#: fpsstrings.rsinvalidcharacterincell +msgid "Invalid character(s) in cell %s." +msgstr "" + +#: fpsstrings.rsinvalidcharacterincellcomment +msgid "Invalid character(s) in cell comment \"%s\"." +msgstr "" + +#: fpsstrings.rsinvaliddatetimeformat +msgid "Trying to use an incompatible date/time format." +msgstr "" + +#: fpsstrings.rsinvalidextension +msgid "Attempting to save a spreadsheet by extension, but the extension %s is not valid." +msgstr "" + +#: fpsstrings.rsinvalidfloat +msgid "%s is not a valid floating-point value" +msgstr "" + +#: fpsstrings.rsinvalidfontindex +msgid "Invalid font index" +msgstr "" + +#: fpsstrings.rsinvalidnumber +msgid "Invalid numerical value : %s" +msgstr "" + +#: fpsstrings.rsinvalidnumberchar +msgid "Unexpected character in number : %s" +msgstr "" + +#: fpsstrings.rsinvalidnumberformat +msgid "Trying to use an incompatible number format." +msgstr "" + +#: fpsstrings.rsinvalidresultcharacter +msgid "\"%s\" is not a valid return type indicator" +msgstr "" + +#: fpsstrings.rsinvalidresulttype +msgid "Invalid result type: %s" +msgstr "" + +#: fpsstrings.rsinvalidspreadsheetfile +msgid "\"%s\" is not a valid spreadsheet file" +msgstr "" + +#: fpsstrings.rsinvalidworksheetname +msgid "\"%s\" is not a valid worksheet name." +msgstr "" + +#: fpsstrings.rsivory +msgid "ivory" +msgstr "" + +#: fpsstrings.rslavander +msgid "lavander" +msgstr "" + +#: fpsstrings.rsleftbracketexpected +msgid "Expected left bracket at position %d, but got %s" +msgstr "" + +#: fpsstrings.rslightblue +msgid "light blue" +msgstr "" + +#: fpsstrings.rslightgreen +msgid "light green" +msgstr "" + +#: fpsstrings.rslightorange +msgid "light orange" +msgstr "" + +#: fpsstrings.rslightturquoise +msgid "light turquoise" +msgstr "" + +#: fpsstrings.rslightyellow +msgid "light yellow" +msgstr "" + +#: fpsstrings.rslime +msgid "lime" +msgstr "" + +#: fpsstrings.rslocalfilehyperlinkabs +msgid "The hyperlink \"%s\" points to a local file. In case of an absolute path the protocol \"file:\" must be specified." +msgstr "" + +#: fpsstrings.rsmagenta +msgid "magenta" +msgstr "" + +#: fpsstrings.rsmaxcolsexceeded +msgid "This workbook contains %d columns, but the selected file format does not support more than %d columns." +msgstr "" + +#: fpsstrings.rsmaxrowsexceeded +msgid "This workbook contains %d rows, but the selected file format does not support more than %d rows." +msgstr "" + +#: fpsstrings.rsmultiplesheetsonlywithrestoreposition +msgid "Export to multiple sheets is possible only if position is restored." +msgstr "" + +#: fpsstrings.rsnavy +msgid "navy" +msgstr "" + +#: fpsstrings.rsnooperand +msgid "No operand for unary operation %s" +msgstr "" + +#: fpsstrings.rsnopercentoperation +msgid "Cannot perform percent operation on expression of type %s: %s" +msgstr "" + +#: fpsstrings.rsnotdefined +msgid "not defined" +msgstr "" + +#: fpsstrings.rsnovalidcelladdress +msgid "\"%s\" is not a valid cell address." +msgstr "" + +#: fpsstrings.rsnovalidcellrangeaddress +msgid "\"%s\" is not a valid cell range address." +msgstr "" + +#: fpsstrings.rsnovalidcellrangeorcelladdress +msgid "\"%s\" is not a valid cell or cell range address." +msgstr "" + +#: fpsstrings.rsnovalidhyperlinkinternal +msgid "The hyperlink \"%s\" is not a valid cell address." +msgstr "" + +#: fpsstrings.rsnovalidhyperlinkuri +msgid "The hyperlink \"%s\" is not a valid URI." +msgstr "" + +#: fpsstrings.rsnovalidnumberformatstring +msgid "No valid number format string." +msgstr "" + +#: fpsstrings.rsnovariable +msgid "Identifier %s is not a variable" +msgstr "" + +#: fpsstrings.rsoceanblue +msgid "ocean blue" +msgstr "" + +#: fpsstrings.rsodshyperlinksoftextcellsonly +msgid "Cell %s: OpenDocument supports hyperlinks for text cells only." +msgstr "" + +#: fpsstrings.rsolive +msgid "olive" +msgstr "" + +#: fpsstrings.rsolivegreen +msgid "olive green" +msgstr "" + +#: fpsstrings.rsonlyoneheaderfooterimageallowed +msgid "Only one image per %s section allowed." +msgstr "" + +#: fpsstrings.rsoperationexceedscolcount +msgid "This operation exceeds the range of defined grid columns." +msgstr "" + +#: fpsstrings.rsoperationexceedsrowcount +msgid "This operation exceeds the range of defined grid rows." +msgstr "" + +#: fpsstrings.rsorange +msgid "orange" +msgstr "" + +#: fpsstrings.rspaleblue +msgid "pale blue" +msgstr "" + +#: fpsstrings.rspaletteindex +msgid "Palette index %d" +msgstr "" + +#: fpsstrings.rsperiwinkle +msgid "periwinkle" +msgstr "" + +#: fpsstrings.rspink +msgid "pink" +msgstr "" + +#: fpsstrings.rsplum +msgid "plum" +msgstr "" + +#: fpsstrings.rspurple +msgid "purple" +msgstr "" + +#: fpsstrings.rsreadernotfound +msgid "Reader not found for file \"%s\"" +msgstr "" + +#: fpsstrings.rsred +msgid "red" +msgstr "" + +#: fpsstrings.rsrightbracketexpected +msgid "Expected right bracket at position %d, but got %s" +msgstr "" + +#: fpsstrings.rsrose +msgid "rose" +msgstr "" + +#: fpsstrings.rsrowstylenotfound +msgid "Row style not found." +msgstr "" + +#: fpsstrings.rsseagreen +msgid "sea green" +msgstr "" + +#: fpsstrings.rssilver +msgid "silver" +msgstr "" + +#: fpsstrings.rsskyblue +msgid "sky blue" +msgstr "" + +#: fpsstrings.rsstdhyperlinktooltip +msgid "Hold the left mouse button down for a short time to activate the hyperlink." +msgstr "" + +#: fpsstrings.rstan +msgid "tan" +msgstr "" + +#: fpsstrings.rsteal +msgid "teal" +msgstr "" + +#: fpsstrings.rstoomanypalettecolors +msgid "This workbook contains more colors (%d) than supported by the file format (%d). The additional colors are replaced by the best-matching palette colors." +msgstr "" + +#: fpsstrings.rstransparent +msgid "transparent" +msgstr "" + +#: fpsstrings.rstruncatetoolongcelltext +msgid "Text value exceeds the %d character limit in cell %s and has been truncated." +msgstr "" + +#: fpsstrings.rsunexpectedendofexpression +msgid "Unexpected end of expression" +msgstr "" + +#: fpsstrings.rsunknowncharacter +msgid "Unknown character at pos %d: \"%s\"" +msgstr "" + +#: fpsstrings.rsunknowncomparison +msgid "Internal error: Unknown comparison" +msgstr "" + +#: fpsstrings.rsunknowndatatype +msgid "Unknown data type." +msgstr "" + +#: fpsstrings.rsunknowndelimiter +msgid "Unknown delimiter character: \"%s\"" +msgstr "" + +#: fpsstrings.rsunknownerrortype +msgid "Unknown error type." +msgstr "" + +#: fpsstrings.rsunknownidentifier +msgid "Unknown identifier: %s" +msgstr "" + +#: fpsstrings.rsunknowntokenatpos +msgid "Unknown token at pos %d : %s" +msgstr "" + +#: fpsstrings.rsunsupportedreadformat +msgid "Tried to read a spreadsheet using an unsupported format" +msgstr "" + +#: fpsstrings.rsunsupportedwriteformat +msgid "Tried to write a spreadsheet using an unsupported format" +msgstr "" + +#: fpsstrings.rsunterminatedexpression +msgid "Badly terminated expression. Found token at position %d : %s" +msgstr "" + +#: fpsstrings.rsutf8textexpectedbutansifoundincell +msgid "Expected UTF8 text, but probably ANSI text found in cell %s." +msgstr "" + +#: fpsstrings.rsverydarkgreen +msgid "very dark green" +msgstr "" + +#: fpsstrings.rsviolet +msgid "violet" +msgstr "" + +#: fpsstrings.rswheat +msgid "wheat" +msgstr "" + +#: fpsstrings.rswhite +msgid "white" +msgstr "" + +#: fpsstrings.rsworksheetnotfound +msgid "Worksheet \"%s\" not found." +msgstr "" + +#: fpsstrings.rsworksheetnotfound1 +msgid "Worksheet not found." +msgstr "" + +#: fpsstrings.rsyellow +msgid "yellow" +msgstr "" + diff --git a/components/fpspreadsheet/laz_fpspreadsheet.lpk b/components/fpspreadsheet/laz_fpspreadsheet.lpk index 6761cdfcb..301bd06be 100644 --- a/components/fpspreadsheet/laz_fpspreadsheet.lpk +++ b/components/fpspreadsheet/laz_fpspreadsheet.lpk @@ -212,6 +212,11 @@ This package is all you need if you don't want graphical components (like grids + + + + + diff --git a/components/fpspreadsheet/wikitable.pas b/components/fpspreadsheet/wikitable.pas index 7791c42f6..33a196152 100644 --- a/components/fpspreadsheet/wikitable.pas +++ b/components/fpspreadsheet/wikitable.pas @@ -628,12 +628,12 @@ initialization // Registers this reader / writer in fpSpreadsheet sfidWikiTable_Pipes := RegisterSpreadFormat( sfWikiTable_Pipes, TsWikiTable_PipesReader, nil, - rsFileFormatWikiTablePipes, 'WIKITABLE_PIPES', [STR_WIKITABLE_PIPES_EXTENSION] + STR_FILEFORMAT_WIKITABLE_PIPES, 'WIKITABLE_PIPES', [STR_WIKITABLE_PIPES_EXTENSION] ); sfidWikiTable_WikiMedia := RegisterSpreadFormat(sfWikiTable_WikiMedia, nil, TsWikiTable_WikiMediaWriter, - rsFileFormatWikiTableWikiMedia, 'WIKITABLE_WIKIMEDIA', [STR_WIKITABLE_WIKIMEDIA_EXTENSION] + STR_FILEFORMAT_WIKITABLE_WIKIMEDIA, 'WIKITABLE_WIKIMEDIA', [STR_WIKITABLE_WIKIMEDIA_EXTENSION] ); end. diff --git a/components/fpspreadsheet/xlsbiff2.pas b/components/fpspreadsheet/xlsbiff2.pas index 4e66cc4c3..8e16d1adb 100755 --- a/components/fpspreadsheet/xlsbiff2.pas +++ b/components/fpspreadsheet/xlsbiff2.pas @@ -2044,7 +2044,7 @@ initialization sfidExcel2 := RegisterSpreadFormat(sfExcel2, TsSpreadBIFF2Reader, TsSpreadBIFF2Writer, - rsFileFormatExcel2, 'BIFF2', [STR_EXCEL_EXTENSION] + STR_FILEFORMAT_EXCEL_2, 'BIFF2', [STR_EXCEL_EXTENSION] ); MakeLEPalette(PALETTE_BIFF2); diff --git a/components/fpspreadsheet/xlsbiff5.pas b/components/fpspreadsheet/xlsbiff5.pas index 06e09a07e..bd93a6688 100755 --- a/components/fpspreadsheet/xlsbiff5.pas +++ b/components/fpspreadsheet/xlsbiff5.pas @@ -1405,7 +1405,7 @@ begin idx := FWorkbook.GetWorksheetIndex(AWorksheet); { BIFF record header } - WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFINEDNAME, 14 + Length(AName) + memstream.Size); + WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFINEDNAME, 14 + Length(AName) + Word(memstream.Size)); { Option flags: built-in defined names only } AStream.WriteWord(WordToLE($0020)); @@ -1935,7 +1935,7 @@ begin begin if (AFormatRecord^.Background.FgColor = scTransparent) then dw1 := dw1 or (SYS_DEFAULT_FOREGROUND_COLOR and $0000007F) - else dw1 := dw1 or (PaletteIndex(AFormatRecord^.Background.FgColor) and $0000007F); + else dw1 := LongInt(dw1) or (PaletteIndex(AFormatRecord^.Background.FgColor) and $0000007F); if AFormatRecord^.Background.BgColor = scTransparent then dw1 := dw1 or (SYS_DEFAULT_BACKGROUND_COLOR shl 7) else dw1 := dw1 or (PaletteIndex(AFormatRecord^.Background.BgColor) shl 7); @@ -1974,7 +1974,7 @@ initialization sfidExcel5 := RegisterSpreadFormat(sfExcel5, TsSpreadBIFF5Reader, TsSpreadBIFF5Writer, - rsFileFormatExcel5, 'BIFF5', [STR_EXCEL_EXTENSION] + STR_FILEFORMAT_EXCEL_5, 'BIFF5', [STR_EXCEL_EXTENSION] ); MakeLEPalette(PALETTE_BIFF5); diff --git a/components/fpspreadsheet/xlsbiff8.pas b/components/fpspreadsheet/xlsbiff8.pas index 625d931f5..ad7bea780 100755 --- a/components/fpspreadsheet/xlsbiff8.pas +++ b/components/fpspreadsheet/xlsbiff8.pas @@ -3736,7 +3736,7 @@ initialization // Registers this reader / writer in fpSpreadsheet sfidExcel8 := RegisterSpreadFormat(sfExcel8, TsSpreadBIFF8Reader, TsSpreadBIFF8Writer, - rsFileFormatExcel8, 'BIFF8', [STR_EXCEL_EXTENSION] + STR_FILEFORMAT_EXCEL_8, 'BIFF8', [STR_EXCEL_EXTENSION] ); // Converts the palette to litte-endian diff --git a/components/fpspreadsheet/xlsescher.pas b/components/fpspreadsheet/xlsescher.pas index e99f9be90..388b6e253 100644 --- a/components/fpspreadsheet/xlsescher.pas +++ b/components/fpspreadsheet/xlsescher.pas @@ -527,7 +527,7 @@ procedure WriteMSOHeader(AStream: TStream; AType, AVersion, AInstance: Word; var rec: TsMSOHeader; begin - rec.Version_Instance := WordToLE((AVersion and $000F) + AInstance shl 4); //and $FFF0) shr 4); + rec.Version_Instance := WordToLE((AVersion and $000F) {%H-}+ AInstance shl 4); // To do: How to handle Version_Instance on big-endian machines? // Version_Instance combines bits 0..3 for "version" and 4..15 for "instance" rec.RecordType := WordToLE(AType); diff --git a/components/fpspreadsheet/xlsxml.pas b/components/fpspreadsheet/xlsxml.pas index 3a65aeebc..9edc86311 100644 --- a/components/fpspreadsheet/xlsxml.pas +++ b/components/fpspreadsheet/xlsxml.pas @@ -851,7 +851,7 @@ initialization // Registers this reader / writer in fpSpreadsheet sfidExcelXML := RegisterSpreadFormat(sfExcelXML, nil, TsSpreadExcelXMLWriter, - rsFileFormatExcelXML, 'ExcelXML', [STR_XML_EXCEL_EXTENSION] + STR_FILEFORMAT_EXCEL_XML, 'ExcelXML', [STR_XML_EXCEL_EXTENSION] ); end. diff --git a/components/fpspreadsheet/xlsxooxml.pas b/components/fpspreadsheet/xlsxooxml.pas index f5b7a73e5..5c0f267b0 100755 --- a/components/fpspreadsheet/xlsxooxml.pas +++ b/components/fpspreadsheet/xlsxooxml.pas @@ -2037,7 +2037,7 @@ begin XMLStream := CreateXMLStream; try if not UnzipToStream(AStream, OOXML_PATH_XL_WORKBOOK, XMLStream) then - raise Exception.CreateFmt(rsDefectiveInternalStructure, ['xlsx']); + raise Exception.CreateFmt(rsDefectiveInternalFileStructure, ['xlsx']); ReadXMLStream(Doc, XMLStream); ReadFileVersion(Doc.DocumentElement.FindNode('fileVersion')); ReadDateMode(Doc.DocumentElement.FindNode('workbookPr')); @@ -2172,7 +2172,7 @@ begin XMLStream := CreateXMLStream; try if not UnzipToStream(AStream, OOXML_PATH_XL_WORKBOOK, XMLStream) then - raise Exception.CreateFmt(rsDefectiveInternalStructure, ['xlsx']); + raise Exception.CreateFmt(rsDefectiveInternalFileStructure, ['xlsx']); ReadXMLStream(Doc, XMLStream); ReadDefinedNames(Doc.DocumentElement.FindNode('definedNames')); FreeAndNil(Doc); @@ -4705,7 +4705,7 @@ initialization // Registers this reader / writer on fpSpreadsheet sfidOOXML := RegisterSpreadFormat(sfOOXML, TsSpreadOOXMLReader, TsSpreadOOXMLWriter, - rsFileFormatExcelXLSX, 'OOXML', [STR_OOXML_EXCEL_EXTENSION] + STR_FILEFORMAT_EXCEL_XLSX, 'OOXML', [STR_OOXML_EXCEL_EXTENSION] ); end.